{"version":3,"file":"01a6e8.js","mappings":"8pBAGA,cAKE,mBACE,cAAO,K,OACP,EAAKA,MAAQ,qBACb,EAAKC,UAAY,kBACjB,EAAKC,WAAa,yB,CACpB,C,OAN+C,O,iCAApCC,EAA2B,E,oCAA3BA,EAA2B,8MCPxC,gCACE,6BAIE,4CAAS,EAAAC,iBAAA,EAAwB,IAGhC,eAAgB,oBAEnB,gCAAsD,eAAgB,oBACxE,8B,MARI,wDAAwB,0BAAxB,CAAwB,sBAAxB,CAAwB,6BAKvB,uDAEmD,uD,sBDPxD,CAIiD,K,u9CED7C,gCACE,+BASE,mCASE,+IAAsC,4HAAtC,CAAsC,qIAAtC,CAAsC,sIAAtC,CAAsC,2GAAtC,CAAsC,sFATxC,oBA2BA,gCAA8B,mBAAM,oBACpC,gCAA4B,mBAAM,oBAClC,iCAA2B,mBAAM,oBACnC,oBAEA,mCACE,gBACF,oBACF,4B,qEA1CI,qHAQE,6CAAuB,YAAvB,CAAuB,wBAgBvB,2CAA2C,qBAA3C,CAA2C,4DAA3C,CAA2C,8BAA3C,CAA2C,6BAA3C,CAA2C,kCAexC,yDACL,2D,wBAIJ,gCACE,iCAAoB,mBAAM,oBAC1B,iCAAyC,qBAAO,oBAClD,6B,0BAnDF,+BACE,4CA+CA,0CAIF,qB,uBAnDiB,kDA+CA,kD,wDAKjB,iDAEE,gIAGF,mB,oCAFE,iD,+DCnCJ,aAyDE,WACUC,GAAA,KAAAA,6BAAAA,EAvCD,KAAAC,eAAiB,EAAC,GAAM,GAAM,GAAM,GAAM,GAAM,GAGhD,KAAAC,cAAwB,EACxB,KAAAC,eAAyB,EACzB,KAAAC,sBAAgC,WAChC,KAAAC,UAAoB,EAItB,KAAAC,MAAgB,GAWb,KAAAC,OAAS,IAAI,EAAAC,aACb,KAAAC,SAAW,IAAI,EAAAD,aACf,KAAAE,2BAA6B,IAAI,EAAAF,aAEpC,KAAAG,SAAmB,EACnB,KAAAC,eAAuC,GAGvC,KAAAC,OAAiB,EACjB,KAAAC,UAAoB,EACpB,KAAAC,aAAuB,EACvB,KAAAC,kBAA4B,KAE3B,KAAAC,SAAqBC,SAASC,UAC/B,KAAAC,YAAa,EACb,KAAAC,qBAAsB,CAI1B,C,OA7BH,sBACI,mBAAI,C,IAKR,WACE,OAAOC,KAAKhB,KACd,E,IARA,SACSiB,GACc,IAAjBA,EAAMC,SAEVF,KAAKhB,MAAQiB,EAAQ,IACvB,E,gCA0BA,YAAAE,SAAA,WACEH,KAAKI,aACLJ,KAAKK,qBACLL,KAAKf,OAAOqB,KAAKN,KAAKO,eACtBP,KAAKQ,kBACP,EAEc,YAAAA,iBAAd,W,gGACoB,OAAlB,EAAAR,KAAkB,GAAMA,KAAKtB,6BAA6B+B,eACxD,mC,cADF,EAAKX,WAAa,SAGlBE,KAAKD,qBAAsB,E,YAG7B,YAAAW,SAAA,SAASC,GAGP,GAFAX,KAAKY,QAAUD,GAEVX,KAAKT,MACR,MAAO,CACLsB,UAAU,EAGhB,EAEA,YAAAC,WAAA,SAAWb,GAAsB,EAEjC,YAAAc,iBAAA,SAAiBC,GACfhB,KAAKL,SAAWqB,CAClB,EAEA,YAAAC,kBAAA,SAAkBD,GAAqB,EAEvC,YAAAE,+BAAA,WACE,IAAMC,EAAkC,GAExCnB,KAAKa,SAASO,SAAQ,SAACC,EAAOC,GACd,OAAVD,GACFF,EAAeI,KAAK,CAClBF,MAAK,EACLC,SAAQ,GAGd,IAEAtB,KAAKL,SAASwB,EAChB,EAEO,YAAAK,SAAP,WACE,GAAmB,MAAfxB,KAAKyB,QAAwC,GAAtBzB,KAAKyB,OAAOvB,OAAvC,CAEA,IAAIwB,GAAQ,EACZ1B,KAAKyB,OAAOL,SAAQ,SAACO,GACdD,IAELA,GAAQ,EACRC,EAAKC,cAAcC,QACrB,GAR0D,CAS5D,EAEO,YAAAC,MAAP,WACE9B,KAAKT,OAAQ,EACbS,KAAKP,aAAc,EACnBO,KAAKK,qBAEL,IAAK,IAAI0B,EAAI,EAAGA,EAAI/B,KAAKV,eAAeY,OAAQ6B,IAC9C/B,KAAKV,eAAeyC,GAAGD,MAAM9B,KAAKO,cACtC,EAEO,YAAAyB,yBAAP,SAAgCC,GAC9BjC,KAAKP,YAAcwC,EACnBjC,KAAKkC,uBACLlC,KAAKZ,2BAA2BkB,KAAK2B,EACvC,EAEO,YAAAE,QAAP,SAAeC,GACbpC,KAAKN,kBAAoB0C,EACzBpC,KAAKkC,uBACLlC,KAAKqC,4BAA4BD,GAAO,EAC1C,EAEO,YAAAE,OAAP,SAAcF,GACRpC,KAAKN,mBAAqB0C,IAAOpC,KAAKN,kBAAoB,MAE9DM,KAAKkC,uBACLlC,KAAKqC,4BAA4BD,GAAO,EAC1C,EAEO,YAAAG,QAAP,SAAeC,EAAkBJ,EAAeK,GAC9CzC,KAAK0C,oBAAoBN,EAAOI,EAAEG,QAClC3C,KAAK4C,SACL5C,KAAK6C,oBAAoBT,GACzBpC,KAAK8C,eAAeN,EAAEO,QAASN,EACjC,EAEO,YAAAO,UAAP,SAAiBR,EAAkBJ,GACjC,IAIMa,EAJc,CAClB,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACpE,IAAK,IAAK,IAAK,IAAK,KAEWC,QAAQV,EAAEO,UAAY,EACjDI,EAAaX,EAAEO,SAAW,IAAMP,EAAEO,SAAW,GAC7CK,EAAepD,KAAKoD,aAAaZ,EAAEO,SAKzC,GAHA/C,KAAK6C,oBAAoBT,GAGrBe,GAAcF,GAAiBT,EAAEa,UAAYD,EAC/CZ,EAAEc,sBAKJ,GAAKtD,KAAKP,YAGV,GAAiB,GAAb+C,EAAEO,QAAN,CAMA,IAAMQ,EAAQf,EAAEG,OAEL,MAATY,GACe,MAAfA,EAAMtD,OACgB,GAAtBsD,EAAMtD,MAAMC,QACXkD,IAKCpD,KAAKwD,2BAA2BpB,GAClCpC,KAAKyD,sBAAsBrB,EAAO,IAIpCI,EAAEc,iB,MApBAtD,KAAKyD,sBAAsBrB,EAAO,GAqBtC,EAEO,YAAAsB,mBAAP,WACE,OAAO1D,KAAKV,eAAeqE,MACzB,SAAC9C,GAA4B,OAAAA,EAAS+C,OAAT,GAEjC,EAEO,YAAAC,QAAP,SAAerB,GACbA,EAAEc,gBACJ,EAEO,YAAAQ,OAAP,WACE,IAAK,IAAI/B,EAAI,EAAGA,EAAI/B,KAAKV,eAAeY,OAAQ6B,IAC9C/B,KAAKV,eAAeyC,GAAGgC,UAAU/D,KAAKO,eAExCP,KAAKkC,uBACLlC,KAAK4C,SAED5C,KAAKY,SACPZ,KAAKY,QAAQoD,wBAEjB,EAEO,YAAAC,iBAAP,WACE,OAAqBC,MAAjBlE,KAAKa,UAAkD,IAAzBb,KAAKa,SAASX,OAAqB,GAE9DF,KAAKa,SAASsD,KAAK,GAC5B,EAGQ,YAAA9D,mBAAR,WACE,GAA2B,MAAvBL,KAAKrB,gBAAwD,GAA9BqB,KAAKrB,eAAeuB,OAAvD,CAOA,IAFA,IAAMkE,EAAS,IAAIC,MACfC,GAAa,EACRvC,EAAI,EAAGA,EAAI/B,KAAKrB,eAAeuB,OAAQ6B,IAAK,CACnD,IAAMwC,GAAcD,GAActE,KAAKrB,eAAeoD,GAClDwC,IAAYD,GAAa,GAE7BF,EAAO7C,KAEL,IAAIiD,EACFzC,EACA/B,KAAKrB,eAAeoD,GACpB/B,KAAKyE,KACLzE,KAAK0E,YACLH,G,CAKNvE,KAAKV,eAAiB8E,C,MAtBpBpE,KAAKV,eAAiB,IAAI+E,KAuB9B,EAEQ,YAAAjE,WAAR,WACE,IAAMuE,EAAc,CAAC,EACrBA,EAAY3E,KAAKyE,KAAO,kBAAoB,IAAI,EAAAG,YAAY,GAAI,CAC9D,EAAAC,WAAA,SACA,EAAAA,WAAA,QAAmB,WAErBF,EAAY3E,KAAKyE,KAAO,kBAAoB,IAAI,EAAAG,YAAY,GAAI,CAC9D,EAAAC,WAAA,SACA,EAAAA,WAAA,QAAmB,WAErBF,EAAY3E,KAAKyE,KAAO,kBAAoB,IAAI,EAAAG,YAAY,GAAI,CAC9D,EAAAC,WAAA,SACA,EAAAA,WAAA,QAAmB,WAErBF,EAAY3E,KAAKyE,KAAO,kBAAoB,IAAI,EAAAG,YAAY,GAAI,CAC9D,EAAAC,WAAA,SACA,EAAAA,WAAA,QAAmB,WAErBF,EAAY3E,KAAKyE,KAAO,kBAAoB,IAAI,EAAAG,YAAY,GAAI,CAC9D,EAAAC,WAAA,SACA,EAAAA,WAAA,QAAmB,WAErBF,EAAY3E,KAAKyE,KAAO,kBAAoB,IAAI,EAAAG,YAAY,GAAI,CAC9D,EAAAC,WAAA,SACA,EAAAA,WAAA,QAAmB,WAGrB7E,KAAKO,cAAgB,IAAI,EAAAuE,UAAUH,EACrC,EAEQ,YAAA7B,eAAR,SAAuBC,EAAiBN,GACtC,GAAmB,MAAfzC,KAAKyB,QAAwC,GAAtBzB,KAAKyB,OAAOvB,QAElCF,KAAKoD,aAAaL,GAAvB,CAEA,IAAIgC,GAAY,EAChB/E,KAAKyB,OAAOL,SAAQ,SAACO,GACfoD,IACFpD,EAAKC,cAAcC,QACnBkD,GAAY,GAIZpD,EAAKC,cAAc3B,MAAMC,OAAS,GAClCyB,EAAKC,cAAcoD,aAAa,SAAWvC,IAE3CsC,GAAY,EAChB,GAduC,CAezC,EAEQ,YAAAnC,OAAR,WAKE,IAJA,IAAIrD,GAAQ,EACRC,GAAW,EACTqB,EAAW,IAAIwD,MAEZtC,EAAI,EAAGA,EAAI/B,KAAKV,eAAeY,OAAQ6B,IAC9C,GAAK/B,KAAKV,eAAeyC,GAAGkD,MACvB,CACH,IAAM5D,EAAQ6D,OACZlF,KAAKO,cAAc4E,SAASnF,KAAKV,eAAeyC,GAAGqD,IAAInF,OAE5CoF,KAAThE,EAAcR,EAASU,KAAKF,GAC3BR,EAASU,KAAK,MAEnB,IAAMX,EAAUZ,KAAKO,cAAc4E,SAASnF,KAAKV,eAAeyC,GAAGqD,IAC7C,KAAlBxE,EAAQX,QAEVT,GAAW,GAERoB,EAAQrB,QAAUqB,EAAQ0E,QAAS1E,EAAQ2E,UAAUhG,GAAQ,E,MAbjCsB,EAASU,KAAK,MAiBnDvB,KAAKa,SAAWA,EAChBb,KAAKR,SAAWA,EAChBQ,KAAKT,MAAQS,KAAKnB,cACdU,GAASS,KAAKwF,mBAAmBxF,KAAKiE,oBACtC1E,EAEJS,KAAKb,SAASmB,KAAK,KACrB,EAEQ,YAAAoC,oBAAR,SAA4BN,EAAemB,GAC5B,MAATA,GAAgC,MAAfA,EAAMtD,OAAiBsD,EAAMtD,MAAMC,OAAS,GAEjEF,KAAKyD,sBAAsBrB,EAAOmB,EAAMtD,MAAMwF,UAAU,EAAG,GAC7D,EAEQ,YAAArC,aAAR,SAAqBL,GACnB,OACGA,GAAW,IAAMA,GAAW,IAC5BA,GAAW,IAAMA,GAAW,KAClB,KAAXA,CAEJ,EAGQ,YAAAb,qBAAR,WACE,IAAK,IAAIH,EAAI,EAAGA,EAAI/B,KAAKV,eAAeY,OAAQ6B,IAC9C/B,KAAK6C,oBAAoBd,EAC7B,EAEQ,YAAAc,oBAAR,SAA4BT,GAC1BpC,KAAKV,eAAe8C,GAAOQ,OACzB5C,KAAKO,cACLP,KAAKN,kBAET,EAEQ,YAAA+D,sBAAR,SAA8BrB,EAAenC,GAC3CD,KAAKV,eAAe8C,GAAOsD,SAAS1F,KAAKO,cAAeN,EAC1D,EAEQ,YAAAoC,4BAAR,SAAoCD,EAAenC,GACjD,OAAOD,KAAKV,eAAe8C,GAAOuD,eAAe1F,EACnD,EAEQ,YAAAuD,2BAAR,SAAmCpB,GACjC,OAAOpC,KAAKV,eAAe8C,GAAOwD,WACpC,EAEQ,YAAAJ,mBAAR,SAA2B3E,GAEzB,IAAMgF,EAAcC,SAAS,IAAMjF,GACnC,GACEkF,MAAMF,IACNhF,EAASX,QAAU2F,EAAYG,WAAW9F,OAAS,EAEnD,OAAO,EAMT,IAHA,IAAI+F,GAAY,EACZC,GAAgB,EAChBC,GAAiB,EACZpE,EAAI,EAAGA,EAAIlB,EAASX,OAAS,EAAG6B,IAAK,CACxClB,EAASkB,IAAMlB,EAASkB,EAAI,KAAIkE,GAAY,GAEhD,IAAMG,EAASN,SAASjF,EAASkB,IAAM,GAErCqE,EAAS,GACoB,GAA7BN,SAASjF,EAASkB,EAAI,KACO,GAA7B+D,SAASjF,EAASkB,EAAI,KAGfqE,GAAU,GAAKA,GAAUN,SAASjF,EAASkB,EAAI,OADtDmE,GAAgB,GAIlB,IAAMG,EAAUP,SAASjF,EAASkB,IAAM,GAE3B,GAAXsE,GAC6B,GAA7BP,SAASjF,EAASkB,EAAI,KACO,GAA7B+D,SAASjF,EAASkB,EAAI,MAGH,GAAZsE,GAA8C,GAA7BP,SAASjF,EAASkB,EAAI,KAEvCsE,GAAW,GAAKA,GAAWP,SAASjF,EAASkB,EAAI,OAHxDoE,GAAiB,E,CAOrB,QAASF,GAAaC,GAAiBC,EACzC,E,iCA/YWG,GAAiB,8B,oCAAjBA,EAAiB,uD,GAAA,K,8eAfjB,CACT,CACEC,QAAS,EAAAC,kBACTC,OAAO,EAEPC,aAAa,IAAAC,aAAW,WAAM,OAAAL,CAAA,KAEhC,CACEC,QAAS,EAAAK,cACTH,OAAO,EAEPC,YAAaJ,MAEhB,2oBD1CH,+BAKE,iCAqDA,kDAMF,qB,MA/DE,6CAA2B,8DAII,8DAsD5B,wE,kQCjCL,GAoaA,aAWE,WACElE,EACA6C,EACA4B,EACAnC,EACAH,GAdF,KAAAU,OAAiB,EACjB,KAAAG,GAAa,GACb,KAAA/G,MAAgB,GAChB,KAAAyI,OAAiB,GACjB,KAAAC,SAAmB,EACnB,KAAAvH,UAAoB,EACpB,KAAAoG,aAAuB,EACvB,KAAAhC,SAAmB,EASjB5D,KAAKoC,MAAQA,EACbpC,KAAKiF,MAAQA,EAEb,IAAM+B,EAAM5E,EAAQ,EACpBpC,KAAKoF,GAAKyB,EAAW,gBAAkBG,EACvChH,KAAK8G,OAAS9G,KAAKiH,UAAUD,GAG3BhH,KAAK3B,MADHqG,GAGW,iBAGf1E,KAAK3B,OAAS,KAAO2B,KAAK8G,OAAS,QACrC,CAwEF,OAtES,YAAAlE,OAAP,SAAcsE,EAAiBC,GAC7B,IAAM5D,EAAQ2D,EAAK/B,SAASnF,KAAKoF,IAEjCpF,KAAKoH,WAAWD,GAChBnH,KAAKqH,YAAY9D,GACjBvD,KAAKsH,WAAW/D,EAClB,EAEO,YAAAmC,SAAP,SAAgBwB,EAAiBjH,GAC/BD,KAAKR,SAAoB,IAATS,EAEFiH,EAAK/B,SAASnF,KAAKoF,IAC3BM,SAASzF,GAEfD,KAAK4F,aAAc,CACrB,EAEO,YAAAD,eAAP,SAAsB1F,GACpBD,KAAK4F,YAAc3F,GAASD,KAAK+G,SAAW/G,KAAKR,QACnD,EAEO,YAAAsC,MAAP,SAAaoF,GAKX,GAJAlH,KAAK+G,SAAU,EACf/G,KAAKR,UAAW,EAChBQ,KAAK4D,SAAU,EAEH,MAARsD,EAAJ,CAEA,IAAM3D,EAAQ2D,EAAK/B,SAASnF,KAAKoF,IACjC7B,EAAMmC,SAAS,IACfnC,EAAMgE,iBACNhE,EAAMiE,iBALkB,CAM1B,EAEO,YAAAzD,UAAP,SAAiBmD,GACVlH,KAAKiF,OAEViC,EAAK/B,SAASnF,KAAKoF,IAAIqC,aACzB,EAEQ,YAAAR,UAAR,SAAkB7E,GAChB,IAAIsF,EAAS,KAEb,OAAQtF,GACN,KAAK,EACHsF,EAAS,KACT,MACF,KAAK,EACHA,EAAS,KACT,MACF,KAAK,EACHA,EAAS,KAIb,OAAOtF,EAAQsF,CACjB,EAEQ,YAAAN,WAAR,SAAmBD,GACjBnH,KAAK+G,QAAU/G,KAAKoC,OAAS+E,CAC/B,EAEQ,YAAAE,YAAR,SAAoB9D,GAClB,IAAMtD,EAAQsD,EAAMtD,MACpBD,KAAKR,SAAoB,MAATS,GAAiBA,EAAM+F,WAAW9F,OAAS,CAC7D,EAEQ,YAAAoH,WAAR,SAAmB/D,GACjBvD,KAAK4D,SAAWL,EAAMhE,QAAUgE,EAAM+B,OAAS/B,EAAMgC,QACvD,EACF,EAxGA,E,kDC5bA,aA0BE,aAFO,KAAAoC,gBAAkB,IAAI,EAAAzI,aAG3Bc,KAAK4H,0BAAyB,EAChC,C,OArBA,sBAAW,uBAAQ,C,IAAnB,WACE,OAAO5H,KAAK6H,SACd,E,gCAqBO,YAAApJ,iBAAP,SAAwBqJ,GACtBA,EAAMxE,iBACNtD,KAAK4H,0BAA0B5H,KAAK6H,UACtC,EAEO,YAAAE,SAAP,WACE,OAAK/H,KAAK3B,MAIH2B,KAAKiC,SAAcjC,KAAK3B,MAAK,WAAgB2B,KAAK3B,MAAK,YAHrD,EAIX,EAEQ,YAAAuJ,yBAAR,SAAiC3H,GAC3BA,IAAUD,KAAK6H,YAInB7H,KAAK6H,UAAY5H,EACjBD,KAAK2H,gBAAgBrH,KAAKL,GAC5B,E,iCA9CW+H,EAAyB,E,oCAAzBA,EAAyB,sSHNtC,gCACE,6BAIE,4CAAS,EAAAvJ,iBAAA,EAAwB,IAGhC,eAAgB,oBAEnB,gCAAsD,eAAgB,oBACxE,8B,MARI,wDAAwB,0BAAxB,CAAwB,sBAAxB,CAAwB,6BAKvB,uDAEmD,uD,sBGRxD,E,mFCQA,0B,yCAWawJ,EAAc,E,mCAAdA,I,wCAFA,GAAE,SAPJ,CACP,EAAAC,aACA,EAAAC,YACA,EAAAC,oBACA,Q,EANJ,E","sources":["webpack://@newday/servicing-main/./src/app/components/show-secret-toggle/show-passcode-toggle.component.ts","webpack://@newday/servicing-main/./src/app/components/show-secret-toggle/show-secret-toggle.component.html","webpack://@newday/servicing-main/./src/app/components/passcode/passcode.component.html","webpack://@newday/servicing-main/./src/app/components/passcode/passcode.component.ts","webpack://@newday/servicing-main/./src/app/components/show-secret-toggle/show-secret-toggle.component.ts","webpack://@newday/servicing-main/./src/app/modules/components/passcode/passcode.module.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { ShowSecretToggleComponent } from './show-secret-toggle.component';\n\n@Component({\n selector: 'show-passcode-toggle',\n templateUrl: './show-secret-toggle.component.html',\n})\nexport class ShowPasscodeToggleComponent extends ShowSecretToggleComponent {\n constructor() {\n super();\n this.label = 'Show/hide passcode';\n this.iconClass = 'passcode-toggle';\n this.dataTestID = 'button-passcode-toggle';\n }\n}\n","\n {{ getLabel() }}\n {{ getLabel() }}\n\n","\n
\n \n \n \n\n  \n  \n  \n
\n\n \n \n\n \n  \n   \n \n \n \n \n\n","import {\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n Validators,\n Validator,\n} from '@angular/forms';\nimport { PasscodeDigit } from './../../services/authentication.service';\nimport {\n LoggedOutEntitlement,\n LoggedOutEntitlementsService,\n} from '../../services/logged-out-entitlements.service';\n\n@Component({\n selector: 'passcode-input',\n templateUrl: './passcode.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n // eslint-disable-next-line no-use-before-define\n useExisting: forwardRef(() => PasscodeComponent),\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n // eslint-disable-next-line no-use-before-define\n useExisting: PasscodeComponent,\n },\n ],\n})\nexport class PasscodeComponent implements OnInit, Validator {\n @Input() passcodeInputs = [true, true, true, true, true, true];\n @Input() labelPrefix: string;\n @Input() ariaDescribedBy: string;\n @Input() isToggleable: boolean = false;\n @Input() checkPasscode: boolean = false;\n @Input() validationErrorPrefix: string = 'Passcode';\n @Input() disabled: boolean = false;\n @Input() inputTabindex: number;\n @ViewChildren('input') inputs: QueryList;\n\n public _name: string = '';\n @Input()\n set name(value: string) {\n if (value.length === 0) return;\n\n this._name = value + '-';\n }\n get name(): string {\n return this._name;\n }\n\n @Output() onInit = new EventEmitter();\n @Output() onUpdate = new EventEmitter();\n @Output() onChangePasscodeVisibility = new EventEmitter();\n\n public loading: boolean = true;\n public passcodeFields: Array = [];\n public passcodeGroup: FormGroup;\n public passcode: Array;\n public valid: boolean = true;\n public inputted: boolean = false;\n public inputHidden: boolean = true;\n public focusedFieldIndex: number = null;\n private control: AbstractControl;\n private onChange: Function = Function.prototype;\n public scaEnabled = false;\n public loadingEntitlements = true;\n\n constructor(\n private loggedOutEntitlementsService: LoggedOutEntitlementsService\n ) {}\n\n ngOnInit() {\n this.bindFields();\n this.initPasscodeFields();\n this.onInit.emit(this.passcodeGroup);\n this.loadEntitlements();\n }\n\n private async loadEntitlements() {\n this.scaEnabled = await this.loggedOutEntitlementsService.hasEntitlement(\n LoggedOutEntitlement.strongCustomerAuthentication\n );\n this.loadingEntitlements = false;\n }\n\n validate(c: AbstractControl): { [key: string]: any } {\n this.control = c;\n\n if (!this.valid) {\n return {\n passcode: true,\n };\n }\n }\n\n writeValue(value: string): void {}\n\n registerOnChange(fn: (_: any) => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: Function): void {}\n\n formatAndPropagateControlValue(): void {\n const passcodeDigits: PasscodeDigit[] = [];\n\n this.passcode.forEach((digit, position) => {\n if (digit !== null) {\n passcodeDigits.push({\n digit,\n position,\n });\n }\n });\n\n this.onChange(passcodeDigits);\n }\n\n public setFocus(): void {\n if (this.inputs == null || this.inputs.length == 0) return;\n\n let first = true;\n this.inputs.forEach((item) => {\n if (!first) return;\n\n first = false;\n item.nativeElement.focus();\n });\n }\n\n public reset(): void {\n this.valid = true;\n this.inputHidden = true;\n this.initPasscodeFields();\n\n for (let i = 0; i < this.passcodeFields.length; i++)\n this.passcodeFields[i].reset(this.passcodeGroup);\n }\n\n public changePasscodeVisibility(isHidden: boolean): void {\n this.inputHidden = isHidden;\n this.updatePasscodeFields();\n this.onChangePasscodeVisibility.emit(isHidden);\n }\n\n public onFocus(index: number): void {\n this.focusedFieldIndex = index;\n this.updatePasscodeFields();\n this.setPasscodeFieldHighlighted(index, true);\n }\n\n public onBlur(index: number): void {\n if (this.focusedFieldIndex == index) this.focusedFieldIndex = null;\n\n this.updatePasscodeFields();\n this.setPasscodeFieldHighlighted(index, false);\n }\n\n public onKeyUp(e: KeyboardEvent, index: number, fieldId: string): void {\n this.restrictInputLength(index, e.target as HTMLInputElement);\n this.update();\n this.updatePasscodeField(index);\n this.focusNextInput(e.keyCode, fieldId);\n }\n\n public onKeyDown(e: KeyboardEvent, index: number): void {\n const specialKeys = [\n 59, 61, 106, 107, 109, 110, 111, 163, 173, 186, 187, 188, 189, 190, 191,\n 192, 219, 220, 221, 222,\n ];\n const isSpecialKey = specialKeys.indexOf(e.keyCode) > -1;\n const isAlphaKey = e.keyCode >= 65 && e.keyCode <= 90;\n const isNumericKey = this.isNumericKey(e.keyCode);\n\n this.updatePasscodeField(index);\n\n // block invalid keys\n if (isAlphaKey || isSpecialKey || (e.shiftKey && isNumericKey)) {\n e.preventDefault();\n return;\n }\n\n // control number input length on keyup\n if (!this.inputHidden) return;\n\n // delete key\n if (e.keyCode == 8) {\n this.setPasscodeFieldValue(index, '');\n return;\n }\n\n // single number input\n const field = e.target as HTMLInputElement;\n if (\n field == null ||\n field.value == null ||\n field.value.length == 0 ||\n !isNumericKey\n )\n return;\n\n // if highlighted clear value\n if (this.isPasscodeFieldHighlighted(index)) {\n this.setPasscodeFieldValue(index, '');\n return;\n }\n\n e.preventDefault();\n }\n\n public hasErrorInAnyField(): boolean {\n return this.passcodeFields.some(\n (passcode: PasscodeField) => passcode.invalid\n );\n }\n\n public onPaste(e: any): void {\n e.preventDefault();\n }\n\n public submit(): void {\n for (let i = 0; i < this.passcodeFields.length; i++)\n this.passcodeFields[i].markDirty(this.passcodeGroup);\n\n this.updatePasscodeFields();\n this.update();\n\n if (this.control) {\n this.control.updateValueAndValidity();\n }\n }\n\n public passcodeAsString(): string {\n if (this.passcode == undefined || this.passcode.length === 0) return '';\n\n return this.passcode.join('');\n }\n\n /* -- private ------ */\n private initPasscodeFields(): void {\n if (this.passcodeInputs == null || this.passcodeInputs.length == 0) {\n this.passcodeFields = new Array();\n return;\n }\n\n const fields = new Array();\n let inputAdded = false;\n for (let i = 0; i < this.passcodeInputs.length; i++) {\n const firstInput = !inputAdded && this.passcodeInputs[i];\n if (firstInput) inputAdded = true;\n\n fields.push(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n new PasscodeField(\n i,\n this.passcodeInputs[i],\n this.name,\n this.labelPrefix,\n firstInput\n )\n );\n }\n\n this.passcodeFields = fields;\n }\n\n private bindFields(): void {\n const groupConfig = {};\n groupConfig[this.name + 'passcodedigit1'] = new FormControl('', [\n Validators.required,\n Validators.pattern('[0-9]'),\n ]);\n groupConfig[this.name + 'passcodedigit2'] = new FormControl('', [\n Validators.required,\n Validators.pattern('[0-9]'),\n ]);\n groupConfig[this.name + 'passcodedigit3'] = new FormControl('', [\n Validators.required,\n Validators.pattern('[0-9]'),\n ]);\n groupConfig[this.name + 'passcodedigit4'] = new FormControl('', [\n Validators.required,\n Validators.pattern('[0-9]'),\n ]);\n groupConfig[this.name + 'passcodedigit5'] = new FormControl('', [\n Validators.required,\n Validators.pattern('[0-9]'),\n ]);\n groupConfig[this.name + 'passcodedigit6'] = new FormControl('', [\n Validators.required,\n Validators.pattern('[0-9]'),\n ]);\n\n this.passcodeGroup = new FormGroup(groupConfig);\n }\n\n private focusNextInput(keyCode: number, fieldId: string): void {\n if (this.inputs == null || this.inputs.length == 0) return;\n\n if (!this.isNumericKey(keyCode)) return;\n\n let focusNext = false;\n this.inputs.forEach((item) => {\n if (focusNext) {\n item.nativeElement.focus();\n focusNext = false;\n }\n\n if (\n item.nativeElement.value.length > 0 &&\n item.nativeElement.getAttribute('name') == fieldId\n )\n focusNext = true;\n });\n }\n\n private update(): void {\n let valid = true;\n let inputted = true;\n const passcode = new Array();\n\n for (let i = 0; i < this.passcodeFields.length; i++) {\n if (!this.passcodeFields[i].input) passcode.push(null);\n else {\n const digit = Number(\n this.passcodeGroup.controls[this.passcodeFields[i].id].value\n );\n if (digit != NaN) passcode.push(digit);\n else passcode.push(null);\n\n const control = this.passcodeGroup.controls[this.passcodeFields[i].id];\n if (control.value === '')\n // && (control.dirty || control.touched))\n inputted = false;\n\n if (!control.valid && (control.dirty || control.touched)) valid = false;\n }\n }\n\n this.passcode = passcode;\n this.inputted = inputted;\n this.valid = this.checkPasscode\n ? valid && this.checkPasscodeValid(this.passcodeAsString())\n : valid;\n\n this.onUpdate.emit(null);\n }\n\n private restrictInputLength(index: number, field: HTMLInputElement): void {\n if (field == null || field.value == null || field.value.length < 2) return;\n\n this.setPasscodeFieldValue(index, field.value.substring(0, 1));\n }\n\n private isNumericKey(keyCode: number) {\n return (\n (keyCode >= 48 && keyCode <= 57) ||\n (keyCode >= 96 && keyCode <= 105) ||\n keyCode == 229\n );\n }\n\n /* -- PasscodeField calls ------ */\n private updatePasscodeFields(): void {\n for (let i = 0; i < this.passcodeFields.length; i++)\n this.updatePasscodeField(i);\n }\n\n private updatePasscodeField(index: number): void {\n this.passcodeFields[index].update(\n this.passcodeGroup,\n this.focusedFieldIndex\n );\n }\n\n private setPasscodeFieldValue(index: number, value: string): void {\n this.passcodeFields[index].setValue(this.passcodeGroup, value);\n }\n\n private setPasscodeFieldHighlighted(index: number, value: boolean): void {\n return this.passcodeFields[index].setHighlighted(value);\n }\n\n private isPasscodeFieldHighlighted(index: number): boolean {\n return this.passcodeFields[index].highlighted;\n }\n\n private checkPasscodeValid(passcode: string): boolean {\n // all digits\n const passcodeNum = parseInt('1' + passcode);\n if (\n isNaN(passcodeNum) ||\n passcode.length != passcodeNum.toString().length - 1\n )\n return false;\n\n // same digit and sequence checks\n let sameDigit = true;\n let isAscSequence = true;\n let isDescSequence = true;\n for (let i = 0; i < passcode.length - 1; i++) {\n if (passcode[i] != passcode[i + 1]) sameDigit = false;\n\n const ascVal = parseInt(passcode[i]) + 1;\n if (\n ascVal > 9 &&\n parseInt(passcode[i + 1]) != 0 &&\n parseInt(passcode[i + 1]) != 1\n )\n isAscSequence = false;\n else if (ascVal <= 9 && ascVal != parseInt(passcode[i + 1]))\n isAscSequence = false;\n\n const descVal = parseInt(passcode[i]) - 1;\n if (\n descVal == 0 &&\n parseInt(passcode[i + 1]) != 0 &&\n parseInt(passcode[i + 1]) != 9\n )\n isDescSequence = false;\n else if (descVal == -1 && parseInt(passcode[i + 1]) != 9)\n isDescSequence = false;\n else if (descVal >= 1 && descVal != parseInt(passcode[i + 1]))\n isDescSequence = false;\n }\n\n return !(sameDigit || isAscSequence || isDescSequence);\n }\n}\n\nclass PasscodeField {\n index: number;\n input: boolean = true;\n id: string = '';\n label: string = '';\n number: string = '';\n focused: boolean = false;\n inputted: boolean = false;\n highlighted: boolean = false;\n invalid: boolean = false;\n\n constructor(\n index: number,\n input: boolean,\n idPrefix: string,\n labelPrefix: string,\n firstInput: boolean\n ) {\n this.index = index;\n this.input = input;\n\n const num = index + 1;\n this.id = idPrefix + 'passcodedigit' + num;\n this.number = this.getNumber(num);\n\n if (labelPrefix) {\n this.label = labelPrefix;\n } else {\n this.label = 'Enter passcode';\n }\n\n this.label += ', ' + this.number + ' digit';\n }\n\n public update(form: FormGroup, focusedIndex: number): void {\n const field = form.controls[this.id];\n\n this.setFocused(focusedIndex);\n this.setInputted(field);\n this.setInvalid(field);\n }\n\n public setValue(form: FormGroup, value: string): void {\n this.inputted = value != '';\n\n const field = form.controls[this.id];\n field.setValue(value);\n\n this.highlighted = false;\n }\n\n public setHighlighted(value: boolean): void {\n this.highlighted = value && this.focused && this.inputted;\n }\n\n public reset(form: FormGroup): void {\n this.focused = false;\n this.inputted = false;\n this.invalid = false;\n\n if (form == null) return;\n\n const field = form.controls[this.id];\n field.setValue('');\n field.markAsPristine();\n field.markAsUntouched();\n }\n\n public markDirty(form: FormGroup): void {\n if (!this.input) return;\n\n form.controls[this.id].markAsDirty();\n }\n\n private getNumber(index: number): string {\n let prefix = 'th';\n\n switch (index) {\n case 1:\n prefix = 'st';\n break;\n case 2:\n prefix = 'nd';\n break;\n case 3:\n prefix = 'rd';\n break;\n }\n\n return index + prefix;\n }\n\n private setFocused(focusedIndex: number): void {\n this.focused = this.index == focusedIndex;\n }\n\n private setInputted(field: AbstractControl): void {\n const value = field.value;\n this.inputted = value != null && value.toString().length > 0;\n }\n\n private setInvalid(field: AbstractControl): void {\n this.invalid = !field.valid && (field.dirty || field.touched);\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'show-secret-toggle',\n templateUrl: './show-secret-toggle.component.html',\n})\nexport class ShowSecretToggleComponent {\n private _isHidden: boolean;\n\n public get isHidden(): boolean {\n return this._isHidden;\n }\n\n @Input()\n public label: string;\n\n @Input()\n public tabindex: number;\n\n @Input()\n public iconClass: string;\n\n @Input()\n public dataTestID: string;\n\n @Output()\n public isHiddenChanged = new EventEmitter();\n\n constructor() {\n this.setIsHiddenAndRaiseEvent(true);\n }\n\n public invertVisibility(event: Event): void {\n event.preventDefault();\n this.setIsHiddenAndRaiseEvent(!this._isHidden);\n }\n\n public getLabel(): string {\n if (!this.label) {\n return '';\n }\n\n return this.isHidden ? `${this.label}, hidden` : `${this.label}, visible`;\n }\n\n private setIsHiddenAndRaiseEvent(value: boolean): void {\n if (value === this._isHidden) {\n return;\n }\n\n this._isHidden = value;\n this.isHiddenChanged.emit(value);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n// components\nimport { PasscodeComponent } from '../../../components/passcode/passcode.component';\n\n// modules\nimport { ShowSecretToggleModule } from '../show-secret-toggle/show-secret-toggle.module';\n\n@NgModule({\n declarations: [PasscodeComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ShowSecretToggleModule,\n ],\n exports: [PasscodeComponent],\n providers: [],\n})\nexport class PasscodeModule {}\n"],"names":["label","iconClass","dataTestID","ShowPasscodeToggleComponent","invertVisibility","loggedOutEntitlementsService","passcodeInputs","isToggleable","checkPasscode","validationErrorPrefix","disabled","_name","onInit","EventEmitter","onUpdate","onChangePasscodeVisibility","loading","passcodeFields","valid","inputted","inputHidden","focusedFieldIndex","onChange","Function","prototype","scaEnabled","loadingEntitlements","this","value","length","ngOnInit","bindFields","initPasscodeFields","emit","passcodeGroup","loadEntitlements","hasEntitlement","validate","c","control","passcode","writeValue","registerOnChange","fn","registerOnTouched","formatAndPropagateControlValue","passcodeDigits","forEach","digit","position","push","setFocus","inputs","first","item","nativeElement","focus","reset","i","changePasscodeVisibility","isHidden","updatePasscodeFields","onFocus","index","setPasscodeFieldHighlighted","onBlur","onKeyUp","e","fieldId","restrictInputLength","target","update","updatePasscodeField","focusNextInput","keyCode","onKeyDown","isSpecialKey","indexOf","isAlphaKey","isNumericKey","shiftKey","preventDefault","field","isPasscodeFieldHighlighted","setPasscodeFieldValue","hasErrorInAnyField","some","invalid","onPaste","submit","markDirty","updateValueAndValidity","passcodeAsString","undefined","join","fields","Array","inputAdded","firstInput","PasscodeField","name","labelPrefix","groupConfig","FormControl","Validators","FormGroup","focusNext","getAttribute","input","Number","controls","id","NaN","dirty","touched","checkPasscodeValid","substring","setValue","setHighlighted","highlighted","passcodeNum","parseInt","isNaN","toString","sameDigit","isAscSequence","isDescSequence","ascVal","descVal","PasscodeComponent","provide","NG_VALUE_ACCESSOR","multi","useExisting","forwardRef","NG_VALIDATORS","idPrefix","number","focused","num","getNumber","form","focusedIndex","setFocused","setInputted","setInvalid","markAsPristine","markAsUntouched","markAsDirty","prefix","isHiddenChanged","setIsHiddenAndRaiseEvent","_isHidden","event","getLabel","ShowSecretToggleComponent","PasscodeModule","CommonModule","FormsModule","ReactiveFormsModule"],"sourceRoot":""}