@moatamed-sce/ui-components 0.1.4 → 0.1.7

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moatamed-sce-ui-components-maps.mjs","sources":["../../../../libs/ui-components/src/lib/organisms/osm-leaflet-map/osm-leaflet-map.component.ts","../../../../libs/ui-components/src/lib/organisms/osm-leaflet-map/osm-leaflet-map.component.html","../../../../libs/ui-components/src/lib/organisms/osm-offices-map/osm-offices-map.component.ts","../../../../libs/ui-components/src/lib/organisms/osm-offices-map/osm-offices-map.component.html","../../../../libs/ui-components/src/lib/atoms/skeleton/skeleton.ts","../../../../libs/ui-components/src/lib/atoms/skeleton/skeleton.html","../../../../libs/ui-components/src/lib/organisms/osm-location-picker/osm-location-picker.component.ts","../../../../libs/ui-components/src/lib/organisms/osm-location-picker/osm-location-picker.component.html","../../../../libs/ui-components/src/lib/organisms/office-location-map/office-location-map.component.ts","../../../../libs/ui-components/src/lib/organisms/office-location-map/office-location-map.component.html","../../../../libs/ui-components/src/lib/organisms/store-locations/store-locations.component.ts","../../../../libs/ui-components/src/lib/organisms/store-locations/store-locations.component.html","../../../../libs/ui-components/src/lib/molecules/field/field.component.ts","../../../../libs/ui-components/src/lib/molecules/field/field.component.html","../../../../libs/ui-components/src/lib/atoms/hugeicon/hugeicon.ts","../../../../libs/ui-components/src/lib/atoms/hugeicon/hugeicon.html","../../../../libs/ui-components/src/lib/molecules/select-field/select-field.component.ts","../../../../libs/ui-components/src/lib/molecules/select-field/select-field.component.html","../../../../libs/ui-components/src/lib/organisms/inline-api-error/inline-api-error.component.ts","../../../../libs/ui-components/src/lib/organisms/inline-api-error/inline-api-error.component.html","../../../../libs/ui-components/src/lib/organisms/balady-map-selector/balady-map-selector.component.ts","../../../../libs/ui-components/src/lib/organisms/balady-map-selector/balady-map-selector.component.html","../../../../libs/ui-components/src/maps.ts","../../../../libs/ui-components/src/moatamed-sce-ui-components-maps.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n effect,\n ElementRef,\n viewChild,\n OnDestroy,\n afterNextRender,\n} from '@angular/core';\nimport { fixLeafletDefaultIcon, scheduleLeafletResize, SceVariantDirective } from '@moatamed-sce/core';\n/** A pin on `sce-osm-leaflet-map`, optionally draggable and carrying raw `popupHtml` for its popup bubble. */\nexport interface OsmMapMarker {\n lat: number;\n lng: number;\n popupHtml?: string;\n draggable?: boolean;\n}\n\n/** OpenStreetMap Leaflet map that lazily loads Leaflet, renders the given markers and emits map clicks and marker drag-ends; setting `interactive` to false disables panning, zooming, the zoom control and click events. */\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n host: { class: 'sce-osm-leaflet-map' },\n selector: 'sce-osm-leaflet-map',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './osm-leaflet-map.component.scss',\n templateUrl: './osm-leaflet-map.component.html',\n})\nexport class SceOsmLeafletMapComponent implements OnDestroy {\n readonly latitude = input(24.7136);\n readonly longitude = input(46.6753);\n readonly zoom = input(6);\n readonly markers = input<OsmMapMarker[]>([]);\n readonly interactive = input(true);\n\n readonly mapClick = output<{ lat: number; lng: number }>();\n readonly markerDragEnd = output<{ lat: number; lng: number; index: number }>();\n\n protected mapEl = viewChild<ElementRef<HTMLElement>>('mapEl');\n\n private map: import('leaflet').Map | null = null;\n private markerLayer: import('leaflet').LayerGroup | null = null;\n private L: typeof import('leaflet') | null = null;\n private cancelLeafletResize: (() => void) | null = null;\n\n private async initMap(): Promise<void> {\n const el = this.mapEl()?.nativeElement;\n if (!el) {\n return;\n }\n\n const leafletModule = await import('leaflet');\n // CJS/ESM interop: in the esbuild bundle the Leaflet API lands on .default, in dev it may not.\n const L = ((leafletModule as { default?: typeof import('leaflet') }).default ??\n leafletModule) as typeof import('leaflet');\n this.L = L;\n fixLeafletDefaultIcon(L);\n\n this.map = L.map(el, {\n center: [this.latitude(), this.longitude()],\n zoom: this.zoom(),\n zoomControl: false,\n dragging: this.interactive(),\n scrollWheelZoom: false,\n doubleClickZoom: this.interactive(),\n touchZoom: this.interactive(),\n });\n\n if (this.interactive()) {\n const isRtl = getComputedStyle(el).direction === 'rtl';\n L.control.zoom({ position: isRtl ? 'bottomright' : 'bottomleft' }).addTo(this.map);\n }\n\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n maxZoom: 19,\n }).addTo(this.map);\n\n this.markerLayer = L.layerGroup().addTo(this.map);\n\n if (this.interactive()) {\n this.map.on('click', (e: import('leaflet').LeafletMouseEvent) => {\n this.mapClick.emit({ lat: e.latlng.lat, lng: e.latlng.lng });\n });\n\n el.addEventListener(\n 'wheel',\n (e: WheelEvent) => {\n if (!this.map || !(e.ctrlKey || e.metaKey)) {\n return;\n }\n e.preventDefault();\n if (e.deltaY < 0) {\n this.map.zoomIn();\n } else {\n this.map.zoomOut();\n }\n },\n { passive: false }\n );\n }\n\n this.cancelLeafletResize?.();\n this.cancelLeafletResize = scheduleLeafletResize(this.map);\n this.renderMarkers(this.markers());\n }\n\n private renderMarkers(markers: OsmMapMarker[]): void {\n if (!this.markerLayer || !this.L) {\n return;\n }\n this.markerLayer.clearLayers();\n for (let i = 0; i < markers.length; i++) {\n const m = markers[i];\n const marker = this.L.marker([m.lat, m.lng], {\n draggable: m.draggable ?? false,\n });\n if (m.popupHtml) {\n marker.bindPopup(m.popupHtml);\n }\n if (m.draggable) {\n const index = i;\n marker.on('dragend', () => {\n const pos = marker.getLatLng();\n this.markerDragEnd.emit({ lat: pos.lat, lng: pos.lng, index });\n });\n }\n marker.addTo(this.markerLayer);\n }\n }\n\n ngOnDestroy(): void {\n this.cancelLeafletResize?.();\n this.cancelLeafletResize = null;\n this.map?.remove();\n this.map = null;\n }\n\n private readonly bindHost = (() => {\n afterNextRender(() => {\n this.initMap();\n });\n\n effect(() => {\n const mkrs = this.markers();\n this.renderMarkers(mkrs);\n });\n\n effect(() => {\n const lat = this.latitude();\n const lng = this.longitude();\n const zm = this.zoom();\n if (this.map) {\n this.map.setView([lat, lng], zm);\n }\n });\n })();\n}\n","<div #mapEl class=\"mapRoot\"></div>\n","import {\n AfterViewInit,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n OnChanges,\n OnDestroy,\n output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport type { Map as LeafletMap, Marker as LeafletMarker } from 'leaflet';\nimport {\n createLeafletDefaultIcon,\n scheduleLeafletResize,\n SceVariantDirective,\n LanguageService,\n MAP_CONFIG,\n} from '@moatamed-sce/core';\n/** One engineering office plotted on the offices map; `approximate` marks a coordinate derived from a city or region rather than a precise address. */\nexport interface SceOsmOfficeMapPoint {\n id: string | number;\n name: string;\n latitude: number;\n longitude: number;\n approximate?: boolean;\n}\n\nconst TILE_URL = MAP_CONFIG.tileUrl;\nconst DEFAULT_CENTER: [number, number] = [24.7136, 46.6753];\nconst DEFAULT_ZOOM = 6;\nconst SINGLE_OFFICE_ZOOM = 12;\n\nfunction isPlottableOffice(office: SceOsmOfficeMapPoint): boolean {\n return (\n Number.isFinite(office.latitude) &&\n Number.isFinite(office.longitude) &&\n Math.abs(office.latitude) <= 90 &&\n Math.abs(office.longitude) <= 180\n );\n}\n\nfunction markerTooltipLabel(office: SceOsmOfficeMapPoint, translate?: TranslateService): string {\n if (!office.approximate) {\n return office.name;\n }\n const suffix = translate?.instant('map.approximateLocation') ?? 'موقع تقريبي (مركز المدينة)';\n return `${office.name}\\n${suffix}`;\n}\n\n/** React: google-maps/osm-offices-map.tsx */\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n host: { class: 'sce-osm-offices-map' },\n selector: 'sce-osm-offices-map',\n standalone: true,\n templateUrl: './osm-offices-map.component.html',\n styleUrl: './osm-offices-map.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SceOsmOfficesMapComponent implements AfterViewInit, OnChanges, OnDestroy {\n private readonly language = inject(LanguageService);\n @ViewChild('mapRoot') mapRoot?: ElementRef<HTMLDivElement>;\n private readonly translate = inject(TranslateService);\n\n readonly offices = input<SceOsmOfficeMapPoint[]>([]);\n readonly selectedOfficeId = input<string | number | undefined>();\n readonly showTooltip = input(true);\n readonly ariaLabelInput = input('');\n readonly ariaLabel = computed(() => {\n // Re-resolve the default label when the active locale changes.\n this.language.translationsRevision();\n return this.ariaLabelInput() || this.translate.instant('map.officesMap');\n });\n\n readonly selectOffice = output<string | number>();\n readonly ready = output<void>();\n readonly mapError = output<void>();\n\n private map: LeafletMap | null = null;\n private markers: LeafletMarker[] = [];\n private markerByOfficeId = new Map<string | number, LeafletMarker>();\n private mapReady = false;\n private disposed = false;\n private icon: import('leaflet').Icon | null = null;\n private cancelLeafletResize: (() => void) | null = null;\n\n ngAfterViewInit(): void {\n void this.bootMap();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['offices'] && this.mapReady) {\n void this.syncMarkers();\n }\n if (changes['selectedOfficeId'] && this.mapReady && this.selectedOfficeId() != null) {\n this.focusSelectedOffice(this.selectedOfficeId()!);\n }\n }\n\n ngOnDestroy(): void {\n this.disposed = true;\n this.mapReady = false;\n this.cancelLeafletResize?.();\n this.cancelLeafletResize = null;\n this.clearMarkers();\n this.map?.remove();\n this.map = null;\n const el = this.mapRoot?.nativeElement;\n if (el) {\n delete (el as HTMLDivElement & { _leaflet_id?: number })._leaflet_id;\n }\n }\n\n private async bootMap(): Promise<void> {\n const container = this.mapRoot?.nativeElement;\n if (!container) {\n return;\n }\n\n try {\n const leafletModule = await import('leaflet');\n // CJS/ESM interop: in the esbuild bundle the Leaflet API lands on .default, in dev it may not.\n const L = ((leafletModule as { default?: typeof import('leaflet') }).default ??\n leafletModule) as typeof import('leaflet');\n if (this.disposed) {\n return;\n }\n\n this.icon = createLeafletDefaultIcon(L);\n\n const map = L.map(container, {\n center: DEFAULT_CENTER,\n zoom: DEFAULT_ZOOM,\n scrollWheelZoom: true,\n preferCanvas: false,\n attributionControl: false,\n });\n\n L.tileLayer(TILE_URL, { attribution: '', maxZoom: MAP_CONFIG.maxZoom }).addTo(map);\n\n this.map = map;\n this.queueLeafletResize(map);\n window.setTimeout(() => {\n if (!this.disposed) {\n this.queueLeafletResize(map);\n }\n }, 400);\n\n if (!this.disposed) {\n this.mapReady = true;\n this.ready.emit();\n await this.syncMarkers();\n }\n } catch {\n if (!this.disposed) {\n this.mapError.emit();\n }\n }\n }\n\n private async syncMarkers(): Promise<void> {\n const map = this.map;\n if (!map) {\n return;\n }\n\n const leafletModule = await import('leaflet');\n // CJS/ESM interop: in the esbuild bundle the Leaflet API lands on .default, in dev it may not.\n const L = ((leafletModule as { default?: typeof import('leaflet') }).default ??\n leafletModule) as typeof import('leaflet');\n\n this.clearMarkers();\n\n const plottable = this.offices().filter(isPlottableOffice);\n if (plottable.length === 0) {\n map.setView(DEFAULT_CENTER, DEFAULT_ZOOM);\n this.queueLeafletResize(map);\n return;\n }\n\n if (!this.icon) {\n this.icon = createLeafletDefaultIcon(L);\n }\n\n const bounds = L.latLngBounds([]);\n for (const office of plottable) {\n const marker = L.marker([office.latitude, office.longitude], {\n icon: this.icon || undefined,\n }).addTo(map);\n\n if (this.showTooltip()) {\n marker.bindTooltip(markerTooltipLabel(office, this.translate), {\n direction: 'top',\n opacity: 0.95,\n sticky: true,\n });\n }\n\n marker.on('click', () => this.selectOffice.emit(office.id));\n this.markers.push(marker);\n this.markerByOfficeId.set(office.id, marker);\n bounds.extend([office.latitude, office.longitude]);\n }\n\n const focusMarker = () => {\n if (!this.map || this.disposed) {\n return;\n }\n if (plottable.length > 1) {\n map.fitBounds(bounds, { padding: [48, 48], maxZoom: 12 });\n } else {\n map.setView([plottable[0].latitude, plottable[0].longitude], SINGLE_OFFICE_ZOOM, {\n animate: false,\n });\n if (this.showTooltip()) {\n const marker = this.markerByOfficeId.get(plottable[0].id);\n marker?.openTooltip();\n }\n }\n this.queueLeafletResize(map);\n };\n\n focusMarker();\n window.setTimeout(() => {\n if (!this.disposed) {\n focusMarker();\n }\n }, 120);\n window.setTimeout(() => {\n if (!this.disposed) {\n focusMarker();\n }\n }, 450);\n }\n\n private queueLeafletResize(map: LeafletMap): void {\n this.cancelLeafletResize?.();\n this.cancelLeafletResize = scheduleLeafletResize(map);\n }\n\n private focusSelectedOffice(officeId: string | number): void {\n const map = this.map;\n if (!map) {\n return;\n }\n const marker = this.markerByOfficeId.get(officeId);\n if (!marker) {\n return;\n }\n const latLng = marker.getLatLng();\n map.setView(latLng, Math.max(map.getZoom(), SINGLE_OFFICE_ZOOM), { animate: true });\n if (this.showTooltip()) {\n marker.openTooltip();\n }\n this.queueLeafletResize(map);\n }\n\n private clearMarkers(): void {\n this.markers.forEach(marker => marker.remove());\n this.markers = [];\n this.markerByOfficeId.clear();\n }\n}\n","<div #mapRoot class=\"mapRoot\" role=\"presentation\" [attr.aria-label]=\"ariaLabel()\"></div>\n","import { Component, input, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { SceVariantDirective } from '@moatamed-sce/core';\n\n/** Shape preset of `SceSkeleton`, each carrying its own default height and radius. */\nexport type SkeletonVariant =\n | 'text'\n | 'circular'\n | 'rectangular'\n | 'rounded'\n | 'avatar'\n | 'button'\n | 'chip'\n | 'card'\n | 'image'\n | 'header'\n | 'paragraph'\n | 'divider'\n | 'badge'\n | 'input';\n/** Shimmer animation of `SceSkeleton`; defaults to `wave`. */\nexport type SkeletonAnimation = 'pulse' | 'wave' | 'none';\n\n/** Loading placeholder in one of several shape variants, optionally repeated `count` times with a shortened last line. */\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n host: { class: 'sce-skeleton' },\n selector: 'sce-skeleton',\n standalone: true,\n templateUrl: './skeleton.html',\n styleUrl: './skeleton.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslatePipe],\n})\nexport class SceSkeleton {\n /** Shape variant of the skeleton */\n readonly variant = input<SkeletonVariant>('text');\n\n /** Animation style */\n readonly animation = input<SkeletonAnimation>('wave');\n\n /** Width -- accepts any CSS value (px, %, rem, etc.). Defaults to 100% for most variants. */\n readonly width = input<string>('');\n\n /** Height -- accepts any CSS value. Auto-calculated for text variant if not set. */\n readonly height = input<string>('');\n\n /** Border radius -- override the variant's default radius */\n readonly borderRadius = input<string>('');\n\n /** Number of skeleton lines to render (useful for paragraph placeholders) */\n readonly count = input<number>(1);\n\n /** Gap between repeated lines */\n readonly gap = input<string>('12px');\n\n /** Whether the last line in a multi-line skeleton should be shorter */\n readonly shrinkLastLine = input<boolean>(true);\n\n /** Custom aspect ratio (e.g. '16/9', '1/1') -- sets height automatically via CSS */\n readonly aspectRatio = input<string>('');\n\n /** Whether this is a multi-line skeleton */\n readonly isMultiLine = computed(() => this.count() > 1);\n\n /** Lines derived from count, each carrying whether it is the shrinking last line */\n readonly lines = computed(() => {\n const count = this.count();\n const shrinksLast = this.shrinkLastLine() && this.isMultiLine();\n\n return Array.from({ length: count }, (_, index) => ({\n index,\n isLast: shrinksLast && index === count - 1,\n }));\n });\n\n /** Computed inline styles for the skeleton element */\n readonly skeletonStyles = computed(() => {\n const styles: Record<string, string> = {};\n\n const w = this.width();\n const h = this.height();\n const br = this.borderRadius();\n const ar = this.aspectRatio();\n\n if (w) {\n styles['width'] = w;\n }\n if (h) {\n styles['height'] = h;\n }\n if (br) {\n styles['border-radius'] = br;\n }\n if (ar) {\n styles['aspect-ratio'] = ar;\n // Variants like `image`/`card` set a fixed height which would defeat the\n // ratio — release it so the ratio drives the height unless one is given.\n if (!h) {\n styles['height'] = 'auto';\n }\n }\n\n return styles;\n });\n\n /** Computed container styles (gap for multi-line) */\n readonly containerStyles = computed(() => {\n const styles: Record<string, string> = {};\n if (this.isMultiLine()) {\n styles['gap'] = this.gap();\n }\n return styles;\n });\n}\n","<div\n class=\"skeleton-container\"\n [class.skeleton-container--multi]=\"isMultiLine()\"\n [style]=\"containerStyles()\"\n role=\"status\"\n [attr.aria-label]=\"'ARIA.LOADING_CONTENT' | translate\"\n>\n @for (line of lines(); track line.index) {\n <span\n class=\"skeleton\"\n [class.skeleton--text]=\"variant() === 'text'\"\n [class.skeleton--circular]=\"variant() === 'circular'\"\n [class.skeleton--rectangular]=\"variant() === 'rectangular'\"\n [class.skeleton--rounded]=\"variant() === 'rounded'\"\n [class.skeleton--avatar]=\"variant() === 'avatar'\"\n [class.skeleton--button]=\"variant() === 'button'\"\n [class.skeleton--chip]=\"variant() === 'chip'\"\n [class.skeleton--card]=\"variant() === 'card'\"\n [class.skeleton--image]=\"variant() === 'image'\"\n [class.skeleton--header]=\"variant() === 'header'\"\n [class.skeleton--paragraph]=\"variant() === 'paragraph'\"\n [class.skeleton--divider]=\"variant() === 'divider'\"\n [class.skeleton--badge]=\"variant() === 'badge'\"\n [class.skeleton--input]=\"variant() === 'input'\"\n [class.skeleton--pulse]=\"animation() === 'pulse'\"\n [class.skeleton--wave]=\"animation() === 'wave'\"\n [class.skeleton--no-animation]=\"animation() === 'none'\"\n [class.skeleton--last]=\"line.isLast\"\n [style]=\"skeletonStyles()\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"sr-only\">{{ 'COMMON.LOADING' | translate }}</span>\n</div>\n","import { Component, ChangeDetectionStrategy, computed, input, output, signal, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport {\n GeoMapPositionValidationService,\n JEDDAH_MAP_CENTER,\n mapPositionValidationMessage,\n NominatimService,\n resolveInitialCenter,\n ToastService,\n isGeoLookupRestricted,\n SceVariantDirective,\n} from '@moatamed-sce/core';\nimport { SceSkeleton } from '../../atoms/skeleton/skeleton';\nimport { SceOsmLeafletMapComponent, type OsmMapMarker } from '../osm-leaflet-map/osm-leaflet-map.component';\n/** A position chosen in `sce-osm-location-picker`: coordinates plus the reverse-geocoded address when Nominatim returned one. */\nexport interface LocationPickerValue {\n lat: number;\n lng: number;\n address?: string;\n}\n\n/** Location picker pairing an OSM Leaflet map with a Nominatim search box, which validates every clicked, dragged or searched position before placing a draggable pin and emitting it with its reverse-geocoded address. */\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n host: { class: 'sce-osm-location-picker' },\n selector: 'sce-osm-location-picker',\n standalone: true,\n imports: [FormsModule, TranslatePipe, SceSkeleton, SceOsmLeafletMapComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './osm-location-picker.component.scss',\n templateUrl: './osm-location-picker.component.html',\n})\nexport class SceOsmLocationPickerComponent {\n readonly initialLat = input(isGeoLookupRestricted() ? JEDDAH_MAP_CENTER.lat : 24.7136);\n readonly initialLng = input(isGeoLookupRestricted() ? JEDDAH_MAP_CENTER.lng : 46.6753);\n readonly zoom = input(6);\n readonly locale = input<'ar' | 'en'>('ar');\n\n readonly locationSelect = output<LocationPickerValue>();\n\n private readonly nominatim = inject(NominatimService);\n private readonly mapValidation = inject(GeoMapPositionValidationService);\n private readonly toast = inject(ToastService);\n private readonly destroyRef = inject(DestroyRef);\n\n protected searchQuery = '';\n protected isSearching = signal(false);\n protected currentLat = signal(isGeoLookupRestricted() ? JEDDAH_MAP_CENTER.lat : 24.7136);\n protected currentLng = signal(isGeoLookupRestricted() ? JEDDAH_MAP_CENTER.lng : 46.6753);\n protected selectedLocation = signal<LocationPickerValue | null>(null);\n protected readonly selectedCoordsLabel = computed(() => {\n const loc = this.selectedLocation();\n return loc ? `${loc.lat.toFixed(6)}, ${loc.lng.toFixed(6)}` : '';\n });\n\n protected currentMarkers = signal<OsmMapMarker[]>([]);\n\n onMapClick(coords: { lat: number; lng: number }): void {\n void this.validateAndPlacePin(coords.lat, coords.lng);\n }\n\n onMarkerDragEnd(event: { lat: number; lng: number }): void {\n void this.validateAndPlacePin(event.lat, event.lng);\n }\n\n private async validateAndPlacePin(lat: number, lng: number): Promise<boolean> {\n const validation = await this.mapValidation.validateMapPositionForGeoForms(lat, lng, this.locale());\n if (!validation.ok) {\n this.toast.warning('', mapPositionValidationMessage(this.locale(), validation.reason));\n return false;\n }\n this.currentLat.set(lat);\n this.currentLng.set(lng);\n this.placePin(lat, lng);\n return true;\n }\n\n private placePin(lat: number, lng: number): void {\n const loc: LocationPickerValue = { lat, lng };\n this.selectedLocation.set(loc);\n this.currentMarkers.set([{ lat, lng, draggable: true }]);\n\n this.nominatim\n .getDisplayAddress(lat, lng, this.locale())\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: address => {\n const updated: LocationPickerValue = { lat, lng, address };\n this.selectedLocation.set(updated);\n this.locationSelect.emit(updated);\n },\n error: () => {\n this.locationSelect.emit(loc);\n },\n });\n }\n\n onSearch(): void {\n if (!this.searchQuery.trim()) {\n return;\n }\n this.isSearching.set(true);\n\n this.nominatim\n .search(this.searchQuery, this.locale(), 1)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: results => {\n if (results.length > 0) {\n const result = results[0];\n void this.validateAndPlacePin(result.lat, result.lng).finally(() => {\n this.isSearching.set(false);\n });\n return;\n }\n this.isSearching.set(false);\n },\n error: () => {\n this.isSearching.set(false);\n },\n });\n }\n\n private readonly bindHost = (() => {\n const center = resolveInitialCenter(String(this.initialLat()), String(this.initialLng()));\n this.currentLat.set(center.lat);\n this.currentLng.set(center.lng);\n })();\n}\n","<div>\n <div class=\"searchRow\">\n <input\n class=\"searchInput\"\n type=\"text\"\n [placeholder]=\"'MAPS.SEARCH_PLACEHOLDER' | translate\"\n [(ngModel)]=\"searchQuery\"\n (keydown.enter)=\"onSearch()\"\n />\n <button type=\"button\" class=\"searchButton\" [disabled]=\"isSearching()\" (click)=\"onSearch()\">\n @if (isSearching()) {\n <sce-skeleton variant=\"rounded\" width=\"1.25rem\" height=\"1.25rem\" animation=\"wave\" aria-hidden=\"true\" />\n } @else {\n {{ 'MAPS.SEARCH' | translate }}\n }\n </button>\n </div>\n <p class=\"providerNote\">{{ 'MAPS.PROVIDER_NOTE' | translate }}</p>\n\n <div style=\"height: 300px; margin-top: 0.75rem; border-radius: 0.75rem; overflow: hidden\">\n <sce-osm-leaflet-map\n [latitude]=\"currentLat()\"\n [longitude]=\"currentLng()\"\n [zoom]=\"zoom()\"\n [markers]=\"currentMarkers()\"\n [interactive]=\"true\"\n (mapClick)=\"onMapClick($event)\"\n (markerDragEnd)=\"onMarkerDragEnd($event)\"\n />\n </div>\n\n @if (selectedLocation()) {\n <p style=\"margin: 0.5rem 0 0; font-size: 0.8rem; color: var(--color-text-secondary)\">\n <span dir=\"ltr\">{{ selectedCoordsLabel() }}</span>\n @if (selectedLocation()!.address) {\n — {{ selectedLocation()!.address }}\n }\n </p>\n }\n</div>\n","import {\n Component,\n input,\n ViewEncapsulation,\n AfterViewInit,\n ElementRef,\n ViewChild,\n OnDestroy,\n ChangeDetectionStrategy,\n computed,\n inject,\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { createLeafletDefaultIcon, MAP_CONFIG, scheduleLeafletResize, SceVariantDirective } from '@moatamed-sce/core';\n\nconst TILE_URL = MAP_CONFIG.tileUrl;\n\nfunction hasValidCoordinates(lat?: number | null, lng?: number | null): boolean {\n return (\n typeof lat === 'number' &&\n typeof lng === 'number' &&\n Number.isFinite(lat) &&\n Number.isFinite(lng) &&\n Math.abs(lat) <= 90 &&\n Math.abs(lng) <= 180 &&\n !(lat === 0 && lng === 0)\n );\n}\n\nfunction buildGoogleEmbedUrl(lat?: number | null, lng?: number | null, address?: string): string | null {\n if (hasValidCoordinates(lat, lng)) {\n return `https://www.google.com/maps?q=${lat},${lng}&z=15&output=embed`;\n }\n const query = address?.trim();\n if (query) {\n return `https://www.google.com/maps?q=${encodeURIComponent(query)}&z=14&output=embed`;\n }\n return null;\n}\n\n/** Read-only map of an office's location: a Leaflet map with a marker when valid coordinates are given, a Google Maps embed built from the address when they are not, and a \"not specified\" fallback when neither is available. */\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n host: { class: 'sce-office-location-map' },\n selector: 'sce-office-location-map',\n standalone: true,\n imports: [TranslatePipe],\n templateUrl: './office-location-map.component.html',\n styleUrl: './office-location-map.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SceOfficeLocationMapComponent implements AfterViewInit, OnDestroy {\n private readonly sanitizer = inject(DomSanitizer);\n\n readonly latitude = input<number | null | undefined>();\n readonly longitude = input<number | null | undefined>();\n readonly address = input<string | undefined>();\n readonly emptyLabel = input<string | undefined>();\n\n @ViewChild('mapContainer') mapContainer?: ElementRef<HTMLDivElement>;\n\n private map: unknown = null;\n private cancelLeafletResize: (() => void) | null = null;\n\n readonly hasCoords = computed((): boolean => hasValidCoordinates(this.latitude(), this.longitude()));\n\n readonly googleEmbedUrl = computed((): SafeResourceUrl | null => {\n const url = buildGoogleEmbedUrl(this.latitude(), this.longitude(), this.address());\n return url ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : null;\n });\n\n ngAfterViewInit(): void {\n if (this.hasCoords() && this.mapContainer) {\n void this.initLeaflet();\n }\n }\n\n ngOnDestroy(): void {\n this.cancelLeafletResize?.();\n this.cancelLeafletResize = null;\n if (this.map && typeof (this.map as { remove: () => void }).remove === 'function') {\n (this.map as { remove: () => void }).remove();\n }\n }\n\n private async initLeaflet(): Promise<void> {\n const container = this.mapContainer?.nativeElement;\n if (!container) {\n return;\n }\n\n const leafletModule = await import('leaflet');\n // CJS/ESM interop: in the esbuild bundle the Leaflet API lands on .default, in dev it may not.\n const L = ((leafletModule as { default?: typeof import('leaflet') }).default ??\n leafletModule) as typeof import('leaflet');\n if (!this.latitude() || !this.longitude()) {\n return;\n }\n\n const lat = this.latitude()!;\n const lng = this.longitude()!;\n\n const map = L.map(container, {\n center: [lat, lng],\n zoom: 14,\n scrollWheelZoom: false,\n dragging: true,\n zoomControl: true,\n attributionControl: false,\n });\n\n L.tileLayer(TILE_URL, { attribution: '', maxZoom: MAP_CONFIG.maxZoom }).addTo(map);\n L.marker([lat, lng], { icon: createLeafletDefaultIcon(L) }).addTo(map);\n\n this.map = map;\n this.cancelLeafletResize = scheduleLeafletResize(map);\n }\n}\n","@if (hasCoords()) {\n <div class=\"mapShell\">\n <div #mapContainer class=\"mapRoot\" role=\"presentation\"></div>\n </div>\n} @else if (googleEmbedUrl()) {\n <div class=\"mapShell\">\n <iframe\n [title]=\"address()?.trim() || ('map.officeLocation' | translate)\"\n [src]=\"googleEmbedUrl()\"\n class=\"mapFrame\"\n loading=\"lazy\"\n referrerpolicy=\"no-referrer-when-downgrade\"\n allowfullscreen\n ></iframe>\n </div>\n} @else {\n <div class=\"mapShell mapFallback\">\n {{ emptyLabel() || ('common.notSpecified' | translate) }}\n </div>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { SceOsmOfficesMapComponent, type SceOsmOfficeMapPoint } from '../osm-offices-map/osm-offices-map.component';\nimport { SceVariantDirective } from '@moatamed-sce/core';\n\n/** Titled card framing the OSM map of branch/office locations. */\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n selector: 'sce-store-locations',\n standalone: true,\n imports: [TranslatePipe, SceOsmOfficesMapComponent],\n templateUrl: './store-locations.component.html',\n styleUrl: './store-locations.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'sce-store-locations' },\n})\nexport class SceStoreLocationsComponent {\n readonly titleKey = input<string>('storeLocations.title');\n readonly showHeader = input(true);\n readonly locations = input<SceOsmOfficeMapPoint[]>([]);\n readonly selectedLocationId = input<string | number | undefined>();\n /** Map viewport height, in px. */\n readonly height = input(400);\n\n readonly locationSelect = output<string | number>();\n}\n","@if (showHeader()) {\n <header class=\"sce-store-locations__header\">\n <h3 class=\"sce-store-locations__title\">{{ titleKey() | translate }}</h3>\n </header>\n}\n\n<div class=\"sce-store-locations__map\" [style.block-size.px]=\"height()\">\n <sce-osm-offices-map\n [offices]=\"locations()\"\n [selectedOfficeId]=\"selectedLocationId()\"\n [ariaLabelInput]=\"titleKey() | translate\"\n (selectOffice)=\"locationSelect.emit($event)\"\n />\n</div>\n","import { Component, input, ViewEncapsulation, ChangeDetectionStrategy, computed } from '@angular/core';\nimport { SceVariantDirective } from '@moatamed-sce/core';\n\n/** Shared form-field wrapper that renders the label, required marker, projected control, help text and error message for the other sce field components; `id` and `label` are required. */\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n selector: 'sce-field',\n standalone: true,\n templateUrl: './field.component.html',\n styleUrl: './field.component.scss',\n host: { class: 'sce-field-host' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SceFieldComponent {\n readonly id = input.required<string>();\n readonly label = input.required<string>();\n readonly required = input(false);\n /**\n * Hides the label visually while leaving it in the accessibility tree, for controls whose\n * surroundings already name them — a chat composer, a cell inside a labelled table column, or a\n * field sitting under its own section heading. It is never a licence to ship an unnamed control:\n * `label` stays required precisely so the accessible name cannot be dropped.\n */\n readonly hideLabel = input(false);\n readonly helpText = input<string | undefined>();\n readonly error = input<string | null | undefined>();\n readonly labelClassName = input<string | undefined>();\n readonly fieldClassName = input<string | undefined>();\n\n protected containerClasses = computed(() => {\n const classes = ['sce-field'];\n if (this.fieldClassName()) {\n classes.push(this.fieldClassName()!);\n }\n return classes.join(' ');\n });\n\n protected labelClasses = computed(() => {\n const classes = ['sce-field__label'];\n if (this.error()) {\n classes.push('sce-field__label--invalid');\n }\n if (this.hideLabel()) {\n classes.push('sce-field__label--hidden');\n }\n if (this.labelClassName()) {\n classes.push(this.labelClassName()!);\n }\n return classes.join(' ');\n });\n}\n","<div [class]=\"containerClasses()\">\n <label [attr.id]=\"id() + '-label'\" [attr.for]=\"id()\" [class]=\"labelClasses()\">\n {{ label() }}\n @if (required()) {\n <span class=\"sce-field__asterisk\" aria-hidden=\"true\"> *</span>\n }\n </label>\n <ng-content />\n @if (error()) {\n <!-- id lets the paired control reference this text via aria-describedby. -->\n <div role=\"alert\" class=\"sce-field__error\" [attr.id]=\"id() + '-error'\">{{ error() }}</div>\n }\n @if (helpText()) {\n <div class=\"sce-field__help\">{{ helpText() }}</div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { HugeiconsIconComponent, type IconSvgObject } from '@hugeicons/angular';\nimport { SceVariantDirective } from '@moatamed-sce/core';\n\n/**\n * Thin, project-native wrapper around Hugeicons' `hugeicons-icon`.\n *\n * Renders an inline SVG synchronously from icon data imported out of\n * `@hugeicons/core-free-icons` — no HTTP fetch, SSR-safe, and tree-shakeable\n * (import only the icons you use, e.g. `import { Search01Icon } from '@hugeicons/core-free-icons'`).\n *\n * Prefer this wrapper over `hugeicons-icon` directly so project defaults\n * (stroke width, `currentColor`, accessibility, RTL mirroring) stay consistent.\n *\n * @example\n * ```html\n * <!-- decorative -->\n * <sce-hugeicon [icon]=\"Search01Icon\" [size]=\"20\" />\n *\n * <!-- meaningful (icon-only button) -->\n * <button type=\"button\" [attr.aria-label]=\"'COMMON.DELETE' | translate\">\n * <sce-hugeicon [icon]=\"Delete02Icon\" [label]=\"'COMMON.DELETE' | translate\" />\n * </button>\n *\n * <!-- directional glyph mirrored in Arabic -->\n * <sce-hugeicon [icon]=\"ArrowRight01Icon\" [flipRtl]=\"true\" />\n * ```\n */\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n selector: 'sce-hugeicon',\n standalone: true,\n imports: [HugeiconsIconComponent],\n templateUrl: './hugeicon.html',\n styleUrl: './hugeicon.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'sce-hugeicon',\n '[class.sce-hugeicon--flip-rtl]': 'flipRtl()',\n '[class.sce-hugeicon--spin]': 'spin()',\n '[attr.role]': \"label() ? 'img' : null\",\n '[attr.aria-label]': 'label() || null',\n '[attr.aria-hidden]': 'label() ? null : \"true\"',\n },\n})\nexport class SceHugeicon {\n /** Icon data to render. Import the constant from `@hugeicons/core-free-icons` (e.g. `Search01Icon`). */\n readonly icon = input.required<IconSvgObject>();\n\n /** Alternate icon revealed when `showAlt` is true — swap without remounting to keep sizing stable. */\n readonly altIcon = input<IconSvgObject | null>(null);\n\n /** Show `altIcon` instead of `icon` (e.g. filled/active state, theme toggles). */\n readonly showAlt = input(false);\n\n /** Square size in pixels. */\n readonly size = input(24);\n\n /** Any CSS colour. Defaults to `currentColor` so the glyph inherits the surrounding text colour. */\n readonly color = input('currentColor');\n\n /** Stroke thickness for outline glyphs. Keep consistent across a surface. */\n readonly strokeWidth = input(1.5);\n\n /**\n * Keep the stroke visually constant when the icon is scaled up/down, instead of scaling with it\n * (mirrors Hugeicons' `absoluteStrokeWidth`). Useful for very large or very small glyphs.\n */\n readonly absoluteStrokeWidth = input(false);\n\n /**\n * Continuously rotate the glyph — for spinner/loading affordances. Honours\n * `prefers-reduced-motion` (the animation is disabled when the user asks for reduced motion).\n */\n readonly spin = input(false);\n\n /**\n * Accessible name. Set for a *meaningful* icon (renders `role=\"img\"` + `aria-label`);\n * leave unset for a *decorative* icon (rendered `aria-hidden`, so screen readers skip it).\n */\n readonly label = input<string | null>(null);\n\n /** Mirror horizontally under RTL. Use only for directional glyphs (arrows, chevrons, carets). */\n readonly flipRtl = input(false);\n}\n","<span class=\"sce-hugeicon__glyph\" [class.sce-hugeicon__glyph--flip]=\"flipRtl()\">\n <hugeicons-icon\n [icon]=\"icon()\"\n [altIcon]=\"altIcon() ?? icon()\"\n [showAlt]=\"showAlt()\"\n [size]=\"size()\"\n [color]=\"color()\"\n [strokeWidth]=\"strokeWidth()\"\n [absoluteStrokeWidth]=\"absoluteStrokeWidth()\"\n />\n</span>\n","import {\n Component,\n input,\n output,\n signal,\n computed,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n effect,\n inject,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport type { OverlayOptions } from 'primeng/api';\nimport { Select } from 'primeng/select';\nimport { SceFieldComponent } from '../field/field.component';\nimport {\n SCE_MIRROR_LABEL_AS_PLACEHOLDER,\n inferInputTextDirection,\n DIALOG_SELECT_OVERLAY_Z_INDEX,\n SceVariantDirective,\n} from '@moatamed-sce/core';\nimport { SceHugeicon } from '../../atoms/hugeicon/hugeicon';\nimport { ArrowDown01Icon } from '@hugeicons/core-free-icons';\n/**\n * Validation trigger mode — aligned with React Hook Form's mode names plus\n * the legacy Angular-style aliases that existing call sites use.\n *\n * - `'onChange'` / `'always'` — show errors on every change\n * - `'onBlur'` — show errors only after the field has been blurred\n * - `'onTouched'` / `'touched'` — show errors after the first interaction (change or blur)\n * - `'never'` — never show built-in errors (rely on external `error` input)\n */\nexport type SceSelectValidationMode = 'onChange' | 'onBlur' | 'onTouched' | 'always' | 'touched' | 'never';\n\nexport interface SceSelectOption<V extends string | number = string> {\n label: string;\n value: V;\n disabled?: boolean;\n}\n\n/** Grouped choices in `sce-select-field` for categorized dropdowns. */\nexport interface SceSelectGroupOption<V extends string | number = string> {\n label: string;\n value?: V;\n items: SceSelectOption<V>[];\n}\n\n/** Single-select form field built on PrimeNG Select with a built-in validation engine that shows errors once the control is touched; when no placeholder is given it falls back to the label (opt out via `SCE_MIRROR_LABEL_AS_PLACEHOLDER` = false). */\n/** Visual treatment for `<sce-select-field>` — field frame and density. Composes with the universal `[sceVariant]` surfaces. */\nexport type SceSelectFieldVariant =\n | 'default'\n | 'outlined'\n | 'filled'\n | 'underline'\n | 'soft'\n | 'bordered'\n | 'elevated'\n | 'compact'\n | 'minimal'\n | 'pill'\n /** Chevron in its own full-height tinted segment at the inline end, flush with the field edge. */\n | 'addon';\n\n/** Every `SceSelectFieldVariant`, in gallery order. */\nexport const SCE_SELECT_FIELD_VARIANTS: readonly SceSelectFieldVariant[] = [\n 'default',\n 'outlined',\n 'filled',\n 'underline',\n 'soft',\n 'bordered',\n 'elevated',\n 'compact',\n 'minimal',\n 'pill',\n 'addon',\n] as const;\n\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n selector: 'sce-select-field',\n standalone: true,\n imports: [FormsModule, Select, SceFieldComponent, SceHugeicon],\n templateUrl: './select-field.component.html',\n styleUrl: './select-field.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'sce-select-field',\n '[class.sce-select-field--default]': 'variant() === \"default\"',\n '[class.sce-select-field--outlined]': 'variant() === \"outlined\"',\n '[class.sce-select-field--filled]': 'variant() === \"filled\"',\n '[class.sce-select-field--underline]': 'variant() === \"underline\"',\n '[class.sce-select-field--soft]': 'variant() === \"soft\"',\n '[class.sce-select-field--bordered]': 'variant() === \"bordered\"',\n '[class.sce-select-field--elevated]': 'variant() === \"elevated\"',\n '[class.sce-select-field--compact]': 'variant() === \"compact\"',\n '[class.sce-select-field--minimal]': 'variant() === \"minimal\"',\n '[class.sce-select-field--pill]': 'variant() === \"pill\"',\n '[class.sce-select-field--addon]': 'variant() === \"addon\"',\n '[class.sce-select-field--locked]': 'disabled()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SceSelectFieldComponent {\n protected readonly dropdownIcon = ArrowDown01Icon;\n\n /** Visual treatment. */\n readonly variant = input<SceSelectFieldVariant>('default');\n\n private readonly mirrorLabelAsPlaceholder = inject(SCE_MIRROR_LABEL_AS_PLACEHOLDER, {\n optional: true,\n });\n\n readonly id = input.required<string>();\n readonly label = input('');\n readonly options = input<(SceSelectOption | SceSelectGroupOption)[]>([]);\n readonly group = input(false);\n readonly optionGroupLabel = input('label');\n readonly optionGroupChildren = input('items');\n readonly value = input<string | null>(null);\n readonly placeholder = input('');\n readonly required = input(false);\n readonly disabled = input(false);\n readonly helpText = input<string | undefined>();\n readonly error = input<string | null | undefined>();\n readonly filter = input(false);\n /**\n * Caps characters in the dropdown filter/search box (PrimeNG has no built-in\n * `maxlength` on that input). Applied when the overlay opens.\n */\n readonly filterMaxLength = input<number | undefined>();\n readonly showClear = input(false);\n /**\n * Explicit text direction. Default `null` infers from the content/document\n * locale — a hardcoded `'rtl'` default rendered every unbound select RTL on\n * English pages (and flipped direction when a disabled select became enabled).\n */\n readonly dir = input<'rtl' | 'ltr' | null>(null);\n readonly validationMode = input<SceSelectValidationMode>('onBlur');\n readonly validate = input<((value: string | null) => string | null) | undefined>();\n readonly validationMessages = input<Record<string, string>>({});\n readonly fieldClassName = input('');\n readonly labelClassName = input('');\n readonly inputClassName = input('');\n readonly panelClassName = input('');\n /** When true, hides the trigger border. Default false so `.p-select` keeps a visible border. */\n readonly borderless = input(false);\n readonly filterPlaceholder = input<string | undefined>();\n readonly showError = input(true);\n\n readonly valueChange = output<string | null>();\n /** Optional wrapper class. Do not use `root` — file-upload and other None-encap components leak a global `.root`. */\n readonly containerClassName = input('');\n\n /**\n * Change this value to clear the field's interaction state (touched / blurred).\n * Bump it when a parent form resets programmatically, so a cleared required\n * field doesn't instantly show its \"required\" error next to a success banner.\n */\n readonly resetToken = input<unknown>(undefined);\n\n /** True after any user value change. Prevents required errors on open-and-close. */\n protected readonly dirty = signal(false);\n /** True after any interaction (change or blur). Drives `'onTouched'` / `'touched'` mode. */\n protected readonly touched = signal(false);\n /** True only after the first blur. Drives the pure `'onBlur'` mode. */\n protected readonly blurredOnce = signal(false);\n\n private readonly clearInteractionOnReset = effect(() => {\n this.resetToken();\n this.dirty.set(false);\n this.touched.set(false);\n this.blurredOnce.set(false);\n });\n\n private readonly requiredMessage = computed(\n () => this.validationMessages()['required'] ?? (this.dir() === 'rtl' ? 'هذا الحقل مطلوب' : 'This field is required')\n );\n\n protected readonly validationError = computed(() => {\n const externalError = this.error();\n if (externalError) {\n return externalError;\n }\n\n const mode = this.validationMode();\n if (mode === 'never') {\n return null;\n }\n if (mode === 'onBlur' && (!this.blurredOnce() || !this.dirty())) {\n return null;\n }\n if ((mode === 'onTouched' || mode === 'touched') && (!this.touched() || !this.dirty())) {\n return null;\n }\n\n const value = this.boundValue();\n if (this.required() && value == null) {\n return this.requiredMessage();\n }\n\n const validateFn = this.validate();\n if (validateFn) {\n return validateFn(value);\n }\n\n return null;\n });\n\n protected readonly displayError = computed(() => (this.showError() ? this.validationError() : null));\n\n protected readonly resolvedPlaceholder = computed((): string => {\n const explicit = this.placeholder();\n if (explicit) {\n return explicit;\n }\n if (this.mirrorLabelAsPlaceholder === false) {\n return '';\n }\n return this.label();\n });\n\n /**\n * Local mirror so clear updates the UI immediately (before the parent round-trips).\n * Empty/`undefined` stay `null` — PrimeNG keeps the clear icon when value is `''`.\n */\n protected readonly boundValue = signal<string | null>(null);\n\n private readonly syncBoundValueFromInput = effect(() => {\n this.boundValue.set(this.normalizeValue(this.value()));\n });\n\n protected readonly selectedLabel = computed((): string => {\n const current = this.boundValue();\n if (current == null) {\n return '';\n }\n return this.options().find(option => String(option.value) === String(current))?.label ?? '';\n });\n\n /** Clear only when there is a real, matched selection — never for placeholder/orphan ids. */\n protected readonly clearVisible = computed((): boolean => {\n if (!this.showClear()) {\n return false;\n }\n const current = this.boundValue();\n if (current == null) {\n return false;\n }\n return this.options().some(option => String(option.value) === String(current));\n });\n\n private readonly selectRef = viewChild(Select);\n\n /**\n * Body-portaled option panels must sit above `sce-popup` / `sce-dialog-shell`\n * (`--z-modal` 2100). `OVERLAY_BASE_Z_INDEX` (1200) paints the menu under the mask.\n */\n protected readonly overlayOptions: OverlayOptions = {\n autoZIndex: true,\n baseZIndex: DIALOG_SELECT_OVERLAY_Z_INDEX,\n };\n\n protected readonly resolvedDir = computed((): 'rtl' | 'ltr' => {\n const explicit = this.dir();\n if (this.disabled() || explicit === null) {\n return inferInputTextDirection(\n this.selectedLabel(),\n { placeholder: this.resolvedPlaceholder() },\n { preferDocumentLocale: true }\n );\n }\n return explicit;\n });\n\n onBlur(): void {\n this.touched.set(true);\n this.blurredOnce.set(true);\n }\n\n /** PrimeNG Select filter input has no maxlength input — set it on open. */\n onOverlayShow(): void {\n const max = this.filterMaxLength();\n if (max == null || max <= 0) {\n return;\n }\n const filterEl = this.selectRef()?.filterViewChild?.nativeElement as HTMLInputElement | undefined;\n if (filterEl) {\n filterEl.setAttribute('maxlength', String(max));\n }\n }\n\n onValueChange(next: string | null): void {\n const normalized = this.normalizeValue(next);\n this.boundValue.set(normalized);\n this.dirty.set(true);\n if (!this.touched()) {\n this.touched.set(true);\n }\n this.valueChange.emit(normalized);\n }\n\n /** PrimeNG clear path — force null even if ngModelChange is skipped/racy. */\n onClear(): void {\n this.boundValue.set(null);\n this.dirty.set(true);\n if (!this.touched()) {\n this.touched.set(true);\n }\n this.valueChange.emit(null);\n }\n\n private normalizeValue(value: string | null | undefined): string | null {\n return value === '' || value === undefined || value === null ? null : value;\n }\n}\n","<div class=\"sce-select-field__wrap\" [class]=\"containerClassName() || null\" [attr.dir]=\"resolvedDir()\">\n <sce-field\n [id]=\"id()\"\n [label]=\"label()\"\n [required]=\"required()\"\n [helpText]=\"helpText()\"\n [error]=\"displayError()\"\n [labelClassName]=\"labelClassName()\"\n [fieldClassName]=\"fieldClassName()\"\n >\n <p-select\n [inputId]=\"id()\"\n [ariaLabel]=\"label() || resolvedPlaceholder()\"\n [options]=\"options()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n optionDisabled=\"disabled\"\n [group]=\"group()\"\n [optionGroupLabel]=\"optionGroupLabel()\"\n [optionGroupChildren]=\"optionGroupChildren()\"\n [placeholder]=\"resolvedPlaceholder()\"\n [disabled]=\"disabled()\"\n [filter]=\"filter()\"\n [filterPlaceholder]=\"filterPlaceholder() ?? ''\"\n [showClear]=\"clearVisible()\"\n [ngModel]=\"boundValue()\"\n (ngModelChange)=\"onValueChange($event)\"\n (onClear)=\"onClear()\"\n (onBlur)=\"onBlur()\"\n (onShow)=\"onOverlayShow()\"\n [class.p-invalid]=\"displayError()\"\n [class.sce-select--borderless]=\"borderless()\"\n [styleClass]=\"'w-full ' + inputClassName()\"\n [panelStyleClass]=\"panelClassName()\"\n dropdownIcon=\"pi pi-chevron-down\"\n [overlayOptions]=\"overlayOptions\"\n appendTo=\"body\"\n >\n <ng-template #dropdownicon>\n <sce-hugeicon [icon]=\"dropdownIcon\" [size]=\"16\" />\n </ng-template>\n </p-select>\n </sce-field>\n</div>\n","/**\n * React source: feedback/inline-api-error.tsx\n */\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input, output } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { SceVariantDirective } from '@moatamed-sce/core';\nimport { SceHugeicon } from '../../atoms/hugeicon/hugeicon';\nimport { AlertCircleIcon, RefreshIcon } from '@hugeicons/core-free-icons';\n\n/** Inline error banner for an already-resolved `message`, showing a retry button only when `retryable` is opted into (it defaults to false so a failed save cannot re-trigger a load). */\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n host: { class: 'sce-inline-api-error' },\n selector: 'sce-inline-api-error',\n standalone: true,\n imports: [TranslatePipe, SceHugeicon],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './inline-api-error.component.scss',\n templateUrl: './inline-api-error.component.html',\n})\nexport class SceInlineApiErrorComponent {\n protected readonly errorIcon = AlertCircleIcon;\n protected readonly retryIcon = RefreshIcon;\n message = input.required<string>();\n className = input('');\n\n /**\n * Shows a retry button. Opt in only where the banner reports a *load* failure — on a form\n * page the same banner reports a failed save, where re-running the load would discard input.\n */\n retryable = input(false);\n\n /** The host re-runs the request that failed. */\n readonly retry = output<void>();\n\n protected rootClass = computed(() => {\n const cls = this.className();\n return cls ? `inlineApiErrorRoot ${cls}` : 'inlineApiErrorRoot';\n });\n\n protected onRetry(): void {\n this.retry.emit();\n }\n}\n","@if (message()) {\n <!-- role=alert already implies an assertive live region; adding aria-live=polite contradicts it -->\n <div [class]=\"rootClass()\" role=\"alert\">\n <sce-hugeicon class=\"inlineApiErrorIcon\" [icon]=\"errorIcon\" [size]=\"20\" />\n <p class=\"inlineApiErrorMessage\">{{ message() }}</p>\n @if (retryable()) {\n <button type=\"button\" class=\"inlineApiErrorRetry\" (click)=\"onRetry()\">\n <sce-hugeicon [icon]=\"retryIcon\" [size]=\"16\" />\n {{ 'STATUS_PAGES.RETRY' | translate }}\n </button>\n }\n </div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n inject,\n OnInit,\n OnDestroy,\n computed,\n effect,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport {\n BaladyGisService,\n BaladyRegionItem,\n BaladyCityItem,\n BaladyDistrictItem,\n BaladyGisError,\n BaladyPointDataResult,\n SceVariantDirective,\n ToastService,\n} from '@moatamed-sce/core';\nimport { SceSelectFieldComponent } from '../../molecules/select-field/select-field.component';\nimport { SceInlineApiErrorComponent } from '../inline-api-error/inline-api-error.component';\nimport { SceOsmLeafletMapComponent, OsmMapMarker } from '../osm-leaflet-map/osm-leaflet-map.component';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nconst PARCEL_NOT_FOUND_MESSAGE = 'لم يتم العثور على أرض محددة في هذه النقطة. يرجى اختيار موقع أرض داخل مخطط.';\nconst RATE_LIMITED_MESSAGE = 'تم تجاوز عدد الطلبات المسموح به. يرجى الانتظار قليلًا ثم المحاولة مرة أخرى.';\n/** Hold-off after a 429 that carried no `Retry-After`. */\nconst DEFAULT_RATE_LIMIT_BACKOFF_SECONDS = 5;\n\n/** Fallback center coordinates for Saudi Arabia regions */\nconst SAUDI_REGION_CENTERS: Record<string, { lat: number; lng: number; zoom: number }> = {\n '001': { lat: 24.7136, lng: 46.6753, zoom: 8 }, // Riyadh\n '002': { lat: 21.3891, lng: 39.8579, zoom: 8 }, // Makkah\n '003': { lat: 24.5247, lng: 39.5692, zoom: 8 }, // Madinah\n '004': { lat: 26.326, lng: 43.975, zoom: 8 }, // Al Qassim\n '005': { lat: 26.4207, lng: 50.0888, zoom: 7 }, // Eastern\n '006': { lat: 18.2164, lng: 42.5053, zoom: 8 }, // Asir\n '007': { lat: 28.3835, lng: 36.5662, zoom: 8 }, // Tabuk\n '008': { lat: 27.5236, lng: 41.6961, zoom: 8 }, // Hail\n '009': { lat: 30.9753, lng: 41.0381, zoom: 8 }, // Northern Borders\n '010': { lat: 16.8894, lng: 42.5511, zoom: 9 }, // Jazan\n '011': { lat: 17.4924, lng: 44.1277, zoom: 8 }, // Najran\n '012': { lat: 20.0129, lng: 41.4676, zoom: 9 }, // Al Baha\n '013': { lat: 29.9697, lng: 40.1963, zoom: 8 }, // Al Jouf\n};\n\nfunction calculateRingsCenter(rings?: number[][][]): { lat: number; lng: number } | null {\n if (!rings || !rings.length || !rings[0].length) {\n return null;\n }\n const points = rings[0];\n let sumLng = 0;\n let sumLat = 0;\n let count = 0;\n for (const pt of points) {\n if (Array.isArray(pt) && pt.length >= 2) {\n sumLng += pt[0];\n sumLat += pt[1];\n count++;\n }\n }\n if (count === 0) {\n return null;\n }\n return { lat: sumLat / count, lng: sumLng / count };\n}\n\n@Component({\n hostDirectives: [{ directive: SceVariantDirective, inputs: ['sceVariant', 'sceDensity'] }],\n host: { class: 'sce-balady-map-selector' },\n selector: 'sce-balady-map-selector',\n standalone: true,\n imports: [CommonModule, SceSelectFieldComponent, SceInlineApiErrorComponent, SceOsmLeafletMapComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './balady-map-selector.component.scss',\n templateUrl: './balady-map-selector.component.html',\n})\nexport class SceBaladyMapSelectorComponent implements OnInit, OnDestroy {\n readonly locale = input<'ar' | 'en'>('ar');\n readonly dir = input<'rtl' | 'ltr'>('rtl');\n readonly initialPropertyData = input<BaladyPointDataResult | null>(null);\n\n readonly propertySelected = output<BaladyPointDataResult>();\n readonly mapClick = output<{ lat: number; lng: number }>();\n\n private readonly gisService = inject(BaladyGisService);\n private readonly toast = inject(ToastService);\n\n private lastQueriedCoords: { lat: number; lng: number } | null = null;\n /** Epoch ms until which point queries are held back after a 429 from the GIS proxy. */\n private pointQueryBlockedUntil = 0;\n\n constructor() {\n effect(() => {\n const initData = this.initialPropertyData();\n if (initData && (initData.x != null || initData.y != null || (initData as any).parcelLatitude != null)) {\n const lat = Number(initData.y ?? (initData as any).parcelLatitude ?? (initData as any).lat);\n const lng = Number(initData.x ?? (initData as any).parcelLongitude ?? (initData as any).lng);\n\n if (!isNaN(lat) && !isNaN(lng) && lat !== 0 && lng !== 0) {\n this.currentLat.set(lat);\n this.currentLng.set(lng);\n this.zoomLevel.set(18);\n if (!this.selectedPropertyData()) {\n this.selectedPropertyData.set(initData);\n }\n\n const popupHtml = `\n <div style=\"font-family: inherit; font-size: 13px; line-height: 1.5; padding: 4px;\">\n <strong>رقم القطعة:</strong> ${initData.parcelNo ?? '-'}<br/>\n <strong>رقم المخطط:</strong> ${initData.planNO ?? '-'}<br/>\n <strong>الاستخدام:</strong> ${initData.landuse ?? '-'}<br/>\n <strong>المساحة:</strong> ${this.formatArea(initData.area)}\n </div>\n `;\n this.currentMarkers.set([\n {\n draggable: false,\n lat,\n lng,\n popupHtml,\n },\n ]);\n\n this.queryPointData(lng, lat, { emit: false });\n }\n }\n });\n }\n\n // In-flight API Subscriptions for cancellation\n private regionsSub?: Subscription;\n private citiesSub?: Subscription;\n private districtsSub?: Subscription;\n private pointDataSub?: Subscription;\n\n // Filter Signals\n protected readonly regions = signal<BaladyRegionItem[]>([]);\n protected readonly cities = signal<BaladyCityItem[]>([]);\n protected readonly districts = signal<BaladyDistrictItem[]>([]);\n\n protected readonly selectedRegionCode = signal<string>('');\n protected readonly selectedCityCode = signal<string>('');\n protected readonly selectedDistrictCode = signal<string>('');\n\n protected formatArea(area?: string): string {\n if (!area) {\n return '-';\n }\n const num = parseFloat(area);\n if (isNaN(num)) {\n return area;\n }\n return `${num.toFixed(2)} م²`;\n }\n\n // Map Signals\n protected readonly currentLat = signal<number>(24.7136);\n protected readonly currentLng = signal<number>(46.6753);\n protected readonly zoomLevel = signal<number>(6);\n protected readonly currentMarkers = signal<OsmMapMarker[]>([]);\n\n // State Signals\n protected readonly isLoadingFilterData = signal<boolean>(false);\n protected readonly isQueryingPointData = signal<boolean>(false);\n protected readonly loadError = signal<boolean>(false);\n protected readonly selectedPropertyData = signal<BaladyPointDataResult | null>(null);\n\n // Options for Dropdowns\n protected readonly regionOptions = computed<SelectOption[]>(() =>\n this.regions().map(r => ({\n label: r.regionName,\n value: r.regionCode,\n }))\n );\n\n protected readonly cityOptions = computed<SelectOption[]>(() =>\n this.cities().map(c => ({\n label: c.name,\n value: c.code,\n }))\n );\n\n protected readonly districtOptions = computed<SelectOption[]>(() =>\n this.districts().map(d => ({\n label: d.districtName,\n value: d.districtCode,\n }))\n );\n\n ngOnInit(): void {\n this.loadRegions();\n }\n\n ngOnDestroy(): void {\n this.regionsSub?.unsubscribe();\n this.citiesSub?.unsubscribe();\n this.districtsSub?.unsubscribe();\n this.pointDataSub?.unsubscribe();\n }\n\n protected loadRegions(): void {\n this.regionsSub?.unsubscribe();\n this.isLoadingFilterData.set(true);\n this.loadError.set(false);\n\n this.regionsSub = this.gisService.getRegions().subscribe({\n next: data => {\n this.regions.set(data);\n this.isLoadingFilterData.set(false);\n },\n error: () => {\n this.isLoadingFilterData.set(false);\n this.loadError.set(true);\n },\n });\n }\n\n /** Filter -> Map Sync: User selects Region */\n onRegionChange(code: string | null): void {\n // Cancel in-flight cities and districts requests\n this.citiesSub?.unsubscribe();\n this.districtsSub?.unsubscribe();\n\n const validCode = code ?? '';\n this.selectedRegionCode.set(validCode);\n this.selectedCityCode.set('');\n this.selectedDistrictCode.set('');\n this.cities.set([]);\n this.districts.set([]);\n\n if (!validCode) {\n this.isLoadingFilterData.set(false);\n return;\n }\n\n // Move map to region center\n const regionCenter = SAUDI_REGION_CENTERS[validCode];\n if (regionCenter) {\n this.currentLat.set(regionCenter.lat);\n this.currentLng.set(regionCenter.lng);\n this.zoomLevel.set(regionCenter.zoom);\n }\n\n this.isLoadingFilterData.set(true);\n this.citiesSub = this.gisService.getCities(validCode).subscribe({\n next: data => {\n this.cities.set(data);\n this.isLoadingFilterData.set(false);\n },\n error: () => {\n this.isLoadingFilterData.set(false);\n },\n });\n }\n\n /** Filter -> Map Sync: User selects City */\n onCityChange(code: string | null): void {\n // Cancel in-flight districts request\n this.districtsSub?.unsubscribe();\n\n const validCode = code ?? '';\n this.selectedCityCode.set(validCode);\n this.selectedDistrictCode.set('');\n this.districts.set([]);\n\n if (!validCode) {\n this.isLoadingFilterData.set(false);\n return;\n }\n\n // Move map to city center if rings exist\n const selectedCity = this.cities().find(c => c.code === validCode);\n if (selectedCity?.rings) {\n const center = calculateRingsCenter(selectedCity.rings);\n if (center) {\n this.currentLat.set(center.lat);\n this.currentLng.set(center.lng);\n this.zoomLevel.set(12);\n }\n }\n\n const regionCode = this.selectedRegionCode();\n this.isLoadingFilterData.set(true);\n this.districtsSub = this.gisService.getDistricts(regionCode, validCode).subscribe({\n next: data => {\n this.districts.set(data);\n this.isLoadingFilterData.set(false);\n },\n error: () => {\n this.isLoadingFilterData.set(false);\n },\n });\n }\n\n /** Filter -> Map Sync: User selects District */\n onDistrictChange(code: string | null): void {\n const validCode = code ?? '';\n this.selectedDistrictCode.set(validCode);\n if (!validCode) {\n return;\n }\n\n // Move map to district center if rings exist\n const selectedDistrict = this.districts().find(d => d.districtCode === validCode);\n if (selectedDistrict?.rings) {\n const center = calculateRingsCenter(selectedDistrict.rings);\n if (center) {\n this.currentLat.set(center.lat);\n this.currentLng.set(center.lng);\n this.zoomLevel.set(14);\n }\n } else {\n this.zoomLevel.set(14);\n }\n }\n\n /** Query Balady GIS API for point data (x=lng, y=lat) */\n protected queryPointData(lng: number, lat: number, options: { emit?: boolean } = {}): void {\n const emit = options.emit ?? true;\n\n if (this.lastQueriedCoords && this.lastQueriedCoords.lat === lat && this.lastQueriedCoords.lng === lng) {\n return;\n }\n if (Date.now() < this.pointQueryBlockedUntil) {\n if (emit) {\n this.toast.warning('', RATE_LIMITED_MESSAGE);\n }\n return;\n }\n this.lastQueriedCoords = { lat, lng };\n\n // Cancel any in-flight requests before querying new point\n this.pointDataSub?.unsubscribe();\n this.citiesSub?.unsubscribe();\n this.districtsSub?.unsubscribe();\n\n this.currentLat.set(lat);\n this.currentLng.set(lng);\n this.zoomLevel.set(18);\n\n this.isQueryingPointData.set(true);\n this.pointDataSub = this.gisService.getPointData(lng, lat).subscribe({\n next: result => {\n this.isQueryingPointData.set(false);\n const hasPointDetails = Boolean(result?.parcelNo || result?.planNO || result?.region || result?.city);\n if (result && hasPointDetails) {\n // The saved coordinates are the clicked point — never a vertex of the parcel rings.\n result.x = lng;\n result.y = lat;\n this.zoomLevel.set(18);\n this.selectedPropertyData.set(result);\n if (emit) {\n this.propertySelected.emit(result);\n }\n\n // Update Map Marker\n const popupHtml = `\n <div style=\"font-family: inherit; font-size: 13px; line-height: 1.5; padding: 4px;\">\n <strong>رقم القطعة:</strong> ${result.parcelNo ?? '-'}<br/>\n <strong>رقم المخطط:</strong> ${result.planNO ?? '-'}<br/>\n <strong>الاستخدام:</strong> ${result.landuse ?? '-'}<br/>\n <strong>المساحة:</strong> ${this.formatArea(result.area)}\n </div>\n `;\n this.currentMarkers.set([\n {\n draggable: false,\n lat,\n lng,\n popupHtml,\n },\n ]);\n } else {\n if (emit) {\n this.toast.info('', PARCEL_NOT_FOUND_MESSAGE);\n }\n }\n },\n error: (err: unknown) => {\n this.isQueryingPointData.set(false);\n // Let the user retry the same point once the failure is resolved.\n this.lastQueriedCoords = null;\n const kind = err instanceof BaladyGisError ? err.kind : 'unknown';\n if (kind === 'rateLimited') {\n const retryAfter = (err as BaladyGisError).retryAfterSeconds ?? DEFAULT_RATE_LIMIT_BACKOFF_SECONDS;\n this.pointQueryBlockedUntil = Date.now() + retryAfter * 1000;\n }\n if (emit) {\n this.showPointQueryError(kind);\n }\n },\n });\n }\n\n private showPointQueryError(kind: BaladyGisError['kind']): void {\n switch (kind) {\n case 'notFound':\n case 'invalid':\n this.toast.info('', PARCEL_NOT_FOUND_MESSAGE);\n return;\n case 'rateLimited':\n this.toast.warning('', RATE_LIMITED_MESSAGE);\n return;\n case 'unavailable':\n this.toast.error('', 'خدمة بلدي غير متاحة حاليًا. يرجى المحاولة لاحقًا.');\n return;\n default:\n this.toast.error('', 'تعذر الاستعلام عن بيانات العقار. يرجى المحاولة مرة أخرى.');\n }\n }\n\n /** Map Click -> Query Balady & Sync Filter Dropdowns */\n onMapClicked(coords: { lat: number; lng: number }): void {\n // Leaflet reports longitudes past ±180 once the map is panned across the antimeridian.\n const lng = ((((coords.lng + 180) % 360) + 360) % 360) - 180;\n this.mapClick.emit({ lat: coords.lat, lng });\n this.queryPointData(lng, coords.lat, { emit: true });\n }\n}\n","<div class=\"baladyMapSelector\">\n <div class=\"baladyMapSelector__filterHeader\">\n <div class=\"baladyMapSelector__filterTitle\">\n <h4>{{ 'تحديد العقار من الخريطة التفاعلية' }}</h4>\n </div>\n <p class=\"baladyMapSelector__filterSubtitle\">\n اختر المنطقة والمدينة والحي لتحديد النطاق، ثم اضغط على موقع الأرض مباشرة في الخريطة لاستخراج تفاصيل المخطط والقطعة والمساحة والحدود.\n </p>\n\n @if (loadError()) {\n <sce-inline-api-error [message]=\"'تعذر تحميل بيانات المناطق'\" [retryable]=\"true\" (retry)=\"loadRegions()\" />\n }\n </div>\n\n <div class=\"baladyMapSelector__mapContainer\">\n <!-- Floating Filters Bar over Map -->\n <div class=\"baladyMapSelector__floatingFilters\">\n @if (isLoadingFilterData()) {\n <div class=\"baladyMapSelector__filterLoader\" role=\"status\" aria-label=\"جاري تحميل البيانات\">\n <div class=\"baladyMapSelector__miniSpinner\"></div>\n <span>جاري جلب بيانات التصفية...</span>\n </div>\n }\n\n <div class=\"baladyMapSelector__grid\">\n <sce-select-field\n id=\"balady-filter-region\"\n [label]=\"'المنطقة'\"\n [options]=\"regionOptions()\"\n [value]=\"selectedRegionCode()\"\n [disabled]=\"isLoadingFilterData()\"\n [dir]=\"dir()\"\n [showClear]=\"true\"\n (valueChange)=\"onRegionChange($event)\"\n />\n <sce-select-field\n id=\"balady-filter-city\"\n [label]=\"'المدينة'\"\n [options]=\"cityOptions()\"\n [value]=\"selectedCityCode()\"\n [disabled]=\"isLoadingFilterData() || !selectedRegionCode()\"\n [dir]=\"dir()\"\n [showClear]=\"true\"\n (valueChange)=\"onCityChange($event)\"\n />\n <sce-select-field\n id=\"balady-filter-district\"\n [label]=\"'الحي'\"\n [options]=\"districtOptions()\"\n [value]=\"selectedDistrictCode()\"\n [disabled]=\"isLoadingFilterData() || !selectedCityCode()\"\n [dir]=\"dir()\"\n [showClear]=\"true\"\n (valueChange)=\"onDistrictChange($event)\"\n />\n </div>\n </div>\n\n @if (isQueryingPointData()) {\n <div class=\"baladyMapSelector__overlay\" role=\"status\" aria-label=\"جاري الاستعلام عن بيانات الأرض\">\n <div class=\"baladyMapSelector__spinner\"></div>\n <span>جاري الاستعلام عن بيانات العقار والقطعة...</span>\n </div>\n }\n\n <sce-osm-leaflet-map\n [latitude]=\"currentLat()\"\n [longitude]=\"currentLng()\"\n [zoom]=\"zoomLevel()\"\n [markers]=\"currentMarkers()\"\n [interactive]=\"true\"\n (mapClick)=\"onMapClicked($event)\"\n />\n </div>\n\n @if (selectedPropertyData(); as prop) {\n <div class=\"baladyMapSelector__summaryCard\" role=\"region\" aria-label=\"تفاصيل العقار المSelected\">\n <div class=\"baladyMapSelector__summaryHeader\">\n <span class=\"baladyMapSelector__statusIcon\">✓</span>\n <strong>تم تحديد العقار بنجاح</strong>\n </div>\n <div class=\"baladyMapSelector__summaryGrid\">\n <div class=\"baladyMapSelector__infoItem\">\n <span class=\"label\">المنطقة والمدينة:</span>\n <span class=\"val\">{{ prop.region }} - {{ prop.city }} ({{ prop.districtName }})</span>\n </div>\n <div class=\"baladyMapSelector__infoItem\">\n <span class=\"label\">رقم المخطط:</span>\n <span class=\"val\">{{ prop.planNO ?? '-' }}</span>\n </div>\n <div class=\"baladyMapSelector__infoItem\">\n <span class=\"label\">رقم القطعة:</span>\n <span class=\"val\">{{ prop.parcelNo ?? '-' }}</span>\n </div>\n <div class=\"baladyMapSelector__infoItem\">\n <span class=\"label\">استخدام الأرض:</span>\n <span class=\"val\">{{ prop.landuse ?? '-' }}</span>\n </div>\n <div class=\"baladyMapSelector__infoItem\">\n <span class=\"label\">المساحة:</span>\n <span class=\"val\">{{ formatArea(prop.area) }}</span>\n </div>\n @if (prop.directionParcel && prop.directionParcel.length) {\n <!-- Track by index: a parcel can face the same direction twice, and duplicate keys throw NG0955. -->\n @for (dir of prop.directionParcel; track $index) {\n <div class=\"baladyMapSelector__infoItem\">\n <span class=\"label\">حدود العقار ({{ dir.direction }}):</span>\n <span class=\"val\">{{ dir.length }} م</span>\n </div>\n }\n }\n </div>\n </div>\n }\n</div>\n","/**\n * `@moatamed-sce/ui-components/maps` — OSM / Leaflet map organisms.\n *\n * Kept off the main ui-components barrel so portal shells that import chrome\n * (sidebar, layout, notifications) do not pull map/Leaflet code into the\n * initial shared chunk. Marketplace / contracts / miyar import from here.\n */\nexport {\n SceOsmLeafletMapComponent,\n type OsmMapMarker,\n} from './lib/organisms/osm-leaflet-map/osm-leaflet-map.component';\nexport {\n SceOsmOfficesMapComponent,\n type SceOsmOfficeMapPoint,\n} from './lib/organisms/osm-offices-map/osm-offices-map.component';\nexport {\n SceOsmLocationPickerComponent,\n type LocationPickerValue,\n} from './lib/organisms/osm-location-picker/osm-location-picker.component';\nexport { SceOfficeLocationMapComponent } from './lib/organisms/office-location-map/office-location-map.component';\nexport { SceStoreLocationsComponent } from './lib/organisms/store-locations/store-locations.component';\nexport { SceBaladyMapSelectorComponent } from './lib/organisms/balady-map-selector/balady-map-selector.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './maps';\n"],"names":["TILE_URL"],"mappings":"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"}