@dereekb/dbx-form 13.43.0 → 14.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/fesm2022/dereekb-dbx-form-calendar.mjs +159 -199
  2. package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
  3. package/fesm2022/dereekb-dbx-form-expand.field.component-BO_8nxHg.mjs +70 -0
  4. package/fesm2022/dereekb-dbx-form-expand.field.component-BO_8nxHg.mjs.map +1 -0
  5. package/fesm2022/dereekb-dbx-form-flex.wrapper.component-C54ACtzt.mjs +40 -0
  6. package/fesm2022/dereekb-dbx-form-flex.wrapper.component-C54ACtzt.mjs.map +1 -0
  7. package/fesm2022/dereekb-dbx-form-info.field.component-CImBKYE7.mjs +61 -0
  8. package/fesm2022/dereekb-dbx-form-info.field.component-CImBKYE7.mjs.map +1 -0
  9. package/fesm2022/{dereekb-dbx-form-info.wrapper.component-ChSBMxgm.mjs → dereekb-dbx-form-info.wrapper.component-DdDCQ47C.mjs} +14 -13
  10. package/fesm2022/dereekb-dbx-form-info.wrapper.component-DdDCQ47C.mjs.map +1 -0
  11. package/fesm2022/dereekb-dbx-form-mapbox.mjs +100 -60
  12. package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
  13. package/fesm2022/dereekb-dbx-form-quiz.mjs +106 -73
  14. package/fesm2022/dereekb-dbx-form-quiz.mjs.map +1 -1
  15. package/fesm2022/{dereekb-dbx-form-section.wrapper.component-BoR5-a8A.mjs → dereekb-dbx-form-section.wrapper.component-CpXSvC5e.mjs} +14 -13
  16. package/fesm2022/dereekb-dbx-form-section.wrapper.component-CpXSvC5e.mjs.map +1 -0
  17. package/fesm2022/dereekb-dbx-form-style-demo.mjs +30 -39
  18. package/fesm2022/dereekb-dbx-form-style-demo.mjs.map +1 -1
  19. package/fesm2022/{dereekb-dbx-form-style.wrapper.component-C4dVNND_.mjs → dereekb-dbx-form-style.wrapper.component-CPzzgQXk.mjs} +12 -12
  20. package/fesm2022/dereekb-dbx-form-style.wrapper.component-CPzzgQXk.mjs.map +1 -0
  21. package/fesm2022/dereekb-dbx-form.mjs +958 -642
  22. package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
  23. package/package.json +24 -24
  24. package/types/dereekb-dbx-form-calendar.d.ts +55 -64
  25. package/types/dereekb-dbx-form.d.ts +51 -293
  26. package/fesm2022/dereekb-dbx-form-expand.field.component-uqVNtX2s.mjs +0 -56
  27. package/fesm2022/dereekb-dbx-form-expand.field.component-uqVNtX2s.mjs.map +0 -1
  28. package/fesm2022/dereekb-dbx-form-flex.wrapper.component-C2nN1Oi1.mjs +0 -39
  29. package/fesm2022/dereekb-dbx-form-flex.wrapper.component-C2nN1Oi1.mjs.map +0 -1
  30. package/fesm2022/dereekb-dbx-form-info.field.component-CBAXCDdO.mjs +0 -50
  31. package/fesm2022/dereekb-dbx-form-info.field.component-CBAXCDdO.mjs.map +0 -1
  32. package/fesm2022/dereekb-dbx-form-info.wrapper.component-ChSBMxgm.mjs.map +0 -1
  33. package/fesm2022/dereekb-dbx-form-section.wrapper.component-BoR5-a8A.mjs.map +0 -1
  34. package/fesm2022/dereekb-dbx-form-style.wrapper.component-C4dVNND_.mjs.map +0 -1
@@ -1 +1 @@
1
- {"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 { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\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 { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\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 { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\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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"}
1
+ {"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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"}