{"version":3,"file":"dereekb-dbx-form-mapbox.mjs","sources":["../../../../packages/dbx-form/mapbox/src/lib/field/latlng/latlng.forge.field.ts","../../../../packages/dbx-form/mapbox/src/lib/field/latlng/latlng.forge.field.marker.component.ts","../../../../packages/dbx-form/mapbox/src/lib/field/latlng/latlng.forge.field.component.ts","../../../../packages/dbx-form/mapbox/src/lib/field/zoom/zoom.forge.field.ts","../../../../packages/dbx-form/mapbox/src/lib/field/zoom/zoom.forge.field.component.ts","../../../../packages/dbx-form/mapbox/src/lib/forge.providers.ts","../../../../packages/dbx-form/mapbox/src/dereekb-dbx-form-mapbox.ts"],"sourcesContent":["import type { BaseValueField } from '@ng-forge/dynamic-forms';\nimport { filterFromPOJO, LAT_LNG_PATTERN, type LatLngPointFunctionConfig } from '@dereekb/util';\nimport { DEFAULT_FORGE_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE, DEFAULT_FORGE_LAT_LNG_TEXT_FIELD_PLACEHOLDER } from '@dereekb/dbx-form';\nimport type { DbxForgeMapboxLatLngFieldComponentProps } from './latlng.forge.field.component';\n\n/**\n * The custom forge field type name for the mapbox lat/lng field.\n */\nexport const FORGE_MAPBOX_LATLNG_FIELD_TYPE = 'dbx-forge-mapbox-latlng' as const;\n\n/**\n * Field definition type for a forge mapbox lat/lng picker field.\n */\nexport type DbxForgeMapboxLatLngFieldDef = BaseValueField<DbxForgeMapboxLatLngFieldComponentProps, unknown> & {\n  readonly type: typeof FORGE_MAPBOX_LATLNG_FIELD_TYPE;\n};\n\n/**\n * Configuration for a forge mapbox lat/lng picker field.\n */\nexport interface DbxForgeMapboxLatLngFieldConfig {\n  readonly key?: string;\n  readonly label?: string;\n  readonly description?: string;\n  readonly required?: boolean;\n  readonly readonly?: boolean;\n  readonly showMap?: boolean;\n  readonly showCenterButton?: boolean;\n  readonly setCenterOnLocationSet?: boolean;\n  readonly selectLocationOnMapDrag?: boolean;\n  readonly selectLocationOnMapClick?: boolean;\n  readonly zoom?: number;\n  readonly recenterTime?: number;\n  readonly latLngConfig?: LatLngPointFunctionConfig;\n  readonly markerConfig?: DbxForgeMapboxLatLngFieldComponentProps['markerConfig'];\n}\n\n/**\n * Creates a forge field definition for a Mapbox-powered latitude/longitude picker.\n *\n * This is the forge equivalent of {@link mapboxLatLngField}.\n *\n * @param config - Optional field configuration overrides.\n * @returns A validated forge field definition for the Mapbox lat/lng picker.\n */\nexport function dbxForgeMapboxLatLngField(config: DbxForgeMapboxLatLngFieldConfig = {}): DbxForgeMapboxLatLngFieldDef {\n  const { key = 'latLng', label, description, required, readonly: isReadonly, showMap, zoom, latLngConfig, recenterTime, showCenterButton, setCenterOnLocationSet, selectLocationOnMapDrag, selectLocationOnMapClick, markerConfig } = config;\n\n  const props: DbxForgeMapboxLatLngFieldComponentProps = filterFromPOJO({\n    label: label ?? 'Location',\n    description,\n    placeholder: DEFAULT_FORGE_LAT_LNG_TEXT_FIELD_PLACEHOLDER,\n    pattern: LAT_LNG_PATTERN,\n    patternMessage: DEFAULT_FORGE_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE,\n    showMap,\n    zoom,\n    latLngConfig,\n    recenterTime,\n    selectLocationOnMapDrag,\n    selectLocationOnMapClick,\n    showCenterButton,\n    setCenterOnLocationSet,\n    markerConfig\n  });\n\n  return filterFromPOJO({\n    key,\n    type: FORGE_MAPBOX_LATLNG_FIELD_TYPE,\n    label: label ?? 'Location',\n    value: undefined,\n    required,\n    readonly: isReadonly,\n    props: Object.keys(props).length > 0 ? props : undefined\n  });\n}\n","import { Component, inject } from '@angular/core';\nimport { shareReplay, map, type Observable, combineLatest } from 'rxjs';\nimport { type DbxMapboxMarker, DbxMapboxMarkerComponent } from '@dereekb/dbx-web/mapbox';\nimport { DbxForgeMapboxLatLngFieldComponent } from './latlng.forge.field.component';\nimport { type Maybe } from '@dereekb/util';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n  template: `\n    <dbx-mapbox-marker [marker]=\"markerSignal()\"></dbx-mapbox-marker>\n  `,\n  imports: [DbxMapboxMarkerComponent]\n})\nexport class DbxForgeMapboxLatLngFieldMarkerComponent {\n  readonly fieldComponent = inject(DbxForgeMapboxLatLngFieldComponent);\n\n  readonly marker$: Observable<Maybe<DbxMapboxMarker>> = combineLatest([this.fieldComponent.latLng$, this.fieldComponent.markerConfig$]).pipe(\n    map(([latLng, markerConfig]) => {\n      return markerConfig === false ? undefined : { latLng, ...markerConfig };\n    }),\n    shareReplay(1)\n  );\n\n  readonly markerSignal = toSignal(this.marker$);\n}\n","import { CompactContextStore, mapCompactModeObs } from '@dereekb/dbx-web';\nimport { Component, computed, effect, ElementRef, inject, input, type InputSignal, type Signal } from '@angular/core';\nimport { skip, first, BehaviorSubject, filter, shareReplay, switchMap, map, type Observable, throttleTime, skipWhile, of, distinctUntilChanged } from 'rxjs';\nimport { asObservableFromGetter, filterMaybe, type ObservableFactoryWithRequiredInput } from '@dereekb/rxjs';\nimport { type Maybe, type LatLngPoint, type LatLngPointFunctionConfig, type LatLngStringFunction, latLngStringFunction, type Milliseconds, latLngPointFunction, isDefaultLatLngPoint, isValidLatLngPoint, type LatLngPointFunction, isSameLatLngPoint, defaultLatLngPoint } from '@dereekb/util';\nimport { WaGeolocationService } from '@ng-web-apis/geolocation';\nimport { type Marker } from 'mapbox-gl';\nimport { DbxMapboxInjectionStore, DbxMapboxMapStore, type DbxMapboxMarkerDisplayConfig, DbxMapboxModule, type MapboxZoomLevel, provideMapboxStoreIfParentIsUnavailable } from '@dereekb/dbx-web/mapbox';\nimport { DbxForgeMapboxLatLngFieldMarkerComponent } from './latlng.forge.field.marker.component';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { NgClass } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MapComponent, MarkerComponent } from 'ngx-mapbox-gl';\nimport type { FieldTree } from '@angular/forms/signals';\nimport type { DynamicText, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { DEFAULT_PROPS, DEFAULT_VALIDATION_MESSAGES, resolveValueFieldContext, buildValueFieldInputs, setupMetaTracking } from '@ng-forge/dynamic-forms/integration';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { completeOnDestroy, cleanSubscription } from '@dereekb/dbx-core';\n\nexport const DEFAULT_DBX_FORGE_MAPBOX_LAT_LNG_FIELD_INJECTION_KEY = 'DbxForgeMapboxLatLngFieldComponent';\n\nexport const DEFAULT_DBX_FORGE_MAPBOX_LAT_LNG_MARKER_CONFIG: DbxMapboxMarkerDisplayConfig = {\n  icon: 'pin_drop'\n};\n\n/**\n * Custom props for the forge mapbox lat/lng field.\n */\nexport interface DbxForgeMapboxLatLngFieldComponentProps {\n  readonly label?: string;\n  readonly description?: string;\n  readonly placeholder?: string;\n  readonly pattern?: RegExp;\n  readonly patternMessage?: string;\n  readonly showMap?: boolean;\n  readonly showCenterButton?: boolean;\n  readonly setCenterOnLocationSet?: boolean;\n  readonly selectLocationOnMapDrag?: boolean;\n  readonly selectLocationOnMapClick?: boolean;\n  readonly zoom?: MapboxZoomLevel;\n  readonly recenterTime?: Milliseconds;\n  readonly latLngConfig?: LatLngPointFunctionConfig;\n  readonly mapInjectionKey?: Maybe<string | false>;\n  readonly markerConfig?: false | ObservableFactoryWithRequiredInput<DbxMapboxMarkerDisplayConfig | false, DbxForgeMapboxLatLngFieldComponent>;\n}\n\n/**\n * Forge custom field component for Mapbox latitude/longitude picking.\n *\n * This is the forge equivalent of {@link DbxFormMapboxLatLngFieldComponent}.\n * It bridges ng-forge Signal Forms with the Mapbox map store.\n *\n * Registered as ng-forge type 'dbx-forge-mapbox-latlng'.\n */\n@Component({\n  selector: 'dbx-forge-mapbox-latlng-field',\n  template: `\n    <div class=\"dbx-mapbox-input-field\" [ngClass]=\"compactClassSignal()\">\n      @if (showMapSignal()) {\n        <div class=\"dbx-mapbox-input-field-map\">\n          <mgl-map dbxMapboxMap>\n            <mgl-marker [lngLat]=\"latLngSignal()\" [draggable]=\"!isReadonlyOrDisabledSignal()\" (markerDragEnd)=\"onMarkerDragEnd($event)\"></mgl-marker>\n          </mgl-map>\n        </div>\n      }\n      <div class=\"dbx-mapbox-input-field-input\">\n        @if (showCenterButtonSignal()) {\n          <button mat-icon-button (click)=\"flyToMarker()\">\n            <mat-icon>my_location</mat-icon>\n          </button>\n        }\n        <mat-form-field class=\"dbx-mapbox-input-field-input-field\">\n          <mat-label>Coordinates</mat-label>\n          <input type=\"text\" matInput [placeholder]=\"placeholderTextSignal() ?? ''\" [formControl]=\"textCtrl\" />\n          @if (useCurrentLocationDisabledSignal()) {\n            <mat-hint class=\"dbx-hint dbx-warn\">Could not access your current location.</mat-hint>\n          }\n        </mat-form-field>\n      </div>\n    </div>\n  `,\n  providers: [provideMapboxStoreIfParentIsUnavailable()],\n  styleUrls: ['../mapbox.field.component.scss'],\n  imports: [NgClass, MapComponent, MarkerComponent, ReactiveFormsModule, MatIconModule, DbxMapboxModule, MatButtonModule, MatFormFieldModule, MatInputModule]\n})\nexport class DbxForgeMapboxLatLngFieldComponent {\n  private readonly _geolocationService = inject(WaGeolocationService);\n\n  readonly compact = inject(CompactContextStore, { optional: true });\n  readonly dbxMapboxInjectionStore = inject(DbxMapboxInjectionStore, { optional: true });\n  readonly dbxMapboxMapStore = inject(DbxMapboxMapStore);\n  private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n  // Standard ng-forge value field inputs\n  readonly field: InputSignal<FieldTree<unknown>> = input.required<FieldTree<unknown>>();\n  readonly key: InputSignal<string> = input.required<string>();\n  readonly label: InputSignal<DynamicText | undefined> = input<DynamicText | undefined>();\n  readonly placeholder: InputSignal<DynamicText | undefined> = input<DynamicText | undefined>();\n  readonly className: InputSignal<string> = input('');\n  readonly tabIndex: InputSignal<number | undefined> = input<number | undefined>();\n  readonly props: InputSignal<DbxForgeMapboxLatLngFieldComponentProps | undefined> = input<DbxForgeMapboxLatLngFieldComponentProps | undefined>();\n  readonly meta: InputSignal<FieldMeta | undefined> = input<FieldMeta | undefined>();\n  readonly validationMessages: InputSignal<ValidationMessages | undefined> = input<ValidationMessages | undefined>();\n  readonly defaultValidationMessages: InputSignal<ValidationMessages | undefined> = input<ValidationMessages | undefined>();\n\n  // Internal text form control for the coordinate input\n  readonly textCtrl = new FormControl<string>('');\n\n  // Subscription management\n  private readonly _sub = cleanSubscription();\n  private readonly _geoSub = cleanSubscription();\n  private readonly _centerSub = cleanSubscription();\n  private readonly _flyToCenterSub = cleanSubscription();\n  private readonly _clickSub = cleanSubscription();\n  private readonly _zoom = completeOnDestroy(new BehaviorSubject<MapboxZoomLevel>(12));\n  private readonly _markerConfig = completeOnDestroy(new BehaviorSubject<Observable<DbxMapboxMarkerDisplayConfig | false>>(of(DEFAULT_DBX_FORGE_MAPBOX_LAT_LNG_MARKER_CONFIG)));\n\n  // Reactive lat/lng conversion functions derived from props so latLng$ recomputes when props arrive.\n  readonly latLngPointConfigSignal = computed<LatLngPointFunctionConfig>(() => {\n    const p = this.props();\n    return { ...p?.latLngConfig, wrap: p?.latLngConfig?.wrap || false, validate: p?.latLngConfig?.validate || false, precisionRounding: p?.latLngConfig?.precisionRounding ?? 'round' };\n  });\n  readonly latLngPointFunctionSignal = computed<LatLngPointFunction>(() => latLngPointFunction(this.latLngPointConfigSignal()));\n  readonly latLngStringFunctionSignal = computed<LatLngStringFunction>(() => latLngStringFunction(this.latLngPointConfigSignal()));\n\n  readonly compactClass$ = mapCompactModeObs(this.compact?.mode$, {\n    compact: 'dbx-mapbox-input-field-compact'\n  }).pipe(filterMaybe());\n\n  private readonly _useCurrentLocationDisabled = completeOnDestroy(new BehaviorSubject<boolean>(false));\n  readonly useCurrentLocationDisabled$ = this._useCurrentLocationDisabled.asObservable();\n\n  // Field value signal (double-call pattern)\n  readonly fieldValueSignal = computed(() => {\n    const state = this.field()?.() as any;\n    return state?.value?.() as unknown;\n  });\n\n  readonly isDisabledSignal = computed(() => {\n    const state = this.field()?.() as any;\n    return (state?.disabled?.() as boolean) ?? false;\n  });\n\n  readonly isReadonlyOrDisabledSignal = computed(() => {\n    const isDisabled = this.isDisabledSignal();\n    return (this.props() as any)?.readonly || isDisabled;\n  });\n\n  // Computed props from field definition\n  readonly showMapSignal = computed(() => this.props()?.showMap ?? true);\n  readonly selectLocationOnMapDragSignal = computed(() => this.props()?.selectLocationOnMapDrag ?? true);\n  readonly selectLocationOnMapClickSignal = computed(() => this.props()?.selectLocationOnMapClick ?? false);\n  readonly setCenterOnLocationSetSignal = computed(() => this.props()?.setCenterOnLocationSet ?? true);\n  readonly showCenterButtonSignal = computed(() => {\n    const props = this.props();\n    return !this.selectLocationOnMapDragSignal() && props?.showCenterButton !== false;\n  });\n  readonly recenterTimeSignal = computed(() => this.props()?.recenterTime || 10 * 1000);\n  readonly placeholderTextSignal = computed(() => this.props()?.placeholder);\n\n  // Observables for map store sync\n  readonly latLngValueSignal = computed<LatLngPoint>(() => {\n    const value = this.fieldValueSignal();\n    const fn = this.latLngPointFunctionSignal();\n    return value == null ? defaultLatLngPoint() : fn(value as string);\n  });\n\n  readonly latLng$: Observable<LatLngPoint> = toObservable(this.latLngValueSignal).pipe(distinctUntilChanged<LatLngPoint>(isSameLatLngPoint), shareReplay(1));\n\n  readonly nonZeroLatLng$: Observable<LatLngPoint> = this.latLng$.pipe(skipWhile<LatLngPoint>(isDefaultLatLngPoint), filter(isValidLatLngPoint));\n\n  readonly zoom$ = this._zoom.asObservable();\n  readonly markerConfig$ = this._markerConfig.asObservable().pipe(\n    switchMap((x) => x),\n    shareReplay(1)\n  );\n\n  readonly useCurrentLocationDisabledSignal = toSignal(this._useCurrentLocationDisabled, { initialValue: false });\n  readonly compactClassSignal = toSignal(this.compactClass$, { initialValue: '' });\n  readonly latLngSignal = this.latLngValueSignal;\n\n  private _syncing = false;\n\n  private _setFieldValue(value: unknown): void {\n    const state = this.field()?.() as any;\n    if (state?.value?.set) {\n      state.value.set(value);\n      state.markAsTouched?.();\n      state.markAsDirty?.();\n    }\n  }\n\n  constructor() {\n    setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });\n\n    // Initialize on first props emission\n    effect(() => {\n      const p = this.props();\n      if (!p) {\n        return;\n      }\n\n      const zoom = Math.min(p.zoom || 12, 18);\n      this._zoom.next(zoom);\n\n      if (p.setCenterOnLocationSet !== false) {\n        this._centerSub.subscription = this.dbxMapboxMapStore.setCenter(this.nonZeroLatLng$);\n      }\n\n      if (p.showMap ?? true) {\n        this.dbxMapboxMapStore.setZoom(this.zoom$);\n\n        const recenterTime = p.recenterTime || 10 * 1000;\n        if (recenterTime > 0) {\n          this._flyToCenterSub.subscription = this.dbxMapboxMapStore.center$.pipe(skip(1), throttleTime(recenterTime, undefined, { leading: false, trailing: true })).subscribe(() => {\n            this.flyToMarker();\n          });\n        }\n      } else {\n        if (p.selectLocationOnMapDrag ?? true) {\n          this._sub.subscription = this.dbxMapboxMapStore.center$.subscribe((center) => {\n            this.dbxMapboxMapStore.centerGivenMargin$.pipe(first()).subscribe(() => {\n              if (!this.isReadonlyOrDisabledSignal()) {\n                this.setValue(center);\n              }\n            });\n          });\n        }\n\n        if (p.selectLocationOnMapClick) {\n          this._clickSub.subscription = this.dbxMapboxMapStore.clickEvent$.subscribe((x) => {\n            if (x?.type === 'click') {\n              this.setValue(x.lngLat);\n            }\n          });\n        }\n      }\n\n      if ((p as any).readonly) {\n        this.textCtrl.disable();\n      }\n\n      // Add the marker to the injection store for display\n      if (this.dbxMapboxInjectionStore) {\n        if (p.markerConfig != null) {\n          this._markerConfig.next(p.markerConfig === false ? of(false) : asObservableFromGetter(p.markerConfig, this));\n        }\n\n        this.dbxMapboxInjectionStore.addInjectionConfig({\n          key: p.mapInjectionKey || DEFAULT_DBX_FORGE_MAPBOX_LAT_LNG_FIELD_INJECTION_KEY,\n          injectionConfig: {\n            componentClass: DbxForgeMapboxLatLngFieldMarkerComponent,\n            providers: [{ provide: DbxForgeMapboxLatLngFieldComponent, useValue: this }]\n          }\n        });\n      }\n    });\n\n    // Sync field value → text control (inbound)\n    effect(() => {\n      const value = this.fieldValueSignal();\n\n      if (!this._syncing) {\n        this._syncing = true;\n        this.textCtrl.setValue((value as string) ?? '', { emitEvent: false });\n        this._syncing = false;\n      }\n    });\n\n    // Sync text control → field value (outbound)\n    this.textCtrl.valueChanges.subscribe((textValue) => {\n      if (!this._syncing) {\n        this._syncing = true;\n        this._setFieldValue(textValue || null);\n        this._syncing = false;\n      }\n    });\n  }\n\n  flyToMarker() {\n    this.dbxMapboxMapStore.easeTo(\n      this.nonZeroLatLng$.pipe(\n        first(),\n        map((x) => ({ center: x }))\n      )\n    );\n  }\n\n  useCurrentLocation() {\n    this._geoSub.subscription = this._geolocationService.pipe(first()).subscribe({\n      next: (position) => {\n        if (position) {\n          const { latitude: lat, longitude: lng } = position.coords;\n          this.setValue({ lat, lng });\n        }\n      },\n      error: () => {\n        this._useCurrentLocationDisabled.next(true);\n      }\n    });\n  }\n\n  onMarkerDragEnd(marker: Marker) {\n    this.setValue(marker.getLngLat());\n  }\n\n  setValue(latLng?: Maybe<LatLngPoint>) {\n    const stringValue = latLng ? this.latLngStringFunctionSignal()(latLng) : null;\n    this._syncing = true;\n    this.textCtrl.setValue(stringValue, { emitEvent: false });\n    this._setFieldValue(stringValue);\n    this._syncing = false;\n  }\n}\n\n/**\n * Custom mapper for the forge mapbox lat/lng field.\n *\n * @param fieldDef - Field definition configuration.\n * @param fieldDef.key - Form model key for the field.\n * @returns Signal containing a Record of input names to values for ngComponentOutlet.\n */\nexport function mapboxLatLngFieldMapper(fieldDef: { key: string }): Signal<Record<string, unknown>> {\n  const ctx = resolveValueFieldContext();\n  const defaultProps = inject(DEFAULT_PROPS);\n  const defaultValidationMessages = inject(DEFAULT_VALIDATION_MESSAGES);\n\n  return computed(() => {\n    const inputs = buildValueFieldInputs(fieldDef as any, ctx, defaultProps?.());\n    const dvm = defaultValidationMessages?.();\n    if (dvm !== undefined) {\n      inputs['defaultValidationMessages'] = dvm;\n    }\n    return inputs;\n  });\n}\n","import type { BaseValueField } from '@ng-forge/dynamic-forms';\nimport { filterFromPOJO, type LatLngPoint } from '@dereekb/util';\nimport type { DbxForgeMapboxZoomFieldComponentProps } from './zoom.forge.field.component';\nimport type { MapboxZoomLevel } from '@dereekb/dbx-web/mapbox';\n\n/**\n * The custom forge field type name for the mapbox zoom field.\n */\nexport const FORGE_MAPBOX_ZOOM_FIELD_TYPE = 'dbx-forge-mapbox-zoom' as const;\n\n/**\n * Field definition type for a forge mapbox zoom picker field.\n */\nexport type DbxForgeMapboxZoomFieldDef = BaseValueField<DbxForgeMapboxZoomFieldComponentProps, unknown> & {\n  readonly type: typeof FORGE_MAPBOX_ZOOM_FIELD_TYPE;\n};\n\n/**\n * Configuration for a forge mapbox zoom picker field.\n */\nexport interface DbxForgeMapboxZoomFieldConfig {\n  readonly key?: string;\n  readonly label?: string;\n  readonly description?: string;\n  readonly required?: boolean;\n  readonly readonly?: boolean;\n  readonly showMap?: boolean;\n  readonly center?: LatLngPoint;\n  readonly minZoom?: MapboxZoomLevel;\n  readonly maxZoom?: MapboxZoomLevel;\n  readonly zoomStep?: number;\n}\n\n/**\n * Creates a forge field definition for a Mapbox-powered zoom level picker.\n *\n * This is the forge equivalent of {@link mapboxZoomField}.\n *\n * @param config - Optional field configuration overrides.\n * @returns A validated forge field definition for the Mapbox zoom picker.\n */\nexport function dbxForgeMapboxZoomField(config: DbxForgeMapboxZoomFieldConfig = {}): DbxForgeMapboxZoomFieldDef {\n  const { key = 'zoom', label, description, required, readonly: isReadonly, showMap, center, minZoom, maxZoom, zoomStep } = config;\n\n  const props: DbxForgeMapboxZoomFieldComponentProps = filterFromPOJO({\n    label: label ?? 'Zoom',\n    description,\n    showMap,\n    center,\n    minZoom,\n    maxZoom,\n    zoomStep\n  });\n\n  return filterFromPOJO({\n    key,\n    type: FORGE_MAPBOX_ZOOM_FIELD_TYPE,\n    label: label ?? 'Zoom',\n    value: undefined,\n    required,\n    readonly: isReadonly,\n    props: Object.keys(props).length > 0 ? props : undefined\n  });\n}\n","import { CompactContextStore, mapCompactModeObs } from '@dereekb/dbx-web';\nimport { Component, type OnDestroy, computed, effect, ElementRef, inject, input, type InputSignal, type Signal } from '@angular/core';\nimport { BehaviorSubject, shareReplay, type Observable } from 'rxjs';\nimport { filterMaybe } from '@dereekb/rxjs';\nimport { type ZoomLevel, type Maybe, type LatLngPoint, latLngPoint } from '@dereekb/util';\nimport { DbxMapboxService, DbxMapboxMapStore, type MapboxZoomLevel, provideMapboxStoreIfParentIsUnavailable, mapboxZoomLevel, MAPBOX_MAX_ZOOM_LEVEL, MAPBOX_MIN_ZOOM_LEVEL, DbxMapboxModule } from '@dereekb/dbx-web/mapbox';\nimport { NgClass } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport type { FieldTree } from '@angular/forms/signals';\nimport type { DynamicText, FieldMeta, ValidationMessages } from '@ng-forge/dynamic-forms';\nimport { DEFAULT_PROPS, DEFAULT_VALIDATION_MESSAGES, resolveValueFieldContext, buildValueFieldInputs, setupMetaTracking } from '@ng-forge/dynamic-forms/integration';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { completeOnDestroy, cleanSubscription } from '@dereekb/dbx-core';\n\n/**\n * Custom props for the forge mapbox zoom field.\n */\nexport interface DbxForgeMapboxZoomFieldComponentProps {\n  readonly label?: string;\n  readonly description?: string;\n  readonly showMap?: boolean;\n  readonly center?: LatLngPoint;\n  readonly lockMapToZoomLevels?: boolean;\n  readonly minZoom?: MapboxZoomLevel;\n  readonly maxZoom?: MapboxZoomLevel;\n  readonly zoomStep?: number;\n}\n\n/**\n * Forge custom field component for Mapbox zoom level picking.\n *\n * This is the forge equivalent of {@link DbxFormMapboxZoomFieldComponent}.\n * It bridges ng-forge Signal Forms with the Mapbox map store.\n *\n * Registered as ng-forge type 'dbx-forge-mapbox-zoom'.\n */\n@Component({\n  selector: 'dbx-forge-mapbox-zoom-field',\n  template: `\n    <div class=\"dbx-mapbox-input-field\" [ngClass]=\"compactClassSignal()\">\n      @if (showMapSignal()) {\n        <div class=\"dbx-mapbox-input-field-map\">\n          <mgl-map dbxMapboxMap></mgl-map>\n        </div>\n      }\n      <div class=\"dbx-mapbox-input-field-input\">\n        <mat-form-field class=\"dbx-mapbox-input-field-input-field\">\n          <mat-label>Zoom Level</mat-label>\n          <input type=\"number\" matInput [min]=\"minZoomSignal()\" [max]=\"maxZoomSignal()\" [step]=\"zoomStepSignal()\" [placeholder]=\"placeholderText\" [formControl]=\"numberCtrl\" />\n        </mat-form-field>\n      </div>\n    </div>\n  `,\n  providers: [provideMapboxStoreIfParentIsUnavailable()],\n  styleUrls: ['../mapbox.field.component.scss'],\n  imports: [NgClass, DbxMapboxModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule]\n})\nexport class DbxForgeMapboxZoomFieldComponent implements OnDestroy {\n  readonly compact = inject(CompactContextStore, { optional: true });\n  readonly dbxMapboxService = inject(DbxMapboxService);\n  readonly dbxMapboxMapStore = inject(DbxMapboxMapStore);\n  private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n  // Standard ng-forge value field inputs\n  readonly field: InputSignal<FieldTree<unknown>> = input.required<FieldTree<unknown>>();\n  readonly key: InputSignal<string> = input.required<string>();\n  readonly label: InputSignal<DynamicText | undefined> = input<DynamicText | undefined>();\n  readonly placeholder: InputSignal<DynamicText | undefined> = input<DynamicText | undefined>();\n  readonly className: InputSignal<string> = input('');\n  readonly tabIndex: InputSignal<number | undefined> = input<number | undefined>();\n  readonly props: InputSignal<DbxForgeMapboxZoomFieldComponentProps | undefined> = input<DbxForgeMapboxZoomFieldComponentProps | undefined>();\n  readonly meta: InputSignal<FieldMeta | undefined> = input<FieldMeta | undefined>();\n  readonly validationMessages: InputSignal<ValidationMessages | undefined> = input<ValidationMessages | undefined>();\n  readonly defaultValidationMessages: InputSignal<ValidationMessages | undefined> = input<ValidationMessages | undefined>();\n\n  // Internal number form control for the zoom input\n  readonly numberCtrl = new FormControl<Maybe<number>>(null);\n  readonly placeholderText = '';\n\n  private _undoZoomLimit = false;\n\n  readonly compactClass$ = mapCompactModeObs(this.compact?.mode$, {\n    compact: 'dbx-mapbox-input-field-compact'\n  }).pipe(filterMaybe());\n\n  readonly compactClassSignal = toSignal(this.compactClass$, { initialValue: '' });\n\n  // Subscription management\n  private readonly _sub = cleanSubscription();\n  private readonly _center = completeOnDestroy(new BehaviorSubject<Maybe<LatLngPoint>>(undefined));\n\n  // Field value signal (double-call pattern)\n  readonly fieldValueSignal = computed(() => {\n    const state = this.field()?.() as any;\n    return state?.value?.() as unknown;\n  });\n\n  readonly isDisabledSignal = computed(() => {\n    const state = this.field()?.() as any;\n    return (state?.disabled?.() as boolean) ?? false;\n  });\n\n  readonly isReadonlyOrDisabledSignal = computed(() => {\n    const isDisabled = this.isDisabledSignal();\n    return (this.props() as any)?.readonly || isDisabled;\n  });\n\n  // Computed props\n  readonly showMapSignal = computed(() => this.props()?.showMap ?? true);\n  readonly lockMapToZoomLevelsSignal = computed(() => this.props()?.lockMapToZoomLevels ?? false);\n  readonly minZoomSignal = computed(() => mapboxZoomLevel(this.props()?.minZoom || MAPBOX_MIN_ZOOM_LEVEL));\n  readonly maxZoomSignal = computed(() => mapboxZoomLevel(this.props()?.maxZoom || MAPBOX_MAX_ZOOM_LEVEL));\n  readonly zoomStepSignal = computed(() => mapboxZoomLevel(this.props()?.zoomStep || 1));\n\n  readonly fieldValue$ = toObservable(this.fieldValueSignal);\n  readonly zoom$ = this.fieldValue$.pipe(filterMaybe(), shareReplay(1)) as unknown as Observable<MapboxZoomLevel>;\n  readonly center$ = this._center.pipe(filterMaybe());\n\n  private _syncing = false;\n\n  private _setFieldValue(value: unknown): void {\n    const state = this.field()?.() as any;\n    if (state?.value?.set) {\n      state.value.set(value);\n      state.markAsTouched?.();\n      state.markAsDirty?.();\n    }\n  }\n\n  constructor() {\n    setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });\n\n    // Initialize on first props emission\n    effect(() => {\n      const p = this.props();\n      if (!p) {\n        return;\n      }\n\n      const center = p.center || latLngPoint(this.dbxMapboxService.defaultCenter);\n      this._center.next(center);\n\n      this.dbxMapboxMapStore.setZoom(this.zoom$);\n\n      if (p.showMap ?? true) {\n        this.dbxMapboxMapStore.setCenter(this.center$);\n      }\n\n      if ((p as any)?.readonly) {\n        this.numberCtrl.disable();\n\n        if (p.showMap ?? true) {\n          this.dbxMapboxMapStore.setZoomDisabled();\n        }\n      } else if (p.lockMapToZoomLevels) {\n        const min = mapboxZoomLevel(p.minZoom || MAPBOX_MIN_ZOOM_LEVEL);\n        const max = mapboxZoomLevel(p.maxZoom || MAPBOX_MAX_ZOOM_LEVEL);\n        this.dbxMapboxMapStore.setZoomRange({ min, max });\n        this._undoZoomLimit = !(p.showMap ?? true);\n      }\n\n      this._sub.subscription = this.dbxMapboxMapStore.zoom$.subscribe((zoom) => {\n        if (!this.isReadonlyOrDisabledSignal()) {\n          this.setZoomValue(zoom);\n        }\n      });\n    });\n\n    // Sync field value → number control (inbound)\n    effect(() => {\n      const value = this.fieldValueSignal();\n\n      if (!this._syncing) {\n        this._syncing = true;\n        this.numberCtrl.setValue((value as number) ?? null, { emitEvent: false });\n        this._syncing = false;\n      }\n    });\n\n    // Sync number control → field value (outbound)\n    this.numberCtrl.valueChanges.subscribe((numValue) => {\n      if (!this._syncing) {\n        this._syncing = true;\n        this._setFieldValue(numValue ?? null);\n        this._syncing = false;\n      }\n    });\n  }\n\n  ngOnDestroy(): void {\n    if (!this._undoZoomLimit) {\n      this.dbxMapboxMapStore.setZoomRange({});\n    }\n  }\n\n  setZoomValue(zoom?: Maybe<ZoomLevel>) {\n    this._syncing = true;\n    this.numberCtrl.setValue(zoom ?? null, { emitEvent: false });\n    this._setFieldValue(zoom ?? null);\n    this._syncing = false;\n  }\n}\n\n/**\n * Custom mapper for the forge mapbox zoom field.\n *\n * @param fieldDef - Field definition configuration.\n * @param fieldDef.key - Form model key for the field.\n * @returns Signal containing a Record of input names to values for ngComponentOutlet.\n */\nexport function mapboxZoomFieldMapper(fieldDef: { key: string }): Signal<Record<string, unknown>> {\n  const ctx = resolveValueFieldContext();\n  const defaultProps = inject(DEFAULT_PROPS);\n  const defaultValidationMessages = inject(DEFAULT_VALIDATION_MESSAGES);\n\n  return computed(() => {\n    const inputs = buildValueFieldInputs(fieldDef as any, ctx, defaultProps?.());\n    const dvm = defaultValidationMessages?.();\n    if (dvm !== undefined) {\n      inputs['defaultValidationMessages'] = dvm;\n    }\n    return inputs;\n  });\n}\n","import { provideDynamicForm } from '@ng-forge/dynamic-forms';\nimport type { FieldTypeDefinition } from '@ng-forge/dynamic-forms/integration';\nimport { FORGE_MAPBOX_LATLNG_FIELD_TYPE } from './field/latlng/latlng.forge.field';\nimport { mapboxLatLngFieldMapper } from './field/latlng/latlng.forge.field.component';\nimport { FORGE_MAPBOX_ZOOM_FIELD_TYPE } from './field/zoom/zoom.forge.field';\nimport { mapboxZoomFieldMapper } from './field/zoom/zoom.forge.field.component';\n\n/**\n * Forge mapbox lat/lng field type definition.\n */\nconst DbxForgeMapboxLatLngFieldType: FieldTypeDefinition = {\n  name: FORGE_MAPBOX_LATLNG_FIELD_TYPE,\n  loadComponent: () => import('./field/latlng/latlng.forge.field.component').then((m) => m.DbxForgeMapboxLatLngFieldComponent),\n  mapper: mapboxLatLngFieldMapper\n};\n\n/**\n * Forge mapbox zoom field type definition.\n */\nconst DbxForgeMapboxZoomFieldType: FieldTypeDefinition = {\n  name: FORGE_MAPBOX_ZOOM_FIELD_TYPE,\n  loadComponent: () => import('./field/zoom/zoom.forge.field.component').then((m) => m.DbxForgeMapboxZoomFieldComponent),\n  mapper: mapboxZoomFieldMapper\n};\n\n/**\n * All custom dbx-form/mapbox forge field type definitions.\n */\nexport const DBX_FORGE_MAPBOX_FIELD_TYPES: FieldTypeDefinition[] = [DbxForgeMapboxLatLngFieldType, DbxForgeMapboxZoomFieldType];\n\n/**\n * Registers ng-forge dynamic form field declarations for the mapbox package.\n *\n * Add this to your app's providers alongside provideDbxForgeFormFieldDeclarations().\n *\n * @returns The providers that register the mapbox forge field types with ng-forge.\n */\nexport function provideDbxForgeMapboxFieldDeclarations() {\n  return provideDynamicForm(...DBX_FORGE_MAPBOX_FIELD_TYPES);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i2","i5"],"mappings":"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"}