"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("primereact/utils"),n=require("primereact/tooltip"),r=require("primereact/inputtext"),i=require("primereact/csstransition"),o=require("primereact/api"),s=require("primereact/overlayservice"),l=require("primereact/portal");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=a(e),u=a(o);function c(){return c=Object.assign||function(e){for(var t=1;t0||null!=this.props.defaultValue&&this.props.defaultValue.toString().length>0||this.inputRef&&this.inputRef.current&&t.DomHandler.hasClass(this.inputRef.current,"p-filled")}},{key:"getInputType",value:function(){return this.state.unmasked?"text":"password"}},{key:"updateLabels",value:function(){if(this.state.meter){var e=null;switch(this.state.meter.strength){case"weak":e=this.weakLabel();break;case"medium":e=this.mediumLabel();break;case"strong":e=this.strongLabel()}e&&this.state.infoText!==e&&this.setState({infoText:e})}else{var t=this.promptLabel();this.state.infoText!==t&&this.setState({infoText:t})}}},{key:"onPanelClick",value:function(e){this.props.feedback&&s.OverlayService.emit("overlay-click",{originalEvent:e,target:this.container})}},{key:"onMaskToggle",value:function(){this.setState((function(e){return{unmasked:!e.unmasked}}))}},{key:"showOverlay",value:function(){this.updateLabels(),this.setState({overlayVisible:!0})}},{key:"hideOverlay",value:function(){this.setState({overlayVisible:!1})}},{key:"alignOverlay",value:function(){this.inputRef&&this.inputRef.current&&t.DomHandler.alignOverlay(this.overlayRef.current,this.inputRef.current.parentElement,this.props.appendTo||u.default.appendTo)}},{key:"onOverlayEnter",value:function(){t.ZIndexUtils.set("overlay",this.overlayRef.current,u.default.autoZIndex,u.default.zIndex.overlay),this.alignOverlay()}},{key:"onOverlayEntered",value:function(){this.bindScrollListener(),this.bindResizeListener(),this.props.onShow&&this.props.onShow()}},{key:"onOverlayExit",value:function(){this.unbindScrollListener(),this.unbindResizeListener()}},{key:"onOverlayExited",value:function(){t.ZIndexUtils.clear(this.overlayRef.current),this.props.onHide&&this.props.onHide()}},{key:"onFocus",value:function(e){var t=this;e.persist(),this.setState({focused:!0},(function(){t.props.feedback&&t.showOverlay(),t.props.onFocus&&t.props.onFocus(e)}))}},{key:"onBlur",value:function(e){var t=this;e.persist(),this.setState({focused:!1},(function(){t.props.feedback&&t.hideOverlay(),t.props.onBlur&&t.props.onBlur(e)}))}},{key:"onKeyup",value:function(e){var t=this,n=e.keyCode||e.which;if(this.props.feedback){var r=null,i=null;switch(this.testStrength(e.target.value)){case 1:r=this.weakLabel(),i={strength:"weak",width:"33.33%"};break;case 2:r=this.mediumLabel(),i={strength:"medium",width:"66.66%"};break;case 3:r=this.strongLabel(),i={strength:"strong",width:"100%"};break;default:r=this.promptLabel(),i=null}this.setState({meter:i,infoText:r},(function(){n&&!t.state.overlayVisible&&t.showOverlay()}))}this.props.onKeyUp&&this.props.onKeyUp(e)}},{key:"onInput",value:function(e,n){this.props.onInput&&this.props.onInput(e,n),this.props.onChange||(e.target.value.length>0?t.DomHandler.addClass(this.container,"p-inputwrapper-filled"):t.DomHandler.removeClass(this.container,"p-inputwrapper-filled"))}},{key:"testStrength",value:function(e){var t=0;return this.strongCheckRegExp.test(e)?t=3:this.mediumCheckRegExp.test(e)?t=2:e.length&&(t=1),t}},{key:"bindScrollListener",value:function(){var e=this;this.scrollHandler||(this.scrollHandler=new t.ConnectedOverlayScrollHandler(this.inputEl,(function(){e.state.overlayVisible&&e.hideOverlay()}))),this.scrollHandler.bindScrollListener()}},{key:"unbindScrollListener",value:function(){this.scrollHandler&&this.scrollHandler.unbindScrollListener()}},{key:"bindResizeListener",value:function(){var e=this;this.resizeListener||(this.resizeListener=function(){e.state.overlayVisible&&!t.DomHandler.isTouchDevice()&&e.hideOverlay()},window.addEventListener("resize",this.resizeListener))}},{key:"unbindResizeListener",value:function(){this.resizeListener&&(window.removeEventListener("resize",this.resizeListener),this.resizeListener=null)}},{key:"updateInputRef",value:function(){var e=this.props.inputRef;e&&("function"==typeof e?e(this.inputRef.current):e.current=this.inputRef.current)}},{key:"componentDidMount",value:function(){this.updateInputRef(),this.props.tooltip&&this.renderTooltip()}},{key:"componentDidUpdate",value:function(e){e.tooltip===this.props.tooltip&&e.tooltipOptions===this.props.tooltipOptions||(this.tooltip?this.tooltip.update(w({content:this.props.tooltip},this.props.tooltipOptions||{})):this.renderTooltip()),e.mediumRegex!==this.props.mediumRegex&&(this.mediumCheckRegExp=new RegExp(this.props.mediumRegex)),e.strongRegex!==this.props.strongRegex&&(this.strongCheckRegExp=new RegExp(this.props.strongRegex)),!this.isFilled()&&t.DomHandler.hasClass(this.container,"p-inputwrapper-filled")&&t.DomHandler.removeClass(this.container,"p-inputwrapper-filled")}},{key:"componentWillUnmount",value:function(){this.unbindResizeListener(),this.scrollHandler&&(this.scrollHandler.destroy(),this.scrollHandler=null),this.tooltip&&(this.tooltip.destroy(),this.tooltip=null),t.ZIndexUtils.clear(this.overlayRef.current)}},{key:"renderTooltip",value:function(){this.tooltip=n.tip({target:this.inputEl,content:this.props.tooltip,options:this.props.tooltipOptions})}},{key:"renderIcon",value:function(){if(this.props.toggleMask){var e=this.state.unmasked?"pi pi-eye-slash":"pi pi-eye",n=p.default.createElement("i",{className:e,onClick:this.onMaskToggle});return this.props.icon&&(n=t.ObjectUtils.getJSXElement(this.props.icon,{onClick:this.onMaskToggle,className:e,element:n,props:this.props})),n}return null}},{key:"renderPanel",value:function(){var e=t.classNames("p-password-panel p-component",this.props.panelClassName),n=this.state.meter||{strength:"",width:"0%"},r=n.strength,o=n.width,s=t.ObjectUtils.getJSXElement(this.props.header,this.props),a=t.ObjectUtils.getJSXElement(this.props.footer,this.props),u=this.props.content?t.ObjectUtils.getJSXElement(this.props.content,this.props):p.default.createElement(p.default.Fragment,null,p.default.createElement("div",{className:"p-password-meter"},p.default.createElement("div",{className:"p-password-strength ".concat(r),style:{width:o}})),p.default.createElement("div",{className:"p-password-info"},this.state.infoText));return p.default.createElement(l.Portal,{element:p.default.createElement(i.CSSTransition,{nodeRef:this.overlayRef,classNames:"p-connected-overlay",in:this.state.overlayVisible,timeout:{enter:120,exit:100},options:this.props.transitionOptions,unmountOnExit:!0,onEnter:this.onOverlayEnter,onEntered:this.onOverlayEntered,onExit:this.onOverlayExit,onExited:this.onOverlayExited},p.default.createElement("div",{ref:this.overlayRef,className:e,style:this.props.panelStyle,onClick:this.onPanelClick},s,u,a)),appendTo:this.props.appendTo})}},{key:"render",value:function(){var e=this,n=t.classNames("p-password p-component p-inputwrapper",{"p-inputwrapper-filled":this.isFilled(),"p-inputwrapper-focus":this.state.focused,"p-input-icon-right":this.props.toggleMask},this.props.className),i=t.classNames("p-password-input",this.props.inputClassName),o=this.getInputType(),s=t.ObjectUtils.findDiffKeys(this.props,L.defaultProps),l=this.renderIcon(),a=this.renderPanel();return p.default.createElement("div",{ref:function(t){return e.container=t},id:this.props.id,className:n,style:this.props.style},p.default.createElement(r.InputText,c({ref:this.inputRef,id:this.props.inputId},s,{type:o,className:i,style:this.props.inputStyle,onFocus:this.onFocus,onBlur:this.onBlur,onKeyUp:this.onKeyup,onInput:this.onInput})),l,a)}}])&&f(k.prototype,O),R&&f(k,R),Object.defineProperty(k,"prototype",{writable:!1}),L}();k(R,"defaultProps",{id:null,inputId:null,inputRef:null,promptLabel:null,weakLabel:null,mediumLabel:null,strongLabel:null,mediumRegex:"^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})",strongRegex:"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})",feedback:!0,toggleMask:!1,appendTo:null,header:null,content:null,footer:null,icon:null,tooltip:null,tooltipOptions:null,style:null,className:null,inputStyle:null,inputClassName:null,panelStyle:null,panelClassName:null,transitionOptions:null,onInput:null,onShow:null,onHide:null}),exports.Password=R;