@siemens/element-ng 51.3.0 → 51.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/fesm2022/siemens-element-ng-breadcrumb.mjs +8 -46
  2. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-chat-messages.mjs +2 -2
  4. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-common.mjs +5 -0
  6. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-dashboard.mjs +2 -3
  8. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-filtered-search.mjs +255 -160
  10. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-formly.mjs +12 -8
  12. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-maplibre.mjs +293 -10
  14. package/fesm2022/siemens-element-ng-maplibre.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs +2 -2
  16. package/fesm2022/siemens-element-ng-markdown-extensions-katex.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-popover.mjs +3 -1
  18. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-shadow-root.mjs +54 -1
  20. package/fesm2022/siemens-element-ng-shadow-root.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-theme.mjs +59 -23
  22. package/fesm2022/siemens-element-ng-theme.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-tooltip.mjs +82 -10
  24. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  26. package/fesm2022/siemens-element-ng-tree-view.mjs +2 -2
  27. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  28. package/maplibre/styles/maplibre-gl.scss +4 -0
  29. package/package.json +7 -7
  30. package/template-i18n.json +6 -0
  31. package/types/siemens-element-ng-breadcrumb.d.ts +1 -1
  32. package/types/siemens-element-ng-common.d.ts +5 -0
  33. package/types/siemens-element-ng-dashboard.d.ts +0 -1
  34. package/types/siemens-element-ng-filtered-search.d.ts +26 -10
  35. package/types/siemens-element-ng-maplibre.d.ts +112 -5
  36. package/types/siemens-element-ng-popover.d.ts +1 -0
  37. package/types/siemens-element-ng-shadow-root.d.ts +16 -1
  38. package/types/siemens-element-ng-theme.d.ts +35 -7
  39. package/types/siemens-element-ng-tooltip.d.ts +14 -1
  40. package/types/siemens-element-ng-translate.d.ts +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-maplibre.mjs","sources":["../../../../projects/element-ng/maplibre/si-maplibre-style.ts","../../../../projects/element-ng/maplibre/cluster.utils.ts","../../../../projects/element-ng/maplibre/si-cluster-marker.component.ts","../../../../projects/element-ng/maplibre/si-cluster-marker.component.html","../../../../projects/element-ng/maplibre/si-cluster-source.component.ts","../../../../projects/element-ng/maplibre/si-cluster-source.component.html","../../../../projects/element-ng/maplibre/si-maplibre-translate.ts","../../../../projects/element-ng/maplibre/si-status-marker.component.ts","../../../../projects/element-ng/maplibre/si-status-marker.component.html","../../../../projects/element-ng/maplibre/index.ts","../../../../projects/element-ng/maplibre/siemens-element-ng-maplibre.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { assertInInjectionContext, computed, Signal } from '@angular/core';\nimport { injectIsDarkTheme } from '@siemens/element-ng/theme';\nimport { siMapStyle } from '@siemens/map-styles/common';\nimport type { StyleSpecification } from 'maplibre-gl';\n\n/**\n * Creates a signal that returns a {@link StyleSpecification} for MapLibre GL based on the current\n * Element theme. The signal automatically updates when the theme switches between light and dark.\n *\n * @remarks\n * **Must be called in an Angular injection context** (e.g. inside a constructor, field initializer,\n * or a function called from one). Calling this function outside of an injection context will throw\n * an `assertInInjectionContext` error.\n *\n * @experimental\n *\n * @param key - The MapTiler API key used to fetch tiles, glyphs, and sprites\n * @returns A signal that provides the current {@link StyleSpecification} based on the active theme\n * @throws When called outside of an Angular injection context\n */\nexport const injectSiMapStyle = (key: string): Signal<StyleSpecification> => {\n assertInInjectionContext(injectSiMapStyle);\n const isDark = injectIsDarkTheme();\n\n return computed(() => {\n return siMapStyle(key, isDark()) as StyleSpecification;\n });\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport type { ClusterColors, ClusterPoint, ClusterSegment } from './cluster-types';\nimport type { MarkerStatus } from './marker-types';\n\ntype ClusterProperties = Record<string, ['+', unknown]>;\n\nconst MARKER_STATUS_COLORS = {\n info: 'var(--si-sys-color-background-information)',\n success: 'var(--si-sys-color-background-success)',\n warning: 'var(--si-sys-color-background-warning)',\n danger: 'var(--si-sys-color-background-danger)',\n caution: 'var(--si-sys-color-background-caution)',\n critical: 'var(--si-sys-color-background-critical)',\n default: 'var(--si-sys-color-background-accent)',\n unknown: 'var(--si-sys-color-background-neutral)'\n} satisfies Record<MarkerStatus, string>;\n\n// Keep the four-color status palette stable for numeric group IDs.\nconst GROUP_STATUS_COLORS = [\n MARKER_STATUS_COLORS.info,\n MARKER_STATUS_COLORS.success,\n MARKER_STATUS_COLORS.warning,\n MARKER_STATUS_COLORS.danger\n];\nconst ELEMENT_COLORS = [\n 'var(--si-sys-color-data-sequential-red-2)',\n 'var(--si-sys-color-data-sequential-orange-4)',\n 'var(--si-sys-color-background-caution)',\n 'var(--si-sys-color-data-sequential-green-2)',\n 'var(--si-sys-color-background-information)',\n 'var(--si-sys-color-data-categorial-1)',\n 'var(--si-sys-color-data-categorial-17)'\n];\nconst UNGROUPED_COLOR = 'var(--si-sys-color-background-accent)';\nconst SEPARATOR_COLOR = 'var(--si-sys-color-background-1)';\nconst CHART_FRAGMENTS = 20;\nconst SEPARATOR_DEGREES = 2;\n\ninterface ClusterBucket extends ClusterSegment {\n mapExpression: unknown;\n}\n\n/** @internal */\nexport interface ClusterConfiguration {\n clusterProperties: ClusterProperties;\n segments: readonly ClusterSegment[];\n}\n\n/** @internal */\nexport const createClusterConfiguration = (\n groupColors: ClusterColors,\n groupProperty: string,\n statusProperty?: string\n): ClusterConfiguration => {\n const group = ['to-number', ['get', groupProperty], 0];\n let buckets: ClusterBucket[];\n\n if (typeof groupColors === 'string') {\n const colors = groupColors === 'status' ? GROUP_STATUS_COLORS : ELEMENT_COLORS;\n buckets = colors.map((color, index) => ({\n color,\n mapExpression: [\n 'case',\n ['all', ['>', group, 0], ['==', ['%', ['-', group, 1], colors.length], index]],\n 1,\n 0\n ],\n property: `si_group_${index}`\n }));\n } else {\n buckets = Object.entries(groupColors)\n .map(([groupId, color]) => ({ color, groupId: Number(groupId) }))\n .filter(bucket => Number.isInteger(bucket.groupId) && bucket.groupId > 0)\n .sort((a, b) => a.groupId - b.groupId)\n .map(bucket => ({\n color: bucket.color,\n mapExpression: ['case', ['==', group, bucket.groupId], 1, 0],\n property: `si_group_${bucket.groupId}`\n }));\n }\n\n if (statusProperty !== undefined) {\n for (const [status, color] of Object.entries(MARKER_STATUS_COLORS)) {\n buckets.push({\n color,\n mapExpression: [\n 'case',\n ['all', ['==', group, 0], ['==', ['get', statusProperty], status]],\n 1,\n 0\n ],\n property: `si_status_${status}`\n });\n }\n }\n\n return {\n clusterProperties: Object.fromEntries(\n buckets.map(bucket => [bucket.property, ['+', bucket.mapExpression]])\n ),\n segments: buckets.map(({ color, property }) => ({ color, property }))\n };\n};\n\n/** @internal */\nexport const createClusterGradient = (\n feature: ClusterPoint,\n configuredSegments: readonly ClusterSegment[]\n): string => {\n const count = getNumberProperty(feature, 'point_count');\n const segments = configuredSegments\n .map(segment => ({\n color: segment.color,\n count: getNumberProperty(feature, segment.property)\n }))\n .filter(segment => segment.count > 0);\n const groupedCount = segments.reduce((sum, segment) => sum + segment.count, 0);\n if (groupedCount < count) {\n segments.push({ color: UNGROUPED_COLOR, count: count - groupedCount });\n }\n if (!segments.length) {\n return UNGROUPED_COLOR;\n }\n\n const fragmentSize = count / CHART_FRAGMENTS;\n const weightedSegments = segments.map(segment => ({\n ...segment,\n weight: Math.max(1, segment.count / fragmentSize)\n }));\n const totalWeight = weightedSegments.reduce((sum, segment) => sum + segment.weight, 0);\n const separator =\n weightedSegments.length > 1 ? Math.min(SEPARATOR_DEGREES, 180 / totalWeight) : 0;\n let position = 0;\n const stops: string[] = [];\n for (const segment of weightedSegments) {\n const start = position;\n position += (segment.weight / totalWeight) * 360;\n if (separator) {\n stops.push(\n `${SEPARATOR_COLOR} ${start}deg ${start + separator / 2}deg`,\n `${segment.color} ${start + separator / 2}deg ${position - separator / 2}deg`,\n `${SEPARATOR_COLOR} ${position - separator / 2}deg ${position}deg`\n );\n } else {\n stops.push(`${segment.color} ${start}deg ${position}deg`);\n }\n }\n return `conic-gradient(from -90deg, ${stops.join(', ')})`;\n};\n\nconst getNumberProperty = (feature: ClusterPoint, property: string): number => {\n const value = feature.properties?.[property];\n return typeof value === 'number' ? value : Number(value) || 0;\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input, output } from '@angular/core';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { ClusterPoint, ClusterSegment } from './cluster-types';\nimport { createClusterGradient } from './cluster.utils';\n\n/**\n * Renders an interactive marker for a MapLibre cluster.\n *\n * The marker displays the total number of clustered points and visualizes their group distribution\n * as colored segments. It is created internally by `SiClusterSourceComponent`.\n *\n * @internal\n */\n@Component({\n selector: 'si-cluster-marker',\n imports: [SiTranslatePipe],\n templateUrl: './si-cluster-marker.component.html',\n styleUrl: './si-cluster-marker.component.scss'\n})\nexport class SiClusterMarkerComponent {\n /** Cluster feature represented by this marker. */\n readonly feature = input.required<ClusterPoint>();\n\n /** Colored segments that represent the grouped points in the cluster. */\n readonly segments = input.required<readonly ClusterSegment[]>();\n\n /** Emits when the marker is activated. */\n readonly markerClick = output<void>();\n\n protected readonly count = computed(() => Number(this.feature().properties?.point_count) || 0);\n protected readonly countLabel = computed(() => (this.count() > 99 ? '99+' : `${this.count()}`));\n protected readonly clusterLabel = t(\n () => $localize`:@@SI_MAP_CLUSTER.LABEL:Cluster with {{count}} locations`\n );\n\n protected readonly gradient = computed(() =>\n createClusterGradient(this.feature(), this.segments())\n );\n\n protected onClick(event: MouseEvent): void {\n event.stopPropagation();\n this.markerClick.emit();\n }\n}\n","<button\n type=\"button\"\n class=\"cluster-marker\"\n [attr.aria-label]=\"clusterLabel | translate: { count: count() }\"\n [style.--si-cluster-gradient]=\"gradient()\"\n (click)=\"onClick($event)\"\n>\n <span class=\"cluster-count\" aria-hidden=\"true\">{{ countLabel() }}</span>\n</button>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input, output, signal } from '@angular/core';\nimport {\n ClusterPointDirective,\n GeoJSONSourceComponent,\n MarkersForClustersComponent\n} from '@maplibre/ngx-maplibre-gl';\n\nimport type { ClusterColors, ClusterPoint } from './cluster-types';\nimport { createClusterConfiguration } from './cluster.utils';\nimport { SiClusterMarkerComponent } from './si-cluster-marker.component';\n\nconst EMPTY_DATA: GeoJSON.FeatureCollection<GeoJSON.Point> = {\n type: 'FeatureCollection',\n features: []\n};\n\n/**\n * Adds a clustered GeoJSON source to a MapLibre map and renders interactive cluster markers.\n *\n * Cluster markers display the number of contained points and their distribution by group. Status\n * segments can be enabled for ungrouped points by providing `statusProperty`. Render individual,\n * unclustered points separately with `mgl-markers-for-clusters` using the same source ID.\n * Positive numeric groups always take precedence over status segments. Status segments apply only\n * when the normalized group value is zero; points without a matching group or status use the\n * ungrouped color.\n *\n * @example Basic usage\n * ```html\n * <mgl-map [mapStyle]=\"mapStyle()\">\n * <si-cluster-source\n * sourceId=\"locations\"\n * statusProperty=\"status\"\n * [data]=\"locations\"\n * (clusterClick)=\"onClusterClick($event)\"\n * />\n *\n * <mgl-markers-for-clusters source=\"locations\">\n * <ng-template let-feature mglPoint>\n * <si-status-marker\n * [status]=\"feature.properties?.status\"\n * />\n * </ng-template>\n * </mgl-markers-for-clusters>\n * </mgl-map>\n * ```\n *\n * @experimental\n */\n@Component({\n selector: 'si-cluster-source',\n imports: [\n ClusterPointDirective,\n GeoJSONSourceComponent,\n MarkersForClustersComponent,\n SiClusterMarkerComponent\n ],\n templateUrl: './si-cluster-source.component.html'\n})\nexport class SiClusterSourceComponent {\n /** ID used to register the generated GeoJSON source in MapLibre. */\n readonly sourceId = input.required<string>();\n /**\n * Point feature collection to cluster.\n * @defaultValue EMPTY_DATA\n */\n readonly data = input<GeoJSON.FeatureCollection<GeoJSON.Point>>(EMPTY_DATA);\n /**\n * Feature property containing the positive numeric group ID.\n * @defaultValue 'group'\n */\n readonly groupProperty = input('group');\n /**\n * Built-in palette or exact colors indexed by group ID. The built-in `'status'` palette contains\n * four colors for numeric groups and is separate from status-based bucketing.\n * @defaultValue 'status'\n */\n readonly groupColors = input<ClusterColors>('status');\n /**\n * Top-level feature property containing a {@link MarkerStatus} value. Status bucketing is\n * disabled by default and only applies when the normalized group value is zero. Missing or\n * unsupported status values, and groups that do not match a configured bucket, use the ungrouped\n * color. Built-in colors match `SiStatusMarkerComponent`, with `default` using accent and\n * `unknown` using neutral.\n * @defaultValue undefined\n * @see https://maplibre.org/maplibre-style-spec/sources/#clusterproperties\n */\n readonly statusProperty = input<string | undefined>();\n /**\n * Cluster radius in pixels.\n * @defaultValue 50\n */\n readonly clusterRadius = input(50);\n /**\n * Maximum zoom at which points are clustered.\n * @defaultValue undefined\n */\n readonly clusterMaxZoom = input<number | undefined>(undefined);\n /**\n * Minimum number of points required to form a cluster.\n * @defaultValue 2\n */\n readonly clusterMinPoints = input(2);\n\n /** Emits when a cluster marker is activated. */\n readonly clusterClick = output<ClusterPoint>();\n\n protected readonly clusterConfiguration = computed(() =>\n createClusterConfiguration(this.groupColors(), this.groupProperty(), this.statusProperty())\n );\n /** Stores selection for the projected cluster-popover integration. */\n protected readonly selectedCluster = signal<ClusterPoint | undefined>(undefined);\n\n protected async selectCluster(feature: ClusterPoint): Promise<void> {\n this.clusterClick.emit(feature);\n this.selectedCluster.set({ ...feature, geometry: feature.geometry });\n }\n}\n","<mgl-geojson-source\n #source\n [id]=\"sourceId()\"\n [data]=\"data()\"\n [cluster]=\"true\"\n [clusterRadius]=\"clusterRadius()\"\n [clusterMaxZoom]=\"clusterMaxZoom()\"\n [clusterMinPoints]=\"clusterMinPoints()\"\n [clusterProperties]=\"clusterConfiguration().clusterProperties\"\n/>\n\n<mgl-markers-for-clusters [source]=\"sourceId()\">\n <ng-template let-feature mglClusterPoint>\n <si-cluster-marker\n [feature]=\"feature\"\n [segments]=\"clusterConfiguration().segments\"\n (markerClick)=\"selectCluster(feature)\"\n />\n </ng-template>\n</mgl-markers-for-clusters>\n\n<ng-content select=\"si-cluster-popover,[siClusterPopoverOutlet]\" />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { injectSiTranslateService, t } from '@siemens/element-translate-ng/translate';\nimport { map } from 'rxjs';\n\nconst createDefaultLocale = (): Record<string, string> => ({\n 'AttributionControl.ToggleAttribution': t(\n () => $localize`:@@SI_MAP.TOGGLE_ATTRIBUTION:Toggle attribution`\n ),\n 'AttributionControl.MapFeedback': t(() => $localize`:@@SI_MAP.MAP_FEEDBACK:Map feedback`),\n 'FullscreenControl.Enter': t(() => $localize`:@@SI_MAP.FULLSCREEN_ENTER:Enter full screen`),\n 'FullscreenControl.Exit': t(() => $localize`:@@SI_MAP.FULLSCREEN_EXIT:Exit full screen`),\n 'GeolocateControl.FindMyLocation': t(\n () => $localize`:@@SI_MAP.FIND_MY_LOCATION:Find my location`\n ),\n 'GeolocateControl.LocationNotAvailable': t(\n () => $localize`:@@SI_MAP.LOCATION_NOT_AVAILABLE:Location not available`\n ),\n 'LogoControl.Title': t(() => $localize`:@@SI_MAP.LOGO_TITLE:MapLibre logo`),\n 'Map.Title': t(() => $localize`:@@SI_MAP.MAP_TITLE:Map`),\n 'Marker.Title': t(() => $localize`:@@SI_MAP.MARKER_TITLE:Map marker`),\n 'NavigationControl.ResetBearing': t(\n () => $localize`:@@SI_MAP.RESET_BEARING:Reset bearing to north`\n ),\n 'NavigationControl.ZoomIn': t(() => $localize`:@@SI_MAP.ZOOM_IN:Zoom in`),\n 'NavigationControl.ZoomOut': t(() => $localize`:@@SI_MAP.ZOOM_OUT:Zoom out`),\n 'Popup.Close': t(() => $localize`:@@SI_MAP.POPUP_CLOSE:Close popup`),\n 'ScaleControl.Feet': t(() => $localize`:@@SI_MAP.SCALE_FEET:ft`),\n 'ScaleControl.Meters': t(() => $localize`:@@SI_MAP.SCALE_METERS:m`),\n 'ScaleControl.Kilometers': t(() => $localize`:@@SI_MAP.SCALE_KILOMETERS:km`),\n 'ScaleControl.Miles': t(() => $localize`:@@SI_MAP.SCALE_MILES:mi`),\n 'ScaleControl.NauticalMiles': t(() => $localize`:@@SI_MAP.SCALE_NAUTICAL_MILES:nm`),\n 'GlobeControl.Enable': t(() => $localize`:@@SI_MAP.GLOBE_ENABLE:Switch to globe view`),\n 'GlobeControl.Disable': t(() => $localize`:@@SI_MAP.GLOBE_DISABLE:Switch to flat view`),\n 'TerrainControl.Enable': t(() => $localize`:@@SI_MAP.TERRAIN_ENABLE:Enable terrain`),\n 'TerrainControl.Disable': t(() => $localize`:@@SI_MAP.TERRAIN_DISABLE:Disable terrain`),\n 'CooperativeGesturesHandler.WindowsHelpText': t(\n () => $localize`:@@SI_MAP.WINDOWS_HELP:Use Ctrl + scroll to zoom the map`\n ),\n 'CooperativeGesturesHandler.MacHelpText': t(\n () => $localize`:@@SI_MAP.MAC_HELP:Use ⌘ + scroll to zoom the map`\n ),\n 'CooperativeGesturesHandler.MobileHelpText': t(\n () => $localize`:@@SI_MAP.MOBILE_HELP:Use two fingers to move the map`\n )\n});\n\n/**\n * Provides translated MapLibre locale strings as an Angular signal. The record uses MapLibre's\n * original locale keys, such as `AttributionControl.ToggleAttribution`, and updates when the\n * active Element language changes.\n *\n * @example\n * ```ts\n * @Component({ ... })\n * export class MapComponent {\n * protected readonly mapTranslations = injectSiMapTranslations();\n * }\n * ```\n *\n * ```html\n * <mgl-map [locale]=\"mapTranslations()\" />\n * ```\n *\n * @returns A signal containing a MapLibre locale record, for example\n * `{ 'AttributionControl.ToggleAttribution': 'Toggle attribution' }`.\n */\nexport const injectSiMapTranslations = (): Signal<Record<string, string>> => {\n const translateService = injectSiTranslateService();\n const initialValue = createDefaultLocale();\n return toSignal(\n translateService\n .translateAsync(Object.values(initialValue))\n .pipe(\n map(translations =>\n Object.fromEntries(\n Object.entries(initialValue).map(([key, value]) => [key, translations[value]])\n )\n )\n ),\n {\n initialValue\n }\n );\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input } from '@angular/core';\n\nimport type { MarkerStatus } from './marker-types';\n\n@Component({\n selector: 'si-status-marker',\n templateUrl: './si-status-marker.component.html',\n styleUrl: './si-status-marker.component.scss',\n host: {\n class: 'si-status-marker',\n '[attr.data-status]': 'status() ?? \"default\"'\n }\n})\nexport class SiStatusMarkerComponent {\n /**\n * The status of the marker.\n * @defaultValue 'default'\n */\n readonly status = input<MarkerStatus>('default');\n}\n","<svg viewBox=\"0 0 512 512\" aria-hidden=\"true\" focusable=\"false\">\n @switch (status()) {\n @case ('unknown') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Zm0,213.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"middle\"\n d=\"m255.99,277.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.04,207.64h0c-5.25,0-9.5-4.25-9.5-9.5v-9.95c0-3.59,1.8-7,4.87-8.86.59-.36,1.07-.56,1.58-.73,5.75-1.99,17.59-8.4,17.59-15.59,0-6.46-4.07-12.24-10.16-14.38-7.91-2.78-16.6,1.39-19.38,9.29-1.74,4.95-7.16,7.55-12.11,5.81-4.95-1.74-7.55-7.17-5.81-12.11,6.26-17.79,25.82-27.17,43.61-20.91,13.69,4.82,22.87,17.8,22.85,32.31,0,16.73-14.98,26.5-24.04,30.88v4.23c0,5.25-4.25,9.5-9.5,9.5h0Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,247h-.18c-7.02,0-12.72-5.73-12.72-12.81,0-7.08,5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81,0,7.08-5.69,12.81-12.72,12.81Z\"\n />\n }\n @case ('success') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Zm0,213.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"middle\"\n d=\"m255.99,277.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"symbol\"\n d=\"m241.55,225.45c-2.47,0-4.93-.94-6.82-2.82l-24.09-24.09c-3.77-3.77-3.77-9.86,0-13.63,3.77-3.77,9.87-3.77,13.63,0l17.28,17.28,46.19-46.19c3.77-3.77,9.87-3.77,13.63,0,3.77,3.77,3.77,9.86,0,13.63l-53.01,53.01c-1.88,1.88-4.35,2.82-6.82,2.82h.02Z\"\n />\n }\n @case ('info') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <rect\n class=\"middle\"\n x=\"177.74\"\n y=\"110.96\"\n width=\"156.52\"\n height=\"156.52\"\n rx=\"11.74\"\n ry=\"11.74\"\n />\n <path\n class=\"symbol\"\n d=\"m255.91,134.43h.18c7.02,0,12.72,5.73,12.72,12.81s-5.69,12.81-12.72,12.81h-.18c-7.02,0-12.72-5.73-12.72-12.81s5.69-12.81,12.72-12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,179.94c5.31,0,9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61s-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61Z\"\n />\n }\n @case ('warning') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <path\n class=\"middle\"\n d=\"m243.78,104.22l-76.92,134.35c-5.38,9.39,1.4,21.09,12.22,21.09h153.85c10.82,0,17.6-11.7,12.22-21.09l-76.92-134.35c-5.41-9.45-19.04-9.45-24.45,0Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,244.09h-.18c-7.02,0-12.72-5.73-12.72-12.81s5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81s-5.69,12.81-12.72,12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,198.59c-5.31,0-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61s9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61Z\"\n />\n }\n @case ('danger') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.05,0-125.21,56.17-125.21,125.21,0,1.43.04,2.94.12,4.6.46,12.81,2.85,25.34,7.07,37.27,24.64,80.64,105.26,184.13,108.68,188.43,2.27,2.85,5.7,4.5,9.35,4.5s7.08-1.66,9.35-4.5c3.42-4.3,84.05-107.77,108.69-188.43,4.23-11.93,6.61-24.46,7.07-37.24.08-1.5.12-3.06.12-4.62,0-69.05-56.18-125.21-125.22-125.21h0Z\"\n />\n <path\n class=\"middle\"\n d=\"m255.99,277.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,244.09h-.18c-7.02,0-12.72-5.73-12.72-12.81s5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81s-5.69,12.81-12.72,12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,198.59c-5.31,0-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61s9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61Z\"\n />\n }\n @case ('caution') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <rect\n class=\"middle\"\n x=\"190.26\"\n y=\"123.48\"\n width=\"131.47\"\n height=\"131.47\"\n rx=\"11.74\"\n ry=\"11.74\"\n transform=\"translate(208.78 -125.6) rotate(45)\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,244h-.18c-7.02,0-12.72-5.73-12.72-12.81,0-7.08,5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81,0,7.08-5.69,12.81-12.72,12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,198.5c-5.31,0-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61,5.31,0,9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61Z\"\n />\n }\n @case ('critical') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <path\n class=\"middle\"\n d=\"m285.78,105.57h-59.57c-3.11,0-6.1,1.24-8.3,3.44l-42.12,42.12c-2.2,2.2-3.44,5.19-3.44,8.3v59.57c0,3.11,1.24,6.1,3.44,8.3l42.12,42.12c2.2,2.2,5.19,3.44,8.3,3.44h59.57c3.11,0,6.1-1.24,8.3-3.44l42.12-42.12c2.2-2.2,3.44-5.19,3.44-8.3v-59.57c0-3.11-1.24-6.1-3.44-8.3l-42.12-42.12c-2.2-2.2-5.19-3.44-8.3-3.44Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,244h-.18c-7.02,0-12.72-5.73-12.72-12.81,0-7.08,5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81,0,7.08-5.69,12.81-12.72,12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,198.5c-5.31,0-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61s9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61Z\"\n />\n }\n @default {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <path\n class=\"middle\"\n d=\"m255.99,277.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n }\n }\n</svg>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './cluster-types';\nexport * from './marker-types';\nexport * from './si-maplibre-style';\nexport * from './si-cluster-source.component';\nexport * from './si-maplibre-translate';\nexport * from './si-status-marker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-maplibre.mjs","sources":["../../../../projects/element-ng/maplibre/si-maplibre-style.ts","../../../../projects/element-ng/maplibre/cluster.utils.ts","../../../../projects/element-ng/maplibre/si-cluster-marker.component.ts","../../../../projects/element-ng/maplibre/si-cluster-marker.component.html","../../../../projects/element-ng/maplibre/si-cluster-source.component.ts","../../../../projects/element-ng/maplibre/si-cluster-source.component.html","../../../../projects/element-ng/maplibre/si-cluster-popover-template.directive.ts","../../../../projects/element-ng/maplibre/si-cluster-popover.component.ts","../../../../projects/element-ng/maplibre/si-cluster-popover.component.html","../../../../projects/element-ng/maplibre/si-maplibre-translate.ts","../../../../projects/element-ng/maplibre/si-status-marker.component.ts","../../../../projects/element-ng/maplibre/si-status-marker.component.html","../../../../projects/element-ng/maplibre/index.ts","../../../../projects/element-ng/maplibre/siemens-element-ng-maplibre.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { assertInInjectionContext, computed, Signal } from '@angular/core';\nimport { injectIsDarkTheme } from '@siemens/element-ng/theme';\nimport { siMapStyle } from '@siemens/map-styles/common';\nimport type { StyleSpecification } from 'maplibre-gl';\n\n/**\n * Creates a signal that returns a {@link StyleSpecification} for MapLibre GL based on the current\n * Element theme. The signal automatically updates when the theme switches between light and dark.\n *\n * @remarks\n * **Must be called in an Angular injection context** (e.g. inside a constructor, field initializer,\n * or a function called from one). Calling this function outside of an injection context will throw\n * an `assertInInjectionContext` error.\n *\n * @experimental\n *\n * @param key - The MapTiler API key used to fetch tiles, glyphs, and sprites\n * @returns A signal that provides the current {@link StyleSpecification} based on the active theme\n * @throws When called outside of an Angular injection context\n */\nexport const injectSiMapStyle = (key: string): Signal<StyleSpecification> => {\n assertInInjectionContext(injectSiMapStyle);\n const isDark = injectIsDarkTheme();\n\n return computed(() => {\n return siMapStyle(key, isDark()) as StyleSpecification;\n });\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport type { ClusterColors, ClusterPoint, ClusterSegment } from './cluster-types';\nimport type { MarkerStatus } from './marker-types';\n\ntype ClusterProperties = Record<string, ['+', unknown]>;\n\nconst MARKER_STATUS_COLORS = {\n info: 'var(--si-sys-color-background-information)',\n success: 'var(--si-sys-color-background-success)',\n warning: 'var(--si-sys-color-background-warning)',\n danger: 'var(--si-sys-color-background-danger)',\n caution: 'var(--si-sys-color-background-caution)',\n critical: 'var(--si-sys-color-background-critical)',\n default: 'var(--si-sys-color-background-accent)',\n unknown: 'var(--si-sys-color-background-neutral)'\n} satisfies Record<MarkerStatus, string>;\n\n// Keep the four-color status palette stable for numeric group IDs.\nconst GROUP_STATUS_COLORS = [\n MARKER_STATUS_COLORS.info,\n MARKER_STATUS_COLORS.success,\n MARKER_STATUS_COLORS.warning,\n MARKER_STATUS_COLORS.danger\n];\nconst ELEMENT_COLORS = [\n 'var(--si-sys-color-data-sequential-red-2)',\n 'var(--si-sys-color-data-sequential-orange-4)',\n 'var(--si-sys-color-background-caution)',\n 'var(--si-sys-color-data-sequential-green-2)',\n 'var(--si-sys-color-background-information)',\n 'var(--si-sys-color-data-categorial-1)',\n 'var(--si-sys-color-data-categorial-17)'\n];\nconst UNGROUPED_COLOR = 'var(--si-sys-color-background-accent)';\nconst SEPARATOR_COLOR = 'var(--si-sys-color-background-1)';\nconst CHART_FRAGMENTS = 20;\nconst SEPARATOR_DEGREES = 2;\n\ninterface ClusterBucket extends ClusterSegment {\n mapExpression: unknown;\n}\n\n/** @internal */\nexport interface ClusterConfiguration {\n clusterProperties: ClusterProperties;\n segments: readonly ClusterSegment[];\n}\n\n/** @internal */\nexport const createClusterConfiguration = (\n groupColors: ClusterColors,\n groupProperty: string,\n statusProperty?: string\n): ClusterConfiguration => {\n const group = ['to-number', ['get', groupProperty], 0];\n let buckets: ClusterBucket[];\n\n if (typeof groupColors === 'string') {\n const colors = groupColors === 'status' ? GROUP_STATUS_COLORS : ELEMENT_COLORS;\n buckets = colors.map((color, index) => ({\n color,\n mapExpression: [\n 'case',\n ['all', ['>', group, 0], ['==', ['%', ['-', group, 1], colors.length], index]],\n 1,\n 0\n ],\n property: `si_group_${index}`\n }));\n } else {\n buckets = Object.entries(groupColors)\n .map(([groupId, color]) => ({ color, groupId: Number(groupId) }))\n .filter(bucket => Number.isInteger(bucket.groupId) && bucket.groupId > 0)\n .sort((a, b) => a.groupId - b.groupId)\n .map(bucket => ({\n color: bucket.color,\n mapExpression: ['case', ['==', group, bucket.groupId], 1, 0],\n property: `si_group_${bucket.groupId}`\n }));\n }\n\n if (statusProperty !== undefined) {\n for (const [status, color] of Object.entries(MARKER_STATUS_COLORS)) {\n buckets.push({\n color,\n mapExpression: [\n 'case',\n ['all', ['==', group, 0], ['==', ['get', statusProperty], status]],\n 1,\n 0\n ],\n property: `si_status_${status}`\n });\n }\n }\n\n return {\n clusterProperties: Object.fromEntries(\n buckets.map(bucket => [bucket.property, ['+', bucket.mapExpression]])\n ),\n segments: buckets.map(({ color, property }) => ({ color, property }))\n };\n};\n\n/** @internal */\nexport const createClusterGradient = (\n feature: ClusterPoint,\n configuredSegments: readonly ClusterSegment[]\n): string => {\n const count = getNumberProperty(feature, 'point_count');\n const segments = configuredSegments\n .map(segment => ({\n color: segment.color,\n count: getNumberProperty(feature, segment.property)\n }))\n .filter(segment => segment.count > 0);\n const groupedCount = segments.reduce((sum, segment) => sum + segment.count, 0);\n if (groupedCount < count) {\n segments.push({ color: UNGROUPED_COLOR, count: count - groupedCount });\n }\n if (!segments.length) {\n return UNGROUPED_COLOR;\n }\n\n const fragmentSize = count / CHART_FRAGMENTS;\n const weightedSegments = segments.map(segment => ({\n ...segment,\n weight: Math.max(1, segment.count / fragmentSize)\n }));\n const totalWeight = weightedSegments.reduce((sum, segment) => sum + segment.weight, 0);\n const separator =\n weightedSegments.length > 1 ? Math.min(SEPARATOR_DEGREES, 180 / totalWeight) : 0;\n let position = 0;\n const stops: string[] = [];\n for (const segment of weightedSegments) {\n const start = position;\n position += (segment.weight / totalWeight) * 360;\n if (separator) {\n stops.push(\n `${SEPARATOR_COLOR} ${start}deg ${start + separator / 2}deg`,\n `${segment.color} ${start + separator / 2}deg ${position - separator / 2}deg`,\n `${SEPARATOR_COLOR} ${position - separator / 2}deg ${position}deg`\n );\n } else {\n stops.push(`${segment.color} ${start}deg ${position}deg`);\n }\n }\n return `conic-gradient(from -90deg, ${stops.join(', ')})`;\n};\n\nconst getNumberProperty = (feature: ClusterPoint, property: string): number => {\n const value = feature.properties?.[property];\n return typeof value === 'number' ? value : Number(value) || 0;\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input, output } from '@angular/core';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { ClusterPoint, ClusterSegment } from './cluster-types';\nimport { createClusterGradient } from './cluster.utils';\n\n/**\n * Renders an interactive marker for a MapLibre cluster.\n *\n * The marker displays the total number of clustered points and visualizes their group distribution\n * as colored segments. It is created internally by `SiClusterSourceComponent`.\n *\n * @internal\n */\n@Component({\n selector: 'si-cluster-marker',\n imports: [SiTranslatePipe],\n templateUrl: './si-cluster-marker.component.html',\n styleUrl: './si-cluster-marker.component.scss'\n})\nexport class SiClusterMarkerComponent {\n /** Cluster feature represented by this marker. */\n readonly feature = input.required<ClusterPoint>();\n\n /** Colored segments that represent the grouped points in the cluster. */\n readonly segments = input.required<readonly ClusterSegment[]>();\n\n /** Emits when the marker is activated. */\n readonly markerClick = output<void>();\n\n protected readonly count = computed(() => Number(this.feature().properties?.point_count) || 0);\n protected readonly countLabel = computed(() => (this.count() > 99 ? '99+' : `${this.count()}`));\n protected readonly clusterLabel = t(\n () => $localize`:@@SI_MAP_CLUSTER.LABEL:Cluster with {{count}} locations`\n );\n\n protected readonly gradient = computed(() =>\n createClusterGradient(this.feature(), this.segments())\n );\n\n protected onClick(event: MouseEvent): void {\n event.stopPropagation();\n this.markerClick.emit();\n }\n}\n","<button\n type=\"button\"\n class=\"cluster-marker\"\n [attr.aria-label]=\"clusterLabel | translate: { count: count() }\"\n [style.--si-cluster-gradient]=\"gradient()\"\n (click)=\"onClick($event)\"\n>\n <span class=\"cluster-count\" aria-hidden=\"true\">{{ countLabel() }}</span>\n</button>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, computed, input, output, signal, viewChild } from '@angular/core';\nimport {\n ClusterPointDirective,\n GeoJSONSourceComponent,\n MarkersForClustersComponent\n} from '@maplibre/ngx-maplibre-gl';\n\nimport type { ClusterColors, ClusterPoint } from './cluster-types';\nimport { createClusterConfiguration } from './cluster.utils';\nimport { SiClusterMarkerComponent } from './si-cluster-marker.component';\n\nconst EMPTY_DATA: GeoJSON.FeatureCollection<GeoJSON.Point> = {\n type: 'FeatureCollection',\n features: []\n};\n\n/**\n * Adds a clustered GeoJSON source to a MapLibre map and renders interactive cluster markers.\n *\n * Cluster markers display the number of contained points and their distribution by group. Status\n * segments can be enabled for ungrouped points by providing `statusProperty`. Render individual,\n * unclustered points separately with `mgl-markers-for-clusters` using the same source ID.\n * Positive numeric groups always take precedence over status segments. Status segments apply only\n * when the normalized group value is zero; points without a matching group or status use the\n * ungrouped color.\n *\n * @example Basic usage\n * ```html\n * <mgl-map [mapStyle]=\"mapStyle()\">\n * <si-cluster-source\n * sourceId=\"locations\"\n * statusProperty=\"status\"\n * [data]=\"locations\"\n * (clusterClick)=\"onClusterClick($event)\"\n * />\n *\n * <mgl-markers-for-clusters source=\"locations\">\n * <ng-template let-feature mglPoint>\n * <si-status-marker\n * [status]=\"feature.properties?.status\"\n * />\n * </ng-template>\n * </mgl-markers-for-clusters>\n * </mgl-map>\n * ```\n *\n * @experimental\n */\n@Component({\n selector: 'si-cluster-source',\n imports: [\n ClusterPointDirective,\n GeoJSONSourceComponent,\n MarkersForClustersComponent,\n SiClusterMarkerComponent\n ],\n templateUrl: './si-cluster-source.component.html'\n})\nexport class SiClusterSourceComponent {\n /** ID used to register the generated GeoJSON source in MapLibre. */\n readonly sourceId = input.required<string>();\n /**\n * Point feature collection to cluster.\n * @defaultValue EMPTY_DATA\n */\n readonly data = input<GeoJSON.FeatureCollection<GeoJSON.Point>>(EMPTY_DATA);\n /**\n * Feature property containing the positive numeric group ID.\n * @defaultValue 'group'\n */\n readonly groupProperty = input('group');\n /**\n * Built-in palette or exact colors indexed by group ID. The built-in `'status'` palette contains\n * four colors for numeric groups and is separate from status-based bucketing.\n * @defaultValue 'status'\n */\n readonly groupColors = input<ClusterColors>('status');\n /**\n * Top-level feature property containing a {@link MarkerStatus} value. Status bucketing is\n * disabled by default and only applies when the normalized group value is zero. Missing or\n * unsupported status values, and groups that do not match a configured bucket, use the ungrouped\n * color. Built-in colors match `SiStatusMarkerComponent`, with `default` using accent and\n * `unknown` using neutral.\n * @defaultValue undefined\n * @see https://maplibre.org/maplibre-style-spec/sources/#clusterproperties\n */\n readonly statusProperty = input<string | undefined>();\n /**\n * Cluster radius in pixels.\n * @defaultValue 50\n */\n readonly clusterRadius = input(50);\n /**\n * Maximum zoom at which points are clustered.\n * @defaultValue undefined\n */\n readonly clusterMaxZoom = input<number | undefined>(undefined);\n /**\n * Minimum number of points required to form a cluster.\n * @defaultValue 2\n */\n readonly clusterMinPoints = input(2);\n\n /** Emits when a cluster marker is activated. */\n readonly clusterClick = output<ClusterPoint>();\n\n protected readonly clusterConfiguration = computed(() =>\n createClusterConfiguration(this.groupColors(), this.groupProperty(), this.statusProperty())\n );\n\n /** Stores selection for the projected cluster-popover integration. */\n protected readonly selectedCluster = signal<ClusterPoint | undefined>(undefined);\n\n private readonly source = viewChild.required(GeoJSONSourceComponent);\n\n /**\n * Returns a page of original points belonging to a cluster.\n * @see https://maplibre.org/maplibre-gl-js/docs/API/classes/GeoJSONSource/#getclusterleaves\n */\n getClusterLeaves(clusterId: number, limit: number, offset: number): Promise<ClusterPoint[]> {\n return this.source().getClusterLeaves(clusterId, limit, offset) as Promise<ClusterPoint[]>;\n }\n}\n","<mgl-geojson-source\n #source\n [id]=\"sourceId()\"\n [data]=\"data()\"\n [cluster]=\"true\"\n [clusterRadius]=\"clusterRadius()\"\n [clusterMaxZoom]=\"clusterMaxZoom()\"\n [clusterMinPoints]=\"clusterMinPoints()\"\n [clusterProperties]=\"clusterConfiguration().clusterProperties\"\n/>\n\n<mgl-markers-for-clusters [source]=\"sourceId()\">\n <ng-template let-feature mglClusterPoint>\n <si-cluster-marker\n [feature]=\"feature\"\n [segments]=\"clusterConfiguration().segments\"\n (markerClick)=\"clusterClick.emit(feature)\"\n />\n </ng-template>\n</mgl-markers-for-clusters>\n\n<ng-content />\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\nimport { ClusterPopoverContext } from './cluster-types';\n\n/**\n * Template for custom location content inside `si-cluster-popover`.\n *\n * Receives a {@link ClusterPopoverContext} with all locations loaded so far. Loading feedback,\n * error recovery, and the \"Load more\" button are handled by the popover.\n *\n * @experimental\n */\n@Directive({\n selector: '[siClusterPopoverTemplate]'\n})\nexport class SiClusterPopoverTemplateDirective {\n /** @internal */\n static ngTemplateContextGuard(\n directive: SiClusterPopoverTemplateDirective,\n context: unknown\n ): context is ClusterPopoverContext {\n return true;\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { FocusTrapFactory } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterRenderEffect,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n DestroyRef,\n DOCUMENT,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n numberAttribute,\n resource,\n signal,\n TemplateRef,\n viewChild\n} from '@angular/core';\nimport { MapService, PopupComponent } from '@maplibre/ngx-maplibre-gl';\nimport { elementCancel } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiLoadingSpinnerDirective } from '@siemens/element-ng/loading-spinner';\nimport { ResizeObserverService } from '@siemens/element-ng/resize-observer';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\nimport { from } from 'rxjs';\n\nimport { ClusterPoint, ClusterPopoverContext } from './cluster-types';\nimport { SiClusterPopoverTemplateDirective } from './si-cluster-popover-template.directive';\nimport { SiClusterSourceComponent } from './si-cluster-source.component';\n\n/**\n * Optional popup with incrementally loaded locations projected into a `si-cluster-source`.\n *\n * @experimental\n */\n@Component({\n selector: 'si-cluster-popover',\n imports: [\n NgTemplateOutlet,\n PopupComponent,\n SiIconComponent,\n SiLoadingSpinnerDirective,\n SiTranslatePipe\n ],\n templateUrl: './si-cluster-popover.component.html',\n styleUrl: './si-cluster-popover.component.scss'\n})\nexport class SiClusterPopoverComponent {\n private static idCounter = 0;\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly focusTrapFactory = inject(FocusTrapFactory);\n private readonly document = inject(DOCUMENT);\n private readonly source = inject(SiClusterSourceComponent);\n private readonly mapService = inject(MapService);\n private readonly resizeObserver = inject(ResizeObserverService);\n /**\n * Maximum width passed to the MapLibre popup.\n * @defaultValue '320px'\n */\n readonly maxWidth = input('320px');\n /**\n * Whether the popup closes when the map moves.\n * @defaultValue true\n */\n readonly closeOnMove = input(true, { transform: booleanAttribute });\n /**\n * Number of locations loaded initially and with each \"Load more\" action.\n * @defaultValue 8\n */\n readonly pageSize = input(8, { transform: numberAttribute });\n /**\n * Feature property displayed in the default list.\n * @defaultValue 'name'\n */\n readonly labelProperty = input('name');\n /**\n * Feature property displayed as the description in the default list.\n * @defaultValue 'description'\n */\n readonly descriptionProperty = input('description');\n\n private readonly dialog = viewChild<ElementRef<HTMLElement>>('dialog');\n private readonly scrollRegion = viewChild<ElementRef<HTMLDivElement>>('scrollRegion');\n private readonly batchButton = viewChild<ElementRef<HTMLButtonElement>>('batchButton');\n private readonly selectedCluster = linkedSignal<ClusterPoint | undefined>(() => {\n this.source.sourceId();\n this.source.data();\n this.source.groupProperty();\n this.source.groupColors();\n this.source.statusProperty();\n this.source.clusterRadius();\n this.source.clusterMaxZoom();\n this.source.clusterMinPoints();\n return undefined;\n });\n private readonly batchFocusRequested = linkedSignal(() => {\n this.selectedCluster();\n this.pageSize();\n return false;\n });\n private readonly offset = linkedSignal(() => {\n this.selectedCluster();\n this.pageSize();\n return 0;\n });\n private readonly displayedFeatures = linkedSignal({\n source: () => ({\n cluster: this.selectedCluster(),\n limit: this.pageSize(),\n offset: this.offset(),\n features: this.leaves.hasValue() ? this.leaves.value() : undefined\n }),\n computation: (current, previous): ClusterPoint[] => {\n if (!current.cluster) {\n return [];\n }\n\n const retainedFeatures =\n current.cluster === previous?.source.cluster && current.limit === previous.source.limit\n ? previous.value\n : [];\n return current.features\n ? [...retainedFeatures.slice(0, current.offset), ...current.features]\n : retainedFeatures;\n }\n });\n\n protected readonly titleId = `__si-cluster-popover-title-${SiClusterPopoverComponent.idCounter++}`;\n protected readonly popupCoordinates = linkedSignal(\n () => this.selectedCluster()?.geometry.coordinates\n );\n protected readonly availableBlockSize = signal<number | undefined>(undefined);\n protected readonly leaves = resource({\n params: () => {\n const cluster = this.selectedCluster();\n return cluster\n ? {\n cluster,\n limit: this.pageSize(),\n offset: this.offset()\n }\n : undefined;\n },\n loader: ({ params }) =>\n this.source.getClusterLeaves(\n Number(params.cluster.properties?.cluster_id),\n params.limit,\n params.offset\n )\n });\n protected readonly context = computed<ClusterPopoverContext | undefined>(() => {\n const features = this.displayedFeatures();\n const cluster = this.selectedCluster();\n if (!cluster) {\n return undefined;\n }\n\n return {\n $implicit: features,\n features,\n total: Number(cluster.properties?.point_count),\n loading: this.leaves.isLoading(),\n error: this.leaves.error(),\n cluster,\n close: this.close\n };\n });\n\n protected readonly template = contentChild<\n SiClusterPopoverTemplateDirective,\n TemplateRef<ClusterPopoverContext>\n >(SiClusterPopoverTemplateDirective, { read: TemplateRef });\n protected readonly clusterPopoverTitle = t(\n () => $localize`:@@SI_MAP_CLUSTER.POPOVER_TITLE:Cluster with {{count}} locations`\n );\n protected readonly locationsLabel = t(\n () => $localize`:@@SI_MAP_CLUSTER.LOCATIONS:Cluster locations`\n );\n protected readonly errorText = t(\n () => $localize`:@@SI_MAP_CLUSTER.ERROR:Could not load locations.`\n );\n protected readonly loadMoreText = t(() => $localize`:@@SI_MAP_CLUSTER.LOAD_MORE:Load more`);\n protected readonly retryText = t(() => $localize`:@@SI_MAP_CLUSTER.RETRY:Retry`);\n protected readonly closeText = t(() => $localize`:@@SI_MAP_CLUSTER.CLOSE:Close`);\n protected readonly icons = addIcons({ elementCancel });\n protected readonly close = (): void => this.selectedCluster.set(undefined);\n protected readonly loadBatch = (): void => {\n if (this.leaves.isLoading()) {\n return;\n }\n\n // Safari does not focus buttons on click.\n this.batchButton()?.nativeElement.focus({ preventScroll: true });\n this.batchFocusRequested.set(true);\n if (this.leaves.error()) {\n this.leaves.reload();\n } else {\n this.offset.set(this.displayedFeatures().length);\n }\n };\n\n constructor() {\n const subscription = this.source.clusterClick.subscribe(cluster => {\n this.selectedCluster.set(cluster);\n });\n this.destroyRef.onDestroy(() => subscription.unsubscribe());\n\n effect(onCleanup => {\n const dialog = this.dialog()?.nativeElement;\n const cluster = this.selectedCluster();\n if (!dialog || !cluster) {\n return;\n }\n const focusTrap = this.focusTrapFactory.create(dialog);\n const focusSubscription = from(focusTrap.focusFirstTabbableElementWhenReady()).subscribe();\n\n const map = this.mapService.mapInstance;\n const mapContainer = map.getContainer();\n const updateAvailableSpace = (): void => {\n const [longitude, latitude] = cluster.geometry.coordinates;\n const { y } = map.project([longitude, latitude]);\n const height = mapContainer.clientHeight;\n this.availableBlockSize.set(Math.min(height, Math.max(y, height - y)));\n };\n updateAvailableSpace();\n\n const mapResizeSubscription = this.resizeObserver\n .observe(mapContainer, 0)\n .subscribe(updateAvailableSpace);\n const dialogResizeSubscription = this.resizeObserver.observe(dialog, 0).subscribe(() => {\n // A new coordinate reference refreshes MapLibre's popup anchor.\n this.popupCoordinates.update(coordinates => (coordinates ? [...coordinates] : undefined));\n });\n const moveSubscription = map.on('move', updateAvailableSpace);\n onCleanup(() => {\n mapResizeSubscription.unsubscribe();\n dialogResizeSubscription.unsubscribe();\n moveSubscription.unsubscribe();\n focusSubscription.unsubscribe();\n focusTrap.destroy();\n });\n });\n\n afterRenderEffect({\n earlyRead: () => {\n if (!this.batchFocusRequested()) {\n return undefined;\n }\n\n const loading = this.leaves.isLoading();\n const button = this.batchButton()?.nativeElement;\n const active = this.document.activeElement;\n return {\n loading,\n button: active === button ? button : undefined,\n scrollRegion:\n !button && active === this.document.body\n ? this.scrollRegion()?.nativeElement\n : undefined\n };\n },\n write: state => {\n const request = state();\n if (!request || request.loading) {\n return;\n }\n\n this.batchFocusRequested.set(false);\n if (request.button) {\n request.button.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n } else {\n request.scrollRegion?.focus({ preventScroll: true });\n }\n }\n });\n\n effect(onCleanup => {\n if (!this.selectedCluster()) {\n return;\n }\n\n const trigger = this.document.activeElement;\n onCleanup(() => {\n const active = this.document.activeElement;\n if (\n trigger instanceof HTMLElement &&\n trigger.isConnected &&\n (active === this.document.body || this.dialog()?.nativeElement.contains(active))\n ) {\n trigger.focus();\n }\n });\n });\n }\n}\n","@if (context(); as context) {\n <mgl-popup\n [maxWidth]=\"maxWidth()\"\n [lngLat]=\"popupCoordinates()\"\n [closeOnMove]=\"closeOnMove()\"\n [focusAfterOpen]=\"false\"\n [closeButton]=\"false\"\n (popupClose)=\"context.close()\"\n >\n <section\n #dialog\n class=\"cluster-popover d-flex flex-column\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"titleId\"\n [style.--_si-cluster-popover-available-block-size.px]=\"availableBlockSize()\"\n (keydown.escape)=\"$event.stopPropagation(); context.close()\"\n >\n <div class=\"popover-header flex-shrink-0\">\n <strong class=\"flex-grow-1\" [id]=\"titleId\">\n {{ clusterPopoverTitle | translate: { count: context.total } }}\n </strong>\n <button\n type=\"button\"\n class=\"btn btn-circle btn-sm btn-ghost ms-2\"\n [attr.aria-label]=\"closeText | translate\"\n (click)=\"context.close()\"\n >\n <si-icon [icon]=\"icons.elementCancel\" />\n </button>\n </div>\n <div\n class=\"cluster-popover-body d-flex flex-column p-2\"\n [siLoading]=\"context.loading\"\n [blocking]=\"true\"\n >\n <div\n #scrollRegion\n class=\"cluster-popover-scroll overflow-auto\"\n role=\"region\"\n tabindex=\"0\"\n [attr.aria-label]=\"locationsLabel | translate\"\n >\n <div [inert]=\"context.loading\" [attr.aria-busy]=\"context.loading\">\n @if (template(); as customTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate\"\n [ngTemplateOutletContext]=\"context\"\n />\n } @else {\n <ul class=\"list-unstyled mb-0\">\n @for (feature of context.features; track feature.id ?? $index) {\n <li class=\"list-item p-4\">\n <div class=\"list-item-title pt-0\">\n {{ feature.properties?.[labelProperty()] }}\n </div>\n <div class=\"list-item-description mb-0\">\n {{ feature.properties?.[descriptionProperty()] }}\n </div>\n </li>\n }\n </ul>\n }\n </div>\n @if (context.error && !context.loading) {\n <p role=\"alert\" class=\"mt-4 mb-0\">{{ errorText | translate }}</p>\n }\n @if (\n context.error ||\n (context.features.length > 0 && context.features.length < context.total)\n ) {\n <button\n #batchButton\n type=\"button\"\n class=\"btn btn-link d-flex w-100 justify-content-center p-4 focus-inside\"\n [class.disabled]=\"context.loading\"\n [attr.aria-disabled]=\"context.loading\"\n (click)=\"loadBatch()\"\n >\n {{ (context.error ? retryText : loadMoreText) | translate }}\n </button>\n }\n </div>\n </div>\n </section>\n </mgl-popup>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { injectSiTranslateService, t } from '@siemens/element-translate-ng/translate';\nimport { map } from 'rxjs';\n\nconst createDefaultLocale = (): Record<string, string> => ({\n 'AttributionControl.ToggleAttribution': t(\n () => $localize`:@@SI_MAP.TOGGLE_ATTRIBUTION:Toggle attribution`\n ),\n 'AttributionControl.MapFeedback': t(() => $localize`:@@SI_MAP.MAP_FEEDBACK:Map feedback`),\n 'FullscreenControl.Enter': t(() => $localize`:@@SI_MAP.FULLSCREEN_ENTER:Enter full screen`),\n 'FullscreenControl.Exit': t(() => $localize`:@@SI_MAP.FULLSCREEN_EXIT:Exit full screen`),\n 'GeolocateControl.FindMyLocation': t(\n () => $localize`:@@SI_MAP.FIND_MY_LOCATION:Find my location`\n ),\n 'GeolocateControl.LocationNotAvailable': t(\n () => $localize`:@@SI_MAP.LOCATION_NOT_AVAILABLE:Location not available`\n ),\n 'LogoControl.Title': t(() => $localize`:@@SI_MAP.LOGO_TITLE:MapLibre logo`),\n 'Map.Title': t(() => $localize`:@@SI_MAP.MAP_TITLE:Map`),\n 'Marker.Title': t(() => $localize`:@@SI_MAP.MARKER_TITLE:Map marker`),\n 'NavigationControl.ResetBearing': t(\n () => $localize`:@@SI_MAP.RESET_BEARING:Reset bearing to north`\n ),\n 'NavigationControl.ZoomIn': t(() => $localize`:@@SI_MAP.ZOOM_IN:Zoom in`),\n 'NavigationControl.ZoomOut': t(() => $localize`:@@SI_MAP.ZOOM_OUT:Zoom out`),\n 'Popup.Close': t(() => $localize`:@@SI_MAP.POPUP_CLOSE:Close popup`),\n 'ScaleControl.Feet': t(() => $localize`:@@SI_MAP.SCALE_FEET:ft`),\n 'ScaleControl.Meters': t(() => $localize`:@@SI_MAP.SCALE_METERS:m`),\n 'ScaleControl.Kilometers': t(() => $localize`:@@SI_MAP.SCALE_KILOMETERS:km`),\n 'ScaleControl.Miles': t(() => $localize`:@@SI_MAP.SCALE_MILES:mi`),\n 'ScaleControl.NauticalMiles': t(() => $localize`:@@SI_MAP.SCALE_NAUTICAL_MILES:nm`),\n 'GlobeControl.Enable': t(() => $localize`:@@SI_MAP.GLOBE_ENABLE:Switch to globe view`),\n 'GlobeControl.Disable': t(() => $localize`:@@SI_MAP.GLOBE_DISABLE:Switch to flat view`),\n 'TerrainControl.Enable': t(() => $localize`:@@SI_MAP.TERRAIN_ENABLE:Enable terrain`),\n 'TerrainControl.Disable': t(() => $localize`:@@SI_MAP.TERRAIN_DISABLE:Disable terrain`),\n 'CooperativeGesturesHandler.WindowsHelpText': t(\n () => $localize`:@@SI_MAP.WINDOWS_HELP:Use Ctrl + scroll to zoom the map`\n ),\n 'CooperativeGesturesHandler.MacHelpText': t(\n () => $localize`:@@SI_MAP.MAC_HELP:Use ⌘ + scroll to zoom the map`\n ),\n 'CooperativeGesturesHandler.MobileHelpText': t(\n () => $localize`:@@SI_MAP.MOBILE_HELP:Use two fingers to move the map`\n )\n});\n\n/**\n * Provides translated MapLibre locale strings as an Angular signal. The record uses MapLibre's\n * original locale keys, such as `AttributionControl.ToggleAttribution`, and updates when the\n * active Element language changes.\n *\n * @example\n * ```ts\n * @Component({ ... })\n * export class MapComponent {\n * protected readonly mapTranslations = injectSiMapTranslations();\n * }\n * ```\n *\n * ```html\n * <mgl-map [locale]=\"mapTranslations()\" />\n * ```\n *\n * @returns A signal containing a MapLibre locale record, for example\n * `{ 'AttributionControl.ToggleAttribution': 'Toggle attribution' }`.\n */\nexport const injectSiMapTranslations = (): Signal<Record<string, string>> => {\n const translateService = injectSiTranslateService();\n const initialValue = createDefaultLocale();\n return toSignal(\n translateService\n .translateAsync(Object.values(initialValue))\n .pipe(\n map(translations =>\n Object.fromEntries(\n Object.entries(initialValue).map(([key, value]) => [key, translations[value]])\n )\n )\n ),\n {\n initialValue\n }\n );\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input } from '@angular/core';\n\nimport type { MarkerStatus } from './marker-types';\n\n@Component({\n selector: 'si-status-marker',\n templateUrl: './si-status-marker.component.html',\n styleUrl: './si-status-marker.component.scss',\n host: {\n class: 'si-status-marker',\n '[attr.data-status]': 'status() ?? \"default\"'\n }\n})\nexport class SiStatusMarkerComponent {\n /**\n * The status of the marker.\n * @defaultValue 'default'\n */\n readonly status = input<MarkerStatus>('default');\n}\n","<svg viewBox=\"0 0 512 512\" aria-hidden=\"true\" focusable=\"false\">\n @switch (status()) {\n @case ('unknown') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Zm0,213.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"middle\"\n d=\"m255.99,277.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.04,207.64h0c-5.25,0-9.5-4.25-9.5-9.5v-9.95c0-3.59,1.8-7,4.87-8.86.59-.36,1.07-.56,1.58-.73,5.75-1.99,17.59-8.4,17.59-15.59,0-6.46-4.07-12.24-10.16-14.38-7.91-2.78-16.6,1.39-19.38,9.29-1.74,4.95-7.16,7.55-12.11,5.81-4.95-1.74-7.55-7.17-5.81-12.11,6.26-17.79,25.82-27.17,43.61-20.91,13.69,4.82,22.87,17.8,22.85,32.31,0,16.73-14.98,26.5-24.04,30.88v4.23c0,5.25-4.25,9.5-9.5,9.5h0Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,247h-.18c-7.02,0-12.72-5.73-12.72-12.81,0-7.08,5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81,0,7.08-5.69,12.81-12.72,12.81Z\"\n />\n }\n @case ('success') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Zm0,213.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"middle\"\n d=\"m255.99,277.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"symbol\"\n d=\"m241.55,225.45c-2.47,0-4.93-.94-6.82-2.82l-24.09-24.09c-3.77-3.77-3.77-9.86,0-13.63,3.77-3.77,9.87-3.77,13.63,0l17.28,17.28,46.19-46.19c3.77-3.77,9.87-3.77,13.63,0,3.77,3.77,3.77,9.86,0,13.63l-53.01,53.01c-1.88,1.88-4.35,2.82-6.82,2.82h.02Z\"\n />\n }\n @case ('info') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <rect\n class=\"middle\"\n x=\"177.74\"\n y=\"110.96\"\n width=\"156.52\"\n height=\"156.52\"\n rx=\"11.74\"\n ry=\"11.74\"\n />\n <path\n class=\"symbol\"\n d=\"m255.91,134.43h.18c7.02,0,12.72,5.73,12.72,12.81s-5.69,12.81-12.72,12.81h-.18c-7.02,0-12.72-5.73-12.72-12.81s5.69-12.81,12.72-12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,179.94c5.31,0,9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61s-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61Z\"\n />\n }\n @case ('warning') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <path\n class=\"middle\"\n d=\"m243.78,104.22l-76.92,134.35c-5.38,9.39,1.4,21.09,12.22,21.09h153.85c10.82,0,17.6-11.7,12.22-21.09l-76.92-134.35c-5.41-9.45-19.04-9.45-24.45,0Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,244.09h-.18c-7.02,0-12.72-5.73-12.72-12.81s5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81s-5.69,12.81-12.72,12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,198.59c-5.31,0-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61s9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61Z\"\n />\n }\n @case ('danger') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.05,0-125.21,56.17-125.21,125.21,0,1.43.04,2.94.12,4.6.46,12.81,2.85,25.34,7.07,37.27,24.64,80.64,105.26,184.13,108.68,188.43,2.27,2.85,5.7,4.5,9.35,4.5s7.08-1.66,9.35-4.5c3.42-4.3,84.05-107.77,108.69-188.43,4.23-11.93,6.61-24.46,7.07-37.24.08-1.5.12-3.06.12-4.62,0-69.05-56.18-125.21-125.22-125.21h0Z\"\n />\n <path\n class=\"middle\"\n d=\"m255.99,277.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,244.09h-.18c-7.02,0-12.72-5.73-12.72-12.81s5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81s-5.69,12.81-12.72,12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,198.59c-5.31,0-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61s9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61Z\"\n />\n }\n @case ('caution') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <rect\n class=\"middle\"\n x=\"190.26\"\n y=\"123.48\"\n width=\"131.47\"\n height=\"131.47\"\n rx=\"11.74\"\n ry=\"11.74\"\n transform=\"translate(208.78 -125.6) rotate(45)\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,244h-.18c-7.02,0-12.72-5.73-12.72-12.81,0-7.08,5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81,0,7.08-5.69,12.81-12.72,12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,198.5c-5.31,0-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61,5.31,0,9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61Z\"\n />\n }\n @case ('critical') {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <path\n class=\"middle\"\n d=\"m285.78,105.57h-59.57c-3.11,0-6.1,1.24-8.3,3.44l-42.12,42.12c-2.2,2.2-3.44,5.19-3.44,8.3v59.57c0,3.11,1.24,6.1,3.44,8.3l42.12,42.12c2.2,2.2,5.19,3.44,8.3,3.44h59.57c3.11,0,6.1-1.24,8.3-3.44l42.12-42.12c2.2-2.2,3.44-5.19,3.44-8.3v-59.57c0-3.11-1.24-6.1-3.44-8.3l-42.12-42.12c-2.2-2.2-5.19-3.44-8.3-3.44Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256.09,244h-.18c-7.02,0-12.72-5.73-12.72-12.81,0-7.08,5.69-12.81,12.72-12.81h.18c7.02,0,12.72,5.73,12.72,12.81,0,7.08-5.69,12.81-12.72,12.81Z\"\n />\n <path\n class=\"symbol\"\n d=\"m256,198.5c-5.31,0-9.61-4.3-9.61-9.61v-44.84c0-5.31,4.3-9.61,9.61-9.61s9.61,4.3,9.61,9.61v44.84c0,5.31-4.3,9.61-9.61,9.61Z\"\n />\n }\n @default {\n <path\n class=\"icon\"\n d=\"m256,64c-69.37,0-125.8,56.43-125.8,125.8,0,1.44.04,2.95.12,4.62.46,12.87,2.86,25.46,7.1,37.44,24.76,81.02,105.75,183.3,109.19,187.62,2.28,2.86,5.73,4.52,9.39,4.52s7.11-1.67,9.39-4.52c3.44-4.32,84.44-106.59,109.2-187.62,4.25-11.99,6.64-24.57,7.1-37.41.08-1.51.12-3.07.12-4.64,0-69.37-56.44-125.8-125.81-125.8Z\"\n />\n <path\n class=\"middle\"\n d=\"m255.99,277.81c-48.59,0-87.99-39.4-87.99-88.01s39.4-87.99,87.99-87.99,88.01,39.41,88.01,87.99-39.39,88.01-88.01,88.01Z\"\n />\n }\n }\n</svg>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './cluster-types';\nexport * from './marker-types';\nexport * from './si-maplibre-style';\nexport * from './si-cluster-source.component';\nexport * from './si-cluster-popover.component';\nexport * from './si-cluster-popover-template.directive';\nexport * from './si-maplibre-translate';\nexport * from './si-status-marker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}