@evergis/react 3.0.5 → 3.0.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"react.cjs.development.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/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/utils/metersToPixels.ts","../src/symbols/SVGPoly/index.ts","../src/symbols/guards.ts","../src/symbols/mockFeatures.ts","../src/symbols/getSymbolRenders.ts","../src/symbols/renderSymbolToCanvas.ts","../src/symbols/deserializeSymbol.ts","../src/symbols/adjustSymbol.ts","../src/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/hooks/useCanvas.ts","../src/hooks/useMount.ts","../src/hooks/useNode.ts","../src/hooks/useSymbol.ts","../src/hooks/useToggle.ts","../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","../src/contexts/LegendContext.tsx","../src/utils/polygonCircleFromPoint.ts"],"sourcesContent":["import { ClassificationParameterExtended } from '../core';\n\ntype IsParameterType = 'size' | 'strokeWidth' | 'stroke.width' | 'strokeColor' | 'stroke.color';\n\nexport const isParameterType = (\n types: IsParameterType | Array<IsParameterType>,\n parameter?: ClassificationParameterExtended,\n): boolean => (typeof types === 'string'\n ? parameter?.toLowerCase()?.includes(types.toLowerCase())\n : types.some(type => parameter?.toLowerCase()?.includes(type.toLowerCase()))) || false;\n","import { MouseEventHandler } from 'react';\nimport styled, { css } from 'styled-components';\nimport { IconButton } from \"@evergis/icons\";\n\nimport { isParameterType } from '../../utils/isParameterType';\n\nimport { ClassificationParameterExtended } from '../../core';\nimport { MapLegendItemProps } from './types';\n\nexport const MapLegendDescription = styled.div`\n font-size: 0.75rem;\n`;\n\nexport const ItemText = styled.div`\n max-width: calc(100% - 2rem);\n font: ${({ theme: { fonts } }) => fonts.description};\n`;\n\nexport const ItemSeparator = styled.div`\n :after {\n content: '-';\n margin: 0 0.5rem;\n font-size: 0.75rem;\n }\n`;\n\nexport const SymbolContainer = styled('span')`\n display: flex;\n justify-content: center;\n min-width: 1.5rem;\n margin-right: 0.5rem;\n`;\n\nexport const ClassifiedItem = styled.div<{\n isHidden?: boolean;\n isClusterFillColor?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n cursor: ${({ isClusterFillColor }) =>\n isClusterFillColor ? 'default' : 'pointer'};\n pointer-events: ${({ isClusterFillColor }) =>\n isClusterFillColor ? 'none' : 'auto'};\n\n :not(:last-of-type) {\n margin-bottom: 0.25rem;\n }\n\n ${ItemText}, ${SymbolContainer} {\n transition: opacity 150ms;\n }\n\n ${ItemText} {\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 0.65)};\n }\n\n ${SymbolContainer} {\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\n }\n\n :hover {\n ${ItemText}, ${SymbolContainer} {\n opacity: 1;\n }\n }\n\n ${IconButton} {\n margin-left: 0.5rem;\n }\n`;\n\nconst SymbolButtonWithClick = css`\n width: 3.875rem;\n height: 3.875rem;\n cursor: pointer;\n\n &:hover {\n background-color: ${({ theme: { palette } }) => palette.elementDeep};\n }\n`;\n\nexport const SymbolButton = styled.span<{\n onClick?: MouseEventHandler<HTMLSpanElement> | null;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 150ms;\n ${({ onClick }) => !!onClick && SymbolButtonWithClick};\n\n svg {\n max-width: 4rem;\n max-height: 4rem;\n }\n`;\n\nexport const MapLegendContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n padding-bottom: 1rem;\n box-sizing: border-box;\n\n canvas {\n height: 1.625rem;\n width: 1.625rem;\n }\n`;\n\nexport const MapLegendHeader = styled.div`\n max-width: 15rem;\n margin-bottom: 0.25rem;\n font-size: 0.75rem;\n font-weight: bold;\n`;\n\nexport const MapLegendDescriptionContainer = styled.div`\n margin-bottom: 0.5rem;\n font-weight: 400;\n font-size: 0.625rem;\n color: rgba(48, 69, 79, 0.65);\n`;\n\nexport const MapLegendBadge = styled.span`\n min-width: 0.5rem;\n height: 0.75rem;\n display: inline-block;\n margin-left: 0.25rem;\n padding: 0.125rem 0.25rem;\n border-radius: ${({ theme: { borderRadius } }) => borderRadius.xSmall};\n background-color: ${({ theme: { palette } }) => palette.element};\n color: ${({ theme: { palette } }) => palette.textPrimary};\n text-align: center;\n`;\n\nexport const MaximizedLegendContainer = styled.div<{ isShown?: boolean }>`\n position: ${({ isShown }) => (isShown ? 'relative' : 'absolute')};\n top: 0;\n opacity: ${({ isShown }) => (isShown ? 1 : 0)};\n visibility: ${({ isShown }) => (isShown ? 'visible' : 'hidden')};\n overflow: hidden;\n transition: opacity 0.5s, visibility 0.5s;\n`;\n\nexport const MinimizedLegendContainer = styled(MaximizedLegendContainer)`\n width: calc(100% - 1.5rem);\n padding-right: 1.5rem;\n`;\n\nexport const LegendHeaderButton = styled.span``;\n\nexport const MapLegendSectionContainer = styled.div<{ hasHiddenLegends?: boolean }>`\n width: 100%;\n\n :not(:last-child) {\n margin-bottom: 1rem;\n }\n\n ${LegendHeaderButton} {\n padding-left: 0.75rem;\n visibility: hidden;\n\n :first-child {\n padding-left: 1rem;\n }\n\n :last-child {\n margin-left: 0.75rem;\n border-left: 1px ${({ theme: { palette }}) => palette.elementDeep} solid;\n }\n }\n \n :hover {\n ${LegendHeaderButton} {\n visibility: visible;\n }\n }\n`;\n\nexport const MapLegendSectionItems = styled.div<{\n minHeight?: number;\n maxHeight?: number;\n isExpanded?: boolean;\n}>`\n position: relative;\n height: ${({ minHeight, maxHeight, isExpanded }) =>\n isExpanded ? (maxHeight || 0) + 4 : minHeight}px;\n overflow: ${({ isExpanded }) => (isExpanded ? 'none' : 'hidden')};\n transition: height 0.5s;\n`;\n\nexport const MapLegendValueDescr = styled.div`\n min-height: 1rem;\n margin-bottom: 0.25rem;\n font-size: 0.75rem;\n font-weight: 600;\n line-height: 1rem;\n`;\n\nconst SizeLegendItemMixin = (value = 0) => css`\n position: absolute;\n bottom: 0;\n left: 50%;\n display: flex;\n align-items: flex-end;\n flex: none;\n height: inherit;\n width: inherit;\n margin: 0 auto;\n background: none;\n border: none;\n\n :after {\n content: '';\n display: flex;\n border: 1px rgba(48, 69, 79, 0.28) solid;\n border-radius: 50%;\n margin: 0 0 0 -${value / 2}px;\n width: ${value}px;\n height: ${value}px;\n }\n`;\n\nconst StrokeWidthLegendItemMixin = (value = 0) => css`\n position: relative;\n background: none;\n border: none;\n display: flex;\n align-items: center;\n flex: none;\n width: calc(100% - 2rem);\n height: ${value}px;\n margin: 0 0 0.25rem 0;\n padding-left: 2rem;\n font-size: 0.75rem;\n\n :first-child,\n :last-child {\n height: auto;\n }\n\n :after {\n content: '';\n position: absolute;\n top: 50%;\n left: 0;\n width: 1.5rem;\n height: ${value}px;\n margin-top: -${Math.round(value / 2)}px;\n background: rgb(224, 224, 224);\n }\n`;\n\nconst StrokeColorLegendItemMixin = css`\n margin-right: 0.5rem;\n width: 1.5rem;\n`;\n\nexport const MapLegendItem = styled.div<MapLegendItemProps>`\n flex: 1;\n height: ${({ parameter }) =>\n isParameterType(\n ['strokeColor', 'stroke.color'],\n parameter as ClassificationParameterExtended\n )\n ? 0.25\n : 1}rem;\n background: ${({ value }) => (typeof value === 'number' ? 'none' : value)};\n border: 1px rgba(48, 69, 79, 0.1) solid;\n margin-right: -1px;\n color: rgba(48, 69, 79, 0.65);\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\n\n ${({ value, parameter }) =>\n isParameterType('size', parameter as ClassificationParameterExtended) &&\n SizeLegendItemMixin(value as number)}\n\n ${({ value, parameter }) =>\n isParameterType(\n ['strokeWidth', 'stroke.width'],\n parameter as ClassificationParameterExtended\n ) && StrokeWidthLegendItemMixin(value as number)}\n`;\n\nexport const MapLegendOther = styled(MapLegendItem)`\n display: flex;\n align-items: center;\n flex: none;\n position: relative;\n width: 1rem;\n margin-left: 0.25rem;\n border-radius: 0.125rem;\n`;\n\nconst SizeLegendItemsMixin = css`\n position: relative;\n width: 2rem;\n height: 2rem;\n margin: 0 auto;\n\n ${MapLegendOther} {\n width: auto;\n margin-left: 0;\n }\n`;\n\nconst StrokeWidthLegendItemsMixin = css`\n position: relative;\n flex-direction: column;\n width: auto;\n\n ${MapLegendOther} {\n width: calc(100% - 2rem);\n margin-left: 0;\n }\n`;\n\nexport const SizeMinimizedLegend = styled.div`\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n margin: 0.5rem 0 0.25rem;\n`;\n\nexport const SizeMinimizedLegendSymbol = styled.div`\n width: 4rem;\n margin-right: 0.75rem;\n`;\n\nexport const SizeMinimizedLegendLabel = styled.div`\n max-width: 9.75rem;\n font-size: 0.75rem;\n`;\n\nexport const SizeMinimizedLegendDown = styled.div`\n color: rgba(48, 69, 79, 0.65);\n`;\n\nexport const SizeMinimizedLegendUp = styled(SizeMinimizedLegendDown)``;\n\nconst SingleSizeLegendItemsMixin = css`\n width: 4rem;\n margin-right: 0.75rem;\n\n ${MapLegendItem}:after {\n margin: 0 auto;\n }\n`;\n\nconst SingleLegendItemsMixin = css<{\n parameter: ClassificationParameterExtended;\n isSize?: boolean;\n}>`\n justify-content: center;\n width: 2rem;\n height: auto;\n margin: 0;\n ${({ isSize }) => isSize && SingleSizeLegendItemsMixin}\n\n ${MapLegendItem} {\n position: relative;\n top: 0;\n left: 0;\n display: flex;\n align-content: center;\n justify-content: center;\n margin: 0;\n height: auto;\n width: auto;\n\n ${({ parameter }) =>\n isParameterType(\n ['strokeColor', 'stroke.color'],\n parameter as ClassificationParameterExtended\n ) && StrokeColorLegendItemMixin}\n }\n`;\n\nexport const MapLegendItems = styled.div<{\n parameter: ClassificationParameterExtended;\n isSize?: boolean;\n isStrokeWidth?: boolean;\n isStrokeColor?: boolean;\n isSingle?: boolean;\n}>`\n display: flex;\n align-items: center;\n width: 100%;\n border-radius: 0.125rem;\n\n ${({ isSize }) => isSize && SizeLegendItemsMixin};\n ${({ isStrokeWidth }) => isStrokeWidth && StrokeWidthLegendItemsMixin};\n ${({ isSingle }) => isSingle && SingleLegendItemsMixin};\n`;\n\nexport const MapLegendItemsContainer = styled.div`\n display: flex;\n width: 100%;\n\n ${MapLegendItem} {\n :first-child {\n border-top-left-radius: 0.125rem;\n border-bottom-left-radius: 0.125rem;\n }\n\n :last-child {\n border-top-right-radius: 0.125rem;\n border-bottom-right-radius: 0.125rem;\n }\n }\n`;\n\nexport const MapLegendValues = styled.div`\n display: flex;\n width: 100%;\n margin-top: 0.5rem;\n font-size: 0.75rem;\n color: rgba(48, 69, 79, 0.65);\n`;\n\nexport const MapLegendValuesRange = styled.div`\n display: flex;\n justify-content: space-between;\n width: calc(100% - 1.25rem);\n\n div {\n flex: 1;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n\n :first-child {\n margin-right: 0.5rem;\n }\n\n :last-child {\n margin-left: 0.5rem;\n text-align: right;\n }\n }\n`;\n\nexport const MapLegendValuesOther = styled(MapLegendOther)`\n justify-content: center;\n border: 0;\n overflow: visible;\n`;\n\nexport const MapLegendExpandButton = styled.div`\n cursor: pointer;\n margin-top: 0.1rem;\n font-size: 0.625rem;\n color: #1fb3aa;\n`;\n\nexport const ClusterLegendContainer = styled.div`\n margin: -0.9rem;\n transform: scale(0.5);\n`;\n","import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\n\nexport const NO_CONTENT_VALUE = '—';\n\nexport type DateType = number | Date;\nexport type RawDateType = string | DateType;\n\nexport enum DateFormat {\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\n AxisTooltip = \"d MMMM yyyy\",\n}\n\ninterface FormatDateOptions {\n dateFormat?: DateFormat;\n defaultValue?: RawDateType;\n}\n\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\n\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\n if (!rawDate) return null;\n\n if (typeof rawDate === \"string\") {\n for (const parser of stringDateParsers) {\n const date = parser(rawDate);\n\n if (isValid(date)) {\n return toDate(date);\n }\n }\n\n return null;\n }\n\n const parsedDate = toDate(rawDate);\n\n return isValid(parsedDate) ? parsedDate : null;\n};\n\nexport const formatDate = (\n date?: RawDateType,\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\n): string => {\n const dateValue = date ? getDate(date) : null;\n\n if (isValid(dateValue)) {\n return format(dateValue as Date, dateFormat);\n }\n\n return defaultValue.toString();\n};\n","export function numberWithSpaces(\n x: number,\n fractionDigits = 2,\n delim: ',' | '.' | '' = ','\n): string {\n const [num, frac] = x.toFixed(fractionDigits).split('.');\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return [numWithSpaces, frac].join(delim);\n}\n","export function matchPhone(value: string) {\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\n\n return !isStringAsInn(value) && value.match(phoneRegexp);\n}\n\nexport function isStringAsInn(value: string) {\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\n\n return innRegexp.test(value);\n}\n\nexport function isStringAsKpp(value: string) {\n const kppRegexp = /^(([0-9]{9}))$/;\n\n return kppRegexp.test(value);\n}\n\nexport function isStringAsOgrn(value: string) {\n const ogrnRegexp = /^([0-9]{13})?$/;\n\n return ogrnRegexp.test((+value).toString());\n}\n\nexport function isStringContainsDate(value: string) {\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\n return dateRegexp.test(value);\n}\n\nexport function isRequisiteNumbers(value: string) {\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\n}\n\nexport function isStringAsPhone(value: string) {\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\n\n return (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phoneRegexp.test(value)\n );\n}\n\nexport function isStringAsMail(value: string) {\n return isStringAsUrl(value) && value.includes('@');\n}\n\nexport function isStringAsUrl(value: string) {\n if (isValidUrl(value)) {\n return true;\n }\n\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\n\n const urlKind = value.match(urlRegexp);\n\n return urlKind !== null;\n}\n\nexport function isValidUrl(value: string) {\n try {\n new URL(value);\n } catch (_) {\n return false;\n }\n\n return true;\n}\n\nexport const mailHref = (mail: string) => `mailto:${mail}`;\n\nexport const phoneHref = (mail: string) => `tel:${mail}`;\n\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\n\nimport { NO_CONTENT_VALUE } from \"../../utils/date\";\nimport { numberWithSpaces } from '../../utils/format';\nimport {\n isStringAsMail,\n isStringAsPhone,\n isStringAsUrl,\n matchPhone,\n isRequisiteNumbers,\n isStringAsOgrn,\n isStringContainsDate,\n} from '../../utils/url';\n\nconst stringAttribute = (value: string) => ({\n type: AttributeValueType.String,\n value,\n});\n\nconst urlAttribute = (value: string) => ({\n type: AttributeValueType.Url,\n value,\n});\n\nconst mailAttribute = (value: string) => ({\n type: AttributeValueType.Mail,\n value,\n});\n\nconst phoneAttribute = (value: string) => ({\n type: AttributeValueType.Phone,\n value,\n});\n\nconst convertStringAttribute = (value: string) => {\n if (isStringAsMail(value)) {\n return mailAttribute(value);\n }\n\n if (isStringAsUrl(value)) {\n return urlAttribute(value);\n }\n\n if (isStringAsPhone(value)) {\n return phoneAttribute(value);\n }\n\n return stringAttribute(value);\n};\n\nconst formatStringAttribute = (value: string): AttributeValue[] => {\n const phones = matchPhone(value);\n\n if (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phones &&\n phones.length\n ) {\n return phones.map(phoneAttribute);\n }\n\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\n\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\n return [\n stringAttribute(\n attributeValues\n .map(({ value }) =>\n isNaN(+value) || isRequisiteNumbers(value)\n ? isStringAsOgrn(value)\n ? +value\n : value\n : numberWithSpaces(+value, 0, '')\n )\n .join(' ')\n ),\n ];\n }\n\n return attributeValues;\n};\n\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\n stringAttribute(value.toString());\n\nconst formatIntAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, 0, ''));\n\nconst DOUBLE_FRACTIONS = 2;\n\nconst formatDoubleAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\n\nconst isNullOrUndefined = <Value>(\n value: Value | null | undefined\n): value is null | undefined => value === null || value === undefined;\n\nconst NO_CONTENT_ATTRIBUTE = {\n type: AttributeValueType.String,\n value: NO_CONTENT_VALUE,\n};\n\nexport const formatAttributeValue = (\n attribute: FeatureAttribute\n): AttributeValue[] => {\n if (isNullOrUndefined(attribute.value)) {\n return [NO_CONTENT_ATTRIBUTE];\n }\n\n switch (attribute.type) {\n case 'String':\n return formatStringAttribute(attribute.value as string);\n case 'DateTime':\n return [formatDateTimeAttribute(attribute.value as Date)];\n case 'Int32':\n case 'Int64':\n return [formatIntAttribute(attribute.value as number)];\n case 'Double':\n return [formatDoubleAttribute(attribute.value as number)];\n default:\n return [NO_CONTENT_ATTRIBUTE];\n }\n};\n","import {\n ClassifyAble,\n ParameterValue,\n ParameterValueWithSymbol,\n} from '../style';\n\nimport { ClassificationAttribute } from '../attributes';\n\nexport type NestedClassificationParameters =\n | 'fill.color'\n | 'fill.hatchColor'\n | 'stroke.width'\n | 'stroke.color'\n | 'background.fillColor'\n | 'background.strokeColor'\n | 'background.strokeWidth'\n | 'figure.fillColor'\n | 'figure.strokeColor'\n | 'figure.strokeWidth';\n\nexport type SimpleClassificationParameters =\n | 'fillColor'\n | 'strokeColor'\n | 'strokeWidth'\n | 'size'\n | 'symbol'\n | 'angle'\n | 'maskedColor';\n\nexport type ClassificationParameter =\n | NestedClassificationParameters\n | SimpleClassificationParameters;\n\nexport type ClassificationParameterExtended =\n | ClassificationParameter\n | 'width'\n | 'height';\n\nexport interface ClassBase {\n title: string | null;\n parameterValue: ParameterValueWithSymbol;\n attribute?: ClassificationAttribute;\n}\n\nexport type UniqueClass = ClassBase & {\n uniqueValue: string;\n};\n\nexport type RangeClass = ClassBase & {\n from: number | string | null;\n to: number | string | null;\n};\n\nexport type ClassificationClass = UniqueClass | RangeClass;\nexport type ClassificationValues = ClassificationClass[];\n\nexport const enum ClassificationType {\n Range,\n Unique,\n}\n\nexport interface Classification<\n Type extends ClassificationType = ClassificationType,\n Value extends ClassificationClass = ClassificationClass\n> {\n parameter?: ClassificationParameterExtended;\n attribute?: string;\n type: Type;\n values: Value[];\n}\n\nexport type RangeClassification = Classification<\n ClassificationType.Range,\n RangeClass\n>;\n\nexport type UniqueClassification = Classification<\n ClassificationType.Unique,\n UniqueClass\n>;\n\nexport interface ClassificationExtras {\n defaultTitle: string;\n defaultValue: ParameterValueWithSymbol;\n}\n\nexport type ExtendedClassification<\n Type extends ClassificationType = ClassificationType,\n Value extends ClassificationClass = ClassificationClass\n> = Classification<Type, Value> & ClassificationExtras;\n\nexport function isRangeClass(value: ClassificationClass): value is RangeClass {\n return Boolean(value && 'from' in value);\n}\n\nexport function isUniqueClass(\n value: ClassificationClass\n): value is UniqueClass {\n return Boolean(value && 'uniqueValue' in value);\n}\n\nexport type ParameterValueModifier = (\n parameterValue: ClassifyAble<ParameterValue>\n) => ClassifyAble<ParameterValue> | void;\n","import {\n ConditionInterpreter,\n Expression,\n TokenType,\n} from '@evergis/condition';\n\nimport { ClassificationType } from './types';\n\nconst NULL_EXPRESSION: Expression = {\n // @ts-ignore TODO\n attribute: null,\n // @ts-ignore TODO\n operation: null,\n value: null,\n};\n\nexport class ClassificationCondition {\n private readonly condition: string;\n private readonly expressions: Expression[] = [];\n\n constructor(condition: string) {\n this.condition = condition;\n const conditionResult = new ConditionInterpreter(condition).value;\n\n this.expressions =\n conditionResult instanceof Error ? [] : conditionResult.expressions;\n }\n\n public get attributeName() {\n return this.leftExpression.attribute;\n }\n\n public get uniqueValue() {\n if (this.isUnique()) {\n const { value } = this.leftExpression;\n\n return typeof value === 'string' ? value : '';\n }\n\n console.warn(`Trying to get unique from range condition ${this.condition}`);\n\n return '';\n }\n\n public get range(): [number, number] {\n if (!this.isRange()) {\n console.warn(\n `Trying to get range from unique condition ${this.condition}`\n );\n\n return [0, 0];\n }\n\n if (this.expressions.length === 2) {\n const { value: from } = this.leftExpression;\n const { value: to } = this.rightExpression;\n\n return [from, to] as [number, number];\n }\n\n if (this.expressions.length === 1) {\n const { operation, value } = this.leftExpression;\n const isFrom = operation === TokenType.ArGr;\n\n return [isFrom ? value : null, isFrom ? null : value] as [number, number];\n }\n\n return [0, 0];\n }\n\n public get type(): ClassificationType {\n return this.isUnique()\n ? ClassificationType.Unique\n : ClassificationType.Range;\n }\n\n public isUnique() {\n return this.leftExpression.operation === TokenType.ArEq;\n }\n\n public isRange() {\n return [\n TokenType.ArGr,\n TokenType.ArGre,\n TokenType.ArLs,\n TokenType.ArLse,\n ].includes(this.leftExpression.operation);\n }\n\n public toString() {\n return this.condition;\n }\n\n private get leftExpression(): Expression {\n return this.expressions.length > 0 ? this.expressions[0] : NULL_EXPRESSION;\n }\n\n private get rightExpression(): Expression {\n return this.expressions.length > 1 ? this.expressions[1] : NULL_EXPRESSION;\n }\n}\n","import { ClassificationParameterExtended } from './types';\n\nexport const PARAMETER_SEPARATOR = '.';\n\nexport const parameterToPaths = (\n parameter: ClassificationParameterExtended\n): ClassificationParameterExtended[] =>\n parameter.split(PARAMETER_SEPARATOR) as ClassificationParameterExtended[];\n\nexport const pathsToParameter = (\n paths: ClassificationParameterExtended[]\n): ClassificationParameterExtended =>\n paths.join(PARAMETER_SEPARATOR) as ClassificationParameterExtended;\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { parameterToPaths } from './parameter';\nimport {\n ClassificationParameterExtended,\n ParameterValueModifier,\n} from './types';\n\nimport {\n CalculatedAble,\n CalculatedParameter,\n ClassifyAble,\n ParameterByAttribute,\n ParameterValue,\n ParameterValueWithSymbol,\n StyleSymbolType,\n UnidentifiedParameterValue,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nexport const isParameterByAttribute = (\n value: UnidentifiedParameterValue\n): value is ParameterByAttribute<ParameterValueWithSymbol> =>\n Boolean(\n isObject(value) &&\n (value as ParameterByAttribute<ParameterValueWithSymbol>)?.type ===\n 'byAttribute'\n );\n\nexport const isCalculatedParameter = (\n value: UnidentifiedParameterValue\n): value is CalculatedParameter<ParameterValueWithSymbol> =>\n Boolean(\n isObject(value) &&\n (value as CalculatedParameter<ParameterValueWithSymbol>)?.type ===\n 'calculated'\n );\n\nexport const getParameterValue = <Value extends ParameterValueWithSymbol>(\n value: ClassifyAble<Value> | CalculatedAble<Value>\n): Value => {\n if (isParameterByAttribute(value) || isCalculatedParameter(value)) {\n return value.defaultValue;\n }\n\n return value;\n};\n\nexport const symbolParameterWalker = (\n valueModifier: ParameterValueModifier\n) => <S extends StyleSymbolType>(\n symbol: S,\n parameter: ClassificationParameterExtended | ClassificationParameterExtended[]\n): S => {\n const paths = Array.isArray(parameter)\n ? parameter\n : parameterToPaths(parameter);\n const [firstKey, ...restKeys] = paths;\n\n // @ts-ignore\n const symbolPart = symbol[firstKey];\n\n if (restKeys.length) {\n const goDeeper = symbolParameterWalker(valueModifier);\n\n return {\n ...symbol,\n [firstKey]: goDeeper(symbolPart, restKeys) || symbolPart,\n };\n }\n\n return {\n ...symbol,\n [firstKey]: valueModifier(symbolPart) || symbolPart,\n };\n};\n\nexport const setDefaultParameterValue = symbolParameterWalker(\n getParameterValue\n);\n\nexport const setParameterValue = <S extends StyleSymbolType>(\n symbol: S,\n path: ClassificationParameterExtended,\n value: ClassifyAble<ParameterValue>\n): S => symbolParameterWalker(() => value)(symbol, path);\n\nexport function applyParameterValue(\n symbol: StyleSymbolType,\n path: ClassificationParameterExtended,\n value: ClassifyAble<ParameterValue>\n) {\n if (path === 'symbol') {\n return value as StyleSymbolType;\n }\n\n return setParameterValue(symbol, path, value);\n}\n","import { LineEndingType, ParameterDcColor, ParameterDcDouble } from '@evergis/api';\n\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\nimport { Offset } from './offset';\nimport { LineMiterSize } from './miters';\nimport { StyleSymbolType } from './symbol';\nimport { FillBrushType, StrokeBrushType, TextBackgroundType } from './brush';\n\ntype ToClientSymbolField<\n F,\n IsClassifyable extends boolean\n> = F extends ParameterDcDouble\n ? IsClassifyable extends true\n ? ClassifyAble<number>\n : number\n : F extends ParameterDcColor\n ? IsClassifyable extends true\n ? ClassifyAble<string>\n : string\n : F;\n\ntype ExtraClientSymbolFields = {\n offset: Offset;\n /* TODO: DC has other type */\n fontWeight: number;\n childSymbols: StyleSymbolType[];\n stroke: StrokeBrushType;\n fill: FillBrushType;\n textBackground: TextBackgroundType;\n beginning: null | LineEndingType;\n beginningSize: LineMiterSize;\n ending: null | LineEndingType;\n endingSize: LineMiterSize;\n angle: CalculatedAble<number>;\n};\n\nexport type ClientSymbol<\n SymbolType,\n SymbolDcType,\n NonClassifiedFields extends keyof SymbolDcType = never\n> = {\n [K in keyof SymbolDcType]: K extends 'type'\n ? SymbolType\n : K extends keyof ExtraClientSymbolFields\n ? ExtraClientSymbolFields[K]\n : ToClientSymbolField<\n SymbolDcType[K],\n K extends NonClassifiedFields ? false : true\n >;\n};\n\nexport const symbolTypeGuard = <ClientSymbol extends { type?: string }>(\n type: ClientSymbol['type']\n) => (symbol: { type?: string }): symbol is ClientSymbol =>\n symbol && symbol.type === type;\n\nexport type Unclassify<T> = {\n [K in keyof T]: T[K] extends ClassifyAble<infer V>\n ? V\n : T[K] extends CalculatedAble<infer V2>\n ? V2\n : T[K];\n};\n","import {\n PointLabelSymbolDc,\n PolygonLabelSymbolDc,\n PolylineLabelSymbolDc,\n} from '@evergis/api';\n\nimport { UnknownSymbol } from './symbol';\nimport { ClientSymbol, symbolTypeGuard } from './utils';\n\ntype NonClassifyableLabelFields = 'fontColor' | 'fontSize' | 'haloColor';\n\nexport type PointLabelSymbol = ClientSymbol<\n 'labelPointSymbol',\n PointLabelSymbolDc,\n NonClassifyableLabelFields\n>;\nexport type PolygonLabelSymbol = ClientSymbol<\n 'polygonLabelSymbol',\n PolygonLabelSymbolDc,\n NonClassifyableLabelFields\n>;\nexport type PolylineLabelSymbol = ClientSymbol<\n 'polylineLabelSymbol',\n PolylineLabelSymbolDc,\n NonClassifyableLabelFields\n>;\n\nexport const isPointLabelSymbol = symbolTypeGuard<PointLabelSymbol>(\n 'labelPointSymbol'\n);\nexport const isPolygonLabelSymbol = symbolTypeGuard<PolygonLabelSymbol>(\n 'polygonLabelSymbol'\n);\nexport const isPolylineLabelSymbol = symbolTypeGuard<PolylineLabelSymbol>(\n 'polylineLabelSymbol'\n);\n\nexport const isLabelSymbol = (symbol: UnknownSymbol): symbol is LabelType =>\n Boolean(\n symbol &&\n (isPointLabelSymbol(symbol) ||\n isPolygonLabelSymbol(symbol) ||\n isPolylineLabelSymbol(symbol))\n );\n\nexport type LabelType =\n | PolylineLabelSymbol\n | PolygonLabelSymbol\n | PointLabelSymbol;\n","import { StyleDc } from '@evergis/api';\n\nimport {\n CompositeSymbolType,\n isCompositeSymbol,\n isLabelSymbol,\n isRasterSymbol,\n isSimpleSymbol,\n Style,\n StyleSymbolType,\n UnknownSymbol,\n} from './types';\n\nexport const createCompositeSymbol = (\n childSymbols: StyleSymbolType[]\n): CompositeSymbolType => ({\n type: 'compositeSymbol',\n childSymbols,\n});\n\nexport const getChildSymbols = (symbol?: UnknownSymbol): StyleSymbolType[] => {\n if (!symbol || !isCompositeSymbol(symbol)) return [];\n\n return symbol.childSymbols || [];\n};\n\nexport const extractSymbol = (\n symbol?: UnknownSymbol\n): Pick<Style, 'symbol' | 'label' | 'raster'> => {\n const childSymbols = getChildSymbols(symbol);\n\n return {\n // @ts-ignore\n symbol: childSymbols.find(isSimpleSymbol),\n label: childSymbols.find(isLabelSymbol) || null,\n raster: childSymbols.find(isRasterSymbol) || null,\n };\n};\n\nexport const extractStyle = (style: StyleDc): Style => {\n // @ts-ignore\n if (isCompositeSymbol(style.symbol)) {\n return {\n ...style,\n ...extractSymbol(style.symbol),\n // @ts-ignore\n children: style.children && style.children.map(extractStyle),\n };\n }\n\n // NOTE: for cases when style is exist style object should have same reference for all extractStyle calls\n return (style || {}) as Style;\n};\n\nexport const packStyle = (style: Style): StyleDc => {\n const { ignoreLabel, label, symbol, raster, children, ...styleDc } = style;\n const childSymbols = [!ignoreLabel && label, raster].filter(Boolean);\n\n return {\n ...styleDc,\n symbol: childSymbols.length\n ? // @ts-ignore\n createCompositeSymbol([symbol, ...childSymbols])\n : symbol,\n // @ts-ignore\n children: children\n ? // @ts-ignore\n children.map(childStyle =>\n packStyle({ ...childStyle, ignoreLabel, label })\n )\n : children,\n };\n};\n","import {\n CirclePointSymbolDc,\n ClusterSymbolDc,\n CombinedPolylineSymbolDc,\n CompositeSymbolDc,\n H3GridSymbolDc,\n ImagePointSymbolDc,\n MaskedImagePointSymbolDc,\n PolygonSymbolDc,\n PolylineSymbolDc,\n RasterSymbolDc,\n SimplePolylineSymbolDc,\n SquarePointSymbolDc,\n StyleDc,\n SvgPointSymbolDc,\n} from '@evergis/api';\n\nimport { isLabelSymbol, LabelType } from './label';\nimport { extractSymbol } from \"../compositeSymbol\";\nimport { CalculatedAble } from './parameterValue';\nimport { ClientSymbol, symbolTypeGuard } from './utils';\nimport { FillBrushType, StrokeBrushType } from './brush';\nimport { ClassificationParameterExtended } from \"../../classification\";\n\nexport type PointSymbol = ClientSymbol<\n 'circlePointSymbol',\n CirclePointSymbolDc\n>;\n\nexport type SvgPointSymbol = ClientSymbol<\n 'svgPointSymbol',\n SvgPointSymbolDc\n>;\n\nexport type SquareSymbol = ClientSymbol<\n 'squarePointSymbol',\n SquarePointSymbolDc\n> & {\n angle?: CalculatedAble<number>;\n};\n\nexport type MaskedImageSymbol = ClientSymbol<\n 'maskedImagePointSymbol',\n MaskedImagePointSymbolDc\n>;\n\nexport type StaticImageSymbol = ClientSymbol<\n 'imagePointSymbol',\n ImagePointSymbolDc\n>;\n\nexport type PolygonSymbol<\n Fill = FillBrushType,\n Stroke = StrokeBrushType\n> = ClientSymbol<'polygonSymbol', PolygonSymbolDc> & {\n fill: Fill;\n stroke: Stroke;\n};\n\nexport type SimplePolylineSymbol = ClientSymbol<\n 'simplePolylineSymbol',\n SimplePolylineSymbolDc\n>;\n\nexport type PolylineSymbol = ClientSymbol<'polylineSymbol', PolylineSymbolDc>;\n\nexport type RasterSymbol = ClientSymbol<'rasterSymbol', RasterSymbolDc>;\n\nexport type ClusterSymbolType = ClientSymbol<\"cluster\", ClusterSymbolDc>;\n\nexport type CompositeSymbolType = ClientSymbol<\n 'compositeSymbol',\n CompositeSymbolDc\n>;\n\nexport type H3GridSymbol = ClientSymbol<\n 'h3grid',\n H3GridSymbolDc\n>;\n\nexport type SimpleShapeSymbol = PointSymbol | SquareSymbol;\n\nexport type ImageSymbol = MaskedImageSymbol | StaticImageSymbol;\n\nexport type PointSymbolType = SvgPointSymbol | PointSymbol | SquareSymbol | MaskedImageSymbol | StaticImageSymbol;\n\nexport type PolylineSymbols = PolylineSymbol | SimplePolylineSymbol;\n\nexport type StyleSymbolType =\n | PointSymbolType\n | PolygonSymbol\n | PolylineSymbols\n | LabelType\n | RasterSymbol\n | CompositeSymbolType\n | H3GridSymbolDc\n | ClusterSymbolDc;\n\nexport type StyleSymbolTypes = StyleSymbolType['type'];\n\nexport type UnknownSymbol = StyleDc['symbol'] | StyleSymbolType;\n\nexport type LayerSymbol = PointSymbol | PolylineSymbols | PolygonSymbol;\n\nexport type FillStyledSymbols = PolygonSymbol;\n\nexport type StrokeStyledSymbols = PolygonSymbol | PolylineSymbols;\n\nexport const isPointSymbol = symbolTypeGuard<PointSymbol>('circlePointSymbol');\n\nexport const isSquareSymbol = symbolTypeGuard<SquareSymbol>(\n 'squarePointSymbol'\n);\n\nexport const isMaskedImageSymbol = symbolTypeGuard<MaskedImageSymbol>(\n 'maskedImagePointSymbol'\n);\n\nexport const isStaticImageSymbol = symbolTypeGuard<StaticImageSymbol>(\n 'imagePointSymbol'\n);\n\nexport const isCombinedPolylineSymbol = symbolTypeGuard<CombinedPolylineSymbolDc>(\"combinedPolylineSymbol\");\n\nexport const isPolygonSymbol = symbolTypeGuard<PolygonSymbol>('polygonSymbol');\n\nexport const isPolylineSymbol = symbolTypeGuard<PolylineSymbol>(\n 'polylineSymbol'\n);\n\nexport const isSimplePolylineSymbol = symbolTypeGuard<SimplePolylineSymbol>(\n 'simplePolylineSymbol'\n);\n\nexport const isPolylineSymbols = (\n symbol: UnknownSymbol\n): symbol is PolylineSymbols =>\n Boolean(\n symbol && (isPolylineSymbol(symbol) || isSimplePolylineSymbol(symbol))\n );\n\nexport const isCompositeSymbol = symbolTypeGuard<CompositeSymbolType>(\n 'compositeSymbol'\n);\nexport const isRasterSymbol = symbolTypeGuard<RasterSymbol>('rasterSymbol');\n\nexport const isImageSymbol = (symbol: UnknownSymbol): symbol is ImageSymbol =>\n Boolean(\n symbol && (isMaskedImageSymbol(symbol) || isStaticImageSymbol(symbol))\n );\n\nexport const isTwoDimensionalSymbol = (\n symbol: UnknownSymbol\n): symbol is ImageSymbol => Boolean(symbol && 'width' in symbol);\n\nexport const isSizableSymbol = (\n symbol: UnknownSymbol\n): symbol is SimpleShapeSymbol => Boolean(symbol && 'size' in symbol);\n\nexport const isStrokeStyledSymbol = (\n symbol: UnknownSymbol\n): symbol is StrokeStyledSymbols =>\n Boolean(symbol && (isPolygonSymbol(symbol) || isPolylineSymbols(symbol)));\n\nexport const isScalablePolylineSymbol = (\n symbol: PolylineSymbol | SimplePolylineSymbol\n) =>\n (symbol.beginning !== null && symbol.ending !== null) ||\n (symbol.stroke && symbol.stroke.type !== 'solid');\n\nexport const isSimpleSymbol = (\n symbol: UnknownSymbol\n): symbol is Exclude<StyleSymbolType, LabelType | CompositeSymbolType> =>\n Boolean(\n symbol &&\n !isLabelSymbol(symbol) &&\n !isCompositeSymbol(symbol) &&\n !isRasterSymbol(symbol)\n );\n\nexport const isH3GridSymbol = symbolTypeGuard<H3GridSymbolDc>(\"h3grid\");\n\nexport const isSvgPointSymbol = symbolTypeGuard<SvgPointSymbol>(\"svgPointSymbol\");\n\nexport const isClusterSymbol = symbolTypeGuard<ClusterSymbolType>(\"cluster\");\n\nexport const isClusterFillColor = (symbol: StyleSymbolType, parameter: ClassificationParameterExtended) => {\n return isClusterSymbol(symbol) && parameter === \"fillColor\";\n};\n\nexport const getExtractedSymbol = (symbol: StyleSymbolType, extractCluster = false): StyleSymbolType => {\n const extracted = isCompositeSymbol(symbol as CompositeSymbolType) ? extractSymbol(symbol)?.symbol : symbol;\n\n return extractCluster && isClusterSymbol(extracted as ClusterSymbolType)\n ? ((extracted as ClusterSymbolType).singleObjectSymbol as StyleSymbolType)\n : extracted;\n};\n","import {\n DashedBrushDc,\n HatchBrushDc,\n PatternBrushDc,\n SolidStrokeBrushDc,\n TextBackgroundDc,\n} from '@evergis/api';\n\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\n\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\nexport type StrokeBrushType = SolidBrush | DashedBrush;\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\n\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\n\nexport const isPolygonHasPatternBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<PatternBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\n\nexport const isPolygonHasHatchBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<HatchBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\n\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\n fill: Unclassify<FillBrushType>;\n stroke: Unclassify<StrokeBrushType>;\n};\n","import { LineEndingType } from \"@evergis/api\";\n\nimport { ClassifyAble } from './parameterValue';\n\nexport const enum LineMiterSize {\n Small = 'small',\n Large = 'large',\n}\n\nexport type NoLineMiterType = {\n type: LineEndingType.None;\n};\n\ntype LineMiterBase<T extends LineEndingType> = {\n type: T;\n color?: ClassifyAble<string>;\n};\n\nexport type ArrowLineType = LineMiterBase<LineEndingType.Arrow> & {\n strokeWidth?: number;\n arrowLength?: number;\n arrowWidth?: number;\n};\nexport type FilledArrowLineMiterType = LineMiterBase<\n LineEndingType.FilledArrow\n> & {\n arrowLength?: number;\n arrowWidth?: number;\n};\nexport type SquareLineMiterType = LineMiterBase<LineEndingType.Square> & {\n size?: number;\n strokeWidth?: number;\n};\nexport type FilledSquareLineMiterType = LineMiterBase<\n LineEndingType.FilledSquare\n> & {\n size?: number;\n};\nexport type CircleLineMiterType = LineMiterBase<LineEndingType.Circle> & {\n size?: number;\n strokeWidth?: number;\n};\nexport type FilledCircleLineMiterType = LineMiterBase<\n LineEndingType.FilledCircle\n> & {\n size?: number;\n};\n\nexport type FilledLineMitters =\n | FilledArrowLineMiterType\n | FilledSquareLineMiterType\n | FilledCircleLineMiterType;\nexport type ArrowLineMiters = ArrowLineType | FilledArrowLineMiterType;\nexport type SquareLineMiters = SquareLineMiterType | FilledSquareLineMiterType;\nexport type CircleLineMiters = CircleLineMiterType | FilledCircleLineMiterType;\nexport type LineMiterType =\n | NoLineMiterType\n | ArrowLineMiters\n | SquareLineMiters\n | CircleLineMiters;\n\nexport const isMiterExist = (\n miter?: undefined | LineMiterType\n): miter is Exclude<LineMiterType, NoLineMiterType> =>\n Boolean(miter && miter.type !== LineEndingType.None);\n\nexport const isFilledLineMitter = (\n miter: LineMiterType\n): miter is FilledLineMitters =>\n miter.type === LineEndingType.FilledCircle ||\n miter.type === LineEndingType.FilledArrow ||\n miter.type === LineEndingType.FilledSquare;\n\nexport const isArrowLineMiter = (\n miter: LineMiterType\n): miter is ArrowLineMiters =>\n miter.type === LineEndingType.Arrow ||\n miter.type === LineEndingType.FilledArrow;\n\nexport const isSquareLineMiter = (\n miter: LineMiterType\n): miter is SquareLineMiters =>\n miter.type === LineEndingType.Square ||\n miter.type === LineEndingType.FilledSquare;\n\nexport const isCircleLineMiter = (\n miter: LineMiterType\n): miter is CircleLineMiters =>\n miter.type === LineEndingType.Circle ||\n miter.type === LineEndingType.FilledCircle;\n","import { PointSymbolType, UnknownSymbol } from './symbol';\nimport { ParameterByAttribute } from './parameterValue';\n\nimport { isParameterByAttribute } from '../../classification/parameterValue';\n\nexport type SimpleOffset = [number, number];\n\nexport type ClassifiedOffset = [\n ParameterByAttribute<number>,\n ParameterByAttribute<number>\n];\n\nexport type Offset = SimpleOffset | ClassifiedOffset;\n\nexport const isSimpleOffset = (offset: Offset): offset is SimpleOffset =>\n offset &&\n !isParameterByAttribute(offset[0]) &&\n !isParameterByAttribute(offset[1]);\n\nexport const isSymbolWithOffset = (\n symbol: UnknownSymbol\n): symbol is PointSymbolType => Boolean(symbol && 'offset' in symbol);\n","import { StyleSymbolType } from './symbol';\n\nexport type ParameterByAttributeValue<Value> = {\n condition: string;\n value: Value;\n title: string | null;\n};\n\nexport type ParameterByAttribute<Value> = {\n type: 'byAttribute';\n defaultValue: Value;\n title: string | null;\n values: ParameterByAttributeValue<Value>[];\n};\n\nexport type CalculatedParameter<Value> = {\n type: 'calculated';\n expression: string;\n defaultValue: Value;\n title?: string | null;\n};\n\nexport type ClassifyAble<Value> = Value | ParameterByAttribute<Value>;\n\nexport type CalculatedAble<Value> = Value | CalculatedParameter<Value>;\n\nexport type ParameterValue = string | number | number[] | Date;\n\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType;\n\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\n ParameterValueWithSymbol\n>[];\n\nexport type ClassifiedParameterValue = ClassifyAble<ParameterValueWithSymbol>;\n\nexport type UnidentifiedParameterValue =\n | ParameterValueWithSymbol\n | Partial<ClassifyAble<ParameterValueWithSymbol>>\n | Partial<CalculatedAble<ParameterValue>>;\n\nexport type CalculatedParameterValue = CalculatedAble<ParameterValue>;\n\nexport const isStringParameterValue = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is string => typeof parameterValue === 'string';\n\nexport const isParameterValueSimple = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is ParameterValue =>\n typeof parameterValue === 'number' || typeof parameterValue === 'string';\n\nexport const isParameterValueSymbol = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is StyleSymbolType => !isParameterValueSimple(parameterValue);\n","import { StyleDc } from '@evergis/api';\n\nimport { LabelType } from './label';\nimport { CompositeSymbolType, RasterSymbol, StyleSymbolType } from './symbol';\n\nexport type Style = Omit<StyleDc, 'symbol' | 'children'> & {\n symbol: Exclude<StyleSymbolType, CompositeSymbolType>;\n ignoreLabel?: boolean;\n label: LabelType | null;\n raster: RasterSymbol | null;\n children: Style[] | null;\n};\n\nexport const isStyle = (value: object): value is Style => 'symbol' in value;\n","import { StyleDc } from '@evergis/api';\n\nimport { extractStyle, packStyle } from './compositeSymbol';\nimport { Style } from './types';\n\nimport { ClassificationManager } from '../classification';\n\nexport class EvergisStyle {\n public classificationManager: ClassificationManager;\n private readonly style: Style;\n\n constructor(style: StyleDc) {\n this.style = extractStyle(style);\n this.classificationManager = new ClassificationManager(this.style);\n }\n\n public serialize() {\n return packStyle(this.style);\n }\n\n public hasRasters() {\n return !!(\n this.style.raster ||\n (this.style.children || []).some(style => style.raster)\n );\n }\n\n get symbol() {\n return this.style.symbol;\n }\n\n get raster() {\n return this.style.raster;\n }\n get label() {\n return this.style.label;\n }\n\n get children() {\n return this.style.children;\n }\n\n get title() {\n return this.style.title;\n }\n\n get condition() {\n return this.style.condition;\n }\n\n get ignoreLabel() {\n return this.style.ignoreLabel;\n }\n\n get resolution(): Nullable<[number, number]> {\n const { minResolution, maxResolution } = this.style;\n\n return minResolution === void 0 || maxResolution === void 0\n ? null\n : [minResolution, maxResolution];\n }\n}\n","import {\n ClassificationClass,\n ClassificationExtras,\n ClassificationParameterExtended,\n ExtendedClassification,\n} from './types';\nimport { ClassificationCondition } from './ClassificationCondition';\nimport { pathsToParameter } from './parameter';\nimport { isParameterByAttribute } from './parameterValue';\n\nimport {\n isStyle,\n isTwoDimensionalSymbol,\n ParameterByAttributeValue,\n ParameterValueWithSymbol,\n Style,\n StyleSymbolType,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nconst toClassificationClass = (\n parameterValue: ParameterValueWithSymbol,\n title: string,\n condition: ClassificationCondition\n): ClassificationClass => ({\n parameterValue,\n title,\n ...(condition.isUnique()\n ? {\n uniqueValue: condition.uniqueValue,\n }\n : {\n from: condition.range[0],\n to: condition.range[1],\n }),\n});\n\nconst DEFAULT_EXTRAS: ClassificationExtras = {\n defaultTitle: '',\n // @ts-ignore\n defaultValue: null,\n};\n\nexport const toClassification = (\n values: (ParameterByAttributeValue<ParameterValueWithSymbol> | Style)[],\n parameter: ClassificationParameterExtended,\n extras: ClassificationExtras = DEFAULT_EXTRAS\n): ExtendedClassification =>\n // @ts-ignore\n values.reduce(\n // @ts-ignore\n (classification: ExtendedClassification, value) => {\n const classificationCondition = new ClassificationCondition(\n value.condition || ''\n );\n const classificationValue = toClassificationClass(\n isStyle(value) ? value.symbol : value.value,\n // @ts-ignore\n value.title,\n classificationCondition\n );\n\n classification.values.push(classificationValue);\n\n return {\n ...classification,\n type: classification.type || classificationCondition.type,\n attribute:\n classification.attribute || classificationCondition.attributeName,\n };\n },\n {\n ...extras,\n attribute: null,\n parameter,\n type: null,\n values: [],\n }\n );\n\nexport const getClassifications = (\n symbol: StyleSymbolType,\n pathContext: ClassificationParameterExtended[] = []\n): ExtendedClassification[] =>\n Object.entries(symbol).reduce(\n (classifications, [parameter, parameterValue]) => {\n const skipHeight =\n isTwoDimensionalSymbol(symbol) && parameter === 'height';\n const skip = !isObject(parameterValue) || skipHeight;\n\n if (skip) {\n return classifications;\n }\n\n if (!isParameterByAttribute(parameterValue)) {\n return [\n ...classifications,\n // @ts-ignore\n ...getClassifications(symbol[parameter], [\n ...pathContext,\n parameter as ClassificationParameterExtended,\n ]),\n ];\n }\n\n const classification = toClassification(\n parameterValue.values,\n pathsToParameter([\n ...pathContext,\n parameter as ClassificationParameterExtended,\n ]),\n {\n // @ts-ignore\n defaultTitle: parameterValue.title,\n defaultValue: parameterValue.defaultValue,\n }\n );\n\n return [...classifications, classification];\n },\n [] as ExtendedClassification[]\n );\n","import { getClassifications, toClassification } from './getClassifications';\nimport { ExtendedClassification } from './types';\n\nimport { Style } from '../style/types';\n\nexport class ClassificationManager {\n private classifications: ExtendedClassification[] = [];\n\n constructor(private style: Style) {\n this.collectClassifications();\n }\n\n public get values() {\n return this.classifications;\n }\n\n public find(predicate: (classification: ExtendedClassification) => boolean) {\n for (const classification of this.classifications) {\n if (predicate(classification)) {\n return classification;\n }\n }\n\n return null;\n }\n\n public filter(callback: (classification: ExtendedClassification) => boolean) {\n return this.classifications.filter(callback);\n }\n\n public map<T extends ValueOf<ExtendedClassification>>(\n callback: (classification: ExtendedClassification) => T\n ) {\n return this.classifications.map(callback);\n }\n\n public reduce<T>(\n callback: (classifications: T, classification: ExtendedClassification) => T,\n initial: T\n ) {\n return this.classifications.reduce(callback, initial);\n }\n\n public hasClassifications() {\n return this.classifications.length > 0;\n }\n\n private collectClassifications() {\n if (this.style.children && this.style.children.length) {\n this.classifications.push(\n toClassification(this.style.children, 'symbol')\n );\n }\n\n if (this.style.symbol) {\n this.classifications.push(...getClassifications(this.style.symbol));\n }\n }\n}\n","import { getParameterValue } from './parameterValue';\n\nimport { StyleSymbolType, Unclassify } from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nexport const unClassify = <V extends StyleSymbolType>(\n symbol: V\n): Unclassify<V> =>\n Object.entries(symbol).reduce((flatSymbol, [parameter, parameterValue]) => {\n let result = Array.isArray(parameterValue)\n ? parameterValue.map(getParameterValue)\n : getParameterValue(parameterValue);\n\n if (isObject(result)) {\n return {\n ...flatSymbol,\n [parameter]: unClassify(parameterValue),\n };\n }\n\n return {\n ...flatSymbol,\n [parameter]: result,\n };\n }, {} as Unclassify<V>);\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\n\nexport const DEFAULT_LANGUAGE = \"ru\";\n\nexport const resources = {\n en: {},\n ru: {},\n} as const;\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n fallbackLng: DEFAULT_LANGUAGE,\n ns: Object.keys(resources[DEFAULT_LANGUAGE]),\n interpolation: {\n escapeValue: false,\n },\n resources,\n supportedLngs: Object.keys(resources),\n });\n\nexport { i18n };\n","import { i18n } from \"../../i18n\";\nimport { RangeClass } from './types';\n\nexport const printRangeClass = (value: RangeClass, index: number): string => {\n const isDouble = Boolean(value.attribute?.type === 'Double');\n const isDate = Boolean(value.attribute?.type === 'DateTime');\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\n\n if (from === null) {\n return `${to} ${isDate ? i18n.t(\"andBefore\", { ns: \"style\" }) : i18n.t(\"andLess\", { ns: \"style\" })}`;\n }\n\n if (to === null) {\n return `${isDate ? i18n.t(\"after\", { ns: \"style\" }) : i18n.t(\"more\", { ns: \"style\" })} ${from}`;\n }\n\n return from === to ? `${from}` : `${from} - ${to}`;\n};\n\nfunction getRangeValues(\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\n isDouble: boolean,\n isDate: boolean,\n index: number\n): Pick<RangeClass, 'from' | 'to'> {\n return {\n from: from !== null && index !== 0 ?\n (isDate ? from : (isDouble ? +from : +from + 1)) : from,\n to,\n };\n}\n","import { 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\";\n\nexport function isValidParameter(parameter: ClassificationParameterExtended) {\n return !parameter?.includes(\"labelSymbol\") && !parameter?.includes(\"singleObjectSymbol\");\n}\n","import { AttributeType } from '@evergis/api';\n\nimport { ParameterValueWithSymbol } from '../style';\n\nexport type LegendValueType = {\n title: string;\n parameterValue: ParameterValueWithSymbol;\n hiddenCondition?: string;\n};\n\nexport enum FilterConditionOperation {\n AND = \"&&\",\n OR = \"||\",\n}\n\nexport enum ComparisonOperator {\n /** `==` */\n Equals = \"Equals\",\n /** `!=` */\n NotEquals = \"NotEquals\",\n /** `>` */\n GreaterThan = \"GreaterThan\",\n /** `<` */\n LessThan = \"LessThan\",\n /** `>=` */\n GreaterOrEquals = \"GreaterOrEquals\",\n /** `<=` */\n LessOrEquals = \"LessOrEquals\",\n Filled = \"Filled\",\n Empty = \"Empty\",\n /** `==` */\n Contains = \"Contains\",\n /** `!=` */\n NotContains = \"NotContains\",\n StartsWith = \"StartsWith\",\n NotStartsWith = \"NotStartsWith\",\n EndsWith = \"EndsWith\",\n NotEndsWith = \"NotEndsWith\",\n Between = \"Between\",\n Outside = \"Outside\",\n}\n\nexport interface FilterCondition<Value> {\n id?: string;\n attribute: string | null;\n type?: AttributeType;\n comparisonOperator: ComparisonOperator | null;\n value: Value | string[] | null;\n}\n\nexport type FilterConditionType = FilterCondition<string | number>;\n","import { GeometryType } from '@evergis/api';\n\nimport { ClassifyParameter, ParameterInfo, Units } from './types';\nimport { ClassificationParameter, ComparisonOperator } from '../../core';\n\nexport const DEFAULT_LEGEND_SYMBOL_SIZE = 26;\n\nexport const EXTRA_BORDER_SIZE = 4;\n\nexport const DEFAULT_SYMBOL_SIZE = 20;\n\nexport const DEFAULT_SYMBOL_WITH_BG_SIZE = 24;\n\nexport const DEFAULT_SYMBOL_FILL_COLOR = 'rgba(0, 163, 245, 1)';\n\nexport const DEFAULT_SYMBOL_STROKE_COLOR = 'rgb(255, 255, 255)';\n\nexport const DEFAULT_SYMBOL_OFFSET = [0, 0];\n\nexport const DEFAULT_CLUSTER_SVG = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 56 56\" width=\"56px\" height=\"56px\">\n <circle cx=\"28\" cy=\"28\" r=\"22\" fill=\"#00AAFF\" stroke=\"#00AAFF\" stroke-opacity=\"0.28\" stroke-width=\"12\" id=\"symbol-bg\" />\n</svg>\n`;\n\nexport const SYMBOL_CLASSIFICATION: Partial<Record<\n GeometryType,\n ClassifyParameter[]\n>> = {\n [GeometryType.Polygon]: ['fill.color', 'stroke.color', 'stroke.width'],\n [GeometryType.Polyline]: ['stroke.color', 'stroke.width'],\n [GeometryType.Point]: [\n 'angle',\n 'size',\n 'fill.color',\n 'fillColor',\n 'background.fillColor',\n 'background.strokeColor',\n 'background.strokeWidth',\n 'figure.fillColor',\n 'figure.strokeColor',\n 'figure.strokeWidth',\n 'singleObjectSymbol.size',\n 'singleObjectSymbol.figure.fillColor',\n 'singleObjectSymbol.figure.strokeColor',\n 'singleObjectSymbol.figure.strokeWidth',\n 'singleObjectSymbol.background.fillColor',\n 'singleObjectSymbol.background.strokeColor',\n 'singleObjectSymbol.background.strokeWidth',\n ],\n};\n\nexport const SYMBOL_LIMITS = {\n SIZE_MIN: 1,\n SIZE_MAX: 64,\n SIZE_STEP: 1,\n GRID_SIZE_MIN: 0.1,\n GRID_SIZE_MAX: 120,\n MIN_OBJECTS_COUNT: 2,\n MAX_OBJECTS_COUNT: 10000,\n MIN_CLUSTER_SIZE: 16,\n MAX_CLUSTER_SIZE: 120,\n STROKE_WIDTH_MIN: 0,\n STROKE_WIDTH_MAX: 32,\n STROKE_WIDTH_STEP: 0.25,\n ANGLE_MIN: -360,\n ANGLE_MAX: 360,\n ANGLE_STEP: 1,\n PREVIEW_SIZE_MAX: 32,\n PREVIEW_SIZE_MAX_WIDTH: 26,\n};\n\nexport const DEFAULT_PARAMETER_INFO: ParameterInfo = {\n classifyAble: true,\n min: SYMBOL_LIMITS.STROKE_WIDTH_MIN,\n max: SYMBOL_LIMITS.STROKE_WIDTH_MAX,\n step: SYMBOL_LIMITS.STROKE_WIDTH_STEP,\n units: Units.Pixels,\n serialize: value => value,\n deserialize: value => value,\n};\n\nexport const PARAMETER_INFOS: Partial<Record<\n ClassificationParameter,\n ParameterInfo\n>> = {\n size: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.SIZE_MIN,\n max: SYMBOL_LIMITS.SIZE_MAX,\n step: SYMBOL_LIMITS.SIZE_STEP,\n units: Units.Pixels,\n },\n /* gridSize: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.GRID_SIZE_MIN,\n max: SYMBOL_LIMITS.GRID_SIZE_MAX,\n step: SYMBOL_LIMITS.SIZE_STEP,\n classifyAble: false,\n units: null,\n },\n maxObjectCount: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\n step: SYMBOL_LIMITS.SIZE_STEP,\n classifyAble: false,\n units: i18n.t(Units.Count, { ns: \"common\" }),\n },\n selectionObjectsLimit: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\n step: SYMBOL_LIMITS.SIZE_STEP,\n classifyAble: false,\n units: i18n.t(Units.Count, { ns: \"common\" }),\n },\n angle: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.ANGLE_MIN,\n max: SYMBOL_LIMITS.ANGLE_MAX,\n step: SYMBOL_LIMITS.ANGLE_STEP,\n units: Units.Degrees,\n serialize: compose(Math.round, radToDeg),\n deserialize: degToRad,\n },\n endingSize: {\n ...DEFAULT_PARAMETER_INFO,\n classifyAble: false,\n min: 3,\n max: 12,\n step: 1,\n },*/\n};\n\nexport const OPERATOR_CONDITION_REMAP: Record<ComparisonOperator, string> = {\n [ComparisonOperator.Equals]: '==',\n [ComparisonOperator.NotEquals]: '!=',\n [ComparisonOperator.GreaterThan]: '>',\n [ComparisonOperator.GreaterOrEquals]: '>=',\n [ComparisonOperator.LessThan]: '<',\n [ComparisonOperator.LessOrEquals]: '<=',\n [ComparisonOperator.Filled]: '!=',\n [ComparisonOperator.Empty]: '==',\n [ComparisonOperator.Contains]: '==',\n [ComparisonOperator.NotContains]: '!=',\n [ComparisonOperator.StartsWith]: '==',\n [ComparisonOperator.NotStartsWith]: '!=',\n [ComparisonOperator.EndsWith]: '==',\n [ComparisonOperator.NotEndsWith]: '!=',\n [ComparisonOperator.Between]: 'between',\n [ComparisonOperator.Outside]: '!between',\n};\n\nexport const BASE_OPERATORS = [\n ComparisonOperator.Equals,\n ComparisonOperator.NotEquals,\n];\n\nexport const CONTAINS_OPERATORS = [\n ComparisonOperator.Contains,\n ComparisonOperator.NotContains,\n];\n\nexport const FILLED_OPERATORS = [\n ComparisonOperator.Filled,\n ComparisonOperator.Empty,\n];\n\nexport const STARTS_WITH_OPERATORS = [\n ComparisonOperator.StartsWith,\n ComparisonOperator.NotStartsWith,\n];\n\nexport const ENDS_WITH_OPERATORS = [\n ComparisonOperator.EndsWith,\n ComparisonOperator.NotEndsWith,\n];\n\nexport const RANGE_OPERATORS = [\n ComparisonOperator.LessThan,\n ComparisonOperator.LessOrEquals,\n ComparisonOperator.GreaterThan,\n ComparisonOperator.GreaterOrEquals,\n];\n\nexport const BETWEEN_OPERATORS = [\n ComparisonOperator.Between,\n ComparisonOperator.Outside,\n];\n\nexport const numberComparisonOperators = [\n ...BASE_OPERATORS,\n ...RANGE_OPERATORS,\n ...FILLED_OPERATORS,\n ...BETWEEN_OPERATORS,\n];\n\nexport const dateComparisonOperators = [\n ...BASE_OPERATORS,\n ...RANGE_OPERATORS,\n ...FILLED_OPERATORS,\n ...BETWEEN_OPERATORS,\n];\n\nexport const textComparisonOperators = [\n ...BASE_OPERATORS,\n ...CONTAINS_OPERATORS,\n ...STARTS_WITH_OPERATORS,\n ...ENDS_WITH_OPERATORS,\n ...FILLED_OPERATORS,\n];\n","import { ReactNode, RefObject } from 'react';\nimport {\n AttributeType,\n PointLabelSymbolDc,\n SvgPointSymbolDc,\n StyleDc,\n FeatureLayerServiceInfoDc,\n AttributeFormatDc,\n FeatureDc,\n} from '@evergis/api';\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { H3Symbol } from '@evergis/sgis/es/symbols/H3Symbol';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport {\n ClassificationParameterExtended,\n LayerAttribute,\n LegendValueType,\n ParameterByAttribute,\n ParameterValueWithSymbol,\n StyleSymbolType,\n SvgPointSymbol,\n} from '../../core';\nimport {\n SGisBrushFill,\n SGisImageFill,\n SGisPolygonSymbol,\n SGisPolylineSymbol,\n} from '../../symbols';\n\nexport type ClassifyParameter =\n | 'fill.color'\n | 'fill.hatchColor'\n | 'fillColor'\n | 'stroke.width'\n | 'stroke.color'\n | 'strokeWidth'\n | 'strokeColor'\n | 'textBackground.fill.color'\n | 'background.fillColor'\n | 'background.strokeColor'\n | 'background.strokeWidth'\n | 'figure.fillColor'\n | 'figure.strokeColor'\n | 'figure.strokeWidth'\n | 'fontColor'\n | 'haloColor'\n | 'size'\n | 'symbol'\n | 'angle'\n | 'maskedColor'\n | 'endingSize'\n | 'beginningSize'\n | 'maxObjectCount'\n | 'gridSize'\n | 'selectionObjectsLimit'\n | 'singleObjectSymbol.size'\n | 'singleObjectSymbol.figure.fillColor'\n | 'singleObjectSymbol.figure.strokeColor'\n | 'singleObjectSymbol.figure.strokeWidth'\n | 'singleObjectSymbol.background.fillColor'\n | 'singleObjectSymbol.background.strokeColor'\n | 'singleObjectSymbol.background.strokeWidth';\n\nexport interface ParameterInfo {\n min: number;\n max: number;\n step: number;\n units: Units | null;\n serialize: (value: number) => number;\n deserialize: (value: number) => number;\n classifyAble: boolean;\n}\n\nexport const enum Units {\n Pixels = 'px',\n Count = 'pcs',\n Degrees = '°',\n}\n\nexport type Positions = Coordinates | Coordinates[] | Coordinates[][];\n\nexport type FeaturedDcExtendedGeometry = Omit<\n FeatureDc['geometry'],\n 'coordinates'\n> & {\n coordinates?: Positions;\n};\n\nexport type LegendProps = {\n layerInfo: FeatureLayerServiceInfoDc;\n formatValue?: (\n type: AttributeType,\n value: string | number | Date | FeaturedDcExtendedGeometry,\n stringFormat?: AttributeFormatDc\n ) => string;\n hiddenLegends?: Record<string, string[]>;\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\n clearHiddenLegends?: (layerName: string) => void;\n goToClassification?: VoidFunction;\n isShared?: boolean;\n};\n\nexport type LegendChildrenProps = Pick<\n LegendProps,\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\n> & {\n layerInfo: FeatureLayerServiceInfoDc;\n};\n\nexport type LegendSectionProps = Pick<\n LegendProps,\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\n> & {\n layerName: string;\n symbol: StyleDc['symbol'];\n parameter: ClassificationParameterExtended;\n parameters: ClassificationParameterExtended[];\n classified: ParameterByAttribute<ParameterValueWithSymbol>;\n attribute: LayerAttribute | null;\n index: number;\n count?: number;\n isShared?: boolean;\n};\n\nexport type LegendSectionItem = Pick<\n LegendProps,\n 'hiddenLegends' | 'toggleHiddenLegend'\n> & {\n attributeType: AttributeType;\n symbol: StyleSymbolType;\n title: string;\n index: number;\n hiddenCondition?: string;\n};\n\nexport type MaximizedLegendProps = {\n innerRef?: RefObject<HTMLDivElement> | undefined;\n isShown?: boolean;\n layerName: string;\n symbol: StyleDc['symbol'];\n parameter: ClassificationParameterExtended;\n values: LegendSectionItem[];\n attributeType: AttributeType;\n index: number;\n hiddenLegends?: string[];\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\n};\n\nexport type SvgSymbolProps = {\n svg: string;\n symbol: SvgPointSymbol;\n size?: number;\n title?: string;\n text?: string;\n bg?: SvgSymbolBg;\n skipOffset?: boolean;\n isClassified?: boolean;\n fontSettings?: PointLabelSymbolDc;\n onClick?: (svg: string, symbol: SvgPointSymbol) => void;\n};\n\nexport enum SvgSymbolBg {\n Rect = 'rect',\n Circle = 'circle',\n}\n\nexport type SGisSymbol =\n | MaskedImage\n | SvgPointSymbolDc\n | SGisPolylineSymbol\n | SGisPolygonSymbol\n | SGisImageFill\n | SGisBrushFill\n | H3Symbol;\n/* | sPointSymbol\n | sSquareSymbol\n | sStaticImageSymbol\n | SGisMiterSymbol*/\n\nexport type SvgEditorField = Pick<\n SvgPointSymbol,\n 'size' | 'offset' | 'angle'\n> & {\n 'background.fillColor': string;\n 'background.strokeColor': string;\n 'background.strokeWidth': string;\n 'figure.strokeColor': string;\n 'figure.strokeWidth': string;\n 'figure.fillColor': string;\n};\n\nexport type MinimizedLegendProps = {\n innerRef?: RefObject<HTMLDivElement> | undefined;\n isShown?: boolean;\n title?: string | ReactNode;\n values: LegendValueType[];\n parameter: ClassificationParameterExtended;\n hiddenLegends?: string[];\n};\n\nexport type MapLegendItemProps = {\n value?: string | number;\n parameter?: ClassificationParameterExtended;\n isHidden?: boolean;\n};\n","import { Gradient, Svg } from '@svgdotjs/svg.js';\nimport { SvgParameterDc } from '@evergis/api';\n\nimport {\n DEFAULT_SYMBOL_FILL_COLOR,\n DEFAULT_SYMBOL_SIZE,\n DEFAULT_SYMBOL_STROKE_COLOR,\n DEFAULT_SYMBOL_WITH_BG_SIZE,\n} from '../components/Legend/constants';\nimport { SvgSymbolBg } from '../components/Legend/types';\nimport {\n getParameterValue,\n isParameterByAttribute,\n ParameterByAttribute,\n ParameterByAttributeValue,\n ParameterValue,\n SvgPointSymbol,\n} from '../core';\n\nconst DEFAULT_STROKE_OPACITY = 0.28;\n\nexport const convertSvgToBase64 = (svg: string) =>\n `data:image/svg+xml;base64,${window.btoa(svg)}`;\n\nexport const createSvgGradient = (\n svg: Svg,\n values: ParameterByAttributeValue<string>[]\n) =>\n svg\n .gradient('linear', (add: Gradient) => {\n values?.forEach(({ value }, index) => {\n add.stop(index / (values?.length - 1), value);\n });\n })\n .from(0, 0)\n .to(1, 1);\n\n// eslint-disable-next-line max-lines-per-function\nexport const manipulateSvgSymbol = ({\n SVGContainer,\n symbol,\n svg,\n bg,\n isClassified,\n}: {\n SVGContainer: Svg;\n symbol: SvgPointSymbol;\n svg?: string;\n bg?: SvgSymbolBg;\n isClassified?: boolean;\n}): Svg => {\n if (!symbol) return SVGContainer;\n\n const symbolData = getParameterValue(\n svg || (symbol.data as ParameterValue)\n ) as string;\n\n if (!symbolData) return SVGContainer;\n\n SVGContainer.clear();\n\n const { size, angle, background, figure } = symbol;\n\n const isUploadedFile =\n !bg &&\n !symbolData.includes('symbol-bg') &&\n !symbolData.includes('symbol-figure');\n const innerSvg = symbolData.replace(/<\\?xml[^?]*\\?>|<svg[^>]*>|<\\/svg>/g, '');\n\n if (isUploadedFile) {\n SVGContainer.svg(innerSvg);\n\n const uploadedViewBox = /viewBox=\"([^\"]+)\"/g.exec(symbolData)?.[1];\n\n if (uploadedViewBox?.[1]) {\n SVGContainer.viewbox(uploadedViewBox);\n }\n\n SVGContainer.size(size as number);\n } else {\n const hasBg = bg || innerSvg?.includes('symbol-bg');\n let defaultSize = hasBg ? DEFAULT_SYMBOL_WITH_BG_SIZE : DEFAULT_SYMBOL_SIZE;\n const currentSize = size || defaultSize;\n let viewBox = [0, 0, defaultSize, defaultSize];\n const strokeWidth =\n getParameterValue(\n (background as SvgParameterDc)?.strokeWidth as number\n ) ||\n (typeof (background as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\n\n if (strokeWidth) {\n defaultSize += strokeWidth as number;\n viewBox = [-strokeWidth / 2, -strokeWidth / 2, defaultSize, defaultSize];\n }\n\n if (hasBg) {\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\n viewBox.join(' ')\n );\n\n const currentBg = bg || (background as SvgParameterDc)?.type;\n\n if (currentBg) {\n const strokeColor = getParameterValue(\n (background as SvgParameterDc)?.strokeColor as ParameterValue\n );\n const fillColor = getParameterValue(\n (background as SvgParameterDc)?.fillColor as ParameterValue\n );\n\n SVGContainer.svg(\n currentBg === SvgSymbolBg.Circle\n ? `<circle\n id=\"symbol-bg\"\n cx=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\n cy=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\n r=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\n stroke-width=\"${strokeWidth}\"\n />`\n : `<rect\n id=\"symbol-bg\"\n width=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\n height=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\n rx=\"4\"\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\n stroke-width=\"${strokeWidth}\"\n />`\n );\n SVGContainer.svg(innerSvg);\n SVGContainer.find('#symbol-bg:not(:first-child)').each((item: any) =>\n item.remove()\n );\n SVGContainer.find(':not(#symbol-bg)').each((item: any) =>\n item\n .center(\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2,\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2\n )\n .fill('white')\n );\n\n const symbolBg = SVGContainer.find('#symbol-bg')[0];\n\n if (isClassified) {\n symbolBg?.stroke({ opacity: DEFAULT_STROKE_OPACITY });\n }\n\n // eslint-disable-next-line max-depth\n if (\n isParameterByAttribute(\n (background as SvgParameterDc)?.fillColor as ParameterValue\n )\n ) {\n symbolBg?.fill(createSvgGradient(\n SVGContainer,\n ((background as SvgParameterDc)?.fillColor as ParameterByAttribute<\n string\n >)?.values\n ));\n }\n\n if (isParameterByAttribute(\n (background as SvgParameterDc)?.strokeColor as ParameterValue\n )) {\n symbolBg?.stroke({\n color: (createSvgGradient(\n SVGContainer,\n ((background as SvgParameterDc)?.strokeColor as ParameterByAttribute<\n string\n >)?.values\n ) as unknown) as string,\n });\n }\n } else {\n SVGContainer.svg(innerSvg);\n }\n } else {\n const strokeColor = getParameterValue(\n (figure as SvgParameterDc)?.strokeColor as string\n );\n const strokeWidth = getParameterValue(\n (figure as SvgParameterDc)?.strokeWidth as number\n ) ||\n (typeof (figure as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\n const fillColor = getParameterValue(\n (figure as SvgParameterDc)?.fillColor as string\n );\n\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\n viewBox.join(' ')\n );\n SVGContainer.svg(innerSvg);\n SVGContainer.find('#symbol-figure').each(item => {\n item\n .center(DEFAULT_SYMBOL_SIZE / 2, DEFAULT_SYMBOL_SIZE / 2)\n .fill(fillColor || DEFAULT_SYMBOL_FILL_COLOR)\n .stroke({ color: strokeColor, width: strokeWidth });\n\n if (\n isParameterByAttribute(\n (figure as SvgParameterDc)?.fillColor as ParameterValue\n )\n ) {\n item?.fill(createSvgGradient(\n SVGContainer,\n ((figure as SvgParameterDc)?.fillColor as ParameterByAttribute<\n string\n >)?.values\n ));\n }\n\n if (\n isParameterByAttribute(\n (figure as SvgParameterDc)?.strokeColor as ParameterValue\n )\n ) {\n item?.stroke({\n color: (createSvgGradient(\n SVGContainer,\n ((figure as SvgParameterDc)?.strokeColor as ParameterByAttribute<\n string\n >)?.values\n ) as unknown) as string,\n });\n }\n });\n }\n }\n\n const rootTransform = /<svg[^>]*transform=\"([^\"]+)\"/g.exec(symbolData)?.[1];\n\n if (rootTransform) {\n const transformParts = rootTransform.slice(0, -1).split('(');\n\n SVGContainer.transform({\n [transformParts[0]]: transformParts[1].split(','),\n });\n }\n\n const rotatedAngle = SVGContainer.transform('rotate');\n\n if (rotatedAngle) {\n SVGContainer.rotate(-rotatedAngle, 0, 0);\n }\n if (angle !== undefined) {\n SVGContainer.rotate((angle as number) * (180 / Math.PI), 0, 0);\n }\n\n return SVGContainer;\n};\n","export const isNumeric = (number: string | number): boolean =>\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\n","import { Char, Expression, TokenType } from \"@evergis/condition\";\nimport { AttributeType } from \"@evergis/api\";\nimport { isNil } from \"lodash\";\n\nimport { DateFormat, formatDate } from \"../../utils/date\";\nimport { ComparisonOperator, FilterConditionType } from \"./types\";\nimport {\n BETWEEN_OPERATORS,\n CONTAINS_OPERATORS,\n ENDS_WITH_OPERATORS,\n OPERATOR_CONDITION_REMAP,\n STARTS_WITH_OPERATORS\n} from \"../../components\";\n\nexport const comparisonOperatorMapReversed: Record<string, ComparisonOperator> = {\n [TokenType.ArEq]: ComparisonOperator.Equals,\n [TokenType.ArNotEq]: ComparisonOperator.NotEquals,\n [TokenType.ArGr]: ComparisonOperator.GreaterThan,\n [TokenType.ArLs]: ComparisonOperator.LessThan,\n [TokenType.ArGre]: ComparisonOperator.GreaterOrEquals,\n [TokenType.ArLse]: ComparisonOperator.LessOrEquals,\n [TokenType.Between]: ComparisonOperator.Between,\n [TokenType.Outside]: ComparisonOperator.Outside,\n};\n\nexport const NUMERIC_ATTRIBUTE_TYPES: AttributeType[] = [\n AttributeType.Int32,\n AttributeType.Int64,\n AttributeType.DateTime,\n AttributeType.Double,\n];\n\nconst formatValue = (value: string | number, isDate?: boolean) => {\n return isDate\n ? `#'${formatDate(value, {\n dateFormat: DateFormat.UTC,\n defaultValue: value,\n })}'`\n : value\n ? value.toString()\n : 0;\n};\n\nexport function formatCondition(condition: FilterConditionType) {\n const { comparisonOperator, value, type, attribute } = condition;\n const operator = OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator] || comparisonOperator;\n\n const preparedValue = typeof value === \"string\" && value.includes(\" - \") ? value.split(\" - \") : value;\n const isDate = type === AttributeType.DateTime;\n const isBetweenOutside = BETWEEN_OPERATORS.includes(comparisonOperator as ComparisonOperator);\n const escapeValue = !NUMERIC_ATTRIBUTE_TYPES.includes(type as AttributeType) && preparedValue !== null;\n\n if (isBetweenOutside && Array.isArray(preparedValue) && preparedValue[0] !== undefined) {\n return `${OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator]}(${attribute}, ${formatValue(\n preparedValue[0],\n isDate,\n )}, ${formatValue(preparedValue[1], isDate)})`;\n }\n\n const formattedValue = Array.isArray(preparedValue)\n ? preparedValue.map(val => formatValue(val, isDate))\n : formatValue(preparedValue as string | number, isDate);\n\n const nulledValue = isNil(preparedValue) ? \"{null}\" : formattedValue;\n\n const valueEscaped =\n escapeValue && typeof nulledValue === \"string\"\n ? `'${Char.escapeSpecChars(addOperationToValue(nulledValue, comparisonOperator as ComparisonOperator))}'`\n : nulledValue;\n\n return `${attribute} ${operator} ${valueEscaped}`;\n}\n\nexport function createConditionString(condition: FilterConditionType) {\n if (Array.isArray(condition)) {\n return `( ${formatCondition(condition[0])} ${condition[0].operation} ${formatCondition(condition[1])} )`;\n }\n\n return formatCondition(condition);\n}\n\nexport function createCondition({ attribute, operation, value }: Expression) {\n const comparisonOperator = comparisonOperatorMapReversed[operation];\n const convertedResult = convertOperatorValue(value as string | number | boolean, comparisonOperator);\n\n return {\n attribute,\n ...convertedResult,\n } as FilterConditionType;\n}\n\nfunction convertOperatorValue(value: string | number | boolean, comparisonOperator: ComparisonOperator) {\n if (typeof value === \"string\") {\n const operatorIndex = +(comparisonOperator === ComparisonOperator.NotEquals);\n\n if (value.startsWith(Char.PERCENTAGE) && value.endsWith(Char.PERCENTAGE)) {\n return {\n value: value.slice(1, -1),\n comparisonOperator: CONTAINS_OPERATORS[operatorIndex],\n };\n }\n\n if (value.startsWith(Char.PERCENTAGE)) {\n return {\n value: value.slice(1),\n comparisonOperator: ENDS_WITH_OPERATORS[operatorIndex],\n };\n }\n\n if (value.endsWith(Char.PERCENTAGE)) {\n return {\n value: value.slice(0, -1),\n comparisonOperator: STARTS_WITH_OPERATORS[operatorIndex],\n };\n }\n }\n\n return { value, comparisonOperator };\n}\n\nconst addContains = (value: string | number) => `%${value}%`;\nconst addStartsWith = (value: string | number) => `${value}%`;\nconst addEndsWith = (value: string | number) => `%${value}`;\n\nfunction addOperationToValue(value: string, operator: ComparisonOperator) {\n switch (operator) {\n case ComparisonOperator.Contains:\n case ComparisonOperator.NotContains:\n return addContains(value);\n case ComparisonOperator.StartsWith:\n case ComparisonOperator.NotStartsWith:\n return addStartsWith(value);\n case ComparisonOperator.EndsWith:\n case ComparisonOperator.NotEndsWith:\n return addEndsWith(value);\n case ComparisonOperator.Between:\n return Char.BETWEEN;\n case ComparisonOperator.Outside:\n return Char.OUTSIDE;\n default:\n return value;\n }\n}\n","import { ConditionInterpreter, TokenType } from \"@evergis/condition\";\n\nimport { FilterConditionOperation, FilterConditionType } from \"./index\";\nimport { createCondition, createConditionString } from \"./createCondition\";\n\nexport class FilterCondition {\n private readonly conditionInterpreter: ConditionInterpreter;\n\n constructor(private condition: string | null = null) {\n this.conditionInterpreter = new ConditionInterpreter(condition as string);\n }\n\n static from(conditions: FilterConditionType[], operation: FilterConditionOperation) {\n const condition = conditions?.map(createConditionString).join(` ${operation} `) || null;\n\n return new FilterCondition(condition);\n }\n\n get conditions(): FilterConditionType[] {\n const { value } = this.conditionInterpreter;\n\n if (value instanceof Error) {\n // TODO handle errors in client notifications\n console.warn(value.message);\n }\n\n return value instanceof Error ? [] : value.expressions.map(createCondition);\n }\n\n get conditionOperation() {\n const { value } = this.conditionInterpreter;\n\n if (value instanceof Error) {\n return null;\n }\n\n const isOrCondition = value.boolOperations.includes(TokenType.BoolOr);\n const isAndCondition = value.boolOperations.includes(TokenType.BoolAnd);\n\n if (isOrCondition && isAndCondition) {\n return null;\n }\n\n return isOrCondition ? FilterConditionOperation.OR : isAndCondition ? FilterConditionOperation.AND : null;\n }\n\n public isParsingError() {\n return this.conditionInterpreter.value instanceof Error;\n }\n\n public toString() {\n return this.condition;\n }\n}\n","/* eslint-disable max-lines */\nimport get from 'lodash/get';\nimport { H3Symbol } from '@evergis/sgis/es/symbols/H3Symbol';\nimport { ClusterSymbol } from '@evergis/sgis/es/symbols/ClusterSymbol';\nimport {\n AttributeType,\n FeatureLayerServiceInfoDc,\n ParameterDcColor,\n ServiceInfoDc,\n SimplePolylineSymbolDc,\n StyleDc,\n SvgParameterDc,\n} from '@evergis/api';\n\nimport {\n ClassifyParameter,\n DEFAULT_LEGEND_SYMBOL_SIZE,\n DEFAULT_PARAMETER_INFO,\n EXTRA_BORDER_SIZE,\n LegendProps,\n LegendSectionItem,\n PARAMETER_INFOS,\n ParameterInfo,\n SvgSymbolBg,\n SYMBOL_CLASSIFICATION,\n} from '../components';\nimport { i18n } from \"../i18n\";\nimport { formatDate } from './date';\nimport {\n ClassificationClass,\n ClassificationCondition,\n ClassificationParameter,\n ClassificationParameterExtended,\n ClassifyAble,\n ComparisonOperator,\n FilterConditionOperation,\n getParameterValue,\n ImageSymbol,\n isClusterSymbol,\n isCombinedPolylineSymbol,\n isH3GridSymbol,\n isMaskedImageSymbol,\n isParameterValueSymbol,\n isPolygonSymbol,\n isPolylineSymbols,\n isRangeClass,\n isSizableSymbol,\n isSvgPointSymbol,\n isTwoDimensionalSymbol,\n isUniqueClass,\n LabelType,\n LayerAttribute,\n LegendValueType,\n MaskedImageSymbol,\n ParameterByAttribute,\n ParameterByAttributeValue,\n ParameterValue,\n ParameterValueWithSymbol,\n PointSymbol,\n PointSymbolType,\n PolygonSymbol,\n PolylineSymbol,\n RangeClass,\n SquareSymbol,\n StyleSymbolType,\n SvgPointSymbol,\n symbolParameterWalker,\n UniqueClass,\n} from '../core';\nimport { isNumeric } from './isNumeric';\nimport { isObject } from './isObject';\nimport { createConditionString } from '../core/legend/createCondition';\nimport { FilterCondition } from '../core/legend/FilterCondition';\n\nexport const isLayerService = (\n value?: unknown\n): value is ServiceInfoDc => isObject(value) && 'name' in value;\n\nexport const getAttributeFromCondition = (condition: string): string => {\n const parts = condition.split(' ');\n\n return parts[0].startsWith('(') ? parts[0].slice(1) : parts[0];\n};\n\nexport const getExprFromCondition = (\n condition: string,\n partIndex?: number\n): string[] => {\n let expr;\n\n if (partIndex) {\n const parts = condition.split(' && ').map(part => part.slice(1, -1));\n\n expr = parts[partIndex - 1];\n } else {\n expr = condition;\n }\n\n return expr?.split(' ');\n};\n\nexport const getSignFromConditionPart = (\n condition: string,\n partIndex?: number\n): string => {\n return getExprFromCondition(condition, partIndex)?.[1];\n};\n\nexport const getValueFromConditionPart = (\n condition: string,\n partIndex?: number\n): string => {\n return getExprFromCondition(condition, partIndex)?.[2];\n};\n\nexport const isRangeCondition = (condition?: string): boolean =>\n condition?.includes('(') || false;\n\nexport const getSymbolParameterInfo = (\n parameter: ClassificationParameter\n): ParameterInfo => {\n return PARAMETER_INFOS[parameter] || DEFAULT_PARAMETER_INFO;\n};\n\nexport const formatUniqueClassValue = (\n value: UniqueClass,\n formatValue?: LegendProps['formatValue']\n): string => {\n const { attribute, uniqueValue } = value;\n\n return attribute && formatValue\n ? (formatValue(\n attribute.type,\n uniqueValue,\n attribute.stringFormat\n ) as string)\n : uniqueValue;\n};\n\nexport const getRangeValues = (\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\n isDouble: boolean,\n isDate: boolean,\n index: number\n): Pick<RangeClass, 'from' | 'to'> => {\n return {\n from:\n from !== null && index !== 0\n ? isDate\n ? from\n : isDouble\n ? +from\n : +from + 1\n : from,\n to,\n };\n};\n\nexport const formatRangeClassValue = (\n value: RangeClass,\n formatValue: LegendProps['formatValue'],\n index: number\n): string => {\n const isDouble = value.attribute?.type === 'Double';\n const isDate = value.attribute?.type === 'DateTime';\n\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\n\n const formattedFrom = formatValue\n ? formatValue(\n value.attribute?.type as AttributeType,\n from as string | number | Date,\n value.attribute?.stringFormat\n )\n : from;\n const formattedTo = formatValue\n ? formatValue(\n value.attribute?.type as AttributeType,\n to as string | number | Date,\n value.attribute?.stringFormat\n )\n : to;\n\n if (from === null) {\n return `${formattedTo}${!isDate ? ` ${i18n.t(\"andLess\", { ns: \"style\" })}` : ''}`;\n }\n\n if (to === null) {\n return `${!isDate ? `${i18n.t(\"more\", { ns: \"style\" })} ` : ''}${formattedFrom}`;\n }\n\n return from === to ? `${formattedFrom}` : `${formattedFrom} - ${formattedTo}`;\n};\n\nexport const checkLayerHasLegend = (\n layerInfo: Pick<FeatureLayerServiceInfoDc, 'geometryType' | 'style'>\n): boolean => {\n return (\n SYMBOL_CLASSIFICATION[layerInfo.geometryType]?.some(param => {\n const paramValue = (get(\n layerInfo.style?.symbol,\n param\n ) as unknown) as ParameterByAttribute<ParameterValue>;\n\n return paramValue?.type === 'byAttribute';\n }) || false\n );\n};\n\nexport const getTitleFromCondition = ({\n condition,\n attribute,\n formatValue,\n}: {\n condition?: string;\n attribute?: LayerAttribute | null;\n formatValue?: LegendProps['formatValue'];\n}): string => {\n const parts = condition?.split(' == ');\n const uniqueValue = parts?.[1] ? (parts[1].startsWith(\"'\") && parts[1].endsWith(\"'\") ? parts[1].slice(1, -1) : parts[1]) : '';\n\n return attribute && formatValue\n ? formatValue(attribute.type, uniqueValue, attribute.stringFormat)\n : uniqueValue;\n};\n\nexport function createValueTitleFromCondition(\n paramValue: ParameterByAttributeValue<ParameterValueWithSymbol>,\n attribute: LayerAttribute | null,\n formatValue: LegendProps['formatValue'],\n index: number\n): string {\n if (!attribute) return '';\n\n if (paramValue.title) return paramValue.title;\n\n const value = {\n parameterValue: getParameterValue(paramValue.value),\n attribute,\n } as ClassificationClass;\n\n const sign = getSignFromConditionPart(paramValue.condition, 1);\n const isFirstFrom = sign.includes('>');\n\n (value as RangeClass).from = isFirstFrom\n ? getValueFromConditionPart(paramValue.condition, 1)\n : null;\n (value as RangeClass).to =\n paramValue.condition.includes(' && ') && isFirstFrom\n ? getValueFromConditionPart(paramValue.condition, 2)\n : !isFirstFrom\n ? getValueFromConditionPart(paramValue.condition, 1)\n : null;\n\n if (isRangeClass(value))\n return formatRangeClassValue(value as RangeClass, formatValue, index);\n if (isUniqueClass(value))\n return formatUniqueClassValue(value as UniqueClass, formatValue);\n\n return '';\n}\n\ntype SymbolCreator<T> = (\n baseSymbol: T,\n parameter: ClassificationParameterExtended,\n classificationsParams: ClassificationParameterExtended[],\n parameterValue: ParameterValue\n) => T;\n\nexport const enum LegendSymbolTypes {\n Point,\n ImagePoint,\n Line,\n Polygon,\n}\n\ntype LegendSymbolsMap = {\n [LegendSymbolTypes.Point]: PointSymbolType;\n [LegendSymbolTypes.ImagePoint]: MaskedImageSymbol;\n [LegendSymbolTypes.Line]: PolylineSymbol;\n [LegendSymbolTypes.Polygon]: PolygonSymbol;\n};\n\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 ->\n// пункт \"Настраиваемые значения параметров символики в системе\"\n// Для добавления подготовленных значений размеров символов нужно использовать константу PREPARED_SYMBOL_SIZES\nexport const DEFAULT_LEGEND_STYLES: LegendSymbolsMap = {\n [LegendSymbolTypes.Point]: {\n fillColor: '#00000047',\n strokeWidth: 1,\n strokeColor: '#0000001f',\n },\n [LegendSymbolTypes.ImagePoint]: {\n maskedColor: '#00000047',\n },\n [LegendSymbolTypes.Line]: {\n stroke: {\n width: 2,\n color: '#00000047',\n },\n },\n [LegendSymbolTypes.Polygon]: {\n fill: {\n color: '#00000000',\n hatchColor: '#00000000',\n },\n stroke: {\n width: 1,\n color: '#0000001f',\n },\n },\n};\n\nexport const SYMBOL_SIZE_PARAMETERS = ['size', 'width', 'height'];\n\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 -> пункт \"Библиотека символов\"\nexport const DEFAULT_LEGEND_SIZES: Record<string, number> = {\n circlePointSymbol: 8,\n squarePointSymbol: 12,\n imagePointSymbol: 24,\n maskedImagePointSymbol: 24,\n svgPointSymbol: 24,\n};\n\nconst getNonClassifiedParamValue = <S extends StyleSymbolType>(\n baseSymbol: S,\n parameter: ClassificationParameterExtended,\n classificationsParams: ClassificationParameterExtended[],\n type: LegendSymbolTypes\n) => {\n if (classificationsParams.includes(parameter)) {\n const defaultParameterValue = getParameterFromSymbol(\n DEFAULT_LEGEND_STYLES[type],\n parameter\n );\n\n if (defaultParameterValue) {\n return defaultParameterValue;\n }\n if (\n SYMBOL_SIZE_PARAMETERS.includes(parameter) &&\n DEFAULT_LEGEND_SIZES[baseSymbol.type as string]\n ) {\n return DEFAULT_LEGEND_SIZES[baseSymbol.type as string];\n }\n }\n\n return getParameterValue(getParameterFromSymbol(baseSymbol, parameter));\n};\n\nexport const updateSymbolParameter = <S extends StyleSymbolType | LabelType>(\n symbol: S,\n path: string,\n value: ClassifyAble<ParameterValue>\n): S =>\n symbolParameterWalker(() => value)(\n symbol,\n path as ClassificationParameterExtended | ClassificationParameterExtended[]\n );\n\nconst createPointSymbol: SymbolCreator<PointSymbol | SquareSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): PointSymbol | SquareSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n fillColor: getNonClassifiedParamValue(\n baseSymbol,\n 'fillColor',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n strokeColor: getNonClassifiedParamValue(\n baseSymbol,\n 'strokeColor',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n strokeWidth: getNonClassifiedParamValue(\n baseSymbol,\n 'strokeWidth',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n size: getNonClassifiedParamValue(\n baseSymbol,\n 'size',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n offset: [0, 0],\n },\n parameter,\n parameterValue\n ) as PointSymbol | SquareSymbol;\n};\n\ntype Dimensions = {\n height: number;\n width: number;\n};\n\nexport function getDimensions(symbol: ImageSymbol, size: number): Dimensions {\n const height = getParameterValue(symbol.height as ParameterValue) as number;\n const width = getParameterValue(symbol.width as ParameterValue) as number;\n\n if (width === height) {\n return {\n width: size,\n height: size,\n };\n }\n\n const ratio = height / width;\n\n if (width < height) {\n return {\n width: size,\n height: height + (size - width) * ratio,\n };\n }\n\n return {\n width: width + (size - height) * ratio,\n height: size,\n };\n}\n\nconst createImagePointSymbol: SymbolCreator<ImageSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): ImageSymbol => {\n let symbol = { ...baseSymbol };\n\n if (isMaskedImageSymbol(symbol)) {\n symbol.maskedColor = getNonClassifiedParamValue(\n baseSymbol,\n 'maskedColor',\n classificationsParams,\n LegendSymbolTypes.ImagePoint\n ) as ClassifyAble<string>;\n }\n\n if (parameter === 'height' || parameter === 'width') {\n const { height, width } = getDimensions(\n baseSymbol,\n parameterValue as number\n );\n\n symbol.height = height;\n symbol.width = width;\n } else {\n symbol.width = getNonClassifiedParamValue(\n baseSymbol,\n 'width',\n classificationsParams,\n LegendSymbolTypes.ImagePoint\n ) as number;\n symbol.height = symbol.width;\n\n symbol = updateSymbolParameter(symbol, parameter, parameterValue);\n }\n\n symbol.offset = [\n (getParameterValue(symbol.height as ClassifyAble<number>) as number) / 2,\n (getParameterValue(symbol.width as ClassifyAble<number>) as number) / 2,\n ];\n\n return symbol;\n};\n\nconst createLineSymbol: SymbolCreator<PolylineSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): PolylineSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n type: 'polylineSymbol',\n stroke: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.color',\n classificationsParams,\n LegendSymbolTypes.Line\n ),\n width: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.width',\n classificationsParams,\n LegendSymbolTypes.Line\n ),\n },\n },\n parameter,\n parameterValue\n ) as PolylineSymbol;\n};\n\nconst createPolygonSymbol: SymbolCreator<PolygonSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): PolygonSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n fill: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'fill.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n hatchColor: getNonClassifiedParamValue(\n baseSymbol,\n 'fill.hatchColor',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n stroke: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n width: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.width',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n },\n parameter,\n parameterValue\n ) as PolygonSymbol;\n};\n\nconst createH3Symbol: SymbolCreator<H3Symbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): H3Symbol => {\n return (updateSymbolParameter(\n {\n ...baseSymbol,\n fill: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'fill.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n stroke: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n width: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.width',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n },\n parameter,\n parameterValue\n ) as unknown) as H3Symbol;\n};\n\nconst createClusterSymbol: SymbolCreator<ClusterSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): ClusterSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n fillColor: getNonClassifiedParamValue(\n baseSymbol,\n 'fillColor',\n classificationsParams,\n LegendSymbolTypes.Point\n ) as ParameterDcColor,\n } as StyleSymbolType,\n parameter,\n parameterValue\n ) as ClusterSymbol;\n};\n\nexport const createLegendSymbol = (\n parameterValue: ParameterValueWithSymbol,\n parameter: ClassificationParameterExtended,\n classificationsParams: ClassificationParameterExtended[],\n baseSymbol: StyleSymbolType\n): StyleSymbolType | null => {\n if (isParameterValueSymbol(parameterValue)) {\n return parameterValue;\n }\n\n if (isClusterSymbol(baseSymbol)) {\n return createClusterSymbol(\n baseSymbol as ClusterSymbol,\n parameter,\n classificationsParams,\n parameterValue\n );\n }\n\n if (isSizableSymbol(baseSymbol)) {\n return createPointSymbol(\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isTwoDimensionalSymbol(baseSymbol)) {\n return createImagePointSymbol(\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isPolylineSymbols(baseSymbol)) {\n return createLineSymbol(\n baseSymbol as PolylineSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isPolygonSymbol(baseSymbol)) {\n return createPolygonSymbol(\n baseSymbol as PolygonSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isH3GridSymbol(baseSymbol)) {\n return createH3Symbol(\n baseSymbol as H3Symbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n return null;\n};\n\nexport function createHiddenCondition(\n attributeName: string,\n attributeType: AttributeType,\n value: ClassificationClass\n) {\n let newValue;\n let comparisonOperator;\n\n if (isRangeClass(value)) {\n if (value.from && value.to) {\n newValue = [value.from as string, value.to as string];\n comparisonOperator = ComparisonOperator.Outside;\n } else if (value.from) {\n newValue = value.from;\n comparisonOperator = ComparisonOperator.LessThan;\n } else if (value.to) {\n newValue = value.to;\n comparisonOperator = ComparisonOperator.GreaterThan;\n }\n } else {\n newValue = value.uniqueValue || value.title;\n comparisonOperator = ComparisonOperator.NotEquals;\n }\n\n return new FilterCondition(\n createConditionString({\n attribute: attributeName,\n type: attributeType,\n comparisonOperator: comparisonOperator as ComparisonOperator,\n value: newValue as string,\n })\n ).toString();\n}\n\nexport const createOtherHiddenCondition = (\n values: ClassificationClass[],\n attributeName: string,\n attributeType: AttributeType\n) => {\n const value = values[values.length - 1];\n let hiddenCondition;\n\n if (isRangeClass(value)) {\n hiddenCondition = new FilterCondition(\n createConditionString({\n attribute: attributeName,\n type: attributeType,\n comparisonOperator: ComparisonOperator.LessOrEquals,\n value: (value as RangeClass).to || (value as RangeClass).from,\n })\n ).toString();\n } else {\n const conditions = values.map(val =>\n new FilterCondition(\n createConditionString({\n attribute: attributeName,\n type: attributeType,\n comparisonOperator: ComparisonOperator.Equals,\n value: (val as UniqueClass).uniqueValue,\n })\n ).toString()\n );\n\n hiddenCondition = `( ${conditions\n .filter(Boolean)\n .join(` ${FilterConditionOperation.OR} `)} )`;\n }\n\n return hiddenCondition;\n};\n\nexport const getMinimizedLegendValues = (\n attribute: LayerAttribute,\n classified: ParameterByAttribute<ParameterValueWithSymbol>,\n formatValue: LegendProps['formatValue'],\n index: number,\n otherTitle: string\n): LegendValueType[] => {\n const other = {\n title: otherTitle,\n parameterValue: classified.defaultValue,\n hiddenCondition: createOtherHiddenCondition(\n classified.values.map(val =>\n getClassificationValue(\n val.value,\n otherTitle,\n new ClassificationCondition(val.condition)\n )\n ),\n attribute.name as string,\n attribute.type\n ),\n } as LegendValueType;\n\n const items = classified.values.map(paramValue => {\n const parameterValue = getParameterValue(paramValue.value);\n const result = { parameterValue, attribute } as Partial<LegendValueType>;\n\n if (isRangeCondition(paramValue.condition)) {\n const from = getValueFromConditionPart(paramValue.condition, 1);\n const to = getValueFromConditionPart(paramValue.condition, 2);\n\n (result as RangeClass).from = from\n ? isNumeric(from)\n ? +from\n : formatDate(from)\n : null;\n (result as RangeClass).to = to\n ? isNumeric(to)\n ? +to\n : formatDate(to)\n : null;\n\n result.title = createValueTitleFromCondition(\n paramValue,\n attribute,\n formatValue,\n index\n );\n\n return result;\n }\n\n (result as UniqueClass).uniqueValue = formatValue\n ? (formatValue(\n attribute.type,\n paramValue.value,\n attribute.stringFormat\n ) as string)\n : paramValue.value.toString();\n result.title = getTitleFromCondition({ condition: paramValue.condition });\n result.hiddenCondition = createHiddenCondition(\n attribute.name as string,\n attribute.type,\n getClassificationValue(\n paramValue.value,\n result.title,\n new ClassificationCondition(paramValue.condition)\n )\n ) as string;\n\n return result;\n }) as LegendValueType[];\n\n return [...items, other] as LegendValueType[];\n};\n\nexport const getMaximizedLegendValues = (\n attribute: LayerAttribute,\n param: ClassificationParameterExtended,\n params: ClassificationParameterExtended[],\n classified: ParameterByAttribute<ParameterValueWithSymbol>,\n symbol: StyleDc['symbol'],\n formatValue: LegendProps['formatValue'],\n sectionIndex: number,\n otherTitle: string\n): LegendSectionItem[] => {\n const other = {\n title: otherTitle,\n symbol: createLegendSymbol(\n classified.defaultValue,\n param,\n params,\n symbol as StyleSymbolType\n ),\n hiddenCondition: createOtherHiddenCondition(\n classified.values.map(val =>\n getClassificationValue(\n val.value,\n otherTitle,\n new ClassificationCondition(val.condition)\n )\n ),\n attribute.name as string,\n attribute.type\n ),\n };\n\n const items = classified.values.map((paramValue, index) => {\n const result = {\n symbol: createLegendSymbol(\n paramValue.value,\n param,\n params,\n symbol as StyleSymbolType\n ),\n } as LegendSectionItem;\n\n result.title = isRangeCondition(paramValue.condition)\n ? createValueTitleFromCondition(\n paramValue,\n attribute,\n formatValue,\n sectionIndex\n )\n : getTitleFromCondition({ condition: paramValue.condition });\n\n result.hiddenCondition = createHiddenCondition(\n attribute.name as string,\n attribute.type,\n getClassificationValue(\n paramValue.value,\n result.title,\n new ClassificationCondition(classified.values[index].condition)\n )\n ) as string;\n\n return result;\n });\n\n return [...items, other] as LegendSectionItem[];\n};\n\nexport type ClassifiedListItem = ParameterByAttribute<ParameterValueWithSymbol> & { index?: number };\n\nexport type ClassifiedList = Partial<Record<ClassifyParameter, ClassifiedListItem>>;\n\nexport const classifyParamsReduce = (\n symbol?: StyleSymbolType,\n classifyParams?: ClassifyParameter[],\n index?: number,\n): undefined | ClassifiedList => {\n return classifyParams?.reduce((result, classified) => {\n const param = (get(\n symbol,\n classified\n ) as unknown) as ParameterByAttribute<ParameterValue>;\n\n return param?.type === 'byAttribute' ? { ...result, [classified]: { index, ...param } } : result;\n }, {} as ClassifiedList);\n}\n\nexport const getClassified = (\n layerInfo: FeatureLayerServiceInfoDc\n): ClassifiedList | undefined => {\n if (!layerInfo) return undefined;\n\n if (layerInfo.style?.children?.length) {\n return {\n symbol: {\n type: 'byAttribute',\n defaultValue: layerInfo.style.symbol as StyleSymbolType,\n title: null,\n values: layerInfo.style?.children as ParameterByAttributeValue<\n ParameterValueWithSymbol\n >[],\n },\n };\n }\n\n const classifyParams = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\n\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\n if (!layerInfo.style.symbol.values?.length) return undefined;\n\n return layerInfo.style.symbol.values.reduce((result: ClassifiedList, polyline: SimplePolylineSymbolDc, index) => {\n return { ...result, ...classifyParamsReduce(polyline, classifyParams, index) };\n }, {} as ClassifiedList);\n }\n\n return classifyParamsReduce(layerInfo.style?.symbol, classifyParams);\n};\n\nexport const getSymbolStrokeWidth = (symbol: PointSymbolType): number => {\n return isSvgPointSymbol(symbol)\n ? ((symbol.background as SvgParameterDc)?.strokeWidth as number)\n : ((symbol as PointSymbol).strokeWidth as number);\n};\n\nexport const getParameterFromSymbol = <R extends ClassifyAble<ParameterValue>>(\n symbol: StyleSymbolType | LabelType,\n parameter: ClassificationParameterExtended\n): R => {\n let parameterFromSymbol = {};\n\n symbolParameterWalker((parameterValue: ClassifyAble<ParameterValue>) => {\n parameterFromSymbol = parameterValue;\n })(symbol, parameter);\n\n return parameterFromSymbol as R;\n};\n\nexport const getLegendSymbolSize = (symbol: StyleSymbolType): number => {\n let size = 0;\n\n if (isSvgPointSymbol(symbol)) {\n size = getParameterValue(symbol.size as ClassifyAble<number>);\n }\n\n if (isH3GridSymbol(symbol)) {\n size = getParameterValue(symbol.cellSize as ClassifyAble<number>);\n }\n\n if (isTwoDimensionalSymbol(symbol)) {\n size = Math.max(\n getParameterValue(symbol.width as ClassifyAble<number>),\n getParameterValue(symbol.height as ClassifyAble<number>)\n );\n }\n\n if (isSizableSymbol(symbol)) {\n const strokeWidth = getSymbolStrokeWidth(symbol);\n\n size =\n getParameterValue(symbol.size as ClassifyAble<number>) +\n (strokeWidth ? getParameterValue(strokeWidth) + EXTRA_BORDER_SIZE : 0);\n }\n\n if (isPolylineSymbols(symbol)) {\n size = getParameterValue(\n getParameterFromSymbol(symbol, 'stroke.width')\n ) as number;\n }\n\n return Math.max(DEFAULT_LEGEND_SYMBOL_SIZE, size);\n};\n\nexport const serializeSvgPointSymbol = (symbol: SvgPointSymbol) => {\n if (!symbol) return null;\n\n const figureFillColor =\n ((symbol.figure as SvgParameterDc)?.fillColor as string) || null;\n const bgFillColor =\n ((symbol.background as SvgParameterDc)?.fillColor as string) || null;\n\n return {\n type: 'svgPointSymbol',\n size: symbol.size,\n offset: symbol.offset,\n angle: symbol.angle,\n ...(bgFillColor\n ? {\n background: {\n id: 'symbol-bg',\n fillColor: bgFillColor,\n strokeColor:\n ((symbol.background as SvgParameterDc)?.strokeColor as string) ||\n null,\n strokeWidth:\n (symbol.background as SvgParameterDc)?.strokeWidth || null,\n type:\n (symbol.background as SvgParameterDc)?.type || SvgSymbolBg.Circle,\n },\n }\n : {}),\n ...(figureFillColor\n ? {\n figure: {\n id: 'symbol-figure',\n fillColor: figureFillColor,\n strokeColor:\n ((symbol.figure as SvgParameterDc)?.strokeColor as string) ||\n null,\n strokeWidth:\n (symbol.figure as SvgParameterDc)?.strokeWidth || null, },\n }\n : {}),\n };\n};\n\nconst SIZE_PARAMETERS = ['size', 'height', 'strokeWidth', 'stroke.width'];\n\nexport const isSizeClassification = (parameter: string): boolean =>\n SIZE_PARAMETERS.includes(parameter);\n\nexport const getServiceConfiguration = (\n layer?: ServiceInfoDc\n): ServiceInfoDc['configuration'] => {\n const emptyServiceConfiguration: ServiceInfoDc['configuration'] = {\n name: '',\n };\n\n if (!isLayerService(layer) || !('configuration' in layer))\n return emptyServiceConfiguration;\n\n return {\n ...emptyServiceConfiguration,\n ...(layer.configuration || {}),\n };\n};\n\n/** default attribute name which use for geometry info */\nexport const GEOMETRY_ATTRIBUTE = 'geometry';\n\n/** default attribute name which contains unique id info */\nexport const DEFAULT_ID_ATTRIBUTE_NAME = 'gid';\n\nexport const getClassificationValue = (\n parameterValue: ParameterValueWithSymbol,\n title: string,\n condition: ClassificationCondition\n): ClassificationClass => ({\n parameterValue,\n title,\n ...(condition.isUnique()\n ? {\n uniqueValue: condition.uniqueValue,\n }\n : {\n from: condition.range[0],\n to: condition.range[1],\n }),\n});\n","import { Color } from '@evergis/color';\n\nexport const getHexColor = (colorString: string): string | undefined =>\n colorString ? new Color(colorString).toString('hex') : undefined;\n","// TODO reduce\nexport const PREVIEW_LIMITS = {\n STROKE_WIDTH_MIN: 0.25,\n STROKE_WIDTH_MAX: 6.5,\n};\n","export function clamp(num: number, min: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\nimport { unique } from '@evergis/api';\n\nimport { PREVIEW_LIMITS } from './previewLimits';\n\nimport { getParameterValue } from '../core/classification';\n\nimport { ClassifyAble, StrokeBrushType } from '../core/style';\n\nimport { clamp } from '../utils/math';\n\n// TODO refactoring\nexport const enum StrokeStyle {\n Solid,\n Dash,\n Dot,\n DashDot,\n DashDotDot,\n Custom,\n}\n\ninterface StrokeStylePreset {\n style: StrokeStyle;\n type: StrokeBrushType['type'];\n intervals: number[];\n}\nexport const SOLID_INTERVALS: number[] = [];\n\nexport const solidStrokeStylePreset: StrokeStylePreset = {\n style: StrokeStyle.Solid,\n type: 'solid',\n intervals: SOLID_INTERVALS,\n};\nexport const strokeStylePresets: StrokeStylePreset[] = [\n solidStrokeStylePreset,\n {\n style: StrokeStyle.Dot,\n type: 'dashed',\n intervals: [2, 2],\n },\n {\n style: StrokeStyle.Dash,\n type: 'dashed',\n intervals: [3, 3, 3, 3],\n },\n {\n style: StrokeStyle.DashDot,\n type: 'dashed',\n intervals: [5, 2, 1, 2],\n },\n {\n style: StrokeStyle.DashDotDot,\n type: 'dashed',\n intervals: [5, 2, 1, 1, 1, 2],\n },\n {\n style: StrokeStyle.Custom,\n type: 'dashed',\n intervals: [5, 4],\n },\n];\n\nconst walkByNumbersGroup = (\n numbers: number[],\n offset: number,\n walker: (group: [number, number], offset: number) => [number, number]\n): number[] => {\n if (!numbers || !numbers.length) return [];\n\n const newNumbers = [];\n\n for (let i = 0; i < numbers.length; i++) {\n if (i % 2) {\n newNumbers.push(...walker([numbers[i - 1], numbers[i]], offset));\n }\n }\n\n return newNumbers;\n};\n\nexport const toIntervals = (numbers: number[], width: ClassifyAble<number>) =>\n walkByNumbersGroup(\n numbers,\n clamp(\n getParameterValue(width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n ([length, gap], offset) => [length * offset, gap * offset]\n );\n\nexport const toLineDash = (numbers: number[], width: ClassifyAble<number>) =>\n walkByNumbersGroup(\n numbers,\n clamp(\n getParameterValue(width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n ([length, gap], offset) => [\n Math.round(length / Math.max(1, Math.min(offset, 16) / 4)),\n Math.round(gap + 1 + Math.max(1, Math.min(offset, 16) / 2)),\n ]\n );\n\nexport const getLineDash = (brush: StrokeBrushType): number[] => {\n if (!brush || brush.type === 'solid') return [];\n\n // @ts-ignore\n return toLineDash(brush.intervals, brush.width);\n};\n\nexport const defineStrokeStylePreset = (intervals: number[]) => {\n if (!intervals.length) return solidStrokeStylePreset;\n\n return strokeStylePresets.find(preset => {\n if (preset.intervals.length !== intervals.length) return false;\n\n const uniqueStrokeWidths = preset.intervals\n .map((presetInterval, i) => intervals[i] / presetInterval)\n .filter(unique);\n\n return uniqueStrokeWidths.length === 1;\n });\n};\n\nexport const getDashStylePreset = (\n dashStyle: StrokeStyle\n): StrokeStylePreset | undefined =>\n strokeStylePresets.find(preset => preset.style === dashStyle);\n","import { BrushFill as sBrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\nimport { Color } from '@evergis/color';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport {\n FillBrushType,\n HatchBrush,\n isHatchBrush,\n PolygonSymbol,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nconst ALPHA_NORMALIZER = 65025;\n\nconst sum = (numbers: number[]) =>\n numbers.reduce((result, num) => result + num, 0);\n\nconst shouldFillMatrixCell = (\n matrixSize: number,\n hatchAngle: number,\n x: number,\n y: number\n) => {\n const center = Math.round(matrixSize / 2);\n\n if ((hatchAngle === 0 || hatchAngle === Math.PI) && x === center) {\n return true;\n }\n if (hatchAngle === Math.PI / 4 && y === x) {\n return true;\n }\n if (hatchAngle === Math.PI / 2 && y === center) {\n return true;\n }\n\n return hatchAngle === (3 * Math.PI) / 4 && matrixSize - 1 - y === x;\n};\n\nconst createEmptyMatrix = (size: number): number[][] =>\n Array(size)\n .fill(null)\n .map(() => Array(size));\n\nconst fillMatrix = (\n matrix: number[][],\n filler: (x: number, y: number, size: number) => number\n) => {\n const matrixSize = matrix.length;\n\n for (let x = 0; x < matrixSize; x++) {\n for (let y = 0; y < matrixSize; y++) {\n matrix[x][y] = filler(x, y, matrixSize);\n }\n }\n};\n\nconst createFillBrushMatrix = (\n hatchAngle: number,\n hatchWidth: number,\n scalingFactor: number[]\n) => {\n const matrixSize = Math.max(\n Math.round(sum([Math.max(...scalingFactor), hatchWidth])),\n hatchWidth\n );\n const matrix = createEmptyMatrix(matrixSize);\n\n fillMatrix(matrix, (x, y, size) =>\n shouldFillMatrixCell(size, hatchAngle, x, y) ? 255 : 0\n );\n\n return matrix;\n};\n\nconst createSymbolFillBrush = (\n fillBrush: FillBrushType\n): number[][] | undefined => {\n if (fillBrush.type !== 'hatch') return undefined;\n\n return createFillBrushMatrix(\n // @ts-ignore\n getParameterValue(fillBrush.hatchAngle),\n // @ts-ignore\n Math.round(fillBrush.hatchWidth),\n fillBrush.scalingFactor\n );\n};\n\nexport class SGisBrushFill extends sBrushFill {\n constructor(public originalSymbol: PolygonSymbol<HatchBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n fillBackground: getHexColor(\n // @ts-ignore\n getParameterValue(originalSymbol.fill?.color)\n ),\n fillForeground: isHatchBrush(originalSymbol.fill)\n ? // @ts-ignore\n getHexColor(getParameterValue(originalSymbol.fill?.hatchColor))\n : void 0,\n fillBrush: createSymbolFillBrush(originalSymbol.fill),\n lineCap: 'square',\n });\n }\n\n _updateBrush() {\n // @ts-ignore\n if (!this._initialized) return;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return;\n }\n\n const brush = this.fillBrush;\n const brushSize = brush.length;\n const foreground = new Color(this.fillForeground);\n const background = new Color(this.fillBackground);\n\n canvas.height = brushSize;\n canvas.width = brushSize;\n for (let i = 0; i < brushSize; i++) {\n // eslint-disable-next-line id-length\n for (let j = 0; j < brush[i].length; j++) {\n const srcA = (brush[i][j] * foreground.a) / ALPHA_NORMALIZER;\n const dstA = (background.a / 255) * (1 - srcA);\n const alpha = +Math.min(1, srcA + dstA).toFixed(2);\n const red = Math.round(\n Math.min(255, background.r * dstA + foreground.r * srcA)\n );\n const green = Math.round(\n Math.min(255, background.g * dstA + foreground.g * srcA)\n );\n const blue = Math.round(\n Math.min(255, background.b * dstA + foreground.b * srcA)\n );\n\n ctx.fillStyle = `rgba(${red},${green},${blue},${alpha})`;\n ctx.fillRect(j, i, 1, 1);\n }\n }\n this._brush = new Image();\n this._brush.src = canvas.toDataURL();\n }\n\n clone() {\n return new SGisBrushFill(this.originalSymbol);\n }\n}\n","import { ImageFill as sImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PatternBrush, PolygonSymbol } from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisImageFill extends sImageFill {\n constructor(public originalSymbol: PolygonSymbol<PatternBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n src: `data:image/png;base64,${originalSymbol.fill.pattern}`,\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisImageFill(this.originalSymbol);\n }\n}\n","import { PolygonSymbol as sPolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PolygonSymbol } from '../../core/style/types';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisPolygonSymbol extends sPolygonSymbol {\n constructor(public originalSymbol: PolygonSymbol) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n fillColor: getHexColor(getParameterValue(originalSymbol.fill?.color)),\n // TODO?: may be it should be defined by user\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisPolygonSymbol(this.originalSymbol);\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { projectRings } from '@evergis/sgis/es/geotools';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\n\nimport { LineMiterSize } from '../../core/style/types';\n\nexport type MiterPosition = 'left' | 'right';\n\nexport interface LineMiterRenderBaseInfo {\n position: MiterPosition;\n color: string;\n strokeWidth: number;\n kind: LineEndingType;\n size: LineMiterSize;\n}\n\nconst adaptMiterRings = (\n rings: Coordinates[][],\n resolution: number,\n fromCrs: Crs,\n toCrs: Crs\n) => {\n const projected = projectRings(rings, fromCrs, toCrs);\n\n return simplifyCoordinates(\n projected.map(ring =>\n // @ts-ignore\n ring.map(([x, y]) => [x / resolution, y / -resolution])\n ),\n 1\n );\n};\n\nconst miterSizeCalcs: Record<LineMiterSize, (strokeWidth: number) => number> = {\n [LineMiterSize.Small]: strokeWidth => (strokeWidth + 1) * 3 + 1,\n [LineMiterSize.Large]: strokeWidth => (strokeWidth + 1) * 5 - 1,\n};\n\nexport abstract class LineMiterRender implements LineMiterRenderBaseInfo {\n // @ts-ignore\n position: MiterPosition;\n // @ts-ignore\n color: string;\n // @ts-ignore\n strokeWidth: number;\n // @ts-ignore\n kind: LineEndingType;\n // @ts-ignore\n size: LineMiterSize;\n\n constructor(baseInfo: LineMiterRenderBaseInfo) {\n Object.assign(this, baseInfo);\n }\n\n getAnchor = (rings: Coordinates[][]): Coordinates => {\n if (this.position === 'right') {\n const lastRing = rings[rings.length - 1];\n\n return (lastRing && lastRing[lastRing.length - 1]) || null;\n }\n\n const firstRing = rings[0];\n\n return (firstRing && firstRing[0]) || null;\n };\n\n getRender(\n anchorRings: Coordinates[][],\n anchorCrs: Crs,\n resolution: number,\n currentCrs: Crs\n ): Render {\n const xMultiplier = this.position === 'right' ? 1 : -1;\n const miterAnchor = this.getAnchor(anchorRings);\n const miterRings = this.createRings(miterAnchor, xMultiplier);\n const projectedMiterRings = adaptMiterRings(\n miterRings,\n resolution,\n anchorCrs,\n currentCrs\n );\n\n return this.createRender(projectedMiterRings);\n }\n\n get miterSize() {\n const calcMiterSize = miterSizeCalcs[this.size];\n\n return calcMiterSize ? calcMiterSize(this.strokeWidth) : 1;\n }\n abstract get usageSize(): number;\n abstract createRings(\n anchor: Coordinates,\n xMultiplier: number\n ): Coordinates[][];\n abstract createRender(rings: Coordinates[][]): Render;\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nexport class ArrowLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y],\n [x, y - this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineEndingType.FilledArrow;\n\n return new PolyRender(miterRings, {\n enclosed: isFilled,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { polygonCircleFromPoint } from '../../';\nimport { LineMiterRender } from './LineMiterRender';\n\nexport class CircleLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth * 3;\n }\n\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineEndingType.FilledCircle;\n\n return new PolyRender(\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\n {\n fillColor: isFilled ? this.color : 'transparent',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n enclosed: true,\n }\n );\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nexport class SquareLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y + this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineEndingType.FilledSquare;\n\n return new PolyRender(miterRings, {\n enclosed: true,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\n\nimport { ArrowLineMiterRender } from './ArrowLineMiterRender';\nimport { CircleLineMiterRender } from './CircleLineMiterRender';\nimport { LineMiterRenderBaseInfo, LineMiterRender } from './LineMiterRender';\nimport { SquareLineMiterRender } from './SquareLineMiterRender';\n\nexport const getLineMiterRender = (\n options: LineMiterRenderBaseInfo\n): LineMiterRender | null => {\n switch (options.kind) {\n case LineEndingType.Arrow:\n case LineEndingType.FilledArrow:\n return new ArrowLineMiterRender(options);\n case LineEndingType.Square:\n case LineEndingType.FilledSquare:\n return new SquareLineMiterRender(options);\n case LineEndingType.Circle:\n case LineEndingType.FilledCircle:\n return new CircleLineMiterRender(options);\n default:\n return null;\n }\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { MiterPosition } from './LineMiterRender';\n\nconst updateRingForRightMiter = (\n ring: Coordinates[],\n miterSize: number,\n isLastRing: boolean\n): Coordinates[] => {\n const reversedRing = ring.slice().reverse();\n\n for (let i = 0; i < reversedRing.length; i++) {\n const coordinates = reversedRing[i];\n\n if (isLastRing && i === 0) {\n reversedRing[i] = [coordinates[0] - miterSize, coordinates[1]];\n }\n\n const nextCoordinates = reversedRing[i - 1];\n\n if (nextCoordinates && nextCoordinates[0] < coordinates[0]) {\n reversedRing[i] = [\n nextCoordinates[0] - Math.abs(nextCoordinates[0] - coordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return reversedRing.reverse();\n};\n\nconst updateRingForLeftMiter = (\n ring: Coordinates[],\n miterSize: number,\n isFirstRing: boolean\n): Coordinates[] => {\n const newRing = ring.slice();\n\n for (let i = 0; i < newRing.length; i++) {\n const coordinates = newRing[i];\n\n if (i === 0 && isFirstRing) {\n newRing[i] = [coordinates[0] + miterSize, coordinates[1]];\n }\n\n const prevCoordinates = newRing[i - 1];\n\n if (prevCoordinates && prevCoordinates[0] > coordinates[0]) {\n newRing[i] = [\n prevCoordinates[0] + Math.abs(coordinates[0] - prevCoordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return newRing;\n};\n\nexport const updateRingsForMiter = (\n rings: Coordinates[][],\n position: MiterPosition,\n miterSize: number\n): Coordinates[][] => {\n return rings.map((ring, ringIndex) => {\n switch (position) {\n case 'right':\n return updateRingForRightMiter(\n ring,\n miterSize,\n ringIndex === rings.length - 1\n );\n default:\n return updateRingForLeftMiter(ring, miterSize, ringIndex === 0);\n }\n });\n};\n","import { PolylineSymbol as sPolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { getLineMiterRender } from '../LineMiters/getLineMiterRender';\nimport { updateRingsForMiter } from '../LineMiters/updateRingsForMiter';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport {\n isDashedBrush,\n isSimplePolylineSymbol,\n PolylineSymbols,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { clamp } from '../../utils/math';\nimport { PREVIEW_LIMITS } from '../previewLimits';\nimport { getLineDash } from '../strokeStyle';\n\nexport const copyRings = (rings: Coordinates[][]): Coordinates[][] =>\n rings.map(ring =>\n ring.map(coordinates => coordinates.slice() as Coordinates)\n );\n\nexport class SGisPolylineSymbol extends sPolylineSymbol {\n constructor(public originalSymbol: PolylineSymbols) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n strokeWidth: clamp(\n // @ts-ignore\n getParameterValue(originalSymbol.stroke?.width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n // @ts-ignore\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n renderFunction(feature: Polyline, resolution: number, crs: Crs): Render[] {\n if (!isSimplePolylineSymbol(this.originalSymbol))\n return super.renderFunction(feature, resolution, crs);\n\n const {\n ending,\n beginning,\n } = this.originalSymbol;\n const renders: Render[] = [];\n\n const featureCopy = feature.clone();\n\n const beginningMiterRender = getLineMiterRender({\n color: this.strokeColor,\n // @ts-ignore\n kind: beginning.type,\n position: 'left',\n // @ts-ignore\n size: beginning.size,\n strokeWidth: this.strokeWidth,\n });\n const endingMiterRender = getLineMiterRender({\n color: this.strokeColor,\n // @ts-ignore\n kind: ending.type,\n position: 'right',\n // @ts-ignore\n size: ending.size,\n strokeWidth: this.strokeWidth,\n });\n\n if (beginningMiterRender) {\n const updatedRings = updateRingsForMiter(\n featureCopy.rings,\n 'left',\n beginningMiterRender.usageSize\n );\n const render = beginningMiterRender.getRender(\n updatedRings,\n feature.crs,\n resolution,\n crs\n );\n\n featureCopy.rings = updatedRings;\n renders.push(render);\n }\n\n if (endingMiterRender) {\n const updatedRings = updateRingsForMiter(\n featureCopy.rings,\n 'right',\n endingMiterRender.usageSize\n );\n const render = endingMiterRender.getRender(\n updatedRings,\n feature.crs,\n resolution,\n crs\n );\n\n featureCopy.rings = updatedRings;\n renders.push(render);\n }\n\n // NOTE: линия должна быть в начале чтобы быть под митерами\n renders.unshift(...super.renderFunction(featureCopy, resolution, crs));\n\n return renders;\n }\n\n clone() {\n return new SGisPolylineSymbol(this.originalSymbol);\n }\n}\n","import {\n PointSymbol,\n PointSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/point/Point';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Feature } from '@evergis/sgis';\n\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\n\nexport type EditorPointSymbolParams = {\n shadowColor: string;\n shadowSize: number;\n mapCoordinates?: Coordinates;\n} & PointSymbolConstructorParams;\n\nexport class ShadowedPointSymbol extends PointSymbol {\n shadowColor!: string;\n shadowSize!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPointSymbolParams) {\n super(options);\n }\n\n static getShadowArc(\n position: Coordinates,\n { strokeWidth = 2, shadowColor, shadowSize, size = 6 }: EditorPointSymbolParams,\n mapCoordinates: Coordinates,\n ): Arc {\n return new Arc(position, {\n fillColor: \"transparent\",\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n radius: (size + strokeWidth + shadowSize) / 2,\n mapCoordinates,\n });\n }\n\n static getPointArc(\n position: Coordinates,\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams,\n mapCoordinates: Coordinates,\n ): Arc {\n return new Arc(position, {\n fillColor,\n strokeColor,\n strokeWidth,\n radius: size / 2,\n mapCoordinates,\n });\n }\n\n public renderFunction(\n feature: PointFeature,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof PointFeature)) return [];\n const { position } = feature.projectTo(crs);\n\n const pxPosition: Coordinates = [\n position[0] / resolution + (this.offset[0] || 0),\n -position[1] / resolution + (this.offset[1] || 0),\n ];\n\n const shadowRender = this.getShadow(pxPosition, feature, position);\n const pointArc = this.getPoint(pxPosition, feature, position);\n\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\n }\n\n protected getShadow(\n position: Coordinates,\n _feature: Feature,\n mapCoordinates: Coordinates,\n ): Arc | void {\n return ShadowedPointSymbol.getShadowArc(position, this, mapCoordinates);\n }\n\n protected getPoint(position: Coordinates, _feature: Feature, mapCoordinates: Coordinates): Arc {\n return ShadowedPointSymbol.getPointArc(position, this, mapCoordinates);\n }\n}\n","import {\n PolylineSymbol,\n PolylineSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Feature } from '@evergis/sgis';\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from './ShadowedPointSymbol';\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\n\nexport const getSimplifiedPolygonCoordinates = (feature: Poly, crs: Crs, tolerance = 1) => {\n const projected = feature.crs.equals(crs) ? feature.rings : feature.projectTo(crs).rings;\n\n return simplifyCoordinates(projected, tolerance);\n};\n\nexport function createShadowRender(\n position: Coordinates,\n { strokeWidth = 1, shadowColor, shadowSize, size = 3, mapCoordinates }: EditorPointSymbolParams,\n) {\n const shadowRadius = (size + strokeWidth + shadowSize) / 2;\n\n return new Arc(position, {\n fillColor: \"transparent\",\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n radius: shadowRadius,\n mapCoordinates,\n });\n}\n\nexport function createPointRender(\n position: Coordinates,\n { strokeColor, strokeWidth, fillColor, size = 3, mapCoordinates }: EditorPointSymbolParams,\n) {\n const radius = size / 2;\n\n return new Arc(position, {\n fillColor,\n strokeColor,\n strokeWidth,\n radius,\n mapCoordinates,\n });\n}\n\nexport type EditorPolySymbolParams = {\n shadowColor: string;\n shadowSize: number;\n fillColor?: string;\n enclose?: boolean;\n showVertex?: boolean;\n vertexShadowSize?: number;\n} & PolylineSymbolConstructorParams;\n\nexport class ShadowedPolySymbol extends PolylineSymbol {\n shadowColor!: string;\n shadowSize!: number;\n fillColor?: string;\n enclose?: boolean;\n showVertex?: boolean;\n vertexShadowSize?: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPolySymbolParams) {\n super(options);\n }\n\n public renderFunction(\n feature: Polygon,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof Poly)) return [];\n\n const coordinates = super.getRenderedCoordinates(\n feature,\n resolution,\n crs\n );\n const simplifiedFeatureCoordinates = getSimplifiedPolygonCoordinates(feature, crs);\n const polyRender = this.getPolyRender(coordinates, feature, simplifiedFeatureCoordinates);\n const shadowRender = this.getShadow(coordinates, feature, simplifiedFeatureCoordinates);\n const vertexRenders = this.getVertexRenders(coordinates, simplifiedFeatureCoordinates);\n let renders: Render[] = [polyRender];\n\n if (shadowRender) {\n renders = [shadowRender, polyRender];\n }\n\n if (vertexRenders) {\n renders = renders.concat(vertexRenders);\n }\n\n return renders;\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n _feature: Feature,\n mapCoordinates: Coordinates[][],\n ): PolyRender | void {\n return new PolyRender(coordinates, {\n fillStyle: FillStyle.None,\n enclosed: this.enclose,\n strokeColor: this.shadowColor,\n strokeWidth: this.shadowSize,\n lineDash: this.lineDash,\n mapCoordinates,\n });\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n _feature: Feature,\n mapCoordinates: Coordinates[][],\n ): PolyRender {\n return new PolyRender(coordinates, {\n fillStyle: this.enclose ? FillStyle.Color : FillStyle.None,\n enclosed: this.enclose,\n fillColor: this.fillColor,\n strokeColor: this.strokeColor,\n strokeWidth: this.strokeWidth,\n lineDash: this.lineDash,\n mapCoordinates,\n });\n }\n\n protected getVertexRenders(\n coordinates: Coordinates[][],\n mapCoordinates: Coordinates[][]\n ): Arc[] | void {\n if (!this.showVertex) return;\n\n const pointRenderers = [];\n const shadowRenderers = [];\n\n for (let i = 0; i < coordinates.length; i++) {\n const ring = coordinates[i];\n\n for (let j = 0; j < ring.length; j++) {\n const point = ring[j];\n const featurePoint = mapCoordinates[i][j];\n\n const shadowRender = createShadowRender(point, {\n size: 6,\n strokeWidth: 2,\n shadowColor: this.shadowColor,\n strokeColor: this.strokeColor,\n shadowSize:\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\n fillColor: 'transparent',\n mapCoordinates: featurePoint,\n });\n const pointRender = createPointRender(point, {\n size: 6,\n strokeWidth: 2,\n shadowColor: this.shadowColor,\n strokeColor: this.strokeColor,\n shadowSize:\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\n fillColor: '#ffffff',\n mapCoordinates: featurePoint,\n });\n\n shadowRenderers.push(shadowRender);\n pointRenderers.push(pointRender);\n }\n }\n\n return [...pointRenderers, ...shadowRenderers];\n }\n}\n\nconst polySymbolParams = {\n strokeWidth: 2,\n strokeColor: '#e33600',\n shadowSize: 8,\n shadowColor: 'rgba(227, 54, 0, 0.3)',\n};\n\nconst measureSymbolParams = {\n strokeColor: '#ff6933',\n shadowSize: 0,\n vertexShadowSize: 0,\n};\n\nexport const measureLengthSymbol = new ShadowedPolySymbol({\n ...polySymbolParams,\n ...measureSymbolParams,\n enclose: false,\n showVertex: true,\n});\n\nexport const measureAreaSymbol = new ShadowedPolySymbol({\n ...polySymbolParams,\n ...measureSymbolParams,\n fillColor: 'rgba(255, 105, 51, 0.25)',\n enclose: true,\n showVertex: true,\n});\n\nconst snapSymbolParams = {\n size: 10,\n strokeWidth: 2,\n strokeColor: '#e33600',\n fillColor: '#ffffff',\n shadowColor: 'rgba(227, 54, 0, 0.3)',\n shadowSize: 3,\n};\n\nexport const measurePolygonSnapSymbol = new ShadowedPointSymbol({\n ...snapSymbolParams,\n strokeColor: '#ff6933',\n shadowSize: 0,\n});\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\n\ntype SelectedFeature = PointFeature & {\n isSelected: boolean;\n};\n\nexport type SelectedPointSymbolParams = {\n selectedStrokeColor: string;\n selectedFillColor: string;\n} & EditorPointSymbolParams;\n\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\n selectedStrokeColor!: string;\n selectedFillColor!: string;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPointSymbolParams) {\n super(props);\n }\n\n protected getShadow(\n position: [number, number],\n feature: SelectedFeature,\n mapCoordinates: Coordinates,\n ): Arc | void {\n if (feature.isSelected) {\n return super.getShadow(position, feature, mapCoordinates);\n }\n }\n\n protected getPoint(\n position: [number, number],\n feature: SelectedFeature,\n mapCoordinates: Coordinates,\n ): Arc {\n const pointRender = super.getPoint(position, feature, mapCoordinates);\n\n if (feature.isSelected) {\n pointRender.strokeColor = this.selectedStrokeColor;\n pointRender.fillColor = this.selectedFillColor;\n }\n\n return pointRender;\n }\n}\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\n\nimport {\n EditorPolySymbolParams,\n ShadowedPolySymbol,\n} from '../Shadowed';\n\ntype SelectedFeature = Polygon & {\n isSelected: boolean;\n};\n\nexport type SelectedPolySymbolParams = {\n selectedFillColor?: string;\n selectedStrokeColor: string;\n selectedStrokeWidth?: number;\n} & EditorPolySymbolParams;\n\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\n selectedFillColor!: string;\n selectedStrokeColor!: string;\n selectedStrokeWidth!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPolySymbolParams) {\n super(props);\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n feature: SelectedFeature,\n mapCoordinates: Coordinates[][],\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(coordinates, feature, mapCoordinates);\n }\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n feature: SelectedFeature,\n mapCoordinates: Coordinates[][],\n ): PolyRender {\n const polyRender = super.getPolyRender(coordinates, feature, mapCoordinates);\n if (feature.isSelected) {\n polyRender.fillColor = this.selectedFillColor;\n polyRender.strokeColor = this.selectedStrokeColor;\n if (this.selectedStrokeWidth !== void 0) {\n polyRender.strokeWidth = this.selectedStrokeWidth;\n }\n }\n\n return polyRender;\n }\n}\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\n\nexport const selectedPoint = new SelectedPointSymbol({\n size: 8,\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.65)',\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 3,\n\n selectedStrokeColor: '#ff5722',\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\n});\n\nexport const selectedPolyline = new SelectedPolySymbol({\n strokeWidth: 6,\n strokeColor: 'rgba(255, 87, 34, 0.2)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n selectedStrokeColor: '#ff5722',\n selectedStrokeWidth: 2,\n});\n\nexport const selectedPolygon = new SelectedPolySymbol({\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.36)',\n enclose: true,\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\n selectedStrokeColor: '#ff5722',\n});\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\nimport { distance } from '@evergis/sgis/es/geotools';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype ConvertionContext = {\n painter: DomPainter;\n crs?: Crs;\n};\n\nexport const metersToPixels = (\n meters: number,\n { painter, crs = geo }: ConvertionContext\n): number => {\n const { width } = painter;\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\n const pxK = width / (widthDistance || 1);\n\n return Math.round(meters * pxK);\n};\n","import { Symbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { Render, DynamicRender } from '@evergis/sgis/es/renders/Render';\nimport { SvgRender } from '@evergis/sgis/es/painters/DomPainter/SvgRender';\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { FillStyle } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { listenDomEvent } from '@evergis/sgis/es/utils/domEvent';\nimport {\n MouseEventFlags,\n mouseEvents,\n Handler,\n} from '@evergis/sgis/es/EventHandler';\n\nimport { metersToPixels } from '../../utils/metersToPixels';\n\nimport { SVGPolyProps, SVGFeaturePoly, SvgPolyPathStyles } from './types';\n\nconst defaultPathStyles: SvgPolyPathStyles = {\n strokeWidth: 2,\n strokeColor: 'rgb(0, 163, 245)',\n fillStyle: FillStyle.None,\n};\n\nexport class SVGPoly extends Symbol<SVGFeaturePoly> {\n container: HTMLDivElement = document.createElement('div');\n redrawFeatureNode: SVGPolyProps['redrawFeatureNode'];\n pathStyles?: SvgPolyPathStyles;\n circle?: SVGPolyProps['circle'];\n className?: string;\n appendToSvg?: SVGPolyProps['appendToSvg'];\n\n constructor({\n redrawFeatureNode,\n pathStyles,\n circle,\n className,\n appendToSvg,\n }: SVGPolyProps = {}) {\n super();\n this.container.style.position = 'absolute';\n this.redrawFeatureNode = redrawFeatureNode;\n this.pathStyles = { center: [0, 0], fillColor: 'none', ...pathStyles };\n this.circle = circle;\n this.className = className;\n this.appendToSvg = appendToSvg;\n }\n\n renderFunction(\n feature: SVGFeaturePoly,\n resolution: number,\n crs: Crs\n ): Render[] {\n const coordinates =\n feature instanceof Poly\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\n : feature.centroid;\n\n this.setCirclePxRaius(crs);\n this.container.innerHTML = '';\n const svg = this.setSvg(coordinates);\n svg && this.container.append(svg);\n\n feature.__dynamicSymbolRender = new DynamicRender({\n node: this.container,\n update: (bbox, resolution) =>\n this.update({ bbox, resolution, feature, crs }),\n redraw: () => {\n this.redrawFeatureNode && this.redrawFeatureNode(feature);\n },\n });\n\n this._setEventListeners(feature);\n\n return [feature.__dynamicSymbolRender];\n }\n\n setCirclePxRaius(crs: Crs) {\n if (this.circle && this.pathStyles) {\n this.pathStyles.radius =\n metersToPixels(this.circle.radius, {\n painter: this.circle.painter,\n crs,\n }) + (this.circle?.pxOffset || 0);\n }\n }\n\n update({\n bbox,\n resolution,\n feature,\n crs,\n }: {\n bbox?: Bbox;\n resolution?: number;\n feature: SVGFeaturePoly;\n crs: Crs;\n }) {\n if (!feature) return;\n\n if (!bbox) bbox = feature.__lastBbox;\n if (!resolution) resolution = feature.__lastResolution;\n\n if (!bbox || !resolution || !feature.crs.canProjectTo(bbox.crs)) return;\n\n if (feature.__lastResolution && resolution !== feature.__lastResolution) {\n const newCoordinates =\n feature instanceof Poly\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\n : feature.centroid;\n\n this.setCirclePxRaius(crs);\n this.container.innerHTML = '';\n const svg = this.setSvg(newCoordinates);\n svg && this.container.append(svg);\n }\n\n const polygon = feature.projectTo(bbox.crs);\n const radiusOffset = this.pathStyles?.radius\n ? this.pathStyles?.radius +\n (this.pathStyles?.strokeWidth ? this.pathStyles?.strokeWidth / 2 : 0)\n : 0;\n const dx =\n Math.round((polygon.bbox.xMin - bbox.xMin) / resolution) - radiusOffset;\n const dy =\n Math.round((bbox.yMax - polygon.bbox.yMax) / resolution) - radiusOffset;\n\n this.container.style.left = `${dx.toString()}px`;\n this.container.style.top = `${dy.toString()}px`;\n\n feature.__lastBbox = bbox;\n feature.__lastResolution = resolution;\n }\n\n setSvg(\n coordinates: [number, number][][] | Coordinates\n ): SVGElement | undefined {\n const { lineCap, lineJoin, miterLimit, lineDash, dashOffset } =\n this.pathStyles || {};\n const svgRender = new SvgRender({\n coordinates,\n ...defaultPathStyles,\n appendToSvg: this.appendToSvg,\n ...this.pathStyles,\n });\n\n if (this.circle) {\n svgRender._setArcNode();\n } else {\n svgRender._setPolyNode();\n }\n\n let svgElement;\n svgRender.getNode((_: null, svg: SVGElement) => {\n svgElement = svg;\n this.className && svgElement.classList.add(this.className);\n const path =\n svgElement && svgElement.querySelector(this.circle ? 'circle' : 'path');\n\n if (path) {\n path.setAttribute('stroke-linecap', lineCap || 'round');\n path.setAttribute('stroke-linejoin', lineJoin || 'round');\n path.setAttribute('stroke-miterlimit', (miterLimit || 10).toString());\n path.setAttribute('stroke-dashoffset', (dashOffset || 0).toString());\n\n if (this.circle) {\n path.setAttribute(\n 'stroke-dasharray',\n lineDash && lineDash.length > 0 ? lineDash.join(',') : ''\n );\n }\n }\n });\n\n return svgElement;\n }\n\n private _setEventListeners(dynamicFeature: SVGFeaturePoly): void {\n if (dynamicFeature.eventFlags === MouseEventFlags.None) return;\n\n const svgNode = dynamicFeature?.__dynamicSymbolRender?.node.querySelector(\n this.circle ? 'circle' : 'path'\n );\n\n Object.keys(mouseEvents).forEach(eventName => {\n if (dynamicFeature.eventFlags & mouseEvents[eventName].flag) {\n listenDomEvent(\n svgNode,\n mouseEvents[eventName].type,\n (event: Handler) => {\n dynamicFeature.fire(mouseEvents[eventName].type, {\n node: svgNode,\n browserEvent: event,\n });\n }\n );\n }\n });\n }\n}\n","import { BrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\nimport { ImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { SquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\nimport { PolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { PointSymbol } from '@evergis/sgis/es/symbols/point/Point';\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\nimport { ClusterSymbol } from \"@evergis/sgis/es/symbols/ClusterSymbol\";\nimport { ClusterSymbolDc } from \"@evergis/api\";\n\nimport {\n SGisImageSymbolType,\n SGisPointSymbolType,\n SGisPolygonSymbolType,\n SGisPolylineSymbolType,\n SGisSymbolType,\n} from './types';\n\nexport function isSGisPointSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPointSymbolType {\n return (\n symbol instanceof PointSymbol ||\n symbol instanceof StaticImageSymbol ||\n symbol instanceof SquareSymbol ||\n symbol instanceof MaskedImage\n );\n}\n\nexport function isSGisImageSymbol(\n symbol: SGisSymbolType\n): symbol is SGisImageSymbolType {\n return symbol instanceof StaticImageSymbol || symbol instanceof MaskedImage;\n}\n\nexport function isSGisPolygonSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPolygonSymbolType {\n return (\n symbol instanceof PolygonSymbol ||\n symbol instanceof BrushFill ||\n symbol instanceof ImageFill\n );\n}\n\nexport function isSGisPolylineSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPolylineSymbolType {\n return symbol instanceof PolylineSymbol;\n}\n\nexport function isSGisH3Symbol(\n symbol: SGisSymbolType\n): symbol is H3Symbol {\n return symbol instanceof H3Symbol;\n}\n\nexport function isSGisCombinedPolylineSymbol(\n symbol: SGisSymbolType\n): symbol is CombinedPolylineSymbol {\n return symbol instanceof CombinedPolylineSymbol\n}\n\nexport function isSGisClusterSymbol(\n symbol: SGisSymbolType\n): symbol is ClusterSymbol {\n return !!(symbol as ClusterSymbolDc).singleObjectSymbol;\n}\n","import { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { H3Feature } from \"@evergis/sgis/es/features/H3Feature\";\nimport { plain } from '@evergis/sgis/es/Crs';\nimport { CombinedPolyline } from \"@evergis/sgis/es/features/CombinedPolyline\";\n\n/**\n * Моки фич для отображения превью символа\n * http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217\n */\n\nexport const viewBoxSize = 100;\n\nexport const pointFeature = new PointFeature([50, -50], { crs: plain });\n\nexport const lineFeature = new Polyline(\n [\n [0, -57],\n [26, -57],\n [40, -35],\n [60, -65],\n [74, -43],\n [100, -43],\n ],\n {\n crs: plain,\n }\n);\nexport const combinedLineFeature = new CombinedPolyline(\n [\n [0, -57],\n [26, -57],\n [40, -35],\n [60, -65],\n [74, -43],\n [100, -43],\n ],\n {\n crs: plain,\n }\n);\nexport const polygonFeature = new Polygon(\n [\n [20, -20],\n [80, -20],\n [80, -80],\n [20, -80],\n ],\n { crs: plain }\n);\nexport const h3gridFeature = new H3Feature(\n [\n [50, -15],\n [80, -33],\n [80, -67],\n [50, -85],\n [20, -67],\n [20, -33],\n [50, -15],\n ],\n { crs: plain }\n);\n\nexport const lineLegendFeature = new Polyline(\n [\n [0, -50],\n [100, -50],\n ],\n {\n crs: plain,\n }\n);\n\nexport const polygonLegendFeature = new Polygon(\n [\n [20, -20],\n [80, -20],\n [80, -80],\n [20, -80],\n ],\n { crs: plain }\n);\n\nexport const polygonMapLegendFeature = new Polygon(\n [\n [50, 0],\n [100, -25],\n [100, -75],\n [50, -100],\n [0, -75],\n [0, -25],\n ],\n { crs: plain }\n);\n\nexport const MAP_LEGEND_FEATURES = {\n polygon: polygonMapLegendFeature,\n};\n\nexport const LEGEND_FEATURES = {\n point: pointFeature,\n polyline: lineLegendFeature,\n combinedPolyline: combinedLineFeature,\n polygon: polygonLegendFeature,\n h3grid: h3gridFeature,\n};\n\nexport const MOCK_FEATURES = {\n point: pointFeature,\n polyline: lineFeature,\n combinedPolyline: combinedLineFeature,\n polygon: polygonFeature,\n h3grid: h3gridFeature,\n} as const;\n","import { plain } from '@evergis/sgis/es/Crs';\n\nimport { isSGisCombinedPolylineSymbol, isSGisH3Symbol, isSGisPolygonSymbol, isSGisPolylineSymbol } from './guards';\nimport {\n LEGEND_FEATURES,\n MAP_LEGEND_FEATURES,\n MOCK_FEATURES,\n viewBoxSize,\n} from './mockFeatures';\nimport { SGisSymbolType } from './types';\n\nexport function getSymbolRenders(\n symbol: SGisSymbolType,\n size: number = viewBoxSize,\n features: Partial<typeof MOCK_FEATURES> = {}\n) {\n const resolution = viewBoxSize / size;\n const featuresToRender = { ...MOCK_FEATURES, ...features };\n\n if (isSGisPolygonSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.polygon,\n resolution,\n plain\n );\n }\n\n if (isSGisPolylineSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.polyline,\n resolution,\n plain\n );\n }\n\n if (isSGisH3Symbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.h3grid,\n resolution,\n plain\n );\n }\n\n if (isSGisCombinedPolylineSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.combinedPolyline,\n resolution,\n plain\n );\n }\n\n return symbol.renderFunctionAsync(featuresToRender.point, resolution, plain);\n}\n\nexport const getMapLegendSymbolRenders = (\n symbol: SGisSymbolType,\n size: number = viewBoxSize\n) => {\n return getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\n}\n\nexport const getLegendSymbolRenders = (\n symbol: SGisSymbolType,\n size: number = viewBoxSize\n) => {\n return getSymbolRenders(symbol, size, LEGEND_FEATURES);\n}\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { RenderForCanvas } from \"@evergis/sgis/es/painters/DomPainter/types\";\n\nexport function renderSymbolToCanvas(renders: Render[], canvas: Canvas) {\n renders.forEach(render => {\n canvas.draw(<RenderForCanvas>render);\n });\n}\n","import { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { PointSymbol as SPointSymbol, PointSymbolConstructorParams } from '@evergis/sgis/es/symbols/point/Point';\nimport { SquareSymbol as SSquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\nimport { Color } from '@evergis/color';\nimport { StaticImageSymbol as SStaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\nimport { ClusterSymbolDc, SvgParameterDc } from \"@evergis/api\";\n\nimport { getParameterValue } from '../core/classification';\n\nimport {\n ClassifyAble,\n H3GridSymbol,\n isPolygonHasHatchBrush,\n isPolygonHasPatternBrush,\n MaskedImageSymbol,\n Offset,\n ParameterValue,\n PointSymbol,\n PolygonSymbol,\n PolylineSymbols,\n SimpleOffset,\n SquareSymbol,\n StaticImageSymbol,\n StyleSymbolType,\n SvgPointSymbol,\n} from '../core/style';\n\nimport {\n SGisBrushFill,\n SGisImageFill,\n SGisPolygonSymbol,\n SGisPolylineSymbol,\n} from './Evergis';\n\nimport { SGisSymbolType } from './types';\n\n// TODO create classes from unClassified symbols only\nexport function deserializeSymbol(\n symbol: StyleSymbolType\n): SGisSymbolType | null {\n switch (symbol.type) {\n case \"h3grid\":\n return deserializeH3Symbol(symbol as H3Symbol);\n case \"svgPointSymbol\":\n return deserializeSvgPointSymbol(symbol as SvgPointSymbol);\n case 'circlePointSymbol':\n return deserializePointSymbol(symbol as PointSymbol);\n case 'squarePointSymbol':\n return deserializeSquareSymbol(symbol as SquareSymbol);\n case 'maskedImagePointSymbol':\n return deserializeMaskedImageSymbol(symbol as MaskedImageSymbol);\n case 'imagePointSymbol':\n return deserializeImagePointSymbol(symbol as StaticImageSymbol);\n case 'polygonSymbol':\n return deserializePolygonSymbol(symbol as PolygonSymbol);\n case 'simplePolylineSymbol':\n case 'polylineSymbol':\n return deserializePolylineSymbol(symbol as PolylineSymbols);\n case \"clusterSymbol\":\n return deserializeSymbol((symbol as ClusterSymbolDc).singleObjectSymbol as StyleSymbolType);\n default:\n return null;\n }\n}\n\nfunction deserializeH3Symbol(symbol: H3GridSymbol) {\n return new H3Symbol({\n ...symbol,\n cellSize: getParameterValue(symbol.cellSize as number),\n strokeWidth: getParameterValue(symbol?.stroke?.width as number),\n strokeColor: getParameterValue(symbol?.stroke?.color as string),\n fillColor: getParameterValue(symbol?.fill?.color as string),\n });\n}\n\nfunction deserializePointSymbol(symbol: PointSymbol) {\n // @ts-ignore\n return new SPointSymbol(deserializePointSymbolParams(symbol));\n}\n\nexport const getOffsetParameterValue = (offset: Offset): SimpleOffset => [\n getParameterValue(offset?.[0]),\n getParameterValue(offset?.[1]),\n];\n\nfunction deserializeSvgPointSymbolParams({ type, data, size, offset, angle, background, figure }: SvgPointSymbol) {\n return {\n type: getParameterValue(type as ParameterValue),\n data: getParameterValue(data as ParameterValue),\n size: getParameterValue(size as ParameterValue),\n offset: getOffsetParameterValue(offset as Offset),\n angle: getParameterValue(angle as ParameterValue),\n ...(background\n ? {\n background: {\n ...(background as SvgParameterDc),\n fillColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.fillColor as string)),\n strokeColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.strokeColor as string)),\n strokeWidth: getParameterValue((background as SvgParameterDc)?.strokeWidth as ParameterValue),\n },\n }\n : {}),\n ...(figure\n ? {\n figure: {\n ...(figure as SvgParameterDc),\n strokeColor: deserializeColor(getParameterValue((figure as SvgParameterDc)?.strokeColor as string)),\n strokeWidth: getParameterValue((figure as SvgParameterDc)?.strokeWidth as ParameterValue),\n fillColor: deserializeColor(\n getParameterValue((figure as SvgParameterDc)?.fillColor as ParameterValue) as string,\n ),\n },\n }\n : {}),\n };\n}\n\nfunction deserializeSvgPointSymbol(symbol: SvgPointSymbol) {\n return new SPointSymbol(deserializeSvgPointSymbolParams(symbol) as PointSymbolConstructorParams);\n}\n\nfunction deserializeSquareSymbol(symbol: SquareSymbol) {\n return new SSquareSymbol({\n ...deserializePointSymbolParams(symbol),\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n });\n}\n\nfunction deserializeMaskedImageSymbol(symbol: MaskedImageSymbol) {\n return new MaskedImage({\n ...symbol,\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n // @ts-ignore\n width: getParameterValue(symbol.width),\n // @ts-ignore\n height: getParameterValue(symbol.height),\n // @ts-ignore\n anchorPoint: deserializeAnchor(symbol.offset),\n // @ts-ignore\n imageSource: deserializeBase64(symbol.image),\n // @ts-ignore\n maskSource: deserializeBase64(symbol.imageMask),\n // @ts-ignore\n maskColor: deserializeColor(getParameterValue(symbol.maskedColor)),\n });\n}\n\nfunction deserializeImagePointSymbol(symbol: StaticImageSymbol) {\n return new SStaticImageSymbol({\n ...symbol,\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n // @ts-ignore\n width: getParameterValue(symbol.width),\n // @ts-ignore\n height: getParameterValue(symbol.height),\n // @ts-ignore\n anchorPoint: deserializeAnchor(symbol.offset),\n // @ts-ignore\n source: deserializeBase64(symbol.image),\n });\n}\n\nfunction deserializePolygonSymbol(symbol: PolygonSymbol) {\n if (isPolygonHasPatternBrush(symbol)) {\n return new SGisImageFill(symbol);\n }\n\n if (isPolygonHasHatchBrush(symbol)) {\n return new SGisBrushFill(symbol);\n }\n\n return new SGisPolygonSymbol(symbol);\n}\n\nfunction deserializePolylineSymbol(symbol: PolylineSymbols) {\n return new SGisPolylineSymbol(symbol);\n}\n\nfunction deserializePointSymbolParams({\n size,\n offset,\n strokeColor,\n strokeWidth,\n fillColor,\n}: PointSymbol | SquareSymbol) {\n return {\n size: getParameterValue(size as ClassifyAble<number>),\n offset: deserializeAnchor(offset as Offset),\n strokeWidth: getParameterValue(strokeWidth as ClassifyAble<number>),\n strokeColor: deserializeColor(\n getParameterValue(strokeColor as ClassifyAble<string>)\n ),\n fillColor: deserializeColor(\n getParameterValue(fillColor as ClassifyAble<string>)\n ),\n };\n}\n\nfunction deserializeBase64(base: string) {\n return `data:image/png;base64,${base}`;\n}\n\nexport function deserializeAnchor(offset: Offset) {\n // @ts-ignore\n return offset.map(getParameterValue);\n}\n\nfunction deserializeColor(color: string): string | null {\n return color ? new Color(color).toString() : null;\n}\n","import { SGisSymbolType } from './types';\nimport { isSGisImageSymbol, isSGisPointSymbol } from './guards';\n\nimport { clamp } from '../utils/math';\n\nexport const clampSymbol = (\n symbol: SGisSymbolType,\n min: number,\n max: number\n): SGisSymbolType => {\n if (isSGisImageSymbol(symbol)) {\n symbol.width = clamp(symbol.width, min, max);\n symbol.height = clamp(symbol.height, min, max);\n } else if (isSGisPointSymbol(symbol)) {\n symbol.size = clamp(symbol.size, min, max);\n }\n\n return symbol;\n};\n\nexport function centerAlignSymbol(symbol: SGisSymbolType) {\n if (isSGisImageSymbol(symbol)) {\n symbol.anchorPoint = [symbol.width / 2, symbol.height / 2];\n } else if (isSGisPointSymbol(symbol)) {\n symbol.offset = [0, 0];\n }\n\n return symbol;\n}\n\nexport const adjustSymbol = (\n symbol: SGisSymbolType,\n { size }: { size: number }\n) => centerAlignSymbol(clampSymbol(symbol, 0, size));\n","import { useCallback, useMemo, useRef } from 'react';\nimport { SVG } from '@svgdotjs/svg.js';\nimport { Color } from '@evergis/color/es/Color';\n\nimport { DEFAULT_SYMBOL_OFFSET } from '../constants';\nimport { manipulateSvgSymbol } from '../../../utils/svg';\nimport { isSizeClassification } from '../../../utils/legend';\nimport { getOffsetParameterValue } from '../../../symbols';\nimport {\n getParameterValue,\n Offset,\n ParameterValue,\n SvgPointSymbol,\n} from '../../../core';\nimport { SvgEditorField, SvgSymbolBg } from '../types';\n\nexport const useSvgSymbol = (symbol: SvgPointSymbol, skipOffset?: boolean, isClassified?: boolean) => {\n const SVGWrapperRefElement = useRef<HTMLElement | null>(null);\n const SVGContainer = useMemo(() => SVG(), []);\n\n const initSvg = useCallback(() => {\n SVGContainer.addTo(SVGWrapperRefElement.current as HTMLElement);\n }, [SVGContainer]);\n\n const getSvgData = useCallback(() => SVGContainer.svg(), [SVGContainer]);\n\n const manipulateSvg = useCallback(\n ({\n svg,\n bg,\n newSymbol,\n isClassified,\n }: {\n svg: string;\n bg?: SvgSymbolBg;\n newSymbol?: SvgPointSymbol;\n isClassified?: boolean;\n }) => {\n manipulateSvgSymbol({\n SVGContainer,\n symbol: newSymbol || symbol,\n svg,\n bg,\n isClassified,\n });\n },\n [SVGContainer, symbol]\n );\n\n const getUpdatedSvgSymbol = useCallback(\n (field: keyof SvgEditorField, value: Color | number | string) => {\n const { data, offset } = symbol;\n const newValue = value instanceof Color ? value.toString('rgba') : value;\n\n const newSymbol = {\n ...JSON.parse(JSON.stringify(symbol)),\n offset: skipOffset\n ? DEFAULT_SYMBOL_OFFSET\n : isSizeClassification(field)\n ? getOffsetParameterValue(offset as Offset)\n : offset,\n };\n\n if (field.indexOf('.') !== -1) {\n const parts = field.split('.');\n\n if (newSymbol[parts[0]]?.[parts[1]]) {\n newSymbol[parts[0]][parts[1]] = newValue;\n } else {\n newSymbol[parts[0]] = {\n ...newSymbol[parts[0]],\n [parts[1]]: newValue,\n ...(parts[0] === 'background'\n ? { type: newSymbol.background.type, id: 'symbol-bg' }\n : parts[0] === 'figure'\n ? { id: 'symbol-figure' }\n : {}),\n };\n }\n } else {\n newSymbol[field] = newValue;\n }\n\n manipulateSvg({\n svg: getParameterValue(data as ParameterValue) as string,\n newSymbol,\n bg: newSymbol.background?.type,\n isClassified,\n });\n\n return { ...newSymbol, data: SVGContainer.svg() };\n },\n [SVGContainer, manipulateSvg, skipOffset, symbol]\n );\n\n return {\n svgRef: SVGWrapperRefElement,\n initSvg,\n getSvgData,\n manipulateSvg,\n getUpdatedSvgSymbol,\n };\n};\n","import React, { FC, memo, useCallback, useEffect, useMemo } from 'react';\nimport styled from 'styled-components';\nimport { SvgParameterDc, PointLabelSymbolDc } from '@evergis/api';\n\nimport { SymbolButton } from '../styled';\nimport { useSvgSymbol } from '../hooks/useSvgSymbol';\nimport { SvgPointSymbol } from '../../../core';\nimport { SvgSymbolProps } from '../types';\n\nconst SvgSymbolContainer = styled.div`\n position: relative;\n`;\n\nconst SvgSymbolLabel = styled.div<{ fontSettings?: PointLabelSymbolDc }>`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n color: #fff;\n ${({ fontSettings }) =>\n !!fontSettings?.fontFamily && `font-family: ${fontSettings.fontFamily}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontWeight && `font-weight: ${fontSettings.fontWeight}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontStyle && `font-style: ${fontSettings.fontStyle}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontColor && `color: ${fontSettings.fontColor}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontSize &&\n `font-size: ${\n typeof fontSettings.fontSize === 'string'\n ? fontSettings.fontSize\n : `${fontSettings.fontSize}px`\n }`};\n ${({ fontSettings }) =>\n !!fontSettings?.haloColor &&\n !!fontSettings?.haloWidth &&\n `-webkit-text-stroke: ${fontSettings.haloWidth}px ${fontSettings.haloColor};`};\n line-height: 0;\n`;\n\nexport const SvgSymbol: FC<SvgSymbolProps> = memo(\n ({ svg, bg, symbol, title, text, fontSettings, skipOffset, isClassified, onClick }) => {\n const { svgRef, initSvg, getSvgData, manipulateSvg } = useSvgSymbol(\n symbol,\n skipOffset,\n isClassified,\n );\n\n const onSelectSymbol = useCallback(() => {\n onClick?.(getSvgData(), {\n ...symbol,\n ...(bg\n ? {\n background: {\n ...(symbol.background as SvgParameterDc),\n type: bg,\n },\n }\n : {}),\n } as SvgPointSymbol);\n }, [bg, getSvgData, onClick, symbol]);\n\n const renderSymbol = useMemo(\n () => (\n <SymbolButton\n ref={svgRef}\n title={title}\n onClick={onClick ? onSelectSymbol : undefined}\n />\n ),\n [svgRef, title, onClick, onSelectSymbol]\n );\n\n useEffect(() => {\n initSvg();\n }, [initSvg]);\n\n useEffect(() => {\n manipulateSvg({ svg, bg, newSymbol: symbol, isClassified });\n }, [svg, symbol, bg, manipulateSvg, isClassified]);\n\n return text ? (\n <SvgSymbolContainer>\n {renderSymbol}\n <SvgSymbolLabel fontSettings={fontSettings}>{text}</SvgSymbolLabel>\n {!!fontSettings?.haloColor && !!fontSettings?.haloWidth && (\n <SvgSymbolLabel\n fontSettings={{\n ...fontSettings,\n haloColor: undefined,\n haloWidth: undefined,\n }}\n >\n {text}\n </SvgSymbolLabel>\n )}\n </SvgSymbolContainer>\n ) : (\n renderSymbol\n );\n }\n);\n","import React, { FC } from 'react';\nimport {\n CalculatedParameterDc,\n ClusterSymbolDc,\n ParameterDcColor,\n} from '@evergis/api';\n\nimport { SvgSymbol } from './SvgSymbol';\nimport { DEFAULT_CLUSTER_SVG } from '../constants';\nimport {\n isParameterByAttribute,\n ParameterByAttribute,\n SvgPointSymbol,\n} from '../../../core';\n\nexport const ClusterSymbolPreview: FC<{\n symbol: ClusterSymbolDc;\n index?: number;\n size?: number;\n fontSize?: string;\n}> = ({ symbol, index, size = 56, fontSize = '1.25rem' }) => {\n const isClassified = isParameterByAttribute(\n symbol.fillColor as ParameterDcColor\n );\n const isClassifiedValue = isClassified && index !== undefined;\n\n const fillColor =\n isClassifiedValue\n ? (symbol.fillColor as ParameterByAttribute<string>).values[index as number]\n ?.value ||\n (symbol.fillColor as ParameterByAttribute<string>).defaultValue\n : symbol.fillColor;\n\n const strokeColor = isClassified ? fillColor : symbol.strokeColor;\n\n const svgSymbol = {\n type: 'svgPointSymbol',\n size,\n offset: [0, 0],\n angle: 0,\n background: {\n id: 'symbol-bg',\n fillColor,\n strokeColor,\n strokeWidth: 6,\n type: 'circle',\n },\n };\n\n return (\n <SvgSymbol\n svg={DEFAULT_CLUSTER_SVG}\n symbol={(svgSymbol as unknown) as SvgPointSymbol}\n isClassified={isClassified}\n text={'99'}\n fontSettings={{\n ...symbol.labelSymbol,\n fontSize:\n (fontSize as CalculatedParameterDc) || symbol.labelSymbol?.fontSize,\n }}\n />\n );\n};\n","import React, { FC, useMemo } from 'react';\n\nimport { SvgSymbol } from './SvgSymbol';\nimport { Symbol, SGisSymbolType } from '../../../';\nimport { serializeSvgPointSymbol } from '../../../utils/legend';\nimport { SGisSymbol } from '../types';\nimport { SvgPointSymbol } from '../../../core';\n\nexport const SymbolByType: FC<{\n symbol?: SGisSymbol;\n size?: number;\n type?: string;\n svg?: string;\n skipOffset?: boolean;\n}> = ({ type, symbol, size, svg, skipOffset }) => {\n const defaultSymbol = useMemo(() => (\n <Symbol symbol={symbol as SGisSymbolType} size={size} />\n ), [symbol, size]);\n\n switch (type) {\n case 'svgPointSymbol':\n return svg ? (\n <SvgSymbol\n svg={svg}\n size={size}\n skipOffset={skipOffset}\n symbol={serializeSvgPointSymbol(symbol as SvgPointSymbol) as unknown as SvgPointSymbol}\n />\n ) : (\n defaultSymbol\n );\n default:\n return defaultSymbol;\n }\n};\n","import React, { FC, memo } from 'react';\nimport { ClusterSymbolDc } from '@evergis/api';\n\nimport { SymbolByType } from './SymbolByType';\nimport { ClusterSymbolPreview } from './ClusterSymbolPreview';\nimport { ClusterLegendContainer } from '../styled';\nimport { DEFAULT_LEGEND_SYMBOL_SIZE } from '../constants';\nimport { getLegendSymbolSize } from '../../../utils/legend';\nimport { deserializeSymbol } from '../../../symbols';\nimport {\n getParameterValue,\n isClusterSymbol,\n ParameterValue,\n StyleSymbolType,\n SvgPointSymbol,\n} from '../../../core';\nimport { SGisSymbol } from '../types';\n\nexport const LegendSymbolRenderer: FC<{\n symbol: StyleSymbolType;\n index?: number;\n}> = memo(({ symbol, index }) => {\n if (isClusterSymbol(symbol)) {\n return (\n <ClusterLegendContainer>\n <ClusterSymbolPreview\n symbol={symbol as ClusterSymbolDc}\n index={index}\n />\n </ClusterLegendContainer>\n );\n }\n\n return (\n <SymbolByType\n symbol={deserializeSymbol(symbol) as SGisSymbol}\n size={getLegendSymbolSize(symbol) || DEFAULT_LEGEND_SYMBOL_SIZE}\n type={symbol.type}\n svg={\n getParameterValue(\n (symbol as SvgPointSymbol).data as ParameterValue\n ) as string\n }\n skipOffset\n />\n );\n});\n","import React, { FC } from \"react\";\nimport { EverCloudClassificationIcon, EverCloudRefreshIcon, IconButton } from \"@evergis/icons\";\n\nimport { LegendHeaderButton } from \"../styled\";\nimport { LegendProps } from \"../types\";\n\ntype LegendHeaderButtonsProps = Pick<LegendProps, 'clearHiddenLegends' | 'goToClassification' | 'isShared'> & {\n layerName: string;\n hasHiddenLegends?: boolean;\n};\n\nexport const LegendHeaderButtons: FC<LegendHeaderButtonsProps> = ({ layerName, hasHiddenLegends, isShared, clearHiddenLegends, goToClassification }) => (\n <>\n {!!goToClassification && !isShared && (\n <LegendHeaderButton>\n <IconButton onClick={goToClassification}>\n <EverCloudClassificationIcon />\n </IconButton>\n </LegendHeaderButton>\n )}\n {!!clearHiddenLegends && (\n <LegendHeaderButton>\n <IconButton\n disabled={!hasHiddenLegends}\n onClick={() => clearHiddenLegends?.(layerName)}\n >\n <EverCloudRefreshIcon />\n </IconButton>\n </LegendHeaderButton>\n )}\n </>\n);\n","import { AttributeType } from '@evergis/api';\n\nimport { getAttributeNameFromCondition, LayerAttribute } from '../../../core';\n\nexport const getConditionAttribute = (\n attributes: LayerAttribute[],\n condition?: string\n): LayerAttribute | null => {\n if (!condition) return null;\n\n const attributeName = getAttributeNameFromCondition(condition) as string;\n\n let attribute: LayerAttribute = attributes.find(\n ({ name }) => name === attributeName\n ) as LayerAttribute;\n\n if (!attribute) {\n if (attributeName === 'count') {\n attribute = {\n name: 'count',\n alias: 'Количество',\n type: AttributeType.Int32,\n };\n } else {\n return null;\n }\n }\n\n return attribute;\n};\n","export const isHiddenLegend = (\n hiddenCondition: string,\n hiddenLegends?: string[]\n): boolean => !!hiddenLegends?.includes(hiddenCondition);\n","import React, { Fragment } from 'react';\n\nimport { ItemSeparator, ItemText, MapLegendDescription } from '../styled';\nimport { i18n } from \"../../../i18n\";\n\nconst renderColumn = (column: string, index?: number) => {\n const dateTime = column.split(' ');\n\n return (\n <Fragment key={index}>\n <ItemText title={column}>\n {dateTime[0]}\n <MapLegendDescription>{dateTime[1]}</MapLegendDescription>\n </ItemText>\n {index === 0 && <ItemSeparator />}\n </Fragment>\n );\n};\n\nexport const getLegendText = ({\n title,\n index,\n isDate,\n}: {\n title?: string;\n index: number;\n isDate: boolean;\n}) => {\n if (!title) {\n return <ItemText>{i18n.t(\"other\", { ns: \"style\" })}</ItemText>;\n }\n\n const columns = title?.split(' - ');\n const isSingleColumn = columns?.length === 1;\n\n if (!isDate || (index && isSingleColumn)) {\n return <ItemText title={title}>{title}</ItemText>;\n }\n\n if (!index && isSingleColumn) {\n return (\n <>\n <ItemText title=\"∞\">∞</ItemText>\n <ItemSeparator />\n {renderColumn(title)}\n </>\n );\n }\n\n return <>{columns.map(renderColumn)}</>;\n};\n","import { LayerDefinitionDc } from '@evergis/api';\n\nimport { LayerAttribute } from './types';\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","import React, { FC } from 'react';\n\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\nimport { ClassifiedItem, MapLegendContainer, SymbolContainer } from '../styled';\nimport {\n createHiddenCondition,\n createValueTitleFromCondition,\n getClassificationValue,\n getTitleFromCondition,\n isRangeCondition,\n} from '../../../utils/legend';\nimport { getConditionAttribute } from '../utils/getConditionAttribute';\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\nimport { getLegendText } from '../utils/getLegendText';\nimport { getLayerAttributes } from '../../../core/attributes/utils';\nimport { LegendChildrenProps } from '../types';\nimport {\n ClassificationCondition,\n ParameterByAttributeValue,\n ParameterValueWithSymbol,\n StyleSymbolType,\n} from '../../../core';\n\nexport const LegendChildren: FC<LegendChildrenProps> = ({\n layerInfo,\n hiddenLegends,\n toggleHiddenLegend,\n clearHiddenLegends,\n formatValue,\n}) => {\n if (!layerInfo?.style?.children?.length) return null;\n\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\n\n return (\n <MapLegendContainer>\n {layerInfo.style.children.map((paramValue, index) => {\n const attribute = getConditionAttribute(\n attributes,\n paramValue.condition\n );\n\n if (!attribute) return null;\n\n const hiddenCondition = createHiddenCondition(\n attribute.name as string,\n attribute.type,\n getClassificationValue(\n paramValue.symbol as StyleSymbolType,\n paramValue.title as string,\n new ClassificationCondition(paramValue.condition as string)\n )\n ) as string;\n\n const legendText = getLegendText({\n title: isRangeCondition(paramValue.condition)\n ? createValueTitleFromCondition(\n paramValue as ParameterByAttributeValue<\n ParameterValueWithSymbol\n >,\n attribute,\n formatValue,\n index\n )\n : getTitleFromCondition({\n condition: paramValue.condition,\n attribute,\n formatValue,\n }),\n index,\n isDate:\n getConditionAttribute(attributes, paramValue.condition)?.type ===\n 'DateTime',\n });\n\n return (\n <ClassifiedItem\n key={index}\n isHidden={isHiddenLegend(\n hiddenCondition,\n hiddenLegends?.[layerInfo.name]\n )}\n onClick={() =>\n toggleHiddenLegend?.(layerInfo.name, hiddenCondition)\n }\n >\n <SymbolContainer>\n <LegendSymbolRenderer\n symbol={paramValue.symbol as StyleSymbolType}\n />\n </SymbolContainer>\n {legendText}\n <LegendHeaderButtons layerName={layerInfo.name} clearHiddenLegends={clearHiddenLegends} />\n </ClassifiedItem>\n );\n })}\n </MapLegendContainer>\n );\n};\n","import React, { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { MapLegendBadge, MapLegendDescriptionContainer } from \"../styled\";\nimport { isParameterType } from \"../../../utils/isParameterType\";\nimport { ClassificationParameterExtended } from \"../../../core\";\n\nexport const LegendParameterDescription: FC<{\n parameter: ClassificationParameterExtended;\n index?: number;\n}> = ({ parameter, index }) => {\n const { t } = useTranslation(\"style\");\n const isSize = isParameterType(\"size\", parameter);\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter);\n\n return (\n <MapLegendDescriptionContainer>\n {isStrokeWidth || isStrokeColor\n ? (isStrokeWidth ? t(\"strokeWidth\") : t(\"strokeColor\"))\n : isSize ? t(\"symbolSize\") : t(\"symbolColor\")}\n {!!index && <MapLegendBadge>{index}</MapLegendBadge>}\n </MapLegendDescriptionContainer>\n );\n};\n","import React, { FC, useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { isNumeric } from \"../../../utils/isNumeric\";\nimport { isParameterType } from \"../../../utils/isParameterType\";\nimport {\n MapLegendItem,\n MapLegendItems,\n MapLegendItemsContainer,\n MapLegendOther,\n MapLegendValueDescr,\n MapLegendValues,\n MapLegendValuesOther,\n MapLegendValuesRange,\n MinimizedLegendContainer,\n SizeMinimizedLegend,\n SizeMinimizedLegendDown,\n SizeMinimizedLegendLabel,\n SizeMinimizedLegendSymbol,\n SizeMinimizedLegendUp\n} from \"../styled\";\nimport { MinimizedLegendProps } from \"../types\";\n\nconst getValueFromLegendTitle = (title: string, minOrMax: \"min\" | \"max\"): string => {\n if (title.includes(\" - \")) {\n const result = title?.split(\" - \");\n\n return minOrMax === \"min\" ? result?.[0] : result?.[1];\n }\n\n if (title.includes(\",\")) {\n const result = title?.split(\",\");\n\n return result.join(\", \");\n }\n\n return title.split(\" \").find(isNumeric) || title || \"\";\n};\n\nexport const MinimizedLegend: FC<MinimizedLegendProps> = ({\n innerRef,\n isShown,\n values,\n title,\n parameter,\n hiddenLegends,\n}) => {\n const { t } = useTranslation(\"style\");\n const currentValues = [...values];\n const other = currentValues.pop();\n const isSize = isParameterType(\"size\", parameter);\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\n const titleMax = getValueFromLegendTitle(currentValues[0]?.title, \"max\");\n const titleMin = getValueFromLegendTitle(currentValues[currentValues.length - 1]?.title, \"min\");\n\n const checkIsHidden = useCallback((hiddenCondition?: string) => hiddenCondition\n ? hiddenLegends?.some(condition => hiddenCondition.includes(condition))\n : false, [hiddenLegends]);\n\n return (\n <MinimizedLegendContainer ref={innerRef} isShown={isShown}>\n {!!title && <MapLegendValueDescr>{title}</MapLegendValueDescr>}\n {isSize ? (\n <>\n <SizeMinimizedLegend>\n <SizeMinimizedLegendSymbol>\n <MapLegendItems parameter={parameter} isSize>\n {currentValues.map((value, index) => (\n <MapLegendItem\n key={`${value.title}${index}`}\n title={value.title}\n value={value.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(value.hiddenCondition)}\n />\n ))}\n </MapLegendItems>\n </SizeMinimizedLegendSymbol>\n <SizeMinimizedLegendLabel>\n <SizeMinimizedLegendDown>{currentValues[0]?.title}</SizeMinimizedLegendDown>\n <SizeMinimizedLegendUp>{currentValues[currentValues.length - 1]?.title}</SizeMinimizedLegendUp>\n </SizeMinimizedLegendLabel>\n </SizeMinimizedLegend>\n <SizeMinimizedLegend>\n <SizeMinimizedLegendSymbol>\n <MapLegendItems parameter={parameter} isSize>\n <MapLegendOther\n title={t(\"other\")}\n value={other?.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(other?.hiddenCondition)}\n />\n </MapLegendItems>\n </SizeMinimizedLegendSymbol>\n <SizeMinimizedLegendLabel>\n <SizeMinimizedLegendUp>{t(\"other\")}</SizeMinimizedLegendUp>\n </SizeMinimizedLegendLabel>\n </SizeMinimizedLegend>\n </>\n ) : isStrokeWidth ? (\n <MapLegendItems parameter={parameter} isStrokeWidth>\n {currentValues.map((value, index) => (\n <MapLegendItem\n key={`${value.title}${index}`}\n title={value.title}\n value={value.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(value.hiddenCondition)}\n >\n {(!index || index === currentValues.length - 1) && value.title}\n </MapLegendItem>\n ))}\n <MapLegendOther\n title={t(\"other\")}\n value={other?.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(other?.hiddenCondition)}\n >\n {t(\"other\")}\n </MapLegendOther>\n </MapLegendItems>\n ) : (\n <MapLegendItems parameter={parameter}>\n <MapLegendItemsContainer>\n {currentValues.map((value, index) => (\n <MapLegendItem\n key={`${value.title}${index}`}\n title={value.title}\n value={value.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(value.hiddenCondition)}\n />\n ))}\n </MapLegendItemsContainer>\n <MapLegendOther\n title={t(\"other\")}\n value={other?.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(other?.hiddenCondition)}\n />\n </MapLegendItems>\n )}\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\n <MapLegendValues>\n <MapLegendValuesRange>\n <div>{titleMax}</div>\n <div>{titleMin}</div>\n </MapLegendValuesRange>\n <MapLegendValuesOther>-</MapLegendValuesOther>\n </MapLegendValues>\n )}\n </MinimizedLegendContainer>\n )\n}\n","import React, { FC, useCallback, useMemo } from 'react';\nimport get from 'lodash/get';\n\nimport {\n ClassifiedItem,\n MapLegendItem,\n MapLegendItems,\n MaximizedLegendContainer,\n SymbolContainer,\n} from '../styled';\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\nimport { isParameterType } from '../../../utils/isParameterType';\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\nimport { getLegendText } from '../utils/getLegendText';\nimport {\n ClassificationParameterExtended,\n getExtractedSymbol,\n getParameterValue,\n isClusterFillColor as isClusterFillColorAction,\n ParameterByAttribute,\n ParameterValue,\n StyleSymbolType,\n} from '../../../core';\nimport { MaximizedLegendProps } from '../types';\n\nexport const MaximizedLegend: FC<MaximizedLegendProps> = ({\n innerRef,\n isShown,\n layerName,\n symbol: sectionSymbol,\n parameter,\n values,\n index: sectionIndex,\n attributeType,\n hiddenLegends,\n toggleHiddenLegend,\n}) => {\n const isDate = attributeType === 'DateTime';\n const isSize = isParameterType(\n 'size',\n parameter as ClassificationParameterExtended\n );\n const isStrokeWidth = isParameterType(\n ['strokeWidth', 'stroke.width'],\n parameter as ClassificationParameterExtended\n );\n const isStrokeColor = isParameterType(\n ['strokeColor', 'stroke.color'],\n parameter as ClassificationParameterExtended\n );\n\n const parameterValue = useMemo(\n () =>\n (get(sectionSymbol, parameter) as unknown) as ParameterByAttribute<\n ParameterValue\n >,\n [sectionSymbol, parameter]\n );\n\n const renderLegend = useCallback(\n ({ symbol, title, hiddenCondition }, index: number) => {\n if (!symbol) return null;\n\n const isClusterFillColor = isClusterFillColorAction(symbol, parameter);\n const value = (getParameterValue(\n parameterValue?.values[index]?.value) || parameterValue?.defaultValue\n ) as string | number;\n\n return (\n <ClassifiedItem\n key={sectionIndex + title + index}\n isHidden={isHiddenLegend(hiddenCondition, hiddenLegends)}\n isClusterFillColor={isClusterFillColor}\n onClick={() => toggleHiddenLegend?.(layerName, hiddenCondition)}\n >\n {isSize || isStrokeWidth || isStrokeColor ? (\n <MapLegendItems\n parameter={parameter as ClassificationParameterExtended}\n isSize={isSize}\n isStrokeWidth={isStrokeWidth}\n isStrokeColor={isStrokeColor}\n isSingle\n >\n <MapLegendItem\n key={`${title}${index}`}\n title={title}\n value={value}\n parameter={parameter as ClassificationParameterExtended}\n />\n </MapLegendItems>\n ) : (\n <SymbolContainer>\n <LegendSymbolRenderer\n index={index}\n symbol={\n isClusterFillColor ? sectionSymbol as StyleSymbolType : getExtractedSymbol(symbol, true)\n }\n />\n </SymbolContainer>\n )}\n {getLegendText({ title, index, isDate })}\n </ClassifiedItem>\n );\n },\n [\n parameter,\n sectionIndex,\n hiddenLegends,\n isSize,\n isStrokeWidth,\n isStrokeColor,\n parameterValue,\n sectionSymbol,\n isDate,\n toggleHiddenLegend,\n layerName,\n ]\n );\n\n return (\n <MaximizedLegendContainer ref={innerRef} isShown={isShown}>\n {values.map(renderLegend)}\n </MaximizedLegendContainer>\n );\n};\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { useCallback, useRef } from 'react';\n\nexport function useCanvas() {\n const canvas = useRef<Canvas | null>(null);\n const ref = useCallback((node: HTMLCanvasElement | null) => {\n if (node !== null) {\n canvas.current = new Canvas(node);\n } else {\n canvas.current = null;\n }\n }, []);\n\n return { canvas, ref };\n}\n","import { useEffect } from 'react';\n\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\n useEffect(() => {\n onMount && onMount();\n return onUnmount;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\ntype UseMountOptions = {\n onMount?: () => void;\n onUnmount?: () => void;\n};\n","import { PropsWithRef, useCallback, useState } from 'react';\n\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\n const [node, onSetNode] = useState<HTMLElement | null>(null);\n\n const ref = useCallback(onSetNode, [onSetNode]);\n\n return [ref, node];\n}\n","import { MutableRefObject, useEffect } from 'react';\nimport { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { Render } from '@evergis/sgis/es/renders/Render';\n\nimport {\n getSymbolRenders,\n renderSymbolToCanvas,\n SGisSymbolType,\n} from '../symbols';\n\nexport interface UseSymbolParams {\n symbol: SGisSymbolType;\n render?: (symbol: SGisSymbolType, size: number) => Promise<Render[]>;\n size?: number;\n maxWidth?: number;\n}\n\nconst DEFAULT_SYMBOL_SIZE = 26;\n\nexport function useSymbol(\n {\n symbol,\n size = DEFAULT_SYMBOL_SIZE,\n render = getSymbolRenders,\n maxWidth,\n }: UseSymbolParams,\n canvasRef: MutableRefObject<Canvas | null>\n) {\n useEffect(() => {\n if (canvasRef.current !== null && symbol !== undefined) {\n const canvas = canvasRef.current;\n setCanvasSize(canvas, size, maxWidth);\n\n render(symbol, size).then(renders => {\n renderSymbolToCanvas(renders, canvas);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [symbol, size, maxWidth]);\n}\n\nfunction setCanvasSize(canvas: Canvas, size: number, maxWidth?: number) {\n canvas.node.height = size;\n canvas.node.width = maxWidth ? Math.min(size, maxWidth) : size;\n}\n","import { useCallback, useState } from \"react\";\n\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\n const [state, setState] = useState(initial !== undefined ? initial : false);\n const toggle = useCallback(() => setState(!state), [state]);\n\n return [state, toggle, setState];\n};\n","import React, { FC } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\nimport { CombinedPolylineSymbolDc, StyleDc } from \"@evergis/api\";\n\nimport { MinimizedLegend } from './MinimizedLegend';\nimport { MaximizedLegend } from './MaximizedLegend';\nimport { LegendParameterDescription } from './LegendParameterDescription';\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\nimport {\n MapLegendExpandButton,\n MapLegendHeader,\n MapLegendSectionContainer,\n MapLegendSectionItems,\n} from '../styled';\nimport {\n getMaximizedLegendValues,\n getMinimizedLegendValues,\n} from '../../../utils/legend';\nimport { isCombinedPolylineSymbol } from \"../../../core\";\nimport { useNode, useToggle } from '../../../hooks';\nimport { LegendSectionProps } from '../types';\n\nexport const LegendSection: FC<LegendSectionProps> = ({\n layerName,\n symbol,\n parameter,\n parameters,\n classified,\n hiddenLegends,\n toggleHiddenLegend,\n clearHiddenLegends,\n goToClassification,\n attribute,\n formatValue,\n index,\n count,\n isShared,\n}) => {\n const { t } = useTranslation(\"style\");\n const [isExpanded, toggleExpanded] = useToggle();\n const [maxRef, maxNode] = useNode();\n const [minRef, minNode] = useNode();\n\n if (!layerName || !attribute) return null;\n\n const currentSymbol = isCombinedPolylineSymbol(symbol as CombinedPolylineSymbolDc)\n ? (symbol as CombinedPolylineSymbol).values[index] as StyleDc['symbol'] : symbol;\n\n return (\n <MapLegendSectionContainer hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}>\n <MapLegendHeader>\n {attribute.alias || attribute.name}\n <LegendHeaderButtons\n layerName={layerName}\n hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}\n clearHiddenLegends={clearHiddenLegends}\n goToClassification={goToClassification}\n isShared={isShared}\n />\n </MapLegendHeader>\n <LegendParameterDescription\n parameter={parameter}\n index={count && index !== undefined ? count - index : 0}\n />\n <MapLegendSectionItems\n minHeight={minNode?.offsetHeight}\n maxHeight={maxNode?.offsetHeight}\n isExpanded={isExpanded}\n >\n <MaximizedLegend\n innerRef={maxRef}\n isShown={isExpanded}\n layerName={layerName}\n symbol={currentSymbol}\n hiddenLegends={hiddenLegends?.[layerName]}\n toggleHiddenLegend={toggleHiddenLegend}\n parameter={parameter}\n attributeType={attribute.type}\n index={index}\n values={getMaximizedLegendValues(\n attribute,\n parameter,\n parameters,\n classified,\n currentSymbol,\n formatValue,\n index,\n t(\"other\")\n )}\n />\n <MinimizedLegend\n innerRef={minRef}\n isShown={!isExpanded}\n hiddenLegends={hiddenLegends?.[layerName]}\n parameter={parameter}\n values={getMinimizedLegendValues(\n attribute,\n classified,\n formatValue,\n index,\n t(\"other\")\n )}\n />\n </MapLegendSectionItems>\n <MapLegendExpandButton onClick={toggleExpanded}>\n {isExpanded ? t('hide') : t('show')}\n </MapLegendExpandButton>\n </MapLegendSectionContainer>\n );\n};\n","import React, { FC, memo, useMemo } from 'react';\n\nimport { LegendSection, LegendChildren } from './components';\nimport { MapLegendContainer } from './styled';\n\nimport { SYMBOL_CLASSIFICATION } from './constants';\n\nimport { getLayerAttributes } from '../../core/attributes/utils';\nimport { getConditionAttribute } from './utils/getConditionAttribute';\n\nimport { ClassifiedList, ClassifiedListItem, classifyParamsReduce, getClassified } from '../../utils/legend';\nimport { ClassificationParameterExtended, isCombinedPolylineSymbol } from '../../core';\nimport { ClassifyParameter, LegendProps } from './types';\n\nexport const Legend: FC<LegendProps> = memo(\n ({ layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification, ...rest }) => {\n if (!layerInfo) return null;\n\n if (layerInfo.style?.children?.length) {\n return (\n <LegendChildren\n layerInfo={layerInfo}\n formatValue={formatValue}\n hiddenLegends={hiddenLegends}\n toggleHiddenLegend={toggleHiddenLegend}\n clearHiddenLegends={clearHiddenLegends}\n goToClassification={goToClassification}\n />\n );\n }\n\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\n\n const renderItems = useMemo(() => {\n const parameters = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\n const props = {\n layerName: layerInfo.name,\n symbol: layerInfo.style?.symbol,\n parameters: parameters as ClassificationParameterExtended[],\n formatValue: formatValue,\n hiddenLegends: hiddenLegends,\n toggleHiddenLegend: toggleHiddenLegend,\n clearHiddenLegends: clearHiddenLegends,\n goToClassification: goToClassification,\n };\n\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\n const values = layerInfo.style?.symbol?.values?.reduce((result, symbol, index) => {\n return [classifyParamsReduce(symbol, parameters as ClassifyParameter[], index) as ClassifiedList, ...result];\n }, [] as ClassifiedList[]);\n\n return (\n <>\n {values?.map((value, index) => Object.keys(value).map((param, keyIndex) => {\n const item = value[param as ClassifyParameter] as ClassifiedListItem;\n\n return (\n <LegendSection\n key={[keyIndex, index].join(\"-\")}\n index={item?.index as number}\n count={values?.length}\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\n parameter={param as ClassificationParameterExtended}\n classified={item}\n {...props}\n {...rest}\n />\n );\n }))}\n </>\n );\n }\n\n const classified = getClassified(layerInfo);\n\n if (!classified) return null;\n\n return (\n <>\n {Object.keys(classified).map((param, keyIndex) => {\n const item = classified[param as keyof ClassifiedList] as ClassifiedListItem;\n\n return (\n <LegendSection\n key={[keyIndex, item.index].join(\"-\")}\n index={item.index as number}\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\n parameter={param as ClassificationParameterExtended}\n classified={item}\n {...props}\n {...rest}\n />\n );\n })}\n </>\n );\n }, [layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification]);\n\n return (\n <MapLegendContainer>\n {renderItems}\n </MapLegendContainer>\n );\n }\n);\n","import React from 'react';\n\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\n\ninterface Props extends UseSymbolParams {}\n\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\n const { canvas, ref } = useCanvas();\n useSymbol({ symbol, size, render }, canvas);\n\n return <canvas ref={ref} />;\n};\n","import { GeometryType } from '@evergis/api';\nimport styled from 'styled-components';\n\nexport type CompoundIconProps = {\n geometryType: GeometryType;\n icons: Record<GeometryType, string>;\n};\n\nexport const CompoundIcon = styled.div<CompoundIconProps>`\n background: ${({ geometryType, icons }) =>\n `url(${icons[geometryType]}) center center / ${\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\n } no-repeat`};\n height: 32px;\n width: 32px;\n`;\n\nexport const ClusterSymbol = styled.div<{ color?: string }>`\n position: relative;\n width: 32px;\n height: 32px;\n\n :before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: inherit;\n height: inherit;\n background-color: ${({ color }) => color};\n border-radius: 50%;\n opacity: 0.28;\n }\n \n :after {\n content: \"99\";\n position: absolute;\n top: 4px;\n left: 4px;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n background-color: ${({ color }) => color};\n border-radius: 50%;\n color: white;\n font-size: 0.75rem;\n line-height: 1;\n }\n`;\n","import React, { PropsWithChildren } from 'react';\nimport { SvgPointSymbolDc } from \"@evergis/api\";\n\nimport { Symbol } from './Symbol';\nimport { ClusterSymbol } from \"./styled\";\nimport { getParameterValue, StyleSymbolType } from '../../core';\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\n\ntype StyleSymbolProps = PropsWithChildren<{\n symbol: StyleSymbolType;\n size?: number;\n}>;\n\nconst MAX_SIZE = 32;\n\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\n symbol,\n size = MAX_SIZE,\n children,\n}) => {\n if (children) {\n return <>{children}</>;\n }\n\n let sGisSymbol = null;\n\n try {\n sGisSymbol = deserializeSymbol(symbol);\n } catch (e) {\n // TODO generate Error symbol\n }\n\n if (!sGisSymbol) {\n return null;\n }\n\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\n\n return <ClusterSymbol color={color} />\n }\n\n return (\n <Symbol\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\n size={size}\n />\n );\n};\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 { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nexport const polygonCircleFromPoint = (\n center: Coordinates,\n diameter: number\n): Coordinates[][] => {\n const coordinates: Coordinates[] = [];\n const radius = diameter / 2;\n const endAngle = Math.PI * 2;\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\n let start = 0;\n let end = endAngle;\n\n for (let ang = start; ang < end; ang += step) {\n coordinates.push([\n Math.cos(ang) * radius + center[0],\n Math.sin(ang) * radius + center[1],\n ]);\n }\n\n return [coordinates];\n};\n"],"names":["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","CircleLineMiterRender","polygonCircleFromPoint","SquareLineMiterRender","getLineMiterRender","options","updateRingForRightMiter","isLastRing","reversedRing","reverse","coordinates","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","ringIndex","copyRings","SGisPolylineSymbol","feature","crs","renders","featureCopy","clone","beginningMiterRender","endingMiterRender","updatedRings","usageSize","render","getRender","unshift","sPolylineSymbol","ShadowedPointSymbol","PointFeature","projectTo","pxPosition","shadowRender","getShadow","pointArc","getPoint","_feature","mapCoordinates","getShadowArc","getPointArc","shadowColor","shadowSize","Arc","radius","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","metersToPixels","meters","painter","geo","zeroPoint","getPointFromPxPosition","maxWidthPoint","widthDistance","distance","pxK","defaultPathStyles","SVGPoly","redrawFeatureNode","pathStyles","circle","className","appendToSvg","container","getRenderedCoordinates","centroid","setCirclePxRaius","innerHTML","setSvg","append","__dynamicSymbolRender","DynamicRender","node","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","getSymbolRenders","features","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","useSvgSymbol","skipOffset","SVGWrapperRefElement","useRef","useMemo","SVG","initSvg","useCallback","addTo","current","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","React","ref","useEffect","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","useCanvas","Canvas","useMount","onMount","onUnmount","useNode","onSetNode","useState","useSymbol","canvasRef","maxWidth","setCanvasSize","then","useToggle","state","setState","toggle","LegendSection","parameters","count","toggleExpanded","maxRef","maxNode","minRef","minNode","currentSymbol","offsetHeight","Legend","rest","renderItems","keyIndex","CompoundIcon","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","sGisSymbol","e","LegendContext","createContext","LegendProvider","Provider","useLegendContext","useContext","diameter","endAngle","start","end","ang","cos","sin"],"mappings":"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"}
1
+ {"version":3,"file":"react.cjs.development.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/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/utils/metersToPixels.ts","../src/symbols/SVGPoly/index.ts","../src/symbols/guards.ts","../src/symbols/mockFeatures.ts","../src/symbols/getSymbolRenders.ts","../src/symbols/renderSymbolToCanvas.ts","../src/symbols/deserializeSymbol.ts","../src/symbols/adjustSymbol.ts","../src/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/hooks/useCanvas.ts","../src/hooks/useMount.ts","../src/hooks/useNode.ts","../src/hooks/useSymbol.ts","../src/hooks/useToggle.ts","../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","../src/contexts/LegendContext.tsx","../src/utils/polygonCircleFromPoint.ts"],"sourcesContent":["import { ClassificationParameterExtended } from '../core';\n\ntype IsParameterType = 'size' | 'strokeWidth' | 'stroke.width' | 'strokeColor' | 'stroke.color';\n\nexport const isParameterType = (\n types: IsParameterType | Array<IsParameterType>,\n parameter?: ClassificationParameterExtended,\n): boolean => (typeof types === 'string'\n ? parameter?.toLowerCase()?.includes(types.toLowerCase())\n : types.some(type => parameter?.toLowerCase()?.includes(type.toLowerCase()))) || false;\n","import { MouseEventHandler } from 'react';\nimport styled, { css } from 'styled-components';\nimport { IconButton } from \"@evergis/icons\";\n\nimport { isParameterType } from '../../utils/isParameterType';\n\nimport { ClassificationParameterExtended } from '../../core';\nimport { MapLegendItemProps } from './types';\n\nexport const MapLegendDescription = styled.div`\n font-size: 0.75rem;\n`;\n\nexport const ItemText = styled.div`\n max-width: calc(100% - 2rem);\n font: ${({ theme: { fonts } }) => fonts.description};\n`;\n\nexport const ItemSeparator = styled.div`\n :after {\n content: '-';\n margin: 0 0.5rem;\n font-size: 0.75rem;\n }\n`;\n\nexport const SymbolContainer = styled('span')`\n display: flex;\n justify-content: center;\n min-width: 1.5rem;\n margin-right: 0.5rem;\n`;\n\nexport const ClassifiedItem = styled.div<{\n isHidden?: boolean;\n isClusterFillColor?: boolean;\n}>`\n display: flex;\n flex-direction: row;\n align-items: center;\n cursor: ${({ isClusterFillColor }) =>\n isClusterFillColor ? 'default' : 'pointer'};\n pointer-events: ${({ isClusterFillColor }) =>\n isClusterFillColor ? 'none' : 'auto'};\n\n :not(:last-of-type) {\n margin-bottom: 0.25rem;\n }\n\n ${ItemText}, ${SymbolContainer} {\n transition: opacity 150ms;\n }\n\n ${ItemText} {\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 0.65)};\n }\n\n ${SymbolContainer} {\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\n }\n\n :hover {\n ${ItemText}, ${SymbolContainer} {\n opacity: 1;\n }\n }\n\n ${IconButton} {\n margin-left: 0.5rem;\n }\n`;\n\nconst SymbolButtonWithClick = css`\n width: 3.875rem;\n height: 3.875rem;\n cursor: pointer;\n\n &:hover {\n background-color: ${({ theme: { palette } }) => palette.elementDeep};\n }\n`;\n\nexport const SymbolButton = styled.span<{\n onClick?: MouseEventHandler<HTMLSpanElement> | null;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 150ms;\n ${({ onClick }) => !!onClick && SymbolButtonWithClick};\n\n svg {\n max-width: 4rem;\n max-height: 4rem;\n }\n`;\n\nexport const MapLegendContainer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n padding-bottom: 1rem;\n box-sizing: border-box;\n\n canvas {\n height: 1.625rem;\n width: 1.625rem;\n }\n`;\n\nexport const MapLegendHeader = styled.div`\n max-width: 15rem;\n margin-bottom: 0.25rem;\n font-size: 0.75rem;\n font-weight: bold;\n`;\n\nexport const MapLegendDescriptionContainer = styled.div`\n margin-bottom: 0.5rem;\n font-weight: 400;\n font-size: 0.625rem;\n color: rgba(48, 69, 79, 0.65);\n`;\n\nexport const MapLegendBadge = styled.span`\n min-width: 0.5rem;\n height: 0.75rem;\n display: inline-block;\n margin-left: 0.25rem;\n padding: 0.125rem 0.25rem;\n border-radius: ${({ theme: { borderRadius } }) => borderRadius.xSmall};\n background-color: ${({ theme: { palette } }) => palette.element};\n color: ${({ theme: { palette } }) => palette.textPrimary};\n text-align: center;\n`;\n\nexport const MaximizedLegendContainer = styled.div<{ isShown?: boolean }>`\n position: ${({ isShown }) => (isShown ? 'relative' : 'absolute')};\n top: 0;\n opacity: ${({ isShown }) => (isShown ? 1 : 0)};\n visibility: ${({ isShown }) => (isShown ? 'visible' : 'hidden')};\n overflow: hidden;\n transition: opacity 0.5s, visibility 0.5s;\n`;\n\nexport const MinimizedLegendContainer = styled(MaximizedLegendContainer)`\n width: calc(100% - 1.5rem);\n padding-right: 1.5rem;\n`;\n\nexport const LegendHeaderButton = styled.span``;\n\nexport const MapLegendSectionContainer = styled.div<{ hasHiddenLegends?: boolean }>`\n width: 100%;\n\n :not(:last-child) {\n margin-bottom: 1rem;\n }\n\n ${LegendHeaderButton} {\n padding-left: 0.75rem;\n visibility: hidden;\n\n :first-child {\n padding-left: 1rem;\n }\n\n :last-child {\n margin-left: 0.75rem;\n border-left: 1px ${({ theme: { palette }}) => palette.elementDeep} solid;\n }\n }\n \n :hover {\n ${LegendHeaderButton} {\n visibility: visible;\n }\n }\n`;\n\nexport const MapLegendSectionItems = styled.div<{\n minHeight?: number;\n maxHeight?: number;\n isExpanded?: boolean;\n}>`\n position: relative;\n height: ${({ minHeight, maxHeight, isExpanded }) =>\n isExpanded ? (maxHeight || 0) + 4 : minHeight}px;\n overflow: ${({ isExpanded }) => (isExpanded ? 'none' : 'hidden')};\n transition: height 0.5s;\n`;\n\nexport const MapLegendValueDescr = styled.div`\n min-height: 1rem;\n margin-bottom: 0.25rem;\n font-size: 0.75rem;\n font-weight: 600;\n line-height: 1rem;\n`;\n\nconst SizeLegendItemMixin = (value = 0) => css`\n position: absolute;\n bottom: 0;\n left: 50%;\n display: flex;\n align-items: flex-end;\n flex: none;\n height: inherit;\n width: inherit;\n margin: 0 auto;\n background: none;\n border: none;\n\n :after {\n content: '';\n display: flex;\n border: 1px rgba(48, 69, 79, 0.28) solid;\n border-radius: 50%;\n margin: 0 0 0 -${value / 2}px;\n width: ${value}px;\n height: ${value}px;\n }\n`;\n\nconst StrokeWidthLegendItemMixin = (value = 0) => css`\n position: relative;\n background: none;\n border: none;\n display: flex;\n align-items: center;\n flex: none;\n width: calc(100% - 2rem);\n height: ${value}px;\n margin: 0 0 0.25rem 0;\n padding-left: 2rem;\n font-size: 0.75rem;\n\n :first-child,\n :last-child {\n height: auto;\n }\n\n :after {\n content: '';\n position: absolute;\n top: 50%;\n left: 0;\n width: 1.5rem;\n height: ${value}px;\n margin-top: -${Math.round(value / 2)}px;\n background: rgb(224, 224, 224);\n }\n`;\n\nconst StrokeColorLegendItemMixin = css`\n margin-right: 0.5rem;\n width: 1.5rem;\n`;\n\nexport const MapLegendItem = styled.div<MapLegendItemProps>`\n flex: 1;\n height: ${({ parameter }) =>\n isParameterType(\n ['strokeColor', 'stroke.color'],\n parameter as ClassificationParameterExtended\n )\n ? 0.25\n : 1}rem;\n background: ${({ value }) => (typeof value === 'number' ? 'none' : value)};\n border: 1px rgba(48, 69, 79, 0.1) solid;\n margin-right: -1px;\n color: rgba(48, 69, 79, 0.65);\n opacity: ${({ isHidden }) => (isHidden ? 0.28 : 1)};\n\n ${({ value, parameter }) =>\n isParameterType('size', parameter as ClassificationParameterExtended) &&\n SizeLegendItemMixin(value as number)}\n\n ${({ value, parameter }) =>\n isParameterType(\n ['strokeWidth', 'stroke.width'],\n parameter as ClassificationParameterExtended\n ) && StrokeWidthLegendItemMixin(value as number)}\n`;\n\nexport const MapLegendOther = styled(MapLegendItem)`\n display: flex;\n align-items: center;\n flex: none;\n position: relative;\n width: 1rem;\n margin-left: 0.25rem;\n border-radius: 0.125rem;\n`;\n\nconst SizeLegendItemsMixin = css`\n position: relative;\n width: 2rem;\n height: 2rem;\n margin: 0 auto;\n\n ${MapLegendOther} {\n width: auto;\n margin-left: 0;\n }\n`;\n\nconst StrokeWidthLegendItemsMixin = css`\n position: relative;\n flex-direction: column;\n width: auto;\n\n ${MapLegendOther} {\n width: calc(100% - 2rem);\n margin-left: 0;\n }\n`;\n\nexport const SizeMinimizedLegend = styled.div`\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n margin: 0.5rem 0 0.25rem;\n`;\n\nexport const SizeMinimizedLegendSymbol = styled.div`\n width: 4rem;\n margin-right: 0.75rem;\n`;\n\nexport const SizeMinimizedLegendLabel = styled.div`\n max-width: 9.75rem;\n font-size: 0.75rem;\n`;\n\nexport const SizeMinimizedLegendDown = styled.div`\n color: rgba(48, 69, 79, 0.65);\n`;\n\nexport const SizeMinimizedLegendUp = styled(SizeMinimizedLegendDown)``;\n\nconst SingleSizeLegendItemsMixin = css`\n width: 4rem;\n margin-right: 0.75rem;\n\n ${MapLegendItem}:after {\n margin: 0 auto;\n }\n`;\n\nconst SingleLegendItemsMixin = css<{\n parameter: ClassificationParameterExtended;\n isSize?: boolean;\n}>`\n justify-content: center;\n width: 2rem;\n height: auto;\n margin: 0;\n ${({ isSize }) => isSize && SingleSizeLegendItemsMixin}\n\n ${MapLegendItem} {\n position: relative;\n top: 0;\n left: 0;\n display: flex;\n align-content: center;\n justify-content: center;\n margin: 0;\n height: auto;\n width: auto;\n\n ${({ parameter }) =>\n isParameterType(\n ['strokeColor', 'stroke.color'],\n parameter as ClassificationParameterExtended\n ) && StrokeColorLegendItemMixin}\n }\n`;\n\nexport const MapLegendItems = styled.div<{\n parameter: ClassificationParameterExtended;\n isSize?: boolean;\n isStrokeWidth?: boolean;\n isStrokeColor?: boolean;\n isSingle?: boolean;\n}>`\n display: flex;\n align-items: center;\n width: 100%;\n border-radius: 0.125rem;\n\n ${({ isSize }) => isSize && SizeLegendItemsMixin};\n ${({ isStrokeWidth }) => isStrokeWidth && StrokeWidthLegendItemsMixin};\n ${({ isSingle }) => isSingle && SingleLegendItemsMixin};\n`;\n\nexport const MapLegendItemsContainer = styled.div`\n display: flex;\n width: 100%;\n\n ${MapLegendItem} {\n :first-child {\n border-top-left-radius: 0.125rem;\n border-bottom-left-radius: 0.125rem;\n }\n\n :last-child {\n border-top-right-radius: 0.125rem;\n border-bottom-right-radius: 0.125rem;\n }\n }\n`;\n\nexport const MapLegendValues = styled.div`\n display: flex;\n width: 100%;\n margin-top: 0.5rem;\n font-size: 0.75rem;\n color: rgba(48, 69, 79, 0.65);\n`;\n\nexport const MapLegendValuesRange = styled.div`\n display: flex;\n justify-content: space-between;\n width: calc(100% - 1.25rem);\n\n div {\n flex: 1;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n\n :first-child {\n margin-right: 0.5rem;\n }\n\n :last-child {\n margin-left: 0.5rem;\n text-align: right;\n }\n }\n`;\n\nexport const MapLegendValuesOther = styled(MapLegendOther)`\n justify-content: center;\n border: 0;\n overflow: visible;\n`;\n\nexport const MapLegendExpandButton = styled.div`\n cursor: pointer;\n margin-top: 0.1rem;\n font-size: 0.625rem;\n color: #1fb3aa;\n`;\n\nexport const ClusterLegendContainer = styled.div`\n margin: -0.9rem;\n transform: scale(0.5);\n`;\n","import { parseJSON, parseISO, isValid, format, toDate } from \"date-fns\";\n\nexport const NO_CONTENT_VALUE = '—';\n\nexport type DateType = number | Date;\nexport type RawDateType = string | DateType;\n\nexport enum DateFormat {\n ClientDefaultFormat = \"dd.MM.yyyy HH:mm\",\n DateTime = \"dd.MM.yyyy HH:mm:ss\",\n UTC = \"yyyy-MM-dd'T'HH:mm:ss.sssxxx\",\n AxisTooltip = \"d MMMM yyyy\",\n}\n\ninterface FormatDateOptions {\n dateFormat?: DateFormat;\n defaultValue?: RawDateType;\n}\n\nconst stringDateParsers: ((date: string) => DateType)[] = [parseJSON, parseISO, rawDate => new Date(rawDate)];\n\nexport const getDate = (rawDate?: RawDateType | null): Date | null => {\n if (!rawDate) return null;\n\n if (typeof rawDate === \"string\") {\n for (const parser of stringDateParsers) {\n const date = parser(rawDate);\n\n if (isValid(date)) {\n return toDate(date);\n }\n }\n\n return null;\n }\n\n const parsedDate = toDate(rawDate);\n\n return isValid(parsedDate) ? parsedDate : null;\n};\n\nexport const formatDate = (\n date?: RawDateType,\n { dateFormat = DateFormat.ClientDefaultFormat, defaultValue = NO_CONTENT_VALUE }: FormatDateOptions = {},\n): string => {\n const dateValue = date ? getDate(date) : null;\n\n if (isValid(dateValue)) {\n return format(dateValue as Date, dateFormat);\n }\n\n return defaultValue.toString();\n};\n","export function numberWithSpaces(\n x: number,\n fractionDigits = 2,\n delim: ',' | '.' | '' = ','\n): string {\n const [num, frac] = x.toFixed(fractionDigits).split('.');\n const numWithSpaces = num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return [numWithSpaces, frac].join(delim);\n}\n","export function matchPhone(value: string) {\n const phoneRegexp = /((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/g;\n\n return !isStringAsInn(value) && value.match(phoneRegexp);\n}\n\nexport function isStringAsInn(value: string) {\n const innRegexp = /^(([0-9]{12})|([0-9]{10}))$/;\n\n return innRegexp.test(value);\n}\n\nexport function isStringAsKpp(value: string) {\n const kppRegexp = /^(([0-9]{9}))$/;\n\n return kppRegexp.test(value);\n}\n\nexport function isStringAsOgrn(value: string) {\n const ogrnRegexp = /^([0-9]{13})?$/;\n\n return ogrnRegexp.test((+value).toString());\n}\n\nexport function isStringContainsDate(value: string) {\n const dateRegexp = /\\d{4}(-|\\/)\\d{2}(-|\\/)\\d{2}/g;\n return dateRegexp.test(value);\n}\n\nexport function isRequisiteNumbers(value: string) {\n return isStringAsInn(value) || isStringAsKpp(value) || isStringAsOgrn(value);\n}\n\nexport function isStringAsPhone(value: string) {\n const phoneRegexp = /^((8|\\+7)[- ]?)?(\\(?\\d{3,4}\\)?[- ]?)?[\\d\\- ]{7,10}/;\n\n return (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phoneRegexp.test(value)\n );\n}\n\nexport function isStringAsMail(value: string) {\n return isStringAsUrl(value) && value.includes('@');\n}\n\nexport function isStringAsUrl(value: string) {\n if (isValidUrl(value)) {\n return true;\n }\n\n const urlRegexp = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\n\n const urlKind = value.match(urlRegexp);\n\n return urlKind !== null;\n}\n\nexport function isValidUrl(value: string) {\n try {\n new URL(value);\n } catch (_) {\n return false;\n }\n\n return true;\n}\n\nexport const mailHref = (mail: string) => `mailto:${mail}`;\n\nexport const phoneHref = (mail: string) => `tel:${mail}`;\n\nexport const urlHref = (url: string) => (isValidUrl(url) ? url : `//${url}`);\n","import { AttributeValue, AttributeValueType, FeatureAttribute } from './types';\n\nimport { NO_CONTENT_VALUE } from \"../../utils/date\";\nimport { numberWithSpaces } from '../../utils/format';\nimport {\n isStringAsMail,\n isStringAsPhone,\n isStringAsUrl,\n matchPhone,\n isRequisiteNumbers,\n isStringAsOgrn,\n isStringContainsDate,\n} from '../../utils/url';\n\nconst stringAttribute = (value: string) => ({\n type: AttributeValueType.String,\n value,\n});\n\nconst urlAttribute = (value: string) => ({\n type: AttributeValueType.Url,\n value,\n});\n\nconst mailAttribute = (value: string) => ({\n type: AttributeValueType.Mail,\n value,\n});\n\nconst phoneAttribute = (value: string) => ({\n type: AttributeValueType.Phone,\n value,\n});\n\nconst convertStringAttribute = (value: string) => {\n if (isStringAsMail(value)) {\n return mailAttribute(value);\n }\n\n if (isStringAsUrl(value)) {\n return urlAttribute(value);\n }\n\n if (isStringAsPhone(value)) {\n return phoneAttribute(value);\n }\n\n return stringAttribute(value);\n};\n\nconst formatStringAttribute = (value: string): AttributeValue[] => {\n const phones = matchPhone(value);\n\n if (\n !isRequisiteNumbers(value) &&\n !isStringContainsDate(value) &&\n phones &&\n phones.length\n ) {\n return phones.map(phoneAttribute);\n }\n\n const attributeValues = value.split(/[\\s|]/).map(convertStringAttribute);\n\n if (attributeValues.every(({ type }) => type === AttributeValueType.String)) {\n return [\n stringAttribute(\n attributeValues\n .map(({ value }) =>\n isNaN(+value) || isRequisiteNumbers(value)\n ? isStringAsOgrn(value)\n ? +value\n : value\n : numberWithSpaces(+value, 0, '')\n )\n .join(' ')\n ),\n ];\n }\n\n return attributeValues;\n};\n\nconst formatDateTimeAttribute = (value: Date): AttributeValue =>\n stringAttribute(value.toString());\n\nconst formatIntAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, 0, ''));\n\nconst DOUBLE_FRACTIONS = 2;\n\nconst formatDoubleAttribute = (value: number): AttributeValue =>\n stringAttribute(numberWithSpaces(value, DOUBLE_FRACTIONS, '.'));\n\nconst isNullOrUndefined = <Value>(\n value: Value | null | undefined\n): value is null | undefined => value === null || value === undefined;\n\nconst NO_CONTENT_ATTRIBUTE = {\n type: AttributeValueType.String,\n value: NO_CONTENT_VALUE,\n};\n\nexport const formatAttributeValue = (\n attribute: FeatureAttribute\n): AttributeValue[] => {\n if (isNullOrUndefined(attribute.value)) {\n return [NO_CONTENT_ATTRIBUTE];\n }\n\n switch (attribute.type) {\n case 'String':\n return formatStringAttribute(attribute.value as string);\n case 'DateTime':\n return [formatDateTimeAttribute(attribute.value as Date)];\n case 'Int32':\n case 'Int64':\n return [formatIntAttribute(attribute.value as number)];\n case 'Double':\n return [formatDoubleAttribute(attribute.value as number)];\n default:\n return [NO_CONTENT_ATTRIBUTE];\n }\n};\n","import {\n ClassifyAble,\n ParameterValue,\n ParameterValueWithSymbol,\n} from '../style';\n\nimport { ClassificationAttribute } from '../attributes';\n\nexport type NestedClassificationParameters =\n | 'fill.color'\n | 'fill.hatchColor'\n | 'stroke.width'\n | 'stroke.color'\n | 'background.fillColor'\n | 'background.strokeColor'\n | 'background.strokeWidth'\n | 'figure.fillColor'\n | 'figure.strokeColor'\n | 'figure.strokeWidth';\n\nexport type SimpleClassificationParameters =\n | 'fillColor'\n | 'strokeColor'\n | 'strokeWidth'\n | 'size'\n | 'symbol'\n | 'angle'\n | 'maskedColor';\n\nexport type ClassificationParameter =\n | NestedClassificationParameters\n | SimpleClassificationParameters;\n\nexport type ClassificationParameterExtended =\n | ClassificationParameter\n | 'width'\n | 'height';\n\nexport interface ClassBase {\n title: string | null;\n parameterValue: ParameterValueWithSymbol;\n attribute?: ClassificationAttribute;\n}\n\nexport type UniqueClass = ClassBase & {\n uniqueValue: string;\n};\n\nexport type RangeClass = ClassBase & {\n from: number | string | null;\n to: number | string | null;\n};\n\nexport type ClassificationClass = UniqueClass | RangeClass;\nexport type ClassificationValues = ClassificationClass[];\n\nexport const enum ClassificationType {\n Range,\n Unique,\n}\n\nexport interface Classification<\n Type extends ClassificationType = ClassificationType,\n Value extends ClassificationClass = ClassificationClass\n> {\n parameter?: ClassificationParameterExtended;\n attribute?: string;\n type: Type;\n values: Value[];\n}\n\nexport type RangeClassification = Classification<\n ClassificationType.Range,\n RangeClass\n>;\n\nexport type UniqueClassification = Classification<\n ClassificationType.Unique,\n UniqueClass\n>;\n\nexport interface ClassificationExtras {\n defaultTitle: string;\n defaultValue: ParameterValueWithSymbol;\n}\n\nexport type ExtendedClassification<\n Type extends ClassificationType = ClassificationType,\n Value extends ClassificationClass = ClassificationClass\n> = Classification<Type, Value> & ClassificationExtras;\n\nexport function isRangeClass(value: ClassificationClass): value is RangeClass {\n return Boolean(value && 'from' in value);\n}\n\nexport function isUniqueClass(\n value: ClassificationClass\n): value is UniqueClass {\n return Boolean(value && 'uniqueValue' in value);\n}\n\nexport type ParameterValueModifier = (\n parameterValue: ClassifyAble<ParameterValue>\n) => ClassifyAble<ParameterValue> | void;\n","import {\n ConditionInterpreter,\n Expression,\n TokenType,\n} from '@evergis/condition';\n\nimport { ClassificationType } from './types';\n\nconst NULL_EXPRESSION: Expression = {\n // @ts-ignore TODO\n attribute: null,\n // @ts-ignore TODO\n operation: null,\n value: null,\n};\n\nexport class ClassificationCondition {\n private readonly condition: string;\n private readonly expressions: Expression[] = [];\n\n constructor(condition: string) {\n this.condition = condition;\n const conditionResult = new ConditionInterpreter(condition).value;\n\n this.expressions =\n conditionResult instanceof Error ? [] : conditionResult.expressions;\n }\n\n public get attributeName() {\n return this.leftExpression.attribute;\n }\n\n public get uniqueValue() {\n if (this.isUnique()) {\n const { value } = this.leftExpression;\n\n return typeof value === 'string' ? value : '';\n }\n\n console.warn(`Trying to get unique from range condition ${this.condition}`);\n\n return '';\n }\n\n public get range(): [number, number] {\n if (!this.isRange()) {\n console.warn(\n `Trying to get range from unique condition ${this.condition}`\n );\n\n return [0, 0];\n }\n\n if (this.expressions.length === 2) {\n const { value: from } = this.leftExpression;\n const { value: to } = this.rightExpression;\n\n return [from, to] as [number, number];\n }\n\n if (this.expressions.length === 1) {\n const { operation, value } = this.leftExpression;\n const isFrom = operation === TokenType.ArGr;\n\n return [isFrom ? value : null, isFrom ? null : value] as [number, number];\n }\n\n return [0, 0];\n }\n\n public get type(): ClassificationType {\n return this.isUnique()\n ? ClassificationType.Unique\n : ClassificationType.Range;\n }\n\n public isUnique() {\n return this.leftExpression.operation === TokenType.ArEq;\n }\n\n public isRange() {\n return [\n TokenType.ArGr,\n TokenType.ArGre,\n TokenType.ArLs,\n TokenType.ArLse,\n ].includes(this.leftExpression.operation);\n }\n\n public toString() {\n return this.condition;\n }\n\n private get leftExpression(): Expression {\n return this.expressions.length > 0 ? this.expressions[0] : NULL_EXPRESSION;\n }\n\n private get rightExpression(): Expression {\n return this.expressions.length > 1 ? this.expressions[1] : NULL_EXPRESSION;\n }\n}\n","import { ClassificationParameterExtended } from './types';\n\nexport const PARAMETER_SEPARATOR = '.';\n\nexport const parameterToPaths = (\n parameter: ClassificationParameterExtended\n): ClassificationParameterExtended[] =>\n parameter.split(PARAMETER_SEPARATOR) as ClassificationParameterExtended[];\n\nexport const pathsToParameter = (\n paths: ClassificationParameterExtended[]\n): ClassificationParameterExtended =>\n paths.join(PARAMETER_SEPARATOR) as ClassificationParameterExtended;\n","export function isObject<T>(value: T | object): value is object {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { parameterToPaths } from './parameter';\nimport {\n ClassificationParameterExtended,\n ParameterValueModifier,\n} from './types';\n\nimport {\n CalculatedAble,\n CalculatedParameter,\n ClassifyAble,\n ParameterByAttribute,\n ParameterValue,\n ParameterValueWithSymbol,\n StyleSymbolType,\n UnidentifiedParameterValue,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nexport const isParameterByAttribute = (\n value: UnidentifiedParameterValue\n): value is ParameterByAttribute<ParameterValueWithSymbol> =>\n Boolean(\n isObject(value) &&\n (value as ParameterByAttribute<ParameterValueWithSymbol>)?.type ===\n 'byAttribute'\n );\n\nexport const isCalculatedParameter = (\n value: UnidentifiedParameterValue\n): value is CalculatedParameter<ParameterValueWithSymbol> =>\n Boolean(\n isObject(value) &&\n (value as CalculatedParameter<ParameterValueWithSymbol>)?.type ===\n 'calculated'\n );\n\nexport const getParameterValue = <Value extends ParameterValueWithSymbol>(\n value: ClassifyAble<Value> | CalculatedAble<Value>\n): Value => {\n if (isParameterByAttribute(value) || isCalculatedParameter(value)) {\n return value.defaultValue;\n }\n\n return value;\n};\n\nexport const symbolParameterWalker = (\n valueModifier: ParameterValueModifier\n) => <S extends StyleSymbolType>(\n symbol: S,\n parameter: ClassificationParameterExtended | ClassificationParameterExtended[]\n): S => {\n const paths = Array.isArray(parameter)\n ? parameter\n : parameterToPaths(parameter);\n const [firstKey, ...restKeys] = paths;\n\n // @ts-ignore\n const symbolPart = symbol[firstKey];\n\n if (restKeys.length) {\n const goDeeper = symbolParameterWalker(valueModifier);\n\n return {\n ...symbol,\n [firstKey]: goDeeper(symbolPart, restKeys) || symbolPart,\n };\n }\n\n return {\n ...symbol,\n [firstKey]: valueModifier(symbolPart) || symbolPart,\n };\n};\n\nexport const setDefaultParameterValue = symbolParameterWalker(\n getParameterValue\n);\n\nexport const setParameterValue = <S extends StyleSymbolType>(\n symbol: S,\n path: ClassificationParameterExtended,\n value: ClassifyAble<ParameterValue>\n): S => symbolParameterWalker(() => value)(symbol, path);\n\nexport function applyParameterValue(\n symbol: StyleSymbolType,\n path: ClassificationParameterExtended,\n value: ClassifyAble<ParameterValue>\n) {\n if (path === 'symbol') {\n return value as StyleSymbolType;\n }\n\n return setParameterValue(symbol, path, value);\n}\n","import { LineEndingType, ParameterDcColor, ParameterDcDouble } from '@evergis/api';\n\nimport { CalculatedAble, ClassifyAble } from './parameterValue';\nimport { Offset } from './offset';\nimport { LineMiterSize } from './miters';\nimport { StyleSymbolType } from './symbol';\nimport { FillBrushType, StrokeBrushType, TextBackgroundType } from './brush';\n\ntype ToClientSymbolField<\n F,\n IsClassifyable extends boolean\n> = F extends ParameterDcDouble\n ? IsClassifyable extends true\n ? ClassifyAble<number>\n : number\n : F extends ParameterDcColor\n ? IsClassifyable extends true\n ? ClassifyAble<string>\n : string\n : F;\n\ntype ExtraClientSymbolFields = {\n offset: Offset;\n /* TODO: DC has other type */\n fontWeight: number;\n childSymbols: StyleSymbolType[];\n stroke: StrokeBrushType;\n fill: FillBrushType;\n textBackground: TextBackgroundType;\n beginning: null | LineEndingType;\n beginningSize: LineMiterSize;\n ending: null | LineEndingType;\n endingSize: LineMiterSize;\n angle: CalculatedAble<number>;\n};\n\nexport type ClientSymbol<\n SymbolType,\n SymbolDcType,\n NonClassifiedFields extends keyof SymbolDcType = never\n> = {\n [K in keyof SymbolDcType]: K extends 'type'\n ? SymbolType\n : K extends keyof ExtraClientSymbolFields\n ? ExtraClientSymbolFields[K]\n : ToClientSymbolField<\n SymbolDcType[K],\n K extends NonClassifiedFields ? false : true\n >;\n};\n\nexport const symbolTypeGuard = <ClientSymbol extends { type?: string }>(\n type: ClientSymbol['type']\n) => (symbol: { type?: string }): symbol is ClientSymbol =>\n symbol && symbol.type === type;\n\nexport type Unclassify<T> = {\n [K in keyof T]: T[K] extends ClassifyAble<infer V>\n ? V\n : T[K] extends CalculatedAble<infer V2>\n ? V2\n : T[K];\n};\n","import {\n PointLabelSymbolDc,\n PolygonLabelSymbolDc,\n PolylineLabelSymbolDc,\n} from '@evergis/api';\n\nimport { UnknownSymbol } from './symbol';\nimport { ClientSymbol, symbolTypeGuard } from './utils';\n\ntype NonClassifyableLabelFields = 'fontColor' | 'fontSize' | 'haloColor';\n\nexport type PointLabelSymbol = ClientSymbol<\n 'labelPointSymbol',\n PointLabelSymbolDc,\n NonClassifyableLabelFields\n>;\nexport type PolygonLabelSymbol = ClientSymbol<\n 'polygonLabelSymbol',\n PolygonLabelSymbolDc,\n NonClassifyableLabelFields\n>;\nexport type PolylineLabelSymbol = ClientSymbol<\n 'polylineLabelSymbol',\n PolylineLabelSymbolDc,\n NonClassifyableLabelFields\n>;\n\nexport const isPointLabelSymbol = symbolTypeGuard<PointLabelSymbol>(\n 'labelPointSymbol'\n);\nexport const isPolygonLabelSymbol = symbolTypeGuard<PolygonLabelSymbol>(\n 'polygonLabelSymbol'\n);\nexport const isPolylineLabelSymbol = symbolTypeGuard<PolylineLabelSymbol>(\n 'polylineLabelSymbol'\n);\n\nexport const isLabelSymbol = (symbol: UnknownSymbol): symbol is LabelType =>\n Boolean(\n symbol &&\n (isPointLabelSymbol(symbol) ||\n isPolygonLabelSymbol(symbol) ||\n isPolylineLabelSymbol(symbol))\n );\n\nexport type LabelType =\n | PolylineLabelSymbol\n | PolygonLabelSymbol\n | PointLabelSymbol;\n","import { StyleDc } from '@evergis/api';\n\nimport {\n CompositeSymbolType,\n isCompositeSymbol,\n isLabelSymbol,\n isRasterSymbol,\n isSimpleSymbol,\n Style,\n StyleSymbolType,\n UnknownSymbol,\n} from './types';\n\nexport const createCompositeSymbol = (\n childSymbols: StyleSymbolType[]\n): CompositeSymbolType => ({\n type: 'compositeSymbol',\n childSymbols,\n});\n\nexport const getChildSymbols = (symbol?: UnknownSymbol): StyleSymbolType[] => {\n if (!symbol || !isCompositeSymbol(symbol)) return [];\n\n return symbol.childSymbols || [];\n};\n\nexport const extractSymbol = (\n symbol?: UnknownSymbol\n): Pick<Style, 'symbol' | 'label' | 'raster'> => {\n const childSymbols = getChildSymbols(symbol);\n\n return {\n // @ts-ignore\n symbol: childSymbols.find(isSimpleSymbol),\n label: childSymbols.find(isLabelSymbol) || null,\n raster: childSymbols.find(isRasterSymbol) || null,\n };\n};\n\nexport const extractStyle = (style: StyleDc): Style => {\n // @ts-ignore\n if (isCompositeSymbol(style.symbol)) {\n return {\n ...style,\n ...extractSymbol(style.symbol),\n // @ts-ignore\n children: style.children && style.children.map(extractStyle),\n };\n }\n\n // NOTE: for cases when style is exist style object should have same reference for all extractStyle calls\n return (style || {}) as Style;\n};\n\nexport const packStyle = (style: Style): StyleDc => {\n const { ignoreLabel, label, symbol, raster, children, ...styleDc } = style;\n const childSymbols = [!ignoreLabel && label, raster].filter(Boolean);\n\n return {\n ...styleDc,\n symbol: childSymbols.length\n ? // @ts-ignore\n createCompositeSymbol([symbol, ...childSymbols])\n : symbol,\n // @ts-ignore\n children: children\n ? // @ts-ignore\n children.map(childStyle =>\n packStyle({ ...childStyle, ignoreLabel, label })\n )\n : children,\n };\n};\n","import {\n CirclePointSymbolDc,\n ClusterSymbolDc,\n CombinedPolylineSymbolDc,\n CompositeSymbolDc,\n H3GridSymbolDc,\n ImagePointSymbolDc,\n MaskedImagePointSymbolDc,\n PolygonSymbolDc,\n RasterSymbolDc,\n SimplePolylineSymbolDc,\n SquarePointSymbolDc,\n StyleDc,\n SvgPointSymbolDc,\n} from '@evergis/api';\n\nimport { isLabelSymbol, LabelType } from './label';\nimport { extractSymbol } from \"../compositeSymbol\";\nimport { CalculatedAble } from './parameterValue';\nimport { ClientSymbol, symbolTypeGuard } from './utils';\nimport { FillBrushType, StrokeBrushType } from './brush';\nimport { ClassificationParameterExtended } from \"../../classification\";\n\nexport type PointSymbol = ClientSymbol<\n 'circlePointSymbol',\n CirclePointSymbolDc\n>;\n\nexport type SvgPointSymbol = ClientSymbol<\n 'svgPointSymbol',\n SvgPointSymbolDc\n>;\n\nexport type SquareSymbol = ClientSymbol<\n 'squarePointSymbol',\n SquarePointSymbolDc\n> & {\n angle?: CalculatedAble<number>;\n};\n\nexport type MaskedImageSymbol = ClientSymbol<\n 'maskedImagePointSymbol',\n MaskedImagePointSymbolDc\n>;\n\nexport type StaticImageSymbol = ClientSymbol<\n 'imagePointSymbol',\n ImagePointSymbolDc\n>;\n\nexport type PolygonSymbol<\n Fill = FillBrushType,\n Stroke = StrokeBrushType\n> = ClientSymbol<'polygonSymbol', PolygonSymbolDc> & {\n fill: Fill;\n stroke: Stroke;\n};\n\nexport type SimplePolylineSymbol = ClientSymbol<\n 'simplePolylineSymbol',\n SimplePolylineSymbolDc\n>;\n\nexport type CombinedPolylineSymbol = ClientSymbol<'combinedPolylineSymbol', CombinedPolylineSymbolDc>;\n\nexport type RasterSymbol = ClientSymbol<'rasterSymbol', RasterSymbolDc>;\n\nexport type ClusterSymbolType = ClientSymbol<\"cluster\", ClusterSymbolDc>;\n\nexport type CompositeSymbolType = ClientSymbol<\n 'compositeSymbol',\n CompositeSymbolDc\n>;\n\nexport type H3GridSymbol = ClientSymbol<\n 'h3grid',\n H3GridSymbolDc\n>;\n\nexport type SimpleShapeSymbol = PointSymbol | SquareSymbol;\n\nexport type ImageSymbol = MaskedImageSymbol | StaticImageSymbol;\n\nexport type PointSymbolType = SvgPointSymbol | PointSymbol | SquareSymbol | MaskedImageSymbol | StaticImageSymbol;\n\nexport type PolylineSymbols = CombinedPolylineSymbol | SimplePolylineSymbol;\n\nexport type StyleSymbolType =\n | PointSymbolType\n | PolygonSymbol\n | PolylineSymbols\n | LabelType\n | RasterSymbol\n | CompositeSymbolType\n | H3GridSymbolDc\n | ClusterSymbolDc;\n\nexport type StyleSymbolTypes = StyleSymbolType['type'];\n\nexport type UnknownSymbol = StyleDc['symbol'] | StyleSymbolType;\n\nexport type LayerSymbol = PointSymbol | PolylineSymbols | PolygonSymbol;\n\nexport type FillStyledSymbols = PolygonSymbol;\n\nexport type StrokeStyledSymbols = PolygonSymbol | SimplePolylineSymbol;\n\nexport const isPointSymbol = symbolTypeGuard<PointSymbol>('circlePointSymbol');\n\nexport const isSquareSymbol = symbolTypeGuard<SquareSymbol>(\n 'squarePointSymbol'\n);\n\nexport const isMaskedImageSymbol = symbolTypeGuard<MaskedImageSymbol>(\n 'maskedImagePointSymbol'\n);\n\nexport const isStaticImageSymbol = symbolTypeGuard<StaticImageSymbol>(\n 'imagePointSymbol'\n);\n\nexport const isCombinedPolylineSymbol = symbolTypeGuard<CombinedPolylineSymbolDc>(\"combinedPolylineSymbol\");\n\nexport const isPolygonSymbol = symbolTypeGuard<PolygonSymbol>('polygonSymbol');\n\nexport const isSimplePolylineSymbol = symbolTypeGuard<SimplePolylineSymbol>(\n 'simplePolylineSymbol'\n);\n\nexport const isPolylineSymbols = (\n symbol: UnknownSymbol\n): symbol is PolylineSymbols =>\n Boolean(\n symbol && (isCombinedPolylineSymbol(symbol) || isSimplePolylineSymbol(symbol))\n );\n\nexport const isCompositeSymbol = symbolTypeGuard<CompositeSymbolType>(\n 'compositeSymbol'\n);\nexport const isRasterSymbol = symbolTypeGuard<RasterSymbol>('rasterSymbol');\n\nexport const isImageSymbol = (symbol: UnknownSymbol): symbol is ImageSymbol =>\n Boolean(\n symbol && (isMaskedImageSymbol(symbol) || isStaticImageSymbol(symbol))\n );\n\nexport const isTwoDimensionalSymbol = (\n symbol: UnknownSymbol\n): symbol is ImageSymbol => Boolean(symbol && 'width' in symbol);\n\nexport const isSizableSymbol = (\n symbol: UnknownSymbol\n): symbol is SimpleShapeSymbol => Boolean(symbol && 'size' in symbol);\n\nexport const isStrokeStyledSymbol = (\n symbol: UnknownSymbol\n): symbol is StrokeStyledSymbols =>\n Boolean(symbol && (isPolygonSymbol(symbol) || isPolylineSymbols(symbol)));\n\nexport const isScalablePolylineSymbol = (\n symbol: SimplePolylineSymbol\n) =>\n (symbol.beginning !== null && symbol.ending !== null) ||\n (symbol.stroke && symbol.stroke.type !== 'solid');\n\nexport const isSimpleSymbol = (\n symbol: UnknownSymbol\n): symbol is Exclude<StyleSymbolType, LabelType | CompositeSymbolType> =>\n Boolean(\n symbol &&\n !isLabelSymbol(symbol) &&\n !isCompositeSymbol(symbol) &&\n !isRasterSymbol(symbol)\n );\n\nexport const isH3GridSymbol = symbolTypeGuard<H3GridSymbolDc>(\"h3grid\");\n\nexport const isSvgPointSymbol = symbolTypeGuard<SvgPointSymbol>(\"svgPointSymbol\");\n\nexport const isClusterSymbol = symbolTypeGuard<ClusterSymbolType>(\"cluster\");\n\nexport const isClusterFillColor = (symbol: StyleSymbolType, parameter: ClassificationParameterExtended) => {\n return isClusterSymbol(symbol) && parameter === \"fillColor\";\n};\n\nexport const getExtractedSymbol = (symbol: StyleSymbolType, extractCluster = false): StyleSymbolType => {\n const extracted = isCompositeSymbol(symbol as CompositeSymbolType) ? extractSymbol(symbol)?.symbol : symbol;\n\n return extractCluster && isClusterSymbol(extracted as ClusterSymbolType)\n ? ((extracted as ClusterSymbolType).singleObjectSymbol as StyleSymbolType)\n : extracted;\n};\n","import {\n DashedBrushDc,\n HatchBrushDc,\n PatternBrushDc,\n SolidStrokeBrushDc,\n TextBackgroundDc,\n} from '@evergis/api';\n\nimport { ClientSymbol, symbolTypeGuard, Unclassify } from './utils';\nimport { isPolygonSymbol, PolygonSymbol, UnknownSymbol } from './symbol';\n\nexport type SolidBrush = ClientSymbol<'solid', SolidStrokeBrushDc>;\nexport type DashedBrush = ClientSymbol<'dashed', DashedBrushDc>;\nexport type HatchBrush = ClientSymbol<'hatch', HatchBrushDc>;\nexport type PatternBrush = ClientSymbol<'pattern', PatternBrushDc>;\nexport type StrokeBrushType = SolidBrush | DashedBrush;\nexport type FillBrushType = SolidBrush | HatchBrush | PatternBrush;\n\nexport const isHatchBrush = symbolTypeGuard<HatchBrush>('hatch');\nexport const isPatternBrush = symbolTypeGuard<PatternBrush>('pattern');\nexport const isDashedBrush = symbolTypeGuard<DashedBrush>('dashed');\nexport const isSolidBrush = symbolTypeGuard<SolidBrush>('solid');\n\nexport const isPolygonHasPatternBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<PatternBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isPatternBrush(symbol.fill));\n\nexport const isPolygonHasHatchBrush = (\n symbol: UnknownSymbol\n): symbol is PolygonSymbol<HatchBrush> =>\n Boolean(symbol && isPolygonSymbol(symbol) && isHatchBrush(symbol.fill));\n\nexport type TextBackgroundType = Omit<TextBackgroundDc, 'fill' | 'stroke'> & {\n fill: Unclassify<FillBrushType>;\n stroke: Unclassify<StrokeBrushType>;\n};\n","import { LineEndingType } from \"@evergis/api\";\n\nimport { ClassifyAble } from './parameterValue';\n\nexport const enum LineMiterSize {\n Small = 'small',\n Large = 'large',\n}\n\nexport type NoLineMiterType = {\n type: LineEndingType.None;\n};\n\ntype LineMiterBase<T extends LineEndingType> = {\n type: T;\n color?: ClassifyAble<string>;\n};\n\nexport type ArrowLineType = LineMiterBase<LineEndingType.Arrow> & {\n strokeWidth?: number;\n arrowLength?: number;\n arrowWidth?: number;\n};\nexport type FilledArrowLineMiterType = LineMiterBase<\n LineEndingType.FilledArrow\n> & {\n arrowLength?: number;\n arrowWidth?: number;\n};\nexport type SquareLineMiterType = LineMiterBase<LineEndingType.Square> & {\n size?: number;\n strokeWidth?: number;\n};\nexport type FilledSquareLineMiterType = LineMiterBase<\n LineEndingType.FilledSquare\n> & {\n size?: number;\n};\nexport type CircleLineMiterType = LineMiterBase<LineEndingType.Circle> & {\n size?: number;\n strokeWidth?: number;\n};\nexport type FilledCircleLineMiterType = LineMiterBase<\n LineEndingType.FilledCircle\n> & {\n size?: number;\n};\n\nexport type FilledLineMitters =\n | FilledArrowLineMiterType\n | FilledSquareLineMiterType\n | FilledCircleLineMiterType;\nexport type ArrowLineMiters = ArrowLineType | FilledArrowLineMiterType;\nexport type SquareLineMiters = SquareLineMiterType | FilledSquareLineMiterType;\nexport type CircleLineMiters = CircleLineMiterType | FilledCircleLineMiterType;\nexport type LineMiterType =\n | NoLineMiterType\n | ArrowLineMiters\n | SquareLineMiters\n | CircleLineMiters;\n\nexport const isMiterExist = (\n miter?: undefined | LineMiterType\n): miter is Exclude<LineMiterType, NoLineMiterType> =>\n Boolean(miter && miter.type !== LineEndingType.None);\n\nexport const isFilledLineMitter = (\n miter: LineMiterType\n): miter is FilledLineMitters =>\n miter.type === LineEndingType.FilledCircle ||\n miter.type === LineEndingType.FilledArrow ||\n miter.type === LineEndingType.FilledSquare;\n\nexport const isArrowLineMiter = (\n miter: LineMiterType\n): miter is ArrowLineMiters =>\n miter.type === LineEndingType.Arrow ||\n miter.type === LineEndingType.FilledArrow;\n\nexport const isSquareLineMiter = (\n miter: LineMiterType\n): miter is SquareLineMiters =>\n miter.type === LineEndingType.Square ||\n miter.type === LineEndingType.FilledSquare;\n\nexport const isCircleLineMiter = (\n miter: LineMiterType\n): miter is CircleLineMiters =>\n miter.type === LineEndingType.Circle ||\n miter.type === LineEndingType.FilledCircle;\n","import { PointSymbolType, UnknownSymbol } from './symbol';\nimport { ParameterByAttribute } from './parameterValue';\n\nimport { isParameterByAttribute } from '../../classification/parameterValue';\n\nexport type SimpleOffset = [number, number];\n\nexport type ClassifiedOffset = [\n ParameterByAttribute<number>,\n ParameterByAttribute<number>\n];\n\nexport type Offset = SimpleOffset | ClassifiedOffset;\n\nexport const isSimpleOffset = (offset: Offset): offset is SimpleOffset =>\n offset &&\n !isParameterByAttribute(offset[0]) &&\n !isParameterByAttribute(offset[1]);\n\nexport const isSymbolWithOffset = (\n symbol: UnknownSymbol\n): symbol is PointSymbolType => Boolean(symbol && 'offset' in symbol);\n","import { StyleSymbolType } from './symbol';\n\nexport type ParameterByAttributeValue<Value> = {\n condition: string;\n value: Value;\n title: string | null;\n};\n\nexport type ParameterByAttribute<Value> = {\n type: 'byAttribute';\n defaultValue: Value;\n title: string | null;\n values: ParameterByAttributeValue<Value>[];\n};\n\nexport type CalculatedParameter<Value> = {\n type: 'calculated';\n expression: string;\n defaultValue: Value;\n title?: string | null;\n};\n\nexport type ClassifyAble<Value> = Value | ParameterByAttribute<Value>;\n\nexport type CalculatedAble<Value> = Value | CalculatedParameter<Value>;\n\nexport type ParameterValue = string | number | number[] | Date;\n\nexport type ParameterValueWithSymbol = ParameterValue | StyleSymbolType;\n\nexport type ParameterByAttributeValues = ParameterByAttributeValue<\n ParameterValueWithSymbol\n>[];\n\nexport type ClassifiedParameterValue = ClassifyAble<ParameterValueWithSymbol>;\n\nexport type UnidentifiedParameterValue =\n | ParameterValueWithSymbol\n | Partial<ClassifyAble<ParameterValueWithSymbol>>\n | Partial<CalculatedAble<ParameterValue>>;\n\nexport type CalculatedParameterValue = CalculatedAble<ParameterValue>;\n\nexport const isStringParameterValue = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is string => typeof parameterValue === 'string';\n\nexport const isParameterValueSimple = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is ParameterValue =>\n typeof parameterValue === 'number' || typeof parameterValue === 'string';\n\nexport const isParameterValueSymbol = (\n parameterValue: ParameterValueWithSymbol\n): parameterValue is StyleSymbolType => !isParameterValueSimple(parameterValue);\n","import { StyleDc } from '@evergis/api';\n\nimport { LabelType } from './label';\nimport { CompositeSymbolType, RasterSymbol, StyleSymbolType } from './symbol';\n\nexport type Style = Omit<StyleDc, 'symbol' | 'children'> & {\n symbol: Exclude<StyleSymbolType, CompositeSymbolType>;\n ignoreLabel?: boolean;\n label: LabelType | null;\n raster: RasterSymbol | null;\n children: Style[] | null;\n};\n\nexport const isStyle = (value: object): value is Style => 'symbol' in value;\n","import { StyleDc } from '@evergis/api';\n\nimport { extractStyle, packStyle } from './compositeSymbol';\nimport { Style } from './types';\n\nimport { ClassificationManager } from '../classification';\n\nexport class EvergisStyle {\n public classificationManager: ClassificationManager;\n private readonly style: Style;\n\n constructor(style: StyleDc) {\n this.style = extractStyle(style);\n this.classificationManager = new ClassificationManager(this.style);\n }\n\n public serialize() {\n return packStyle(this.style);\n }\n\n public hasRasters() {\n return !!(\n this.style.raster ||\n (this.style.children || []).some(style => style.raster)\n );\n }\n\n get symbol() {\n return this.style.symbol;\n }\n\n get raster() {\n return this.style.raster;\n }\n get label() {\n return this.style.label;\n }\n\n get children() {\n return this.style.children;\n }\n\n get title() {\n return this.style.title;\n }\n\n get condition() {\n return this.style.condition;\n }\n\n get ignoreLabel() {\n return this.style.ignoreLabel;\n }\n\n get resolution(): Nullable<[number, number]> {\n const { minResolution, maxResolution } = this.style;\n\n return minResolution === void 0 || maxResolution === void 0\n ? null\n : [minResolution, maxResolution];\n }\n}\n","import {\n ClassificationClass,\n ClassificationExtras,\n ClassificationParameterExtended,\n ExtendedClassification,\n} from './types';\nimport { ClassificationCondition } from './ClassificationCondition';\nimport { pathsToParameter } from './parameter';\nimport { isParameterByAttribute } from './parameterValue';\n\nimport {\n isStyle,\n isTwoDimensionalSymbol,\n ParameterByAttributeValue,\n ParameterValueWithSymbol,\n Style,\n StyleSymbolType,\n} from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nconst toClassificationClass = (\n parameterValue: ParameterValueWithSymbol,\n title: string,\n condition: ClassificationCondition\n): ClassificationClass => ({\n parameterValue,\n title,\n ...(condition.isUnique()\n ? {\n uniqueValue: condition.uniqueValue,\n }\n : {\n from: condition.range[0],\n to: condition.range[1],\n }),\n});\n\nconst DEFAULT_EXTRAS: ClassificationExtras = {\n defaultTitle: '',\n // @ts-ignore\n defaultValue: null,\n};\n\nexport const toClassification = (\n values: (ParameterByAttributeValue<ParameterValueWithSymbol> | Style)[],\n parameter: ClassificationParameterExtended,\n extras: ClassificationExtras = DEFAULT_EXTRAS\n): ExtendedClassification =>\n // @ts-ignore\n values.reduce(\n // @ts-ignore\n (classification: ExtendedClassification, value) => {\n const classificationCondition = new ClassificationCondition(\n value.condition || ''\n );\n const classificationValue = toClassificationClass(\n isStyle(value) ? value.symbol : value.value,\n // @ts-ignore\n value.title,\n classificationCondition\n );\n\n classification.values.push(classificationValue);\n\n return {\n ...classification,\n type: classification.type || classificationCondition.type,\n attribute:\n classification.attribute || classificationCondition.attributeName,\n };\n },\n {\n ...extras,\n attribute: null,\n parameter,\n type: null,\n values: [],\n }\n );\n\nexport const getClassifications = (\n symbol: StyleSymbolType,\n pathContext: ClassificationParameterExtended[] = []\n): ExtendedClassification[] =>\n Object.entries(symbol).reduce(\n (classifications, [parameter, parameterValue]) => {\n const skipHeight =\n isTwoDimensionalSymbol(symbol) && parameter === 'height';\n const skip = !isObject(parameterValue) || skipHeight;\n\n if (skip) {\n return classifications;\n }\n\n if (!isParameterByAttribute(parameterValue)) {\n return [\n ...classifications,\n // @ts-ignore\n ...getClassifications(symbol[parameter], [\n ...pathContext,\n parameter as ClassificationParameterExtended,\n ]),\n ];\n }\n\n const classification = toClassification(\n parameterValue.values,\n pathsToParameter([\n ...pathContext,\n parameter as ClassificationParameterExtended,\n ]),\n {\n // @ts-ignore\n defaultTitle: parameterValue.title,\n defaultValue: parameterValue.defaultValue,\n }\n );\n\n return [...classifications, classification];\n },\n [] as ExtendedClassification[]\n );\n","import { getClassifications, toClassification } from './getClassifications';\nimport { ExtendedClassification } from './types';\n\nimport { Style } from '../style/types';\n\nexport class ClassificationManager {\n private classifications: ExtendedClassification[] = [];\n\n constructor(private style: Style) {\n this.collectClassifications();\n }\n\n public get values() {\n return this.classifications;\n }\n\n public find(predicate: (classification: ExtendedClassification) => boolean) {\n for (const classification of this.classifications) {\n if (predicate(classification)) {\n return classification;\n }\n }\n\n return null;\n }\n\n public filter(callback: (classification: ExtendedClassification) => boolean) {\n return this.classifications.filter(callback);\n }\n\n public map<T extends ValueOf<ExtendedClassification>>(\n callback: (classification: ExtendedClassification) => T\n ) {\n return this.classifications.map(callback);\n }\n\n public reduce<T>(\n callback: (classifications: T, classification: ExtendedClassification) => T,\n initial: T\n ) {\n return this.classifications.reduce(callback, initial);\n }\n\n public hasClassifications() {\n return this.classifications.length > 0;\n }\n\n private collectClassifications() {\n if (this.style.children && this.style.children.length) {\n this.classifications.push(\n toClassification(this.style.children, 'symbol')\n );\n }\n\n if (this.style.symbol) {\n this.classifications.push(...getClassifications(this.style.symbol));\n }\n }\n}\n","import { getParameterValue } from './parameterValue';\n\nimport { StyleSymbolType, Unclassify } from '../style';\n\nimport { isObject } from '../../utils/isObject';\n\nexport const unClassify = <V extends StyleSymbolType>(\n symbol: V\n): Unclassify<V> =>\n Object.entries(symbol).reduce((flatSymbol, [parameter, parameterValue]) => {\n let result = Array.isArray(parameterValue)\n ? parameterValue.map(getParameterValue)\n : getParameterValue(parameterValue);\n\n if (isObject(result)) {\n return {\n ...flatSymbol,\n [parameter]: unClassify(parameterValue),\n };\n }\n\n return {\n ...flatSymbol,\n [parameter]: result,\n };\n }, {} as Unclassify<V>);\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\n\nexport const DEFAULT_LANGUAGE = \"ru\";\n\nexport const resources = {\n en: {},\n ru: {},\n} as const;\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n fallbackLng: DEFAULT_LANGUAGE,\n ns: Object.keys(resources[DEFAULT_LANGUAGE]),\n interpolation: {\n escapeValue: false,\n },\n resources,\n supportedLngs: Object.keys(resources),\n });\n\nexport { i18n };\n","import { i18n } from \"../../i18n\";\nimport { RangeClass } from './types';\n\nexport const printRangeClass = (value: RangeClass, index: number): string => {\n const isDouble = Boolean(value.attribute?.type === 'Double');\n const isDate = Boolean(value.attribute?.type === 'DateTime');\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\n\n if (from === null) {\n return `${to} ${isDate ? i18n.t(\"andBefore\", { ns: \"style\" }) : i18n.t(\"andLess\", { ns: \"style\" })}`;\n }\n\n if (to === null) {\n return `${isDate ? i18n.t(\"after\", { ns: \"style\" }) : i18n.t(\"more\", { ns: \"style\" })} ${from}`;\n }\n\n return from === to ? `${from}` : `${from} - ${to}`;\n};\n\nfunction getRangeValues(\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\n isDouble: boolean,\n isDate: boolean,\n index: number\n): Pick<RangeClass, 'from' | 'to'> {\n return {\n from: from !== null && index !== 0 ?\n (isDate ? from : (isDouble ? +from : +from + 1)) : from,\n to,\n };\n}\n","import { 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\";\n\nexport function isValidParameter(parameter: ClassificationParameterExtended) {\n return !parameter?.includes(\"labelSymbol\") && !parameter?.includes(\"singleObjectSymbol\");\n}\n","import { AttributeType } from '@evergis/api';\n\nimport { ParameterValueWithSymbol } from '../style';\n\nexport type LegendValueType = {\n title: string;\n parameterValue: ParameterValueWithSymbol;\n hiddenCondition?: string;\n};\n\nexport enum FilterConditionOperation {\n AND = \"&&\",\n OR = \"||\",\n}\n\nexport enum ComparisonOperator {\n /** `==` */\n Equals = \"Equals\",\n /** `!=` */\n NotEquals = \"NotEquals\",\n /** `>` */\n GreaterThan = \"GreaterThan\",\n /** `<` */\n LessThan = \"LessThan\",\n /** `>=` */\n GreaterOrEquals = \"GreaterOrEquals\",\n /** `<=` */\n LessOrEquals = \"LessOrEquals\",\n Filled = \"Filled\",\n Empty = \"Empty\",\n /** `==` */\n Contains = \"Contains\",\n /** `!=` */\n NotContains = \"NotContains\",\n StartsWith = \"StartsWith\",\n NotStartsWith = \"NotStartsWith\",\n EndsWith = \"EndsWith\",\n NotEndsWith = \"NotEndsWith\",\n Between = \"Between\",\n Outside = \"Outside\",\n}\n\nexport interface FilterCondition<Value> {\n id?: string;\n attribute: string | null;\n type?: AttributeType;\n comparisonOperator: ComparisonOperator | null;\n value: Value | string[] | null;\n}\n\nexport type FilterConditionType = FilterCondition<string | number>;\n","import { GeometryType } from '@evergis/api';\n\nimport { ClassifyParameter, ParameterInfo, Units } from './types';\nimport { ClassificationParameter, ComparisonOperator } from '../../core';\n\nexport const DEFAULT_LEGEND_SYMBOL_SIZE = 26;\n\nexport const EXTRA_BORDER_SIZE = 4;\n\nexport const DEFAULT_SYMBOL_SIZE = 20;\n\nexport const DEFAULT_SYMBOL_WITH_BG_SIZE = 24;\n\nexport const DEFAULT_SYMBOL_FILL_COLOR = 'rgba(0, 163, 245, 1)';\n\nexport const DEFAULT_SYMBOL_STROKE_COLOR = 'rgb(255, 255, 255)';\n\nexport const DEFAULT_SYMBOL_OFFSET = [0, 0];\n\nexport const DEFAULT_CLUSTER_SVG = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 56 56\" width=\"56px\" height=\"56px\">\n <circle cx=\"28\" cy=\"28\" r=\"22\" fill=\"#00AAFF\" stroke=\"#00AAFF\" stroke-opacity=\"0.28\" stroke-width=\"12\" id=\"symbol-bg\" />\n</svg>\n`;\n\nexport const SYMBOL_CLASSIFICATION: Partial<Record<\n GeometryType,\n ClassifyParameter[]\n>> = {\n [GeometryType.Polygon]: ['fill.color', 'stroke.color', 'stroke.width'],\n [GeometryType.Polyline]: ['stroke.color', 'stroke.width'],\n [GeometryType.Point]: [\n 'angle',\n 'size',\n 'fill.color',\n 'fillColor',\n 'background.fillColor',\n 'background.strokeColor',\n 'background.strokeWidth',\n 'figure.fillColor',\n 'figure.strokeColor',\n 'figure.strokeWidth',\n 'singleObjectSymbol.size',\n 'singleObjectSymbol.figure.fillColor',\n 'singleObjectSymbol.figure.strokeColor',\n 'singleObjectSymbol.figure.strokeWidth',\n 'singleObjectSymbol.background.fillColor',\n 'singleObjectSymbol.background.strokeColor',\n 'singleObjectSymbol.background.strokeWidth',\n ],\n};\n\nexport const SYMBOL_LIMITS = {\n SIZE_MIN: 1,\n SIZE_MAX: 64,\n SIZE_STEP: 1,\n GRID_SIZE_MIN: 0.1,\n GRID_SIZE_MAX: 120,\n MIN_OBJECTS_COUNT: 2,\n MAX_OBJECTS_COUNT: 10000,\n MIN_CLUSTER_SIZE: 16,\n MAX_CLUSTER_SIZE: 120,\n STROKE_WIDTH_MIN: 0,\n STROKE_WIDTH_MAX: 32,\n STROKE_WIDTH_STEP: 0.25,\n ANGLE_MIN: -360,\n ANGLE_MAX: 360,\n ANGLE_STEP: 1,\n PREVIEW_SIZE_MAX: 32,\n PREVIEW_SIZE_MAX_WIDTH: 26,\n};\n\nexport const DEFAULT_PARAMETER_INFO: ParameterInfo = {\n classifyAble: true,\n min: SYMBOL_LIMITS.STROKE_WIDTH_MIN,\n max: SYMBOL_LIMITS.STROKE_WIDTH_MAX,\n step: SYMBOL_LIMITS.STROKE_WIDTH_STEP,\n units: Units.Pixels,\n serialize: value => value,\n deserialize: value => value,\n};\n\nexport const PARAMETER_INFOS: Partial<Record<\n ClassificationParameter,\n ParameterInfo\n>> = {\n size: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.SIZE_MIN,\n max: SYMBOL_LIMITS.SIZE_MAX,\n step: SYMBOL_LIMITS.SIZE_STEP,\n units: Units.Pixels,\n },\n /* gridSize: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.GRID_SIZE_MIN,\n max: SYMBOL_LIMITS.GRID_SIZE_MAX,\n step: SYMBOL_LIMITS.SIZE_STEP,\n classifyAble: false,\n units: null,\n },\n maxObjectCount: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\n step: SYMBOL_LIMITS.SIZE_STEP,\n classifyAble: false,\n units: i18n.t(Units.Count, { ns: \"common\" }),\n },\n selectionObjectsLimit: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.MIN_OBJECTS_COUNT,\n max: SYMBOL_LIMITS.MAX_OBJECTS_COUNT,\n step: SYMBOL_LIMITS.SIZE_STEP,\n classifyAble: false,\n units: i18n.t(Units.Count, { ns: \"common\" }),\n },\n angle: {\n ...DEFAULT_PARAMETER_INFO,\n min: SYMBOL_LIMITS.ANGLE_MIN,\n max: SYMBOL_LIMITS.ANGLE_MAX,\n step: SYMBOL_LIMITS.ANGLE_STEP,\n units: Units.Degrees,\n serialize: compose(Math.round, radToDeg),\n deserialize: degToRad,\n },\n endingSize: {\n ...DEFAULT_PARAMETER_INFO,\n classifyAble: false,\n min: 3,\n max: 12,\n step: 1,\n },*/\n};\n\nexport const OPERATOR_CONDITION_REMAP: Record<ComparisonOperator, string> = {\n [ComparisonOperator.Equals]: '==',\n [ComparisonOperator.NotEquals]: '!=',\n [ComparisonOperator.GreaterThan]: '>',\n [ComparisonOperator.GreaterOrEquals]: '>=',\n [ComparisonOperator.LessThan]: '<',\n [ComparisonOperator.LessOrEquals]: '<=',\n [ComparisonOperator.Filled]: '!=',\n [ComparisonOperator.Empty]: '==',\n [ComparisonOperator.Contains]: '==',\n [ComparisonOperator.NotContains]: '!=',\n [ComparisonOperator.StartsWith]: '==',\n [ComparisonOperator.NotStartsWith]: '!=',\n [ComparisonOperator.EndsWith]: '==',\n [ComparisonOperator.NotEndsWith]: '!=',\n [ComparisonOperator.Between]: 'between',\n [ComparisonOperator.Outside]: '!between',\n};\n\nexport const BASE_OPERATORS = [\n ComparisonOperator.Equals,\n ComparisonOperator.NotEquals,\n];\n\nexport const CONTAINS_OPERATORS = [\n ComparisonOperator.Contains,\n ComparisonOperator.NotContains,\n];\n\nexport const FILLED_OPERATORS = [\n ComparisonOperator.Filled,\n ComparisonOperator.Empty,\n];\n\nexport const STARTS_WITH_OPERATORS = [\n ComparisonOperator.StartsWith,\n ComparisonOperator.NotStartsWith,\n];\n\nexport const ENDS_WITH_OPERATORS = [\n ComparisonOperator.EndsWith,\n ComparisonOperator.NotEndsWith,\n];\n\nexport const RANGE_OPERATORS = [\n ComparisonOperator.LessThan,\n ComparisonOperator.LessOrEquals,\n ComparisonOperator.GreaterThan,\n ComparisonOperator.GreaterOrEquals,\n];\n\nexport const BETWEEN_OPERATORS = [\n ComparisonOperator.Between,\n ComparisonOperator.Outside,\n];\n\nexport const numberComparisonOperators = [\n ...BASE_OPERATORS,\n ...RANGE_OPERATORS,\n ...FILLED_OPERATORS,\n ...BETWEEN_OPERATORS,\n];\n\nexport const dateComparisonOperators = [\n ...BASE_OPERATORS,\n ...RANGE_OPERATORS,\n ...FILLED_OPERATORS,\n ...BETWEEN_OPERATORS,\n];\n\nexport const textComparisonOperators = [\n ...BASE_OPERATORS,\n ...CONTAINS_OPERATORS,\n ...STARTS_WITH_OPERATORS,\n ...ENDS_WITH_OPERATORS,\n ...FILLED_OPERATORS,\n];\n","import { ReactNode, RefObject } from 'react';\nimport {\n AttributeType,\n PointLabelSymbolDc,\n SvgPointSymbolDc,\n StyleDc,\n FeatureLayerServiceInfoDc,\n AttributeFormatDc,\n FeatureDc,\n} from '@evergis/api';\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { H3Symbol } from '@evergis/sgis/es/symbols/H3Symbol';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport {\n ClassificationParameterExtended,\n LayerAttribute,\n LegendValueType,\n ParameterByAttribute,\n ParameterValueWithSymbol,\n StyleSymbolType,\n SvgPointSymbol,\n} from '../../core';\nimport {\n SGisBrushFill,\n SGisImageFill,\n SGisPolygonSymbol,\n SGisPolylineSymbol,\n} from '../../symbols';\n\nexport type ClassifyParameter =\n | 'fill.color'\n | 'fill.hatchColor'\n | 'fillColor'\n | 'stroke.width'\n | 'stroke.color'\n | 'strokeWidth'\n | 'strokeColor'\n | 'textBackground.fill.color'\n | 'background.fillColor'\n | 'background.strokeColor'\n | 'background.strokeWidth'\n | 'figure.fillColor'\n | 'figure.strokeColor'\n | 'figure.strokeWidth'\n | 'fontColor'\n | 'haloColor'\n | 'size'\n | 'symbol'\n | 'angle'\n | 'maskedColor'\n | 'endingSize'\n | 'beginningSize'\n | 'maxObjectCount'\n | 'gridSize'\n | 'selectionObjectsLimit'\n | 'singleObjectSymbol.size'\n | 'singleObjectSymbol.figure.fillColor'\n | 'singleObjectSymbol.figure.strokeColor'\n | 'singleObjectSymbol.figure.strokeWidth'\n | 'singleObjectSymbol.background.fillColor'\n | 'singleObjectSymbol.background.strokeColor'\n | 'singleObjectSymbol.background.strokeWidth';\n\nexport interface ParameterInfo {\n min: number;\n max: number;\n step: number;\n units: Units | null;\n serialize: (value: number) => number;\n deserialize: (value: number) => number;\n classifyAble: boolean;\n}\n\nexport const enum Units {\n Pixels = 'px',\n Count = 'pcs',\n Degrees = '°',\n}\n\nexport type Positions = Coordinates | Coordinates[] | Coordinates[][];\n\nexport type FeaturedDcExtendedGeometry = Omit<\n FeatureDc['geometry'],\n 'coordinates'\n> & {\n coordinates?: Positions;\n};\n\nexport type LegendProps = {\n layerInfo: FeatureLayerServiceInfoDc;\n formatValue?: (\n type: AttributeType,\n value: string | number | Date | FeaturedDcExtendedGeometry,\n stringFormat?: AttributeFormatDc\n ) => string;\n hiddenLegends?: Record<string, string[]>;\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\n clearHiddenLegends?: (layerName: string) => void;\n goToClassification?: VoidFunction;\n isShared?: boolean;\n};\n\nexport type LegendChildrenProps = Pick<\n LegendProps,\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\n> & {\n layerInfo: FeatureLayerServiceInfoDc;\n};\n\nexport type LegendSectionProps = Pick<\n LegendProps,\n 'hiddenLegends' | 'toggleHiddenLegend' | 'formatValue' | 'clearHiddenLegends' | 'goToClassification'\n> & {\n layerName: string;\n symbol: StyleDc['symbol'];\n parameter: ClassificationParameterExtended;\n parameters: ClassificationParameterExtended[];\n classified: ParameterByAttribute<ParameterValueWithSymbol>;\n attribute: LayerAttribute | null;\n index: number;\n count?: number;\n isShared?: boolean;\n};\n\nexport type LegendSectionItem = Pick<\n LegendProps,\n 'hiddenLegends' | 'toggleHiddenLegend'\n> & {\n attributeType: AttributeType;\n symbol: StyleSymbolType;\n title: string;\n index: number;\n hiddenCondition?: string;\n};\n\nexport type MaximizedLegendProps = {\n innerRef?: RefObject<HTMLDivElement> | undefined;\n isShown?: boolean;\n layerName: string;\n symbol: StyleDc['symbol'];\n parameter: ClassificationParameterExtended;\n values: LegendSectionItem[];\n attributeType: AttributeType;\n index: number;\n hiddenLegends?: string[];\n toggleHiddenLegend?: (layerName: string, hiddenCondition: string) => void;\n};\n\nexport type SvgSymbolProps = {\n svg: string;\n symbol: SvgPointSymbol;\n size?: number;\n title?: string;\n text?: string;\n bg?: SvgSymbolBg;\n skipOffset?: boolean;\n isClassified?: boolean;\n fontSettings?: PointLabelSymbolDc;\n onClick?: (svg: string, symbol: SvgPointSymbol) => void;\n};\n\nexport enum SvgSymbolBg {\n Rect = 'rect',\n Circle = 'circle',\n}\n\nexport type SGisSymbol =\n | MaskedImage\n | SvgPointSymbolDc\n | SGisPolylineSymbol\n | SGisPolygonSymbol\n | SGisImageFill\n | SGisBrushFill\n | H3Symbol;\n/* | sPointSymbol\n | sSquareSymbol\n | sStaticImageSymbol\n | SGisMiterSymbol*/\n\nexport type SvgEditorField = Pick<\n SvgPointSymbol,\n 'size' | 'offset' | 'angle'\n> & {\n 'background.fillColor': string;\n 'background.strokeColor': string;\n 'background.strokeWidth': string;\n 'figure.strokeColor': string;\n 'figure.strokeWidth': string;\n 'figure.fillColor': string;\n};\n\nexport type MinimizedLegendProps = {\n innerRef?: RefObject<HTMLDivElement> | undefined;\n isShown?: boolean;\n title?: string | ReactNode;\n values: LegendValueType[];\n parameter: ClassificationParameterExtended;\n hiddenLegends?: string[];\n};\n\nexport type MapLegendItemProps = {\n value?: string | number;\n parameter?: ClassificationParameterExtended;\n isHidden?: boolean;\n};\n","import { Gradient, Svg } from '@svgdotjs/svg.js';\nimport { SvgParameterDc } from '@evergis/api';\n\nimport {\n DEFAULT_SYMBOL_FILL_COLOR,\n DEFAULT_SYMBOL_SIZE,\n DEFAULT_SYMBOL_STROKE_COLOR,\n DEFAULT_SYMBOL_WITH_BG_SIZE,\n} from '../components/Legend/constants';\nimport { SvgSymbolBg } from '../components/Legend/types';\nimport {\n getParameterValue,\n isParameterByAttribute,\n ParameterByAttribute,\n ParameterByAttributeValue,\n ParameterValue,\n SvgPointSymbol,\n} from '../core';\n\nconst DEFAULT_STROKE_OPACITY = 0.28;\n\nexport const convertSvgToBase64 = (svg: string) =>\n `data:image/svg+xml;base64,${window.btoa(svg)}`;\n\nexport const createSvgGradient = (\n svg: Svg,\n values: ParameterByAttributeValue<string>[]\n) =>\n svg\n .gradient('linear', (add: Gradient) => {\n values?.forEach(({ value }, index) => {\n add.stop(index / (values?.length - 1), value);\n });\n })\n .from(0, 0)\n .to(1, 1);\n\n// eslint-disable-next-line max-lines-per-function\nexport const manipulateSvgSymbol = ({\n SVGContainer,\n symbol,\n svg,\n bg,\n isClassified,\n}: {\n SVGContainer: Svg;\n symbol: SvgPointSymbol;\n svg?: string;\n bg?: SvgSymbolBg;\n isClassified?: boolean;\n}): Svg => {\n if (!symbol) return SVGContainer;\n\n const symbolData = getParameterValue(\n svg || (symbol.data as ParameterValue)\n ) as string;\n\n if (!symbolData) return SVGContainer;\n\n SVGContainer.clear();\n\n const { size, angle, background, figure } = symbol;\n\n const isUploadedFile =\n !bg &&\n !symbolData.includes('symbol-bg') &&\n !symbolData.includes('symbol-figure');\n const innerSvg = symbolData.replace(/<\\?xml[^?]*\\?>|<svg[^>]*>|<\\/svg>/g, '');\n\n if (isUploadedFile) {\n SVGContainer.svg(innerSvg);\n\n const uploadedViewBox = /viewBox=\"([^\"]+)\"/g.exec(symbolData)?.[1];\n\n if (uploadedViewBox?.[1]) {\n SVGContainer.viewbox(uploadedViewBox);\n }\n\n SVGContainer.size(size as number);\n } else {\n const hasBg = bg || innerSvg?.includes('symbol-bg');\n let defaultSize = hasBg ? DEFAULT_SYMBOL_WITH_BG_SIZE : DEFAULT_SYMBOL_SIZE;\n const currentSize = size || defaultSize;\n let viewBox = [0, 0, defaultSize, defaultSize];\n const strokeWidth =\n getParameterValue(\n (background as SvgParameterDc)?.strokeWidth as number\n ) ||\n (typeof (background as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\n\n if (strokeWidth) {\n defaultSize += strokeWidth as number;\n viewBox = [-strokeWidth / 2, -strokeWidth / 2, defaultSize, defaultSize];\n }\n\n if (hasBg) {\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\n viewBox.join(' ')\n );\n\n const currentBg = bg || (background as SvgParameterDc)?.type;\n\n if (currentBg) {\n const strokeColor = getParameterValue(\n (background as SvgParameterDc)?.strokeColor as ParameterValue\n );\n const fillColor = getParameterValue(\n (background as SvgParameterDc)?.fillColor as ParameterValue\n );\n\n SVGContainer.svg(\n currentBg === SvgSymbolBg.Circle\n ? `<circle\n id=\"symbol-bg\"\n cx=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\n cy=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\n r=\"${DEFAULT_SYMBOL_WITH_BG_SIZE / 2}\"\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\n stroke-width=\"${strokeWidth}\"\n />`\n : `<rect\n id=\"symbol-bg\"\n width=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\n height=\"${DEFAULT_SYMBOL_WITH_BG_SIZE}\"\n rx=\"4\"\n fill=\"${fillColor || DEFAULT_SYMBOL_FILL_COLOR}\"\n stroke=\"${strokeColor || DEFAULT_SYMBOL_STROKE_COLOR}\"\n stroke-width=\"${strokeWidth}\"\n />`\n );\n SVGContainer.svg(innerSvg);\n SVGContainer.find('#symbol-bg:not(:first-child)').each((item: any) =>\n item.remove()\n );\n SVGContainer.find(':not(#symbol-bg)').each((item: any) =>\n item\n .center(\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2,\n DEFAULT_SYMBOL_WITH_BG_SIZE / 2\n )\n .fill('white')\n );\n\n const symbolBg = SVGContainer.find('#symbol-bg')[0];\n\n if (isClassified) {\n symbolBg?.stroke({ opacity: DEFAULT_STROKE_OPACITY });\n }\n\n // eslint-disable-next-line max-depth\n if (\n isParameterByAttribute(\n (background as SvgParameterDc)?.fillColor as ParameterValue\n )\n ) {\n symbolBg?.fill(createSvgGradient(\n SVGContainer,\n ((background as SvgParameterDc)?.fillColor as ParameterByAttribute<\n string\n >)?.values\n ));\n }\n\n if (isParameterByAttribute(\n (background as SvgParameterDc)?.strokeColor as ParameterValue\n )) {\n symbolBg?.stroke({\n color: (createSvgGradient(\n SVGContainer,\n ((background as SvgParameterDc)?.strokeColor as ParameterByAttribute<\n string\n >)?.values\n ) as unknown) as string,\n });\n }\n } else {\n SVGContainer.svg(innerSvg);\n }\n } else {\n const strokeColor = getParameterValue(\n (figure as SvgParameterDc)?.strokeColor as string\n );\n const strokeWidth = getParameterValue(\n (figure as SvgParameterDc)?.strokeWidth as number\n ) ||\n (typeof (figure as SvgParameterDc)?.strokeColor === 'object' ? 1 : 0);\n const fillColor = getParameterValue(\n (figure as SvgParameterDc)?.fillColor as string\n );\n\n SVGContainer.size(`${currentSize}px`, `${currentSize}px`).viewbox(\n viewBox.join(' ')\n );\n SVGContainer.svg(innerSvg);\n SVGContainer.find('#symbol-figure').each(item => {\n item\n .center(DEFAULT_SYMBOL_SIZE / 2, DEFAULT_SYMBOL_SIZE / 2)\n .fill(fillColor || DEFAULT_SYMBOL_FILL_COLOR)\n .stroke({ color: strokeColor, width: strokeWidth });\n\n if (\n isParameterByAttribute(\n (figure as SvgParameterDc)?.fillColor as ParameterValue\n )\n ) {\n item?.fill(createSvgGradient(\n SVGContainer,\n ((figure as SvgParameterDc)?.fillColor as ParameterByAttribute<\n string\n >)?.values\n ));\n }\n\n if (\n isParameterByAttribute(\n (figure as SvgParameterDc)?.strokeColor as ParameterValue\n )\n ) {\n item?.stroke({\n color: (createSvgGradient(\n SVGContainer,\n ((figure as SvgParameterDc)?.strokeColor as ParameterByAttribute<\n string\n >)?.values\n ) as unknown) as string,\n });\n }\n });\n }\n }\n\n const rootTransform = /<svg[^>]*transform=\"([^\"]+)\"/g.exec(symbolData)?.[1];\n\n if (rootTransform) {\n const transformParts = rootTransform.slice(0, -1).split('(');\n\n SVGContainer.transform({\n [transformParts[0]]: transformParts[1].split(','),\n });\n }\n\n const rotatedAngle = SVGContainer.transform('rotate');\n\n if (rotatedAngle) {\n SVGContainer.rotate(-rotatedAngle, 0, 0);\n }\n if (angle !== undefined) {\n SVGContainer.rotate((angle as number) * (180 / Math.PI), 0, 0);\n }\n\n return SVGContainer;\n};\n","export const isNumeric = (number: string | number): boolean =>\n !isNaN(parseFloat(number as string)) && isFinite(number as number);\n","import { Char, Expression, TokenType } from \"@evergis/condition\";\nimport { AttributeType } from \"@evergis/api\";\nimport { isNil } from \"lodash\";\n\nimport { DateFormat, formatDate } from \"../../utils/date\";\nimport { ComparisonOperator, FilterConditionType } from \"./types\";\nimport {\n BETWEEN_OPERATORS,\n CONTAINS_OPERATORS,\n ENDS_WITH_OPERATORS,\n OPERATOR_CONDITION_REMAP,\n STARTS_WITH_OPERATORS\n} from \"../../components\";\n\nexport const comparisonOperatorMapReversed: Record<string, ComparisonOperator> = {\n [TokenType.ArEq]: ComparisonOperator.Equals,\n [TokenType.ArNotEq]: ComparisonOperator.NotEquals,\n [TokenType.ArGr]: ComparisonOperator.GreaterThan,\n [TokenType.ArLs]: ComparisonOperator.LessThan,\n [TokenType.ArGre]: ComparisonOperator.GreaterOrEquals,\n [TokenType.ArLse]: ComparisonOperator.LessOrEquals,\n [TokenType.Between]: ComparisonOperator.Between,\n [TokenType.Outside]: ComparisonOperator.Outside,\n};\n\nexport const NUMERIC_ATTRIBUTE_TYPES: AttributeType[] = [\n AttributeType.Int32,\n AttributeType.Int64,\n AttributeType.DateTime,\n AttributeType.Double,\n];\n\nconst formatValue = (value: string | number, isDate?: boolean) => {\n return isDate\n ? `#'${formatDate(value, {\n dateFormat: DateFormat.UTC,\n defaultValue: value,\n })}'`\n : value\n ? value.toString()\n : 0;\n};\n\nexport function formatCondition(condition: FilterConditionType) {\n const { comparisonOperator, value, type, attribute } = condition;\n const operator = OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator] || comparisonOperator;\n\n const preparedValue = typeof value === \"string\" && value.includes(\" - \") ? value.split(\" - \") : value;\n const isDate = type === AttributeType.DateTime;\n const isBetweenOutside = BETWEEN_OPERATORS.includes(comparisonOperator as ComparisonOperator);\n const escapeValue = !NUMERIC_ATTRIBUTE_TYPES.includes(type as AttributeType) && preparedValue !== null;\n\n if (isBetweenOutside && Array.isArray(preparedValue) && preparedValue[0] !== undefined) {\n return `${OPERATOR_CONDITION_REMAP[comparisonOperator as ComparisonOperator]}(${attribute}, ${formatValue(\n preparedValue[0],\n isDate,\n )}, ${formatValue(preparedValue[1], isDate)})`;\n }\n\n const formattedValue = Array.isArray(preparedValue)\n ? preparedValue.map(val => formatValue(val, isDate))\n : formatValue(preparedValue as string | number, isDate);\n\n const nulledValue = isNil(preparedValue) ? \"{null}\" : formattedValue;\n\n const valueEscaped =\n escapeValue && typeof nulledValue === \"string\"\n ? `'${Char.escapeSpecChars(addOperationToValue(nulledValue, comparisonOperator as ComparisonOperator))}'`\n : nulledValue;\n\n return `${attribute} ${operator} ${valueEscaped}`;\n}\n\nexport function createConditionString(condition: FilterConditionType) {\n if (Array.isArray(condition)) {\n return `( ${formatCondition(condition[0])} ${condition[0].operation} ${formatCondition(condition[1])} )`;\n }\n\n return formatCondition(condition);\n}\n\nexport function createCondition({ attribute, operation, value }: Expression) {\n const comparisonOperator = comparisonOperatorMapReversed[operation];\n const convertedResult = convertOperatorValue(value as string | number | boolean, comparisonOperator);\n\n return {\n attribute,\n ...convertedResult,\n } as FilterConditionType;\n}\n\nfunction convertOperatorValue(value: string | number | boolean, comparisonOperator: ComparisonOperator) {\n if (typeof value === \"string\") {\n const operatorIndex = +(comparisonOperator === ComparisonOperator.NotEquals);\n\n if (value.startsWith(Char.PERCENTAGE) && value.endsWith(Char.PERCENTAGE)) {\n return {\n value: value.slice(1, -1),\n comparisonOperator: CONTAINS_OPERATORS[operatorIndex],\n };\n }\n\n if (value.startsWith(Char.PERCENTAGE)) {\n return {\n value: value.slice(1),\n comparisonOperator: ENDS_WITH_OPERATORS[operatorIndex],\n };\n }\n\n if (value.endsWith(Char.PERCENTAGE)) {\n return {\n value: value.slice(0, -1),\n comparisonOperator: STARTS_WITH_OPERATORS[operatorIndex],\n };\n }\n }\n\n return { value, comparisonOperator };\n}\n\nconst addContains = (value: string | number) => `%${value}%`;\nconst addStartsWith = (value: string | number) => `${value}%`;\nconst addEndsWith = (value: string | number) => `%${value}`;\n\nfunction addOperationToValue(value: string, operator: ComparisonOperator) {\n switch (operator) {\n case ComparisonOperator.Contains:\n case ComparisonOperator.NotContains:\n return addContains(value);\n case ComparisonOperator.StartsWith:\n case ComparisonOperator.NotStartsWith:\n return addStartsWith(value);\n case ComparisonOperator.EndsWith:\n case ComparisonOperator.NotEndsWith:\n return addEndsWith(value);\n case ComparisonOperator.Between:\n return Char.BETWEEN;\n case ComparisonOperator.Outside:\n return Char.OUTSIDE;\n default:\n return value;\n }\n}\n","import { ConditionInterpreter, TokenType } from \"@evergis/condition\";\n\nimport { FilterConditionOperation, FilterConditionType } from \"./index\";\nimport { createCondition, createConditionString } from \"./createCondition\";\n\nexport class FilterCondition {\n private readonly conditionInterpreter: ConditionInterpreter;\n\n constructor(private condition: string | null = null) {\n this.conditionInterpreter = new ConditionInterpreter(condition as string);\n }\n\n static from(conditions: FilterConditionType[], operation: FilterConditionOperation) {\n const condition = conditions?.map(createConditionString).join(` ${operation} `) || null;\n\n return new FilterCondition(condition);\n }\n\n get conditions(): FilterConditionType[] {\n const { value } = this.conditionInterpreter;\n\n if (value instanceof Error) {\n // TODO handle errors in client notifications\n console.warn(value.message);\n }\n\n return value instanceof Error ? [] : value.expressions.map(createCondition);\n }\n\n get conditionOperation() {\n const { value } = this.conditionInterpreter;\n\n if (value instanceof Error) {\n return null;\n }\n\n const isOrCondition = value.boolOperations.includes(TokenType.BoolOr);\n const isAndCondition = value.boolOperations.includes(TokenType.BoolAnd);\n\n if (isOrCondition && isAndCondition) {\n return null;\n }\n\n return isOrCondition ? FilterConditionOperation.OR : isAndCondition ? FilterConditionOperation.AND : null;\n }\n\n public isParsingError() {\n return this.conditionInterpreter.value instanceof Error;\n }\n\n public toString() {\n return this.condition;\n }\n}\n","/* eslint-disable max-lines */\nimport get from 'lodash/get';\nimport { H3Symbol } from '@evergis/sgis/es/symbols/H3Symbol';\nimport { ClusterSymbol } from '@evergis/sgis/es/symbols/ClusterSymbol';\nimport {\n AttributeType,\n FeatureLayerServiceInfoDc,\n ParameterDcColor,\n ServiceInfoDc,\n SimplePolylineSymbolDc,\n StyleDc,\n SvgParameterDc,\n} from '@evergis/api';\n\nimport {\n ClassifyParameter,\n DEFAULT_LEGEND_SYMBOL_SIZE,\n DEFAULT_PARAMETER_INFO,\n EXTRA_BORDER_SIZE,\n LegendProps,\n LegendSectionItem,\n PARAMETER_INFOS,\n ParameterInfo,\n SvgSymbolBg,\n SYMBOL_CLASSIFICATION,\n} from '../components';\nimport { i18n } from \"../i18n\";\nimport { formatDate } from './date';\nimport {\n ClassificationClass,\n ClassificationCondition,\n ClassificationParameter,\n ClassificationParameterExtended,\n ClassifyAble,\n ComparisonOperator,\n FilterConditionOperation,\n getParameterValue,\n ImageSymbol,\n isClusterSymbol,\n isCombinedPolylineSymbol,\n isH3GridSymbol,\n isMaskedImageSymbol,\n isParameterValueSymbol,\n isPolygonSymbol,\n isPolylineSymbols,\n isRangeClass,\n isSizableSymbol,\n isSvgPointSymbol,\n isTwoDimensionalSymbol,\n isUniqueClass,\n LabelType,\n LayerAttribute,\n LegendValueType,\n MaskedImageSymbol,\n ParameterByAttribute,\n ParameterByAttributeValue,\n ParameterValue,\n ParameterValueWithSymbol,\n PointSymbol,\n PointSymbolType,\n PolygonSymbol,\n SimplePolylineSymbol,\n RangeClass,\n SquareSymbol,\n StyleSymbolType,\n SvgPointSymbol,\n symbolParameterWalker,\n UniqueClass,\n} from '../core';\nimport { isNumeric } from './isNumeric';\nimport { isObject } from './isObject';\nimport { createConditionString } from '../core/legend/createCondition';\nimport { FilterCondition } from '../core/legend/FilterCondition';\n\nexport const isLayerService = (\n value?: unknown\n): value is ServiceInfoDc => isObject(value) && 'name' in value;\n\nexport const getAttributeFromCondition = (condition: string): string => {\n const parts = condition.split(' ');\n\n return parts[0].startsWith('(') ? parts[0].slice(1) : parts[0];\n};\n\nexport const getExprFromCondition = (\n condition: string,\n partIndex?: number\n): string[] => {\n let expr;\n\n if (partIndex) {\n const parts = condition.split(' && ').map(part => part.slice(1, -1));\n\n expr = parts[partIndex - 1];\n } else {\n expr = condition;\n }\n\n return expr?.split(' ');\n};\n\nexport const getSignFromConditionPart = (\n condition: string,\n partIndex?: number\n): string => {\n return getExprFromCondition(condition, partIndex)?.[1];\n};\n\nexport const getValueFromConditionPart = (\n condition: string,\n partIndex?: number\n): string => {\n return getExprFromCondition(condition, partIndex)?.[2];\n};\n\nexport const isRangeCondition = (condition?: string): boolean =>\n condition?.includes('(') || false;\n\nexport const getSymbolParameterInfo = (\n parameter: ClassificationParameter\n): ParameterInfo => {\n return PARAMETER_INFOS[parameter] || DEFAULT_PARAMETER_INFO;\n};\n\nexport const formatUniqueClassValue = (\n value: UniqueClass,\n formatValue?: LegendProps['formatValue']\n): string => {\n const { attribute, uniqueValue } = value;\n\n return attribute && formatValue\n ? (formatValue(\n attribute.type,\n uniqueValue,\n attribute.stringFormat\n ) as string)\n : uniqueValue;\n};\n\nexport const getRangeValues = (\n { from, to }: Pick<RangeClass, 'from' | 'to'>,\n isDouble: boolean,\n isDate: boolean,\n index: number\n): Pick<RangeClass, 'from' | 'to'> => {\n return {\n from:\n from !== null && index !== 0\n ? isDate\n ? from\n : isDouble\n ? +from\n : +from + 1\n : from,\n to,\n };\n};\n\nexport const formatRangeClassValue = (\n value: RangeClass,\n formatValue: LegendProps['formatValue'],\n index: number\n): string => {\n const isDouble = value.attribute?.type === 'Double';\n const isDate = value.attribute?.type === 'DateTime';\n\n const { from, to } = getRangeValues(value, isDouble, isDate, index);\n\n const formattedFrom = formatValue\n ? formatValue(\n value.attribute?.type as AttributeType,\n from as string | number | Date,\n value.attribute?.stringFormat\n )\n : from;\n const formattedTo = formatValue\n ? formatValue(\n value.attribute?.type as AttributeType,\n to as string | number | Date,\n value.attribute?.stringFormat\n )\n : to;\n\n if (from === null) {\n return `${formattedTo}${!isDate ? ` ${i18n.t(\"andLess\", { ns: \"style\" })}` : ''}`;\n }\n\n if (to === null) {\n return `${!isDate ? `${i18n.t(\"more\", { ns: \"style\" })} ` : ''}${formattedFrom}`;\n }\n\n return from === to ? `${formattedFrom}` : `${formattedFrom} - ${formattedTo}`;\n};\n\nexport const checkLayerHasLegend = (\n layerInfo: Pick<FeatureLayerServiceInfoDc, 'geometryType' | 'style'>\n): boolean => {\n return (\n SYMBOL_CLASSIFICATION[layerInfo.geometryType]?.some(param => {\n const paramValue = (get(\n layerInfo.style?.symbol,\n param\n ) as unknown) as ParameterByAttribute<ParameterValue>;\n\n return paramValue?.type === 'byAttribute';\n }) || false\n );\n};\n\nexport const getTitleFromCondition = ({\n condition,\n attribute,\n formatValue,\n}: {\n condition?: string;\n attribute?: LayerAttribute | null;\n formatValue?: LegendProps['formatValue'];\n}): string => {\n const parts = condition?.split(' == ');\n const uniqueValue = parts?.[1] ? (parts[1].startsWith(\"'\") && parts[1].endsWith(\"'\") ? parts[1].slice(1, -1) : parts[1]) : '';\n\n return attribute && formatValue\n ? formatValue(attribute.type, uniqueValue, attribute.stringFormat)\n : uniqueValue;\n};\n\nexport function createValueTitleFromCondition(\n paramValue: ParameterByAttributeValue<ParameterValueWithSymbol>,\n attribute: LayerAttribute | null,\n formatValue: LegendProps['formatValue'],\n index: number\n): string {\n if (!attribute) return '';\n\n if (paramValue.title) return paramValue.title;\n\n const value = {\n parameterValue: getParameterValue(paramValue.value),\n attribute,\n } as ClassificationClass;\n\n const sign = getSignFromConditionPart(paramValue.condition, 1);\n const isFirstFrom = sign.includes('>');\n\n (value as RangeClass).from = isFirstFrom\n ? getValueFromConditionPart(paramValue.condition, 1)\n : null;\n (value as RangeClass).to =\n paramValue.condition.includes(' && ') && isFirstFrom\n ? getValueFromConditionPart(paramValue.condition, 2)\n : !isFirstFrom\n ? getValueFromConditionPart(paramValue.condition, 1)\n : null;\n\n if (isRangeClass(value))\n return formatRangeClassValue(value as RangeClass, formatValue, index);\n if (isUniqueClass(value))\n return formatUniqueClassValue(value as UniqueClass, formatValue);\n\n return '';\n}\n\ntype SymbolCreator<T> = (\n baseSymbol: T,\n parameter: ClassificationParameterExtended,\n classificationsParams: ClassificationParameterExtended[],\n parameterValue: ParameterValue\n) => T;\n\nexport const enum LegendSymbolTypes {\n Point,\n ImagePoint,\n Line,\n Polygon,\n}\n\ntype LegendSymbolsMap = {\n [LegendSymbolTypes.Point]: PointSymbolType;\n [LegendSymbolTypes.ImagePoint]: MaskedImageSymbol;\n [LegendSymbolTypes.Line]: SimplePolylineSymbol;\n [LegendSymbolTypes.Polygon]: PolygonSymbol;\n};\n\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 ->\n// пункт \"Настраиваемые значения параметров символики в системе\"\n// Для добавления подготовленных значений размеров символов нужно использовать константу PREPARED_SYMBOL_SIZES\nexport const DEFAULT_LEGEND_STYLES: LegendSymbolsMap = {\n [LegendSymbolTypes.Point]: {\n fillColor: '#00000047',\n strokeWidth: 1,\n strokeColor: '#0000001f',\n },\n [LegendSymbolTypes.ImagePoint]: {\n maskedColor: '#00000047',\n },\n [LegendSymbolTypes.Line]: {\n stroke: {\n width: 2,\n color: '#00000047',\n },\n },\n [LegendSymbolTypes.Polygon]: {\n fill: {\n color: '#00000000',\n hatchColor: '#00000000',\n },\n stroke: {\n width: 1,\n color: '#0000001f',\n },\n },\n};\n\nexport const SYMBOL_SIZE_PARAMETERS = ['size', 'width', 'height'];\n\n// Основывается на http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217 -> пункт \"Библиотека символов\"\nexport const DEFAULT_LEGEND_SIZES: Record<string, number> = {\n circlePointSymbol: 8,\n squarePointSymbol: 12,\n imagePointSymbol: 24,\n maskedImagePointSymbol: 24,\n svgPointSymbol: 24,\n};\n\nconst getNonClassifiedParamValue = <S extends StyleSymbolType>(\n baseSymbol: S,\n parameter: ClassificationParameterExtended,\n classificationsParams: ClassificationParameterExtended[],\n type: LegendSymbolTypes\n) => {\n if (classificationsParams.includes(parameter)) {\n const defaultParameterValue = getParameterFromSymbol(\n DEFAULT_LEGEND_STYLES[type],\n parameter\n );\n\n if (defaultParameterValue) {\n return defaultParameterValue;\n }\n if (\n SYMBOL_SIZE_PARAMETERS.includes(parameter) &&\n DEFAULT_LEGEND_SIZES[baseSymbol.type as string]\n ) {\n return DEFAULT_LEGEND_SIZES[baseSymbol.type as string];\n }\n }\n\n return getParameterValue(getParameterFromSymbol(baseSymbol, parameter));\n};\n\nexport const updateSymbolParameter = <S extends StyleSymbolType | LabelType>(\n symbol: S,\n path: string,\n value: ClassifyAble<ParameterValue>\n): S =>\n symbolParameterWalker(() => value)(\n symbol,\n path as ClassificationParameterExtended | ClassificationParameterExtended[]\n );\n\nconst createPointSymbol: SymbolCreator<PointSymbol | SquareSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): PointSymbol | SquareSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n fillColor: getNonClassifiedParamValue(\n baseSymbol,\n 'fillColor',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n strokeColor: getNonClassifiedParamValue(\n baseSymbol,\n 'strokeColor',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n strokeWidth: getNonClassifiedParamValue(\n baseSymbol,\n 'strokeWidth',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n size: getNonClassifiedParamValue(\n baseSymbol,\n 'size',\n classificationsParams,\n LegendSymbolTypes.Point\n ),\n offset: [0, 0],\n },\n parameter,\n parameterValue\n ) as PointSymbol | SquareSymbol;\n};\n\ntype Dimensions = {\n height: number;\n width: number;\n};\n\nexport function getDimensions(symbol: ImageSymbol, size: number): Dimensions {\n const height = getParameterValue(symbol.height as ParameterValue) as number;\n const width = getParameterValue(symbol.width as ParameterValue) as number;\n\n if (width === height) {\n return {\n width: size,\n height: size,\n };\n }\n\n const ratio = height / width;\n\n if (width < height) {\n return {\n width: size,\n height: height + (size - width) * ratio,\n };\n }\n\n return {\n width: width + (size - height) * ratio,\n height: size,\n };\n}\n\nconst createImagePointSymbol: SymbolCreator<ImageSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): ImageSymbol => {\n let symbol = { ...baseSymbol };\n\n if (isMaskedImageSymbol(symbol)) {\n symbol.maskedColor = getNonClassifiedParamValue(\n baseSymbol,\n 'maskedColor',\n classificationsParams,\n LegendSymbolTypes.ImagePoint\n ) as ClassifyAble<string>;\n }\n\n if (parameter === 'height' || parameter === 'width') {\n const { height, width } = getDimensions(\n baseSymbol,\n parameterValue as number\n );\n\n symbol.height = height;\n symbol.width = width;\n } else {\n symbol.width = getNonClassifiedParamValue(\n baseSymbol,\n 'width',\n classificationsParams,\n LegendSymbolTypes.ImagePoint\n ) as number;\n symbol.height = symbol.width;\n\n symbol = updateSymbolParameter(symbol, parameter, parameterValue);\n }\n\n symbol.offset = [\n (getParameterValue(symbol.height as ClassifyAble<number>) as number) / 2,\n (getParameterValue(symbol.width as ClassifyAble<number>) as number) / 2,\n ];\n\n return symbol;\n};\n\nconst createLineSymbol: SymbolCreator<SimplePolylineSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): SimplePolylineSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n type: 'simplePolylineSymbol',\n stroke: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.color',\n classificationsParams,\n LegendSymbolTypes.Line\n ),\n width: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.width',\n classificationsParams,\n LegendSymbolTypes.Line\n ),\n },\n },\n parameter,\n parameterValue\n ) as SimplePolylineSymbol;\n};\n\nconst createPolygonSymbol: SymbolCreator<PolygonSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): PolygonSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n fill: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'fill.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n hatchColor: getNonClassifiedParamValue(\n baseSymbol,\n 'fill.hatchColor',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n stroke: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n width: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.width',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n },\n parameter,\n parameterValue\n ) as PolygonSymbol;\n};\n\nconst createH3Symbol: SymbolCreator<H3Symbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): H3Symbol => {\n return (updateSymbolParameter(\n {\n ...baseSymbol,\n fill: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'fill.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n stroke: {\n color: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.color',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n width: getNonClassifiedParamValue(\n baseSymbol,\n 'stroke.width',\n classificationsParams,\n LegendSymbolTypes.Polygon\n ),\n },\n },\n parameter,\n parameterValue\n ) as unknown) as H3Symbol;\n};\n\nconst createClusterSymbol: SymbolCreator<ClusterSymbol> = (\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue\n): ClusterSymbol => {\n return updateSymbolParameter(\n {\n ...baseSymbol,\n fillColor: getNonClassifiedParamValue(\n baseSymbol,\n 'fillColor',\n classificationsParams,\n LegendSymbolTypes.Point\n ) as ParameterDcColor,\n } as StyleSymbolType,\n parameter,\n parameterValue\n ) as ClusterSymbol;\n};\n\nexport const createLegendSymbol = (\n parameterValue: ParameterValueWithSymbol,\n parameter: ClassificationParameterExtended,\n classificationsParams: ClassificationParameterExtended[],\n baseSymbol: StyleSymbolType\n): StyleSymbolType | null => {\n if (isParameterValueSymbol(parameterValue)) {\n return parameterValue;\n }\n\n if (isClusterSymbol(baseSymbol)) {\n return createClusterSymbol(\n baseSymbol as ClusterSymbol,\n parameter,\n classificationsParams,\n parameterValue\n );\n }\n\n if (isSizableSymbol(baseSymbol)) {\n return createPointSymbol(\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isTwoDimensionalSymbol(baseSymbol)) {\n return createImagePointSymbol(\n baseSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isPolylineSymbols(baseSymbol)) {\n return createLineSymbol(\n baseSymbol as SimplePolylineSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isPolygonSymbol(baseSymbol)) {\n return createPolygonSymbol(\n baseSymbol as PolygonSymbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n if (isH3GridSymbol(baseSymbol)) {\n return createH3Symbol(\n baseSymbol as H3Symbol,\n parameter,\n classificationsParams,\n parameterValue as ParameterValue\n );\n }\n\n return null;\n};\n\nexport function createHiddenCondition(\n attributeName: string,\n attributeType: AttributeType,\n value: ClassificationClass\n) {\n let newValue;\n let comparisonOperator;\n\n if (isRangeClass(value)) {\n if (value.from && value.to) {\n newValue = [value.from as string, value.to as string];\n comparisonOperator = ComparisonOperator.Outside;\n } else if (value.from) {\n newValue = value.from;\n comparisonOperator = ComparisonOperator.LessThan;\n } else if (value.to) {\n newValue = value.to;\n comparisonOperator = ComparisonOperator.GreaterThan;\n }\n } else {\n newValue = value.uniqueValue || value.title;\n comparisonOperator = ComparisonOperator.NotEquals;\n }\n\n return new FilterCondition(\n createConditionString({\n attribute: attributeName,\n type: attributeType,\n comparisonOperator: comparisonOperator as ComparisonOperator,\n value: newValue as string,\n })\n ).toString();\n}\n\nexport const createOtherHiddenCondition = (\n values: ClassificationClass[],\n attributeName: string,\n attributeType: AttributeType\n) => {\n const value = values[values.length - 1];\n let hiddenCondition;\n\n if (isRangeClass(value)) {\n hiddenCondition = new FilterCondition(\n createConditionString({\n attribute: attributeName,\n type: attributeType,\n comparisonOperator: ComparisonOperator.LessOrEquals,\n value: (value as RangeClass).to || (value as RangeClass).from,\n })\n ).toString();\n } else {\n const conditions = values.map(val =>\n new FilterCondition(\n createConditionString({\n attribute: attributeName,\n type: attributeType,\n comparisonOperator: ComparisonOperator.Equals,\n value: (val as UniqueClass).uniqueValue,\n })\n ).toString()\n );\n\n hiddenCondition = `( ${conditions\n .filter(Boolean)\n .join(` ${FilterConditionOperation.OR} `)} )`;\n }\n\n return hiddenCondition;\n};\n\nexport const getMinimizedLegendValues = (\n attribute: LayerAttribute,\n classified: ParameterByAttribute<ParameterValueWithSymbol>,\n formatValue: LegendProps['formatValue'],\n index: number,\n otherTitle: string\n): LegendValueType[] => {\n const other = {\n title: otherTitle,\n parameterValue: classified.defaultValue,\n hiddenCondition: createOtherHiddenCondition(\n classified.values.map(val =>\n getClassificationValue(\n val.value,\n otherTitle,\n new ClassificationCondition(val.condition)\n )\n ),\n attribute.name as string,\n attribute.type\n ),\n } as LegendValueType;\n\n const items = classified.values.map(paramValue => {\n const parameterValue = getParameterValue(paramValue.value);\n const result = { parameterValue, attribute } as Partial<LegendValueType>;\n\n if (isRangeCondition(paramValue.condition)) {\n const from = getValueFromConditionPart(paramValue.condition, 1);\n const to = getValueFromConditionPart(paramValue.condition, 2);\n\n (result as RangeClass).from = from\n ? isNumeric(from)\n ? +from\n : formatDate(from)\n : null;\n (result as RangeClass).to = to\n ? isNumeric(to)\n ? +to\n : formatDate(to)\n : null;\n\n result.title = createValueTitleFromCondition(\n paramValue,\n attribute,\n formatValue,\n index\n );\n\n return result;\n }\n\n (result as UniqueClass).uniqueValue = formatValue\n ? (formatValue(\n attribute.type,\n paramValue.value,\n attribute.stringFormat\n ) as string)\n : paramValue.value.toString();\n result.title = getTitleFromCondition({ condition: paramValue.condition });\n result.hiddenCondition = createHiddenCondition(\n attribute.name as string,\n attribute.type,\n getClassificationValue(\n paramValue.value,\n result.title,\n new ClassificationCondition(paramValue.condition)\n )\n ) as string;\n\n return result;\n }) as LegendValueType[];\n\n return [...items, other] as LegendValueType[];\n};\n\nexport const getMaximizedLegendValues = (\n attribute: LayerAttribute,\n param: ClassificationParameterExtended,\n params: ClassificationParameterExtended[],\n classified: ParameterByAttribute<ParameterValueWithSymbol>,\n symbol: StyleDc['symbol'],\n formatValue: LegendProps['formatValue'],\n sectionIndex: number,\n otherTitle: string\n): LegendSectionItem[] => {\n const other = {\n title: otherTitle,\n symbol: createLegendSymbol(\n classified.defaultValue,\n param,\n params,\n symbol as StyleSymbolType\n ),\n hiddenCondition: createOtherHiddenCondition(\n classified.values.map(val =>\n getClassificationValue(\n val.value,\n otherTitle,\n new ClassificationCondition(val.condition)\n )\n ),\n attribute.name as string,\n attribute.type\n ),\n };\n\n const items = classified.values.map((paramValue, index) => {\n const result = {\n symbol: createLegendSymbol(\n paramValue.value,\n param,\n params,\n symbol as StyleSymbolType\n ),\n } as LegendSectionItem;\n\n result.title = isRangeCondition(paramValue.condition)\n ? createValueTitleFromCondition(\n paramValue,\n attribute,\n formatValue,\n sectionIndex\n )\n : getTitleFromCondition({ condition: paramValue.condition });\n\n result.hiddenCondition = createHiddenCondition(\n attribute.name as string,\n attribute.type,\n getClassificationValue(\n paramValue.value,\n result.title,\n new ClassificationCondition(classified.values[index].condition)\n )\n ) as string;\n\n return result;\n });\n\n return [...items, other] as LegendSectionItem[];\n};\n\nexport type ClassifiedListItem = ParameterByAttribute<ParameterValueWithSymbol> & { index?: number };\n\nexport type ClassifiedList = Partial<Record<ClassifyParameter, ClassifiedListItem>>;\n\nexport const classifyParamsReduce = (\n symbol?: StyleSymbolType,\n classifyParams?: ClassifyParameter[],\n index?: number,\n): undefined | ClassifiedList => {\n return classifyParams?.reduce((result, classified) => {\n const param = (get(\n symbol,\n classified\n ) as unknown) as ParameterByAttribute<ParameterValue>;\n\n return param?.type === 'byAttribute' ? { ...result, [classified]: { index, ...param } } : result;\n }, {} as ClassifiedList);\n}\n\nexport const getClassified = (\n layerInfo: FeatureLayerServiceInfoDc\n): ClassifiedList | undefined => {\n if (!layerInfo) return undefined;\n\n if (layerInfo.style?.children?.length) {\n return {\n symbol: {\n type: 'byAttribute',\n defaultValue: layerInfo.style.symbol as StyleSymbolType,\n title: null,\n values: layerInfo.style?.children as ParameterByAttributeValue<\n ParameterValueWithSymbol\n >[],\n },\n };\n }\n\n const classifyParams = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\n\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\n if (!layerInfo.style.symbol.values?.length) return undefined;\n\n return layerInfo.style.symbol.values.reduce((result: ClassifiedList, polyline: SimplePolylineSymbolDc, index) => {\n return { ...result, ...classifyParamsReduce(polyline, classifyParams, index) };\n }, {} as ClassifiedList);\n }\n\n return classifyParamsReduce(layerInfo.style?.symbol, classifyParams);\n};\n\nexport const getSymbolStrokeWidth = (symbol: PointSymbolType): number => {\n return isSvgPointSymbol(symbol)\n ? ((symbol.background as SvgParameterDc)?.strokeWidth as number)\n : ((symbol as PointSymbol).strokeWidth as number);\n};\n\nexport const getParameterFromSymbol = <R extends ClassifyAble<ParameterValue>>(\n symbol: StyleSymbolType | LabelType,\n parameter: ClassificationParameterExtended\n): R => {\n let parameterFromSymbol = {};\n\n symbolParameterWalker((parameterValue: ClassifyAble<ParameterValue>) => {\n parameterFromSymbol = parameterValue;\n })(symbol, parameter);\n\n return parameterFromSymbol as R;\n};\n\nexport const getLegendSymbolSize = (symbol: StyleSymbolType): number => {\n let size = 0;\n\n if (isSvgPointSymbol(symbol)) {\n size = getParameterValue(symbol.size as ClassifyAble<number>);\n }\n\n if (isH3GridSymbol(symbol)) {\n size = getParameterValue(symbol.cellSize as ClassifyAble<number>);\n }\n\n if (isTwoDimensionalSymbol(symbol)) {\n size = Math.max(\n getParameterValue(symbol.width as ClassifyAble<number>),\n getParameterValue(symbol.height as ClassifyAble<number>)\n );\n }\n\n if (isSizableSymbol(symbol)) {\n const strokeWidth = getSymbolStrokeWidth(symbol);\n\n size =\n getParameterValue(symbol.size as ClassifyAble<number>) +\n (strokeWidth ? getParameterValue(strokeWidth) + EXTRA_BORDER_SIZE : 0);\n }\n\n if (isPolylineSymbols(symbol)) {\n size = getParameterValue(\n getParameterFromSymbol(symbol, 'stroke.width')\n ) as number;\n }\n\n return Math.max(DEFAULT_LEGEND_SYMBOL_SIZE, size);\n};\n\nexport const serializeSvgPointSymbol = (symbol: SvgPointSymbol) => {\n if (!symbol) return null;\n\n const figureFillColor =\n ((symbol.figure as SvgParameterDc)?.fillColor as string) || null;\n const bgFillColor =\n ((symbol.background as SvgParameterDc)?.fillColor as string) || null;\n\n return {\n type: 'svgPointSymbol',\n size: symbol.size,\n offset: symbol.offset,\n angle: symbol.angle,\n ...(bgFillColor\n ? {\n background: {\n id: 'symbol-bg',\n fillColor: bgFillColor,\n strokeColor:\n ((symbol.background as SvgParameterDc)?.strokeColor as string) ||\n null,\n strokeWidth:\n (symbol.background as SvgParameterDc)?.strokeWidth || null,\n type:\n (symbol.background as SvgParameterDc)?.type || SvgSymbolBg.Circle,\n },\n }\n : {}),\n ...(figureFillColor\n ? {\n figure: {\n id: 'symbol-figure',\n fillColor: figureFillColor,\n strokeColor:\n ((symbol.figure as SvgParameterDc)?.strokeColor as string) ||\n null,\n strokeWidth:\n (symbol.figure as SvgParameterDc)?.strokeWidth || null, },\n }\n : {}),\n };\n};\n\nconst SIZE_PARAMETERS = ['size', 'height', 'strokeWidth', 'stroke.width'];\n\nexport const isSizeClassification = (parameter: string): boolean =>\n SIZE_PARAMETERS.includes(parameter);\n\nexport const getServiceConfiguration = (\n layer?: ServiceInfoDc\n): ServiceInfoDc['configuration'] => {\n const emptyServiceConfiguration: ServiceInfoDc['configuration'] = {\n name: '',\n };\n\n if (!isLayerService(layer) || !('configuration' in layer))\n return emptyServiceConfiguration;\n\n return {\n ...emptyServiceConfiguration,\n ...(layer.configuration || {}),\n };\n};\n\n/** default attribute name which use for geometry info */\nexport const GEOMETRY_ATTRIBUTE = 'geometry';\n\n/** default attribute name which contains unique id info */\nexport const DEFAULT_ID_ATTRIBUTE_NAME = 'gid';\n\nexport const getClassificationValue = (\n parameterValue: ParameterValueWithSymbol,\n title: string,\n condition: ClassificationCondition\n): ClassificationClass => ({\n parameterValue,\n title,\n ...(condition.isUnique()\n ? {\n uniqueValue: condition.uniqueValue,\n }\n : {\n from: condition.range[0],\n to: condition.range[1],\n }),\n});\n","import { Color } from '@evergis/color';\n\nexport const getHexColor = (colorString: string): string | undefined =>\n colorString ? new Color(colorString).toString('hex') : undefined;\n","// TODO reduce\nexport const PREVIEW_LIMITS = {\n STROKE_WIDTH_MIN: 0.25,\n STROKE_WIDTH_MAX: 6.5,\n};\n","export function clamp(num: number, min: number, max: number): number {\n return Math.min(Math.max(num, min), max);\n}\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\nimport { unique } from '@evergis/api';\n\nimport { PREVIEW_LIMITS } from './previewLimits';\n\nimport { getParameterValue } from '../core/classification';\n\nimport { ClassifyAble, StrokeBrushType } from '../core/style';\n\nimport { clamp } from '../utils/math';\n\n// TODO refactoring\nexport const enum StrokeStyle {\n Solid,\n Dash,\n Dot,\n DashDot,\n DashDotDot,\n Custom,\n}\n\ninterface StrokeStylePreset {\n style: StrokeStyle;\n type: StrokeBrushType['type'];\n intervals: number[];\n}\nexport const SOLID_INTERVALS: number[] = [];\n\nexport const solidStrokeStylePreset: StrokeStylePreset = {\n style: StrokeStyle.Solid,\n type: 'solid',\n intervals: SOLID_INTERVALS,\n};\nexport const strokeStylePresets: StrokeStylePreset[] = [\n solidStrokeStylePreset,\n {\n style: StrokeStyle.Dot,\n type: 'dashed',\n intervals: [2, 2],\n },\n {\n style: StrokeStyle.Dash,\n type: 'dashed',\n intervals: [3, 3, 3, 3],\n },\n {\n style: StrokeStyle.DashDot,\n type: 'dashed',\n intervals: [5, 2, 1, 2],\n },\n {\n style: StrokeStyle.DashDotDot,\n type: 'dashed',\n intervals: [5, 2, 1, 1, 1, 2],\n },\n {\n style: StrokeStyle.Custom,\n type: 'dashed',\n intervals: [5, 4],\n },\n];\n\nconst walkByNumbersGroup = (\n numbers: number[],\n offset: number,\n walker: (group: [number, number], offset: number) => [number, number]\n): number[] => {\n if (!numbers || !numbers.length) return [];\n\n const newNumbers = [];\n\n for (let i = 0; i < numbers.length; i++) {\n if (i % 2) {\n newNumbers.push(...walker([numbers[i - 1], numbers[i]], offset));\n }\n }\n\n return newNumbers;\n};\n\nexport const toIntervals = (numbers: number[], width: ClassifyAble<number>) =>\n walkByNumbersGroup(\n numbers,\n clamp(\n getParameterValue(width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n ([length, gap], offset) => [length * offset, gap * offset]\n );\n\nexport const toLineDash = (numbers: number[], width: ClassifyAble<number>) =>\n walkByNumbersGroup(\n numbers,\n clamp(\n getParameterValue(width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n ([length, gap], offset) => [\n Math.round(length / Math.max(1, Math.min(offset, 16) / 4)),\n Math.round(gap + 1 + Math.max(1, Math.min(offset, 16) / 2)),\n ]\n );\n\nexport const getLineDash = (brush: StrokeBrushType): number[] => {\n if (!brush || brush.type === 'solid') return [];\n\n // @ts-ignore\n return toLineDash(brush.intervals, brush.width);\n};\n\nexport const defineStrokeStylePreset = (intervals: number[]) => {\n if (!intervals.length) return solidStrokeStylePreset;\n\n return strokeStylePresets.find(preset => {\n if (preset.intervals.length !== intervals.length) return false;\n\n const uniqueStrokeWidths = preset.intervals\n .map((presetInterval, i) => intervals[i] / presetInterval)\n .filter(unique);\n\n return uniqueStrokeWidths.length === 1;\n });\n};\n\nexport const getDashStylePreset = (\n dashStyle: StrokeStyle\n): StrokeStylePreset | undefined =>\n strokeStylePresets.find(preset => preset.style === dashStyle);\n","import { BrushFill as sBrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\nimport { Color } from '@evergis/color';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport {\n FillBrushType,\n HatchBrush,\n isHatchBrush,\n PolygonSymbol,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nconst ALPHA_NORMALIZER = 65025;\n\nconst sum = (numbers: number[]) =>\n numbers.reduce((result, num) => result + num, 0);\n\nconst shouldFillMatrixCell = (\n matrixSize: number,\n hatchAngle: number,\n x: number,\n y: number\n) => {\n const center = Math.round(matrixSize / 2);\n\n if ((hatchAngle === 0 || hatchAngle === Math.PI) && x === center) {\n return true;\n }\n if (hatchAngle === Math.PI / 4 && y === x) {\n return true;\n }\n if (hatchAngle === Math.PI / 2 && y === center) {\n return true;\n }\n\n return hatchAngle === (3 * Math.PI) / 4 && matrixSize - 1 - y === x;\n};\n\nconst createEmptyMatrix = (size: number): number[][] =>\n Array(size)\n .fill(null)\n .map(() => Array(size));\n\nconst fillMatrix = (\n matrix: number[][],\n filler: (x: number, y: number, size: number) => number\n) => {\n const matrixSize = matrix.length;\n\n for (let x = 0; x < matrixSize; x++) {\n for (let y = 0; y < matrixSize; y++) {\n matrix[x][y] = filler(x, y, matrixSize);\n }\n }\n};\n\nconst createFillBrushMatrix = (\n hatchAngle: number,\n hatchWidth: number,\n scalingFactor: number[]\n) => {\n const matrixSize = Math.max(\n Math.round(sum([Math.max(...scalingFactor), hatchWidth])),\n hatchWidth\n );\n const matrix = createEmptyMatrix(matrixSize);\n\n fillMatrix(matrix, (x, y, size) =>\n shouldFillMatrixCell(size, hatchAngle, x, y) ? 255 : 0\n );\n\n return matrix;\n};\n\nconst createSymbolFillBrush = (\n fillBrush: FillBrushType\n): number[][] | undefined => {\n if (fillBrush.type !== 'hatch') return undefined;\n\n return createFillBrushMatrix(\n // @ts-ignore\n getParameterValue(fillBrush.hatchAngle),\n // @ts-ignore\n Math.round(fillBrush.hatchWidth),\n fillBrush.scalingFactor\n );\n};\n\nexport class SGisBrushFill extends sBrushFill {\n constructor(public originalSymbol: PolygonSymbol<HatchBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n fillBackground: getHexColor(\n // @ts-ignore\n getParameterValue(originalSymbol.fill?.color)\n ),\n fillForeground: isHatchBrush(originalSymbol.fill)\n ? // @ts-ignore\n getHexColor(getParameterValue(originalSymbol.fill?.hatchColor))\n : void 0,\n fillBrush: createSymbolFillBrush(originalSymbol.fill),\n lineCap: 'square',\n });\n }\n\n _updateBrush() {\n // @ts-ignore\n if (!this._initialized) return;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n return;\n }\n\n const brush = this.fillBrush;\n const brushSize = brush.length;\n const foreground = new Color(this.fillForeground);\n const background = new Color(this.fillBackground);\n\n canvas.height = brushSize;\n canvas.width = brushSize;\n for (let i = 0; i < brushSize; i++) {\n // eslint-disable-next-line id-length\n for (let j = 0; j < brush[i].length; j++) {\n const srcA = (brush[i][j] * foreground.a) / ALPHA_NORMALIZER;\n const dstA = (background.a / 255) * (1 - srcA);\n const alpha = +Math.min(1, srcA + dstA).toFixed(2);\n const red = Math.round(\n Math.min(255, background.r * dstA + foreground.r * srcA)\n );\n const green = Math.round(\n Math.min(255, background.g * dstA + foreground.g * srcA)\n );\n const blue = Math.round(\n Math.min(255, background.b * dstA + foreground.b * srcA)\n );\n\n ctx.fillStyle = `rgba(${red},${green},${blue},${alpha})`;\n ctx.fillRect(j, i, 1, 1);\n }\n }\n this._brush = new Image();\n this._brush.src = canvas.toDataURL();\n }\n\n clone() {\n return new SGisBrushFill(this.originalSymbol);\n }\n}\n","import { ImageFill as sImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PatternBrush, PolygonSymbol } from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisImageFill extends sImageFill {\n constructor(public originalSymbol: PolygonSymbol<PatternBrush>) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n src: `data:image/png;base64,${originalSymbol.fill.pattern}`,\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisImageFill(this.originalSymbol);\n }\n}\n","import { PolygonSymbol as sPolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\n\nimport { getParameterValue } from '../../core/classification';\n\nimport { isDashedBrush, PolygonSymbol } from '../../core/style/types';\n\nimport { getHexColor } from '../../utils/color';\nimport { getLineDash } from '../strokeStyle';\n\nexport class SGisPolygonSymbol extends sPolygonSymbol {\n constructor(public originalSymbol: PolygonSymbol) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n // @ts-ignore\n strokeWidth: getParameterValue(originalSymbol.stroke?.width),\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n fillColor: getHexColor(getParameterValue(originalSymbol.fill?.color)),\n // TODO?: may be it should be defined by user\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n clone() {\n return new SGisPolygonSymbol(this.originalSymbol);\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { projectRings } from '@evergis/sgis/es/geotools';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\n\nimport { LineMiterSize } from '../../core/style/types';\n\nexport type MiterPosition = 'left' | 'right';\n\nexport interface LineMiterRenderBaseInfo {\n position: MiterPosition;\n color: string;\n strokeWidth: number;\n kind: LineEndingType;\n size: LineMiterSize;\n}\n\nconst adaptMiterRings = (\n rings: Coordinates[][],\n resolution: number,\n fromCrs: Crs,\n toCrs: Crs\n) => {\n const projected = projectRings(rings, fromCrs, toCrs);\n\n return simplifyCoordinates(\n projected.map(ring =>\n // @ts-ignore\n ring.map(([x, y]) => [x / resolution, y / -resolution])\n ),\n 1\n );\n};\n\nconst miterSizeCalcs: Record<LineMiterSize, (strokeWidth: number) => number> = {\n [LineMiterSize.Small]: strokeWidth => (strokeWidth + 1) * 3 + 1,\n [LineMiterSize.Large]: strokeWidth => (strokeWidth + 1) * 5 - 1,\n};\n\nexport abstract class LineMiterRender implements LineMiterRenderBaseInfo {\n // @ts-ignore\n position: MiterPosition;\n // @ts-ignore\n color: string;\n // @ts-ignore\n strokeWidth: number;\n // @ts-ignore\n kind: LineEndingType;\n // @ts-ignore\n size: LineMiterSize;\n\n constructor(baseInfo: LineMiterRenderBaseInfo) {\n Object.assign(this, baseInfo);\n }\n\n getAnchor = (rings: Coordinates[][]): Coordinates => {\n if (this.position === 'right') {\n const lastRing = rings[rings.length - 1];\n\n return (lastRing && lastRing[lastRing.length - 1]) || null;\n }\n\n const firstRing = rings[0];\n\n return (firstRing && firstRing[0]) || null;\n };\n\n getRender(\n anchorRings: Coordinates[][],\n anchorCrs: Crs,\n resolution: number,\n currentCrs: Crs\n ): Render {\n const xMultiplier = this.position === 'right' ? 1 : -1;\n const miterAnchor = this.getAnchor(anchorRings);\n const miterRings = this.createRings(miterAnchor, xMultiplier);\n const projectedMiterRings = adaptMiterRings(\n miterRings,\n resolution,\n anchorCrs,\n currentCrs\n );\n\n return this.createRender(projectedMiterRings);\n }\n\n get miterSize() {\n const calcMiterSize = miterSizeCalcs[this.size];\n\n return calcMiterSize ? calcMiterSize(this.strokeWidth) : 1;\n }\n abstract get usageSize(): number;\n abstract createRings(\n anchor: Coordinates,\n xMultiplier: number\n ): Coordinates[][];\n abstract createRender(rings: Coordinates[][]): Render;\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nexport class ArrowLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y],\n [x, y - this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineEndingType.FilledArrow;\n\n return new PolyRender(miterRings, {\n enclosed: isFilled,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { polygonCircleFromPoint } from '../../';\nimport { LineMiterRender } from './LineMiterRender';\n\nexport class CircleLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth * 3;\n }\n\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [[[x + (this.miterSize / 2 + this.strokeWidth) * xMultiplier, y]]];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineEndingType.FilledCircle;\n\n return new PolyRender(\n polygonCircleFromPoint(miterRings[0][0], this.miterSize),\n {\n fillColor: isFilled ? this.color : 'transparent',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n enclosed: true,\n }\n );\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\n\nimport { LineMiterRender } from './LineMiterRender';\n\nexport class SquareLineMiterRender extends LineMiterRender {\n get usageSize() {\n return this.miterSize + this.strokeWidth;\n }\n createRings([x, y]: Coordinates, xMultiplier: number): Coordinates[][] {\n return [\n [\n [x, y + this.miterSize / 2],\n [x, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y - this.miterSize / 2],\n [x + this.miterSize * xMultiplier, y + this.miterSize / 2],\n ],\n ];\n }\n\n createRender(miterRings: Coordinates[][]) {\n const isFilled = this.kind === LineEndingType.FilledSquare;\n\n return new PolyRender(miterRings, {\n enclosed: true,\n fillColor: isFilled ? this.color : void 0,\n fillStyle: isFilled ? FillStyle.Color : FillStyle.None,\n lineCap: 'square',\n lineJoin: 'miter',\n strokeColor: this.color,\n strokeWidth: this.strokeWidth,\n });\n }\n}\n","import { LineEndingType } from \"@evergis/api\";\n\nimport { ArrowLineMiterRender } from './ArrowLineMiterRender';\nimport { CircleLineMiterRender } from './CircleLineMiterRender';\nimport { LineMiterRenderBaseInfo, LineMiterRender } from './LineMiterRender';\nimport { SquareLineMiterRender } from './SquareLineMiterRender';\n\nexport const getLineMiterRender = (\n options: LineMiterRenderBaseInfo\n): LineMiterRender | null => {\n switch (options.kind) {\n case LineEndingType.Arrow:\n case LineEndingType.FilledArrow:\n return new ArrowLineMiterRender(options);\n case LineEndingType.Square:\n case LineEndingType.FilledSquare:\n return new SquareLineMiterRender(options);\n case LineEndingType.Circle:\n case LineEndingType.FilledCircle:\n return new CircleLineMiterRender(options);\n default:\n return null;\n }\n};\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { MiterPosition } from './LineMiterRender';\n\nconst updateRingForRightMiter = (\n ring: Coordinates[],\n miterSize: number,\n isLastRing: boolean\n): Coordinates[] => {\n const reversedRing = ring.slice().reverse();\n\n for (let i = 0; i < reversedRing.length; i++) {\n const coordinates = reversedRing[i];\n\n if (isLastRing && i === 0) {\n reversedRing[i] = [coordinates[0] - miterSize, coordinates[1]];\n }\n\n const nextCoordinates = reversedRing[i - 1];\n\n if (nextCoordinates && nextCoordinates[0] < coordinates[0]) {\n reversedRing[i] = [\n nextCoordinates[0] - Math.abs(nextCoordinates[0] - coordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return reversedRing.reverse();\n};\n\nconst updateRingForLeftMiter = (\n ring: Coordinates[],\n miterSize: number,\n isFirstRing: boolean\n): Coordinates[] => {\n const newRing = ring.slice();\n\n for (let i = 0; i < newRing.length; i++) {\n const coordinates = newRing[i];\n\n if (i === 0 && isFirstRing) {\n newRing[i] = [coordinates[0] + miterSize, coordinates[1]];\n }\n\n const prevCoordinates = newRing[i - 1];\n\n if (prevCoordinates && prevCoordinates[0] > coordinates[0]) {\n newRing[i] = [\n prevCoordinates[0] + Math.abs(coordinates[0] - prevCoordinates[0]),\n coordinates[1],\n ];\n }\n }\n\n return newRing;\n};\n\nexport const updateRingsForMiter = (\n rings: Coordinates[][],\n position: MiterPosition,\n miterSize: number\n): Coordinates[][] => {\n return rings.map((ring, ringIndex) => {\n switch (position) {\n case 'right':\n return updateRingForRightMiter(\n ring,\n miterSize,\n ringIndex === rings.length - 1\n );\n default:\n return updateRingForLeftMiter(ring, miterSize, ringIndex === 0);\n }\n });\n};\n","import { PolylineSymbol as sPolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nimport { getParameterValue } from '../../core/classification';\nimport { getLineMiterRender } from '../LineMiters/getLineMiterRender';\nimport { updateRingsForMiter } from '../LineMiters/updateRingsForMiter';\n\nimport {\n isDashedBrush,\n isSimplePolylineSymbol,\n SimplePolylineSymbol,\n} from '../../core/style';\n\nimport { getHexColor } from '../../utils/color';\nimport { clamp } from '../../utils/math';\nimport { PREVIEW_LIMITS } from '../previewLimits';\nimport { getLineDash } from '../strokeStyle';\n\nexport const copyRings = (rings: Coordinates[][]): Coordinates[][] =>\n rings.map(ring =>\n ring.map(coordinates => coordinates.slice() as Coordinates)\n );\n\nexport class SGisPolylineSymbol extends sPolylineSymbol {\n constructor(public originalSymbol: SimplePolylineSymbol) {\n super({\n // @ts-ignore\n strokeColor: getHexColor(getParameterValue(originalSymbol.stroke?.color)),\n strokeWidth: clamp(\n // @ts-ignore\n getParameterValue(originalSymbol.stroke?.width),\n PREVIEW_LIMITS.STROKE_WIDTH_MIN,\n PREVIEW_LIMITS.STROKE_WIDTH_MAX\n ),\n // @ts-ignore\n lineDash: getLineDash(originalSymbol.stroke),\n // @ts-ignore\n lineCap: isDashedBrush(originalSymbol.stroke) ? 'square' : 'round',\n });\n }\n\n renderFunction(feature: Polyline, resolution: number, crs: Crs): Render[] {\n if (!isSimplePolylineSymbol(this.originalSymbol))\n return super.renderFunction(feature, resolution, crs);\n\n const {\n ending,\n beginning,\n } = this.originalSymbol;\n const renders: Render[] = [];\n\n const featureCopy = feature.clone();\n\n const beginningMiterRender = getLineMiterRender({\n color: this.strokeColor,\n // @ts-ignore\n kind: beginning.type,\n position: 'left',\n // @ts-ignore\n size: beginning.size,\n strokeWidth: this.strokeWidth,\n });\n const endingMiterRender = getLineMiterRender({\n color: this.strokeColor,\n // @ts-ignore\n kind: ending.type,\n position: 'right',\n // @ts-ignore\n size: ending.size,\n strokeWidth: this.strokeWidth,\n });\n\n if (beginningMiterRender) {\n const updatedRings = updateRingsForMiter(\n featureCopy.rings,\n 'left',\n beginningMiterRender.usageSize\n );\n const render = beginningMiterRender.getRender(\n updatedRings,\n feature.crs,\n resolution,\n crs\n );\n\n featureCopy.rings = updatedRings;\n renders.push(render);\n }\n\n if (endingMiterRender) {\n const updatedRings = updateRingsForMiter(\n featureCopy.rings,\n 'right',\n endingMiterRender.usageSize\n );\n const render = endingMiterRender.getRender(\n updatedRings,\n feature.crs,\n resolution,\n crs\n );\n\n featureCopy.rings = updatedRings;\n renders.push(render);\n }\n\n // NOTE: линия должна быть в начале чтобы быть под митерами\n renders.unshift(...super.renderFunction(featureCopy, resolution, crs));\n\n return renders;\n }\n\n clone() {\n return new SGisPolylineSymbol(this.originalSymbol);\n }\n}\n","import {\n PointSymbol,\n PointSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/point/Point';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Feature } from '@evergis/sgis';\n\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\n\nexport type EditorPointSymbolParams = {\n shadowColor: string;\n shadowSize: number;\n mapCoordinates?: Coordinates;\n} & PointSymbolConstructorParams;\n\nexport class ShadowedPointSymbol extends PointSymbol {\n shadowColor!: string;\n shadowSize!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPointSymbolParams) {\n super(options);\n }\n\n static getShadowArc(\n position: Coordinates,\n { strokeWidth = 2, shadowColor, shadowSize, size = 6 }: EditorPointSymbolParams,\n mapCoordinates: Coordinates,\n ): Arc {\n return new Arc(position, {\n fillColor: \"transparent\",\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n radius: (size + strokeWidth + shadowSize) / 2,\n mapCoordinates,\n });\n }\n\n static getPointArc(\n position: Coordinates,\n { strokeWidth, fillColor, strokeColor, size = 6 }: EditorPointSymbolParams,\n mapCoordinates: Coordinates,\n ): Arc {\n return new Arc(position, {\n fillColor,\n strokeColor,\n strokeWidth,\n radius: size / 2,\n mapCoordinates,\n });\n }\n\n public renderFunction(\n feature: PointFeature,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof PointFeature)) return [];\n const { position } = feature.projectTo(crs);\n\n const pxPosition: Coordinates = [\n position[0] / resolution + (this.offset[0] || 0),\n -position[1] / resolution + (this.offset[1] || 0),\n ];\n\n const shadowRender = this.getShadow(pxPosition, feature, position);\n const pointArc = this.getPoint(pxPosition, feature, position);\n\n return shadowRender ? [shadowRender, pointArc] : [pointArc];\n }\n\n protected getShadow(\n position: Coordinates,\n _feature: Feature,\n mapCoordinates: Coordinates,\n ): Arc | void {\n return ShadowedPointSymbol.getShadowArc(position, this, mapCoordinates);\n }\n\n protected getPoint(position: Coordinates, _feature: Feature, mapCoordinates: Coordinates): Arc {\n return ShadowedPointSymbol.getPointArc(position, this, mapCoordinates);\n }\n}\n","import {\n PolylineSymbol,\n PolylineSymbolConstructorParams,\n} from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport { FillStyle, PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Feature } from '@evergis/sgis';\nimport { simplifyCoordinates } from '@evergis/sgis/es/utils/math';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from './ShadowedPointSymbol';\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\n\nexport const getSimplifiedPolygonCoordinates = (feature: Poly, crs: Crs, tolerance = 1) => {\n const projected = feature.crs.equals(crs) ? feature.rings : feature.projectTo(crs).rings;\n\n return simplifyCoordinates(projected, tolerance);\n};\n\nexport function createShadowRender(\n position: Coordinates,\n { strokeWidth = 1, shadowColor, shadowSize, size = 3, mapCoordinates }: EditorPointSymbolParams,\n) {\n const shadowRadius = (size + strokeWidth + shadowSize) / 2;\n\n return new Arc(position, {\n fillColor: \"transparent\",\n strokeColor: shadowColor,\n strokeWidth: shadowSize,\n radius: shadowRadius,\n mapCoordinates,\n });\n}\n\nexport function createPointRender(\n position: Coordinates,\n { strokeColor, strokeWidth, fillColor, size = 3, mapCoordinates }: EditorPointSymbolParams,\n) {\n const radius = size / 2;\n\n return new Arc(position, {\n fillColor,\n strokeColor,\n strokeWidth,\n radius,\n mapCoordinates,\n });\n}\n\nexport type EditorPolySymbolParams = {\n shadowColor: string;\n shadowSize: number;\n fillColor?: string;\n enclose?: boolean;\n showVertex?: boolean;\n vertexShadowSize?: number;\n} & PolylineSymbolConstructorParams;\n\nexport class ShadowedPolySymbol extends PolylineSymbol {\n shadowColor!: string;\n shadowSize!: number;\n fillColor?: string;\n enclose?: boolean;\n showVertex?: boolean;\n vertexShadowSize?: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(options: EditorPolySymbolParams) {\n super(options);\n }\n\n public renderFunction(\n feature: Polygon,\n resolution: number,\n crs: Crs\n ): Render[] {\n if (!(feature instanceof Poly)) return [];\n\n const coordinates = super.getRenderedCoordinates(\n feature,\n resolution,\n crs\n );\n const simplifiedFeatureCoordinates = getSimplifiedPolygonCoordinates(feature, crs);\n const polyRender = this.getPolyRender(coordinates, feature, simplifiedFeatureCoordinates);\n const shadowRender = this.getShadow(coordinates, feature, simplifiedFeatureCoordinates);\n const vertexRenders = this.getVertexRenders(coordinates, simplifiedFeatureCoordinates);\n let renders: Render[] = [polyRender];\n\n if (shadowRender) {\n renders = [shadowRender, polyRender];\n }\n\n if (vertexRenders) {\n renders = renders.concat(vertexRenders);\n }\n\n return renders;\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n _feature: Feature,\n mapCoordinates: Coordinates[][],\n ): PolyRender | void {\n return new PolyRender(coordinates, {\n fillStyle: FillStyle.None,\n enclosed: this.enclose,\n strokeColor: this.shadowColor,\n strokeWidth: this.shadowSize,\n lineDash: this.lineDash,\n mapCoordinates,\n });\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n _feature: Feature,\n mapCoordinates: Coordinates[][],\n ): PolyRender {\n return new PolyRender(coordinates, {\n fillStyle: this.enclose ? FillStyle.Color : FillStyle.None,\n enclosed: this.enclose,\n fillColor: this.fillColor,\n strokeColor: this.strokeColor,\n strokeWidth: this.strokeWidth,\n lineDash: this.lineDash,\n mapCoordinates,\n });\n }\n\n protected getVertexRenders(\n coordinates: Coordinates[][],\n mapCoordinates: Coordinates[][]\n ): Arc[] | void {\n if (!this.showVertex) return;\n\n const pointRenderers = [];\n const shadowRenderers = [];\n\n for (let i = 0; i < coordinates.length; i++) {\n const ring = coordinates[i];\n\n for (let j = 0; j < ring.length; j++) {\n const point = ring[j];\n const featurePoint = mapCoordinates[i][j];\n\n const shadowRender = createShadowRender(point, {\n size: 6,\n strokeWidth: 2,\n shadowColor: this.shadowColor,\n strokeColor: this.strokeColor,\n shadowSize:\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\n fillColor: 'transparent',\n mapCoordinates: featurePoint,\n });\n const pointRender = createPointRender(point, {\n size: 6,\n strokeWidth: 2,\n shadowColor: this.shadowColor,\n strokeColor: this.strokeColor,\n shadowSize:\n this.vertexShadowSize !== undefined ? this.vertexShadowSize : 2,\n fillColor: '#ffffff',\n mapCoordinates: featurePoint,\n });\n\n shadowRenderers.push(shadowRender);\n pointRenderers.push(pointRender);\n }\n }\n\n return [...pointRenderers, ...shadowRenderers];\n }\n}\n\nconst polySymbolParams = {\n strokeWidth: 2,\n strokeColor: '#e33600',\n shadowSize: 8,\n shadowColor: 'rgba(227, 54, 0, 0.3)',\n};\n\nconst measureSymbolParams = {\n strokeColor: '#ff6933',\n shadowSize: 0,\n vertexShadowSize: 0,\n};\n\nexport const measureLengthSymbol = new ShadowedPolySymbol({\n ...polySymbolParams,\n ...measureSymbolParams,\n enclose: false,\n showVertex: true,\n});\n\nexport const measureAreaSymbol = new ShadowedPolySymbol({\n ...polySymbolParams,\n ...measureSymbolParams,\n fillColor: 'rgba(255, 105, 51, 0.25)',\n enclose: true,\n showVertex: true,\n});\n\nconst snapSymbolParams = {\n size: 10,\n strokeWidth: 2,\n strokeColor: '#e33600',\n fillColor: '#ffffff',\n shadowColor: 'rgba(227, 54, 0, 0.3)',\n shadowSize: 3,\n};\n\nexport const measurePolygonSnapSymbol = new ShadowedPointSymbol({\n ...snapSymbolParams,\n strokeColor: '#ff6933',\n shadowSize: 0,\n});\n","import { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { PointFeature } from '@evergis/sgis/es/features/PointFeature';\n\nimport { EditorPointSymbolParams, ShadowedPointSymbol } from '../Shadowed';\nimport { Arc } from '@evergis/sgis/es/renders/Arc';\n\ntype SelectedFeature = PointFeature & {\n isSelected: boolean;\n};\n\nexport type SelectedPointSymbolParams = {\n selectedStrokeColor: string;\n selectedFillColor: string;\n} & EditorPointSymbolParams;\n\nexport class SelectedPointSymbol extends ShadowedPointSymbol {\n selectedStrokeColor!: string;\n selectedFillColor!: string;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPointSymbolParams) {\n super(props);\n }\n\n protected getShadow(\n position: [number, number],\n feature: SelectedFeature,\n mapCoordinates: Coordinates,\n ): Arc | void {\n if (feature.isSelected) {\n return super.getShadow(position, feature, mapCoordinates);\n }\n }\n\n protected getPoint(\n position: [number, number],\n feature: SelectedFeature,\n mapCoordinates: Coordinates,\n ): Arc {\n const pointRender = super.getPoint(position, feature, mapCoordinates);\n\n if (feature.isSelected) {\n pointRender.strokeColor = this.selectedStrokeColor;\n pointRender.fillColor = this.selectedFillColor;\n }\n\n return pointRender;\n }\n}\n","import { PolyRender } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\n\nimport {\n EditorPolySymbolParams,\n ShadowedPolySymbol,\n} from '../Shadowed';\n\ntype SelectedFeature = Polygon & {\n isSelected: boolean;\n};\n\nexport type SelectedPolySymbolParams = {\n selectedFillColor?: string;\n selectedStrokeColor: string;\n selectedStrokeWidth?: number;\n} & EditorPolySymbolParams;\n\nexport class SelectedPolySymbol extends ShadowedPolySymbol {\n selectedFillColor!: string;\n selectedStrokeColor!: string;\n selectedStrokeWidth!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(props: SelectedPolySymbolParams) {\n super(props);\n }\n\n protected getShadow(\n coordinates: Coordinates[][],\n feature: SelectedFeature,\n mapCoordinates: Coordinates[][],\n ): PolyRender | void {\n if (feature.isSelected) {\n return super.getShadow(coordinates, feature, mapCoordinates);\n }\n }\n\n protected getPolyRender(\n coordinates: Coordinates[][],\n feature: SelectedFeature,\n mapCoordinates: Coordinates[][],\n ): PolyRender {\n const polyRender = super.getPolyRender(coordinates, feature, mapCoordinates);\n if (feature.isSelected) {\n polyRender.fillColor = this.selectedFillColor;\n polyRender.strokeColor = this.selectedStrokeColor;\n if (this.selectedStrokeWidth !== void 0) {\n polyRender.strokeWidth = this.selectedStrokeWidth;\n }\n }\n\n return polyRender;\n }\n}\n","import { SelectedPolySymbol } from './SelectedPolySymbol';\nimport { SelectedPointSymbol } from './SelectedPointSymbol';\n\nexport const selectedPoint = new SelectedPointSymbol({\n size: 8,\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.65)',\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 3,\n\n selectedStrokeColor: '#ff5722',\n selectedFillColor: 'rgba(255, 255, 255, 0.65)',\n});\n\nexport const selectedPolyline = new SelectedPolySymbol({\n strokeWidth: 6,\n strokeColor: 'rgba(255, 87, 34, 0.2)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n selectedStrokeColor: '#ff5722',\n selectedStrokeWidth: 2,\n});\n\nexport const selectedPolygon = new SelectedPolySymbol({\n strokeWidth: 2,\n strokeColor: 'rgba(255, 87, 34, 0.3)',\n shadowSize: 8,\n shadowColor: 'rgba(255, 87, 34, 0.3)',\n fillColor: 'rgba(255, 255, 255, 0.36)',\n enclose: true,\n selectedFillColor: 'rgba(255, 255, 255, 0.56)',\n selectedStrokeColor: '#ff5722',\n});\n","import { Crs, geo } from '@evergis/sgis/es/Crs';\nimport { distance } from '@evergis/sgis/es/geotools';\nimport { DomPainter } from '@evergis/sgis/es/painters/DomPainter/DomPainter';\n\ntype ConvertionContext = {\n painter: DomPainter;\n crs?: Crs;\n};\n\nexport const metersToPixels = (\n meters: number,\n { painter, crs = geo }: ConvertionContext\n): number => {\n const { width } = painter;\n const zeroPoint = painter.getPointFromPxPosition(0, 0).projectTo(crs);\n const maxWidthPoint = painter.getPointFromPxPosition(width, 0).projectTo(crs);\n const widthDistance: number = distance(zeroPoint, maxWidthPoint);\n const pxK = width / (widthDistance || 1);\n\n return Math.round(meters * pxK);\n};\n","import { Symbol } from '@evergis/sgis/es/symbols/Symbol';\nimport { Render, DynamicRender } from '@evergis/sgis/es/renders/Render';\nimport { SvgRender } from '@evergis/sgis/es/painters/DomPainter/SvgRender';\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { Poly } from '@evergis/sgis/es/features/Poly';\nimport { Bbox } from '@evergis/sgis/es/Bbox';\nimport { Crs } from '@evergis/sgis/es/Crs';\nimport { FillStyle } from '@evergis/sgis/es/renders/Poly';\nimport { Coordinates } from '@evergis/sgis/es/baseTypes';\nimport { listenDomEvent } from '@evergis/sgis/es/utils/domEvent';\nimport {\n MouseEventFlags,\n mouseEvents,\n Handler,\n} from '@evergis/sgis/es/EventHandler';\n\nimport { metersToPixels } from '../../utils/metersToPixels';\n\nimport { SVGPolyProps, SVGFeaturePoly, SvgPolyPathStyles } from './types';\n\nconst defaultPathStyles: SvgPolyPathStyles = {\n strokeWidth: 2,\n strokeColor: 'rgb(0, 163, 245)',\n fillStyle: FillStyle.None,\n};\n\nexport class SVGPoly extends Symbol<SVGFeaturePoly> {\n container: HTMLDivElement = document.createElement('div');\n redrawFeatureNode: SVGPolyProps['redrawFeatureNode'];\n pathStyles?: SvgPolyPathStyles;\n circle?: SVGPolyProps['circle'];\n className?: string;\n appendToSvg?: SVGPolyProps['appendToSvg'];\n\n constructor({\n redrawFeatureNode,\n pathStyles,\n circle,\n className,\n appendToSvg,\n }: SVGPolyProps = {}) {\n super();\n this.container.style.position = 'absolute';\n this.redrawFeatureNode = redrawFeatureNode;\n this.pathStyles = { center: [0, 0], fillColor: 'none', ...pathStyles };\n this.circle = circle;\n this.className = className;\n this.appendToSvg = appendToSvg;\n }\n\n renderFunction(\n feature: SVGFeaturePoly,\n resolution: number,\n crs: Crs\n ): Render[] {\n const coordinates =\n feature instanceof Poly\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\n : feature.centroid;\n\n this.setCirclePxRaius(crs);\n this.container.innerHTML = '';\n const svg = this.setSvg(coordinates);\n svg && this.container.append(svg);\n\n feature.__dynamicSymbolRender = new DynamicRender({\n node: this.container,\n update: (bbox, resolution) =>\n this.update({ bbox, resolution, feature, crs }),\n redraw: () => {\n this.redrawFeatureNode && this.redrawFeatureNode(feature);\n },\n });\n\n this._setEventListeners(feature);\n\n return [feature.__dynamicSymbolRender];\n }\n\n setCirclePxRaius(crs: Crs) {\n if (this.circle && this.pathStyles) {\n this.pathStyles.radius =\n metersToPixels(this.circle.radius, {\n painter: this.circle.painter,\n crs,\n }) + (this.circle?.pxOffset || 0);\n }\n }\n\n update({\n bbox,\n resolution,\n feature,\n crs,\n }: {\n bbox?: Bbox;\n resolution?: number;\n feature: SVGFeaturePoly;\n crs: Crs;\n }) {\n if (!feature) return;\n\n if (!bbox) bbox = feature.__lastBbox;\n if (!resolution) resolution = feature.__lastResolution;\n\n if (!bbox || !resolution || !feature.crs.canProjectTo(bbox.crs)) return;\n\n if (feature.__lastResolution && resolution !== feature.__lastResolution) {\n const newCoordinates =\n feature instanceof Poly\n ? new PolylineSymbol().getRenderedCoordinates(feature, resolution, crs)\n : feature.centroid;\n\n this.setCirclePxRaius(crs);\n this.container.innerHTML = '';\n const svg = this.setSvg(newCoordinates);\n svg && this.container.append(svg);\n }\n\n const polygon = feature.projectTo(bbox.crs);\n const radiusOffset = this.pathStyles?.radius\n ? this.pathStyles?.radius +\n (this.pathStyles?.strokeWidth ? this.pathStyles?.strokeWidth / 2 : 0)\n : 0;\n const dx =\n Math.round((polygon.bbox.xMin - bbox.xMin) / resolution) - radiusOffset;\n const dy =\n Math.round((bbox.yMax - polygon.bbox.yMax) / resolution) - radiusOffset;\n\n this.container.style.left = `${dx.toString()}px`;\n this.container.style.top = `${dy.toString()}px`;\n\n feature.__lastBbox = bbox;\n feature.__lastResolution = resolution;\n }\n\n setSvg(\n coordinates: [number, number][][] | Coordinates\n ): SVGElement | undefined {\n const { lineCap, lineJoin, miterLimit, lineDash, dashOffset } =\n this.pathStyles || {};\n const svgRender = new SvgRender({\n coordinates,\n ...defaultPathStyles,\n appendToSvg: this.appendToSvg,\n ...this.pathStyles,\n });\n\n if (this.circle) {\n svgRender._setArcNode();\n } else {\n svgRender._setPolyNode();\n }\n\n let svgElement;\n svgRender.getNode((_: null, svg: SVGElement) => {\n svgElement = svg;\n this.className && svgElement.classList.add(this.className);\n const path =\n svgElement && svgElement.querySelector(this.circle ? 'circle' : 'path');\n\n if (path) {\n path.setAttribute('stroke-linecap', lineCap || 'round');\n path.setAttribute('stroke-linejoin', lineJoin || 'round');\n path.setAttribute('stroke-miterlimit', (miterLimit || 10).toString());\n path.setAttribute('stroke-dashoffset', (dashOffset || 0).toString());\n\n if (this.circle) {\n path.setAttribute(\n 'stroke-dasharray',\n lineDash && lineDash.length > 0 ? lineDash.join(',') : ''\n );\n }\n }\n });\n\n return svgElement;\n }\n\n private _setEventListeners(dynamicFeature: SVGFeaturePoly): void {\n if (dynamicFeature.eventFlags === MouseEventFlags.None) return;\n\n const svgNode = dynamicFeature?.__dynamicSymbolRender?.node.querySelector(\n this.circle ? 'circle' : 'path'\n );\n\n Object.keys(mouseEvents).forEach(eventName => {\n if (dynamicFeature.eventFlags & mouseEvents[eventName].flag) {\n listenDomEvent(\n svgNode,\n mouseEvents[eventName].type,\n (event: Handler) => {\n dynamicFeature.fire(mouseEvents[eventName].type, {\n node: svgNode,\n browserEvent: event,\n });\n }\n );\n }\n });\n }\n}\n","import { BrushFill } from '@evergis/sgis/es/symbols/polygon/BrushFill';\nimport { ImageFill } from '@evergis/sgis/es/symbols/polygon/ImageFill';\nimport { StaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { SquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\nimport { PolygonSymbol } from '@evergis/sgis/es/symbols/polygon/Simple';\nimport { PolylineSymbol } from '@evergis/sgis/es/symbols/PolylineSymbol';\nimport { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { PointSymbol } from '@evergis/sgis/es/symbols/point/Point';\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\nimport { ClusterSymbol } from \"@evergis/sgis/es/symbols/ClusterSymbol\";\nimport { ClusterSymbolDc } from \"@evergis/api\";\n\nimport {\n SGisImageSymbolType,\n SGisPointSymbolType,\n SGisPolygonSymbolType,\n SGisPolylineSymbolType,\n SGisSymbolType,\n} from './types';\n\nexport function isSGisPointSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPointSymbolType {\n return (\n symbol instanceof PointSymbol ||\n symbol instanceof StaticImageSymbol ||\n symbol instanceof SquareSymbol ||\n symbol instanceof MaskedImage\n );\n}\n\nexport function isSGisImageSymbol(\n symbol: SGisSymbolType\n): symbol is SGisImageSymbolType {\n return symbol instanceof StaticImageSymbol || symbol instanceof MaskedImage;\n}\n\nexport function isSGisPolygonSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPolygonSymbolType {\n return (\n symbol instanceof PolygonSymbol ||\n symbol instanceof BrushFill ||\n symbol instanceof ImageFill\n );\n}\n\nexport function isSGisPolylineSymbol(\n symbol: SGisSymbolType\n): symbol is SGisPolylineSymbolType {\n return symbol instanceof PolylineSymbol;\n}\n\nexport function isSGisH3Symbol(\n symbol: SGisSymbolType\n): symbol is H3Symbol {\n return symbol instanceof H3Symbol;\n}\n\nexport function isSGisCombinedPolylineSymbol(\n symbol: SGisSymbolType\n): symbol is CombinedPolylineSymbol {\n return symbol instanceof CombinedPolylineSymbol\n}\n\nexport function isSGisClusterSymbol(\n symbol: SGisSymbolType\n): symbol is ClusterSymbol {\n return !!(symbol as ClusterSymbolDc).singleObjectSymbol;\n}\n","import { PointFeature } from '@evergis/sgis/es/features/PointFeature';\nimport { Polygon } from '@evergis/sgis/es/features/Polygon';\nimport { Polyline } from '@evergis/sgis/es/features/Polyline';\nimport { H3Feature } from \"@evergis/sgis/es/features/H3Feature\";\nimport { plain } from '@evergis/sgis/es/Crs';\nimport { CombinedPolyline } from \"@evergis/sgis/es/features/CombinedPolyline\";\n\n/**\n * Моки фич для отображения превью символа\n * http://cf.everpoint.ru/pages/viewpage.action?pageId=45024217\n */\n\nexport const viewBoxSize = 100;\n\nexport const pointFeature = new PointFeature([50, -50], { crs: plain });\n\nexport const lineFeature = new Polyline(\n [\n [0, -57],\n [26, -57],\n [40, -35],\n [60, -65],\n [74, -43],\n [100, -43],\n ],\n {\n crs: plain,\n }\n);\nexport const combinedLineFeature = new CombinedPolyline(\n [\n [0, -57],\n [26, -57],\n [40, -35],\n [60, -65],\n [74, -43],\n [100, -43],\n ],\n {\n crs: plain,\n }\n);\nexport const polygonFeature = new Polygon(\n [\n [20, -20],\n [80, -20],\n [80, -80],\n [20, -80],\n ],\n { crs: plain }\n);\nexport const h3gridFeature = new H3Feature(\n [\n [50, -15],\n [80, -33],\n [80, -67],\n [50, -85],\n [20, -67],\n [20, -33],\n [50, -15],\n ],\n { crs: plain }\n);\n\nexport const lineLegendFeature = new Polyline(\n [\n [0, -50],\n [100, -50],\n ],\n {\n crs: plain,\n }\n);\n\nexport const polygonLegendFeature = new Polygon(\n [\n [20, -20],\n [80, -20],\n [80, -80],\n [20, -80],\n ],\n { crs: plain }\n);\n\nexport const polygonMapLegendFeature = new Polygon(\n [\n [50, 0],\n [100, -25],\n [100, -75],\n [50, -100],\n [0, -75],\n [0, -25],\n ],\n { crs: plain }\n);\n\nexport const MAP_LEGEND_FEATURES = {\n polygon: polygonMapLegendFeature,\n};\n\nexport const LEGEND_FEATURES = {\n point: pointFeature,\n polyline: lineLegendFeature,\n combinedPolyline: combinedLineFeature,\n polygon: polygonLegendFeature,\n h3grid: h3gridFeature,\n};\n\nexport const MOCK_FEATURES = {\n point: pointFeature,\n polyline: lineFeature,\n combinedPolyline: combinedLineFeature,\n polygon: polygonFeature,\n h3grid: h3gridFeature,\n} as const;\n","import { plain } from '@evergis/sgis/es/Crs';\n\nimport { isSGisCombinedPolylineSymbol, isSGisH3Symbol, isSGisPolygonSymbol, isSGisPolylineSymbol } from './guards';\nimport {\n LEGEND_FEATURES,\n MAP_LEGEND_FEATURES,\n MOCK_FEATURES,\n viewBoxSize,\n} from './mockFeatures';\nimport { SGisSymbolType } from './types';\n\nexport function getSymbolRenders(\n symbol: SGisSymbolType,\n size: number = viewBoxSize,\n features: Partial<typeof MOCK_FEATURES> = {}\n) {\n const resolution = viewBoxSize / size;\n const featuresToRender = { ...MOCK_FEATURES, ...features };\n\n if (isSGisPolygonSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.polygon,\n resolution,\n plain\n );\n }\n\n if (isSGisPolylineSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.polyline,\n resolution,\n plain\n );\n }\n\n if (isSGisH3Symbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.h3grid,\n resolution,\n plain\n );\n }\n\n if (isSGisCombinedPolylineSymbol(symbol)) {\n return symbol.renderFunctionAsync(\n featuresToRender.combinedPolyline,\n resolution,\n plain\n );\n }\n\n return symbol.renderFunctionAsync(featuresToRender.point, resolution, plain);\n}\n\nexport const getMapLegendSymbolRenders = (\n symbol: SGisSymbolType,\n size: number = viewBoxSize\n) => {\n return getSymbolRenders(symbol, size, MAP_LEGEND_FEATURES);\n}\n\nexport const getLegendSymbolRenders = (\n symbol: SGisSymbolType,\n size: number = viewBoxSize\n) => {\n return getSymbolRenders(symbol, size, LEGEND_FEATURES);\n}\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { Render } from '@evergis/sgis/es/renders/Render';\nimport { RenderForCanvas } from \"@evergis/sgis/es/painters/DomPainter/types\";\n\nexport function renderSymbolToCanvas(renders: Render[], canvas: Canvas) {\n renders.forEach(render => {\n canvas.draw(<RenderForCanvas>render);\n });\n}\n","import { MaskedImage } from '@evergis/sgis/es/symbols/point/MaskedImage';\nimport { PointSymbol as SPointSymbol, PointSymbolConstructorParams } from '@evergis/sgis/es/symbols/point/Point';\nimport { SquareSymbol as SSquareSymbol } from '@evergis/sgis/es/symbols/point/Square';\nimport { Color } from '@evergis/color';\nimport { StaticImageSymbol as SStaticImageSymbol } from '@evergis/sgis/es/symbols/point/StaticImageSymbol';\nimport { H3Symbol } from \"@evergis/sgis/es/symbols/H3Symbol\";\nimport { ClusterSymbolDc, SvgParameterDc } from \"@evergis/api\";\n\nimport { getParameterValue } from '../core/classification';\n\nimport {\n ClassifyAble,\n H3GridSymbol,\n isPolygonHasHatchBrush,\n isPolygonHasPatternBrush,\n MaskedImageSymbol,\n Offset,\n ParameterValue,\n PointSymbol,\n PolygonSymbol,\n SimplePolylineSymbol,\n SimpleOffset,\n SquareSymbol,\n StaticImageSymbol,\n StyleSymbolType,\n SvgPointSymbol,\n} from '../core/style';\n\nimport {\n SGisBrushFill,\n SGisImageFill,\n SGisPolygonSymbol,\n SGisPolylineSymbol,\n} from './Evergis';\n\nimport { SGisSymbolType } from './types';\n\n// TODO create classes from unClassified symbols only\nexport function deserializeSymbol(\n symbol: StyleSymbolType\n): SGisSymbolType | null {\n switch (symbol.type) {\n case \"h3grid\":\n return deserializeH3Symbol(symbol as H3Symbol);\n case \"svgPointSymbol\":\n return deserializeSvgPointSymbol(symbol as SvgPointSymbol);\n case 'circlePointSymbol':\n return deserializePointSymbol(symbol as PointSymbol);\n case 'squarePointSymbol':\n return deserializeSquareSymbol(symbol as SquareSymbol);\n case 'maskedImagePointSymbol':\n return deserializeMaskedImageSymbol(symbol as MaskedImageSymbol);\n case 'imagePointSymbol':\n return deserializeImagePointSymbol(symbol as StaticImageSymbol);\n case 'polygonSymbol':\n return deserializePolygonSymbol(symbol as PolygonSymbol);\n case 'simplePolylineSymbol':\n return deserializePolylineSymbol(symbol as SimplePolylineSymbol);\n case \"clusterSymbol\":\n return deserializeSymbol((symbol as ClusterSymbolDc).singleObjectSymbol as StyleSymbolType);\n default:\n return null;\n }\n}\n\nfunction deserializeH3Symbol(symbol: H3GridSymbol) {\n return new H3Symbol({\n ...symbol,\n cellSize: getParameterValue(symbol.cellSize as number),\n strokeWidth: getParameterValue(symbol?.stroke?.width as number),\n strokeColor: getParameterValue(symbol?.stroke?.color as string),\n fillColor: getParameterValue(symbol?.fill?.color as string),\n });\n}\n\nfunction deserializePointSymbol(symbol: PointSymbol) {\n // @ts-ignore\n return new SPointSymbol(deserializePointSymbolParams(symbol));\n}\n\nexport const getOffsetParameterValue = (offset: Offset): SimpleOffset => [\n getParameterValue(offset?.[0]),\n getParameterValue(offset?.[1]),\n];\n\nfunction deserializeSvgPointSymbolParams({ type, data, size, offset, angle, background, figure }: SvgPointSymbol) {\n return {\n type: getParameterValue(type as ParameterValue),\n data: getParameterValue(data as ParameterValue),\n size: getParameterValue(size as ParameterValue),\n offset: getOffsetParameterValue(offset as Offset),\n angle: getParameterValue(angle as ParameterValue),\n ...(background\n ? {\n background: {\n ...(background as SvgParameterDc),\n fillColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.fillColor as string)),\n strokeColor: deserializeColor(getParameterValue((background as SvgParameterDc)?.strokeColor as string)),\n strokeWidth: getParameterValue((background as SvgParameterDc)?.strokeWidth as ParameterValue),\n },\n }\n : {}),\n ...(figure\n ? {\n figure: {\n ...(figure as SvgParameterDc),\n strokeColor: deserializeColor(getParameterValue((figure as SvgParameterDc)?.strokeColor as string)),\n strokeWidth: getParameterValue((figure as SvgParameterDc)?.strokeWidth as ParameterValue),\n fillColor: deserializeColor(\n getParameterValue((figure as SvgParameterDc)?.fillColor as ParameterValue) as string,\n ),\n },\n }\n : {}),\n };\n}\n\nfunction deserializeSvgPointSymbol(symbol: SvgPointSymbol) {\n return new SPointSymbol(deserializeSvgPointSymbolParams(symbol) as PointSymbolConstructorParams);\n}\n\nfunction deserializeSquareSymbol(symbol: SquareSymbol) {\n return new SSquareSymbol({\n ...deserializePointSymbolParams(symbol),\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n });\n}\n\nfunction deserializeMaskedImageSymbol(symbol: MaskedImageSymbol) {\n return new MaskedImage({\n ...symbol,\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n // @ts-ignore\n width: getParameterValue(symbol.width),\n // @ts-ignore\n height: getParameterValue(symbol.height),\n // @ts-ignore\n anchorPoint: deserializeAnchor(symbol.offset),\n // @ts-ignore\n imageSource: deserializeBase64(symbol.image),\n // @ts-ignore\n maskSource: deserializeBase64(symbol.imageMask),\n // @ts-ignore\n maskColor: deserializeColor(getParameterValue(symbol.maskedColor)),\n });\n}\n\nfunction deserializeImagePointSymbol(symbol: StaticImageSymbol) {\n return new SStaticImageSymbol({\n ...symbol,\n // @ts-ignore\n angle: getParameterValue(symbol.angle),\n // @ts-ignore\n width: getParameterValue(symbol.width),\n // @ts-ignore\n height: getParameterValue(symbol.height),\n // @ts-ignore\n anchorPoint: deserializeAnchor(symbol.offset),\n // @ts-ignore\n source: deserializeBase64(symbol.image),\n });\n}\n\nfunction deserializePolygonSymbol(symbol: PolygonSymbol) {\n if (isPolygonHasPatternBrush(symbol)) {\n return new SGisImageFill(symbol);\n }\n\n if (isPolygonHasHatchBrush(symbol)) {\n return new SGisBrushFill(symbol);\n }\n\n return new SGisPolygonSymbol(symbol);\n}\n\nfunction deserializePolylineSymbol(symbol: SimplePolylineSymbol) {\n return new SGisPolylineSymbol(symbol);\n}\n\nfunction deserializePointSymbolParams({\n size,\n offset,\n strokeColor,\n strokeWidth,\n fillColor,\n}: PointSymbol | SquareSymbol) {\n return {\n size: getParameterValue(size as ClassifyAble<number>),\n offset: deserializeAnchor(offset as Offset),\n strokeWidth: getParameterValue(strokeWidth as ClassifyAble<number>),\n strokeColor: deserializeColor(\n getParameterValue(strokeColor as ClassifyAble<string>)\n ),\n fillColor: deserializeColor(\n getParameterValue(fillColor as ClassifyAble<string>)\n ),\n };\n}\n\nfunction deserializeBase64(base: string) {\n return `data:image/png;base64,${base}`;\n}\n\nexport function deserializeAnchor(offset: Offset) {\n // @ts-ignore\n return offset.map(getParameterValue);\n}\n\nfunction deserializeColor(color: string): string | null {\n return color ? new Color(color).toString() : null;\n}\n","import { SGisSymbolType } from './types';\nimport { isSGisImageSymbol, isSGisPointSymbol } from './guards';\n\nimport { clamp } from '../utils/math';\n\nexport const clampSymbol = (\n symbol: SGisSymbolType,\n min: number,\n max: number\n): SGisSymbolType => {\n if (isSGisImageSymbol(symbol)) {\n symbol.width = clamp(symbol.width, min, max);\n symbol.height = clamp(symbol.height, min, max);\n } else if (isSGisPointSymbol(symbol)) {\n symbol.size = clamp(symbol.size, min, max);\n }\n\n return symbol;\n};\n\nexport function centerAlignSymbol(symbol: SGisSymbolType) {\n if (isSGisImageSymbol(symbol)) {\n symbol.anchorPoint = [symbol.width / 2, symbol.height / 2];\n } else if (isSGisPointSymbol(symbol)) {\n symbol.offset = [0, 0];\n }\n\n return symbol;\n}\n\nexport const adjustSymbol = (\n symbol: SGisSymbolType,\n { size }: { size: number }\n) => centerAlignSymbol(clampSymbol(symbol, 0, size));\n","import { useCallback, useMemo, useRef } from 'react';\nimport { SVG } from '@svgdotjs/svg.js';\nimport { Color } from '@evergis/color/es/Color';\n\nimport { DEFAULT_SYMBOL_OFFSET } from '../constants';\nimport { manipulateSvgSymbol } from '../../../utils/svg';\nimport { isSizeClassification } from '../../../utils/legend';\nimport { getOffsetParameterValue } from '../../../symbols';\nimport {\n getParameterValue,\n Offset,\n ParameterValue,\n SvgPointSymbol,\n} from '../../../core';\nimport { SvgEditorField, SvgSymbolBg } from '../types';\n\nexport const useSvgSymbol = (symbol: SvgPointSymbol, skipOffset?: boolean, isClassified?: boolean) => {\n const SVGWrapperRefElement = useRef<HTMLElement | null>(null);\n const SVGContainer = useMemo(() => SVG(), []);\n\n const initSvg = useCallback(() => {\n SVGContainer.addTo(SVGWrapperRefElement.current as HTMLElement);\n }, [SVGContainer]);\n\n const getSvgData = useCallback(() => SVGContainer.svg(), [SVGContainer]);\n\n const manipulateSvg = useCallback(\n ({\n svg,\n bg,\n newSymbol,\n isClassified,\n }: {\n svg: string;\n bg?: SvgSymbolBg;\n newSymbol?: SvgPointSymbol;\n isClassified?: boolean;\n }) => {\n manipulateSvgSymbol({\n SVGContainer,\n symbol: newSymbol || symbol,\n svg,\n bg,\n isClassified,\n });\n },\n [SVGContainer, symbol]\n );\n\n const getUpdatedSvgSymbol = useCallback(\n (field: keyof SvgEditorField, value: Color | number | string) => {\n const { data, offset } = symbol;\n const newValue = value instanceof Color ? value.toString('rgba') : value;\n\n const newSymbol = {\n ...JSON.parse(JSON.stringify(symbol)),\n offset: skipOffset\n ? DEFAULT_SYMBOL_OFFSET\n : isSizeClassification(field)\n ? getOffsetParameterValue(offset as Offset)\n : offset,\n };\n\n if (field.indexOf('.') !== -1) {\n const parts = field.split('.');\n\n if (newSymbol[parts[0]]?.[parts[1]]) {\n newSymbol[parts[0]][parts[1]] = newValue;\n } else {\n newSymbol[parts[0]] = {\n ...newSymbol[parts[0]],\n [parts[1]]: newValue,\n ...(parts[0] === 'background'\n ? { type: newSymbol.background.type, id: 'symbol-bg' }\n : parts[0] === 'figure'\n ? { id: 'symbol-figure' }\n : {}),\n };\n }\n } else {\n newSymbol[field] = newValue;\n }\n\n manipulateSvg({\n svg: getParameterValue(data as ParameterValue) as string,\n newSymbol,\n bg: newSymbol.background?.type,\n isClassified,\n });\n\n return { ...newSymbol, data: SVGContainer.svg() };\n },\n [SVGContainer, manipulateSvg, skipOffset, symbol]\n );\n\n return {\n svgRef: SVGWrapperRefElement,\n initSvg,\n getSvgData,\n manipulateSvg,\n getUpdatedSvgSymbol,\n };\n};\n","import React, { FC, memo, useCallback, useEffect, useMemo } from 'react';\nimport styled from 'styled-components';\nimport { SvgParameterDc, PointLabelSymbolDc } from '@evergis/api';\n\nimport { SymbolButton } from '../styled';\nimport { useSvgSymbol } from '../hooks/useSvgSymbol';\nimport { SvgPointSymbol } from '../../../core';\nimport { SvgSymbolProps } from '../types';\n\nconst SvgSymbolContainer = styled.div`\n position: relative;\n`;\n\nconst SvgSymbolLabel = styled.div<{ fontSettings?: PointLabelSymbolDc }>`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n color: #fff;\n ${({ fontSettings }) =>\n !!fontSettings?.fontFamily && `font-family: ${fontSettings.fontFamily}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontWeight && `font-weight: ${fontSettings.fontWeight}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontStyle && `font-style: ${fontSettings.fontStyle}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontColor && `color: ${fontSettings.fontColor}`};\n ${({ fontSettings }) =>\n !!fontSettings?.fontSize &&\n `font-size: ${\n typeof fontSettings.fontSize === 'string'\n ? fontSettings.fontSize\n : `${fontSettings.fontSize}px`\n }`};\n ${({ fontSettings }) =>\n !!fontSettings?.haloColor &&\n !!fontSettings?.haloWidth &&\n `-webkit-text-stroke: ${fontSettings.haloWidth}px ${fontSettings.haloColor};`};\n line-height: 0;\n`;\n\nexport const SvgSymbol: FC<SvgSymbolProps> = memo(\n ({ svg, bg, symbol, title, text, fontSettings, skipOffset, isClassified, onClick }) => {\n const { svgRef, initSvg, getSvgData, manipulateSvg } = useSvgSymbol(\n symbol,\n skipOffset,\n isClassified,\n );\n\n const onSelectSymbol = useCallback(() => {\n onClick?.(getSvgData(), {\n ...symbol,\n ...(bg\n ? {\n background: {\n ...(symbol.background as SvgParameterDc),\n type: bg,\n },\n }\n : {}),\n } as SvgPointSymbol);\n }, [bg, getSvgData, onClick, symbol]);\n\n const renderSymbol = useMemo(\n () => (\n <SymbolButton\n ref={svgRef}\n title={title}\n onClick={onClick ? onSelectSymbol : undefined}\n />\n ),\n [svgRef, title, onClick, onSelectSymbol]\n );\n\n useEffect(() => {\n initSvg();\n }, [initSvg]);\n\n useEffect(() => {\n manipulateSvg({ svg, bg, newSymbol: symbol, isClassified });\n }, [svg, symbol, bg, manipulateSvg, isClassified]);\n\n return text ? (\n <SvgSymbolContainer>\n {renderSymbol}\n <SvgSymbolLabel fontSettings={fontSettings}>{text}</SvgSymbolLabel>\n {!!fontSettings?.haloColor && !!fontSettings?.haloWidth && (\n <SvgSymbolLabel\n fontSettings={{\n ...fontSettings,\n haloColor: undefined,\n haloWidth: undefined,\n }}\n >\n {text}\n </SvgSymbolLabel>\n )}\n </SvgSymbolContainer>\n ) : (\n renderSymbol\n );\n }\n);\n","import React, { FC } from 'react';\nimport {\n CalculatedParameterDc,\n ClusterSymbolDc,\n ParameterDcColor,\n} from '@evergis/api';\n\nimport { SvgSymbol } from './SvgSymbol';\nimport { DEFAULT_CLUSTER_SVG } from '../constants';\nimport {\n isParameterByAttribute,\n ParameterByAttribute,\n SvgPointSymbol,\n} from '../../../core';\n\nexport const ClusterSymbolPreview: FC<{\n symbol: ClusterSymbolDc;\n index?: number;\n size?: number;\n fontSize?: string;\n}> = ({ symbol, index, size = 56, fontSize = '1.25rem' }) => {\n const isClassified = isParameterByAttribute(\n symbol.fillColor as ParameterDcColor\n );\n const isClassifiedValue = isClassified && index !== undefined;\n\n const fillColor =\n isClassifiedValue\n ? (symbol.fillColor as ParameterByAttribute<string>).values[index as number]\n ?.value ||\n (symbol.fillColor as ParameterByAttribute<string>).defaultValue\n : symbol.fillColor;\n\n const strokeColor = isClassified ? fillColor : symbol.strokeColor;\n\n const svgSymbol = {\n type: 'svgPointSymbol',\n size,\n offset: [0, 0],\n angle: 0,\n background: {\n id: 'symbol-bg',\n fillColor,\n strokeColor,\n strokeWidth: 6,\n type: 'circle',\n },\n };\n\n return (\n <SvgSymbol\n svg={DEFAULT_CLUSTER_SVG}\n symbol={(svgSymbol as unknown) as SvgPointSymbol}\n isClassified={isClassified}\n text={'99'}\n fontSettings={{\n ...symbol.labelSymbol,\n fontSize:\n (fontSize as CalculatedParameterDc) || symbol.labelSymbol?.fontSize,\n }}\n />\n );\n};\n","import React, { FC, useMemo } from 'react';\n\nimport { SvgSymbol } from './SvgSymbol';\nimport { Symbol, SGisSymbolType } from '../../../';\nimport { serializeSvgPointSymbol } from '../../../utils/legend';\nimport { SGisSymbol } from '../types';\nimport { SvgPointSymbol } from '../../../core';\n\nexport const SymbolByType: FC<{\n symbol?: SGisSymbol;\n size?: number;\n type?: string;\n svg?: string;\n skipOffset?: boolean;\n}> = ({ type, symbol, size, svg, skipOffset }) => {\n const defaultSymbol = useMemo(() => (\n <Symbol symbol={symbol as SGisSymbolType} size={size} />\n ), [symbol, size]);\n\n switch (type) {\n case 'svgPointSymbol':\n return svg ? (\n <SvgSymbol\n svg={svg}\n size={size}\n skipOffset={skipOffset}\n symbol={serializeSvgPointSymbol(symbol as SvgPointSymbol) as unknown as SvgPointSymbol}\n />\n ) : (\n defaultSymbol\n );\n default:\n return defaultSymbol;\n }\n};\n","import React, { FC, memo } from 'react';\nimport { ClusterSymbolDc } from '@evergis/api';\n\nimport { SymbolByType } from './SymbolByType';\nimport { ClusterSymbolPreview } from './ClusterSymbolPreview';\nimport { ClusterLegendContainer } from '../styled';\nimport { DEFAULT_LEGEND_SYMBOL_SIZE } from '../constants';\nimport { getLegendSymbolSize } from '../../../utils/legend';\nimport { deserializeSymbol } from '../../../symbols';\nimport {\n getParameterValue,\n isClusterSymbol,\n ParameterValue,\n StyleSymbolType,\n SvgPointSymbol,\n} from '../../../core';\nimport { SGisSymbol } from '../types';\n\nexport const LegendSymbolRenderer: FC<{\n symbol: StyleSymbolType;\n index?: number;\n}> = memo(({ symbol, index }) => {\n if (isClusterSymbol(symbol)) {\n return (\n <ClusterLegendContainer>\n <ClusterSymbolPreview\n symbol={symbol as ClusterSymbolDc}\n index={index}\n />\n </ClusterLegendContainer>\n );\n }\n\n return (\n <SymbolByType\n symbol={deserializeSymbol(symbol) as SGisSymbol}\n size={getLegendSymbolSize(symbol) || DEFAULT_LEGEND_SYMBOL_SIZE}\n type={symbol.type}\n svg={\n getParameterValue(\n (symbol as SvgPointSymbol).data as ParameterValue\n ) as string\n }\n skipOffset\n />\n );\n});\n","import React, { FC } from \"react\";\nimport { EverCloudClassificationIcon, EverCloudRefreshIcon, IconButton } from \"@evergis/icons\";\n\nimport { LegendHeaderButton } from \"../styled\";\nimport { LegendProps } from \"../types\";\n\ntype LegendHeaderButtonsProps = Pick<LegendProps, 'clearHiddenLegends' | 'goToClassification' | 'isShared'> & {\n layerName: string;\n hasHiddenLegends?: boolean;\n};\n\nexport const LegendHeaderButtons: FC<LegendHeaderButtonsProps> = ({ layerName, hasHiddenLegends, isShared, clearHiddenLegends, goToClassification }) => (\n <>\n {!!goToClassification && !isShared && (\n <LegendHeaderButton>\n <IconButton onClick={goToClassification}>\n <EverCloudClassificationIcon />\n </IconButton>\n </LegendHeaderButton>\n )}\n {!!clearHiddenLegends && (\n <LegendHeaderButton>\n <IconButton\n disabled={!hasHiddenLegends}\n onClick={() => clearHiddenLegends?.(layerName)}\n >\n <EverCloudRefreshIcon />\n </IconButton>\n </LegendHeaderButton>\n )}\n </>\n);\n","import { AttributeType } from '@evergis/api';\n\nimport { getAttributeNameFromCondition, LayerAttribute } from '../../../core';\n\nexport const getConditionAttribute = (\n attributes: LayerAttribute[],\n condition?: string\n): LayerAttribute | null => {\n if (!condition) return null;\n\n const attributeName = getAttributeNameFromCondition(condition) as string;\n\n let attribute: LayerAttribute = attributes.find(\n ({ name }) => name === attributeName\n ) as LayerAttribute;\n\n if (!attribute) {\n if (attributeName === 'count') {\n attribute = {\n name: 'count',\n alias: 'Количество',\n type: AttributeType.Int32,\n };\n } else {\n return null;\n }\n }\n\n return attribute;\n};\n","export const isHiddenLegend = (\n hiddenCondition: string,\n hiddenLegends?: string[]\n): boolean => !!hiddenLegends?.includes(hiddenCondition);\n","import React, { Fragment } from 'react';\n\nimport { ItemSeparator, ItemText, MapLegendDescription } from '../styled';\nimport { i18n } from \"../../../i18n\";\n\nconst renderColumn = (column: string, index?: number) => {\n const dateTime = column.split(' ');\n\n return (\n <Fragment key={index}>\n <ItemText title={column}>\n {dateTime[0]}\n <MapLegendDescription>{dateTime[1]}</MapLegendDescription>\n </ItemText>\n {index === 0 && <ItemSeparator />}\n </Fragment>\n );\n};\n\nexport const getLegendText = ({\n title,\n index,\n isDate,\n}: {\n title?: string;\n index: number;\n isDate: boolean;\n}) => {\n if (!title) {\n return <ItemText>{i18n.t(\"other\", { ns: \"style\" })}</ItemText>;\n }\n\n const columns = title?.split(' - ');\n const isSingleColumn = columns?.length === 1;\n\n if (!isDate || (index && isSingleColumn)) {\n return <ItemText title={title}>{title}</ItemText>;\n }\n\n if (!index && isSingleColumn) {\n return (\n <>\n <ItemText title=\"∞\">∞</ItemText>\n <ItemSeparator />\n {renderColumn(title)}\n </>\n );\n }\n\n return <>{columns.map(renderColumn)}</>;\n};\n","import { LayerDefinitionDc } from '@evergis/api';\n\nimport { LayerAttribute } from './types';\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","import React, { FC } from 'react';\n\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\nimport { ClassifiedItem, MapLegendContainer, SymbolContainer } from '../styled';\nimport {\n createHiddenCondition,\n createValueTitleFromCondition,\n getClassificationValue,\n getTitleFromCondition,\n isRangeCondition,\n} from '../../../utils/legend';\nimport { getConditionAttribute } from '../utils/getConditionAttribute';\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\nimport { getLegendText } from '../utils/getLegendText';\nimport { getLayerAttributes } from '../../../core/attributes/utils';\nimport { LegendChildrenProps } from '../types';\nimport {\n ClassificationCondition,\n ParameterByAttributeValue,\n ParameterValueWithSymbol,\n StyleSymbolType,\n} from '../../../core';\n\nexport const LegendChildren: FC<LegendChildrenProps> = ({\n layerInfo,\n hiddenLegends,\n toggleHiddenLegend,\n clearHiddenLegends,\n formatValue,\n}) => {\n if (!layerInfo?.style?.children?.length) return null;\n\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\n\n return (\n <MapLegendContainer>\n {layerInfo.style.children.map((paramValue, index) => {\n const attribute = getConditionAttribute(\n attributes,\n paramValue.condition\n );\n\n if (!attribute) return null;\n\n const hiddenCondition = createHiddenCondition(\n attribute.name as string,\n attribute.type,\n getClassificationValue(\n paramValue.symbol as StyleSymbolType,\n paramValue.title as string,\n new ClassificationCondition(paramValue.condition as string)\n )\n ) as string;\n\n const legendText = getLegendText({\n title: isRangeCondition(paramValue.condition)\n ? createValueTitleFromCondition(\n paramValue as ParameterByAttributeValue<\n ParameterValueWithSymbol\n >,\n attribute,\n formatValue,\n index\n )\n : getTitleFromCondition({\n condition: paramValue.condition,\n attribute,\n formatValue,\n }),\n index,\n isDate:\n getConditionAttribute(attributes, paramValue.condition)?.type ===\n 'DateTime',\n });\n\n return (\n <ClassifiedItem\n key={index}\n isHidden={isHiddenLegend(\n hiddenCondition,\n hiddenLegends?.[layerInfo.name]\n )}\n onClick={() =>\n toggleHiddenLegend?.(layerInfo.name, hiddenCondition)\n }\n >\n <SymbolContainer>\n <LegendSymbolRenderer\n symbol={paramValue.symbol as StyleSymbolType}\n />\n </SymbolContainer>\n {legendText}\n <LegendHeaderButtons layerName={layerInfo.name} clearHiddenLegends={clearHiddenLegends} />\n </ClassifiedItem>\n );\n })}\n </MapLegendContainer>\n );\n};\n","import React, { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { MapLegendBadge, MapLegendDescriptionContainer } from \"../styled\";\nimport { isParameterType } from \"../../../utils/isParameterType\";\nimport { ClassificationParameterExtended } from \"../../../core\";\n\nexport const LegendParameterDescription: FC<{\n parameter: ClassificationParameterExtended;\n index?: number;\n}> = ({ parameter, index }) => {\n const { t } = useTranslation(\"style\");\n const isSize = isParameterType(\"size\", parameter);\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\n const isStrokeColor = isParameterType([\"strokeColor\", \"stroke.color\"], parameter);\n\n return (\n <MapLegendDescriptionContainer>\n {isStrokeWidth || isStrokeColor\n ? (isStrokeWidth ? t(\"strokeWidth\") : t(\"strokeColor\"))\n : isSize ? t(\"symbolSize\") : t(\"symbolColor\")}\n {!!index && <MapLegendBadge>{index}</MapLegendBadge>}\n </MapLegendDescriptionContainer>\n );\n};\n","import React, { FC, useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { isNumeric } from \"../../../utils/isNumeric\";\nimport { isParameterType } from \"../../../utils/isParameterType\";\nimport {\n MapLegendItem,\n MapLegendItems,\n MapLegendItemsContainer,\n MapLegendOther,\n MapLegendValueDescr,\n MapLegendValues,\n MapLegendValuesOther,\n MapLegendValuesRange,\n MinimizedLegendContainer,\n SizeMinimizedLegend,\n SizeMinimizedLegendDown,\n SizeMinimizedLegendLabel,\n SizeMinimizedLegendSymbol,\n SizeMinimizedLegendUp\n} from \"../styled\";\nimport { MinimizedLegendProps } from \"../types\";\n\nconst getValueFromLegendTitle = (title: string, minOrMax: \"min\" | \"max\"): string => {\n if (title.includes(\" - \")) {\n const result = title?.split(\" - \");\n\n return minOrMax === \"min\" ? result?.[0] : result?.[1];\n }\n\n if (title.includes(\",\")) {\n const result = title?.split(\",\");\n\n return result.join(\", \");\n }\n\n return title.split(\" \").find(isNumeric) || title || \"\";\n};\n\nexport const MinimizedLegend: FC<MinimizedLegendProps> = ({\n innerRef,\n isShown,\n values,\n title,\n parameter,\n hiddenLegends,\n}) => {\n const { t } = useTranslation(\"style\");\n const currentValues = [...values];\n const other = currentValues.pop();\n const isSize = isParameterType(\"size\", parameter);\n const isStrokeWidth = isParameterType([\"strokeWidth\", \"stroke.width\"], parameter);\n const titleMax = getValueFromLegendTitle(currentValues[0]?.title, \"max\");\n const titleMin = getValueFromLegendTitle(currentValues[currentValues.length - 1]?.title, \"min\");\n\n const checkIsHidden = useCallback((hiddenCondition?: string) => hiddenCondition\n ? hiddenLegends?.some(condition => hiddenCondition.includes(condition))\n : false, [hiddenLegends]);\n\n return (\n <MinimizedLegendContainer ref={innerRef} isShown={isShown}>\n {!!title && <MapLegendValueDescr>{title}</MapLegendValueDescr>}\n {isSize ? (\n <>\n <SizeMinimizedLegend>\n <SizeMinimizedLegendSymbol>\n <MapLegendItems parameter={parameter} isSize>\n {currentValues.map((value, index) => (\n <MapLegendItem\n key={`${value.title}${index}`}\n title={value.title}\n value={value.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(value.hiddenCondition)}\n />\n ))}\n </MapLegendItems>\n </SizeMinimizedLegendSymbol>\n <SizeMinimizedLegendLabel>\n <SizeMinimizedLegendDown>{currentValues[0]?.title}</SizeMinimizedLegendDown>\n <SizeMinimizedLegendUp>{currentValues[currentValues.length - 1]?.title}</SizeMinimizedLegendUp>\n </SizeMinimizedLegendLabel>\n </SizeMinimizedLegend>\n <SizeMinimizedLegend>\n <SizeMinimizedLegendSymbol>\n <MapLegendItems parameter={parameter} isSize>\n <MapLegendOther\n title={t(\"other\")}\n value={other?.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(other?.hiddenCondition)}\n />\n </MapLegendItems>\n </SizeMinimizedLegendSymbol>\n <SizeMinimizedLegendLabel>\n <SizeMinimizedLegendUp>{t(\"other\")}</SizeMinimizedLegendUp>\n </SizeMinimizedLegendLabel>\n </SizeMinimizedLegend>\n </>\n ) : isStrokeWidth ? (\n <MapLegendItems parameter={parameter} isStrokeWidth>\n {currentValues.map((value, index) => (\n <MapLegendItem\n key={`${value.title}${index}`}\n title={value.title}\n value={value.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(value.hiddenCondition)}\n >\n {(!index || index === currentValues.length - 1) && value.title}\n </MapLegendItem>\n ))}\n <MapLegendOther\n title={t(\"other\")}\n value={other?.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(other?.hiddenCondition)}\n >\n {t(\"other\")}\n </MapLegendOther>\n </MapLegendItems>\n ) : (\n <MapLegendItems parameter={parameter}>\n <MapLegendItemsContainer>\n {currentValues.map((value, index) => (\n <MapLegendItem\n key={`${value.title}${index}`}\n title={value.title}\n value={value.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(value.hiddenCondition)}\n />\n ))}\n </MapLegendItemsContainer>\n <MapLegendOther\n title={t(\"other\")}\n value={other?.parameterValue as string}\n parameter={parameter}\n isHidden={checkIsHidden(other?.hiddenCondition)}\n />\n </MapLegendItems>\n )}\n {typeof other?.parameterValue === \"string\" && (titleMax || titleMin) && (\n <MapLegendValues>\n <MapLegendValuesRange>\n <div>{titleMax}</div>\n <div>{titleMin}</div>\n </MapLegendValuesRange>\n <MapLegendValuesOther>-</MapLegendValuesOther>\n </MapLegendValues>\n )}\n </MinimizedLegendContainer>\n )\n}\n","import React, { FC, useCallback, useMemo } from 'react';\nimport get from 'lodash/get';\n\nimport {\n ClassifiedItem,\n MapLegendItem,\n MapLegendItems,\n MaximizedLegendContainer,\n SymbolContainer,\n} from '../styled';\nimport { LegendSymbolRenderer } from './LegendSymbolRenderer';\nimport { isParameterType } from '../../../utils/isParameterType';\nimport { isHiddenLegend } from '../utils/isHiddenLegend';\nimport { getLegendText } from '../utils/getLegendText';\nimport {\n ClassificationParameterExtended,\n getExtractedSymbol,\n getParameterValue,\n isClusterFillColor as isClusterFillColorAction,\n ParameterByAttribute,\n ParameterValue,\n StyleSymbolType,\n} from '../../../core';\nimport { MaximizedLegendProps } from '../types';\n\nexport const MaximizedLegend: FC<MaximizedLegendProps> = ({\n innerRef,\n isShown,\n layerName,\n symbol: sectionSymbol,\n parameter,\n values,\n index: sectionIndex,\n attributeType,\n hiddenLegends,\n toggleHiddenLegend,\n}) => {\n const isDate = attributeType === 'DateTime';\n const isSize = isParameterType(\n 'size',\n parameter as ClassificationParameterExtended\n );\n const isStrokeWidth = isParameterType(\n ['strokeWidth', 'stroke.width'],\n parameter as ClassificationParameterExtended\n );\n const isStrokeColor = isParameterType(\n ['strokeColor', 'stroke.color'],\n parameter as ClassificationParameterExtended\n );\n\n const parameterValue = useMemo(\n () =>\n (get(sectionSymbol, parameter) as unknown) as ParameterByAttribute<\n ParameterValue\n >,\n [sectionSymbol, parameter]\n );\n\n const renderLegend = useCallback(\n ({ symbol, title, hiddenCondition }, index: number) => {\n if (!symbol) return null;\n\n const isClusterFillColor = isClusterFillColorAction(symbol, parameter);\n const value = (getParameterValue(\n parameterValue?.values[index]?.value) || parameterValue?.defaultValue\n ) as string | number;\n\n return (\n <ClassifiedItem\n key={sectionIndex + title + index}\n isHidden={isHiddenLegend(hiddenCondition, hiddenLegends)}\n isClusterFillColor={isClusterFillColor}\n onClick={() => toggleHiddenLegend?.(layerName, hiddenCondition)}\n >\n {isSize || isStrokeWidth || isStrokeColor ? (\n <MapLegendItems\n parameter={parameter as ClassificationParameterExtended}\n isSize={isSize}\n isStrokeWidth={isStrokeWidth}\n isStrokeColor={isStrokeColor}\n isSingle\n >\n <MapLegendItem\n key={`${title}${index}`}\n title={title}\n value={value}\n parameter={parameter as ClassificationParameterExtended}\n />\n </MapLegendItems>\n ) : (\n <SymbolContainer>\n <LegendSymbolRenderer\n index={index}\n symbol={\n isClusterFillColor ? sectionSymbol as StyleSymbolType : getExtractedSymbol(symbol, true)\n }\n />\n </SymbolContainer>\n )}\n {getLegendText({ title, index, isDate })}\n </ClassifiedItem>\n );\n },\n [\n parameter,\n sectionIndex,\n hiddenLegends,\n isSize,\n isStrokeWidth,\n isStrokeColor,\n parameterValue,\n sectionSymbol,\n isDate,\n toggleHiddenLegend,\n layerName,\n ]\n );\n\n return (\n <MaximizedLegendContainer ref={innerRef} isShown={isShown}>\n {values.map(renderLegend)}\n </MaximizedLegendContainer>\n );\n};\n","import { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { useCallback, useRef } from 'react';\n\nexport function useCanvas() {\n const canvas = useRef<Canvas | null>(null);\n const ref = useCallback((node: HTMLCanvasElement | null) => {\n if (node !== null) {\n canvas.current = new Canvas(node);\n } else {\n canvas.current = null;\n }\n }, []);\n\n return { canvas, ref };\n}\n","import { useEffect } from 'react';\n\nexport function useMount({ onMount, onUnmount }: UseMountOptions) {\n useEffect(() => {\n onMount && onMount();\n return onUnmount;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\ntype UseMountOptions = {\n onMount?: () => void;\n onUnmount?: () => void;\n};\n","import { PropsWithRef, useCallback, useState } from 'react';\n\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\n const [node, onSetNode] = useState<HTMLElement | null>(null);\n\n const ref = useCallback(onSetNode, [onSetNode]);\n\n return [ref, node];\n}\n","import { MutableRefObject, useEffect } from 'react';\nimport { Canvas } from '@evergis/sgis/es/painters/DomPainter/Canvas';\nimport { Render } from '@evergis/sgis/es/renders/Render';\n\nimport {\n getSymbolRenders,\n renderSymbolToCanvas,\n SGisSymbolType,\n} from '../symbols';\n\nexport interface UseSymbolParams {\n symbol: SGisSymbolType;\n render?: (symbol: SGisSymbolType, size: number) => Promise<Render[]>;\n size?: number;\n maxWidth?: number;\n}\n\nconst DEFAULT_SYMBOL_SIZE = 26;\n\nexport function useSymbol(\n {\n symbol,\n size = DEFAULT_SYMBOL_SIZE,\n render = getSymbolRenders,\n maxWidth,\n }: UseSymbolParams,\n canvasRef: MutableRefObject<Canvas | null>\n) {\n useEffect(() => {\n if (canvasRef.current !== null && symbol !== undefined) {\n const canvas = canvasRef.current;\n setCanvasSize(canvas, size, maxWidth);\n\n render(symbol, size).then(renders => {\n renderSymbolToCanvas(renders, canvas);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [symbol, size, maxWidth]);\n}\n\nfunction setCanvasSize(canvas: Canvas, size: number, maxWidth?: number) {\n canvas.node.height = size;\n canvas.node.width = maxWidth ? Math.min(size, maxWidth) : size;\n}\n","import { useCallback, useState } from \"react\";\n\nexport const useToggle = (initial?: boolean): [boolean, VoidFunction, (value: boolean) => void] => {\n const [state, setState] = useState(initial !== undefined ? initial : false);\n const toggle = useCallback(() => setState(!state), [state]);\n\n return [state, toggle, setState];\n};\n","import React, { FC } from 'react';\nimport { useTranslation } from \"react-i18next\";\nimport { CombinedPolylineSymbol } from \"@evergis/sgis/es/symbols/CombinedPolylineSymbol\";\nimport { CombinedPolylineSymbolDc, StyleDc } from \"@evergis/api\";\n\nimport { MinimizedLegend } from './MinimizedLegend';\nimport { MaximizedLegend } from './MaximizedLegend';\nimport { LegendParameterDescription } from './LegendParameterDescription';\nimport { LegendHeaderButtons } from \"./LegendHeaderButtons\";\nimport {\n MapLegendExpandButton,\n MapLegendHeader,\n MapLegendSectionContainer,\n MapLegendSectionItems,\n} from '../styled';\nimport {\n getMaximizedLegendValues,\n getMinimizedLegendValues,\n} from '../../../utils/legend';\nimport { isCombinedPolylineSymbol } from \"../../../core\";\nimport { useNode, useToggle } from '../../../hooks';\nimport { LegendSectionProps } from '../types';\n\nexport const LegendSection: FC<LegendSectionProps> = ({\n layerName,\n symbol,\n parameter,\n parameters,\n classified,\n hiddenLegends,\n toggleHiddenLegend,\n clearHiddenLegends,\n goToClassification,\n attribute,\n formatValue,\n index,\n count,\n isShared,\n}) => {\n const { t } = useTranslation(\"style\");\n const [isExpanded, toggleExpanded] = useToggle();\n const [maxRef, maxNode] = useNode();\n const [minRef, minNode] = useNode();\n\n if (!layerName || !attribute) return null;\n\n const currentSymbol = isCombinedPolylineSymbol(symbol as CombinedPolylineSymbolDc)\n ? (symbol as CombinedPolylineSymbol).values[index] as StyleDc['symbol'] : symbol;\n\n return (\n <MapLegendSectionContainer hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}>\n <MapLegendHeader>\n {attribute.alias || attribute.name}\n <LegendHeaderButtons\n layerName={layerName}\n hasHiddenLegends={!!hiddenLegends?.[layerName]?.length}\n clearHiddenLegends={clearHiddenLegends}\n goToClassification={goToClassification}\n isShared={isShared}\n />\n </MapLegendHeader>\n <LegendParameterDescription\n parameter={parameter}\n index={count && index !== undefined ? count - index : 0}\n />\n <MapLegendSectionItems\n minHeight={minNode?.offsetHeight}\n maxHeight={maxNode?.offsetHeight}\n isExpanded={isExpanded}\n >\n <MaximizedLegend\n innerRef={maxRef}\n isShown={isExpanded}\n layerName={layerName}\n symbol={currentSymbol}\n hiddenLegends={hiddenLegends?.[layerName]}\n toggleHiddenLegend={toggleHiddenLegend}\n parameter={parameter}\n attributeType={attribute.type}\n index={index}\n values={getMaximizedLegendValues(\n attribute,\n parameter,\n parameters,\n classified,\n currentSymbol,\n formatValue,\n index,\n t(\"other\")\n )}\n />\n <MinimizedLegend\n innerRef={minRef}\n isShown={!isExpanded}\n hiddenLegends={hiddenLegends?.[layerName]}\n parameter={parameter}\n values={getMinimizedLegendValues(\n attribute,\n classified,\n formatValue,\n index,\n t(\"other\")\n )}\n />\n </MapLegendSectionItems>\n <MapLegendExpandButton onClick={toggleExpanded}>\n {isExpanded ? t('hide') : t('show')}\n </MapLegendExpandButton>\n </MapLegendSectionContainer>\n );\n};\n","import React, { FC, memo, useMemo } from 'react';\n\nimport { LegendSection, LegendChildren } from './components';\nimport { MapLegendContainer } from './styled';\n\nimport { SYMBOL_CLASSIFICATION } from './constants';\n\nimport { getLayerAttributes } from '../../core/attributes/utils';\nimport { getConditionAttribute } from './utils/getConditionAttribute';\n\nimport { ClassifiedList, ClassifiedListItem, classifyParamsReduce, getClassified } from '../../utils/legend';\nimport { ClassificationParameterExtended, isCombinedPolylineSymbol } from '../../core';\nimport { ClassifyParameter, LegendProps } from './types';\n\nexport const Legend: FC<LegendProps> = memo(\n ({ layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification, ...rest }) => {\n if (!layerInfo) return null;\n\n if (layerInfo.style?.children?.length) {\n return (\n <LegendChildren\n layerInfo={layerInfo}\n formatValue={formatValue}\n hiddenLegends={hiddenLegends}\n toggleHiddenLegend={toggleHiddenLegend}\n clearHiddenLegends={clearHiddenLegends}\n goToClassification={goToClassification}\n />\n );\n }\n\n const attributes = getLayerAttributes(layerInfo.layerDefinition);\n\n const renderItems = useMemo(() => {\n const parameters = SYMBOL_CLASSIFICATION[layerInfo.geometryType];\n const props = {\n layerName: layerInfo.name,\n symbol: layerInfo.style?.symbol,\n parameters: parameters as ClassificationParameterExtended[],\n formatValue: formatValue,\n hiddenLegends: hiddenLegends,\n toggleHiddenLegend: toggleHiddenLegend,\n clearHiddenLegends: clearHiddenLegends,\n goToClassification: goToClassification,\n };\n\n if (layerInfo.style?.symbol && isCombinedPolylineSymbol(layerInfo.style.symbol)) {\n const values = layerInfo.style?.symbol?.values?.reduce((result, symbol, index) => {\n return [classifyParamsReduce(symbol, parameters as ClassifyParameter[], index) as ClassifiedList, ...result];\n }, [] as ClassifiedList[]);\n\n return (\n <>\n {values?.map((value, index) => Object.keys(value).map((param, keyIndex) => {\n const item = value[param as ClassifyParameter] as ClassifiedListItem;\n\n return (\n <LegendSection\n key={[keyIndex, index].join(\"-\")}\n index={item?.index as number}\n count={values?.length}\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\n parameter={param as ClassificationParameterExtended}\n classified={item}\n {...props}\n {...rest}\n />\n );\n }))}\n </>\n );\n }\n\n const classified = getClassified(layerInfo);\n\n if (!classified) return null;\n\n return (\n <>\n {Object.keys(classified).map((param, keyIndex) => {\n const item = classified[param as keyof ClassifiedList] as ClassifiedListItem;\n\n return (\n <LegendSection\n key={[keyIndex, item.index].join(\"-\")}\n index={item.index as number}\n attribute={getConditionAttribute(attributes, item?.values[0]?.condition)}\n parameter={param as ClassificationParameterExtended}\n classified={item}\n {...props}\n {...rest}\n />\n );\n })}\n </>\n );\n }, [layerInfo, formatValue, hiddenLegends, toggleHiddenLegend, clearHiddenLegends, goToClassification]);\n\n return (\n <MapLegendContainer>\n {renderItems}\n </MapLegendContainer>\n );\n }\n);\n","import React from 'react';\n\nimport { useCanvas, useSymbol, UseSymbolParams } from '../../hooks';\n\ninterface Props extends UseSymbolParams {}\n\nexport const Symbol: React.FC<Props> = ({ symbol, size, render }) => {\n const { canvas, ref } = useCanvas();\n useSymbol({ symbol, size, render }, canvas);\n\n return <canvas ref={ref} />;\n};\n","import { GeometryType } from '@evergis/api';\nimport styled from 'styled-components';\n\nexport type CompoundIconProps = {\n geometryType: GeometryType;\n icons: Record<GeometryType, string>;\n};\n\nexport const CompoundIcon = styled.div<CompoundIconProps>`\n background: ${({ geometryType, icons }) =>\n `url(${icons[geometryType]}) center center / ${\n geometryType === GeometryType.Polyline ? '2rem 1.3rem' : 'auto 1rem'\n } no-repeat`};\n height: 32px;\n width: 32px;\n`;\n\nexport const ClusterSymbol = styled.div<{ color?: string }>`\n position: relative;\n width: 32px;\n height: 32px;\n\n :before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: inherit;\n height: inherit;\n background-color: ${({ color }) => color};\n border-radius: 50%;\n opacity: 0.28;\n }\n \n :after {\n content: \"99\";\n position: absolute;\n top: 4px;\n left: 4px;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n background-color: ${({ color }) => color};\n border-radius: 50%;\n color: white;\n font-size: 0.75rem;\n line-height: 1;\n }\n`;\n","import React, { PropsWithChildren } from 'react';\nimport { SvgPointSymbolDc } from \"@evergis/api\";\n\nimport { Symbol } from './Symbol';\nimport { ClusterSymbol } from \"./styled\";\nimport { getParameterValue, StyleSymbolType } from '../../core';\nimport { deserializeSymbol, adjustSymbol, isSGisClusterSymbol, SGisSymbolType } from '../../symbols';\n\ntype StyleSymbolProps = PropsWithChildren<{\n symbol: StyleSymbolType;\n size?: number;\n}>;\n\nconst MAX_SIZE = 32;\n\nexport const StyleSymbol: React.FC<StyleSymbolProps> = ({\n symbol,\n size = MAX_SIZE,\n children,\n}) => {\n if (children) {\n return <>{children}</>;\n }\n\n let sGisSymbol = null;\n\n try {\n sGisSymbol = deserializeSymbol(symbol);\n } catch (e) {\n // TODO generate Error symbol\n }\n\n if (!sGisSymbol) {\n return null;\n }\n\n if (isSGisClusterSymbol(symbol as SGisSymbolType)) {\n const color = getParameterValue((sGisSymbol as SvgPointSymbolDc).background?.fillColor as string) ||\n getParameterValue((sGisSymbol as SvgPointSymbolDc).figure?.fillColor as string) || \"rgb(0, 170, 255)\";\n\n return <ClusterSymbol color={color} />\n }\n\n return (\n <Symbol\n symbol={adjustSymbol(sGisSymbol, { size: size - 1 })}\n size={size}\n />\n );\n};\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 { Coordinates } from '@evergis/sgis/es/baseTypes';\n\nexport const polygonCircleFromPoint = (\n center: Coordinates,\n diameter: number\n): Coordinates[][] => {\n const coordinates: Coordinates[] = [];\n const radius = diameter / 2;\n const endAngle = Math.PI * 2;\n const step = Math.max(Math.PI / 2 / radius, endAngle / 128);\n let start = 0;\n let end = endAngle;\n\n for (let ang = start; ang < end; ang += step) {\n coordinates.push([\n Math.cos(ang) * radius + center[0],\n Math.sin(ang) * radius + center[1],\n ]);\n }\n\n return [coordinates];\n};\n"],"names":["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","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","CircleLineMiterRender","polygonCircleFromPoint","SquareLineMiterRender","getLineMiterRender","options","updateRingForRightMiter","isLastRing","reversedRing","reverse","coordinates","nextCoordinates","abs","updateRingForLeftMiter","isFirstRing","newRing","prevCoordinates","updateRingsForMiter","ringIndex","copyRings","SGisPolylineSymbol","feature","crs","renders","featureCopy","clone","beginningMiterRender","endingMiterRender","updatedRings","usageSize","render","getRender","unshift","sPolylineSymbol","ShadowedPointSymbol","PointFeature","projectTo","pxPosition","shadowRender","getShadow","pointArc","getPoint","_feature","mapCoordinates","getShadowArc","getPointArc","shadowColor","shadowSize","Arc","radius","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","metersToPixels","meters","painter","geo","zeroPoint","getPointFromPxPosition","maxWidthPoint","widthDistance","distance","pxK","defaultPathStyles","SVGPoly","redrawFeatureNode","pathStyles","circle","className","appendToSvg","container","getRenderedCoordinates","centroid","setCirclePxRaius","innerHTML","setSvg","append","__dynamicSymbolRender","DynamicRender","node","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","getSymbolRenders","features","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","useSvgSymbol","skipOffset","SVGWrapperRefElement","useRef","useMemo","SVG","initSvg","useCallback","addTo","current","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","React","ref","useEffect","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","useCanvas","Canvas","useMount","onMount","onUnmount","useNode","onSetNode","useState","useSymbol","canvasRef","maxWidth","setCanvasSize","then","useToggle","state","setState","toggle","LegendSection","parameters","count","toggleExpanded","maxRef","maxNode","minRef","minNode","currentSymbol","offsetHeight","Legend","rest","renderItems","keyIndex","CompoundIcon","icons","ClusterSymbol","MAX_SIZE","StyleSymbol","sGisSymbol","e","LegendContext","createContext","LegendProvider","Provider","useLegendContext","useContext","diameter","endAngle","start","end","ang","cos","sin"],"mappings":"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"}