{"version":3,"file":"pv-frontend-pv-shared-components-amount-quantity-input.mjs","sources":["../../../projects/pv-shared-components/amount-quantity-input/amount-quantity-input.component.ts","../../../projects/pv-shared-components/amount-quantity-input/amount-quantity-input.component.html","../../../projects/pv-shared-components/amount-quantity-input/amount-quantity-input.module.ts","../../../projects/pv-shared-components/amount-quantity-input/amount-quantity-input.types.ts","../../../projects/pv-shared-components/amount-quantity-input/pv-frontend-pv-shared-components-amount-quantity-input.ts"],"sourcesContent":["import { CurrencyPipe } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy } from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormArray,\n  FormBuilder,\n  FormControl,\n  FormGroup,\n  NG_VALUE_ACCESSOR,\n  Validators,\n} from '@angular/forms';\nimport { OverrideStyleConfig } from '@pv-frontend/pv-shared-components/common/types';\nimport { IncrementDecrementStyleOverride } from '@pv-frontend/pv-shared-components/increment-decrement-button';\nimport { TypedSimpleChanges } from '@pv-frontend/pv-shared-services/common';\nimport { Subject, Subscription, distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport {\n  AmountType,\n  Denomination,\n  DenominationAmountInputOutput,\n} from './amount-quantity-input.types';\n\nexport interface DenominationFormControl {\n  denomination: FormControl<number | null>;\n  quantity: FormControl<number | null>;\n  allowedQuantity: FormControl<number | null>;\n}\n\nexport interface AmountQuantityInputStyleOverrideConfig {\n  incrementDecrement?: IncrementDecrementStyleOverride;\n  addMoreButton?: OverrideStyleConfig;\n}\n\n@Component({\n  selector: 'pv-amount-quantity-input',\n  templateUrl: './amount-quantity-input.component.html',\n  styleUrls: ['./amount-quantity-input.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: AmountQuantityInputComponent,\n      multi: true,\n    },\n    CurrencyPipe,\n  ],\n})\nexport class AmountQuantityInputComponent\n  implements OnDestroy, ControlValueAccessor, OnChanges\n{\n  public constructor(private fb: FormBuilder) {}\n  public ngOnChanges(changes: TypedSimpleChanges<this>): void {\n    if (changes.minPriceAllowed && changes.maxPriceAllowed) {\n      this.defaultValueRangeErrorMessage = `You can buy a gift card between\n      ${changes.minPriceAllowed.currentValue} - ${changes.maxPriceAllowed.currentValue}. Please add another voucher or select a value within this range`;\n    }\n  }\n\n  public DEFAULT_MAX_ALLOWED_QUANTITY_PER_DENOMINATION = 4;\n  private destroy$ = new Subject();\n  public defaultValueRangeErrorMessage: string = '';\n\n  public _denominations: Denomination[] = [];\n\n  private DEFAULT_AMOUNT_QUANTITY_STYLE: AmountQuantityInputStyleOverrideConfig =\n    {\n      incrementDecrement: {\n        container: {\n          border: 'none',\n        },\n      },\n    };\n  public _style: AmountQuantityInputStyleOverrideConfig =\n    this.DEFAULT_AMOUNT_QUANTITY_STYLE;\n  public _currentUsedDenominations: Set<number | string> = new Set();\n\n  /** needed for range types */\n  public denominationExistsErrorIndex: Set<number> = new Set();\n  public denominationOutOfRange: Set<number> = new Set();\n\n  /** control value accessor stuff */\n  public onChange?: (value: DenominationAmountInputOutput) => void;\n  public onTouched?: () => void;\n\n  /** needed for slab type */\n  public chipsToShow: Denomination[] = [];\n\n  public subscriptionMap: Record<string, Subscription> = {};\n  public _inputs = this.createFormArrayForSlabType();\n\n  @Input()\n  public set style(\n    newStyle: AmountQuantityInputStyleOverrideConfig | undefined\n  ) {\n    if (newStyle) {\n      this._style = newStyle;\n    } else {\n      this._style = this.DEFAULT_AMOUNT_QUANTITY_STYLE;\n    }\n  }\n\n  public get style(): AmountQuantityInputStyleOverrideConfig | undefined {\n    return this._style;\n  }\n\n  @Input()\n  public type: AmountType = 'slab';\n\n  @Input()\n  public minPriceAllowed: number = 0;\n\n  @Input()\n  public maxPriceAllowed: number = 0;\n\n  @Input()\n  public maximumOrderValueAllowed?: number | null = null;\n\n  @Input()\n  public addMoreLabel: string = '+ Add more voucher';\n\n  @Input()\n  public maxAllowedUniqueDenominations: number = 5;\n\n  /**\n   * This is only read for range types, for slab types, please pass value in denomination\n   */\n  @Input()\n  public maxAllowedQuantityPerDenomination: number =\n    this.DEFAULT_MAX_ALLOWED_QUANTITY_PER_DENOMINATION;\n\n  @Input()\n  public valueOutOfRangeErrorMessage?: string = '';\n\n  @Input()\n  public denominationAlreadyExistsErrorMessage?: string =\n    'Denomination already exists, please delete/update this denomination';\n\n  @Input()\n  public set denominations(denoms: Denomination[]) {\n    this.setupDenominationsAndInputs(denoms);\n  }\n\n  private setupDenominationsAndInputs(denoms: Denomination[]): void {\n    this._denominations = denoms;\n    this.clearSubscriptions();\n    this._inputs =\n      this.type === 'slab'\n        ? this.createFormArrayForSlabType()\n        : this.createFormArrayForRangeType();\n  }\n\n  public ngOnDestroy(): void {\n    this.destroy$.next(null);\n    this.destroy$.complete();\n    this.clearSubscriptions();\n  }\n\n  public writeValue(obj: DenominationAmountInputOutput): void {\n    if (this.type === 'slab' && obj.denominations.length > 0) {\n      this.setupDenominationsAndInputs(obj.denominations);\n    } else if (this.type === 'range' && this._inputs.length === 0) {\n      this.setupDenominationsAndInputs(obj.denominations);\n    }\n    this.#updateWiredValue();\n  }\n\n  public registerOnChange(\n    fn: (value: DenominationAmountInputOutput) => void\n  ): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  public setDisabledState?(isDisabled: boolean): void {\n    isDisabled ? this._inputs.disable() : this._inputs.enable();\n  }\n\n  #updateWiredValue(): void {\n    setTimeout(() => {\n      this.onChange?.({\n        /**\n         * `getRawValue()` also sends disabled and invalid form controls, which `.value` doesn't\n         * we filter through all form controls except empty ones\n         * this is needed so the total amount can be deduced and discount accordingly applied (if present)\n         */\n        denominations: this._inputs\n          .getRawValue()\n          .filter(\n            (denom) =>\n              denom.denomination !== null && denom.denomination !== undefined\n          ),\n        isInvalid:\n          this.type === 'range'\n            ? this.denominationOutOfRange.size > 0 ||\n              this.denominationExistsErrorIndex.size > 0\n            : false,\n      });\n    });\n  }\n\n  public handleInput(event: Event, index: number): void {\n    const val = +(event.target as HTMLInputElement).value;\n\n    // handle the denomination out of range error handling\n    if (val < this.minPriceAllowed || val > this.maxPriceAllowed) {\n      this.denominationOutOfRange.add(index);\n      this.denominationExistsErrorIndex.delete(index);\n      this.disableInputsExceptPassedIndex(index);\n    } else {\n      this.denominationOutOfRange.delete(index);\n    }\n\n    if (val === 0) {\n      this.disableInputsExceptPassedIndex(index);\n    } else {\n      if (!this.denominationOutOfRange.has(index)) {\n        this._inputs.enable();\n      }\n    }\n\n    const isControlDisabled = this._inputs.controls.some(\n      (control) => control.disabled\n    );\n\n    if (!isControlDisabled) {\n      this._currentUsedDenominations.clear();\n      this._inputs.value.forEach((entry, entryIndex) => {\n        if (\n          entry.denomination !== null &&\n          entry.denomination !== undefined &&\n          entryIndex !== index\n        ) {\n          this._currentUsedDenominations.add(entry.denomination);\n        }\n      });\n\n      if (this._currentUsedDenominations.has(val)) {\n        this.disableInputsExceptPassedIndex(index);\n        this.denominationExistsErrorIndex.add(index);\n      } else {\n        this.denominationExistsErrorIndex.delete(index);\n\n        if (!this.denominationOutOfRange.has(index)) {\n          this._inputs.enable();\n        }\n      }\n    }\n\n    this.clearSubscriptions();\n    this._inputs.controls.map((control) => {\n      this.addFormGroupQuantitySubscription(\n        control.value.denomination ?? null,\n        control\n      );\n    });\n    this.#updateWiredValue();\n  }\n\n  private disableInputsExceptPassedIndex(indexToBeKeptEnabled: number): void {\n    this._inputs.controls.forEach((control, index) => {\n      if (index !== indexToBeKeptEnabled) {\n        control.disable();\n      }\n    });\n  }\n\n  public handleKeyDown(event: KeyboardEvent): void {\n    if (\n      ['Tab', 'Backspace', 'Delete', 'ArrowLeft', 'ArrowRight'].includes(\n        event.key\n      )\n    ) {\n      return;\n    }\n\n    if (event.key === 'v' && event.metaKey) {\n      event.preventDefault();\n      return;\n    }\n\n    const isDigit = /\\d/.test(event.key);\n\n    if (!isDigit || parseInt((event.target as HTMLInputElement).value) === 0) {\n      event.preventDefault();\n      return;\n    }\n  }\n\n  public handleDenominationChange(value: Denomination): void {\n    const oldDenominationControl = this._inputs.at(\n      this._inputs.length - 1\n    ).controls;\n\n    const newDenomination = this._denominations.find(\n      (denom) => denom.denomination === value.denomination\n    );\n\n    if (\n      newDenomination &&\n      newDenomination.denomination !== null &&\n      newDenomination.denomination !== undefined\n    ) {\n      this.handleFormGroupQuantitySubscriptionRemoval(\n        oldDenominationControl.denomination?.value\n      );\n\n      this._inputs.removeAt(this._inputs.length - 1);\n\n      this._currentUsedDenominations.add(newDenomination.denomination);\n      if (oldDenominationControl.denomination.value !== null) {\n        this._currentUsedDenominations.delete(\n          oldDenominationControl.denomination.value\n        );\n      }\n\n      this.addFormGroupToFormArray(\n        newDenomination.denomination,\n        oldDenominationControl.quantity.value,\n        newDenomination.allowedQuantity\n      );\n    }\n\n    this.updateChipsToShow();\n    this.#updateWiredValue();\n  }\n\n  public handleNewEntryAddition(): void {\n    if (this.type === 'slab' && this.chipsToShow.length > 0) {\n      const { denomination, allowedQuantity } = this.chipsToShow[0];\n      if (denomination !== undefined && denomination !== null) {\n        this.addFormGroupToFormArray(denomination, 1, allowedQuantity);\n        this._currentUsedDenominations.add(denomination);\n      }\n\n      this.updateChipsToShow();\n      this.#updateWiredValue();\n    } else if (this.type === 'range') {\n      const DEFAULT_NEW_RANGE_DENOM = null;\n\n      if (DEFAULT_NEW_RANGE_DENOM !== null) {\n        if (this._currentUsedDenominations.has(DEFAULT_NEW_RANGE_DENOM)) {\n          this.denominationExistsErrorIndex.add(\n            this._currentUsedDenominations.size\n          );\n        }\n\n        if (\n          DEFAULT_NEW_RANGE_DENOM < this.minPriceAllowed ||\n          DEFAULT_NEW_RANGE_DENOM > this.maxPriceAllowed\n        ) {\n          this.denominationOutOfRange.add(this._inputs.length);\n        }\n        this._currentUsedDenominations.add(DEFAULT_NEW_RANGE_DENOM);\n      } else {\n        this.denominationOutOfRange.add(this._inputs.length);\n      }\n\n      this.addFormGroupToFormArray(\n        DEFAULT_NEW_RANGE_DENOM,\n        1,\n        this.maxAllowedQuantityPerDenomination\n      );\n      this._inputs.disable();\n      this._inputs.at(this._inputs.length - 1).enable();\n    } else {\n      console.error(\n        'All denominations already set, this shouldn\"t have occured.'\n      );\n    }\n  }\n\n  public handleQuantityValueChanges(\n    quantity: number | null,\n    denomination: number | null\n  ): void {\n    if (quantity === 0) {\n      const indexToDelete = this._inputs.controls.findIndex(\n        (control) =>\n          control.value.denomination === denomination && control.enabled\n      );\n\n      if (indexToDelete >= 0) {\n        this._inputs.removeAt(indexToDelete);\n        if (denomination !== null) {\n          this._currentUsedDenominations.delete(denomination);\n        }\n        this.denominationOutOfRange.delete(indexToDelete);\n        this.denominationExistsErrorIndex.delete(indexToDelete);\n        this.handleFormGroupQuantitySubscriptionRemoval(denomination);\n      }\n\n      if (this.type === 'slab') {\n        this.updateChipsToShow();\n        this.#updateWiredValue();\n      }\n      if (this.type === 'range') {\n        this._inputs.enable();\n      }\n    }\n    this.#updateWiredValue();\n  }\n\n  private updateChipsToShow(): void {\n    this.chipsToShow = this._denominations.filter(\n      ({ denomination }) =>\n        denomination !== null &&\n        denomination !== undefined &&\n        !this._currentUsedDenominations.has(denomination)\n    );\n  }\n\n  private createFormArrayForSlabType(): FormArray<\n    FormGroup<DenominationFormControl>\n  > {\n    const controls = this._denominations\n      .filter(\n        (denom) =>\n          denom.quantity &&\n          denom.quantity > 0 &&\n          denom.denomination !== null &&\n          denom.denomination !== undefined\n      )\n      .map((denom) => {\n        const { denomination, quantity, allowedQuantity } = denom as {\n          denomination: number;\n          quantity: number;\n          allowedQuantity?: number | null;\n        };\n        this._currentUsedDenominations.add(denomination);\n        const formGroup: FormGroup<DenominationFormControl> =\n          this.createFormGroup(denomination, quantity, allowedQuantity);\n        this.addFormGroupQuantitySubscription(denomination, formGroup);\n        return formGroup;\n      });\n\n    // in beginning when nothing is selected\n    if (\n      this.type === 'slab' &&\n      controls.length === 0 &&\n      this._denominations.length !== 0\n    ) {\n      const { denomination, quantity, allowedQuantity } = this\n        ._denominations[0] as {\n        denomination: number;\n        quantity?: number | null;\n        allowedQuantity?: number | null;\n      };\n      const formGroup: FormGroup<DenominationFormControl> =\n        this.createFormGroup(\n          denomination ?? null,\n          quantity || 1,\n          allowedQuantity\n        );\n      this.addFormGroupQuantitySubscription(denomination ?? null, formGroup);\n\n      this._currentUsedDenominations.add(denomination);\n      this.updateChipsToShow();\n\n      return new FormArray([formGroup]);\n    }\n\n    this.updateChipsToShow();\n\n    return new FormArray(controls);\n  }\n\n  private createFormArrayForRangeType(): FormArray<\n    FormGroup<DenominationFormControl>\n  > {\n    const formArray = new FormArray<FormGroup<DenominationFormControl>>([]);\n\n    if (this._denominations.length) {\n      this._denominations\n        .filter(\n          (denom) =>\n            denom.quantity &&\n            denom.quantity > 0 &&\n            denom.denomination !== null &&\n            denom.denomination !== undefined\n        )\n        .map((denom) => {\n          const { denomination, quantity, allowedQuantity } = denom as {\n            denomination: number;\n            quantity: number;\n            allowedQuantity?: number | null;\n          };\n          this._currentUsedDenominations.add(denomination);\n          const formGroup: FormGroup<DenominationFormControl> =\n            this.createFormGroup(denomination, quantity, allowedQuantity);\n          this.addFormGroupQuantitySubscription(denomination, formGroup);\n          formArray.push(formGroup);\n        });\n      this.updateChipsToShow();\n      this.#updateWiredValue();\n    } else {\n      const formGroup = this.createFormGroup(\n        null,\n        1,\n        this.maxAllowedQuantityPerDenomination\n      );\n      formArray.push(formGroup);\n      this.denominationOutOfRange.add(0);\n      this.updateChipsToShow();\n    }\n\n    return formArray;\n  }\n\n  private addFormGroupToFormArray(\n    denomination: number | null,\n    quantity: number | null | undefined,\n    allowedQuantity: number | null | undefined\n  ): void {\n    const fgroup: FormGroup<DenominationFormControl> = this.createFormGroup(\n      denomination,\n      quantity ?? null,\n      allowedQuantity ?? this.maxAllowedQuantityPerDenomination\n    );\n\n    this.addFormGroupQuantitySubscription(denomination, fgroup);\n\n    this._inputs.push(fgroup);\n    this.#updateWiredValue();\n  }\n\n  private createFormGroup(\n    denomination: number | null,\n    quantity: number | null | undefined,\n    allowedQuantity: number | null | undefined\n  ): FormGroup<DenominationFormControl> {\n    return this.fb.group<DenominationFormControl>({\n      denomination: this.fb.nonNullable.control(denomination),\n      quantity: this.fb.nonNullable.control(\n        {\n          value: denomination === 0 ? 0 : quantity ?? null,\n          disabled: false,\n        },\n        { validators: [Validators.required] }\n      ),\n      allowedQuantity: this.fb.nonNullable.control(\n        allowedQuantity ?? this.maxAllowedQuantityPerDenomination\n      ),\n    });\n  }\n\n  private addFormGroupQuantitySubscription(\n    denomination: number | null,\n    formGroup: FormGroup<DenominationFormControl>\n  ): void {\n    this.subscriptionMap[denomination === null ? 'null' : denomination] =\n      formGroup.controls.quantity.valueChanges\n        .pipe(distinctUntilChanged(), takeUntil(this.destroy$))\n        .subscribe((quantity) =>\n          this.handleQuantityValueChanges(quantity, denomination)\n        );\n  }\n\n  private handleFormGroupQuantitySubscriptionRemoval(\n    denomination: number | null\n  ): void {\n    if (denomination !== null) {\n      this.subscriptionMap[denomination]?.unsubscribe();\n      delete this.subscriptionMap[denomination];\n    }\n  }\n\n  private clearSubscriptions(): void {\n    Object.values(this.subscriptionMap).forEach((sub) => sub?.unsubscribe());\n    this.subscriptionMap = {};\n  }\n}\n","<div class=\"pv-amount-quantity-input-container flex flex-column\">\n  <ng-container *ngFor=\"let _entry of this._inputs.controls; let i = index\">\n    <div\n      class=\"pv-amount-quantity-container align-items-center my-2 bg-transparent\"\n      [class.error-present]=\"\n        (this.denominationExistsErrorIndex.has(i) ||\n          this.denominationOutOfRange.has(i)) &&\n        (!_entry.controls.denomination.pristine ||\n          _entry.controls.denomination.touched)\n      \"\n      [formGroup]=\"_entry\"\n      *ngIf=\"\n        (_entry.value.quantity ?? 0) > 0 ||\n        _entry.value.denomination === 0 ||\n        _entry.value.denomination === null ||\n        this._inputs.length === 1\n      \">\n      <span\n        *ngIf=\"this.type === 'slab'\"\n        class=\"pv-amount-quantity-denom-display pv-border-solid text-base font-bold px-5 border-round-3xl\">\n        {{ _entry.value.denomination | currency : 'INR' : 'symbol' : '2.0-0' }}\n      </span>\n      <input\n        type=\"number\"\n        inputmode=\"numeric\"\n        pattern=\"[0-9]\"\n        step=\"1\"\n        [formControl]=\"_entry.controls.denomination\"\n        (input)=\"this.handleInput($event, i)\"\n        (keydown)=\"this.handleKeyDown($event)\"\n        class=\"pv-amount-quantity-input pv-border-solid pl-2 text-base surface-text-normal-low-contrast font-bold border-round-3xl w-full\"\n        placeholder=\"Enter amount\"\n        *ngIf=\"this.type === 'range'\" />\n\n      <span\n        class=\"amount-quantity-divider flex relative align-self-stretch\"></span>\n      <span class=\"amount-quantity-edges relative h-full\"></span>\n      <div\n        class=\"pv-amount-quantity-counter pv-border-solid border-round-3xl flex justify-content-center\">\n        <pv-increment-decrement-button\n          class=\"pv-amount-quantity-inc-dec-button\"\n          [minAllowedValue]=\"this._inputs.length === 1 ? 1 : 0\"\n          [maxAllowedValue]=\"\n            _entry.value.allowedQuantity ??\n            DEFAULT_MAX_ALLOWED_QUANTITY_PER_DENOMINATION\n          \"\n          [style]=\"this.style?.incrementDecrement\"\n          [formControl]=\"\n            _entry.controls.quantity\n          \"></pv-increment-decrement-button>\n      </div>\n    </div>\n\n    <span\n      class=\"pv-amount-quantity-container-error mt-1 mb-1 feedback-text-negative text-sm\"\n      *ngIf=\"\n        this.type === 'range' &&\n        _entry.value.denomination !== undefined &&\n        (_entry.value.denomination === null ||\n          _entry.value.denomination < this.minPriceAllowed ||\n          _entry.value.denomination > this.maxPriceAllowed) &&\n        (!_entry.controls?.denomination?.pristine ||\n          _entry.controls?.denomination?.touched)\n      \">\n      {{\n        this.valueOutOfRangeErrorMessage || this.defaultValueRangeErrorMessage\n      }}\n    </span>\n\n    <span\n      class=\"pv-amount-quantity-container-error mt-1 mb-1 feedback-text-negative text-sm\"\n      *ngIf=\"this.type === 'range' && this.denominationExistsErrorIndex.has(i)\">\n      {{ this.denominationAlreadyExistsErrorMessage }}\n    </span>\n  </ng-container>\n\n  <div class=\"flex flex-row gap-1 flex-wrap mt-1\" *ngIf=\"this.type === 'slab'\">\n    <ng-container *ngFor=\"let denom of this.chipsToShow\">\n      <pv-chip\n        [label]=\"\n          (denom.denomination?.toString()\n            | currency : 'INR' : 'symbol' : '2.0-0') ?? ''\n        \"\n        variant=\"outlined\"\n        [isClickable]=\"true\"\n        [metaInformation]=\"denom\"\n        (clickEmitter)=\"this.handleDenominationChange($event)\"\n        size=\"small\"></pv-chip>\n    </ng-container>\n  </div>\n  <pv-button\n    *ngIf=\"\n      (this.chipsToShow.length > 0 || this.type === 'range') &&\n      this._inputs.controls.length < this.maxAllowedUniqueDenominations\n    \"\n    variant=\"text\"\n    [isDisabled]=\"\n      this.denominationExistsErrorIndex.size > 0 ||\n      this.denominationOutOfRange.size > 0\n    \"\n    [label]=\"this.addMoreLabel\"\n    [style]=\"this.style?.addMoreButton\"\n    class=\"mt-4 align-self-center\"\n    (clickEvent)=\"this.handleNewEntryAddition()\"></pv-button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PvButtonModule } from '@pv-frontend/pv-shared-components/button';\nimport { PvChipModule } from '@pv-frontend/pv-shared-components/chip';\nimport { PvIncrementDecrementButtonModule } from '@pv-frontend/pv-shared-components/increment-decrement-button';\n\nimport { AmountQuantityInputComponent } from './amount-quantity-input.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    PvIncrementDecrementButtonModule,\n    PvButtonModule,\n    PvChipModule,\n  ],\n  declarations: [AmountQuantityInputComponent],\n  exports: [AmountQuantityInputComponent],\n})\nexport class PvAmountQuantityInputModule {}\n","import { ValueOf } from '@pv-frontend/pv-shared-services/common';\n\nexport interface DenominationAmountInputOutput {\n  /** only read for range type */\n  denominations: Denomination[];\n\n  isInvalid?: boolean;\n}\n\nexport interface Denomination {\n  denomination?: number | null;\n  quantity?: number | null;\n  allowedQuantity?: number | null;\n}\n\nexport const PRICE_TYPE = {\n  SLAB: 'slab',\n  RANGE: 'range',\n} as const;\n\nexport type AmountType = ValueOf<typeof PRICE_TYPE>;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}