{"version":3,"file":"primeng-password.mjs","sources":["../../src/password/style/passwordstyle.ts","../../src/password/password.ts","../../src/password/primeng-password.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst theme = ({ dt }) => `\n.p-password {\n    display: inline-flex;\n    position: relative;\n}\n\n.p-password .p-password-overlay {\n    min-width: 100%;\n}\n\n.p-password-meter {\n    height: ${dt('password.meter.height')};\n    background: ${dt('password.meter.background')};\n    border-radius: ${dt('password.meter.border.radius')};\n}\n\n.p-password-meter-label {\n    height: 100%;\n    width: 0;\n    transition: width 1s ease-in-out;\n    border-radius: ${dt('password.meter.border.radius')};\n}\n\n.p-password-meter-weak {\n    background: ${dt('password.strength.weak.background')};\n}\n\n.p-password-meter-medium {\n    background: ${dt('password.strength.medium.background')};\n}\n\n.p-password-meter-strong {\n    background: ${dt('password.strength.strong.background')};\n}\n\n.p-password-fluid {\n    display: flex;\n}\n\n.p-password-fluid .p-password-input {\n    width: 100%;\n}\n\n.p-password-input::-ms-reveal,\n.p-password-input::-ms-clear {\n    display: none;\n}\n\n.p-password-overlay {\n    position: absolute;\n    padding: ${dt('password.overlay.padding')};\n    background: ${dt('password.overlay.background')};\n    color: ${dt('password.overlay.color')};\n    border: 1px solid ${dt('password.overlay.border.color')};\n    box-shadow: ${dt('password.overlay.shadow')};\n    border-radius: ${dt('password.overlay.border.radius')};\n}\n\n.p-password-content {\n    display: flex;\n    flex-direction: column;\n    gap: ${dt('password.content.gap')};\n}\n\n.p-password-toggle-mask-icon {\n    inset-inline-end: ${dt('form.field.padding.x')};\n    color: ${dt('password.icon.color')};\n    position: absolute;\n    top: 50%;\n    margin-top: calc(-1 * calc(${dt('icon.size')} / 2));\n    width: ${dt('icon.size')};\n    height: ${dt('icon.size')};\n}\n\n.p-password:has(.p-password-toggle-mask-icon) .p-password-clear-icon,\n.p-password:has(.p-password-toggle-mask-icon) .p-password-input {\n    padding-inline-end: calc((${dt('form.field.padding.x')} * 2) + ${dt('icon.size')});\n}\n\n/* For PrimeNG */\np-password.ng-invalid.ng-dirty .p-inputtext {\n    border-color: ${dt('inputtext.invalid.border.color')};\n}\n\np-password.ng-invalid.ng-dirty .p-inputtext:enabled:focus {\n    border-color: ${dt('inputtext.focus.border.color')};\n}\n\np-password.ng-invalid.ng-dirty .p-inputtext::placeholder {\n    color: ${dt('inputtext.invalid.placeholder.color')};\n}\n\n.p-password-clear-icon {\n    position: absolute;\n    top: 50%;\n    margin-top: -0.5rem;\n    cursor: pointer;\n    inset-inline-end: ${dt('form.field.padding.x')};\n    color: ${dt('form.field.icon.color')};\n}\n\n.p-password-fluid-directive {\n    width:100%\n}\n`;\n\nconst inlineStyles = {\n    root: ({ instance }) => ({ position: instance.appendTo === 'self' ? 'relative' : undefined })\n};\n\nconst classes = {\n    root: ({ instance }) => ({\n        'p-password p-component p-inputwrapper': true,\n        'p-inputwrapper-filled': instance.filled(),\n        'p-variant-filled': 'instance.variant === \"filled\" || instance.config.inputVariant() === \"filled\" || instance.config.inputStyle() === \"filled\"',\n        'p-inputwrapper-focus': instance.focused,\n        'p-password-fluid': instance.hasFluid\n    }),\n    pcInput: 'p-password-input',\n    maskIcon: 'p-password-toggle-mask-icon p-password-mask-icon',\n    unmaskIcon: 'p-password-toggle-mask-icon p-password-unmask-icon',\n    overlay: 'p-password-overlay p-component',\n    content: 'p-password-content',\n    meter: 'p-password-meter',\n    meterLabel: ({ instance }) => `p-password-meter-label ${instance.meter ? 'p-password-meter-' + instance.meter.strength : ''}`,\n    meterText: 'p-password-meter-text'\n};\n\n@Injectable()\nexport class PasswordStyle extends BaseStyle {\n    name = 'password';\n\n    theme = theme;\n\n    classes = classes;\n\n    inlineStyles = inlineStyles;\n}\n\n/**\n *\n * Password displays strength indicator for password fields.\n *\n * [Live Demo](https://www.primeng.org/password/)\n *\n * @module passwordstyle\n *\n */\n\nexport enum PasswordClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-password',\n    /**\n     * Class name of the pt input element\n     */\n    pcInput = 'p-password-input',\n    /**\n     * Class name of the mask icon element\n     */\n    maskIcon = 'p-password-mask-icon',\n    /**\n     * Class name of the unmask icon element\n     */\n    unmaskIcon = 'p-password-unmask-icon',\n    /**\n     * Class name of the overlay element\n     */\n    overlay = 'p-password-overlay',\n    /**\n     * Class name of the meter element\n     */\n    meter = 'p-password-meter',\n    /**\n     * Class name of the meter label element\n     */\n    meterLabel = 'p-password-meter-label',\n    /**\n     * Class name of the meter text element\n     */\n    meterText = 'p-password-meter-text'\n}\n\nexport interface PasswordStyle extends BaseStyle {}\n","import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterContentInit,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ContentChildren,\n    Directive,\n    DoCheck,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    HostListener,\n    inject,\n    Input,\n    NgModule,\n    NgZone,\n    numberAttribute,\n    OnDestroy,\n    OnInit,\n    Output,\n    Pipe,\n    PipeTransform,\n    QueryList,\n    signal,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { absolutePosition, addClass, getOuterWidth, hasClass, isTouchDevice, relativePosition, removeClass } from '@primeuix/utils';\nimport { OverlayService, PrimeTemplate, SharedModule, TranslationKeys } from 'primeng/api';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { ConnectedOverlayScrollHandler, DomHandler } from 'primeng/dom';\nimport { EyeIcon, EyeSlashIcon, TimesIcon } from 'primeng/icons';\nimport { InputText } from 'primeng/inputtext';\nimport { Nullable, VoidListener } from 'primeng/ts-helpers';\nimport { ZIndexUtils } from 'primeng/utils';\nimport { Subscription } from 'rxjs';\nimport { PasswordStyle } from './style/passwordstyle';\n\ntype Meter = {\n    strength: string;\n    width: string;\n};\n/**\n * Password directive.\n * @group Components\n */\n\n// strengthClass(meter: any) {\n//     return `p-password-meter-label p-password-meter${meter?.strength ? `-${meter.strength}` : ''}`;\n// }\n@Directive({\n    selector: '[pPassword]',\n    standalone: true,\n    host: {\n        class: 'p-password p-inputtext p-component p-inputwrapper',\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-variant-filled]': 'variant === \"filled\" || config.inputStyle() === \"filled\" || config.inputVariant() === \"filled\"',\n        '[class.p-password-fluid-directive]': 'hasFluid'\n    },\n    providers: [PasswordStyle]\n})\nexport class PasswordDirective extends BaseComponent implements OnDestroy, DoCheck {\n    /**\n     * Text to prompt password entry. Defaults to PrimeNG I18N API configuration.\n     * @group Props\n     */\n    @Input() promptLabel: string = 'Enter a password';\n    /**\n     * Text for a weak password. Defaults to PrimeNG I18N API configuration.\n     * @group Props\n     */\n    @Input() weakLabel: string = 'Weak';\n    /**\n     * Text for a medium password. Defaults to PrimeNG I18N API configuration.\n     * @group Props\n     */\n    @Input() mediumLabel: string = 'Medium';\n    /**\n     * Text for a strong password. Defaults to PrimeNG I18N API configuration.\n     * @group Props\n     */\n    @Input() strongLabel: string = 'Strong';\n    /**\n     * Whether to show the strength indicator or not.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) feedback: boolean = true;\n    /**\n     * Sets the visibility of the password field.\n     * @group Props\n     */\n    @Input() set showPassword(show: boolean) {\n        this.el.nativeElement.type = show ? 'text' : 'password';\n    }\n    /**\n     * Specifies the input variant of the component.\n     * @group Props\n     */\n    @Input() variant: 'filled' | 'outlined';\n    /**\n     * Spans 100% width of the container when enabled.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) fluid: boolean = false;\n\n    panel: Nullable<HTMLDivElement>;\n\n    meter: Nullable<HTMLDivElement>;\n\n    info: Nullable<HTMLDivElement>;\n\n    filled: Nullable<boolean>;\n\n    content: Nullable<HTMLDivElement>;\n\n    label: Nullable<HTMLLabelElement>;\n\n    scrollHandler: Nullable<ConnectedOverlayScrollHandler>;\n\n    documentResizeListener: VoidListener;\n\n    _componentStyle = inject(PasswordStyle);\n\n    get hasFluid() {\n        const nativeElement = this.el.nativeElement;\n        const fluidComponent = nativeElement.closest('p-fluid');\n        return this.fluid || !!fluidComponent;\n    }\n\n    constructor(public zone: NgZone) {\n        super();\n    }\n\n    ngDoCheck() {\n        this.updateFilledState();\n    }\n\n    @HostListener('input', ['$event'])\n    onInput(e: Event) {\n        this.updateFilledState();\n    }\n\n    updateFilledState() {\n        this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;\n    }\n\n    createPanel() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.panel = this.renderer.createElement('div');\n            this.renderer.addClass(this.panel, 'p-password-overlay');\n            this.renderer.addClass(this.panel, 'p-component');\n\n            this.content = this.renderer.createElement('div');\n            this.renderer.addClass(this.content, 'p-password-content');\n            this.renderer.appendChild(this.panel, this.content);\n\n            this.meter = this.renderer.createElement('div');\n            this.renderer.addClass(this.meter, 'p-password-meter');\n            this.renderer.appendChild(this.content, this.meter);\n\n            this.label = this.renderer.createElement('div');\n            this.renderer.addClass(this.label, 'p-password-meter-label');\n            this.renderer.appendChild(this.meter, this.label);\n\n            this.info = this.renderer.createElement('div');\n            this.renderer.addClass(this.info, 'p-password-meter-text');\n            this.renderer.setProperty(this.info, 'textContent', this.promptLabel);\n            this.renderer.appendChild(this.content, this.info);\n\n            this.renderer.setStyle(this.panel, 'minWidth', `${this.el.nativeElement.offsetWidth}px`);\n            this.renderer.appendChild(document.body, this.panel);\n            this.updateMeter();\n        }\n    }\n\n    showOverlay() {\n        if (this.feedback) {\n            if (!this.panel) {\n                this.createPanel();\n            }\n\n            this.renderer.setStyle(this.panel, 'zIndex', String(++DomHandler.zindex));\n            this.renderer.setStyle(this.panel, 'display', 'block');\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => {\n                    addClass(this.panel, 'p-connected-overlay-visible');\n                    this.bindScrollListener();\n                    this.bindDocumentResizeListener();\n                }, 1);\n            });\n            absolutePosition(this.panel, this.el.nativeElement);\n        }\n    }\n\n    hideOverlay() {\n        if (this.feedback && this.panel) {\n            addClass(this.panel, 'p-connected-overlay-hidden');\n            removeClass(this.panel, 'p-connected-overlay-visible');\n            this.unbindScrollListener();\n            this.unbindDocumentResizeListener();\n\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => {\n                    this.ngOnDestroy();\n                }, 150);\n            });\n        }\n    }\n\n    @HostListener('focus')\n    onFocus() {\n        this.showOverlay();\n    }\n\n    @HostListener('blur')\n    onBlur() {\n        this.hideOverlay();\n    }\n\n    labelSignal = signal('');\n\n    @HostListener('keyup', ['$event'])\n    onKeyup(e: Event) {\n        if (this.feedback) {\n            let value = (e.target as HTMLInputElement).value,\n                label = null,\n                meterPos = null;\n\n            if (value.length === 0) {\n                label = this.promptLabel;\n                meterPos = '0px 0px';\n            } else {\n                var score = this.testStrength(value);\n\n                if (score < 30) {\n                    label = this.weakLabel;\n                    meterPos = '0px -10px';\n                } else if (score >= 30 && score < 80) {\n                    label = this.mediumLabel;\n                    meterPos = '0px -20px';\n                } else if (score >= 80) {\n                    label = this.strongLabel;\n                    meterPos = '0px -30px';\n                }\n\n                this.labelSignal.set(label);\n                this.updateMeter();\n            }\n\n            if (!this.panel || !hasClass(this.panel, 'p-connected-overlay-visible')) {\n                this.showOverlay();\n            }\n\n            this.renderer.setStyle(this.meter, 'backgroundPosition', meterPos);\n\n            (this.info as HTMLDivElement).textContent = label;\n        }\n    }\n\n    updateMeter() {\n        if (this.labelSignal()) {\n            const label = this.labelSignal();\n            const strengthClass = this.strengthClass(label.toLowerCase());\n            const width = this.getWidth(label.toLowerCase());\n\n            this.renderer.addClass(this.meter, strengthClass);\n            this.renderer.setStyle(this.meter, 'width', width);\n            (this.info as HTMLDivElement).textContent = label;\n        }\n    }\n\n    getWidth(label: string) {\n        return label === 'weak' ? '33.33%' : label === 'medium' ? '66.66%' : label === 'strong' ? '100%' : '';\n    }\n\n    strengthClass(label) {\n        return `p-password-meter${label ? `-${label}` : ''}`;\n    }\n\n    testStrength(str: string) {\n        let grade: number = 0;\n        let val: Nullable<RegExpMatchArray>;\n\n        val = str.match('[0-9]');\n        grade += this.normalize(val ? val.length : 1 / 4, 1) * 25;\n\n        val = str.match('[a-zA-Z]');\n        grade += this.normalize(val ? val.length : 1 / 2, 3) * 10;\n\n        val = str.match('[!@#$%^&*?_~.,;=]');\n        grade += this.normalize(val ? val.length : 1 / 6, 1) * 35;\n\n        val = str.match('[A-Z]');\n        grade += this.normalize(val ? val.length : 1 / 6, 1) * 30;\n\n        grade *= str.length / 8;\n\n        return grade > 100 ? 100 : grade;\n    }\n\n    normalize(x: number, y: number) {\n        let diff = x - y;\n\n        if (diff <= 0) return x / y;\n        else return 1 + 0.5 * (x / (x + y / 4));\n    }\n\n    get disabled(): boolean {\n        return this.el.nativeElement.disabled;\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n                if (hasClass(this.panel, 'p-connected-overlay-visible')) {\n                    this.hideOverlay();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    bindDocumentResizeListener() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (!this.documentResizeListener) {\n                const window = this.document.defaultView as Window;\n                this.documentResizeListener = this.renderer.listen(window, 'resize', this.onWindowResize.bind(this));\n            }\n        }\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            this.documentResizeListener();\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        if (!isTouchDevice()) {\n            this.hideOverlay();\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.panel) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            this.unbindDocumentResizeListener();\n\n            this.renderer.removeChild(this.document.body, this.panel);\n            this.panel = null;\n            this.meter = null;\n            this.info = null;\n        }\n\n        super.ngOnDestroy();\n    }\n}\n\ntype Mapper<T, G> = (item: T, ...args: any[]) => G;\n\n@Pipe({\n    name: 'mapper',\n    pure: true,\n    standalone: true\n})\nexport class MapperPipe implements PipeTransform {\n    public transform<T, G>(value: T, mapper: Mapper<T, G>, ...args: unknown[]): G {\n        return mapper(value, ...args);\n    }\n}\n\nexport const Password_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Password),\n    multi: true\n};\n/**\n * Password displays strength indicator for password fields.\n * @group Components\n */\n@Component({\n    selector: 'p-password',\n    standalone: true,\n    imports: [CommonModule, InputText, AutoFocus, TimesIcon, EyeSlashIcon, EyeIcon, MapperPipe, SharedModule],\n    template: `\n        <div [ngClass]=\"rootClass\" [ngStyle]=\"style\" [class]=\"styleClass\" [attr.data-pc-name]=\"'password'\" [attr.data-pc-section]=\"'root'\">\n            <input\n                #input\n                [attr.label]=\"label\"\n                [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-labelledBy]=\"ariaLabelledBy\"\n                [attr.id]=\"inputId\"\n                [attr.tabindex]=\"tabindex\"\n                pInputText\n                [disabled]=\"disabled\"\n                [pSize]=\"size\"\n                [ngClass]=\"disabled | mapper: inputFieldClass\"\n                [ngStyle]=\"inputStyle\"\n                [class]=\"inputStyleClass\"\n                [attr.type]=\"unmasked | mapper: inputType\"\n                [attr.placeholder]=\"placeholder\"\n                [attr.autocomplete]=\"autocomplete\"\n                [value]=\"value\"\n                [variant]=\"variant\"\n                (input)=\"onInput($event)\"\n                (focus)=\"onInputFocus($event)\"\n                (blur)=\"onInputBlur($event)\"\n                (keyup)=\"onKeyUp($event)\"\n                [attr.maxlength]=\"maxLength\"\n                [attr.data-pc-section]=\"'input'\"\n                [pAutoFocus]=\"autofocus\"\n            />\n            <ng-container *ngIf=\"showClear && value != null\">\n                <TimesIcon *ngIf=\"!clearIconTemplate && !_clearIconTemplate\" class=\"p-password-clear-icon\" (click)=\"clear()\" [attr.data-pc-section]=\"'clearIcon'\" />\n                <span (click)=\"clear()\" class=\"p-password-clear-icon\" [attr.data-pc-section]=\"'clearIcon'\">\n                    <ng-template *ngTemplateOutlet=\"clearIconTemplate || _clearIconTemplate\"></ng-template>\n                </span>\n            </ng-container>\n\n            <ng-container *ngIf=\"toggleMask\">\n                <ng-container *ngIf=\"unmasked\">\n                    <EyeSlashIcon class=\"p-password-toggle-mask-icon p-password-mask-icon\" *ngIf=\"!hideIconTemplate && !_hideIconTemplate\" (click)=\"onMaskToggle()\" [attr.data-pc-section]=\"'hideIcon'\" />\n                    <span *ngIf=\"hideIconTemplate || _hideIconTemplate\" (click)=\"onMaskToggle()\">\n                        <ng-template *ngTemplateOutlet=\"hideIconTemplate || _hideIconTemplate; context: { class: 'p-password-toggle-mask-icon p-password-mask-icon' }\"></ng-template>\n                    </span>\n                </ng-container>\n                <ng-container *ngIf=\"!unmasked\">\n                    <EyeIcon *ngIf=\"!showIconTemplate && !_showIconTemplate\" class=\"p-password-toggle-mask-icon p-password-mask-icon\" (click)=\"onMaskToggle()\" [attr.data-pc-section]=\"'showIcon'\" />\n                    <span *ngIf=\"showIconTemplate || _showIconTemplate\" (click)=\"onMaskToggle()\">\n                        <ng-template *ngTemplateOutlet=\"showIconTemplate || _showIconTemplate\"></ng-template>\n                    </span>\n                </ng-container>\n            </ng-container>\n\n            <div\n                #overlay\n                *ngIf=\"overlayVisible\"\n                class=\"p-password-overlay p-component\"\n                (click)=\"onOverlayClick($event)\"\n                [@overlayAnimation]=\"{\n                    value: 'visible',\n                    params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions }\n                }\"\n                (@overlayAnimation.start)=\"onAnimationStart($event)\"\n                (@overlayAnimation.done)=\"onAnimationEnd($event)\"\n                [attr.data-pc-section]=\"'panel'\"\n            >\n                <ng-container *ngTemplateOutlet=\"headerTemplate || _headerTemplate\"></ng-container>\n                <ng-container *ngIf=\"contentTemplate || _contentTemplate; else content\">\n                    <ng-container *ngTemplateOutlet=\"contentTemplate || _contentTemplate\"></ng-container>\n                </ng-container>\n                <ng-template #content>\n                    <div class=\"p-password-content\">\n                        <div class=\"p-password-meter\" [attr.data-pc-section]=\"'meter'\">\n                            <div [ngClass]=\"meter | mapper: strengthClass\" [ngStyle]=\"{ width: meter ? meter.width : '' }\" [attr.data-pc-section]=\"'meterLabel'\"></div>\n                        </div>\n                        <div class=\"p-password-meter-text\" [attr.data-pc-section]=\"'info'\">{{ infoText }}</div>\n                    </div>\n                </ng-template>\n                <ng-container *ngTemplateOutlet=\"footerTemplate || _footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [trigger('overlayAnimation', [transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]), transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])])],\n    providers: [Password_VALUE_ACCESSOR, PasswordStyle],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class Password extends BaseComponent implements OnInit, AfterContentInit {\n    /**\n     * Defines a string that labels the input for accessibility.\n     * @group Props\n     */\n    @Input() ariaLabel: string | undefined;\n    /**\n     * Whether the component should span the full width of its parent.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) fluid: boolean | undefined;\n    /**\n     * Specifies one or more IDs in the DOM that labels the input field.\n     * @group Props\n     */\n    @Input() ariaLabelledBy: string | undefined;\n    /**\n     * Label of the input for accessibility.\n     * @group Props\n     */\n    @Input() label: string | undefined;\n    /**\n     * Indicates whether the component is disabled or not.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n    /**\n     * Text to prompt password entry. Defaults to PrimeNG I18N API configuration.\n     * @group Props\n     */\n    @Input() promptLabel: string | undefined;\n    /**\n     * Regex value for medium regex.\n     * @group Props\n     */\n    @Input() mediumRegex: string = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';\n    /**\n     * Regex value for strong regex.\n     * @group Props\n     */\n    @Input() strongRegex: string = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';\n    /**\n     * Text for a weak password. Defaults to PrimeNG I18N API configuration.\n     * @group Props\n     */\n    @Input() weakLabel: string | undefined;\n    /**\n     * Text for a medium password. Defaults to PrimeNG I18N API configuration.\n     * @group Props\n     */\n    @Input() mediumLabel: string | undefined;\n    /**\n     * specifies the maximum number of characters allowed in the input element.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) maxLength: number | undefined;\n    /**\n     * Text for a strong password. Defaults to PrimeNG I18N API configuration.\n     * @group Props\n     */\n    @Input() strongLabel: string | undefined;\n    /**\n     * Identifier of the accessible input element.\n     * @group Props\n     */\n    @Input() inputId: string | undefined;\n    /**\n     * Whether to show the strength indicator or not.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) feedback: boolean = true;\n    /**\n     * Id of the element or \"body\" for document where the overlay should be appended to.\n     * @group Props\n     */\n    @Input() appendTo: HTMLElement | ElementRef | TemplateRef<any> | string | null | undefined | any;\n    /**\n     * Whether to show an icon to display the password as plain text.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) toggleMask: boolean | undefined;\n    /**\n     * Defines the size of the component.\n     * @group Props\n     */\n    @Input() size: 'large' | 'small';\n    /**\n     * Style class of the input field.\n     * @group Props\n     */\n    @Input() inputStyleClass: string | undefined;\n    /**\n     * Style class of the element.\n     * @group Props\n     */\n    @Input() styleClass: string | undefined;\n    /**\n     * Inline style of the component.\n     * @group Props\n     */\n    @Input() style: { [klass: string]: any } | null | undefined;\n    /**\n     * Inline style of the input field.\n     * @group Props\n     */\n    @Input() inputStyle: { [klass: string]: any } | null | undefined;\n    /**\n     * Transition options of the show animation.\n     * @group Props\n     */\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n    /**\n     * Transition options of the hide animation.\n     * @group Props\n     */\n    @Input() hideTransitionOptions: string = '.1s linear';\n    /**\n     * Specify automated assistance in filling out password by browser.\n     * @group Props\n     */\n    @Input() autocomplete: string | undefined;\n    /**\n     * Advisory information to display on input.\n     * @group Props\n     */\n    @Input() placeholder: string | undefined;\n    /**\n     * When enabled, a clear icon is displayed to clear the value.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) showClear: boolean = false;\n    /**\n     * When present, it specifies that the component should automatically get focus on load.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) autofocus: boolean | undefined;\n    /**\n     * Specifies the input variant of the component.\n     * @group Props\n     */\n    @Input() variant: 'filled' | 'outlined';\n    /**\n     * Index of the element in tabbing order.\n     * @group Props\n     */\n    @Input({ transform: numberAttribute }) tabindex?: number;\n    /**\n     * Callback to invoke when the component receives focus.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n    /**\n     * Callback to invoke when the component loses focus.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n    /**\n     * Callback to invoke when clear button is clicked.\n     * @group Emits\n     */\n    @Output() onClear: EventEmitter<any> = new EventEmitter<any>();\n\n    @ViewChild('input') input!: ElementRef;\n\n    @ContentChild('content', { descendants: false }) contentTemplate: Nullable<TemplateRef<any>>;\n\n    @ContentChild('footer', { descendants: false }) footerTemplate: Nullable<TemplateRef<any>>;\n\n    @ContentChild('header', { descendants: false }) headerTemplate: Nullable<TemplateRef<any>>;\n\n    @ContentChild('clearicon', { descendants: false }) clearIconTemplate: Nullable<TemplateRef<any>>;\n\n    @ContentChild('hideicon', { descendants: false }) hideIconTemplate: Nullable<TemplateRef<any>>;\n\n    @ContentChild('showicon', { descendants: false }) showIconTemplate: Nullable<TemplateRef<any>>;\n\n    @ContentChildren(PrimeTemplate) templates!: QueryList<PrimeTemplate>;\n\n    _contentTemplate: TemplateRef<any> | undefined;\n\n    _footerTemplate: TemplateRef<any> | undefined;\n\n    _headerTemplate: TemplateRef<any> | undefined;\n\n    _clearIconTemplate: TemplateRef<any> | undefined;\n\n    _hideIconTemplate: TemplateRef<any> | undefined;\n\n    _showIconTemplate: TemplateRef<any> | undefined;\n\n    overlayVisible: boolean = false;\n\n    meter: Nullable<Meter>;\n\n    infoText: Nullable<string>;\n\n    focused: boolean = false;\n\n    unmasked: boolean = false;\n\n    mediumCheckRegExp!: RegExp;\n\n    strongCheckRegExp!: RegExp;\n\n    resizeListener: VoidListener;\n\n    scrollHandler: Nullable<ConnectedOverlayScrollHandler>;\n\n    overlay: HTMLElement | ElementRef | null | undefined;\n\n    value: Nullable<string> = null;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    translationSubscription: Nullable<Subscription>;\n\n    _componentStyle = inject(PasswordStyle);\n\n    get hasFluid() {\n        const nativeElement = this.el.nativeElement;\n        const fluidComponent = nativeElement.closest('p-fluid');\n        return this.fluid || !!fluidComponent;\n    }\n\n    overlayService = inject(OverlayService);\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.infoText = this.promptText();\n        this.mediumCheckRegExp = new RegExp(this.mediumRegex);\n        this.strongCheckRegExp = new RegExp(this.strongRegex);\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.updateUI(this.value || '');\n        });\n    }\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'content':\n                    this._contentTemplate = item.template;\n                    break;\n\n                case 'header':\n                    this._headerTemplate = item.template;\n                    break;\n\n                case 'footer':\n                    this._footerTemplate = item.template;\n                    break;\n\n                case 'clearicon':\n                    this._clearIconTemplate = item.template;\n                    break;\n\n                case 'hideicon':\n                    this._hideIconTemplate = item.template;\n                    break;\n\n                case 'showicon':\n                    this._showIconTemplate = item.template;\n                    break;\n\n                default:\n                    this._contentTemplate = item.template;\n                    break;\n            }\n        });\n    }\n\n    onAnimationStart(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\n                this.appendContainer();\n                this.alignOverlay();\n                this.bindScrollListener();\n                this.bindResizeListener();\n                break;\n\n            case 'void':\n                this.unbindScrollListener();\n                this.unbindResizeListener();\n                this.overlay = null;\n                break;\n        }\n    }\n\n    onAnimationEnd(event: AnimationEvent) {\n        switch (event.toState) {\n            case 'void':\n                ZIndexUtils.clear(event.element);\n                break;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body') this.renderer.appendChild(this.document.body, this.overlay);\n            else (this.document as any).getElementById(this.appendTo).appendChild(this.overlay as HTMLElement);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo) {\n            (this.overlay as HTMLElement).style.minWidth = getOuterWidth(this.input.nativeElement) + 'px';\n            absolutePosition(this.overlay as any, this.input.nativeElement);\n        } else {\n            relativePosition(this.overlay as any, this.input.nativeElement);\n        }\n    }\n\n    onInput(event: Event) {\n        this.value = (event.target as HTMLInputElement).value;\n        this.onModelChange(this.value);\n    }\n\n    onInputFocus(event: Event) {\n        this.focused = true;\n        if (this.feedback) {\n            this.overlayVisible = true;\n        }\n\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event: Event) {\n        this.focused = false;\n        if (this.feedback) {\n            this.overlayVisible = false;\n        }\n\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onKeyUp(event: KeyboardEvent) {\n        if (this.feedback) {\n            let value = (event.target as HTMLInputElement).value;\n            this.updateUI(value);\n\n            if (event.code === 'Escape') {\n                this.overlayVisible && (this.overlayVisible = false);\n\n                return;\n            }\n\n            if (!this.overlayVisible) {\n                this.overlayVisible = true;\n            }\n        }\n    }\n\n    updateUI(value: string) {\n        let label = null;\n        let meter = null;\n\n        switch (this.testStrength(value)) {\n            case 1:\n                label = this.weakText();\n                meter = {\n                    strength: 'weak',\n                    width: '33.33%'\n                };\n                break;\n\n            case 2:\n                label = this.mediumText();\n                meter = {\n                    strength: 'medium',\n                    width: '66.66%'\n                };\n                break;\n\n            case 3:\n                label = this.strongText();\n                meter = {\n                    strength: 'strong',\n                    width: '100%'\n                };\n                break;\n\n            default:\n                label = this.promptText();\n                meter = null;\n                break;\n        }\n\n        this.meter = meter;\n        this.infoText = label;\n    }\n\n    onMaskToggle() {\n        this.unmasked = !this.unmasked;\n    }\n\n    onOverlayClick(event: Event) {\n        this.overlayService.add({\n            originalEvent: event,\n            target: this.el.nativeElement\n        });\n    }\n\n    testStrength(str: string) {\n        let level = 0;\n\n        if (this.strongCheckRegExp.test(str)) level = 3;\n        else if (this.mediumCheckRegExp.test(str)) level = 2;\n        else if (str.length) level = 1;\n\n        return level;\n    }\n\n    writeValue(value: any): void {\n        if (value === undefined) this.value = null;\n        else this.value = value;\n\n        if (this.feedback) this.updateUI(this.value || '');\n\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    bindScrollListener() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.input.nativeElement, () => {\n                    if (this.overlayVisible) {\n                        this.overlayVisible = false;\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        }\n    }\n\n    bindResizeListener() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (!this.resizeListener) {\n                const window = this.document.defaultView as Window;\n                this.resizeListener = this.renderer.listen(window, 'resize', () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.overlayVisible = false;\n                    }\n                });\n            }\n        }\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.resizeListener) {\n            this.resizeListener();\n            this.resizeListener = null;\n        }\n    }\n\n    containerClass(toggleMask: boolean) {\n        return { 'p-password p-component p-inputwrapper': true, 'p-input-icon-right': toggleMask };\n    }\n\n    get rootClass() {\n        return this._componentStyle.classes.root({ instance: this });\n    }\n\n    inputFieldClass(disabled: boolean) {\n        return { 'p-password-input': true, 'p-disabled': disabled };\n    }\n\n    strengthClass(meter: any) {\n        return `p-password-meter-label p-password-meter${meter?.strength ? `-${meter.strength}` : ''}`;\n    }\n\n    filled() {\n        return this.value != null && this.value.toString().length > 0;\n    }\n\n    promptText() {\n        return this.promptLabel || this.getTranslation(TranslationKeys.PASSWORD_PROMPT);\n    }\n\n    weakText() {\n        return this.weakLabel || this.getTranslation(TranslationKeys.WEAK);\n    }\n\n    mediumText() {\n        return this.mediumLabel || this.getTranslation(TranslationKeys.MEDIUM);\n    }\n\n    strongText() {\n        return this.strongLabel || this.getTranslation(TranslationKeys.STRONG);\n    }\n\n    restoreAppend() {\n        if (this.overlay && this.appendTo) {\n            if (this.appendTo === 'body') this.renderer.removeChild(this.document.body, this.overlay);\n            else (this.document as any).getElementById(this.appendTo).removeChild(this.overlay);\n        }\n    }\n\n    inputType(unmasked: boolean) {\n        return unmasked ? 'text' : 'password';\n    }\n\n    getTranslation(option: string) {\n        return this.config.getTranslation(option);\n    }\n\n    clear() {\n        this.value = null;\n        this.onModelChange(this.value);\n        this.writeValue(this.value);\n        this.onClear.emit();\n    }\n\n    ngOnDestroy() {\n        if (this.overlay) {\n            ZIndexUtils.clear(this.overlay);\n            this.overlay = null;\n        }\n\n        this.restoreAppend();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n\n        super.ngOnDestroy();\n    }\n}\n\n@NgModule({\n    imports: [Password, PasswordDirective, SharedModule],\n    exports: [PasswordDirective, Password, SharedModule]\n})\nexport class PasswordModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}