@sheerid/jslib 2.231.0 → 2.233.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_mysheerid-preview.css +4 -4
- package/_mysheerid-preview.js +25 -25
- package/chunk/{ActiveDutyStartDateComponent-BNwC2c3Y.js → ActiveDutyStartDateComponent-Bva1jSuC.js} +6 -6
- package/chunk/{ActiveDutyStartDateComponent-BNwC2c3Y.js.map → ActiveDutyStartDateComponent-Bva1jSuC.js.map} +1 -1
- package/chunk/{ActiveDutyStartDateComponent-CF9c-0bL.js → ActiveDutyStartDateComponent-DjLuLM5N.js} +6 -6
- package/chunk/{ActiveDutyStartDateComponent-CF9c-0bL.js.map → ActiveDutyStartDateComponent-DjLuLM5N.js.map} +1 -1
- package/chunk/AddressComponent-AiyIPiCz.js +4 -4
- package/chunk/AddressComponent-DV2Wsw6k.js +4 -4
- package/chunk/{CaptchaComponent-CnWyxiTy.js → CaptchaComponent-Blq_Is9l.js} +471 -470
- package/chunk/CaptchaComponent-Blq_Is9l.js.map +1 -0
- package/chunk/{CaptchaComponent-SmUa6m52.js → CaptchaComponent-Ch8H0h-Q.js} +471 -470
- package/chunk/CaptchaComponent-Ch8H0h-Q.js.map +1 -0
- package/chunk/ChangeLocaleComponent-Cu2DR-Q3.js +4 -4
- package/chunk/ChangeLocaleComponent-DUnfgQuX.js +4 -4
- package/chunk/City-BmrJpnS6.js +4 -4
- package/chunk/City-yVVnZQTP.js +4 -4
- package/chunk/{CollegeNameComponent-DtKPZHb-.js → CollegeNameComponent-DE9SHF1U.js} +5 -5
- package/chunk/{CollegeNameComponent-DaTimEqC.js.map → CollegeNameComponent-DE9SHF1U.js.map} +1 -1
- package/chunk/{CollegeNameComponent-DaTimEqC.js → CollegeNameComponent-Ds6XzZ97.js} +5 -5
- package/chunk/{CollegeNameComponent-DtKPZHb-.js.map → CollegeNameComponent-Ds6XzZ97.js.map} +1 -1
- package/chunk/CopyToClipboardComponent-9hyfSMC0.js +4 -4
- package/chunk/CopyToClipboardComponent-H3bJGcOM.js +4 -4
- package/chunk/{CountryComponentWrapper-Ceq-eink.js → CountryComponentWrapper-Bm0vWZt6.js} +5 -5
- package/chunk/{CountryComponentWrapper--2UQ7mXP.js.map → CountryComponentWrapper-Bm0vWZt6.js.map} +1 -1
- package/chunk/{CountryComponentWrapper--2UQ7mXP.js → CountryComponentWrapper-Cd8jQ2X0.js} +5 -5
- package/chunk/{CountryComponentWrapper-Ceq-eink.js.map → CountryComponentWrapper-Cd8jQ2X0.js.map} +1 -1
- package/chunk/DriverLicenseNumberComponent-D9cakdvU.js +4 -4
- package/chunk/DriverLicenseNumberComponent-ziLNYB8e.js +4 -4
- package/chunk/{EBTCardNumberComponent-oYQJ_tP7.js → EBTCardNumberComponent-B0FU-ZTo.js} +6 -6
- package/chunk/{EBTCardNumberComponent-B1kv4R4G.js.map → EBTCardNumberComponent-B0FU-ZTo.js.map} +1 -1
- package/chunk/{EBTCardNumberComponent-B1kv4R4G.js → EBTCardNumberComponent-CIs3mn52.js} +6 -6
- package/chunk/{EBTCardNumberComponent-oYQJ_tP7.js.map → EBTCardNumberComponent-CIs3mn52.js.map} +1 -1
- package/chunk/EmailLoopPending-In0FH-Ap.js +4 -4
- package/chunk/EmailLoopPending-lxRF0bx8.js +4 -4
- package/chunk/{FirstResponderOrganizationComponent-fPxZFdpO.js → FirstResponderOrganizationComponent-BpreqGNN.js} +5 -5
- package/chunk/{FirstResponderOrganizationComponent-Bru1a0U7.js.map → FirstResponderOrganizationComponent-BpreqGNN.js.map} +1 -1
- package/chunk/{FirstResponderOrganizationComponent-Bru1a0U7.js → FirstResponderOrganizationComponent-pU8-QJb-.js} +5 -5
- package/chunk/{FirstResponderOrganizationComponent-fPxZFdpO.js.map → FirstResponderOrganizationComponent-pU8-QJb-.js.map} +1 -1
- package/chunk/{FormFieldInputSelect-o7QZaYhS.js → FormFieldInputSelect-CqYEnYU4.js} +5 -5
- package/chunk/{FormFieldInputSelect-CjWY_ush.js.map → FormFieldInputSelect-CqYEnYU4.js.map} +1 -1
- package/chunk/{FormFieldInputSelect-CjWY_ush.js → FormFieldInputSelect-dcrJSfDS.js} +5 -5
- package/chunk/{FormFieldInputSelect-o7QZaYhS.js.map → FormFieldInputSelect-dcrJSfDS.js.map} +1 -1
- package/chunk/FormFieldLayout-DDEEmlGC.js +4 -4
- package/chunk/FormFieldLayout-DEVPpEyA.js +4 -4
- package/chunk/FormFieldText-CJ-GVpZE.js +4 -4
- package/chunk/FormFieldText-CaWtYVur.js +4 -4
- package/chunk/{FormFieldTypeahead-C6eS7yJg.js → FormFieldTypeahead-8We95dMu.js} +5 -5
- package/chunk/{FormFieldTypeahead-C6eS7yJg.js.map → FormFieldTypeahead-8We95dMu.js.map} +1 -1
- package/chunk/{FormFieldTypeahead-CyKKVK89.js → FormFieldTypeahead-D10k5Acd.js} +5 -5
- package/chunk/{FormFieldTypeahead-CyKKVK89.js.map → FormFieldTypeahead-D10k5Acd.js.map} +1 -1
- package/chunk/{FormSelectChoice-C-rIlDKl.js → FormSelectChoice-BvS7u8GG.js} +11 -11
- package/chunk/{FormSelectChoice-BahCx4wG.js.map → FormSelectChoice-BvS7u8GG.js.map} +1 -1
- package/chunk/{FormSelectChoice-BahCx4wG.js → FormSelectChoice-T5Js-Kan.js} +11 -11
- package/chunk/{FormSelectChoice-C-rIlDKl.js.map → FormSelectChoice-T5Js-Kan.js.map} +1 -1
- package/chunk/InputText-CCNbZmMe.js +4 -4
- package/chunk/InputText-PEiatRRJ.js +4 -4
- package/chunk/{LicensedProfessionalOrganizationComponent-CnR_qF3r.js → LicensedProfessionalOrganizationComponent-CKUKnIOk.js} +5 -5
- package/chunk/{LicensedProfessionalOrganizationComponent-C5pc7hVJ.js.map → LicensedProfessionalOrganizationComponent-CKUKnIOk.js.map} +1 -1
- package/chunk/{LicensedProfessionalOrganizationComponent-C5pc7hVJ.js → LicensedProfessionalOrganizationComponent-DNaPYuVS.js} +5 -5
- package/chunk/{LicensedProfessionalOrganizationComponent-CnR_qF3r.js.map → LicensedProfessionalOrganizationComponent-DNaPYuVS.js.map} +1 -1
- package/chunk/{MedicalProfessionalOrganizationComponent-DBf6V49M.js → MedicalProfessionalOrganizationComponent-Cvx-Z96q.js} +5 -5
- package/chunk/{MedicalProfessionalOrganizationComponent-CXHX25GN.js.map → MedicalProfessionalOrganizationComponent-Cvx-Z96q.js.map} +1 -1
- package/chunk/{MedicalProfessionalOrganizationComponent-CXHX25GN.js → MedicalProfessionalOrganizationComponent-DRiEzR_D.js} +5 -5
- package/chunk/{MedicalProfessionalOrganizationComponent-DBf6V49M.js.map → MedicalProfessionalOrganizationComponent-DRiEzR_D.js.map} +1 -1
- package/chunk/MemberIdComponent-C8mVSo9m.js +4 -4
- package/chunk/MemberIdComponent-oanWSvQh.js +4 -4
- package/chunk/{MembershipOrganizationComponent-CN6_d_Fk.js → MembershipOrganizationComponent-CwkwDdwd.js} +5 -5
- package/chunk/{MembershipOrganizationComponent-CN6_d_Fk.js.map → MembershipOrganizationComponent-CwkwDdwd.js.map} +1 -1
- package/chunk/{MembershipOrganizationComponent-yu-UNXIK.js → MembershipOrganizationComponent-DTCpEuqR.js} +5 -5
- package/chunk/{MembershipOrganizationComponent-yu-UNXIK.js.map → MembershipOrganizationComponent-DTCpEuqR.js.map} +1 -1
- package/chunk/Onfido-BG8cDEVW.js +4 -4
- package/chunk/PersonalInfoStepSubmitButton-j44RdZDq.js +4 -4
- package/chunk/PersonalInfoStepSubmitButton-v_kWLmEw.js +4 -4
- package/chunk/PersonalInfoStepWrapper-BOBNCgik.js +4 -4
- package/chunk/PersonalInfoStepWrapper-PV06WMKL.js +4 -4
- package/chunk/PostalCodeComponent-DrCcV90W.js +4 -4
- package/chunk/PostalCodeComponent-KXVfZkLx.js +4 -4
- package/chunk/SSN-B_z2R4Bx.js +4 -4
- package/chunk/SSN-Hb1lTx8A.js +4 -4
- package/chunk/{StateSelectComponent-CIpB-Rh1.js → StateSelectComponent-B8ImFN5o.js} +5 -5
- package/chunk/{StateSelectComponent-CChSqKXz.js.map → StateSelectComponent-B8ImFN5o.js.map} +1 -1
- package/chunk/{StateSelectComponent-CChSqKXz.js → StateSelectComponent-BJvkEwls.js} +5 -5
- package/chunk/{StateSelectComponent-CIpB-Rh1.js.map → StateSelectComponent-BJvkEwls.js.map} +1 -1
- package/chunk/{StatusComponent-pmuIhuXi.js → StatusComponent-C3iIOm56.js} +5 -5
- package/chunk/{StatusComponent-C6J1B7Tl.js.map → StatusComponent-C3iIOm56.js.map} +1 -1
- package/chunk/{StatusComponent-C6J1B7Tl.js → StatusComponent-DBpJ4nvX.js} +5 -5
- package/chunk/{StatusComponent-pmuIhuXi.js.map → StatusComponent-DBpJ4nvX.js.map} +1 -1
- package/chunk/{StepCard-CIfaQVu-.js → StepCard-CRczNQ4p.js} +6 -6
- package/chunk/{StepCard-CIfaQVu-.js.map → StepCard-CRczNQ4p.js.map} +1 -1
- package/chunk/{StepCard-dcwCtPrW.js → StepCard-DFC9lqEv.js} +6 -6
- package/chunk/{StepCard-dcwCtPrW.js.map → StepCard-DFC9lqEv.js.map} +1 -1
- package/chunk/{StepCollectMilitaryStatusComponent-7aKgQ9Sj.js → StepCollectMilitaryStatusComponent-C-p6hVeK.js} +9 -9
- package/chunk/{StepCollectMilitaryStatusComponent-7aKgQ9Sj.js.map → StepCollectMilitaryStatusComponent-C-p6hVeK.js.map} +1 -1
- package/chunk/{StepCollectMilitaryStatusComponent-BRimaaXv.js → StepCollectMilitaryStatusComponent-DSzS9kou.js} +9 -9
- package/chunk/{StepCollectMilitaryStatusComponent-BRimaaXv.js.map → StepCollectMilitaryStatusComponent-DSzS9kou.js.map} +1 -1
- package/chunk/{StepDriverLicensePersonalInfoComponent-BwVtnrmJ.js → StepDriverLicensePersonalInfoComponent-COgZtQdB.js} +6 -6
- package/chunk/{StepDriverLicensePersonalInfoComponent-2TPYKvF4.js.map → StepDriverLicensePersonalInfoComponent-COgZtQdB.js.map} +1 -1
- package/chunk/{StepDriverLicensePersonalInfoComponent-2TPYKvF4.js → StepDriverLicensePersonalInfoComponent-DXvRC1J2.js} +6 -6
- package/chunk/{StepDriverLicensePersonalInfoComponent-BwVtnrmJ.js.map → StepDriverLicensePersonalInfoComponent-DXvRC1J2.js.map} +1 -1
- package/chunk/{StepGeneralIdentityPersonalInfoComponent-B_GAU5ZU.js → StepGeneralIdentityPersonalInfoComponent-BAwhyp5h.js} +7 -7
- package/chunk/{StepGeneralIdentityPersonalInfoComponent-B_GAU5ZU.js.map → StepGeneralIdentityPersonalInfoComponent-BAwhyp5h.js.map} +1 -1
- package/chunk/{StepGeneralIdentityPersonalInfoComponent-D51YIuCd.js → StepGeneralIdentityPersonalInfoComponent-DDsA_aGz.js} +7 -7
- package/chunk/{StepGeneralIdentityPersonalInfoComponent-D51YIuCd.js.map → StepGeneralIdentityPersonalInfoComponent-DDsA_aGz.js.map} +1 -1
- package/chunk/{StepHybridIdentityPersonalInfoComponent-kap6IZbx.js → StepHybridIdentityPersonalInfoComponent-BLS7aKEN.js} +7 -7
- package/chunk/{StepHybridIdentityPersonalInfoComponent-kap6IZbx.js.map → StepHybridIdentityPersonalInfoComponent-BLS7aKEN.js.map} +1 -1
- package/chunk/{StepHybridIdentityPersonalInfoComponent-zAjPWGNG.js → StepHybridIdentityPersonalInfoComponent-DxYqr80H.js} +7 -7
- package/chunk/{StepHybridIdentityPersonalInfoComponent-zAjPWGNG.js.map → StepHybridIdentityPersonalInfoComponent-DxYqr80H.js.map} +1 -1
- package/chunk/{StepIDCheckLoopOnfido-djTS20UT.js → StepIDCheckLoopOnfido-B9YZcPBj.js} +6 -6
- package/chunk/{StepIDCheckLoopOnfido-Sg4a19wV.js.map → StepIDCheckLoopOnfido-B9YZcPBj.js.map} +1 -1
- package/chunk/{StepIDCheckLoopOnfido-Sg4a19wV.js → StepIDCheckLoopOnfido-DGrckStv.js} +6 -6
- package/chunk/{StepIDCheckLoopOnfido-djTS20UT.js.map → StepIDCheckLoopOnfido-DGrckStv.js.map} +1 -1
- package/chunk/{StepIDCheckLoopRegula-B5I-ojjy.js → StepIDCheckLoopRegula-DjF8ZDnp.js} +5 -5
- package/chunk/{StepIDCheckLoopRegula-B5I-ojjy.js.map → StepIDCheckLoopRegula-DjF8ZDnp.js.map} +1 -1
- package/chunk/{StepIDCheckLoopRegula-DZA5G1Z6.js → StepIDCheckLoopRegula-tRWeYsEe.js} +5 -5
- package/chunk/{StepIDCheckLoopRegula-DZA5G1Z6.js.map → StepIDCheckLoopRegula-tRWeYsEe.js.map} +1 -1
- package/chunk/{StepInactiveMilitaryPersonalInfoComponent-Bieu_7kd.js → StepInactiveMilitaryPersonalInfoComponent-DJAAzlTP.js} +10 -10
- package/chunk/{StepInactiveMilitaryPersonalInfoComponent-Bieu_7kd.js.map → StepInactiveMilitaryPersonalInfoComponent-DJAAzlTP.js.map} +1 -1
- package/chunk/{StepInactiveMilitaryPersonalInfoComponent-Czd3ecq6.js → StepInactiveMilitaryPersonalInfoComponent-dNU8MQlk.js} +10 -10
- package/chunk/{StepInactiveMilitaryPersonalInfoComponent-Czd3ecq6.js.map → StepInactiveMilitaryPersonalInfoComponent-dNU8MQlk.js.map} +1 -1
- package/chunk/{TeacherSchoolComponent-Bf3ZhJ_c.js → TeacherSchoolComponent-CrNBGA88.js} +5 -5
- package/chunk/{TeacherSchoolComponent-BSHPjiwQ.js.map → TeacherSchoolComponent-CrNBGA88.js.map} +1 -1
- package/chunk/{TeacherSchoolComponent-BSHPjiwQ.js → TeacherSchoolComponent-D7tRXy1z.js} +5 -5
- package/chunk/{TeacherSchoolComponent-Bf3ZhJ_c.js.map → TeacherSchoolComponent-D7tRXy1z.js.map} +1 -1
- package/chunk/ar-DRRl0F7-.js +4 -4
- package/chunk/bg-F0WsRCx8.js +4 -4
- package/chunk/bn-IN-CMjQj55J.js +4 -4
- package/chunk/cs-fNk_NoQI.js +4 -4
- package/chunk/da-KMILteCO.js +4 -4
- package/chunk/de-CWVNPgGa.js +4 -4
- package/chunk/downshift.esm-CtrbqQGL.js +4 -4
- package/chunk/downshift.esm-huKBwB2d.js +4 -4
- package/chunk/el-Cwv4peel.js +4 -4
- package/chunk/en-GB-Dqonxi7-.js +4 -4
- package/chunk/es-ES-C4H8ciVZ.js +4 -4
- package/chunk/es-hn_UHPBI.js +4 -4
- package/chunk/fi-CYcXXvjq.js +4 -4
- package/chunk/fr-CA-CGAQ-6AP.js +4 -4
- package/chunk/fr-D_IYCyUP.js +4 -4
- package/chunk/ga-45LsHAEB.js +4 -4
- package/chunk/hi-IN-ChuePzRc.js +4 -4
- package/chunk/hr-CX75fSnP.js +4 -4
- package/chunk/hu-BaLNR_Fx.js +4 -4
- package/chunk/id-BuJILOHQ.js +4 -4
- package/chunk/{index-brtM2eoI.js → index-8Pv9mAlU.js} +8 -8
- package/chunk/{index-brtM2eoI.js.map → index-8Pv9mAlU.js.map} +1 -1
- package/chunk/index-B0SBEWOf.js +4 -4
- package/chunk/index-B4FcNhzB.js +4 -4
- package/chunk/index-BA3bE-f-.js +4 -4
- package/chunk/{index-D62LImgf.js → index-BG38FvB_.js} +8 -8
- package/chunk/{index-CfHHbJNm.js.map → index-BG38FvB_.js.map} +1 -1
- package/chunk/index-BZ1nv-sB.js +4 -4
- package/chunk/index-BbOCWcRK.js +4 -4
- package/chunk/{index-DGCqI3ez.js → index-BgDTx15o.js} +9 -9
- package/chunk/{index-Ccp2Exqo.js.map → index-BgDTx15o.js.map} +1 -1
- package/chunk/{index-Blxi9-p3.js → index-BhTi8pBC.js} +5 -5
- package/chunk/{index-Blxi9-p3.js.map → index-BhTi8pBC.js.map} +1 -1
- package/chunk/index-Bn00xQJF.js +4 -4
- package/chunk/{index-DsIG7oZ5.js → index-Bo42CUOf.js} +17 -17
- package/chunk/{index-DsIG7oZ5.js.map → index-Bo42CUOf.js.map} +1 -1
- package/chunk/{index-CMYxhs0t.js → index-BqorOxSL.js} +9 -9
- package/chunk/{index-CMYxhs0t.js.map → index-BqorOxSL.js.map} +1 -1
- package/chunk/index-Brpm5gN6.js +4 -4
- package/chunk/{index-CTjvQpKK.js → index-C3qLWNqJ.js} +7 -7
- package/chunk/{index-CTjvQpKK.js.map → index-C3qLWNqJ.js.map} +1 -1
- package/chunk/index-CHDBBfsg.js +4 -4
- package/chunk/{index-BDfHyxH2.js → index-COkTEkcG.js} +9 -9
- package/chunk/{index-BDfHyxH2.js.map → index-COkTEkcG.js.map} +1 -1
- package/chunk/index-CR19uOwz.js +4 -4
- package/chunk/index-CTGY1a4m.js +4 -4
- package/chunk/index-CaBrLsal.js +4 -4
- package/chunk/{index-B6DSPaeb.js → index-CaUGE60w.js} +9 -9
- package/chunk/{index-B6DSPaeb.js.map → index-CaUGE60w.js.map} +1 -1
- package/chunk/{index-BKpiJJJ9.js → index-CnoZPKNq.js} +9 -9
- package/chunk/{index-BKpiJJJ9.js.map → index-CnoZPKNq.js.map} +1 -1
- package/chunk/index-CrPc1exn.js +4 -4
- package/chunk/{index-4SoX7nBO.js → index-Ctt3OBcG.js} +8 -8
- package/chunk/{index-DM6d_MOp.js.map → index-Ctt3OBcG.js.map} +1 -1
- package/chunk/{index-CfHHbJNm.js → index-CuIn9psY.js} +8 -8
- package/chunk/{index-D62LImgf.js.map → index-CuIn9psY.js.map} +1 -1
- package/chunk/index-CwaTj-69.js +4 -4
- package/chunk/index-D2d6x5LN.js +4 -4
- package/chunk/index-D7Mqx5na.js +4 -4
- package/chunk/{index-yLck7gVG.js → index-DDOie7I6.js} +8 -8
- package/chunk/{index-yLck7gVG.js.map → index-DDOie7I6.js.map} +1 -1
- package/chunk/index-DFoMYB8K.js +4 -4
- package/chunk/{index-CMwYcIy7.js → index-DG51xMuU.js} +10 -10
- package/chunk/{index-B0gkU4sD.js.map → index-DG51xMuU.js.map} +1 -1
- package/chunk/index-DIkWpujR.js +4 -4
- package/chunk/{index-DM6d_MOp.js → index-DJu2A0Dj.js} +8 -8
- package/chunk/{index-4SoX7nBO.js.map → index-DJu2A0Dj.js.map} +1 -1
- package/chunk/{index-Di4VOQ0c.js → index-DQXlORPg.js} +9 -9
- package/chunk/{index-Di4VOQ0c.js.map → index-DQXlORPg.js.map} +1 -1
- package/chunk/{index-CO75J-sD.js → index-DfWrK5cl.js} +17 -17
- package/chunk/{index-CO75J-sD.js.map → index-DfWrK5cl.js.map} +1 -1
- package/chunk/{index-XxwXcW8j.js → index-Dj6o39Jh.js} +7 -7
- package/chunk/{index-XxwXcW8j.js.map → index-Dj6o39Jh.js.map} +1 -1
- package/chunk/{index-B0gkU4sD.js → index-DlYU3RMt.js} +10 -10
- package/chunk/{index-CMwYcIy7.js.map → index-DlYU3RMt.js.map} +1 -1
- package/chunk/index-EUJqfdiJ.js +4 -4
- package/chunk/{index-Cgw-oCXC.js → index-Fn3AJ3YB.js} +5 -5
- package/chunk/{index-Cgw-oCXC.js.map → index-Fn3AJ3YB.js.map} +1 -1
- package/chunk/{index-Ccp2Exqo.js → index-XS4CFK0d.js} +9 -9
- package/chunk/{index-DGCqI3ez.js.map → index-XS4CFK0d.js.map} +1 -1
- package/chunk/index-dTu4ORna.js +4 -4
- package/chunk/{index-Tt8XFCKg.js → index-kUVTGFsl.js} +9 -9
- package/chunk/{index-Tt8XFCKg.js.map → index-kUVTGFsl.js.map} +1 -1
- package/chunk/is-B3D8NTKa.js +4 -4
- package/chunk/it-CzAy2lzA.js +4 -4
- package/chunk/iw-C9nimuXe.js +4 -4
- package/chunk/ja-BEXgm7zu.js +4 -4
- package/chunk/ko-Ct-zPR2E.js +4 -4
- package/chunk/lo-Di9C_kLP.js +4 -4
- package/chunk/lt-CEBQxuWT.js +4 -4
- package/chunk/{militaryStepHelpers-jW2_4c1l.js → militaryStepHelpers-BINEywf8.js} +5 -5
- package/chunk/{militaryStepHelpers-0OUuQpBw.js.map → militaryStepHelpers-BINEywf8.js.map} +1 -1
- package/chunk/{militaryStepHelpers-0OUuQpBw.js → militaryStepHelpers-CqXwxXhq.js} +5 -5
- package/chunk/{militaryStepHelpers-jW2_4c1l.js.map → militaryStepHelpers-CqXwxXhq.js.map} +1 -1
- package/chunk/mocks-CeAm-JFs.js +4 -4
- package/chunk/mocks-ClJ0M6QH.js +4 -4
- package/chunk/ms-CxGIGN7C.js +4 -4
- package/chunk/nl-BE-DPBUnfk6.js +4 -4
- package/chunk/nl-BIm7MF9X.js +4 -4
- package/chunk/no-BmBisNVx.js +4 -4
- package/chunk/pl-BOGNzi_o.js +4 -4
- package/chunk/pt-BR-uABX_syI.js +4 -4
- package/chunk/pt-MSESKPWr.js +4 -4
- package/chunk/ro-DoSzUhte.js +4 -4
- package/chunk/ru-_re-OOAp.js +4 -4
- package/chunk/sk-BS3zToE5.js +4 -4
- package/chunk/sl-CVBUMpyN.js +4 -4
- package/chunk/sr-Cmqfavur.js +4 -4
- package/chunk/sv-BzRp9aoC.js +4 -4
- package/chunk/sw-C4I4Ivyc.js +4 -4
- package/chunk/th-SsMlrFQN.js +4 -4
- package/chunk/tr-i4hcCWIF.js +4 -4
- package/chunk/uk-CLl1S03h.js +4 -4
- package/chunk/ur-CfVN1Pr2.js +4 -4
- package/chunk/useCollectFieldsEndpoint-Cd6d_u47.js +4 -4
- package/chunk/useCollectFieldsEndpoint-DqTjyVEr.js +4 -4
- package/chunk/useMetrics-D2fG6cgw.js +4 -4
- package/chunk/useMetrics-wq7yrL0b.js +4 -4
- package/chunk/vi-STS0AV-q.js +4 -4
- package/chunk/zh-HK-DGm6tmJZ.js +4 -4
- package/chunk/zh-rPW1DJOh.js +4 -4
- package/chunk/zu-D7Vc6viT.js +4 -4
- package/package.json +1 -1
- package/sheerid-install.css +4 -4
- package/sheerid-install.js +36 -36
- package/sheerid-install.js.map +1 -1
- package/sheerid.css +5 -5
- package/sheerid.js +25 -25
- package/chunk/CaptchaComponent-CnWyxiTy.js.map +0 -1
- package/chunk/CaptchaComponent-SmUa6m52.js.map +0 -1
package/chunk/uk-CLl1S03h.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This file is not intended for use in other contexts and there are no guarantees about its behavior outside of MySheerID.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* VERSION: 2.
|
|
8
|
-
* BUILD_TIMESTAMP:
|
|
9
|
-
* BUILD_DATE:
|
|
10
|
-
* BUILD_COMMIT:
|
|
7
|
+
* VERSION: 2.233.0
|
|
8
|
+
* BUILD_TIMESTAMP: 1779293766865
|
|
9
|
+
* BUILD_DATE: Wed May 20 2026 16:16:06 GMT+0000 (Coordinated Universal Time)
|
|
10
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
11
11
|
*/
|
|
12
12
|
const e = {
|
|
13
13
|
"defaultMessages.ACTIVE_DUTY": "Дійсна служба",
|
package/chunk/ur-CfVN1Pr2.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This file is not intended for use in other contexts and there are no guarantees about its behavior outside of MySheerID.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* VERSION: 2.
|
|
8
|
-
* BUILD_TIMESTAMP:
|
|
9
|
-
* BUILD_DATE:
|
|
10
|
-
* BUILD_COMMIT:
|
|
7
|
+
* VERSION: 2.233.0
|
|
8
|
+
* BUILD_TIMESTAMP: 1779293766865
|
|
9
|
+
* BUILD_DATE: Wed May 20 2026 16:16:06 GMT+0000 (Coordinated Universal Time)
|
|
10
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
11
11
|
*/
|
|
12
12
|
const e = {
|
|
13
13
|
"defaultMessages.ACTIVE_DUTY": "سرگرم ڈیوٹی",
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This file is not intended for use in other contexts and there are no guarantees about its behavior outside of MySheerID.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* VERSION: 2.
|
|
8
|
-
* BUILD_TIMESTAMP:
|
|
9
|
-
* BUILD_DATE:
|
|
10
|
-
* BUILD_COMMIT:
|
|
7
|
+
* VERSION: 2.233.0
|
|
8
|
+
* BUILD_TIMESTAMP: 1779293766865
|
|
9
|
+
* BUILD_DATE: Wed May 20 2026 16:16:06 GMT+0000 (Coordinated Universal Time)
|
|
10
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
11
11
|
*/
|
|
12
12
|
import { u as R, R as o, f as g, h as n, l as h } from "../_mysheerid-preview.js";
|
|
13
13
|
const A = ({
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
* VERSION: 2.
|
|
4
|
-
* BUILD_TIMESTAMP:
|
|
5
|
-
* BUILD_DATE:
|
|
6
|
-
* BUILD_COMMIT:
|
|
3
|
+
* VERSION: 2.233.0
|
|
4
|
+
* BUILD_TIMESTAMP: 1779293745497
|
|
5
|
+
* BUILD_DATE: Wed May 20 2026 16:15:45 GMT+0000 (Coordinated Universal Time)
|
|
6
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
7
7
|
*/
|
|
8
8
|
import { u as R, R as o, f as g, h as n, l as h } from "../sheerid.js";
|
|
9
9
|
const A = ({
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This file is not intended for use in other contexts and there are no guarantees about its behavior outside of MySheerID.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* VERSION: 2.
|
|
8
|
-
* BUILD_TIMESTAMP:
|
|
9
|
-
* BUILD_DATE:
|
|
10
|
-
* BUILD_COMMIT:
|
|
7
|
+
* VERSION: 2.233.0
|
|
8
|
+
* BUILD_TIMESTAMP: 1779293766865
|
|
9
|
+
* BUILD_DATE: Wed May 20 2026 16:16:06 GMT+0000 (Coordinated Universal Time)
|
|
10
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
11
11
|
*/
|
|
12
12
|
import { R as i, q as h, e as s, l as u } from "../_mysheerid-preview.js";
|
|
13
13
|
const d = "collect-info-submission-time", m = "collect-info-submit", C = "doc-upload-submit", g = "doc-upload-submission-time", l = () => Math.random().toString(36).substr(2, 9), S = {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
* VERSION: 2.
|
|
4
|
-
* BUILD_TIMESTAMP:
|
|
5
|
-
* BUILD_DATE:
|
|
6
|
-
* BUILD_COMMIT:
|
|
3
|
+
* VERSION: 2.233.0
|
|
4
|
+
* BUILD_TIMESTAMP: 1779293745497
|
|
5
|
+
* BUILD_DATE: Wed May 20 2026 16:15:45 GMT+0000 (Coordinated Universal Time)
|
|
6
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
7
7
|
*/
|
|
8
8
|
import { R as i, q as h, e as s, l as u } from "../sheerid.js";
|
|
9
9
|
const d = "collect-info-submission-time", m = "collect-info-submit", C = "doc-upload-submit", g = "doc-upload-submission-time", l = () => Math.random().toString(36).substr(2, 9), S = {
|
package/chunk/vi-STS0AV-q.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This file is not intended for use in other contexts and there are no guarantees about its behavior outside of MySheerID.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* VERSION: 2.
|
|
8
|
-
* BUILD_TIMESTAMP:
|
|
9
|
-
* BUILD_DATE:
|
|
10
|
-
* BUILD_COMMIT:
|
|
7
|
+
* VERSION: 2.233.0
|
|
8
|
+
* BUILD_TIMESTAMP: 1779293766865
|
|
9
|
+
* BUILD_DATE: Wed May 20 2026 16:16:06 GMT+0000 (Coordinated Universal Time)
|
|
10
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
11
11
|
*/
|
|
12
12
|
const e = {
|
|
13
13
|
"defaultMessages.ACTIVE_DUTY": "Đang Tại Ngũ",
|
package/chunk/zh-HK-DGm6tmJZ.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This file is not intended for use in other contexts and there are no guarantees about its behavior outside of MySheerID.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* VERSION: 2.
|
|
8
|
-
* BUILD_TIMESTAMP:
|
|
9
|
-
* BUILD_DATE:
|
|
10
|
-
* BUILD_COMMIT:
|
|
7
|
+
* VERSION: 2.233.0
|
|
8
|
+
* BUILD_TIMESTAMP: 1779293766865
|
|
9
|
+
* BUILD_DATE: Wed May 20 2026 16:16:06 GMT+0000 (Coordinated Universal Time)
|
|
10
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
11
11
|
*/
|
|
12
12
|
const e = {
|
|
13
13
|
"defaultMessages.ACTIVE_DUTY": "現役",
|
package/chunk/zh-rPW1DJOh.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This file is not intended for use in other contexts and there are no guarantees about its behavior outside of MySheerID.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* VERSION: 2.
|
|
8
|
-
* BUILD_TIMESTAMP:
|
|
9
|
-
* BUILD_DATE:
|
|
10
|
-
* BUILD_COMMIT:
|
|
7
|
+
* VERSION: 2.233.0
|
|
8
|
+
* BUILD_TIMESTAMP: 1779293766865
|
|
9
|
+
* BUILD_DATE: Wed May 20 2026 16:16:06 GMT+0000 (Coordinated Universal Time)
|
|
10
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
11
11
|
*/
|
|
12
12
|
const e = {
|
|
13
13
|
"defaultMessages.ACTIVE_DUTY": "现役",
|
package/chunk/zu-D7Vc6viT.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* This file is not intended for use in other contexts and there are no guarantees about its behavior outside of MySheerID.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
* VERSION: 2.
|
|
8
|
-
* BUILD_TIMESTAMP:
|
|
9
|
-
* BUILD_DATE:
|
|
10
|
-
* BUILD_COMMIT:
|
|
7
|
+
* VERSION: 2.233.0
|
|
8
|
+
* BUILD_TIMESTAMP: 1779293766865
|
|
9
|
+
* BUILD_DATE: Wed May 20 2026 16:16:06 GMT+0000 (Coordinated Universal Time)
|
|
10
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
11
11
|
*/
|
|
12
12
|
const e = {
|
|
13
13
|
"defaultMessages.ACTIVE_DUTY": "Umsebenzi Engiwenzayo",
|
package/package.json
CHANGED
package/sheerid-install.css
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
* VERSION: 2.
|
|
4
|
-
* BUILD_TIMESTAMP:
|
|
5
|
-
* BUILD_DATE:
|
|
6
|
-
* BUILD_COMMIT:
|
|
3
|
+
* VERSION: 2.233.0
|
|
4
|
+
* BUILD_TIMESTAMP: 1779293765206
|
|
5
|
+
* BUILD_DATE: Wed May 20 2026 16:16:05 GMT+0000 (Coordinated Universal Time)
|
|
6
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
7
7
|
*/
|
|
8
8
|
.sid-inline-iframe{border:0;height:100%;min-width:32rem}.sid-modal__wrapper{background:#fff;border-radius:5px;box-shadow:#989898 10px 10px 15px;left:50%;max-height:calc(100% - 80px);opacity:0;outline:none;overflow-y:auto;position:fixed;top:50%;transform:translate(-50%,-50%);transition:opacity .3s linear;width:32rem;z-index:9998}.sid-modal__wrapper.fade-in{opacity:1}.sid-modal__iframe{border:0;display:block;height:100%;min-width:250px;width:100%}.sid-modal__close-button{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:flex;flex-direction:row;position:absolute;right:10px;text-decoration:none;top:10px;z-index:9999}.sid-modal__close-icon{background-image:url(https://services.sheerid.com/jsapi/img/btn1.png);background-repeat:no-repeat;filter:brightness(25%);height:20px;width:20px}.sid-modal__close-text{color:#000;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:var(--sheerid-font-size-body);margin-right:5px}.sid-modal__overlay{background-color:#b3b3b3;height:100%;left:0;opacity:0;position:fixed;top:0;transition:opacity .3s linear;width:100%;z-index:9997}.sid-modal__overlay.fade-in{opacity:.75}@media(max-width:620px){.sid-modal__wrapper{max-width:calc(100vw - 1rem)}}@media(max-width:32rem){.sid-inline-iframe{min-width:calc(100vw - 1rem);width:100%}}
|
package/sheerid-install.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
* VERSION: 2.
|
|
4
|
-
* BUILD_TIMESTAMP:
|
|
5
|
-
* BUILD_DATE:
|
|
6
|
-
* BUILD_COMMIT:
|
|
3
|
+
* VERSION: 2.233.0
|
|
4
|
+
* BUILD_TIMESTAMP: 1779293765206
|
|
5
|
+
* BUILD_DATE: Wed May 20 2026 16:16:05 GMT+0000 (Coordinated Universal Time)
|
|
6
|
+
* BUILD_COMMIT: af3eefec141e5dda945559406ba048843622f3b9
|
|
7
7
|
*/
|
|
8
|
-
const
|
|
8
|
+
const v = {}, g = async () => v, _ = () => window.navigator.globalPrivacyControl, l = () => window.NREUM && !_();
|
|
9
9
|
let d = 4, r = "";
|
|
10
|
-
const
|
|
10
|
+
const E = {
|
|
11
11
|
info: 1,
|
|
12
12
|
log: 2,
|
|
13
13
|
warn: 3,
|
|
@@ -19,14 +19,14 @@ const u = {
|
|
|
19
19
|
warn: "#f6b13f",
|
|
20
20
|
error: "#e12046"
|
|
21
21
|
}, f = "color: white; font-weight: bold; padding: 2px 10px;";
|
|
22
|
-
let
|
|
22
|
+
let b = () => ({});
|
|
23
23
|
const T = (i) => i && i.stack && i.message, m = (...i) => {
|
|
24
24
|
d <= 3 && console.warn(`%c${r} warn`, `background: ${h.warn};${f}`, ...i);
|
|
25
|
-
},
|
|
25
|
+
}, A = (...i) => {
|
|
26
26
|
d <= 2 && console.log(`%c${r} log`, `background: ${h.log};${f}`, ...i);
|
|
27
|
-
},
|
|
27
|
+
}, M = (...i) => {
|
|
28
28
|
d <= 1 && console.log(`%c${r} info`, `background: ${h.info};${f}`, ...i);
|
|
29
|
-
},
|
|
29
|
+
}, U = async (i, e = "unknown group", t = {}) => {
|
|
30
30
|
if (d <= 4) {
|
|
31
31
|
if (!i) {
|
|
32
32
|
console.error(new Error("An error must be supplied"));
|
|
@@ -41,19 +41,19 @@ const T = (i) => i && i.stack && i.message, m = (...i) => {
|
|
|
41
41
|
...o
|
|
42
42
|
}, delete o.jslibVersionActual;
|
|
43
43
|
} catch (a) {
|
|
44
|
-
|
|
44
|
+
l() ? window.NREUM.noticeError(s, o) : m("Unable to assemble GA error attributes", a);
|
|
45
45
|
}
|
|
46
46
|
try {
|
|
47
|
-
const a =
|
|
47
|
+
const a = b();
|
|
48
48
|
o = {
|
|
49
49
|
...o,
|
|
50
50
|
...a,
|
|
51
51
|
...t
|
|
52
52
|
};
|
|
53
53
|
} catch (a) {
|
|
54
|
-
|
|
54
|
+
l() ? window.NREUM.noticeError(s, o) : m("Unable to assemble useful error attributes", a);
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
l() && window.NREUM.noticeError(s, o), console.error(
|
|
57
57
|
`%c${r} error`,
|
|
58
58
|
`background: ${h.error};${f}`,
|
|
59
59
|
s,
|
|
@@ -61,33 +61,33 @@ const T = (i) => i && i.stack && i.message, m = (...i) => {
|
|
|
61
61
|
);
|
|
62
62
|
}
|
|
63
63
|
}, S = (i, e = {}) => {
|
|
64
|
-
|
|
64
|
+
l() && window.NREUM.addPageAction(i, e);
|
|
65
65
|
}, O = (i, e) => {
|
|
66
66
|
S("API-calls-timing", {
|
|
67
67
|
api_call: i,
|
|
68
68
|
api_response_time: e
|
|
69
69
|
});
|
|
70
|
-
},
|
|
71
|
-
error:
|
|
70
|
+
}, w = {
|
|
71
|
+
error: U,
|
|
72
72
|
warn: m,
|
|
73
|
-
log:
|
|
74
|
-
info:
|
|
73
|
+
log: A,
|
|
74
|
+
info: M,
|
|
75
75
|
/** @deprecated use newRelicPageAction() instead */
|
|
76
76
|
logAPIResponseTime: O,
|
|
77
77
|
setLogLevel: (i) => {
|
|
78
|
-
if (!
|
|
78
|
+
if (!E.hasOwnProperty(i))
|
|
79
79
|
throw new Error(`Unknown logLevel '${i}'`);
|
|
80
|
-
d =
|
|
80
|
+
d = E[i], console.log(
|
|
81
81
|
`%c${r} log level set to ${i}`,
|
|
82
82
|
// @ts-ignore
|
|
83
83
|
`background: ${h[i]};${f}`
|
|
84
|
-
),
|
|
84
|
+
), l() || m("Offsite logging not enabled");
|
|
85
85
|
},
|
|
86
86
|
setPrefix: (i) => {
|
|
87
87
|
r = i;
|
|
88
88
|
},
|
|
89
89
|
init: (i) => {
|
|
90
|
-
|
|
90
|
+
b = i;
|
|
91
91
|
}
|
|
92
92
|
}, y = "installPageUrl", N = "installType";
|
|
93
93
|
class P {
|
|
@@ -137,7 +137,7 @@ const C = (i) => {
|
|
|
137
137
|
i.forEach((e) => {
|
|
138
138
|
e.classList.add("fade-in");
|
|
139
139
|
});
|
|
140
|
-
},
|
|
140
|
+
}, L = (i, e) => {
|
|
141
141
|
i.classList.remove("fade-in"), window.setTimeout(() => {
|
|
142
142
|
document.body.style.overflow = "auto", i.parentNode.removeChild(i);
|
|
143
143
|
}, e);
|
|
@@ -154,18 +154,18 @@ const C = (i) => {
|
|
|
154
154
|
CLOSE_BUTTON: "sid-modal__close-button",
|
|
155
155
|
CLOSE_TEXT: "sid-modal__close-text",
|
|
156
156
|
CLOSE_ICON: "sid-modal__close-icon"
|
|
157
|
-
},
|
|
157
|
+
}, p = "SheerID Verification Form", n = {
|
|
158
158
|
CLASS_NAMES: B,
|
|
159
159
|
DEFAULT_MOBILE_THRESHOLD_WIDTH: 620,
|
|
160
160
|
MODAL_OPACITY_TRANSITION_PERIOD: 300
|
|
161
161
|
}, x = {
|
|
162
162
|
className: n.CLASS_NAMES.INLINE_IFRAME_CONTENT,
|
|
163
|
-
title:
|
|
163
|
+
title: p
|
|
164
164
|
}, D = (i) => {
|
|
165
165
|
if (typeof i != "function")
|
|
166
166
|
throw new Error(`Expected type "function", but received ${typeof i}`);
|
|
167
167
|
};
|
|
168
|
-
class
|
|
168
|
+
class c extends R {
|
|
169
169
|
containerElement;
|
|
170
170
|
verificationUrl;
|
|
171
171
|
isMobileDevice;
|
|
@@ -177,7 +177,7 @@ class l extends R {
|
|
|
177
177
|
onCleanupEvents = [];
|
|
178
178
|
installType = "cdn_inline_iframe";
|
|
179
179
|
constructor(e, t) {
|
|
180
|
-
super(),
|
|
180
|
+
super(), c.isValidHttpUrl(t) ? (this.containerElement = e, this.verificationUrl = new URL(I(t)), this.verificationIframeUid = c.createUniqueId()) : w.error("Invalid URL. Provide a proper URL: https://example.com/", "iframe url");
|
|
181
181
|
}
|
|
182
182
|
cleanup() {
|
|
183
183
|
this.onCleanupEvents.forEach((e) => e());
|
|
@@ -206,7 +206,7 @@ class l extends R {
|
|
|
206
206
|
try {
|
|
207
207
|
D(e);
|
|
208
208
|
} catch {
|
|
209
|
-
|
|
209
|
+
w.error("Invalid callback provided to iFrame.onLoad()", "iframe addOnLoadEvent");
|
|
210
210
|
return;
|
|
211
211
|
}
|
|
212
212
|
this.hasLoaded ? e() : this.onLoadEvents.push(e);
|
|
@@ -260,7 +260,7 @@ class l extends R {
|
|
|
260
260
|
e && this.createIframe(x), this.addActionListener(), this.containerElement.appendChild(this.iframe);
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
|
-
class
|
|
263
|
+
class u {
|
|
264
264
|
verificationUrl;
|
|
265
265
|
redirectOnMobile;
|
|
266
266
|
overlay;
|
|
@@ -274,7 +274,7 @@ class p {
|
|
|
274
274
|
stopPropagation;
|
|
275
275
|
constructor(e, t) {
|
|
276
276
|
const s = t.mobileThreshold ? t.mobileThreshold : n.DEFAULT_MOBILE_THRESHOLD_WIDTH;
|
|
277
|
-
this.verificationUrl = I(e), this.redirectOnMobile = t.mobileRedirect || !1, this.isMobileDevice = window.document.body.clientWidth <= Number(s), this.closeButtonText = t.closeButtonText ? t.closeButtonText : "", this.closeButton = null, this.stopPropagation = t.stopPropagation || !1, this.overlay =
|
|
277
|
+
this.verificationUrl = I(e), this.redirectOnMobile = t.mobileRedirect || !1, this.isMobileDevice = window.document.body.clientWidth <= Number(s), this.closeButtonText = t.closeButtonText ? t.closeButtonText : "", this.closeButton = null, this.stopPropagation = t.stopPropagation || !1, this.overlay = u.createOverlay(), this.wrapper = this.createWrapper(), this.addFocusListener();
|
|
278
278
|
}
|
|
279
279
|
createCloseBtn() {
|
|
280
280
|
if (this.closeButton = document.createElement("button"), this.closeButton.classList.add(n.CLASS_NAMES.CLOSE_BUTTON), this.closeButton.setAttribute("aria-label", "close"), this.closeButtonText) {
|
|
@@ -289,7 +289,7 @@ class p {
|
|
|
289
289
|
closeModal() {
|
|
290
290
|
window.removeEventListener("popstate", this.popStateEventHandler);
|
|
291
291
|
const e = n.MODAL_OPACITY_TRANSITION_PERIOD;
|
|
292
|
-
|
|
292
|
+
L(this.overlay, e), L(this.wrapper, e), this.iframeInstance.cleanup();
|
|
293
293
|
}
|
|
294
294
|
static createOverlay() {
|
|
295
295
|
const e = document.createElement("div");
|
|
@@ -297,10 +297,10 @@ class p {
|
|
|
297
297
|
}
|
|
298
298
|
createWrapper() {
|
|
299
299
|
const e = document.createElement("div");
|
|
300
|
-
e.classList.add(n.CLASS_NAMES.MODAL_WRAPPER), e.tabIndex = -1, e.setAttribute("role", "dialog"), e.appendChild(this.createCloseBtn()), this.iframeInstance = new
|
|
300
|
+
e.classList.add(n.CLASS_NAMES.MODAL_WRAPPER), e.tabIndex = -1, e.setAttribute("role", "dialog"), e.setAttribute("aria-modal", "true"), e.setAttribute("aria-label", p), e.appendChild(this.createCloseBtn()), this.iframeInstance = new c(e, this.verificationUrl), this.iframeInstance.setInstallType("cdn_modal_iframe"), this.on = this.iframeInstance.on.bind(this.iframeInstance), this.once = this.iframeInstance.once.bind(this.iframeInstance);
|
|
301
301
|
const t = {
|
|
302
302
|
className: n.CLASS_NAMES.MODAL_IFRAME,
|
|
303
|
-
title:
|
|
303
|
+
title: p
|
|
304
304
|
};
|
|
305
305
|
return this.iframeInstance.createIframe(t), e.appendChild(this.iframeInstance.iframe), e;
|
|
306
306
|
}
|
|
@@ -334,11 +334,11 @@ class p {
|
|
|
334
334
|
}
|
|
335
335
|
}
|
|
336
336
|
function $(i, e) {
|
|
337
|
-
const t = new
|
|
337
|
+
const t = new c(i, e);
|
|
338
338
|
return t.init(), t;
|
|
339
339
|
}
|
|
340
340
|
function k(i, e = {}) {
|
|
341
|
-
const t = new
|
|
341
|
+
const t = new u(i, e);
|
|
342
342
|
return t.init(), t;
|
|
343
343
|
}
|
|
344
344
|
const H = { loadInModal: k, loadInlineIframe: $ };
|
package/sheerid-install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheerid-install.js","sources":["../../packages/shared/src/utils/gaHelpers.ts","../../packages/shared/src/utils/logger/logger.ts","../src/constants.ts","../src/lib/hooks/eventEmitter.ts","../src/lib/installScript/utils.ts","../src/lib/installScript/constants.ts","../src/lib/installScript/iframe.ts","../src/lib/installScript/modal.ts","../src/lib/installScript/index.ts"],"sourcesContent":["//\n// NOTE this file is high risk for circular dependencies! Avoid imports, or double check that they don't create circular deps\n//\n\nimport type { NavigatorBeta } from \"../types/runtimeTypes\";\n\n/**\n * A singleton to allow access to user properties that we've set on GA without\n * querying GA directly. This is primarily used to also send them to New Relic.\n */\nconst _attrCache: Record<string, unknown> = {};\n\nexport const setGaAttributes = (attrs: Record<string, unknown>): void =>\n Object.entries(attrs).forEach(([k, v]) => {\n _attrCache[k] = v;\n });\n\nexport const getGaAttributes = async (): Promise<object> => _attrCache;\n\nexport const doNotTrack = () => (window.navigator as NavigatorBeta).globalPrivacyControl;\n\nexport const isNewRelicAvailable = () => (window as any).NREUM && !doNotTrack();\n","/* eslint no-console:0 */\n// ~~~ This file and its tests are the only files that should disable \"no-console\" ~~~\n\nimport { getGaAttributes, isNewRelicAvailable } from \"../gaHelpers\";\n\nexport type LogLevel = \"info\" | \"log\" | \"warn\" | \"error\" | \"silent\";\n\nlet logLevel = 4; // default\nlet prefix = \"\";\nconst logLevels = {\n info: 1,\n log: 2,\n warn: 3,\n error: 4,\n silent: 5,\n};\n\nconst colors = {\n info: \"#26c1db\",\n log: \"#09f979\",\n warn: \"#f6b13f\",\n error: \"#e12046\",\n};\n\nconst standardStyles = \"color: white; font-weight: bold; padding: 2px 10px;\";\n\nlet getUsefulState: () => Record<string, any> = () => ({});\n\nconst isError = (e: any) => e && e.stack && e.message;\n\nconst warn = (...args: any[]) => {\n if (logLevel <= 3) {\n console.warn(`%c${prefix} warn`, `background: ${colors.warn};${standardStyles}`, ...args);\n }\n};\n\nconst log = (...args: any[]) => {\n if (logLevel <= 2) {\n console.log(`%c${prefix} log`, `background: ${colors.log};${standardStyles}`, ...args);\n }\n};\n\nconst info = (...args: any[]) => {\n if (logLevel <= 1) {\n console.log(`%c${prefix} info`, `background: ${colors.info};${standardStyles}`, ...args);\n }\n};\n\n/**\n * @param error Primary, details error message or full error object\n * @param errorMessageGroup Use this to group error messages together with a string that does not vary as frequently.\n * Do not pass programId, verificationId, etc\n */\nconst error = async (\n err: Error | string,\n errorMessageGroup: string = \"unknown group\",\n additionalUsefulAttributes: { [a: string]: string } = {},\n) => {\n if (logLevel <= 4) {\n if (!err) {\n console.error(new Error(\"An error must be supplied\"));\n return;\n }\n\n let errorObj: Error | undefined;\n if (typeof err === \"string\") errorObj = new Error(err);\n if (isError(err)) errorObj = err as Error;\n if (!errorObj) errorObj = new Error(\"Unknown error\");\n\n let usefulAttributes: object = { errorMessageGroup };\n\n // #region Google Analytics\n // Include everything we can from Google Analytics' data b/c that's useful:\n try {\n const gaAttributes = await getGaAttributes();\n\n usefulAttributes = {\n ...gaAttributes,\n ...usefulAttributes,\n };\n delete (usefulAttributes as any).jslibVersionActual; // used by GA not New Relic (duplicated)\n } catch (e) {\n if (isNewRelicAvailable()) {\n (window as any).NREUM.noticeError(errorObj, usefulAttributes);\n } else {\n // Some customers can't install New Relic so this is not an error:\n warn(\"Unable to assemble GA error attributes\", e);\n }\n }\n // #endregion Google Analytics\n\n // #region App State (formerly Redux)\n try {\n const stateAttributes = getUsefulState();\n usefulAttributes = {\n ...usefulAttributes,\n ...stateAttributes,\n ...additionalUsefulAttributes,\n };\n } catch (e) {\n if (isNewRelicAvailable()) {\n (window as any).NREUM.noticeError(errorObj, usefulAttributes);\n } else {\n // Some customers can't install New Relic so this is not an error:\n warn(\"Unable to assemble useful error attributes\", e);\n }\n }\n // #endregion App State\n\n if (isNewRelicAvailable()) {\n (window as any).NREUM.noticeError(errorObj, usefulAttributes);\n }\n\n console.error(\n `%c${prefix} error`,\n `background: ${colors.error};${standardStyles}`,\n errorObj,\n usefulAttributes,\n );\n }\n};\n\nexport const newRelicPageAction = (eventName: string, attributes = {}) => {\n if (isNewRelicAvailable()) {\n (window as any).NREUM.addPageAction(eventName, attributes);\n }\n};\n\n/**\n * @deprecated Use newRelicPageAction() instead\n */\nconst logAPIResponseTime = (url: string, time: number) => {\n newRelicPageAction(\"API-calls-timing\", {\n api_call: url,\n api_response_time: time,\n });\n};\n\nexport const logger = {\n error,\n warn,\n log,\n info,\n /** @deprecated use newRelicPageAction() instead */\n logAPIResponseTime,\n setLogLevel: (desiredLogLevel: LogLevel) => {\n // @ts-ignore\n if (!logLevels.hasOwnProperty(desiredLogLevel)) {\n throw new Error(`Unknown logLevel '${desiredLogLevel}'`);\n }\n\n // @ts-ignore\n logLevel = logLevels[desiredLogLevel];\n console.log(\n `%c${prefix} log level set to ${desiredLogLevel}`,\n // @ts-ignore\n `background: ${colors[desiredLogLevel]};${standardStyles}`,\n );\n\n // Some customers can't install New Relic so this is not an error:\n if (!isNewRelicAvailable()) {\n warn(\"Offsite logging not enabled\");\n }\n },\n setPrefix: (thisPrefix: string) => {\n prefix = thisPrefix;\n },\n init: (getStateFn: () => Record<string, any>) => {\n getUsefulState = getStateFn;\n },\n};\n","import { type FieldId, type Locale } from \"./lib/types/types\";\n\nexport const DEFAULT_LOCALE: Locale = \"en-US\";\n\nexport const ACCEPTED_DOC_MIME_TYPES: string[] = [\n \"image/png\",\n \"image/jpg\",\n \"image/jpeg\",\n \"application/pdf\",\n];\n\nexport const ACCEPTED_DOC_TYPES: string[] = [\".jpg\", \".jpeg\", \".png\", \".pdf\"];\nexport const MAX_DOC_UPLOAD_DOCS_ALLOWED: number = 3;\nexport const UPLOAD_FILE_PREFIX: string = \"file\";\n\nexport const QUERY_STRING_STEP_OVERRIDE: string = \"mockStep\";\nexport const QUERY_STRING_SEGMENT_OVERRIDE: string = \"mockSegment\";\nexport const QUERY_STRING_SUBSEGMENT_OVERRIDE: string = \"mockSubSegment\";\nexport const QUERY_STRING_ERRORID_OVERRIDE: string = \"mockErrorId\";\nexport const QUERY_STRING_ERRORDETAILID_OVERRIDE: string = \"mockErrorDetailId\";\nexport const QUERY_STRING_REWARD_CODE_OVERRIDE: string = \"mockRewardCode\";\nexport const QUERY_STRING_REDIRECT_URL_OVERRIDE: string = \"mockRedirectUrl\";\nexport const QUERY_STRING_REMEMBER_ME_OVERRIDE: string = \"mockConsumerInfoState\"; // ?mockConsumerInfoState=consumerFound | consumerNotFound\nexport const QUERY_STRING_ID_CHECK_LOOP_SERVICE_TYPE_OVERRIDE: string =\n \"mockIdCheckLoopServiceType\"; // ?mockIdCheckLoopServiceType=ID_CHECK | ID_CHECK_LIVENESS\nexport const QUERY_STRING_DOC_SELECTED: string = \"mockDocSelected\"; // mock the state where a consumer as already selected a file and is about to click the \"continue\" button on the docUpload step\nexport const QUERY_STRING_PREV_STEP_OVERRIDE: string = \"mockPreviousStep\";\nexport const QUERY_STRING_THIRD_PARTY_PROVIDER_OVERRIDE: string = \"thirdPartyLoopProvider\";\nexport const QUERY_STRING_SSO_METHOD: string = \"ssoMethod\";\nexport const QUERY_STRING_INSTALL_PAGE_URL: string = \"installPageUrl\";\nexport const QUERY_STRING_INSTALL_TYPE: string = \"installType\";\nexport const QUERY_STRING_LAYOUT: string = \"layout\"; // verify app's \"?layout=landing\"\nexport const QUERY_STRING_EXTERNAL_USER_ID: string = \"externalUserId\";\nexport const QUERY_STRING_CAPTCHA_ERROR_OVERRIDE: string = \"mockCaptchaState\";\n\nexport const SSN_STRING_LENGTH: number = 9;\nexport const DEFAULT_MINIMUM_ORG_SEARCH_VALUE_LENGTH: number = 1;\n\nexport const DEFAULT_PRIVACY_POLICY_HOST = \"www.sheerid.com\";\nexport const DEFAULT_PRIVACY_POLICY_URL = \"https://www.sheerid.com/privacy-policy/\";\nexport const SHEERID = \"SheerID\";\n\nexport const FEEDBACK_FORM_URL =\n \"https://verify.sheerid.com/verification-support/feedback.html?token=\";\nexport const SUPPORT_URL = \"https://support.sheerid.com\";\nexport const CLOUDFLARE_PRIVACY_POLICY_URL = \"https://www.cloudflare.com/privacypolicy/\";\n\nexport const HTTP_REQUEST_TIMEOUT = 10000;\nexport const DEBOUNCE_TIMEOUT = 200;\n\nexport const inLightbox = \"inLightbox\";\n\nexport const AUTH_TOKEN_LENGTH = 6;\n\nexport const FIELD_IDS: FieldId[] = [\n \"firstName\",\n \"lastName\",\n \"memberId\",\n \"organization\",\n \"birthDate\",\n \"email\",\n \"phoneNumber\",\n \"postalCode\",\n \"address1\",\n \"city\",\n \"state\",\n \"dischargeDate\",\n \"activeDutyStartDate\",\n \"status\",\n \"statuses\",\n \"docUpload\",\n \"country\",\n \"smsCode\",\n \"socialSecurityNumber\",\n \"marketConsentValue\",\n \"carrierConsentValue\",\n \"driverLicenseNumber\",\n \"overrideCode\",\n \"ebtCardNumber\",\n \"organizationEmail\",\n \"authenticationCode\",\n];\n","/* eslint-disable max-classes-per-file */\nexport type Unsubscribe = () => void;\n\nclass PubSub<T = unknown, F extends Function = (data: T) => void> {\n private subscribers = new Set<F>();\n\n sub(fn: F): Unsubscribe {\n this.subscribers.add(fn);\n\n return () => this.subscribers.delete(fn);\n }\n\n pub(data: T) {\n this.subscribers.forEach((fn) => fn(data));\n }\n}\n\n/**\n * List of valid event args given `K`.\n */\nexport type EventArg<T, K extends keyof T> = T[K];\n\n/**\n * An event emitter class we can use to manage hooks or other emittable data.\n * Take a type argument of shape Record<eventName, callBackData>\n *\n * A classified version of the MIT licensed https://robinpokorny.github.io/dead-simple/\n * With some type safety inspiration from https://github.com/serviejs/events\n */\nexport class EventEmitter<T> {\n private events = new Map<keyof T, PubSub>();\n\n /**\n * Registers a listener that will be called when the named event is emitted\n * @returns An unsubscribe function that will turn off this listener.\n */\n on<K extends keyof T>(name: K, fn: (data: EventArg<T, K>) => void): Unsubscribe {\n if (!this.events.has(name)) this.events.set(name, new PubSub<EventArg<T, K>>());\n\n return this.events.get(name).sub(fn);\n }\n\n /**\n * Registers a listener that will be called a single time when the named event\n * is emitted\n * @returns An unsubscribe function that will turn off this listener.\n */\n once<K extends keyof T>(name: K, fn: (data: EventArg<T, K>) => void): Unsubscribe {\n const off = this.on(name, (data: EventArg<T, K>) => {\n off();\n return fn(data);\n });\n\n return off;\n }\n\n /**\n * Removes all event listeners for the given key\n * @returns void\n */\n off<K extends keyof T>(name: K) {\n this.events.delete(name);\n }\n\n /**\n * Used to emit events to all registered hook listeners\n *\n * @private\n */\n emit<K extends keyof T>(name: K, data: EventArg<T, K>) {\n if (this.events.has(name)) {\n this.events.get(name).pub(data);\n }\n }\n}\n","export const fadeInElements = (elements: HTMLElement[]) => {\n elements.forEach((element: HTMLElement) => {\n element.classList.add(\"fade-in\");\n });\n};\n\nexport const removeElement = (element: HTMLElement, transitionTimeout: number) => {\n element.classList.remove(\"fade-in\");\n window.setTimeout(() => {\n document.body.style.overflow = \"auto\";\n element.parentNode.removeChild(element);\n }, transitionTimeout);\n};\n\nexport const getVerificationUrl = (url: string): string => {\n const newUrl = new URL(url);\n const parentUrl = new URL(window.location.href);\n\n // Combine query parameters from parent window and provided url.\n // If duplicates, provided url parameters supercede.\n parentUrl.searchParams.forEach((value, key) => {\n if (!newUrl.searchParams.has(key)) {\n newUrl.searchParams.set(key, value);\n }\n });\n\n return newUrl.href;\n};\n","const iframeClassNames = {\n INLINE_IFRAME_CONTENT: \"sid-inline-iframe\",\n MODAL_WRAPPER: \"sid-modal__wrapper\",\n MODAL_IFRAME: \"sid-modal__iframe\",\n OVERLAY: \"sid-modal__overlay\",\n CLOSE_BUTTON: \"sid-modal__close-button\",\n CLOSE_TEXT: \"sid-modal__close-text\",\n CLOSE_ICON: \"sid-modal__close-icon\",\n};\n\nexport const iframeTitle = \"SheerID Verification Form\";\n\nexport const iframeConstants = {\n CLASS_NAMES: iframeClassNames,\n DEFAULT_MOBILE_THRESHOLD_WIDTH: 620,\n MODAL_OPACITY_TRANSITION_PERIOD: 300,\n};\n","import { logger } from \"@jslib/shared/utils/logger\";\n\nimport { QUERY_STRING_INSTALL_PAGE_URL, QUERY_STRING_INSTALL_TYPE } from \"../../constants\";\nimport { type InstallPageEvent } from \"../frames/frameMessages\";\nimport type { HookEvents, Options, PostMessageAction, ViewModel } from \"../types/types\";\nimport { EventEmitter } from \"../hooks/eventEmitter\";\n\nimport { getVerificationUrl } from \"./utils\";\nimport { iframeConstants as constants, iframeTitle } from \"./constants\";\n\nexport type IframeOptions = {\n className: string;\n title: string;\n};\n\nexport const DEFAULT_OPTIONS: IframeOptions = {\n className: constants.CLASS_NAMES.INLINE_IFRAME_CONTENT,\n title: iframeTitle,\n};\n\nexport const assertValidFunction = (candidate: Function) => {\n if (typeof candidate !== \"function\") {\n throw new Error(`Expected type \"function\", but received ${typeof candidate}`);\n }\n};\n\nclass Iframe extends EventEmitter<HookEvents> {\n containerElement: HTMLElement;\n\n verificationUrl: URL;\n\n isMobileDevice: boolean;\n\n iframe: HTMLIFrameElement;\n\n verificationIframeUid: string;\n\n locale: string;\n\n hasLoaded: boolean = false;\n\n onLoadEvents: Function[] = [];\n\n onCleanupEvents: (() => void)[] = [];\n\n installType = \"cdn_inline_iframe\";\n\n constructor(containerElement: HTMLElement, url: string) {\n super();\n\n if (Iframe.isValidHttpUrl(url)) {\n this.containerElement = containerElement;\n this.verificationUrl = new URL(getVerificationUrl(url));\n this.verificationIframeUid = Iframe.createUniqueId();\n } else {\n logger.error(\"Invalid URL. Provide a proper URL: https://example.com/\", \"iframe url\");\n }\n }\n\n cleanup(): void {\n this.onCleanupEvents.forEach((callback) => callback());\n }\n\n static createUniqueId(): string {\n return Math.random().toString(36).substr(2, 9);\n }\n\n static isValidHttpUrl(urlString: string): boolean {\n try {\n const url = new URL(urlString);\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n }\n\n createIframe(options: IframeOptions): HTMLIFrameElement {\n this.iframe = document.createElement(\"iframe\");\n this.iframe.classList.add(options.className);\n this.iframe.title = options.title;\n this.iframe.src = this.getIframeUrl();\n this.iframe.allow = \"camera *;microphone *;geolocation *;clipboard-read *;clipboard-write *\";\n this.iframe.onload = () => this.onLoad();\n return this.iframe;\n }\n\n getIframeUrl(): string {\n const url = new URL(this.verificationUrl);\n url.searchParams.set(\"verificationIframeUid\", this.verificationIframeUid);\n url.searchParams.set(QUERY_STRING_INSTALL_PAGE_URL, window.location.href);\n url.searchParams.set(QUERY_STRING_INSTALL_TYPE, this.installType);\n if (this.locale) {\n url.searchParams.set(\"locale\", this.locale);\n }\n return url.toString();\n }\n\n // If iFrame hasn't loaded yet, queue up the callback\n // otherwise call it immediately\n addOnLoadEvent(callback: Function) {\n try {\n assertValidFunction(callback);\n } catch (e) {\n logger.error(\"Invalid callback provided to iFrame.onLoad()\", \"iframe addOnLoadEvent\");\n return;\n }\n if (this.hasLoaded) {\n callback();\n } else {\n this.onLoadEvents.push(callback);\n }\n }\n\n onLoad() {\n this.hasLoaded = true;\n this.onLoadEvents.forEach((callback) => callback());\n }\n\n /**\n * Using this to add parent window message listeners gives us\n * - Event Cleanup for modals\n * - verification of origin, verificationIframeUid, and message data structure\n */\n addWindowMessageListener(actionCb: (action: PostMessageAction) => void): void {\n const listener = (ev: MessageEvent) => {\n if (this.verificationUrl.origin !== ev.origin) {\n return;\n }\n\n if (ev.data.verificationIframeUid !== this.verificationIframeUid) {\n return;\n }\n\n if (ev.data.action && ev.data.action.type) {\n actionCb(ev.data.action);\n } else if (ev.data.action && ev.data.height) {\n // Older versions of the jslib send the full action object as the message\n actionCb(ev.data);\n }\n };\n\n window.addEventListener(\"message\", listener);\n this.onCleanupEvents.push(() => window.removeEventListener(\"message\", listener));\n }\n\n addActionListener() {\n this.addWindowMessageListener((messageAction) => {\n if (messageAction.type === \"hook\") {\n this.emit(messageAction.hook.name, messageAction.hook.data);\n }\n\n if (\n (messageAction.action && messageAction.action === \"updateHeight\") ||\n messageAction.type === \"updateHeight\"\n ) {\n // UX-1129: If we are getting height updates, turn off scrolling for\n // the iframe. This prevents browsers (Safari in particular) from\n // re-wrapping because of different widths and constantly changing\n // it's own height. `scrolling = \"no\"` is deprecated, but supported in\n // all browsers and fixes the problem well.\n this.iframe.scrolling = \"no\";\n this.iframe.style.height = `${messageAction.height}px`;\n }\n });\n }\n\n setViewModel(viewModel: Partial<ViewModel> | ViewModel) {\n const message: InstallPageEvent = {\n action: \"setViewModel\",\n viewModel,\n };\n\n this.addOnLoadEvent(() => {\n this.iframe.contentWindow.postMessage(message, this.verificationUrl.origin);\n });\n }\n\n setOptions(options: Options) {\n const message: InstallPageEvent = {\n action: \"setOptions\",\n options,\n };\n\n // HC-1181: Special casing options.locale to set locale as as QSP if the frame hasn't fully loaded yet.\n // This causes a re-load, but in most cases would happen within milliseconds of the frame initialization.\n // It prevents the race conditions that were failing to set the locale properly on load.\n // If the associated playwright tests passes without this is can be removed.\n if (!this.hasLoaded && options.locale) {\n this.locale = options.locale;\n const newUrl = this.getIframeUrl();\n if (newUrl !== this.iframe.src) {\n this.iframe.src = newUrl;\n }\n }\n\n this.addOnLoadEvent(() => {\n this.iframe.contentWindow.postMessage(message, this.verificationUrl.origin);\n });\n }\n\n setInstallType(installType: string) {\n this.installType = installType;\n }\n\n init(createIframe: boolean = true): void {\n if (createIframe) {\n this.createIframe(DEFAULT_OPTIONS);\n }\n\n this.addActionListener();\n this.containerElement.appendChild(this.iframe);\n }\n}\n\nexport default Iframe;\n","import { type IframeUserConfiguration, type Options, type ViewModel } from \"../types/types\";\n\nimport { iframeConstants as constants, iframeTitle } from \"./constants\";\nimport Iframe from \"./iframe\";\nimport { fadeInElements, removeElement, getVerificationUrl } from \"./utils\";\n\nclass Modal {\n verificationUrl: string;\n\n redirectOnMobile: boolean;\n\n overlay: HTMLElement;\n\n wrapper: HTMLElement;\n\n iframeInstance: Iframe;\n\n on: typeof this.iframeInstance.on;\n\n once: typeof this.iframeInstance.once;\n\n isMobileDevice: boolean;\n\n closeButtonText: string;\n\n closeButton: HTMLButtonElement;\n\n stopPropagation: boolean;\n\n constructor(url: string, userConfig: IframeUserConfiguration) {\n const thresholdConfig = userConfig.mobileThreshold\n ? userConfig.mobileThreshold\n : constants.DEFAULT_MOBILE_THRESHOLD_WIDTH;\n this.verificationUrl = getVerificationUrl(url);\n this.redirectOnMobile = userConfig.mobileRedirect || false;\n this.isMobileDevice = window.document.body.clientWidth <= Number(thresholdConfig);\n this.closeButtonText = userConfig.closeButtonText ? userConfig.closeButtonText : \"\";\n this.closeButton = null;\n this.stopPropagation = userConfig.stopPropagation || false;\n this.overlay = Modal.createOverlay();\n this.wrapper = this.createWrapper();\n this.addFocusListener();\n }\n\n createCloseBtn() {\n this.closeButton = document.createElement(\"button\");\n this.closeButton.classList.add(constants.CLASS_NAMES.CLOSE_BUTTON);\n this.closeButton.setAttribute(\"aria-label\", \"close\");\n\n if (this.closeButtonText) {\n const closeTxt = document.createElement(\"div\");\n closeTxt.classList.add(constants.CLASS_NAMES.CLOSE_TEXT);\n closeTxt.innerHTML = this.closeButtonText;\n this.closeButton.appendChild(closeTxt);\n }\n\n const closeIcon = document.createElement(\"span\");\n closeIcon.classList.add(constants.CLASS_NAMES.CLOSE_ICON);\n closeIcon.setAttribute(\"role\", \"img\");\n this.closeButton.appendChild(closeIcon);\n\n this.closeButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n if (this.stopPropagation) {\n e.stopPropagation();\n }\n this.closeModal();\n });\n return this.closeButton;\n }\n\n closeModal() {\n window.removeEventListener(\"popstate\", this.popStateEventHandler);\n const transitionTimeout = constants.MODAL_OPACITY_TRANSITION_PERIOD;\n removeElement(this.overlay, transitionTimeout);\n removeElement(this.wrapper, transitionTimeout);\n this.iframeInstance.cleanup();\n }\n\n static createOverlay(): HTMLElement {\n const overlay = document.createElement(\"div\");\n overlay.classList.add(constants.CLASS_NAMES.OVERLAY);\n return overlay;\n }\n\n createWrapper(): HTMLElement {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(constants.CLASS_NAMES.MODAL_WRAPPER);\n wrapper.tabIndex = -1;\n wrapper.setAttribute(\"role\", \"dialog\");\n wrapper.appendChild(this.createCloseBtn());\n\n this.iframeInstance = new Iframe(wrapper, this.verificationUrl);\n this.iframeInstance.setInstallType(\"cdn_modal_iframe\");\n\n // pass `on` & `once` through to the iframe instance to allow hook listeners.\n this.on = this.iframeInstance.on.bind(this.iframeInstance);\n this.once = this.iframeInstance.once.bind(this.iframeInstance);\n\n const options = {\n className: constants.CLASS_NAMES.MODAL_IFRAME,\n title: iframeTitle,\n };\n this.iframeInstance.createIframe(options);\n wrapper.appendChild(this.iframeInstance.iframe);\n return wrapper;\n }\n\n popStateEventHandler = () => this.closeModal();\n\n addPopStateListener() {\n window.addEventListener(\"popstate\", this.popStateEventHandler);\n }\n\n addFocusListener() {\n this.iframeInstance.addWindowMessageListener((action) => {\n if (action.type === \"focus\" && action.focusOn === \"firstElement\") {\n this.closeButton.focus();\n }\n });\n\n document.addEventListener(\"keydown\", (e) => {\n const isTabPressed: boolean = e.key === \"Tab\";\n if (!isTabPressed) {\n return;\n }\n if (e.shiftKey && document.activeElement === this.closeButton) {\n this.iframeInstance.iframe.contentWindow.postMessage({ focusOn: \"lastElement\" }, \"*\");\n e.preventDefault();\n }\n });\n }\n\n isInLightboxPostMessage(inLightbox: string) {\n this.iframeInstance.iframe.contentWindow.postMessage({ isInLightBox: inLightbox }, \"*\");\n }\n\n displayModal() {\n this.iframeInstance.iframe.addEventListener(\"load\", () => {\n fadeInElements([this.overlay, this.wrapper]);\n document.body.style.overflow = \"hidden\";\n this.isInLightboxPostMessage(\"true\");\n });\n\n document.body.appendChild(this.overlay);\n document.body.appendChild(this.wrapper);\n this.addPopStateListener();\n }\n\n init() {\n if (this.redirectOnMobile && this.isMobileDevice) {\n window.top.location.href = this.verificationUrl;\n } else {\n this.displayModal();\n this.iframeInstance.init(false); // false so we don't create iframe again, it's already created in createWrapper\n }\n }\n\n setViewModel(viewModel: Partial<ViewModel> | ViewModel) {\n this.iframeInstance.setViewModel(viewModel);\n }\n\n setOptions(options: Options) {\n this.iframeInstance.setOptions(options);\n }\n}\n\nexport default Modal;\n","import { type IframeUserConfiguration } from \"../types/types\";\n\nimport Iframe from \"./iframe\";\nimport Modal from \"./modal\";\n\nimport \"../../scss/sheerid-iframe.scss\";\n\n// Called from the parent page to load the jslib within an iFrame NOT in a modal, but in the flow of a page. e.g. between two divs\nexport function loadInlineIframe(containerElement: HTMLElement, url: string): Iframe {\n const iframe = new Iframe(containerElement, url);\n iframe.init();\n return iframe;\n}\n\n// Called from the parent page to load the jslib within an iFrame in a modal\nexport function loadInModal(url: string, userConfig: IframeUserConfiguration = {}) {\n const modal = new Modal(url, userConfig);\n modal.init();\n return modal;\n}\n\nexport default { loadInModal, loadInlineIframe };\n"],"names":["_attrCache","getGaAttributes","doNotTrack","isNewRelicAvailable","logLevel","prefix","logLevels","colors","standardStyles","getUsefulState","isError","e","warn","args","log","info","error","err","errorMessageGroup","additionalUsefulAttributes","errorObj","usefulAttributes","stateAttributes","newRelicPageAction","eventName","attributes","logAPIResponseTime","url","time","logger","desiredLogLevel","thisPrefix","getStateFn","QUERY_STRING_INSTALL_PAGE_URL","QUERY_STRING_INSTALL_TYPE","PubSub","fn","data","EventEmitter","name","off","fadeInElements","elements","element","removeElement","transitionTimeout","getVerificationUrl","newUrl","value","key","iframeClassNames","iframeTitle","iframeConstants","DEFAULT_OPTIONS","constants","assertValidFunction","candidate","Iframe","containerElement","callback","urlString","options","actionCb","listener","ev","messageAction","viewModel","message","installType","createIframe","Modal","userConfig","thresholdConfig","closeTxt","closeIcon","overlay","wrapper","action","inLightbox","loadInlineIframe","iframe","loadInModal","modal","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sheerid-install.js","sources":["../../packages/shared/src/utils/gaHelpers.ts","../../packages/shared/src/utils/logger/logger.ts","../src/constants.ts","../src/lib/hooks/eventEmitter.ts","../src/lib/installScript/utils.ts","../src/lib/installScript/constants.ts","../src/lib/installScript/iframe.ts","../src/lib/installScript/modal.ts","../src/lib/installScript/index.ts"],"sourcesContent":["//\n// NOTE this file is high risk for circular dependencies! Avoid imports, or double check that they don't create circular deps\n//\n\nimport type { NavigatorBeta } from \"../types/runtimeTypes\";\n\n/**\n * A singleton to allow access to user properties that we've set on GA without\n * querying GA directly. This is primarily used to also send them to New Relic.\n */\nconst _attrCache: Record<string, unknown> = {};\n\nexport const setGaAttributes = (attrs: Record<string, unknown>): void =>\n Object.entries(attrs).forEach(([k, v]) => {\n _attrCache[k] = v;\n });\n\nexport const getGaAttributes = async (): Promise<object> => _attrCache;\n\nexport const doNotTrack = () => (window.navigator as NavigatorBeta).globalPrivacyControl;\n\nexport const isNewRelicAvailable = () => (window as any).NREUM && !doNotTrack();\n","/* eslint no-console:0 */\n// ~~~ This file and its tests are the only files that should disable \"no-console\" ~~~\n\nimport { getGaAttributes, isNewRelicAvailable } from \"../gaHelpers\";\n\nexport type LogLevel = \"info\" | \"log\" | \"warn\" | \"error\" | \"silent\";\n\nlet logLevel = 4; // default\nlet prefix = \"\";\nconst logLevels = {\n info: 1,\n log: 2,\n warn: 3,\n error: 4,\n silent: 5,\n};\n\nconst colors = {\n info: \"#26c1db\",\n log: \"#09f979\",\n warn: \"#f6b13f\",\n error: \"#e12046\",\n};\n\nconst standardStyles = \"color: white; font-weight: bold; padding: 2px 10px;\";\n\nlet getUsefulState: () => Record<string, any> = () => ({});\n\nconst isError = (e: any) => e && e.stack && e.message;\n\nconst warn = (...args: any[]) => {\n if (logLevel <= 3) {\n console.warn(`%c${prefix} warn`, `background: ${colors.warn};${standardStyles}`, ...args);\n }\n};\n\nconst log = (...args: any[]) => {\n if (logLevel <= 2) {\n console.log(`%c${prefix} log`, `background: ${colors.log};${standardStyles}`, ...args);\n }\n};\n\nconst info = (...args: any[]) => {\n if (logLevel <= 1) {\n console.log(`%c${prefix} info`, `background: ${colors.info};${standardStyles}`, ...args);\n }\n};\n\n/**\n * @param error Primary, details error message or full error object\n * @param errorMessageGroup Use this to group error messages together with a string that does not vary as frequently.\n * Do not pass programId, verificationId, etc\n */\nconst error = async (\n err: Error | string,\n errorMessageGroup: string = \"unknown group\",\n additionalUsefulAttributes: { [a: string]: string } = {},\n) => {\n if (logLevel <= 4) {\n if (!err) {\n console.error(new Error(\"An error must be supplied\"));\n return;\n }\n\n let errorObj: Error | undefined;\n if (typeof err === \"string\") errorObj = new Error(err);\n if (isError(err)) errorObj = err as Error;\n if (!errorObj) errorObj = new Error(\"Unknown error\");\n\n let usefulAttributes: object = { errorMessageGroup };\n\n // #region Google Analytics\n // Include everything we can from Google Analytics' data b/c that's useful:\n try {\n const gaAttributes = await getGaAttributes();\n\n usefulAttributes = {\n ...gaAttributes,\n ...usefulAttributes,\n };\n delete (usefulAttributes as any).jslibVersionActual; // used by GA not New Relic (duplicated)\n } catch (e) {\n if (isNewRelicAvailable()) {\n (window as any).NREUM.noticeError(errorObj, usefulAttributes);\n } else {\n // Some customers can't install New Relic so this is not an error:\n warn(\"Unable to assemble GA error attributes\", e);\n }\n }\n // #endregion Google Analytics\n\n // #region App State (formerly Redux)\n try {\n const stateAttributes = getUsefulState();\n usefulAttributes = {\n ...usefulAttributes,\n ...stateAttributes,\n ...additionalUsefulAttributes,\n };\n } catch (e) {\n if (isNewRelicAvailable()) {\n (window as any).NREUM.noticeError(errorObj, usefulAttributes);\n } else {\n // Some customers can't install New Relic so this is not an error:\n warn(\"Unable to assemble useful error attributes\", e);\n }\n }\n // #endregion App State\n\n if (isNewRelicAvailable()) {\n (window as any).NREUM.noticeError(errorObj, usefulAttributes);\n }\n\n console.error(\n `%c${prefix} error`,\n `background: ${colors.error};${standardStyles}`,\n errorObj,\n usefulAttributes,\n );\n }\n};\n\nexport const newRelicPageAction = (eventName: string, attributes = {}) => {\n if (isNewRelicAvailable()) {\n (window as any).NREUM.addPageAction(eventName, attributes);\n }\n};\n\n/**\n * @deprecated Use newRelicPageAction() instead\n */\nconst logAPIResponseTime = (url: string, time: number) => {\n newRelicPageAction(\"API-calls-timing\", {\n api_call: url,\n api_response_time: time,\n });\n};\n\nexport const logger = {\n error,\n warn,\n log,\n info,\n /** @deprecated use newRelicPageAction() instead */\n logAPIResponseTime,\n setLogLevel: (desiredLogLevel: LogLevel) => {\n // @ts-ignore\n if (!logLevels.hasOwnProperty(desiredLogLevel)) {\n throw new Error(`Unknown logLevel '${desiredLogLevel}'`);\n }\n\n // @ts-ignore\n logLevel = logLevels[desiredLogLevel];\n console.log(\n `%c${prefix} log level set to ${desiredLogLevel}`,\n // @ts-ignore\n `background: ${colors[desiredLogLevel]};${standardStyles}`,\n );\n\n // Some customers can't install New Relic so this is not an error:\n if (!isNewRelicAvailable()) {\n warn(\"Offsite logging not enabled\");\n }\n },\n setPrefix: (thisPrefix: string) => {\n prefix = thisPrefix;\n },\n init: (getStateFn: () => Record<string, any>) => {\n getUsefulState = getStateFn;\n },\n};\n","import { type FieldId, type Locale } from \"./lib/types/types\";\n\nexport const DEFAULT_LOCALE: Locale = \"en-US\";\n\nexport const ACCEPTED_DOC_MIME_TYPES: string[] = [\n \"image/png\",\n \"image/jpg\",\n \"image/jpeg\",\n \"application/pdf\",\n];\n\nexport const ACCEPTED_DOC_TYPES: string[] = [\".jpg\", \".jpeg\", \".png\", \".pdf\"];\nexport const MAX_DOC_UPLOAD_DOCS_ALLOWED: number = 3;\nexport const UPLOAD_FILE_PREFIX: string = \"file\";\n\nexport const QUERY_STRING_STEP_OVERRIDE: string = \"mockStep\";\nexport const QUERY_STRING_SEGMENT_OVERRIDE: string = \"mockSegment\";\nexport const QUERY_STRING_SUBSEGMENT_OVERRIDE: string = \"mockSubSegment\";\nexport const QUERY_STRING_ERRORID_OVERRIDE: string = \"mockErrorId\";\nexport const QUERY_STRING_ERRORDETAILID_OVERRIDE: string = \"mockErrorDetailId\";\nexport const QUERY_STRING_REWARD_CODE_OVERRIDE: string = \"mockRewardCode\";\nexport const QUERY_STRING_REDIRECT_URL_OVERRIDE: string = \"mockRedirectUrl\";\nexport const QUERY_STRING_REMEMBER_ME_OVERRIDE: string = \"mockConsumerInfoState\"; // ?mockConsumerInfoState=consumerFound | consumerNotFound\nexport const QUERY_STRING_ID_CHECK_LOOP_SERVICE_TYPE_OVERRIDE: string =\n \"mockIdCheckLoopServiceType\"; // ?mockIdCheckLoopServiceType=ID_CHECK | ID_CHECK_LIVENESS\nexport const QUERY_STRING_DOC_SELECTED: string = \"mockDocSelected\"; // mock the state where a consumer as already selected a file and is about to click the \"continue\" button on the docUpload step\nexport const QUERY_STRING_PREV_STEP_OVERRIDE: string = \"mockPreviousStep\";\nexport const QUERY_STRING_THIRD_PARTY_PROVIDER_OVERRIDE: string = \"thirdPartyLoopProvider\";\nexport const QUERY_STRING_SSO_METHOD: string = \"ssoMethod\";\nexport const QUERY_STRING_INSTALL_PAGE_URL: string = \"installPageUrl\";\nexport const QUERY_STRING_INSTALL_TYPE: string = \"installType\";\nexport const QUERY_STRING_LAYOUT: string = \"layout\"; // verify app's \"?layout=landing\"\nexport const QUERY_STRING_EXTERNAL_USER_ID: string = \"externalUserId\";\nexport const QUERY_STRING_CAPTCHA_ERROR_OVERRIDE: string = \"mockCaptchaState\";\n\nexport const SSN_STRING_LENGTH: number = 9;\nexport const DEFAULT_MINIMUM_ORG_SEARCH_VALUE_LENGTH: number = 1;\n\nexport const DEFAULT_PRIVACY_POLICY_HOST = \"www.sheerid.com\";\nexport const DEFAULT_PRIVACY_POLICY_URL = \"https://www.sheerid.com/privacy-policy/\";\nexport const SHEERID = \"SheerID\";\n\nexport const FEEDBACK_FORM_URL =\n \"https://verify.sheerid.com/verification-support/feedback.html?token=\";\nexport const SUPPORT_URL = \"https://support.sheerid.com\";\nexport const CLOUDFLARE_PRIVACY_POLICY_URL = \"https://www.cloudflare.com/privacypolicy/\";\n\nexport const HTTP_REQUEST_TIMEOUT = 10000;\nexport const DEBOUNCE_TIMEOUT = 200;\n\nexport const inLightbox = \"inLightbox\";\n\nexport const AUTH_TOKEN_LENGTH = 6;\n\nexport const FIELD_IDS: FieldId[] = [\n \"firstName\",\n \"lastName\",\n \"memberId\",\n \"organization\",\n \"birthDate\",\n \"email\",\n \"phoneNumber\",\n \"postalCode\",\n \"address1\",\n \"city\",\n \"state\",\n \"dischargeDate\",\n \"activeDutyStartDate\",\n \"status\",\n \"statuses\",\n \"docUpload\",\n \"country\",\n \"smsCode\",\n \"socialSecurityNumber\",\n \"marketConsentValue\",\n \"carrierConsentValue\",\n \"driverLicenseNumber\",\n \"overrideCode\",\n \"ebtCardNumber\",\n \"organizationEmail\",\n \"authenticationCode\",\n];\n","/* eslint-disable max-classes-per-file */\nexport type Unsubscribe = () => void;\n\nclass PubSub<T = unknown, F extends Function = (data: T) => void> {\n private subscribers = new Set<F>();\n\n sub(fn: F): Unsubscribe {\n this.subscribers.add(fn);\n\n return () => this.subscribers.delete(fn);\n }\n\n pub(data: T) {\n this.subscribers.forEach((fn) => fn(data));\n }\n}\n\n/**\n * List of valid event args given `K`.\n */\nexport type EventArg<T, K extends keyof T> = T[K];\n\n/**\n * An event emitter class we can use to manage hooks or other emittable data.\n * Take a type argument of shape Record<eventName, callBackData>\n *\n * A classified version of the MIT licensed https://robinpokorny.github.io/dead-simple/\n * With some type safety inspiration from https://github.com/serviejs/events\n */\nexport class EventEmitter<T> {\n private events = new Map<keyof T, PubSub>();\n\n /**\n * Registers a listener that will be called when the named event is emitted\n * @returns An unsubscribe function that will turn off this listener.\n */\n on<K extends keyof T>(name: K, fn: (data: EventArg<T, K>) => void): Unsubscribe {\n if (!this.events.has(name)) this.events.set(name, new PubSub<EventArg<T, K>>());\n\n return this.events.get(name).sub(fn);\n }\n\n /**\n * Registers a listener that will be called a single time when the named event\n * is emitted\n * @returns An unsubscribe function that will turn off this listener.\n */\n once<K extends keyof T>(name: K, fn: (data: EventArg<T, K>) => void): Unsubscribe {\n const off = this.on(name, (data: EventArg<T, K>) => {\n off();\n return fn(data);\n });\n\n return off;\n }\n\n /**\n * Removes all event listeners for the given key\n * @returns void\n */\n off<K extends keyof T>(name: K) {\n this.events.delete(name);\n }\n\n /**\n * Used to emit events to all registered hook listeners\n *\n * @private\n */\n emit<K extends keyof T>(name: K, data: EventArg<T, K>) {\n if (this.events.has(name)) {\n this.events.get(name).pub(data);\n }\n }\n}\n","export const fadeInElements = (elements: HTMLElement[]) => {\n elements.forEach((element: HTMLElement) => {\n element.classList.add(\"fade-in\");\n });\n};\n\nexport const removeElement = (element: HTMLElement, transitionTimeout: number) => {\n element.classList.remove(\"fade-in\");\n window.setTimeout(() => {\n document.body.style.overflow = \"auto\";\n element.parentNode.removeChild(element);\n }, transitionTimeout);\n};\n\nexport const getVerificationUrl = (url: string): string => {\n const newUrl = new URL(url);\n const parentUrl = new URL(window.location.href);\n\n // Combine query parameters from parent window and provided url.\n // If duplicates, provided url parameters supercede.\n parentUrl.searchParams.forEach((value, key) => {\n if (!newUrl.searchParams.has(key)) {\n newUrl.searchParams.set(key, value);\n }\n });\n\n return newUrl.href;\n};\n","const iframeClassNames = {\n INLINE_IFRAME_CONTENT: \"sid-inline-iframe\",\n MODAL_WRAPPER: \"sid-modal__wrapper\",\n MODAL_IFRAME: \"sid-modal__iframe\",\n OVERLAY: \"sid-modal__overlay\",\n CLOSE_BUTTON: \"sid-modal__close-button\",\n CLOSE_TEXT: \"sid-modal__close-text\",\n CLOSE_ICON: \"sid-modal__close-icon\",\n};\n\nexport const iframeTitle = \"SheerID Verification Form\";\n\nexport const iframeConstants = {\n CLASS_NAMES: iframeClassNames,\n DEFAULT_MOBILE_THRESHOLD_WIDTH: 620,\n MODAL_OPACITY_TRANSITION_PERIOD: 300,\n};\n","import { logger } from \"@jslib/shared/utils/logger\";\n\nimport { QUERY_STRING_INSTALL_PAGE_URL, QUERY_STRING_INSTALL_TYPE } from \"../../constants\";\nimport { type InstallPageEvent } from \"../frames/frameMessages\";\nimport type { HookEvents, Options, PostMessageAction, ViewModel } from \"../types/types\";\nimport { EventEmitter } from \"../hooks/eventEmitter\";\n\nimport { getVerificationUrl } from \"./utils\";\nimport { iframeConstants as constants, iframeTitle } from \"./constants\";\n\nexport type IframeOptions = {\n className: string;\n title: string;\n};\n\nexport const DEFAULT_OPTIONS: IframeOptions = {\n className: constants.CLASS_NAMES.INLINE_IFRAME_CONTENT,\n title: iframeTitle,\n};\n\nexport const assertValidFunction = (candidate: Function) => {\n if (typeof candidate !== \"function\") {\n throw new Error(`Expected type \"function\", but received ${typeof candidate}`);\n }\n};\n\nclass Iframe extends EventEmitter<HookEvents> {\n containerElement: HTMLElement;\n\n verificationUrl: URL;\n\n isMobileDevice: boolean;\n\n iframe: HTMLIFrameElement;\n\n verificationIframeUid: string;\n\n locale: string;\n\n hasLoaded: boolean = false;\n\n onLoadEvents: Function[] = [];\n\n onCleanupEvents: (() => void)[] = [];\n\n installType = \"cdn_inline_iframe\";\n\n constructor(containerElement: HTMLElement, url: string) {\n super();\n\n if (Iframe.isValidHttpUrl(url)) {\n this.containerElement = containerElement;\n this.verificationUrl = new URL(getVerificationUrl(url));\n this.verificationIframeUid = Iframe.createUniqueId();\n } else {\n logger.error(\"Invalid URL. Provide a proper URL: https://example.com/\", \"iframe url\");\n }\n }\n\n cleanup(): void {\n this.onCleanupEvents.forEach((callback) => callback());\n }\n\n static createUniqueId(): string {\n return Math.random().toString(36).substr(2, 9);\n }\n\n static isValidHttpUrl(urlString: string): boolean {\n try {\n const url = new URL(urlString);\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n }\n\n createIframe(options: IframeOptions): HTMLIFrameElement {\n this.iframe = document.createElement(\"iframe\");\n this.iframe.classList.add(options.className);\n this.iframe.title = options.title;\n this.iframe.src = this.getIframeUrl();\n this.iframe.allow = \"camera *;microphone *;geolocation *;clipboard-read *;clipboard-write *\";\n this.iframe.onload = () => this.onLoad();\n return this.iframe;\n }\n\n getIframeUrl(): string {\n const url = new URL(this.verificationUrl);\n url.searchParams.set(\"verificationIframeUid\", this.verificationIframeUid);\n url.searchParams.set(QUERY_STRING_INSTALL_PAGE_URL, window.location.href);\n url.searchParams.set(QUERY_STRING_INSTALL_TYPE, this.installType);\n if (this.locale) {\n url.searchParams.set(\"locale\", this.locale);\n }\n return url.toString();\n }\n\n // If iFrame hasn't loaded yet, queue up the callback\n // otherwise call it immediately\n addOnLoadEvent(callback: Function) {\n try {\n assertValidFunction(callback);\n } catch (e) {\n logger.error(\"Invalid callback provided to iFrame.onLoad()\", \"iframe addOnLoadEvent\");\n return;\n }\n if (this.hasLoaded) {\n callback();\n } else {\n this.onLoadEvents.push(callback);\n }\n }\n\n onLoad() {\n this.hasLoaded = true;\n this.onLoadEvents.forEach((callback) => callback());\n }\n\n /**\n * Using this to add parent window message listeners gives us\n * - Event Cleanup for modals\n * - verification of origin, verificationIframeUid, and message data structure\n */\n addWindowMessageListener(actionCb: (action: PostMessageAction) => void): void {\n const listener = (ev: MessageEvent) => {\n if (this.verificationUrl.origin !== ev.origin) {\n return;\n }\n\n if (ev.data.verificationIframeUid !== this.verificationIframeUid) {\n return;\n }\n\n if (ev.data.action && ev.data.action.type) {\n actionCb(ev.data.action);\n } else if (ev.data.action && ev.data.height) {\n // Older versions of the jslib send the full action object as the message\n actionCb(ev.data);\n }\n };\n\n window.addEventListener(\"message\", listener);\n this.onCleanupEvents.push(() => window.removeEventListener(\"message\", listener));\n }\n\n addActionListener() {\n this.addWindowMessageListener((messageAction) => {\n if (messageAction.type === \"hook\") {\n this.emit(messageAction.hook.name, messageAction.hook.data);\n }\n\n if (\n (messageAction.action && messageAction.action === \"updateHeight\") ||\n messageAction.type === \"updateHeight\"\n ) {\n // UX-1129: If we are getting height updates, turn off scrolling for\n // the iframe. This prevents browsers (Safari in particular) from\n // re-wrapping because of different widths and constantly changing\n // it's own height. `scrolling = \"no\"` is deprecated, but supported in\n // all browsers and fixes the problem well.\n this.iframe.scrolling = \"no\";\n this.iframe.style.height = `${messageAction.height}px`;\n }\n });\n }\n\n setViewModel(viewModel: Partial<ViewModel> | ViewModel) {\n const message: InstallPageEvent = {\n action: \"setViewModel\",\n viewModel,\n };\n\n this.addOnLoadEvent(() => {\n this.iframe.contentWindow.postMessage(message, this.verificationUrl.origin);\n });\n }\n\n setOptions(options: Options) {\n const message: InstallPageEvent = {\n action: \"setOptions\",\n options,\n };\n\n // HC-1181: Special casing options.locale to set locale as as QSP if the frame hasn't fully loaded yet.\n // This causes a re-load, but in most cases would happen within milliseconds of the frame initialization.\n // It prevents the race conditions that were failing to set the locale properly on load.\n // If the associated playwright tests passes without this is can be removed.\n if (!this.hasLoaded && options.locale) {\n this.locale = options.locale;\n const newUrl = this.getIframeUrl();\n if (newUrl !== this.iframe.src) {\n this.iframe.src = newUrl;\n }\n }\n\n this.addOnLoadEvent(() => {\n this.iframe.contentWindow.postMessage(message, this.verificationUrl.origin);\n });\n }\n\n setInstallType(installType: string) {\n this.installType = installType;\n }\n\n init(createIframe: boolean = true): void {\n if (createIframe) {\n this.createIframe(DEFAULT_OPTIONS);\n }\n\n this.addActionListener();\n this.containerElement.appendChild(this.iframe);\n }\n}\n\nexport default Iframe;\n","import { type IframeUserConfiguration, type Options, type ViewModel } from \"../types/types\";\n\nimport { iframeConstants as constants, iframeTitle } from \"./constants\";\nimport Iframe from \"./iframe\";\nimport { fadeInElements, removeElement, getVerificationUrl } from \"./utils\";\n\nclass Modal {\n verificationUrl: string;\n\n redirectOnMobile: boolean;\n\n overlay: HTMLElement;\n\n wrapper: HTMLElement;\n\n iframeInstance: Iframe;\n\n on: typeof this.iframeInstance.on;\n\n once: typeof this.iframeInstance.once;\n\n isMobileDevice: boolean;\n\n closeButtonText: string;\n\n closeButton: HTMLButtonElement;\n\n stopPropagation: boolean;\n\n constructor(url: string, userConfig: IframeUserConfiguration) {\n const thresholdConfig = userConfig.mobileThreshold\n ? userConfig.mobileThreshold\n : constants.DEFAULT_MOBILE_THRESHOLD_WIDTH;\n this.verificationUrl = getVerificationUrl(url);\n this.redirectOnMobile = userConfig.mobileRedirect || false;\n this.isMobileDevice = window.document.body.clientWidth <= Number(thresholdConfig);\n this.closeButtonText = userConfig.closeButtonText ? userConfig.closeButtonText : \"\";\n this.closeButton = null;\n this.stopPropagation = userConfig.stopPropagation || false;\n this.overlay = Modal.createOverlay();\n this.wrapper = this.createWrapper();\n this.addFocusListener();\n }\n\n createCloseBtn() {\n this.closeButton = document.createElement(\"button\");\n this.closeButton.classList.add(constants.CLASS_NAMES.CLOSE_BUTTON);\n this.closeButton.setAttribute(\"aria-label\", \"close\");\n\n if (this.closeButtonText) {\n const closeTxt = document.createElement(\"div\");\n closeTxt.classList.add(constants.CLASS_NAMES.CLOSE_TEXT);\n closeTxt.innerHTML = this.closeButtonText;\n this.closeButton.appendChild(closeTxt);\n }\n\n const closeIcon = document.createElement(\"span\");\n closeIcon.classList.add(constants.CLASS_NAMES.CLOSE_ICON);\n closeIcon.setAttribute(\"role\", \"img\");\n this.closeButton.appendChild(closeIcon);\n\n this.closeButton.addEventListener(\"click\", (e) => {\n e.preventDefault();\n if (this.stopPropagation) {\n e.stopPropagation();\n }\n this.closeModal();\n });\n return this.closeButton;\n }\n\n closeModal() {\n window.removeEventListener(\"popstate\", this.popStateEventHandler);\n const transitionTimeout = constants.MODAL_OPACITY_TRANSITION_PERIOD;\n removeElement(this.overlay, transitionTimeout);\n removeElement(this.wrapper, transitionTimeout);\n this.iframeInstance.cleanup();\n }\n\n static createOverlay(): HTMLElement {\n const overlay = document.createElement(\"div\");\n overlay.classList.add(constants.CLASS_NAMES.OVERLAY);\n return overlay;\n }\n\n createWrapper(): HTMLElement {\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(constants.CLASS_NAMES.MODAL_WRAPPER);\n wrapper.tabIndex = -1;\n wrapper.setAttribute(\"role\", \"dialog\");\n wrapper.setAttribute(\"aria-modal\", \"true\");\n wrapper.setAttribute(\"aria-label\", iframeTitle);\n wrapper.appendChild(this.createCloseBtn());\n\n this.iframeInstance = new Iframe(wrapper, this.verificationUrl);\n this.iframeInstance.setInstallType(\"cdn_modal_iframe\");\n\n // pass `on` & `once` through to the iframe instance to allow hook listeners.\n this.on = this.iframeInstance.on.bind(this.iframeInstance);\n this.once = this.iframeInstance.once.bind(this.iframeInstance);\n\n const options = {\n className: constants.CLASS_NAMES.MODAL_IFRAME,\n title: iframeTitle,\n };\n this.iframeInstance.createIframe(options);\n wrapper.appendChild(this.iframeInstance.iframe);\n return wrapper;\n }\n\n popStateEventHandler = () => this.closeModal();\n\n addPopStateListener() {\n window.addEventListener(\"popstate\", this.popStateEventHandler);\n }\n\n addFocusListener() {\n this.iframeInstance.addWindowMessageListener((action) => {\n if (action.type === \"focus\" && action.focusOn === \"firstElement\") {\n this.closeButton.focus();\n }\n });\n\n document.addEventListener(\"keydown\", (e) => {\n const isTabPressed: boolean = e.key === \"Tab\";\n if (!isTabPressed) {\n return;\n }\n if (e.shiftKey && document.activeElement === this.closeButton) {\n this.iframeInstance.iframe.contentWindow.postMessage({ focusOn: \"lastElement\" }, \"*\");\n e.preventDefault();\n }\n });\n }\n\n isInLightboxPostMessage(inLightbox: string) {\n this.iframeInstance.iframe.contentWindow.postMessage({ isInLightBox: inLightbox }, \"*\");\n }\n\n displayModal() {\n this.iframeInstance.iframe.addEventListener(\"load\", () => {\n fadeInElements([this.overlay, this.wrapper]);\n document.body.style.overflow = \"hidden\";\n this.isInLightboxPostMessage(\"true\");\n });\n\n document.body.appendChild(this.overlay);\n document.body.appendChild(this.wrapper);\n this.addPopStateListener();\n }\n\n init() {\n if (this.redirectOnMobile && this.isMobileDevice) {\n window.top.location.href = this.verificationUrl;\n } else {\n this.displayModal();\n this.iframeInstance.init(false); // false so we don't create iframe again, it's already created in createWrapper\n }\n }\n\n setViewModel(viewModel: Partial<ViewModel> | ViewModel) {\n this.iframeInstance.setViewModel(viewModel);\n }\n\n setOptions(options: Options) {\n this.iframeInstance.setOptions(options);\n }\n}\n\nexport default Modal;\n","import { type IframeUserConfiguration } from \"../types/types\";\n\nimport Iframe from \"./iframe\";\nimport Modal from \"./modal\";\n\nimport \"../../scss/sheerid-iframe.scss\";\n\n// Called from the parent page to load the jslib within an iFrame NOT in a modal, but in the flow of a page. e.g. between two divs\nexport function loadInlineIframe(containerElement: HTMLElement, url: string): Iframe {\n const iframe = new Iframe(containerElement, url);\n iframe.init();\n return iframe;\n}\n\n// Called from the parent page to load the jslib within an iFrame in a modal\nexport function loadInModal(url: string, userConfig: IframeUserConfiguration = {}) {\n const modal = new Modal(url, userConfig);\n modal.init();\n return modal;\n}\n\nexport default { loadInModal, loadInlineIframe };\n"],"names":["_attrCache","getGaAttributes","doNotTrack","isNewRelicAvailable","logLevel","prefix","logLevels","colors","standardStyles","getUsefulState","isError","e","warn","args","log","info","error","err","errorMessageGroup","additionalUsefulAttributes","errorObj","usefulAttributes","stateAttributes","newRelicPageAction","eventName","attributes","logAPIResponseTime","url","time","logger","desiredLogLevel","thisPrefix","getStateFn","QUERY_STRING_INSTALL_PAGE_URL","QUERY_STRING_INSTALL_TYPE","PubSub","fn","data","EventEmitter","name","off","fadeInElements","elements","element","removeElement","transitionTimeout","getVerificationUrl","newUrl","value","key","iframeClassNames","iframeTitle","iframeConstants","DEFAULT_OPTIONS","constants","assertValidFunction","candidate","Iframe","containerElement","callback","urlString","options","actionCb","listener","ev","messageAction","viewModel","message","installType","createIframe","Modal","userConfig","thresholdConfig","closeTxt","closeIcon","overlay","wrapper","action","inLightbox","loadInlineIframe","iframe","loadInModal","modal","index"],"mappings":"AAUA,MAAMA,IAAsC,CAAA,GAO/BC,IAAkB,YAA6BD,GAE/CE,IAAa,MAAO,OAAO,UAA4B,sBAEvDC,IAAsB,MAAO,OAAe,SAAS,CAACD,EAAA;ACdnE,IAAIE,IAAW,GACXC,IAAS;AACb,MAAMC,IAAY;AAAA,EAChB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV,GAEMC,IAAS;AAAA,EACb,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AACT,GAEMC,IAAiB;AAEvB,IAAIC,IAA4C,OAAO,CAAA;AAEvD,MAAMC,IAAU,CAACC,MAAWA,KAAKA,EAAE,SAASA,EAAE,SAExCC,IAAO,IAAIC,MAAgB;AAC/B,EAAIT,KAAY,KACd,QAAQ,KAAK,KAAKC,CAAM,SAAS,eAAeE,EAAO,IAAI,IAAIC,CAAc,IAAI,GAAGK,CAAI;AAE5F,GAEMC,IAAM,IAAID,MAAgB;AAC9B,EAAIT,KAAY,KACd,QAAQ,IAAI,KAAKC,CAAM,QAAQ,eAAeE,EAAO,GAAG,IAAIC,CAAc,IAAI,GAAGK,CAAI;AAEzF,GAEME,IAAO,IAAIF,MAAgB;AAC/B,EAAIT,KAAY,KACd,QAAQ,IAAI,KAAKC,CAAM,SAAS,eAAeE,EAAO,IAAI,IAAIC,CAAc,IAAI,GAAGK,CAAI;AAE3F,GAOMG,IAAQ,OACZC,GACAC,IAA4B,iBAC5BC,IAAsD,CAAA,MACnD;AACH,MAAIf,KAAY,GAAG;AACjB,QAAI,CAACa,GAAK;AACR,cAAQ,MAAM,IAAI,MAAM,2BAA2B,CAAC;AACpD;AAAA,IACF;AAEA,QAAIG;AACJ,IAAI,OAAOH,KAAQ,aAAUG,IAAW,IAAI,MAAMH,CAAG,IACjDP,EAAQO,CAAG,MAAGG,IAAWH,IACxBG,MAAUA,IAAW,IAAI,MAAM,eAAe;AAEnD,QAAIC,IAA2B,EAAE,mBAAAH,EAAA;AAIjC,QAAI;AAGF,MAAAG,IAAmB;AAAA,QACjB,GAHmB,MAAMpB,EAAA;AAAA,QAIzB,GAAGoB;AAAA,MAAA,GAEL,OAAQA,EAAyB;AAAA,IACnC,SAASV,GAAG;AACV,MAAIR,MACD,OAAe,MAAM,YAAYiB,GAAUC,CAAgB,IAG5DT,EAAK,0CAA0CD,CAAC;AAAA,IAEpD;AAIA,QAAI;AACF,YAAMW,IAAkBb,EAAA;AACxB,MAAAY,IAAmB;AAAA,QACjB,GAAGA;AAAA,QACH,GAAGC;AAAA,QACH,GAAGH;AAAA,MAAA;AAAA,IAEP,SAASR,GAAG;AACV,MAAIR,MACD,OAAe,MAAM,YAAYiB,GAAUC,CAAgB,IAG5DT,EAAK,8CAA8CD,CAAC;AAAA,IAExD;AAGA,IAAIR,OACD,OAAe,MAAM,YAAYiB,GAAUC,CAAgB,GAG9D,QAAQ;AAAA,MACN,KAAKhB,CAAM;AAAA,MACX,eAAeE,EAAO,KAAK,IAAIC,CAAc;AAAA,MAC7CY;AAAA,MACAC;AAAA,IAAA;AAAA,EAEJ;AACF,GAEaE,IAAqB,CAACC,GAAmBC,IAAa,OAAO;AACxE,EAAItB,OACD,OAAe,MAAM,cAAcqB,GAAWC,CAAU;AAE7D,GAKMC,IAAqB,CAACC,GAAaC,MAAiB;AACxD,EAAAL,EAAmB,oBAAoB;AAAA,IACrC,UAAUI;AAAA,IACV,mBAAmBC;AAAA,EAAA,CACpB;AACH,GAEaC,IAAS;AAAA,EACpB,OAAAb;AAAA,EACA,MAAAJ;AAAA,EACA,KAAAE;AAAA,EACA,MAAAC;AAAA;AAAA,EAEA,oBAAAW;AAAA,EACA,aAAa,CAACI,MAA8B;AAE1C,QAAI,CAACxB,EAAU,eAAewB,CAAe;AAC3C,YAAM,IAAI,MAAM,qBAAqBA,CAAe,GAAG;AAIzD,IAAA1B,IAAWE,EAAUwB,CAAe,GACpC,QAAQ;AAAA,MACN,KAAKzB,CAAM,qBAAqByB,CAAe;AAAA;AAAA,MAE/C,eAAevB,EAAOuB,CAAe,CAAC,IAAItB,CAAc;AAAA,IAAA,GAIrDL,OACHS,EAAK,6BAA6B;AAAA,EAEtC;AAAA,EACA,WAAW,CAACmB,MAAuB;AACjC,IAAA1B,IAAS0B;AAAA,EACX;AAAA,EACA,MAAM,CAACC,MAA0C;AAC/C,IAAAvB,IAAiBuB;AAAA,EACnB;AACF,GC7IaC,IAAwC,kBACxCC,IAAoC;AC3BjD,MAAMC,EAA4D;AAAA,EACxD,kCAAkB,IAAA;AAAA,EAE1B,IAAIC,GAAoB;AACtB,gBAAK,YAAY,IAAIA,CAAE,GAEhB,MAAM,KAAK,YAAY,OAAOA,CAAE;AAAA,EACzC;AAAA,EAEA,IAAIC,GAAS;AACX,SAAK,YAAY,QAAQ,CAACD,MAAOA,EAAGC,CAAI,CAAC;AAAA,EAC3C;AACF;AAcO,MAAMC,EAAgB;AAAA,EACnB,6BAAa,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrB,GAAsBC,GAASH,GAAiD;AAC9E,WAAK,KAAK,OAAO,IAAIG,CAAI,KAAG,KAAK,OAAO,IAAIA,GAAM,IAAIJ,EAAA,CAAwB,GAEvE,KAAK,OAAO,IAAII,CAAI,EAAE,IAAIH,CAAE;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAwBG,GAASH,GAAiD;AAChF,UAAMI,IAAM,KAAK,GAAGD,GAAM,CAACF,OACzBG,EAAA,GACOJ,EAAGC,CAAI,EACf;AAED,WAAOG;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAuBD,GAAS;AAC9B,SAAK,OAAO,OAAOA,CAAI;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAwBA,GAASF,GAAsB;AACrD,IAAI,KAAK,OAAO,IAAIE,CAAI,KACtB,KAAK,OAAO,IAAIA,CAAI,EAAE,IAAIF,CAAI;AAAA,EAElC;AACF;AC1EO,MAAMI,IAAiB,CAACC,MAA4B;AACzD,EAAAA,EAAS,QAAQ,CAACC,MAAyB;AACzC,IAAAA,EAAQ,UAAU,IAAI,SAAS;AAAA,EACjC,CAAC;AACH,GAEaC,IAAgB,CAACD,GAAsBE,MAA8B;AAChF,EAAAF,EAAQ,UAAU,OAAO,SAAS,GAClC,OAAO,WAAW,MAAM;AACtB,aAAS,KAAK,MAAM,WAAW,QAC/BA,EAAQ,WAAW,YAAYA,CAAO;AAAA,EACxC,GAAGE,CAAiB;AACtB,GAEaC,IAAqB,CAACnB,MAAwB;AACzD,QAAMoB,IAAS,IAAI,IAAIpB,CAAG;AAK1B,SAJkB,IAAI,IAAI,OAAO,SAAS,IAAI,EAIpC,aAAa,QAAQ,CAACqB,GAAOC,MAAQ;AAC7C,IAAKF,EAAO,aAAa,IAAIE,CAAG,KAC9BF,EAAO,aAAa,IAAIE,GAAKD,CAAK;AAAA,EAEtC,CAAC,GAEMD,EAAO;AAChB,GC3BMG,IAAmB;AAAA,EACvB,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,SAAS;AAAA,EACT,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AACd,GAEaC,IAAc,6BAEdC,IAAkB;AAAA,EAC7B,aAAaF;AAAA,EACb,gCAAgC;AAAA,EAChC,iCAAiC;AACnC,GCDaG,IAAiC;AAAA,EAC5C,WAAWC,EAAU,YAAY;AAAA,EACjC,OAAOH;AACT,GAEaI,IAAsB,CAACC,MAAwB;AAC1D,MAAI,OAAOA,KAAc;AACvB,UAAM,IAAI,MAAM,0CAA0C,OAAOA,CAAS,EAAE;AAEhF;AAEA,MAAMC,UAAenB,EAAyB;AAAA,EAC5C;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA,YAAqB;AAAA,EAErB,eAA2B,CAAA;AAAA,EAE3B,kBAAkC,CAAA;AAAA,EAElC,cAAc;AAAA,EAEd,YAAYoB,GAA+B/B,GAAa;AACtD,UAAA,GAEI8B,EAAO,eAAe9B,CAAG,KAC3B,KAAK,mBAAmB+B,GACxB,KAAK,kBAAkB,IAAI,IAAIZ,EAAmBnB,CAAG,CAAC,GACtD,KAAK,wBAAwB8B,EAAO,eAAA,KAEpC5B,EAAO,MAAM,2DAA2D,YAAY;AAAA,EAExF;AAAA,EAEA,UAAgB;AACd,SAAK,gBAAgB,QAAQ,CAAC8B,MAAaA,GAAU;AAAA,EACvD;AAAA,EAEA,OAAO,iBAAyB;AAC9B,WAAO,KAAK,SAAS,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC;AAAA,EAC/C;AAAA,EAEA,OAAO,eAAeC,GAA4B;AAChD,QAAI;AACF,YAAMjC,IAAM,IAAI,IAAIiC,CAAS;AAC7B,aAAOjC,EAAI,aAAa,WAAWA,EAAI,aAAa;AAAA,IACtD,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,aAAakC,GAA2C;AACtD,gBAAK,SAAS,SAAS,cAAc,QAAQ,GAC7C,KAAK,OAAO,UAAU,IAAIA,EAAQ,SAAS,GAC3C,KAAK,OAAO,QAAQA,EAAQ,OAC5B,KAAK,OAAO,MAAM,KAAK,aAAA,GACvB,KAAK,OAAO,QAAQ,0EACpB,KAAK,OAAO,SAAS,MAAM,KAAK,OAAA,GACzB,KAAK;AAAA,EACd;AAAA,EAEA,eAAuB;AACrB,UAAMlC,IAAM,IAAI,IAAI,KAAK,eAAe;AACxC,WAAAA,EAAI,aAAa,IAAI,yBAAyB,KAAK,qBAAqB,GACxEA,EAAI,aAAa,IAAIM,GAA+B,OAAO,SAAS,IAAI,GACxEN,EAAI,aAAa,IAAIO,GAA2B,KAAK,WAAW,GAC5D,KAAK,UACPP,EAAI,aAAa,IAAI,UAAU,KAAK,MAAM,GAErCA,EAAI,SAAA;AAAA,EACb;AAAA;AAAA;AAAA,EAIA,eAAegC,GAAoB;AACjC,QAAI;AACF,MAAAJ,EAAoBI,CAAQ;AAAA,IAC9B,QAAY;AACV,MAAA9B,EAAO,MAAM,gDAAgD,uBAAuB;AACpF;AAAA,IACF;AACA,IAAI,KAAK,YACP8B,EAAA,IAEA,KAAK,aAAa,KAAKA,CAAQ;AAAA,EAEnC;AAAA,EAEA,SAAS;AACP,SAAK,YAAY,IACjB,KAAK,aAAa,QAAQ,CAACA,MAAaA,GAAU;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,yBAAyBG,GAAqD;AAC5E,UAAMC,IAAW,CAACC,MAAqB;AACrC,MAAI,KAAK,gBAAgB,WAAWA,EAAG,UAInCA,EAAG,KAAK,0BAA0B,KAAK,0BAIvCA,EAAG,KAAK,UAAUA,EAAG,KAAK,OAAO,OACnCF,EAASE,EAAG,KAAK,MAAM,IACdA,EAAG,KAAK,UAAUA,EAAG,KAAK,UAEnCF,EAASE,EAAG,IAAI;AAAA,IAEpB;AAEA,WAAO,iBAAiB,WAAWD,CAAQ,GAC3C,KAAK,gBAAgB,KAAK,MAAM,OAAO,oBAAoB,WAAWA,CAAQ,CAAC;AAAA,EACjF;AAAA,EAEA,oBAAoB;AAClB,SAAK,yBAAyB,CAACE,MAAkB;AAC/C,MAAIA,EAAc,SAAS,UACzB,KAAK,KAAKA,EAAc,KAAK,MAAMA,EAAc,KAAK,IAAI,IAIzDA,EAAc,UAAUA,EAAc,WAAW,kBAClDA,EAAc,SAAS,oBAOvB,KAAK,OAAO,YAAY,MACxB,KAAK,OAAO,MAAM,SAAS,GAAGA,EAAc,MAAM;AAAA,IAEtD,CAAC;AAAA,EACH;AAAA,EAEA,aAAaC,GAA2C;AACtD,UAAMC,IAA4B;AAAA,MAChC,QAAQ;AAAA,MACR,WAAAD;AAAA,IAAA;AAGF,SAAK,eAAe,MAAM;AACxB,WAAK,OAAO,cAAc,YAAYC,GAAS,KAAK,gBAAgB,MAAM;AAAA,IAC5E,CAAC;AAAA,EACH;AAAA,EAEA,WAAWN,GAAkB;AAC3B,UAAMM,IAA4B;AAAA,MAChC,QAAQ;AAAA,MACR,SAAAN;AAAA,IAAA;AAOF,QAAI,CAAC,KAAK,aAAaA,EAAQ,QAAQ;AACrC,WAAK,SAASA,EAAQ;AACtB,YAAMd,IAAS,KAAK,aAAA;AACpB,MAAIA,MAAW,KAAK,OAAO,QACzB,KAAK,OAAO,MAAMA;AAAA,IAEtB;AAEA,SAAK,eAAe,MAAM;AACxB,WAAK,OAAO,cAAc,YAAYoB,GAAS,KAAK,gBAAgB,MAAM;AAAA,IAC5E,CAAC;AAAA,EACH;AAAA,EAEA,eAAeC,GAAqB;AAClC,SAAK,cAAcA;AAAA,EACrB;AAAA,EAEA,KAAKC,IAAwB,IAAY;AACvC,IAAIA,KACF,KAAK,aAAahB,CAAe,GAGnC,KAAK,kBAAA,GACL,KAAK,iBAAiB,YAAY,KAAK,MAAM;AAAA,EAC/C;AACF;AC9MA,MAAMiB,EAAM;AAAA,EACV;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA,YAAY3C,GAAa4C,GAAqC;AAC5D,UAAMC,IAAkBD,EAAW,kBAC/BA,EAAW,kBACXjB,EAAU;AACd,SAAK,kBAAkBR,EAAmBnB,CAAG,GAC7C,KAAK,mBAAmB4C,EAAW,kBAAkB,IACrD,KAAK,iBAAiB,OAAO,SAAS,KAAK,eAAe,OAAOC,CAAe,GAChF,KAAK,kBAAkBD,EAAW,kBAAkBA,EAAW,kBAAkB,IACjF,KAAK,cAAc,MACnB,KAAK,kBAAkBA,EAAW,mBAAmB,IACrD,KAAK,UAAUD,EAAM,cAAA,GACrB,KAAK,UAAU,KAAK,cAAA,GACpB,KAAK,iBAAA;AAAA,EACP;AAAA,EAEA,iBAAiB;AAKf,QAJA,KAAK,cAAc,SAAS,cAAc,QAAQ,GAClD,KAAK,YAAY,UAAU,IAAIhB,EAAU,YAAY,YAAY,GACjE,KAAK,YAAY,aAAa,cAAc,OAAO,GAE/C,KAAK,iBAAiB;AACxB,YAAMmB,IAAW,SAAS,cAAc,KAAK;AAC7C,MAAAA,EAAS,UAAU,IAAInB,EAAU,YAAY,UAAU,GACvDmB,EAAS,YAAY,KAAK,iBAC1B,KAAK,YAAY,YAAYA,CAAQ;AAAA,IACvC;AAEA,UAAMC,IAAY,SAAS,cAAc,MAAM;AAC/C,WAAAA,EAAU,UAAU,IAAIpB,EAAU,YAAY,UAAU,GACxDoB,EAAU,aAAa,QAAQ,KAAK,GACpC,KAAK,YAAY,YAAYA,CAAS,GAEtC,KAAK,YAAY,iBAAiB,SAAS,CAAC/D,MAAM;AAChD,MAAAA,EAAE,eAAA,GACE,KAAK,mBACPA,EAAE,gBAAA,GAEJ,KAAK,WAAA;AAAA,IACP,CAAC,GACM,KAAK;AAAA,EACd;AAAA,EAEA,aAAa;AACX,WAAO,oBAAoB,YAAY,KAAK,oBAAoB;AAChE,UAAMkC,IAAoBS,EAAU;AACpC,IAAAV,EAAc,KAAK,SAASC,CAAiB,GAC7CD,EAAc,KAAK,SAASC,CAAiB,GAC7C,KAAK,eAAe,QAAA;AAAA,EACtB;AAAA,EAEA,OAAO,gBAA6B;AAClC,UAAM8B,IAAU,SAAS,cAAc,KAAK;AAC5C,WAAAA,EAAQ,UAAU,IAAIrB,EAAU,YAAY,OAAO,GAC5CqB;AAAA,EACT;AAAA,EAEA,gBAA6B;AAC3B,UAAMC,IAAU,SAAS,cAAc,KAAK;AAC5C,IAAAA,EAAQ,UAAU,IAAItB,EAAU,YAAY,aAAa,GACzDsB,EAAQ,WAAW,IACnBA,EAAQ,aAAa,QAAQ,QAAQ,GACrCA,EAAQ,aAAa,cAAc,MAAM,GACzCA,EAAQ,aAAa,cAAczB,CAAW,GAC9CyB,EAAQ,YAAY,KAAK,gBAAgB,GAEzC,KAAK,iBAAiB,IAAInB,EAAOmB,GAAS,KAAK,eAAe,GAC9D,KAAK,eAAe,eAAe,kBAAkB,GAGrD,KAAK,KAAK,KAAK,eAAe,GAAG,KAAK,KAAK,cAAc,GACzD,KAAK,OAAO,KAAK,eAAe,KAAK,KAAK,KAAK,cAAc;AAE7D,UAAMf,IAAU;AAAA,MACd,WAAWP,EAAU,YAAY;AAAA,MACjC,OAAOH;AAAA,IAAA;AAET,gBAAK,eAAe,aAAaU,CAAO,GACxCe,EAAQ,YAAY,KAAK,eAAe,MAAM,GACvCA;AAAA,EACT;AAAA,EAEA,uBAAuB,MAAM,KAAK,WAAA;AAAA,EAElC,sBAAsB;AACpB,WAAO,iBAAiB,YAAY,KAAK,oBAAoB;AAAA,EAC/D;AAAA,EAEA,mBAAmB;AACjB,SAAK,eAAe,yBAAyB,CAACC,MAAW;AACvD,MAAIA,EAAO,SAAS,WAAWA,EAAO,YAAY,kBAChD,KAAK,YAAY,MAAA;AAAA,IAErB,CAAC,GAED,SAAS,iBAAiB,WAAW,CAAC,MAAM;AAE1C,MAD8B,EAAE,QAAQ,SAIpC,EAAE,YAAY,SAAS,kBAAkB,KAAK,gBAChD,KAAK,eAAe,OAAO,cAAc,YAAY,EAAE,SAAS,cAAA,GAAiB,GAAG,GACpF,EAAE,eAAA;AAAA,IAEN,CAAC;AAAA,EACH;AAAA,EAEA,wBAAwBC,GAAoB;AAC1C,SAAK,eAAe,OAAO,cAAc,YAAY,EAAE,cAAcA,EAAA,GAAc,GAAG;AAAA,EACxF;AAAA,EAEA,eAAe;AACb,SAAK,eAAe,OAAO,iBAAiB,QAAQ,MAAM;AACxD,MAAArC,EAAe,CAAC,KAAK,SAAS,KAAK,OAAO,CAAC,GAC3C,SAAS,KAAK,MAAM,WAAW,UAC/B,KAAK,wBAAwB,MAAM;AAAA,IACrC,CAAC,GAED,SAAS,KAAK,YAAY,KAAK,OAAO,GACtC,SAAS,KAAK,YAAY,KAAK,OAAO,GACtC,KAAK,oBAAA;AAAA,EACP;AAAA,EAEA,OAAO;AACL,IAAI,KAAK,oBAAoB,KAAK,iBAChC,OAAO,IAAI,SAAS,OAAO,KAAK,mBAEhC,KAAK,aAAA,GACL,KAAK,eAAe,KAAK,EAAK;AAAA,EAElC;AAAA,EAEA,aAAayB,GAA2C;AACtD,SAAK,eAAe,aAAaA,CAAS;AAAA,EAC5C;AAAA,EAEA,WAAWL,GAAkB;AAC3B,SAAK,eAAe,WAAWA,CAAO;AAAA,EACxC;AACF;AC/JO,SAASkB,EAAiBrB,GAA+B/B,GAAqB;AACnF,QAAMqD,IAAS,IAAIvB,EAAOC,GAAkB/B,CAAG;AAC/C,SAAAqD,EAAO,KAAA,GACAA;AACT;AAGO,SAASC,EAAYtD,GAAa4C,IAAsC,IAAI;AACjF,QAAMW,IAAQ,IAAIZ,EAAM3C,GAAK4C,CAAU;AACvC,SAAAW,EAAM,KAAA,GACCA;AACT;AAEA,MAAAC,IAAe,EAAE,aAAAF,GAAa,kBAAAF,EAAA;"}
|