{"version":3,"file":"ngx-formly-core-select.mjs","sources":["../../../../src/core/select/src/select-options.pipe.ts","../../../../src/core/select/src/select.module.ts","../../../../src/core/select/src/ngx-formly-core-select.ts"],"sourcesContent":["import { OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\nimport { FormlyFieldConfig, FormlyFieldProps } from '@ngx-formly/core';\n\nexport interface FormlySelectOption {\n  label: string;\n  disabled?: boolean;\n  value?: any;\n  group?: FormlySelectOption[];\n}\n\nexport interface FormlyFieldSelectProps extends FormlyFieldProps {\n  groupProp?: string | ((option: any) => string);\n  labelProp?: string | ((option: any) => string);\n  valueProp?: string | ((option: any) => any);\n  disabledProp?: string | ((option: any) => boolean);\n}\n\ntype ITransformOption = {\n  labelProp: (option: any) => string;\n  valueProp: (option: any) => any;\n  disabledProp: (option: any) => boolean;\n  groupProp: (option: any) => string;\n};\n\n@Pipe({ name: 'formlySelectOptions', standalone: true })\nexport class FormlySelectOptionsPipe implements PipeTransform, OnDestroy {\n  private _subscription: Subscription;\n  private _options: BehaviorSubject<any[]>;\n\n  transform(options: any, field?: FormlyFieldConfig): Observable<FormlySelectOption[]> {\n    if (!(options instanceof Observable)) {\n      options = this.observableOf(options, field);\n    } else {\n      this.dispose();\n    }\n\n    return (options as Observable<any>).pipe(map((value) => this.transformOptions(value, field)));\n  }\n\n  ngOnDestroy(): void {\n    this.dispose();\n  }\n\n  private transformOptions(options: any[], field?: FormlyFieldConfig): FormlySelectOption[] {\n    const to = this.transformSelectProps(field);\n\n    const opts: FormlySelectOption[] = [];\n    const groups: { [id: string]: number } = {};\n\n    options?.forEach((option) => {\n      const o = this.transformOption(option, to);\n      if (o.group) {\n        const id = groups[o.label];\n        if (id === undefined) {\n          groups[o.label] = opts.push(o) - 1;\n        } else {\n          o.group.forEach((o) => opts[id].group.push(o));\n        }\n      } else {\n        opts.push(o);\n      }\n    });\n\n    return opts;\n  }\n\n  private transformOption(option: any, props: ITransformOption): FormlySelectOption {\n    const group = props.groupProp(option);\n    if (Array.isArray(group)) {\n      return {\n        label: props.labelProp(option),\n        group: group.map((opt) => this.transformOption(opt, props)),\n      };\n    }\n\n    option = {\n      label: props.labelProp(option),\n      value: props.valueProp(option),\n      disabled: !!props.disabledProp(option),\n    };\n\n    if (group) {\n      return { label: group, group: [option] };\n    }\n\n    return option;\n  }\n\n  private transformSelectProps(field?: FormlyFieldConfig): ITransformOption {\n    const props = field?.props || field?.templateOptions || {};\n    const selectPropFn = (prop: any) => (typeof prop === 'function' ? prop : (o: any) => o[prop]);\n\n    return {\n      groupProp: selectPropFn(props.groupProp || 'group'),\n      labelProp: selectPropFn(props.labelProp || 'label'),\n      valueProp: selectPropFn(props.valueProp || 'value'),\n      disabledProp: selectPropFn(props.disabledProp || 'disabled'),\n    };\n  }\n\n  private dispose() {\n    if (this._options) {\n      this._options.complete();\n      this._options = null;\n    }\n\n    if (this._subscription) {\n      this._subscription.unsubscribe();\n      this._subscription = null;\n    }\n  }\n\n  private observableOf(options: any, f?: FormlyFieldConfig) {\n    this.dispose();\n    if (f && f.options && f.options.fieldChanges) {\n      this._subscription = f.options.fieldChanges\n        .pipe(\n          filter(({ property, type, field }) => {\n            return (\n              type === 'expressionChanges' &&\n              (property.indexOf('templateOptions.options') === 0 || property.indexOf('props.options') === 0) &&\n              field === f &&\n              Array.isArray(field.props.options) &&\n              !!this._options\n            );\n          }),\n          tap(() => this._options.next(f.props.options as any)),\n        )\n        .subscribe();\n    }\n\n    this._options = new BehaviorSubject(options);\n    return this._options.asObservable();\n  }\n}\n\n@Pipe({ name: 'formlySelectOptions', standalone: false })\nexport class LegacyFormlySelectOptionsPipe extends FormlySelectOptionsPipe implements PipeTransform, OnDestroy {}\n","import { NgModule } from '@angular/core';\nimport { LegacyFormlySelectOptionsPipe } from './select-options.pipe';\n\n@NgModule({\n  declarations: [LegacyFormlySelectOptionsPipe],\n  exports: [LegacyFormlySelectOptionsPipe],\n})\nexport class FormlySelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}