{"version":3,"file":"ng-stalk-multiple-input.mjs","sources":["../../components/multiple-input/ns-multiple-input-validators.ts","../../components/multiple-input/ns-multiple-input.component.ts","../../components/multiple-input/ns-multiple-input.component.html","../../components/multiple-input/ns-multiple-input.module.ts","../../components/multiple-input/public-api.ts","../../components/multiple-input/ng-stalk-multiple-input.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { FormControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NsMultipleInputFormModel } from './ns-multiple-input-form-model';\nimport { NsKeyValue } from './ns-key-value';\n\nexport class NsMultipleInputValidators {\n\n  public static preventDuplicateKey(formControl: FormGroup): NzSafeAny {\n    const formModel: NsMultipleInputFormModel = formControl.getRawValue();\n    const value = formModel.entries || [];\n\n    console.log(\"****** value:\", value);\n\n    // 모든 언어 set 이 채워져야 empty 가 아님\n    const keyCounts = (value || []).reduce((sum: object, current) => {\n      const key = current.key ? current.key : '@@_undefined_@@';\n      // @ts-ignore\n      sum[key] = sum[key] ? sum[key] + 1 : 1;\n      return sum;\n    }, {});\n    for (const keyProp in keyCounts) {\n      // @ts-ignore\n      if (keyCounts[keyProp] > 1) {\n        console.log(\"error: duplicate\");\n        return {\n          duplicateKey: true\n        };\n      }\n    }\n\n    return {};\n  }\n\n  public static allRequired(formControl: FormControl): NzSafeAny {\n    const value: NsKeyValue[] = formControl.value || [];\n\n    // 모든 언어 set 이 채워져야 empty 가 아님\n    const max = (value && value.length) || 0;\n    const inputCount = value.filter(i18nPair => i18nPair.value && i18nPair.value.trim() !== '').length;\n    if (inputCount < max) {\n      return {\n        allRequired: true\n      };\n    }\n    return {};\n  }\n\n  public static singleRequired(formControl: FormControl): NzSafeAny {\n    const value: NsKeyValue[] = formControl.value || [];\n\n    // 한개의 언어만이라도 채워지면 Empty 가 아님\n    if (value.filter(i18nPair => i18nPair.value && i18nPair.value.trim() !== '').length === 0) {\n      return {\n        singleRequired: true\n      };\n    }\n    return {};\n  }\n\n  public static minLength(minLength: number): ValidatorFn {\n    const func = (formControl: FormControl): ValidationErrors | null => {\n      const value: NsKeyValue[] = formControl.value || [];\n\n      // 모든 언어 set 이 채워져야 empty 가 아님\n      // @ts-ignore\n      const max = (value && value.length) || 0;\n      const lengthArray = value.map(i18nPair => (i18nPair.value ? i18nPair.value.length : 0));\n      let error = false;\n      for (const valueLength of lengthArray) {\n        if (valueLength < minLength) {\n          error = true;\n        }\n      }\n      if (error) {\n        return {\n          minLength: true\n        };\n      }\n      return {};\n    };\n    // @ts-ignore\n    return func;\n  }\n\n  /**\n   * @dynamic\n   */\n  public static maxLength(maxLength: number): ValidatorFn {\n    const func = (formControl: FormControl): ValidationErrors | null => {\n      const value: NsKeyValue[] = formControl.value || [];\n      // 모든 언어 set 이 채워져야 empty 가 아님\n      // @ts-ignore\n      const max = (value && value.length) || 0;\n\n      const lengthArray = value\n        .filter(i18nPair => i18nPair.value)\n        // @ts-ignore\n        .map(i18nPair => i18nPair.value.length);\n      let error = false;\n      for (const valueLength of lengthArray) {\n        if (valueLength > maxLength) {\n          error = true;\n        }\n      }\n      if (error) {\n        return {\n          maxLength: true\n        };\n      }\n      return {};\n    };\n    // @ts-ignore\n    return func;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit, TemplateRef,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormControl, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as _ from 'lodash';\nimport { MagFormField2 } from 'ng-stalk/core/model';\nimport { CodeAndName } from \"ng-stalk/core/types\";\nimport { MagUtil } from 'ng-stalk/core/util';\nimport { NzConfigService } from 'ng-zorro-antd/core/config';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { NsMultipleInputValidators } from './ns-multiple-input-validators';\nimport { NsKeyValue } from './ns-key-value';\nimport { NsMultipleInputFormModel } from './ns-multiple-input-form-model';\n\n@Component({\n  selector: 'ns-multiple-input',\n  templateUrl: './ns-multiple-input.component.html',\n  styleUrls: ['./ns-multiple-input.component.less'],\n  exportAs: 'nsMultipleInput',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NsMultipleInputComponent),\n      multi: true\n    }\n  ],\n  host: {\n    '(click)': 'hostClick($event)'\n  }\n})\nexport class NsMultipleInputComponent extends MagFormField2<NsKeyValue[]> implements ControlValueAccessor, OnInit, OnDestroy {\n  @Input('name') name?: string;\n\n  @Input('keys') keys?: string[] | CodeAndName[];\n\n  @Input('keysChanges') keysChanges?: Observable<string[] | CodeAndName[]>;\n\n  @Input('placeholder') placeholder = 'Required!';\n\n  @Input('allowSingleFilled') allowSingleFilled = false;\n\n  // @Input('name') requireAllLangs: string;\n\n  @Input('requiredAll') requiredAll = false;\n\n  @Input()\n  fieldType: 'text' | 'input' | 'textarea' | 'hidden' = 'text';\n\n  @Input()\n  icon = null;\n\n  @Input('showRemove') showRemove: boolean = false;\n\n  @Input('preventDuplicateKey') preventDuplicateKey: boolean = false;\n\n  @Input() nsValueContent?: string | TemplateRef<NzSafeAny>;\n\n  modelForm: FormGroup;\n\n  immutableKeys = false;\n  keyType: 'string' | 'select' = 'string';\n\n  constructor(\n    public override nzConfigService: NzConfigService,\n    protected override cdr: ChangeDetectorRef,\n    protected override focusMonitor: FocusMonitor,\n    // biz\n    protected fb: FormBuilder\n  ) {\n    super(nzConfigService, cdr, focusMonitor);\n    this.modelForm = this.createForm({\n      entries: []\n    }); // set empty\n  }\n\n  // 핵심 메서드 오버라이드\n  // @ts-ignore\n  hostClick(e: MouseEvent): void {\n    // e.preventDefault();\n    if (!this.nzDisabled && !this.nzLoading && !this.nzControl) {\n      // this.updateValue(!this.checked);\n    }\n  }\n\n  /**\n   * 외부로부터 값을 주입받는다.\n   * 이벤트를 발행하지 않고, 내부 값을 업데이트해야한다.\n   * @param value\n   */\n  override writeValue(value: NsKeyValue[]): void {\n    // 1. 내부 value 갑 업데이트 (필수)\n    this.value = value || [];\n    console.log(\"*** write value:\", value);\n    this.initForm(this.value, this.getAvailableKeys(this.value));\n\n    // 2. feature 로직 수행\n    this.modelForm.patchValue({\n      entries: this.value\n    });\n    //\n    // if (value instanceof RichFile) {\n    //   if (value.type === 'url') {\n    //     this.model.url = value.url;\n    //     if (value.url.startsWith('http:') || value.url.startsWith('https')) {\n    //       this.model.synchronizedStatus = FormFiledSynchronizedStatus.SYNCHRONIZED;\n    //     }\n    //   } else {\n    //     this.model.binary = value.binary;\n    //     this.model.synchronizedStatus = FormFiledSynchronizedStatus.SYNCHRONIZED;\n    //   }\n    // }\n\n    // 3. 변경 사항 알림 (필수)\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * 외부로 값을 출력하고, 내부 값을 갱신한다.\n   *\n   * 메소드 구현 주의사항: 내부 값 변경시에만 output 이벤트를 발행하고 ChangeDetector 를 트리거해야한다.\n   * @param value\n   */\n  protected override updateValue(value: NsKeyValue[]): void {\n    if (!_.isEqual(this.value, value)) {\n      this.value = value;\n      // this.draw();\n      this.onChange(this.value);\n\n      // 3. 변경 사항 알림 (필수)\n      this.cdr.markForCheck();\n    }\n  }\n\n  override ngOnDestroy(): void {\n    super.ngOnDestroy();\n  }\n\n  override ngOnInit(): void {\n    console.log(\"init value:\", this.value);\n\n    if (this.keys || this.keysChanges) {\n      // 외부 키 주입인경우, 키 변경을 제한한다.\n      this.immutableKeys = true;\n      if (this.keys!.length > 0) {\n        if (typeof this.keys![0] === 'object') {\n          this.keyType = 'select';\n        }\n      }\n    }\n    if (this.keys && !this.keysChanges) {\n      this.keysChanges = new BehaviorSubject(this.keys);\n      if (this.keys!.length > 0) {\n        if (typeof this.keys![0] === 'object') {\n          this.keyType = 'select';\n        }\n      }\n    }\n\n    super.ngOnInit();\n\n    this.keys = this.getAvailableKeys(this.value);\n\n    console.log('******* init. value:', this.value, \", keys:\", this.keys, \"immutable:\", this.immutableKeys);\n\n    this.initForm(this.value || [], this.keys || []);\n\n    // TODO 필수 기능은 나중에\n\n    // if (this.requiredAll) {\n    //   this.allowSingleFilled = false;\n    //   this.ngControl.control.setValidators([this.validate.bind(this)]);\n    // }\n\n    // @ts-ignore\n    // @ts-ignore\n    if (this.immutableKeys && this.keysChanges && typeof this.keysChanges.subscribe === 'function') {\n      // // langs 입력이 옵저버인 경우\n      // let langObs = this.langs as Observable<string[]>\n      // langObs.forEach(next => {\n      //   console.error(\"OK NEXT:\", next);\n      // })\n      // langsChanges.pipe(take(1))\n      //   .subscribe((initLangs: string[]) => {\n      //       // 최초 그리기\n      //     console.error(\"*************** labOgs.initLangs:\", initLangs)\n      //       this.initForm(this._value, initLangs);\n\n      // 이후 lang 변화에 대한 대응 적용\n      this.keysChanges.pipe(takeUntil(this._unsubscribeAll)).subscribe((newLangs: string[] | CodeAndName[]) => {\n        this.keys = newLangs;\n        this.fitControls(newLangs);\n      });\n    }\n    // });\n    // } else {\n    // langs 입력을 파라미터로 직접 받은 경우\n\n    // TODO mag 글로벌 언어 사용 설정 지원\n    // }\n  }\n\n  private getAvailableKeys(value: NsKeyValue[]): string[] {\n    if (!this.immutableKeys && value) {\n      // 외부 키 주입이 아닌 경우, value 값으로 값을 갱신한다.\n      // @ts-ignore\n      return value.map(keyValue => keyValue.key)\n        .filter(key => key);\n    } else {\n      if (this.keyType === 'string') {\n        return this.keys as string[];\n      } else {\n        return (this.keys as CodeAndName[]).map(\n          key => key.code\n        );\n      }\n    }\n  }\n\n  initForm(value: NsKeyValue[], langs: string[]): void {\n    const formModel: NsMultipleInputFormModel = {\n      entries: []\n    };\n    // if (this._value) {\n    //   formModel.entries = this._value;\n    // } else {\n    //   formModel.entries = [];\n    // }\n    formModel.entries = value;\n\n    this.fillFromInitLangs(formModel.entries, langs);\n\n    this.modelForm = this.createForm(formModel);\n\n    this.modelForm.valueChanges.pipe(takeUntil(this._unsubscribeAll)).subscribe(() => {\n      const updatedValues: NsMultipleInputFormModel = this.modelForm.getRawValue();\n      if (updatedValues.entries) {\n        this.updateValue(updatedValues.entries);\n        // this.value = updatedValues.entries;\n      }\n    });\n\n    this.stateChanges\n      .pipe(takeUntil(this._unsubscribeAll))\n      // @ts-ignores\n      .subscribe(item => {\n        if (this.nzDisabled) {\n          MagUtil.disableFields(this.modelForm, ['entries']);\n        } else {\n          MagUtil.enableFields(this.modelForm, ['entries']);\n        }\n      });\n    //\n    // if (this.ngControl.disabled) {\n    //   MagUtil.disableFields(this.modelForm, ['entries']);\n    // } else {\n    //   MagUtil.enableFields(this.modelForm, ['entries']);\n    // }\n  }\n\n  createForm(formModel: NsMultipleInputFormModel): FormGroup {\n    if (!formModel.entries) {\n      formModel.entries = [];\n    }\n    return this.fb.group({\n      entries: this.fb.array([...formModel.entries.map(i18nElement => this.makeI18nFormControl(i18nElement))])\n    }, {\n      validators: this.preventDuplicateKey ? [NsMultipleInputValidators.preventDuplicateKey] : []\n    });\n  }\n\n  fitControls(keys: string[] | CodeAndName[]): void {\n    const stringKeys: string[] = [];\n    for (const key of keys) {\n      if (typeof key === 'string' ) {\n        stringKeys.push(key);\n      } else {\n        if (!key.code) {\n          console.error('invalid key type: ', key);\n          continue;\n        }\n        stringKeys.push((key as CodeAndName).code);\n      }\n    }\n    const value: NsMultipleInputFormModel = this.modelForm.getRawValue();\n\n    // 언어별 제목 필드를 기준으로 변경 여부를 체크한다.\n    // @ts-ignore\n    const currentLangs: string[] = value.entries.map(i18nElement => i18nElement.key)\n      .filter(key => key);\n\n    const addIds = _.difference(stringKeys, currentLangs);\n    const removeIds = _.difference(currentLangs, stringKeys);\n\n    // @ts-ignore\n    // console.log(\"*** this.modelForm.controls['entries'].controls:, \", this.modelForm.controls['entries'].controls);\n    // console.log(\"**addIds:\", addIds, \"removeIds:\", removeIds, \"currentLangs:\", currentLangs);\n    for (const lang of addIds) {\n      // @ts-ignore\n      this.modelForm.controls.entries.controls.push(\n        this.makeI18nFormControl({\n          key: lang\n        })\n      )\n    }\n\n    const removeIndex: number[] = removeIds.map(lang => currentLangs.indexOf(lang)).sort((a, b) => b - a);\n    // @ts-ignore\n    for (const index of removeIndex) {\n      // @ts-ignore\n      this.modelForm.controls.entries.removeAt(removeIndex);\n    }\n\n    this.cdr.markForCheck();\n  }\n\n  // @ts-ignore\n  detectValueChange(i: number): void {\n    const updatedValues: NsMultipleInputFormModel = this.modelForm.getRawValue();\n    if (updatedValues.entries) {\n      // this.value = updatedValues.entries;\n      this.updateValue(updatedValues.entries);\n    }\n  }\n\n  /**\n   * 언어별 폼 필드에 언어 정보가 없을 경우 빈 value 로 채워넣는다.\n   */\n  fillFromInitLangs(control: NsKeyValue[], languageCodes: string[]): void {\n    console.log(\"*** control:\", control, \" languages:\", languageCodes);\n    if (languageCodes) {\n      for (let i = 0; i < languageCodes.length; i++) {\n        const lang = languageCodes[i];\n        if (_.findIndex(control, item => item.key === lang) < 0) {\n          const newI18n: NsKeyValue = {\n            key: lang\n          }\n          control.splice(i, 0, newI18n);\n        }\n      }\n    }\n  }\n\n  // --------------------------------------------------------------------------\n  // form field feature linkage methods\n  // --------------------------------------------------------------------------\n\n  isEmpty(): boolean {\n    if (!this.value) {\n      return true;\n    }\n\n    if (!this.modelForm) {\n      return false;\n    }\n\n    const value: NsMultipleInputFormModel = this.modelForm.getRawValue();\n    if (this.allowSingleFilled) {\n      // 한개의 언어만이라도 채워지면 Empty 가 아님\n      if (value.entries.filter(i18nPair => i18nPair.value && i18nPair.value.trim() !== '').length > 0) {\n        return false;\n      }\n    } else {\n      // 모든 언어 set 이 채워져야 empty 가 아님\n      const max = value.entries.length;\n      if (value.entries.filter(i18nPair => i18nPair.value && i18nPair.value.trim() !== '').length === max) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  // @ts-ignore\n  validate({value}: FormControl): NzSafeAny {\n    if (this.isEmpty()) {\n      return {\n        required: true\n      };\n    } else {\n      return {};\n    }\n    // return {\n    //   invalid: true,\n    //   required: true\n    // }\n    // const isNotValid = this.answer !== Number(value);\n    // return isNotValid && {\n    //   invalid: true,\n    //   required: true\n    // }\n  }\n\n  // i18n\n\n  makeI18nFormControl(item: NsKeyValue): FormGroup {\n    const formGroup = this.fb.group({\n      key: [\n        {\n          value: item.key,\n          disabled: false\n        }\n      ],\n      value:  [\n        {\n          value: item.value,\n          disabled: item.valueDisabled ? true : false\n        }\n      ],\n      keyPlaceholder: item.keyPlaceholder,\n      valuePlaceholder: item.valuePlaceholder,\n    });\n    if (item.keyDisabled) {\n      // key 가 select 유형일 때, disabled 된 상태로 폼이 초기화될 경우 value 값이 설정이 안되는 문제가 있다.\n      // 따라서, disabled=false 인 상태로 폼을 시작한 후, 1ms 이후 다시 교정하도록 한다.\n      setTimeout(() => {\n        MagUtil.disableFields(formGroup, ['key']);\n      }, 1)\n    }\n\n    return formGroup;\n  }\n\n  get i18nControls(): FormControl[] {\n    // @ts-ignore\n    return this.modelForm.controls.entries.controls as FormControl[];\n  }\n\n  removeI18nControlAt(index: number): void {\n    // @ts-ignore\n    this.modelForm.controls.entries.removeAt(index);\n  }\n\n  valueOfEntries(index: number): FormControl {\n    // @ts-ignore\n    return (this.modelForm.controls.entries.controls as FormControl[])[index];\n  }\n}\n","<form nz-form [formGroup]=\"modelForm\">\n<!--    <nz-descriptions nzTitle=\"기본정보\">-->\n    <!--      <nz-descriptions-item nzTitle=\"id\">{{ model.id }}</nz-descriptions-item>-->\n    <!--      <nz-descriptions-item nzTitle=\"name\">{{ model.name }}</nz-descriptions-item>-->\n<!--    </nz-descriptions>-->\n  <div formGroupName=\"entries\">\n    <nz-form-item *ngFor=\"let i18nControl of i18nControls; let i = index;\" [formArrayName]=\"i\">\n      <nz-space>\n        <div *nzSpaceItem>\n          <nz-form-control [nzErrorTip]=\"keyErrorTpl\">\n            <input nz-input formControlName=\"key\"\n                   [placeholder]=\"i18nControl.value.keyPlaceholder ? i18nControl.value.keyPlaceholder : ''\"\n                   (ngModelChange)=\"detectValueChange(i)\"\n                   *ngIf=\"keyType === 'string'\">\n            <nz-select formControlName=\"key\" *ngIf=\"keyType === 'select'\" (ngModelChange)=\"detectValueChange(i)\">\n              <nz-option [nzValue]=\"codeName.code\" [nzLabel]=\"codeName.name\" *ngFor=\"let codeName of $any(keys)\"></nz-option>\n            </nz-select>\n<!--            valid: {{ modelForm.valid }}-->\n            <!--          <ng-container *ngIf=\"control.hasError('duplicated')\">-->\n            <!--            The file name is redundant!-->\n            <!--          </ng-container>-->\n            <ng-template #keyErrorTpl let-control>\n              {{ control.errors | json }}\n              <ng-container *ngIf=\"control.hasError('duplicate')\">\n                duplicate ...\n              </ng-container>\n            </ng-template>\n          </nz-form-control>\n        </div>\n        <nz-form-control *nzSpaceItem nzHasFeedback nzValidatingTip=\"Validating...\" [nzErrorTip]=\"i18nEditFieldErrorTpl\">\n          <input nz-input formControlName=\"value\" [placeholder]=\"i18nControl.value.valuePlaceholder ? i18nControl.value.valuePlaceholder : ''\" (ngModelChange)=\"detectValueChange(i)\"\n\n                 *ngIf=\"fieldType === 'input' || fieldType === 'text' \" />\n          <textarea nz-input formControlName=\"value\" [placeholder]=\"i18nControl.value.valuePlaceholder ? i18nControl.value.valuePlaceholder : ''\" (ngModelChange)=\"detectValueChange(i)\"\n\n                    *ngIf=\"fieldType === 'textarea'\" ></textarea>\n          <input type=\"hidden\" nz-input formControlName=\"value\" (ngModelChange)=\"detectValueChange(i)\"\n                    *ngIf=\"fieldType === 'hidden'\" />\n\n          <div *ngIf=\"nsValueContent\">\n            <ng-container *nzStringTemplateOutlet=\"nsValueContent; context: {control: i18nControl};\">{{ nsValueContent }}</ng-container>\n          </div>\n\n          <ng-template #i18nEditFieldErrorTpl let-control>\n            <ng-container *ngIf=\"control.hasError('required')\">\n              {{ placeholder }}\n            </ng-container>\n\n          </ng-template>\n        </nz-form-control>\n        <div *nzSpaceItem>\n          <button nz-button nzShape=\"circle\" (click)=\"removeI18nControlAt(i)\" *ngIf=\"showRemove\">\n            <i nz-icon nzType=\"delete\" nzTheme=\"outline\"></i>\n          </button>\n        </div>\n      </nz-space>\n    </nz-form-item>\n  </div>\n</form>\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MagPipeModule } from 'ng-stalk/core/pipe';\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\nimport { NzOutletModule } from \"ng-zorro-antd/core/outlet\";\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzSelectModule } from \"ng-zorro-antd/select\";\nimport { NzSpaceModule } from 'ng-zorro-antd/space';\nimport { NsMultipleInputComponent } from './ns-multiple-input.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    NzButtonModule,\n    NzFormModule,\n    NzIconModule,\n    NzInputModule,\n    NzOutletModule,\n    NzSelectModule,\n    NzSpaceModule,\n    MagPipeModule\n  ],\n  declarations: [NsMultipleInputComponent],\n  exports: [NsMultipleInputComponent]\n})\nexport class NsMultipleInputModule {\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './ns-multiple-input.component';\nexport * from './ns-multiple-input.module';\nexport * from './ns-multiple-input-validators';\nexport * from './ns-multiple-input-form-model';\nexport * from './ns-key-value';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}