import * as i0 from '@angular/core';
import { output, input, Component, Directive, booleanAttribute, signal, computed, viewChild, inject, ChangeDetectorRef, ElementRef, HostListener, ChangeDetectionStrategy, NgModule } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { SI_FORM_ITEM_CONTROL } from '@siemens/element-ng/form';
import { t, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
import { elementCancel } from '@siemens/element-icons';
import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiInputPillComponent {
    deletePill = output();
    /** @defaultValue false */
    hideClose = input(false, ...(ngDevMode ? [{ debugName: "hideClose" }] : []));
    icons = addIcons({ elementCancel });
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiInputPillComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiInputPillComponent, isStandalone: true, selector: "si-input-pill", inputs: { hideClose: { classPropertyName: "hideClose", publicName: "hideClose", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { deletePill: "deletePill" }, host: { properties: { "class.pe-4": "hideClose()" }, classAttribute: "pill pe-0" }, ngImport: i0, template: "<div class=\"text-truncate\">\n  <ng-content />\n</div>\n@if (!hideClose()) {\n  <span class=\"ms-2 btn btn-circle btn-sm btn-ghost\" aria-hidden=\"true\" (click)=\"deletePill.emit()\">\n    <si-icon [icon]=\"icons.elementCancel\" />\n  </span>\n}\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiInputPillComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-input-pill', imports: [SiIconComponent], host: {
                        class: 'pill pe-0',
                        '[class.pe-4]': 'hideClose()'
                    }, template: "<div class=\"text-truncate\">\n  <ng-content />\n</div>\n@if (!hideClose()) {\n  <span class=\"ms-2 btn btn-circle btn-sm btn-ghost\" aria-hidden=\"true\" (click)=\"deletePill.emit()\">\n    <si-icon [icon]=\"icons.elementCancel\" />\n  </span>\n}\n" }]
        }], propDecorators: { deletePill: [{ type: i0.Output, args: ["deletePill"] }], hideClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideClose", required: false }] }] } });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiPillsInputValueHandlerDirective {
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputValueHandlerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
    static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: SiPillsInputValueHandlerDirective, isStandalone: true, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputValueHandlerDirective, decorators: [{
            type: Directive
        }] });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiPillsInputComponent {
    static idCounter = 0;
    /**
     * The identifier of the pills-input. Will be generated if not provided.
     *
     * @defaultValue
     * ```
     * `__si-pills-input-${SiPillsInputComponent.idCounter++}`
     * ```
     */
    id = input(`__si-pills-input-${SiPillsInputComponent.idCounter++}`, ...(ngDevMode ? [{ debugName: "id" }] : []));
    /**
     * The aria-label for the inner input where users enter new items.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_PILLS_INPUT.INPUT_ELEMENT_ARIA_LABEL:Create item`)
     * ```
     */
    inputElementAriaLabel = input(t(() => $localize `:@@SI_PILLS_INPUT.INPUT_ELEMENT_ARIA_LABEL:Create item`), ...(ngDevMode ? [{ debugName: "inputElementAriaLabel" }] : []));
    /**
     * Whether the pills-input is disabled.
     *
     * @defaultValue false
     */
    // eslint-disable-next-line @angular-eslint/no-input-rename
    disabledInput = input(false, { ...(ngDevMode ? { debugName: "disabledInput" } : {}), alias: 'disabled', transform: booleanAttribute });
    /**
     * Whether the pills-input is readonly
     *
     * @defaultValue false
     */
    readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : {}), transform: booleanAttribute });
    /** The placeholder to be shown if no value is currently present. */
    placeholder = input(...(ngDevMode ? [undefined, { debugName: "placeholder" }] : []));
    /**
     * @defaultValue
     * ```
     * `${this.id()}-label`
     * ```
     */
    labelledby = input(`${this.id()}-label`, ...(ngDevMode ? [{ debugName: "labelledby" }] : []));
    /**
     * This ID will be bound to the `aria-describedby` attribute of the pills-input.
     * Use this to reference the element containing the error message(s) for the pills-input.
     * It will be picked by the {@link SiFormItemComponent} if the pills-input is used inside a form item.
     *
     * @defaultValue
     * ```
     * `${this.id()}-errormessage`
     * ```
     */
    errormessageId = input(`${this.id()}-errormessage`, ...(ngDevMode ? [{ debugName: "errormessageId" }] : []));
    inputValue = '';
    onTouched = () => { };
    onChange = () => { };
    pills = signal([], ...(ngDevMode ? [{ debugName: "pills" }] : []));
    activePillIndex = signal(undefined, ...(ngDevMode ? [{ debugName: "activePillIndex" }] : []));
    inputId = computed(() => `${this.id()}-input`, ...(ngDevMode ? [{ debugName: "inputId" }] : []));
    disabled = computed(() => this.disabledInput() || this.disabledNgControl(), ...(ngDevMode ? [{ debugName: "disabled" }] : []));
    activeDescendant = computed(() => {
        const activePillIndex = this.activePillIndex();
        return activePillIndex !== undefined ? `${this.id()}-pill-${activePillIndex}` : null;
    }, ...(ngDevMode ? [{ debugName: "activeDescendant" }] : []));
    tabindex = computed(() => this.disabled() ? undefined : this.readonly() ? 0 : -1, ...(ngDevMode ? [{ debugName: "tabindex" }] : []));
    inputElement = viewChild('inputElement', ...(ngDevMode ? [{ debugName: "inputElement" }] : []));
    disabledNgControl = signal(false, ...(ngDevMode ? [{ debugName: "disabledNgControl" }] : []));
    siPillsInputValueHandlerDirective = inject(SiPillsInputValueHandlerDirective, {
        optional: true
    });
    cdRef = inject(ChangeDetectorRef);
    elementRef = inject(ElementRef);
    ngOnInit() {
        this.siPillsInputValueHandlerDirective ??= {
            handle: (value, trigger) => {
                if (trigger !== 'input') {
                    return {
                        newPills: [value],
                        newValue: ''
                    };
                }
                return undefined;
            }
        };
    }
    input() {
        this.inputValue = this.inputElement().nativeElement.value;
        this.rebuildValue(this.inputValue, 'input');
    }
    click() {
        this.inputElement()?.nativeElement.focus();
    }
    blur() {
        this.rebuildValue(this.inputValue, 'blur');
        this.activePillIndex.set(undefined);
        this.onTouched();
    }
    keydownEnter(event) {
        this.rebuildValue(this.inputValue, 'keydown.enter');
        event.preventDefault();
    }
    keydownBackspace(event) {
        const count = this.pills().length;
        if (!this.inputValue && count) {
            const lastChipValue = this.pills().at(-1);
            this.remove(count - 1, false);
            this.inputValue = lastChipValue;
            event.preventDefault();
        }
    }
    remove(index, focus = true) {
        this.pills.update(pills => pills.filter((_, pillIndex) => index !== pillIndex));
        this.onTouched();
        this.onChange(this.pills());
        if (focus) {
            this.inputElement().nativeElement.focus();
        }
    }
    rebuildValue(value, trigger) {
        if (value) {
            const valueParseResult = this.siPillsInputValueHandlerDirective?.handle(value, trigger);
            if (valueParseResult) {
                this.pills.update(pills => [...pills, ...valueParseResult.newPills]);
                // Doesn't update when setting to empty string.
                // Not using setTimeout to avoid flickering.
                this.cdRef.detectChanges();
                this.inputValue = valueParseResult.newValue;
                this.cdRef.detectChanges();
                if (valueParseResult.newPills.length) {
                    this.onTouched();
                    this.onChange(this.pills());
                }
            }
        }
    }
    arrowLeft() {
        const activePillIndex = this.activePillIndex();
        const count = this.pills().length;
        if (activePillIndex !== undefined) {
            this.activePillIndex.set(Math.max(0, activePillIndex - 1));
        }
        else if (!this.inputValue.length && count) {
            this.elementRef.nativeElement.focus();
            this.activePillIndex.set(count - 1);
        }
    }
    arrowRight() {
        const activePillIndex = this.activePillIndex();
        if (activePillIndex !== undefined) {
            this.activePillIndex.set(activePillIndex + 1);
            if (this.activePillIndex() >= this.pills().length) {
                this.inputElement()?.nativeElement.focus();
                this.activePillIndex.set(undefined);
            }
        }
    }
    delete() {
        const activePillIndex = this.activePillIndex();
        const count = this.pills().length;
        if (activePillIndex !== undefined && !this.readonly()) {
            const targetIndex = count > 1 ? Math.min(activePillIndex, count - 2) : undefined;
            this.remove(activePillIndex, targetIndex === undefined);
            this.activePillIndex.set(targetIndex);
        }
    }
    /** @internal */
    registerOnChange(fn) {
        this.onChange = fn;
    }
    /** @internal */
    registerOnTouched(fn) {
        this.onTouched = fn;
    }
    /** @internal */
    setDisabledState(isDisabled) {
        this.disabledNgControl.set(isDisabled);
    }
    /** @internal */
    writeValue(value) {
        this.pills.set(value?.slice() ?? []);
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiPillsInputComponent, isStandalone: true, selector: "si-pills-input", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, inputElementAriaLabel: { classPropertyName: "inputElementAriaLabel", publicName: "inputElementAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, labelledby: { classPropertyName: "labelledby", publicName: "labelledby", isSignal: true, isRequired: false, transformFunction: null }, errormessageId: { classPropertyName: "errormessageId", publicName: "errormessageId", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listbox", "aria-orientation": "horizontal" }, listeners: { "click": "click()", "keydown.arrowLeft": "arrowLeft()", "keydown.arrowRight": "arrowRight()", "keydown.backspace": "delete()", "keydown.delete": "delete()" }, properties: { "class.disabled": "disabled()", "attr.aria-disabled": "disabled()", "class.readonly": "readonly()", "attr.aria-readonly": "readonly()", "attr.tabindex": "tabindex()", "attr.aria-activedescendant": "activeDescendant()", "attr.aria-labelledby": "labelledby()", "attr.aria-describedby": "errormessageId()" }, classAttribute: "form-control" }, providers: [
            {
                provide: NG_VALUE_ACCESSOR,
                useExisting: SiPillsInputComponent,
                multi: true
            },
            {
                provide: SI_FORM_ITEM_CONTROL,
                useExisting: SiPillsInputComponent
            }
        ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- aria-required-children is disabled here -->\n@for (chip of pills(); track $index) {\n  <si-input-pill\n    role=\"option\"\n    [id]=\"id() + '-pill-' + $index\"\n    [class.active]=\"$index === activePillIndex()\"\n    [hideClose]=\"disabled() || readonly()\"\n    (deletePill)=\"remove($index)\"\n  >\n    {{ chip }}\n  </si-input-pill>\n}\n@if (!readonly() && !disabled()) {\n  <div role=\"presentation\" class=\"flex-fill\">\n    <input\n      #inputElement\n      class=\"focus-none\"\n      [id]=\"inputId()\"\n      [attr.aria-label]=\"inputElementAriaLabel() | translate\"\n      [placeholder]=\"(!pills().length ? (placeholder() ?? '') : '') | translate\"\n      [value]=\"inputValue\"\n      (keydown.enter)=\"keydownEnter($event)\"\n      (keydown.backspace)=\"keydownBackspace($event)\"\n      (input)=\"input()\"\n      (blur)=\"blur()\"\n    />\n  </div>\n}\n", styles: [":host{display:flex;flex-wrap:wrap;gap:4px;padding-block:3px;block-size:auto!important;min-block-size:calc(1.1428571429em + 16px)}:host:focus-within{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}input{padding-inline:0;padding-block:3px;margin-inline:4px;border:0;flex:1;background:transparent;color:inherit;inline-size:100%}input:focus{min-inline-size:100px}\n"], dependencies: [{ kind: "component", type: SiInputPillComponent, selector: "si-input-pill", inputs: ["hideClose"], outputs: ["deletePill"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-pills-input', imports: [SiInputPillComponent, SiTranslatePipe], providers: [
                        {
                            provide: NG_VALUE_ACCESSOR,
                            useExisting: SiPillsInputComponent,
                            multi: true
                        },
                        {
                            provide: SI_FORM_ITEM_CONTROL,
                            useExisting: SiPillsInputComponent
                        }
                    ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
                        class: 'form-control',
                        role: 'listbox',
                        'aria-orientation': 'horizontal',
                        '[class.disabled]': 'disabled()',
                        '[attr.aria-disabled]': 'disabled()',
                        '[class.readonly]': 'readonly()',
                        '[attr.aria-readonly]': 'readonly()',
                        // using attr so that tabindex is removed if not defined
                        '[attr.tabindex]': 'tabindex()',
                        '[attr.aria-activedescendant]': 'activeDescendant()',
                        '[attr.aria-labelledby]': 'labelledby()',
                        '[attr.aria-describedby]': 'errormessageId()'
                    }, template: "<!-- aria-required-children is disabled here -->\n@for (chip of pills(); track $index) {\n  <si-input-pill\n    role=\"option\"\n    [id]=\"id() + '-pill-' + $index\"\n    [class.active]=\"$index === activePillIndex()\"\n    [hideClose]=\"disabled() || readonly()\"\n    (deletePill)=\"remove($index)\"\n  >\n    {{ chip }}\n  </si-input-pill>\n}\n@if (!readonly() && !disabled()) {\n  <div role=\"presentation\" class=\"flex-fill\">\n    <input\n      #inputElement\n      class=\"focus-none\"\n      [id]=\"inputId()\"\n      [attr.aria-label]=\"inputElementAriaLabel() | translate\"\n      [placeholder]=\"(!pills().length ? (placeholder() ?? '') : '') | translate\"\n      [value]=\"inputValue\"\n      (keydown.enter)=\"keydownEnter($event)\"\n      (keydown.backspace)=\"keydownBackspace($event)\"\n      (input)=\"input()\"\n      (blur)=\"blur()\"\n    />\n  </div>\n}\n", styles: [":host{display:flex;flex-wrap:wrap;gap:4px;padding-block:3px;block-size:auto!important;min-block-size:calc(1.1428571429em + 16px)}:host:focus-within{outline:var(--element-button-focus-width) solid var(--element-focus-default);outline-offset:var(--element-button-focus-overlay-width)}input{padding-inline:0;padding-block:3px;margin-inline:4px;border:0;flex:1;background:transparent;color:inherit;inline-size:100%}input:focus{min-inline-size:100px}\n"] }]
        }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], inputElementAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputElementAriaLabel", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], labelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelledby", required: false }] }], errormessageId: [{ type: i0.Input, args: [{ isSignal: true, alias: "errormessageId", required: false }] }], inputElement: [{ type: i0.ViewChild, args: ['inputElement', { isSignal: true }] }], click: [{
                type: HostListener,
                args: ['click']
            }], arrowLeft: [{
                type: HostListener,
                args: ['keydown.arrowLeft']
            }], arrowRight: [{
                type: HostListener,
                args: ['keydown.arrowRight']
            }], delete: [{
                type: HostListener,
                args: ['keydown.backspace']
            }, {
                type: HostListener,
                args: ['keydown.delete']
            }] } });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
const SEPARATOR_REGEX = /\s*[;,]\s*/g;
class SiPillsInputPatternBase {
    /**
     * Regex to split the input value into segments.
     *
     * @defaultValue SEPARATOR_REGEX
     */
    separatorRegex = signal(SEPARATOR_REGEX, ...(ngDevMode ? [{ debugName: "separatorRegex" }] : []));
    /** Regex to validate an input string item. */
    validationRegex;
    /** @internal */
    handle(value, trigger) {
        const segments = value.split(this.separatorRegex());
        const itemRegex = this.validationRegex?.();
        if (segments.length) {
            const newValue = trigger === 'input' ? segments.pop() : '';
            if (segments.every(segment => {
                return segment && (!itemRegex || segment.match(itemRegex));
            })) {
                return {
                    newPills: segments,
                    newValue
                };
            }
        }
        return {
            newPills: [],
            newValue: value
        };
    }
}

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiPillsInputCsvDirective extends SiPillsInputPatternBase {
    /** @defaultValue undefined */
    // eslint-disable-next-line @angular-eslint/no-input-rename
    validationRegex = input(undefined, { ...(ngDevMode ? { debugName: "validationRegex" } : {}), alias: 'pillsInputCsvItemRegex' });
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputCsvDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
    static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: SiPillsInputCsvDirective, isStandalone: true, selector: "[siPillsInputCsv]", inputs: { validationRegex: { classPropertyName: "validationRegex", publicName: "pillsInputCsvItemRegex", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
            {
                provide: SiPillsInputValueHandlerDirective,
                useExisting: SiPillsInputCsvDirective
            }
        ], usesInheritance: true, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputCsvDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[siPillsInputCsv]',
                    providers: [
                        {
                            provide: SiPillsInputValueHandlerDirective,
                            useExisting: SiPillsInputCsvDirective
                        }
                    ]
                }]
        }], propDecorators: { validationRegex: [{ type: i0.Input, args: [{ isSignal: true, alias: "pillsInputCsvItemRegex", required: false }] }] } });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
// From Angular Email Validator
const EMAIL_REGEX = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/g;
class SiPillsInputEmailDirective extends SiPillsInputPatternBase {
    /**
     * @defaultValue signal(EMAIL_REGEX).asReadonly()
     */
    validationRegex = signal(EMAIL_REGEX).asReadonly();
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputEmailDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
    static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: SiPillsInputEmailDirective, isStandalone: true, selector: "[siPillsInputEmail]", providers: [
            {
                provide: SiPillsInputValueHandlerDirective,
                useExisting: SiPillsInputEmailDirective
            }
        ], usesInheritance: true, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputEmailDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: '[siPillsInputEmail]',
                    providers: [
                        {
                            provide: SiPillsInputValueHandlerDirective,
                            useExisting: SiPillsInputEmailDirective
                        }
                    ]
                }]
        }] });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiPillsInputModule {
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
    static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputModule, imports: [SiPillsInputComponent, SiPillsInputCsvDirective, SiPillsInputEmailDirective], exports: [SiPillsInputComponent, SiPillsInputCsvDirective, SiPillsInputEmailDirective] });
    static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputModule, imports: [SiPillsInputComponent] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiPillsInputModule, decorators: [{
            type: NgModule,
            args: [{
                    imports: [SiPillsInputComponent, SiPillsInputCsvDirective, SiPillsInputEmailDirective],
                    exports: [SiPillsInputComponent, SiPillsInputCsvDirective, SiPillsInputEmailDirective]
                }]
        }] });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

/**
 * Generated bundle index. Do not edit.
 */

export { SiPillsInputComponent, SiPillsInputCsvDirective, SiPillsInputEmailDirective, SiPillsInputModule, SiPillsInputValueHandlerDirective };
//# sourceMappingURL=siemens-element-ng-pills-input.mjs.map
