@sheerid/jslib 1.86.0 → 1.89.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.
Files changed (201) hide show
  1. package/es5/Tmetrix.bundle.js +5 -5
  2. package/es5/messages_ar.bundle.js +5 -5
  3. package/es5/messages_bg.bundle.js +5 -5
  4. package/es5/messages_cs.bundle.js +5 -5
  5. package/es5/messages_da.bundle.js +5 -5
  6. package/es5/messages_de.bundle.js +5 -5
  7. package/es5/messages_el.bundle.js +5 -5
  8. package/es5/messages_en-GB.bundle.js +5 -5
  9. package/es5/messages_es-ES.bundle.js +5 -5
  10. package/es5/messages_es.bundle.js +5 -5
  11. package/es5/messages_fi.bundle.js +5 -5
  12. package/es5/messages_fr-CA.bundle.js +5 -5
  13. package/es5/messages_fr.bundle.js +5 -5
  14. package/es5/messages_ga.bundle.js +5 -5
  15. package/es5/messages_hr.bundle.js +5 -5
  16. package/es5/messages_hu.bundle.js +5 -5
  17. package/es5/messages_id.bundle.js +5 -5
  18. package/es5/messages_it.bundle.js +5 -5
  19. package/es5/messages_iw.bundle.js +5 -5
  20. package/es5/messages_ja.bundle.js +5 -5
  21. package/es5/messages_ko.bundle.js +5 -5
  22. package/es5/messages_lo.bundle.js +5 -5
  23. package/es5/messages_lt.bundle.js +5 -5
  24. package/es5/messages_ms.bundle.js +5 -5
  25. package/es5/messages_nl.bundle.js +5 -5
  26. package/es5/messages_no.bundle.js +5 -5
  27. package/es5/messages_pl.bundle.js +5 -5
  28. package/es5/messages_pt-BR.bundle.js +5 -5
  29. package/es5/messages_pt.bundle.js +5 -5
  30. package/es5/messages_ru.bundle.js +5 -5
  31. package/es5/messages_sk.bundle.js +5 -5
  32. package/es5/messages_sl.bundle.js +5 -5
  33. package/es5/messages_sr.bundle.js +5 -5
  34. package/es5/messages_sv.bundle.js +5 -5
  35. package/es5/messages_th.bundle.js +5 -5
  36. package/es5/messages_tr.bundle.js +5 -5
  37. package/es5/messages_zh-HK.bundle.js +5 -5
  38. package/es5/messages_zh.bundle.js +5 -5
  39. package/es6/{ar-5e9b2c56.es.js → ar-2cdf6160.es.js} +10 -8
  40. package/es6/{cs-00c4f9d7.es.js.map → ar-2cdf6160.es.js.map} +1 -1
  41. package/es6/{bg-2fcaa4da.es.js → bg-0c5aca6e.es.js} +10 -8
  42. package/es6/{ar-5e9b2c56.es.js.map → bg-0c5aca6e.es.js.map} +1 -1
  43. package/es6/{cs-00c4f9d7.es.js → cs-35678f6e.es.js} +10 -8
  44. package/es6/{da-02fdd36e.es.js.map → cs-35678f6e.es.js.map} +1 -1
  45. package/es6/{da-02fdd36e.es.js → da-86579c7f.es.js} +7 -5
  46. package/es6/{bg-2fcaa4da.es.js.map → da-86579c7f.es.js.map} +1 -1
  47. package/es6/{de-66b65933.es.js → de-7a1545e0.es.js} +6 -4
  48. package/es6/de-7a1545e0.es.js.map +1 -0
  49. package/es6/{el-0f3f4016.es.js → el-51fca2f8.es.js} +10 -8
  50. package/es6/el-51fca2f8.es.js.map +1 -0
  51. package/es6/{en-GB-76a4f388.es.js → en-GB-86160d8c.es.js} +10 -8
  52. package/es6/{en-GB-76a4f388.es.js.map → en-GB-86160d8c.es.js.map} +1 -1
  53. package/es6/{es-ES-e866f585.es.js → es-ES-a4e211eb.es.js} +10 -8
  54. package/es6/{es-ES-e866f585.es.js.map → es-ES-a4e211eb.es.js.map} +1 -1
  55. package/es6/{es-c1c51be6.es.js → es-bba0a374.es.js} +6 -4
  56. package/es6/es-bba0a374.es.js.map +1 -0
  57. package/es6/{fi-640bed13.es.js → fi-6a14a1cc.es.js} +5 -3
  58. package/es6/fi-6a14a1cc.es.js.map +1 -0
  59. package/es6/{fr-725ee42d.es.js → fr-8eeb4cc9.es.js} +8 -6
  60. package/es6/fr-8eeb4cc9.es.js.map +1 -0
  61. package/es6/{fr-CA-afd3ba40.es.js → fr-CA-2fd4d0a9.es.js} +10 -8
  62. package/es6/{fr-CA-afd3ba40.es.js.map → fr-CA-2fd4d0a9.es.js.map} +1 -1
  63. package/es6/{ga-b2289ec9.es.js → ga-ccef7fbe.es.js} +6 -4
  64. package/es6/ga-ccef7fbe.es.js.map +1 -0
  65. package/es6/{hr-8b9e9d31.es.js → hr-4b754dfc.es.js} +10 -8
  66. package/es6/hr-4b754dfc.es.js.map +1 -0
  67. package/es6/{hu-33cadbe9.es.js → hu-2b5530ec.es.js} +10 -8
  68. package/es6/hu-2b5530ec.es.js.map +1 -0
  69. package/es6/{id-ab2dbcfd.es.js → id-2597e3fc.es.js} +10 -8
  70. package/es6/id-2597e3fc.es.js.map +1 -0
  71. package/es6/{it-60c3fd24.es.js → it-6ca81474.es.js} +5 -3
  72. package/es6/it-6ca81474.es.js.map +1 -0
  73. package/es6/{iw-e444c32d.es.js → iw-9a0510d1.es.js} +10 -8
  74. package/es6/iw-9a0510d1.es.js.map +1 -0
  75. package/es6/{ja-dffc03b6.es.js → ja-a74ecfcc.es.js} +10 -8
  76. package/es6/ja-a74ecfcc.es.js.map +1 -0
  77. package/es6/{ko-6f73ffaa.es.js → ko-fdd52f9f.es.js} +10 -8
  78. package/es6/ko-fdd52f9f.es.js.map +1 -0
  79. package/es6/{lo-555d84ce.es.js → lo-35d1c157.es.js} +10 -8
  80. package/es6/lo-35d1c157.es.js.map +1 -0
  81. package/es6/{lt-83039246.es.js → lt-661bd367.es.js} +10 -8
  82. package/es6/lt-661bd367.es.js.map +1 -0
  83. package/es6/{ms-504aa11d.es.js → ms-d15b844f.es.js} +10 -8
  84. package/es6/ms-d15b844f.es.js.map +1 -0
  85. package/es6/{nl-9dec28dc.es.js → nl-06292d84.es.js} +6 -4
  86. package/es6/nl-06292d84.es.js.map +1 -0
  87. package/es6/{no-56fae81f.es.js → no-5357d59b.es.js} +6 -4
  88. package/es6/no-5357d59b.es.js.map +1 -0
  89. package/es6/{pl-6e881608.es.js → pl-7faa9204.es.js} +10 -8
  90. package/es6/pl-7faa9204.es.js.map +1 -0
  91. package/es6/{pt-6f06f933.es.js → pt-8ff17f0d.es.js} +10 -8
  92. package/es6/pt-8ff17f0d.es.js.map +1 -0
  93. package/es6/{pt-BR-1e3c580f.es.js → pt-BR-d80f044a.es.js} +10 -8
  94. package/es6/{pt-BR-1e3c580f.es.js.map → pt-BR-d80f044a.es.js.map} +1 -1
  95. package/es6/{ru-02d7b261.es.js → ru-31708887.es.js} +10 -8
  96. package/es6/ru-31708887.es.js.map +1 -0
  97. package/es6/{sk-80edda72.es.js → sk-49eb81f5.es.js} +9 -7
  98. package/es6/sk-49eb81f5.es.js.map +1 -0
  99. package/es6/{sl-b25f5813.es.js → sl-bed73b06.es.js} +10 -8
  100. package/es6/sl-bed73b06.es.js.map +1 -0
  101. package/es6/{sr-0b402aab.es.js → sr-4d57ff97.es.js} +10 -8
  102. package/es6/sr-4d57ff97.es.js.map +1 -0
  103. package/es6/{sv-9e4deeb2.es.js → sv-4d2ca38b.es.js} +6 -4
  104. package/es6/sv-4d2ca38b.es.js.map +1 -0
  105. package/es6/{th-8caee605.es.js → th-b730cf5f.es.js} +10 -8
  106. package/es6/th-b730cf5f.es.js.map +1 -0
  107. package/es6/{tr-622b0ee4.es.js → tr-888d9efb.es.js} +10 -8
  108. package/es6/tr-888d9efb.es.js.map +1 -0
  109. package/es6/{zh-0ac65d8e.es.js → zh-35daaed2.es.js} +10 -8
  110. package/es6/zh-35daaed2.es.js.map +1 -0
  111. package/es6/{zh-HK-65634acf.es.js → zh-HK-f6240d59.es.js} +10 -8
  112. package/es6/zh-HK-f6240d59.es.js.map +1 -0
  113. package/localized-messages/ar.json +9 -7
  114. package/localized-messages/bg.json +9 -7
  115. package/localized-messages/cs.json +9 -7
  116. package/localized-messages/da.json +6 -4
  117. package/localized-messages/de.json +5 -3
  118. package/localized-messages/el.json +9 -7
  119. package/localized-messages/en-GB.json +9 -7
  120. package/localized-messages/en-US.json +2 -0
  121. package/localized-messages/es-ES.json +9 -7
  122. package/localized-messages/es.json +5 -3
  123. package/localized-messages/fi.json +4 -2
  124. package/localized-messages/fr-CA.json +9 -7
  125. package/localized-messages/fr.json +7 -5
  126. package/localized-messages/ga.json +5 -3
  127. package/localized-messages/hr.json +9 -7
  128. package/localized-messages/hu.json +9 -7
  129. package/localized-messages/id.json +9 -7
  130. package/localized-messages/it.json +4 -2
  131. package/localized-messages/iw.json +9 -7
  132. package/localized-messages/ja.json +9 -7
  133. package/localized-messages/ko.json +9 -7
  134. package/localized-messages/lo.json +9 -7
  135. package/localized-messages/lt.json +9 -7
  136. package/localized-messages/ms.json +9 -7
  137. package/localized-messages/nl.json +5 -3
  138. package/localized-messages/no.json +5 -3
  139. package/localized-messages/pl.json +9 -7
  140. package/localized-messages/pt-BR.json +9 -7
  141. package/localized-messages/pt.json +9 -7
  142. package/localized-messages/ru.json +9 -7
  143. package/localized-messages/sk.json +8 -6
  144. package/localized-messages/sl.json +9 -7
  145. package/localized-messages/sr.json +9 -7
  146. package/localized-messages/sv.json +5 -3
  147. package/localized-messages/th.json +9 -7
  148. package/localized-messages/tr.json +9 -7
  149. package/localized-messages/zh-HK.json +9 -7
  150. package/localized-messages/zh.json +9 -7
  151. package/manifest.json +48 -48
  152. package/package.json +1 -1
  153. package/sheerid-requestOrg.css +5 -5
  154. package/sheerid-requestOrg.css.map +1 -1
  155. package/sheerid-requestOrg.js +15 -15
  156. package/sheerid-requestOrg.js.map +1 -1
  157. package/sheerid-utils.js +9 -9
  158. package/sheerid-utils.js.map +1 -1
  159. package/sheerid.css +5 -5
  160. package/sheerid.css.map +1 -1
  161. package/sheerid.js +18 -18
  162. package/sheerid.js.map +1 -1
  163. package/sheerides6.js +319 -224
  164. package/sheerides6.js.map +1 -1
  165. package/src/constants.d.ts +3 -0
  166. package/src/es6.d.ts +1 -2
  167. package/src/lib/frames/windowFocus.d.ts +0 -1
  168. package/src/lib/installScript/modal.d.ts +3 -0
  169. package/src/lib/intl/intl.d.ts +1 -1
  170. package/src/lib/types/runtimeTypes.d.ts +6 -2
  171. package/src/lib/types/types.d.ts +6 -3
  172. package/types-reference.zip +0 -0
  173. package/es6/de-66b65933.es.js.map +0 -1
  174. package/es6/el-0f3f4016.es.js.map +0 -1
  175. package/es6/es-c1c51be6.es.js.map +0 -1
  176. package/es6/fi-640bed13.es.js.map +0 -1
  177. package/es6/fr-725ee42d.es.js.map +0 -1
  178. package/es6/ga-b2289ec9.es.js.map +0 -1
  179. package/es6/hr-8b9e9d31.es.js.map +0 -1
  180. package/es6/hu-33cadbe9.es.js.map +0 -1
  181. package/es6/id-ab2dbcfd.es.js.map +0 -1
  182. package/es6/it-60c3fd24.es.js.map +0 -1
  183. package/es6/iw-e444c32d.es.js.map +0 -1
  184. package/es6/ja-dffc03b6.es.js.map +0 -1
  185. package/es6/ko-6f73ffaa.es.js.map +0 -1
  186. package/es6/lo-555d84ce.es.js.map +0 -1
  187. package/es6/lt-83039246.es.js.map +0 -1
  188. package/es6/ms-504aa11d.es.js.map +0 -1
  189. package/es6/nl-9dec28dc.es.js.map +0 -1
  190. package/es6/no-56fae81f.es.js.map +0 -1
  191. package/es6/pl-6e881608.es.js.map +0 -1
  192. package/es6/pt-6f06f933.es.js.map +0 -1
  193. package/es6/ru-02d7b261.es.js.map +0 -1
  194. package/es6/sk-80edda72.es.js.map +0 -1
  195. package/es6/sl-b25f5813.es.js.map +0 -1
  196. package/es6/sr-0b402aab.es.js.map +0 -1
  197. package/es6/sv-9e4deeb2.es.js.map +0 -1
  198. package/es6/th-8caee605.es.js.map +0 -1
  199. package/es6/tr-622b0ee4.es.js.map +0 -1
  200. package/es6/zh-0ac65d8e.es.js.map +0 -1
  201. package/es6/zh-HK-65634acf.es.js.map +0 -1
package/sheerides6.js CHANGED
@@ -327,97 +327,6 @@ function deepMerge(...objects) {
327
327
  return target;
328
328
  }
329
329
 
330
- const DEFAULT_LOCALE = "en-US";
331
- const DEFAULT_CDN_BASE_URL = "https://cdn.jsdelivr.net/npm/@sheerid/jslib@1/";
332
- const ACCEPTED_DOC_MIME_TYPES = [
333
- "image/png",
334
- "image/gif",
335
- "image/jpg",
336
- "image/jpeg",
337
- "image/bmp",
338
- "application/pdf",
339
- ];
340
- const MAX_DOC_UPLOAD_DOCS_ALLOWED = 3;
341
- const UPLOAD_FILE_PREFIX = "file";
342
- const QUERY_STRING_STEP_OVERRIDE = "mockStep";
343
- const QUERY_STRING_SEGMENT_OVERRIDE = "mockSegment";
344
- const QUERY_STRING_SUBSEGMENT_OVERRIDE = "mockSubSegment";
345
- const QUERY_STRING_ERRORID_OVERRIDE = "mockErrorId";
346
- const QUERY_STRING_PREV_STEP_OVERRIDE = "mockPreviousStep";
347
- const QUERY_STRING_INSTALL_PAGE_URL = "installPageUrl";
348
- const SSN_STRING_LENGTH = 9;
349
- const DEFAULT_MINIMUM_ORG_SEARCH_VALUE_LENGTH = 1;
350
- const DEFAULT_PRIVACY_POLICY_HOST = "www.sheerid.com";
351
- const DEFAULT_PRIVACY_POLICY_URL = "https://www.sheerid.com/privacy-policy/";
352
- const SHEERID = "SheerID";
353
- const requestOrganizationConstants = {
354
- MAX_RESULT_SIZE: 25,
355
- ORG_TYPES: "UNIVERSITY,HIGH_SCHOOL,K12",
356
- DEFAULT_ORG_TYPES: "UNIVERSITY",
357
- URL_REGEX: /(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,10}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/,
358
- SCHOOL_HOUSE_URL: "https://s3.amazonaws.com/com.sheerid.resources/common/images/requestOrganization/school.svg",
359
- SHEERID_LOGO_URL: "https://s3.amazonaws.com/com.sheerid.resources/common/images/requestOrganization/logo.svg",
360
- FEEDBACK_FORM_URL: "https://verify.sheerid.com/verification-support/feedback.html?token=",
361
- };
362
- const HTTP_REQUEST_TIMEOUT = 10000;
363
- const iframeClassNames = {
364
- INLINE_IFRAME_CONTENT: "sid-inline-iframe",
365
- MODAL_WRAPPER: "sid-modal__wrapper",
366
- MODAL_IFRAME: "sid-modal__iframe",
367
- OVERLAY: "sid-modal__overlay",
368
- CLOSE_BUTTON: "sid-modal__close-button",
369
- CLOSE_TEXT: "sid-modal__close-text",
370
- CLOSE_ICON: "sid-modal__close-icon",
371
- };
372
- const iframeConstants = {
373
- CLASS_NAMES: iframeClassNames,
374
- DEFAULT_MOBILE_THRESHOLD_WIDTH: 620,
375
- MODAL_OPACITY_TRANSITION_PERIOD: 300,
376
- };
377
-
378
- const isInLightbox = () => getSafe(() => window.parent.document.querySelector(`.${iframeConstants.CLASS_NAMES.MODAL_WRAPPER}`) !== null, false);
379
- const maintainFocusInLightbox = () => {
380
- const focusableElements = 'button, .sid-link, input, select, textarea, [tabindex]:not([tabindex="-1"]';
381
- const focusableContent = document.querySelectorAll(focusableElements);
382
- const modalCloseButton = getSafe(() => window.parent.document.querySelector(`.${iframeConstants.CLASS_NAMES.CLOSE_BUTTON}`), undefined);
383
- // first focusable element should be close modal button from parent page, or else
384
- // the natual first focusable element in the lightbox
385
- const firstFocusableElement = modalCloseButton || focusableContent[0];
386
- const lastFocusableElement = focusableContent[focusableContent.length - 1];
387
- if (firstFocusableElement && lastFocusableElement && isInLightbox()) {
388
- document.addEventListener("keydown", (e) => {
389
- const isTabPressed = e.key === "Tab";
390
- if (!isTabPressed) {
391
- return;
392
- }
393
- if (e.shiftKey) {
394
- if (document.activeElement === firstFocusableElement) {
395
- lastFocusableElement.focus();
396
- e.preventDefault();
397
- }
398
- }
399
- else if (document.activeElement === lastFocusableElement) {
400
- firstFocusableElement.focus();
401
- e.preventDefault();
402
- }
403
- });
404
- // adding second event listener to focus on close modal button rendered seperately on parent page
405
- window.parent.document.addEventListener("keydown", (e) => {
406
- const isTabPressed = e.key === "Tab";
407
- if (!isTabPressed) {
408
- return;
409
- }
410
- if (e.shiftKey) {
411
- if (window.parent.document.activeElement === firstFocusableElement) {
412
- lastFocusableElement.focus();
413
- e.preventDefault();
414
- }
415
- }
416
- });
417
- firstFocusableElement.focus();
418
- }
419
- };
420
-
421
330
  let logLevel = 4; // default
422
331
  let prefix = "";
423
332
  const logLevels = {
@@ -482,7 +391,6 @@ const error = (err, errorMessageGroup) => {
482
391
  openOrgSearchEnabled: getSafe(() => state.programTheme.openOrgSearchEnabled),
483
392
  jslibVerActual: getSafe(() => window.sheerIdPubV, "?"),
484
393
  jslibVerRequested: getSafe(() => window.sheerIdReqV, "?"),
485
- isInLightbox: isInLightbox(),
486
394
  };
487
395
  }
488
396
  }
@@ -646,6 +554,8 @@ var SegmentToStepMap;
646
554
  SegmentToStepMap["medical"] = "collectMedicalProfessionalPersonalInfo";
647
555
  SegmentToStepMap["recentMover"] = "collectMoverPersonalInfo";
648
556
  SegmentToStepMap["licensedProfessional"] = "collectLicensedProfessionalPersonalInfo";
557
+ SegmentToStepMap["identity"] = "collectGeneralIdentityPersonalInfo";
558
+ SegmentToStepMap["member"] = "collectMemberPersonalInfo";
649
559
  })(SegmentToStepMap || (SegmentToStepMap = {}));
650
560
  var SegmentEnum;
651
561
  (function (SegmentEnum) {
@@ -670,6 +580,7 @@ var SubSegmentEnum;
670
580
  SubSegmentEnum["RESERVIST"] = "reservist";
671
581
  SubSegmentEnum["MILITARY_RETIREE"] = "retiree";
672
582
  SubSegmentEnum["MILITARY_FAMILY"] = "militaryFamily";
583
+ SubSegmentEnum["GOLD_STAR_FAMILY"] = "goldStarFamily";
673
584
  SubSegmentEnum["FIREFIGHTER"] = "fireFighter";
674
585
  SubSegmentEnum["POLICE"] = "police";
675
586
  SubSegmentEnum["EMT"] = "emt";
@@ -691,6 +602,7 @@ var MilitaryStatusDefaultMessagesEnum;
691
602
  MilitaryStatusDefaultMessagesEnum["RESERVIST"] = "Reservist or National Guard";
692
603
  MilitaryStatusDefaultMessagesEnum["VETERAN"] = "Military Veteran or Retiree";
693
604
  MilitaryStatusDefaultMessagesEnum["MILITARY_FAMILY"] = "Military Family";
605
+ MilitaryStatusDefaultMessagesEnum["GOLD_STAR_FAMILY"] = "Gold Star Family";
694
606
  })(MilitaryStatusDefaultMessagesEnum || (MilitaryStatusDefaultMessagesEnum = {}));
695
607
  const militaryReservistOrgNames = [
696
608
  "Air Force Reserve",
@@ -1181,6 +1093,56 @@ const assertValidDatabaseId = (candidate) => {
1181
1093
  }
1182
1094
  };
1183
1095
 
1096
+ const DEFAULT_LOCALE = "en-US";
1097
+ const DEFAULT_CDN_BASE_URL = "https://cdn.jsdelivr.net/npm/@sheerid/jslib@1/";
1098
+ const ACCEPTED_DOC_MIME_TYPES = [
1099
+ "image/png",
1100
+ "image/gif",
1101
+ "image/jpg",
1102
+ "image/jpeg",
1103
+ "image/bmp",
1104
+ "application/pdf",
1105
+ ];
1106
+ const MAX_DOC_UPLOAD_DOCS_ALLOWED = 3;
1107
+ const UPLOAD_FILE_PREFIX = "file";
1108
+ const QUERY_STRING_STEP_OVERRIDE = "mockStep";
1109
+ const QUERY_STRING_SEGMENT_OVERRIDE = "mockSegment";
1110
+ const QUERY_STRING_SUBSEGMENT_OVERRIDE = "mockSubSegment";
1111
+ const QUERY_STRING_ERRORID_OVERRIDE = "mockErrorId";
1112
+ const QUERY_STRING_REWARD_CODE_OVERRIDE = "mockRewardCode";
1113
+ const QUERY_STRING_REDIRECT_URL_OVERRIDE = "mockRedirectUrl";
1114
+ const QUERY_STRING_PREV_STEP_OVERRIDE = "mockPreviousStep";
1115
+ const QUERY_STRING_INSTALL_PAGE_URL = "installPageUrl";
1116
+ const SSN_STRING_LENGTH = 9;
1117
+ const DEFAULT_MINIMUM_ORG_SEARCH_VALUE_LENGTH = 1;
1118
+ const DEFAULT_PRIVACY_POLICY_HOST = "www.sheerid.com";
1119
+ const DEFAULT_PRIVACY_POLICY_URL = "https://www.sheerid.com/privacy-policy/";
1120
+ const SHEERID = "SheerID";
1121
+ const requestOrganizationConstants = {
1122
+ MAX_RESULT_SIZE: 25,
1123
+ ORG_TYPES: "UNIVERSITY,HIGH_SCHOOL,K12",
1124
+ DEFAULT_ORG_TYPES: "UNIVERSITY",
1125
+ URL_REGEX: /(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,10}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/,
1126
+ SCHOOL_HOUSE_URL: "https://s3.amazonaws.com/com.sheerid.resources/common/images/requestOrganization/school.svg",
1127
+ SHEERID_LOGO_URL: "https://s3.amazonaws.com/com.sheerid.resources/common/images/requestOrganization/logo.svg",
1128
+ FEEDBACK_FORM_URL: "https://verify.sheerid.com/verification-support/feedback.html?token=",
1129
+ };
1130
+ const HTTP_REQUEST_TIMEOUT = 10000;
1131
+ const iframeClassNames = {
1132
+ INLINE_IFRAME_CONTENT: "sid-inline-iframe",
1133
+ MODAL_WRAPPER: "sid-modal__wrapper",
1134
+ MODAL_IFRAME: "sid-modal__iframe",
1135
+ OVERLAY: "sid-modal__overlay",
1136
+ CLOSE_BUTTON: "sid-modal__close-button",
1137
+ CLOSE_TEXT: "sid-modal__close-text",
1138
+ CLOSE_ICON: "sid-modal__close-icon",
1139
+ };
1140
+ const iframeConstants = {
1141
+ CLASS_NAMES: iframeClassNames,
1142
+ DEFAULT_MOBILE_THRESHOLD_WIDTH: 620,
1143
+ MODAL_OPACITY_TRANSITION_PERIOD: 300,
1144
+ };
1145
+
1184
1146
  const restOptions = {
1185
1147
  serviceUrl: "https://services.sheerid.com/",
1186
1148
  resources: {
@@ -1205,6 +1167,8 @@ const defaultOptions = {
1205
1167
  mockStep: undefined,
1206
1168
  mockSubSegment: undefined,
1207
1169
  mockErrorId: undefined,
1170
+ mockRewardCode: undefined,
1171
+ mockRedirectUrl: undefined,
1208
1172
  installPageUrl: undefined,
1209
1173
  mockResponse: undefined,
1210
1174
  doFetchTheme: true,
@@ -1278,6 +1242,14 @@ const setOptions = (newOptions) => {
1278
1242
  options$1[QUERY_STRING_ERRORID_OVERRIDE] = newOptions[QUERY_STRING_ERRORID_OVERRIDE];
1279
1243
  logger.info(`option "${QUERY_STRING_ERRORID_OVERRIDE}" set to ${options$1[QUERY_STRING_ERRORID_OVERRIDE]}`);
1280
1244
  }
1245
+ if (newOptions.hasOwnProperty(QUERY_STRING_REWARD_CODE_OVERRIDE)) {
1246
+ options$1[QUERY_STRING_REWARD_CODE_OVERRIDE] = newOptions[QUERY_STRING_REWARD_CODE_OVERRIDE];
1247
+ logger.info(`option "${QUERY_STRING_REWARD_CODE_OVERRIDE}" set to ${options$1[QUERY_STRING_REWARD_CODE_OVERRIDE]}`);
1248
+ }
1249
+ if (newOptions.hasOwnProperty(QUERY_STRING_REDIRECT_URL_OVERRIDE)) {
1250
+ options$1[QUERY_STRING_REDIRECT_URL_OVERRIDE] = newOptions[QUERY_STRING_REDIRECT_URL_OVERRIDE];
1251
+ logger.info(`option "${QUERY_STRING_REDIRECT_URL_OVERRIDE}" set to ${options$1[QUERY_STRING_REDIRECT_URL_OVERRIDE]}`);
1252
+ }
1281
1253
  if (newOptions.hasOwnProperty(QUERY_STRING_INSTALL_PAGE_URL)) {
1282
1254
  options$1[QUERY_STRING_INSTALL_PAGE_URL] = newOptions[QUERY_STRING_INSTALL_PAGE_URL];
1283
1255
  logger.info(`option "${QUERY_STRING_INSTALL_PAGE_URL}" set to ${options$1[QUERY_STRING_INSTALL_PAGE_URL]}`);
@@ -1794,6 +1766,7 @@ var enUSMessages = {
1794
1766
  "defaultMessages.DOCTOR": "Doctor",
1795
1767
  "defaultMessages.EMT": "EMT",
1796
1768
  "defaultMessages.FIREFIGHTER": "Firefighter",
1769
+ "defaultMessages.GOLD_STAR_FAMILY": "Gold Star Family",
1797
1770
  "defaultMessages.HOME_BUYER": "Home Buyer",
1798
1771
  "defaultMessages.LICENSED_COSMETOLOGIST": "Licensed Cosmetologist",
1799
1772
  "defaultMessages.LICENSED_REAL_ESTATE_AGENT": "Licensed Real Estate Agent",
@@ -2324,6 +2297,7 @@ var enUSMessages = {
2324
2297
  "defaultMessages.step.docUpload.acceptableUploads.member.payStub": "Pay stub from within last 90 days",
2325
2298
  "defaultMessages.step.docUpload.acceptableUploads.military.activeDuty": "Any document that proves you are currently serving as active duty in the armed forces for 30 days or more",
2326
2299
  "defaultMessages.step.docUpload.acceptableUploads.military.dependent": "Any document that proves you are a Registered Military Dependent",
2300
+ "defaultMessages.step.docUpload.acceptableUploads.military.goldStarFamily": "Any document that proves you are a Registered Gold Star Family Member",
2327
2301
  "defaultMessages.step.docUpload.acceptableUploads.military.reservistA": "Any document that shows you are currently serving in a reserve component of the armed forces",
2328
2302
  "defaultMessages.step.docUpload.acceptableUploads.military.retiree": "Any document that proves you are a retiree from the armed forces",
2329
2303
  "defaultMessages.step.docUpload.acceptableUploads.military.veteran": "Any document that proves you met the qualifications of military service and were honorably discharged",
@@ -2717,154 +2691,154 @@ const getMessagesModuleByLocale = async (locale) => {
2717
2691
  switch (locale) {
2718
2692
  case "ar":
2719
2693
  localizedMessages = await import(
2720
- /* webpackChunkName: "messages_ar" */ './es6/ar-5e9b2c56.es.js').then((m) => m.default);
2694
+ /* webpackChunkName: "messages_ar" */ './es6/ar-2cdf6160.es.js').then((m) => m.default);
2721
2695
  break;
2722
2696
  case "bg":
2723
2697
  localizedMessages = await import(
2724
- /* webpackChunkName: "messages_bg" */ './es6/bg-2fcaa4da.es.js').then((m) => m.default);
2698
+ /* webpackChunkName: "messages_bg" */ './es6/bg-0c5aca6e.es.js').then((m) => m.default);
2725
2699
  break;
2726
2700
  case "cs":
2727
2701
  localizedMessages = await import(
2728
- /* webpackChunkName: "messages_cs" */ './es6/cs-00c4f9d7.es.js').then((m) => m.default);
2702
+ /* webpackChunkName: "messages_cs" */ './es6/cs-35678f6e.es.js').then((m) => m.default);
2729
2703
  break;
2730
2704
  case "da":
2731
2705
  localizedMessages = await import(
2732
- /* webpackChunkName: "messages_da" */ './es6/da-02fdd36e.es.js').then((m) => m.default);
2706
+ /* webpackChunkName: "messages_da" */ './es6/da-86579c7f.es.js').then((m) => m.default);
2733
2707
  break;
2734
2708
  case "de":
2735
2709
  localizedMessages = await import(
2736
- /* webpackChunkName: "messages_de" */ './es6/de-66b65933.es.js').then((m) => m.default);
2710
+ /* webpackChunkName: "messages_de" */ './es6/de-7a1545e0.es.js').then((m) => m.default);
2737
2711
  break;
2738
2712
  case "el":
2739
2713
  localizedMessages = await import(
2740
- /* webpackChunkName: "messages_el" */ './es6/el-0f3f4016.es.js').then((m) => m.default);
2714
+ /* webpackChunkName: "messages_el" */ './es6/el-51fca2f8.es.js').then((m) => m.default);
2741
2715
  break;
2742
2716
  case "en-GB":
2743
2717
  localizedMessages = await import(
2744
- /* webpackChunkName: "messages_en-GB" */ './es6/en-GB-76a4f388.es.js').then((m) => m.default);
2718
+ /* webpackChunkName: "messages_en-GB" */ './es6/en-GB-86160d8c.es.js').then((m) => m.default);
2745
2719
  break;
2746
2720
  case "en-US":
2747
2721
  localizedMessages = enUSMessages;
2748
2722
  break;
2749
2723
  case "es-ES":
2750
2724
  localizedMessages = await import(
2751
- /* webpackChunkName: "messages_es-ES" */ './es6/es-ES-e866f585.es.js').then((m) => m.default);
2725
+ /* webpackChunkName: "messages_es-ES" */ './es6/es-ES-a4e211eb.es.js').then((m) => m.default);
2752
2726
  break;
2753
2727
  case "es":
2754
2728
  localizedMessages = await import(
2755
- /* webpackChunkName: "messages_es" */ './es6/es-c1c51be6.es.js').then((m) => m.default);
2729
+ /* webpackChunkName: "messages_es" */ './es6/es-bba0a374.es.js').then((m) => m.default);
2756
2730
  break;
2757
2731
  case "fi":
2758
2732
  localizedMessages = await import(
2759
- /* webpackChunkName: "messages_fi" */ './es6/fi-640bed13.es.js').then((m) => m.default);
2733
+ /* webpackChunkName: "messages_fi" */ './es6/fi-6a14a1cc.es.js').then((m) => m.default);
2760
2734
  break;
2761
2735
  case "fr-CA":
2762
2736
  localizedMessages = await import(
2763
- /* webpackChunkName: "messages_fr-CA" */ './es6/fr-CA-afd3ba40.es.js').then((m) => m.default);
2737
+ /* webpackChunkName: "messages_fr-CA" */ './es6/fr-CA-2fd4d0a9.es.js').then((m) => m.default);
2764
2738
  break;
2765
2739
  case "fr":
2766
2740
  localizedMessages = await import(
2767
- /* webpackChunkName: "messages_fr" */ './es6/fr-725ee42d.es.js').then((m) => m.default);
2741
+ /* webpackChunkName: "messages_fr" */ './es6/fr-8eeb4cc9.es.js').then((m) => m.default);
2768
2742
  break;
2769
2743
  case "ga":
2770
2744
  localizedMessages = await import(
2771
- /* webpackChunkName: "messages_ga" */ './es6/ga-b2289ec9.es.js').then((m) => m.default);
2745
+ /* webpackChunkName: "messages_ga" */ './es6/ga-ccef7fbe.es.js').then((m) => m.default);
2772
2746
  break;
2773
2747
  case "hr":
2774
2748
  localizedMessages = await import(
2775
- /* webpackChunkName: "messages_hr" */ './es6/hr-8b9e9d31.es.js').then((m) => m.default);
2749
+ /* webpackChunkName: "messages_hr" */ './es6/hr-4b754dfc.es.js').then((m) => m.default);
2776
2750
  break;
2777
2751
  case "hu":
2778
2752
  localizedMessages = await import(
2779
- /* webpackChunkName: "messages_hu" */ './es6/hu-33cadbe9.es.js').then((m) => m.default);
2753
+ /* webpackChunkName: "messages_hu" */ './es6/hu-2b5530ec.es.js').then((m) => m.default);
2780
2754
  break;
2781
2755
  case "id":
2782
2756
  localizedMessages = await import(
2783
- /* webpackChunkName: "messages_id" */ './es6/id-ab2dbcfd.es.js').then((m) => m.default);
2757
+ /* webpackChunkName: "messages_id" */ './es6/id-2597e3fc.es.js').then((m) => m.default);
2784
2758
  break;
2785
2759
  case "it":
2786
2760
  localizedMessages = await import(
2787
- /* webpackChunkName: "messages_it" */ './es6/it-60c3fd24.es.js').then((m) => m.default);
2761
+ /* webpackChunkName: "messages_it" */ './es6/it-6ca81474.es.js').then((m) => m.default);
2788
2762
  break;
2789
2763
  case "iw":
2790
2764
  localizedMessages = await import(
2791
- /* webpackChunkName: "messages_iw" */ './es6/iw-e444c32d.es.js').then((m) => m.default);
2765
+ /* webpackChunkName: "messages_iw" */ './es6/iw-9a0510d1.es.js').then((m) => m.default);
2792
2766
  break;
2793
2767
  case "ja":
2794
2768
  localizedMessages = await import(
2795
- /* webpackChunkName: "messages_ja" */ './es6/ja-dffc03b6.es.js').then((m) => m.default);
2769
+ /* webpackChunkName: "messages_ja" */ './es6/ja-a74ecfcc.es.js').then((m) => m.default);
2796
2770
  break;
2797
2771
  case "ko":
2798
2772
  localizedMessages = await import(
2799
- /* webpackChunkName: "messages_ko" */ './es6/ko-6f73ffaa.es.js').then((m) => m.default);
2773
+ /* webpackChunkName: "messages_ko" */ './es6/ko-fdd52f9f.es.js').then((m) => m.default);
2800
2774
  break;
2801
2775
  case "lo":
2802
2776
  localizedMessages = await import(
2803
- /* webpackChunkName: "messages_lo" */ './es6/lo-555d84ce.es.js').then((m) => m.default);
2777
+ /* webpackChunkName: "messages_lo" */ './es6/lo-35d1c157.es.js').then((m) => m.default);
2804
2778
  break;
2805
2779
  case "lt":
2806
2780
  localizedMessages = await import(
2807
- /* webpackChunkName: "messages_lt" */ './es6/lt-83039246.es.js').then((m) => m.default);
2781
+ /* webpackChunkName: "messages_lt" */ './es6/lt-661bd367.es.js').then((m) => m.default);
2808
2782
  break;
2809
2783
  case "ms":
2810
2784
  localizedMessages = await import(
2811
- /* webpackChunkName: "messages_ms" */ './es6/ms-504aa11d.es.js').then((m) => m.default);
2785
+ /* webpackChunkName: "messages_ms" */ './es6/ms-d15b844f.es.js').then((m) => m.default);
2812
2786
  break;
2813
2787
  case "nl":
2814
2788
  localizedMessages = await import(
2815
- /* webpackChunkName: "messages_nl" */ './es6/nl-9dec28dc.es.js').then((m) => m.default);
2789
+ /* webpackChunkName: "messages_nl" */ './es6/nl-06292d84.es.js').then((m) => m.default);
2816
2790
  break;
2817
2791
  case "no":
2818
2792
  localizedMessages = await import(
2819
- /* webpackChunkName: "messages_no" */ './es6/no-56fae81f.es.js').then((m) => m.default);
2793
+ /* webpackChunkName: "messages_no" */ './es6/no-5357d59b.es.js').then((m) => m.default);
2820
2794
  break;
2821
2795
  case "pl":
2822
2796
  localizedMessages = await import(
2823
- /* webpackChunkName: "messages_pl" */ './es6/pl-6e881608.es.js').then((m) => m.default);
2797
+ /* webpackChunkName: "messages_pl" */ './es6/pl-7faa9204.es.js').then((m) => m.default);
2824
2798
  break;
2825
2799
  case "pt-BR":
2826
2800
  localizedMessages = await import(
2827
- /* webpackChunkName: "messages_pt-BR" */ './es6/pt-BR-1e3c580f.es.js').then((m) => m.default);
2801
+ /* webpackChunkName: "messages_pt-BR" */ './es6/pt-BR-d80f044a.es.js').then((m) => m.default);
2828
2802
  break;
2829
2803
  case "pt":
2830
2804
  localizedMessages = await import(
2831
- /* webpackChunkName: "messages_pt" */ './es6/pt-6f06f933.es.js').then((m) => m.default);
2805
+ /* webpackChunkName: "messages_pt" */ './es6/pt-8ff17f0d.es.js').then((m) => m.default);
2832
2806
  break;
2833
2807
  case "ru":
2834
2808
  localizedMessages = await import(
2835
- /* webpackChunkName: "messages_ru" */ './es6/ru-02d7b261.es.js').then((m) => m.default);
2809
+ /* webpackChunkName: "messages_ru" */ './es6/ru-31708887.es.js').then((m) => m.default);
2836
2810
  break;
2837
2811
  case "sk":
2838
2812
  localizedMessages = await import(
2839
- /* webpackChunkName: "messages_sk" */ './es6/sk-80edda72.es.js').then((m) => m.default);
2813
+ /* webpackChunkName: "messages_sk" */ './es6/sk-49eb81f5.es.js').then((m) => m.default);
2840
2814
  break;
2841
2815
  case "sl":
2842
2816
  localizedMessages = await import(
2843
- /* webpackChunkName: "messages_sl" */ './es6/sl-b25f5813.es.js').then((m) => m.default);
2817
+ /* webpackChunkName: "messages_sl" */ './es6/sl-bed73b06.es.js').then((m) => m.default);
2844
2818
  break;
2845
2819
  case "sr":
2846
2820
  localizedMessages = await import(
2847
- /* webpackChunkName: "messages_sr" */ './es6/sr-0b402aab.es.js').then((m) => m.default);
2821
+ /* webpackChunkName: "messages_sr" */ './es6/sr-4d57ff97.es.js').then((m) => m.default);
2848
2822
  break;
2849
2823
  case "sv":
2850
2824
  localizedMessages = await import(
2851
- /* webpackChunkName: "messages_sv" */ './es6/sv-9e4deeb2.es.js').then((m) => m.default);
2825
+ /* webpackChunkName: "messages_sv" */ './es6/sv-4d2ca38b.es.js').then((m) => m.default);
2852
2826
  break;
2853
2827
  case "th":
2854
2828
  localizedMessages = await import(
2855
- /* webpackChunkName: "messages_th" */ './es6/th-8caee605.es.js').then((m) => m.default);
2829
+ /* webpackChunkName: "messages_th" */ './es6/th-b730cf5f.es.js').then((m) => m.default);
2856
2830
  break;
2857
2831
  case "tr":
2858
2832
  localizedMessages = await import(
2859
- /* webpackChunkName: "messages_tr" */ './es6/tr-622b0ee4.es.js').then((m) => m.default);
2833
+ /* webpackChunkName: "messages_tr" */ './es6/tr-888d9efb.es.js').then((m) => m.default);
2860
2834
  break;
2861
2835
  case "zh-HK":
2862
2836
  localizedMessages = await import(
2863
- /* webpackChunkName: "messages_zh-HK" */ './es6/zh-HK-65634acf.es.js').then((m) => m.default);
2837
+ /* webpackChunkName: "messages_zh-HK" */ './es6/zh-HK-f6240d59.es.js').then((m) => m.default);
2864
2838
  break;
2865
2839
  case "zh":
2866
2840
  localizedMessages = await import(
2867
- /* webpackChunkName: "messages_zh" */ './es6/zh-0ac65d8e.es.js').then((m) => m.default);
2841
+ /* webpackChunkName: "messages_zh" */ './es6/zh-35daaed2.es.js').then((m) => m.default);
2868
2842
  break;
2869
2843
  default:
2870
2844
  logger.warn(`getMessagesModuleByLocale: Unable to load messages for ${locale}, falling back to en-US`);
@@ -2974,7 +2948,7 @@ const getMessages = async (locale, programThemeMessages, segment) => {
2974
2948
  * Return a flattened messages object, where properties are dot-string style.
2975
2949
  * @private
2976
2950
  */
2977
- const getRequestOrgMessages = async (locale) => {
2951
+ const getRequestOrgMessages = async (locale, programThemeMessages) => {
2978
2952
  let usedLocale = locale;
2979
2953
  if (!isValidLocale(usedLocale)) {
2980
2954
  logger.error(`Invalid locale ${usedLocale}, falling back to ${DEFAULT_LOCALE} for the requestOrg form`, "Invalid locale");
@@ -2988,10 +2962,13 @@ const getRequestOrgMessages = async (locale) => {
2988
2962
  ? messagesModule.requestOrganizationMessages
2989
2963
  : {};
2990
2964
  const optionsMessages = getOptionsMessages(usedLocale);
2965
+ const cleanFlatThemeMessages = programThemeMessages
2966
+ ? getThemeMessages$1(programThemeMessages)
2967
+ : {};
2991
2968
  // For non en-US locales, we'll merge en-US messages as a base
2992
2969
  const defaultLocaleMessages = usedLocale !== DEFAULT_LOCALE ? await getRequestOrgMessages(DEFAULT_LOCALE) : {};
2993
2970
  // Flatten these before object.assign so they are dot-props, so nested objects aren't overwritten, deleting properties
2994
- const messages = Object.assign({}, defaultLocaleMessages, defaultMessages ? flat_1(defaultMessages) : {}, requestOrganizationMessages ? flat_1(requestOrganizationMessages) : {}, optionsMessages ? flat_1(optionsMessages) : {});
2971
+ const messages = Object.assign({}, defaultLocaleMessages, defaultMessages ? flat_1(defaultMessages) : {}, requestOrganizationMessages ? flat_1(requestOrganizationMessages) : {}, cleanFlatThemeMessages, optionsMessages ? flat_1(optionsMessages) : {});
2995
2972
  return messages;
2996
2973
  };
2997
2974
  /**
@@ -3005,26 +2982,19 @@ const getRequestOrgMessages = async (locale) => {
3005
2982
  * If found a locale but is not supported by the library, it'll return DEFAULT_LOCALE instead.
3006
2983
  */
3007
2984
  const getLocaleSafely = (viewModel, verificationResponse) => {
3008
- function getLocaleFromViewModel(viewModel) {
3009
- return getSafe(() => viewModel.localeChoice.value);
3010
- }
3011
- function getLocaleFromCountrySelection(viewModel) {
3012
- const country = getSafe(() => viewModel.countryChoice.value);
3013
- return country ? countryToLocale(country) : undefined;
3014
- }
3015
2985
  function getLocaleFromUrl() {
3016
2986
  const b = getQueryParamsFromUrl(window.location.href);
3017
2987
  const queryParamLocale = b.get("locale");
3018
2988
  return queryParamLocale || undefined;
3019
2989
  }
3020
- function getLocaleFromVerificationResponse(verificationResponse) {
3021
- return getSafe(() => verificationResponse.locale);
2990
+ function getLocaleFromCountryChoice(country) {
2991
+ return country ? countryToLocale(country) : undefined;
3022
2992
  }
3023
- const locale = getLocaleFromViewModel(viewModel) ||
3024
- getLocaleFromCountrySelection(viewModel) ||
2993
+ const locale = getSafe(() => viewModel.localeChoice.value) ||
2994
+ getLocaleFromCountryChoice(getSafe(() => viewModel.countryChoice.value)) ||
3025
2995
  getOptions().locale ||
3026
2996
  getLocaleFromUrl() ||
3027
- getLocaleFromVerificationResponse(verificationResponse) ||
2997
+ getSafe(() => verificationResponse.locale) ||
3028
2998
  DEFAULT_LOCALE;
3029
2999
  try {
3030
3000
  assertValidLocale(locale);
@@ -3621,7 +3591,7 @@ const requestOrganizationReducer = (state, action) => {
3621
3591
  ...state,
3622
3592
  programTheme: action.payload,
3623
3593
  };
3624
- case "UPDATE_VIEW_MODEL":
3594
+ case "UPDATE_VIEW_MODEL": {
3625
3595
  const viewModel = fn(state.viewModel, (draft) => ({
3626
3596
  ...draft,
3627
3597
  ...action.payload,
@@ -3630,6 +3600,7 @@ const requestOrganizationReducer = (state, action) => {
3630
3600
  ...state,
3631
3601
  viewModel,
3632
3602
  };
3603
+ }
3633
3604
  case "SET_MESSAGES":
3634
3605
  return {
3635
3606
  ...state,
@@ -3655,12 +3626,13 @@ const requestOrganizationReducer = (state, action) => {
3655
3626
  ...state,
3656
3627
  isInitialized: action.payload,
3657
3628
  };
3658
- case "SET_LOADING":
3629
+ case "SET_LOADING": {
3659
3630
  const loading = state.isLoading + (action.payload ? 1 : -1);
3660
3631
  return {
3661
3632
  ...state,
3662
3633
  isLoading: loading > 0 ? loading : 0,
3663
3634
  };
3635
+ }
3664
3636
  default:
3665
3637
  return state;
3666
3638
  }
@@ -4362,6 +4334,7 @@ const isValidMilitaryStatus = (value) => {
4362
4334
  "RESERVIST",
4363
4335
  "MILITARY_RETIREE",
4364
4336
  "MILITARY_FAMILY",
4337
+ "GOLD_STAR_FAMILY",
4365
4338
  ];
4366
4339
  if (validMilitaryStatuses.indexOf(value) >= 0) {
4367
4340
  return true;
@@ -9689,33 +9662,6 @@ const RequestOrganizationSearch = ({ intl }) => {
9689
9662
  const updateRequestOrganizationLocale = (locale) => {
9690
9663
  dispatch({ type: "SET_LOCALE", payload: locale });
9691
9664
  };
9692
- React.useEffect(() => {
9693
- if (!viewModel.countryChoice) {
9694
- updateRequestOrganizationViewModel({ countryChoice: defaultCountryChoice });
9695
- }
9696
- }, []);
9697
- // country change handler
9698
- React.useEffect(() => {
9699
- if (!viewModel.countryChoice || viewModel.countryChoice.value === null) {
9700
- updateRequestOrganizationViewModel({
9701
- displayResults: false,
9702
- completeRequest: false,
9703
- firstNameError: null,
9704
- lastNameError: null,
9705
- emailError: null,
9706
- eligibleOrgs: [],
9707
- ineligibleOrgs: [],
9708
- });
9709
- }
9710
- else if (viewModel.searchByOrgName) {
9711
- if (viewModel.orgName) {
9712
- searchByOrgName();
9713
- }
9714
- }
9715
- else if (viewModel.orgDomain) {
9716
- searchByOrgDomain();
9717
- }
9718
- }, [viewModel.countryChoice]);
9719
9665
  const searchOrganizations = async (dynamicParamsUrl, fixedParamsUrl) => {
9720
9666
  const eligibleOrgs = [];
9721
9667
  const ineligibleOrgs = [];
@@ -9785,13 +9731,11 @@ const RequestOrganizationSearch = ({ intl }) => {
9785
9731
  const domainHasError = () => {
9786
9732
  const invalidUrlErrorId = "invalidUrl";
9787
9733
  const requiredFieldErrorId = "requiredField";
9788
- // TODO fix next line, no nested ternary
9789
- // eslint-disable-next-line
9790
- return viewModel.orgDomain
9791
- ? requestOrganizationConstants.URL_REGEX.test(viewModel.orgDomain)
9792
- ? null
9793
- : invalidUrlErrorId
9794
- : requiredFieldErrorId;
9734
+ if (!viewModel.orgDomain)
9735
+ return requiredFieldErrorId;
9736
+ if (!requestOrganizationConstants.URL_REGEX.test(viewModel.orgDomain))
9737
+ return invalidUrlErrorId;
9738
+ return null;
9795
9739
  };
9796
9740
  const orgNameHasError = () => (viewModel.orgName ? null : "requiredField");
9797
9741
  const countryHasError = () => viewModel.countryChoice && viewModel.countryChoice.value ? null : "requiredField";
@@ -9832,6 +9776,33 @@ const RequestOrganizationSearch = ({ intl }) => {
9832
9776
  const displayOrgNameSearch = () => !viewModel.searchByOrgName && viewModel.displayResults;
9833
9777
  const displayCompleteRequest = () => viewModel.searchByOrgName && viewModel.displayResults && searchResultSmallEnough();
9834
9778
  const logoUrl = programTheme ? getLogoUrl(programTheme) : null;
9779
+ React.useEffect(() => {
9780
+ if (!viewModel.countryChoice) {
9781
+ updateRequestOrganizationViewModel({ countryChoice: defaultCountryChoice });
9782
+ }
9783
+ }, []);
9784
+ // country change handler
9785
+ React.useEffect(() => {
9786
+ if (!viewModel.countryChoice || viewModel.countryChoice.value === null) {
9787
+ updateRequestOrganizationViewModel({
9788
+ displayResults: false,
9789
+ completeRequest: false,
9790
+ firstNameError: null,
9791
+ lastNameError: null,
9792
+ emailError: null,
9793
+ eligibleOrgs: [],
9794
+ ineligibleOrgs: [],
9795
+ });
9796
+ }
9797
+ else if (viewModel.searchByOrgName) {
9798
+ if (viewModel.orgName) {
9799
+ searchByOrgName();
9800
+ }
9801
+ }
9802
+ else if (viewModel.orgDomain) {
9803
+ searchByOrgDomain();
9804
+ }
9805
+ }, [viewModel.countryChoice]);
9835
9806
  return (React.createElement("div", { className: "sid-l-container--extra-wide sid-l-space-btm-lg sid-l-container" },
9836
9807
  React.createElement("div", { className: "sid-logo sid-l-horz-center sid-l-space-top-lg" },
9837
9808
  React.createElement("img", { className: "sid-logo__img", alt: "Logo", src: logoUrl || requestOrganizationConstants.SHEERID_LOGO_URL })),
@@ -9845,7 +9816,7 @@ const RequestOrganizationSearch = ({ intl }) => {
9845
9816
  React.createElement(FormattedHTMLMessage, { id: "title", defaultMessage: "Request to Add School" })),
9846
9817
  React.createElement("div", { className: "sid-soft-font-color" },
9847
9818
  React.createElement(FormattedHTMLMessage, { id: "description", defaultMessage: "Please fill out the form below. Schools submitted are not guaranteed to be added, but all requests are researched and considered by SheerID." })),
9848
- React.createElement(CountryComponent, { value: viewModel.countryChoice || {}, isErrored: !!viewModel.orgCountryError, onChange: (countryChoice) => {
9819
+ React.createElement(CountryComponent, { value: viewModel.countryChoice, isErrored: !!viewModel.orgCountryError, onChange: (countryChoice) => {
9849
9820
  updateRequestOrganizationViewModel({ countryChoice, orgCountryError: null });
9850
9821
  }, options: countryChoices, placeholder: intl.formatHTMLMessage({
9851
9822
  id: "fields.countryPlaceholder",
@@ -10659,13 +10630,13 @@ const mockSMSLoopResponse = {
10659
10630
  };
10660
10631
  const mockEmailLoopResponse = {
10661
10632
  verificationId: "5e2f0bd2d7121162bb849f17",
10662
- submissionUrl: "",
10633
+ submissionUrl: "https://foo.bar",
10663
10634
  currentStep: "emailLoop",
10664
10635
  segment: "student",
10665
10636
  subSegment: null,
10666
10637
  locale: "en-US",
10667
- canResendEmailLoop: false,
10668
- cancelUrl: "",
10638
+ canResendEmailLoop: true,
10639
+ cancelUrl: "https://foo.bar",
10669
10640
  };
10670
10641
  const mockCancelEmailLoopResponse = {
10671
10642
  verificationId: "5e2f0bd2d7121162bb849f17",
@@ -10705,7 +10676,7 @@ const allMockedResponses = {
10705
10676
  cancelSocialSecurityNumber: {},
10706
10677
  };
10707
10678
 
10708
- // To load a specific step directly, visit e.g. localhost:1234/?step=success
10679
+ // To load a specific step directly, visit e.g. localhost:1234/?mockStep=success
10709
10680
  const getRouteOverride = (response = undefined) => {
10710
10681
  try {
10711
10682
  const parsed = new URLSearchParams(window.location.search);
@@ -10798,6 +10769,58 @@ const isMockingLoading = () => {
10798
10769
  return false;
10799
10770
  }
10800
10771
  };
10772
+ // When loading the success step, specify a reward code
10773
+ const getRewardCodeOverride = () => {
10774
+ try {
10775
+ const parsed = new URLSearchParams(window.location.search);
10776
+ if (parsed.get(QUERY_STRING_REWARD_CODE_OVERRIDE)) {
10777
+ return parsed.get(QUERY_STRING_REWARD_CODE_OVERRIDE);
10778
+ }
10779
+ if (getOptions().mockRewardCode) {
10780
+ return getOptions().mockRewardCode;
10781
+ }
10782
+ }
10783
+ catch (e) {
10784
+ logger.error(e, "getRewardCodeOverride");
10785
+ }
10786
+ return undefined;
10787
+ };
10788
+ // When loading the success step, specify a redirect URL
10789
+ const getRedirectUrlOverride = () => {
10790
+ try {
10791
+ const parsed = new URLSearchParams(window.location.search);
10792
+ if (parsed.get(QUERY_STRING_REDIRECT_URL_OVERRIDE)) {
10793
+ return parsed.get(QUERY_STRING_REDIRECT_URL_OVERRIDE);
10794
+ }
10795
+ if (getOptions().mockRedirectUrl) {
10796
+ return getOptions().mockRedirectUrl;
10797
+ }
10798
+ }
10799
+ catch (e) {
10800
+ logger.error(e, "getRedirectUrlOverride");
10801
+ }
10802
+ return undefined;
10803
+ };
10804
+ const getErrorStepMockResponseOverrides = (mockResponse) => {
10805
+ const mockResponseClone = deepClone(mockResponse);
10806
+ const errorMock = getErrorIdOverride();
10807
+ if (errorMock) {
10808
+ mockResponseClone.errorIds = [errorMock];
10809
+ }
10810
+ return mockResponseClone;
10811
+ };
10812
+ const getSuccessStepMockResponseOverrides = (mockResponse) => {
10813
+ const mockResponseClone = deepClone(mockResponse);
10814
+ const rewardCodeMock = getRewardCodeOverride();
10815
+ const redirectUrlMock = getRedirectUrlOverride();
10816
+ if (rewardCodeMock) {
10817
+ mockResponseClone.rewardCode = rewardCodeMock;
10818
+ }
10819
+ if (redirectUrlMock) {
10820
+ mockResponseClone.redirectUrl = redirectUrlMock;
10821
+ }
10822
+ return mockResponseClone;
10823
+ };
10801
10824
  /**
10802
10825
  * Based on page request query params, return a fake response to allow direct access to any step.
10803
10826
  *
@@ -10807,10 +10830,14 @@ const isMockingLoading = () => {
10807
10830
  const getOverriddenMock = async (overriddenStep, serverResponse) => {
10808
10831
  let mockResponse = getOptions().mockResponse || allMockedResponses[overriddenStep];
10809
10832
  if (overriddenStep && mockResponse) {
10810
- const errorMock = getErrorIdOverride();
10811
10833
  logger.info(`getOverriddenMock: mocking ${overriddenStep} response`);
10812
- if (overriddenStep === VerificationStepsEnum.error && errorMock) {
10813
- mockResponse.errorIds = [errorMock];
10834
+ switch (overriddenStep) {
10835
+ case VerificationStepsEnum.error:
10836
+ mockResponse = getErrorStepMockResponseOverrides(mockResponse);
10837
+ break;
10838
+ case VerificationStepsEnum.success:
10839
+ mockResponse = getSuccessStepMockResponseOverrides(mockResponse);
10840
+ break;
10814
10841
  }
10815
10842
  }
10816
10843
  else {
@@ -11604,13 +11631,13 @@ const NewRequestOrganizationFormComponent = ({ programId, viewModel, }) => {
11604
11631
  const { messages } = requestOrganizationService;
11605
11632
  React.useEffect(() => {
11606
11633
  if (!requestOrganizationService.locale) {
11607
- const locale = getRequestOrganizationLocale();
11608
- dispatch({ type: "SET_LOCALE", payload: locale });
11634
+ const reqOrgLocale = getRequestOrganizationLocale();
11635
+ dispatch({ type: "SET_LOCALE", payload: reqOrgLocale });
11609
11636
  dispatch({
11610
11637
  type: "UPDATE_VIEW_MODEL",
11611
11638
  payload: {
11612
11639
  localeChoice: {
11613
- value: locale,
11640
+ value: reqOrgLocale,
11614
11641
  label: "",
11615
11642
  },
11616
11643
  },
@@ -11632,15 +11659,15 @@ const NewRequestOrganizationFormComponent = ({ programId, viewModel, }) => {
11632
11659
  React.useEffect(() => {
11633
11660
  const fetchMessages = async () => {
11634
11661
  dispatch({ type: "SET_LOADING", payload: true });
11635
- const messages = await getRequestOrgMessages(requestOrganizationService.locale);
11636
- const messagesAction = { payload: messages, type: "SET_MESSAGES" };
11662
+ const reqOrgMessages = await getRequestOrgMessages(requestOrganizationService.locale, getSafe(() => requestOrganizationService.programTheme.intl.messages));
11663
+ const messagesAction = { payload: reqOrgMessages, type: "SET_MESSAGES" };
11637
11664
  dispatch(messagesAction);
11638
11665
  dispatch({ type: "SET_LOADING", payload: false });
11639
11666
  };
11640
- if (requestOrganizationService.locale) {
11667
+ if (requestOrganizationService.locale && requestOrganizationService.programTheme) {
11641
11668
  fetchMessages();
11642
11669
  }
11643
- }, [requestOrganizationService.locale]);
11670
+ }, [requestOrganizationService.locale, requestOrganizationService.programTheme]);
11644
11671
  React.useEffect(() => {
11645
11672
  if (requestOrganizationService.locale &&
11646
11673
  requestOrganizationService.programTheme &&
@@ -16585,16 +16612,6 @@ function howDoesVerifyingWorkMessages() {
16585
16612
  };
16586
16613
  }
16587
16614
 
16588
- const PrivacyPolicyLink = ({ verificationService, includeCompanyName, intl, }) => {
16589
- const { programTheme } = verificationService;
16590
- const privacyPolicyHref = getPrivacyPolicyUrl(programTheme);
16591
- const companyName = `${getPrivacyPolicyCompanyName(programTheme, intl)} `;
16592
- return (React.createElement(LinkExternal, { className: "sid-privacy-policy sid-link", href: privacyPolicyHref },
16593
- includeCompanyName ? React.createElement("span", null, companyName) : null,
16594
- React.createElement(FormattedHTMLMessage, { id: "privacyPolicy", defaultMessage: "Privacy Policy" })));
16595
- };
16596
- const PrivacyPolicyLinkComponent = injectIntl(PrivacyPolicyLink);
16597
-
16598
16615
  const getDefaultDetailsMessage = (step, segment) => {
16599
16616
  const messageType = step === VerificationStepsEnum.docUpload ? "docUpload" : "default";
16600
16617
  const defaultMessages = howDoesVerifyingWorkMessages();
@@ -16624,11 +16641,7 @@ const HowDoesVerifyingWorkComponent = ({ verificationService, initialVisibility
16624
16641
  React.createElement("div", { className: "sid-how-verify-works__tooltip", "aria-live": "polite", role: "tooltip", id: "how-does-verifying-work" },
16625
16642
  React.createElement(FormattedMessage, { id: "companyName", defaultMessage: "{Company}" }, (companyName) => (React.createElement(FormattedHTMLMessage, { id: `step.${step === VerificationStepsEnum.docUpload ? "docUpload" : "personalInfo"}.howDoesVerifyingWorkDetails`, defaultMessage: defaultMessage, values: { companyName } }))),
16626
16643
  "\u00A0",
16627
- React.createElement(FaqLinkComponent, { verificationService: verificationService }),
16628
- "\u00A0",
16629
- React.createElement("span", null, "+"),
16630
- "\u00A0",
16631
- React.createElement(PrivacyPolicyLinkComponent, { verificationService: verificationService, includeCompanyName: false })))) : null));
16644
+ React.createElement(FaqLinkComponent, { verificationService: verificationService })))) : null));
16632
16645
  };
16633
16646
 
16634
16647
  const BaseCountryComponentWrapper = ({ verificationService, viewModel, intl, viewModelDraftDecorator, }) => {
@@ -18821,7 +18834,7 @@ const StepSuccess = ({ verificationService }) => {
18821
18834
  const noCodeType = verificationService.programTheme.config.offerType === "noCode";
18822
18835
  return (React.createElement("div", { id: "sid-step-success", className: "sid-l-container" },
18823
18836
  React.createElement("div", { className: "sid-header sid-l-horz-center sid-l-space-top-md" },
18824
- React.createElement("div", { className: "sid-l-horz-center" }, hasLogo ? (React.createElement(LogoComponent, { verificationService: verificationService })) : (React.createElement("img", { className: "sid-l-lead-image", alt: "design element", src: "https://s3.amazonaws.com/com.sheerid.resources/common/images/2018/icons/circle-check.svg" }))),
18837
+ React.createElement("div", { className: "sid-l-horz-center" }, hasLogo ? (React.createElement(LogoComponent, { verificationService: verificationService })) : (React.createElement("img", { className: "sid-l-lead-image", alt: "", src: "https://s3.amazonaws.com/com.sheerid.resources/common/images/2018/icons/circle-check.svg" }))),
18825
18838
  React.createElement("div", { className: "sid-header__title sid-l-horz-center sid-l-space-top-md", role: "alert", "aria-live": "polite" },
18826
18839
  React.createElement(FormattedHTMLMessage, { id: "step.success.title", defaultMessage: "Success! You've been verified." })),
18827
18840
  React.createElement("div", { className: "sid-header__subtitle sid-l-horz-center sid-l-two-thirds-width" },
@@ -18949,6 +18962,7 @@ const usePollingInterval = (callback, pollTime) => {
18949
18962
  const DOC_UPLOAD_POLL_DURATION_DURING_COUNTDOWN = 5000;
18950
18963
  const DOC_UPLOAD_POLL_DURATION = 20000;
18951
18964
  const SSO_POLL_DURATION = 5000;
18965
+ const calculateShowCountdown = (isPreviousStepSSO, isMockingSSO, isMockingDocUpload) => !isPreviousStepSSO && !isMockingSSO && !isMockingDocUpload;
18952
18966
  const StepPending = ({ verificationService, intl }) => {
18953
18967
  const { programId } = verificationService;
18954
18968
  const { viewModel } = verificationService;
@@ -18959,6 +18973,8 @@ const StepPending = ({ verificationService, intl }) => {
18959
18973
  const { verificationId } = verificationService.verificationResponse;
18960
18974
  const hasLogo = !!getLogoUrl(verificationService.programTheme);
18961
18975
  const countdownSeconds = 20;
18976
+ const isMockingPreviousStepSSO = getPreviousStepOverride() && getPreviousStepOverride() === VerificationStepsEnum.sso;
18977
+ const isMockingPreviousStepDocUpload = getPreviousStepOverride() && getPreviousStepOverride() === VerificationStepsEnum.docUpload;
18962
18978
  const isPreviousStepSSO = () => {
18963
18979
  if (verificationLastResponse &&
18964
18980
  verificationLastResponse.currentStep === VerificationStepsEnum.sso) {
@@ -18966,7 +18982,7 @@ const StepPending = ({ verificationService, intl }) => {
18966
18982
  }
18967
18983
  return false;
18968
18984
  };
18969
- const [showCountDown, setShowCountDown] = React.useState(!isPreviousStepSSO());
18985
+ const [showCountDown, setShowCountDown] = React.useState(calculateShowCountdown(isPreviousStepSSO(), isMockingPreviousStepSSO, isMockingPreviousStepDocUpload));
18970
18986
  const getLogo = () => hasLogo ? (React.createElement(LogoComponent, { verificationService: verificationService })) : (React.createElement("img", { className: "sid-l-lead-image", alt: "design element", src: "https://s3.amazonaws.com/com.sheerid.resources/common/images/2018/icons/doc-pending.svg" }));
18971
18987
  const pollTime = isPreviousStepSSO()
18972
18988
  ? SSO_POLL_DURATION
@@ -18986,9 +19002,18 @@ const StepPending = ({ verificationService, intl }) => {
18986
19002
  setShowCountDown(false);
18987
19003
  };
18988
19004
  const logo = getLogo();
18989
- const isMockingPreviousStepSSO = getPreviousStepOverride() && getPreviousStepOverride() === VerificationStepsEnum.sso;
19005
+ const getPendingContent = () => {
19006
+ const showSSO = isPreviousStepSSO() || isMockingPreviousStepSSO;
19007
+ if (showCountDown) {
19008
+ return (React.createElement(CountDownComponent, { logo: logo, onCountdownFinish: onCountdownFinish, countdownSeconds: countdownSeconds }));
19009
+ }
19010
+ if (showSSO) {
19011
+ return React.createElement(SSOPendingComponent, { logo: logo, cancelSSO: cancelSSOStep });
19012
+ }
19013
+ return (React.createElement(ReviewPendingComponent, { verificationService: verificationService, logo: logo, intl: intl, maxReviewTime: getMaxReviewTime(verificationService.programTheme) }));
19014
+ };
18990
19015
  return (React.createElement("div", { id: "sid-step-pending", className: "sid-l-container" },
18991
- isPreviousStepSSO() || isMockingPreviousStepSSO ? (React.createElement(SSOPendingComponent, { logo: logo, cancelSSO: cancelSSOStep })) : showCountDown ? (React.createElement(CountDownComponent, { logo: logo, onCountdownFinish: onCountdownFinish, countdownSeconds: countdownSeconds })) : (React.createElement(ReviewPendingComponent, { verificationService: verificationService, logo: logo, intl: intl, maxReviewTime: getMaxReviewTime(verificationService.programTheme) })),
19016
+ getPendingContent(),
18992
19017
  showCountDown ? (React.createElement(PoweredByComponent, { verificationService: verificationService, isCentered: true })) : (React.createElement(FormFooterComponent, { verificationService: verificationService },
18993
19018
  React.createElement("div", null),
18994
19019
  " "))));
@@ -21097,7 +21122,7 @@ CustomCssWrapperComponent.defaultProps = {
21097
21122
 
21098
21123
  const TestModeFlagComponent = ({ verificationService }) => verificationService.programTheme && verificationService.programTheme.isTestMode ? (React.createElement("div", { className: "sid-test-mode-flag sid-l-container sid-l-horz-center" },
21099
21124
  "Test Mode",
21100
- React.createElement(LinkExternal, { className: "sid-test-mode-flag__link sid-link", href: "http://developer.sheerid.com/getting-started#test-program" }, "(learn more)"))) : null;
21125
+ React.createElement(LinkExternal, { className: "sid-test-mode-flag__link", href: "http://developer.sheerid.com/getting-started#test-program", "aria-label": "learn more about a sheerid test mode program" }, "(learn more)"))) : null;
21101
21126
 
21102
21127
  const loadIPQSDeviceFingerprintScript = async () => {
21103
21128
  const existingScript = document.getElementById("ipqs");
@@ -21131,9 +21156,6 @@ const NewVerificationInnerComponent = ({ locale, messages, programTheme, verific
21131
21156
  React.useEffect(() => {
21132
21157
  includeIPQSDeviceFingerprintScript(programTheme, verificationService.verificationResponse.verificationId);
21133
21158
  }, [verificationService.verificationResponse.verificationId]);
21134
- React.useEffect(() => {
21135
- maintainFocusInLightbox();
21136
- }, []);
21137
21159
  const messagesWithOptions = { ...messages, ...flat(getOptionsMessages(locale)) };
21138
21160
  return (
21139
21161
  // Don't change locale, so we don't have to load pluralization data, which has complications. HD-560
@@ -21143,6 +21165,44 @@ const NewVerificationInnerComponent = ({ locale, messages, programTheme, verific
21143
21165
  React.createElement(LoadStepComponent, { stepToLoad: verificationService.verificationResponse.currentStep, verificationService: verificationService }))))));
21144
21166
  };
21145
21167
 
21168
+ /*
21169
+ Trap focus in the lightbox by sending and receiving postMessages, here and from the modal script, while tabbing through the program.
21170
+ */
21171
+ const trapFocus = () => {
21172
+ document.addEventListener("keydown", (e) => {
21173
+ const focusableElements = 'button, .sid-link, input, select, textarea, [tabindex]:not([tabindex="-1"]';
21174
+ const focusableContent = document.querySelectorAll(focusableElements);
21175
+ const lastFocusableElement = focusableContent[focusableContent.length - 1];
21176
+ const isTabPressed = e.key === "Tab";
21177
+ if (!isTabPressed) {
21178
+ return;
21179
+ }
21180
+ if (lastFocusableElement) {
21181
+ window.addEventListener("message", (event) => {
21182
+ const message = typeof event.data === "string" ? JSON.parse(event.data) : event.data;
21183
+ if (message.focusOn === "lastElement") {
21184
+ lastFocusableElement.focus();
21185
+ e.preventDefault();
21186
+ }
21187
+ });
21188
+ if (!e.shiftKey && document.activeElement === lastFocusableElement) {
21189
+ window.parent.postMessage({ focusOn: "firstElement" }, "*");
21190
+ e.preventDefault();
21191
+ }
21192
+ }
21193
+ });
21194
+ // set inital focus to lightbox close button
21195
+ window.parent.postMessage({ focusOn: "firstElement" }, "*");
21196
+ };
21197
+ const maintainFocusInLightbox = () => {
21198
+ window.addEventListener("message", (event) => {
21199
+ const message = typeof event.data === "string" ? JSON.parse(event.data) : event.data;
21200
+ if (message.isInLightBox === "true") {
21201
+ trapFocus();
21202
+ }
21203
+ });
21204
+ };
21205
+
21146
21206
  /* eslint-disable */
21147
21207
  class NewVerification extends React.Component {
21148
21208
  constructor(props) {
@@ -21157,6 +21217,7 @@ class NewVerification extends React.Component {
21157
21217
  }
21158
21218
  componentDidMount() {
21159
21219
  N(); // https://sheerid.atlassian.net/browse/UX-362
21220
+ maintainFocusInLightbox();
21160
21221
  // Special-case, mocking the loading psuedo-step
21161
21222
  if (isMockingLoading()) {
21162
21223
  logger.info("Mocking loading screen. Not fetching new verification request.");
@@ -21230,6 +21291,16 @@ const VerificationForm = React.forwardRef(({ programId, trackingId = undefined }
21230
21291
  React.createElement(NewVerificationComponent, { programId: programId, trackingId: trackingId }))));
21231
21292
  });
21232
21293
 
21294
+ const PrivacyPolicyLink = ({ verificationService, includeCompanyName, intl, }) => {
21295
+ const { programTheme } = verificationService;
21296
+ const privacyPolicyHref = getPrivacyPolicyUrl(programTheme);
21297
+ const companyName = `${getPrivacyPolicyCompanyName(programTheme, intl)} `;
21298
+ return (React.createElement(LinkExternal, { className: "sid-privacy-policy sid-link", href: privacyPolicyHref },
21299
+ includeCompanyName ? React.createElement("span", null, companyName) : null,
21300
+ React.createElement(FormattedHTMLMessage, { id: "privacyPolicy", defaultMessage: "Privacy Policy" })));
21301
+ };
21302
+ const PrivacyPolicyLinkComponent = injectIntl(PrivacyPolicyLink);
21303
+
21233
21304
  const postalCodeMatchers = {
21234
21305
  US: "(^\\d{5}-?$)|(^\\d{5}-\\d{4}$)",
21235
21306
  AU: "^\\d{4}$",
@@ -21340,31 +21411,33 @@ class Modal {
21340
21411
  this.redirectOnMobile = userConfig.mobileRedirect || false;
21341
21412
  this.isMobileDevice = window.innerWidth <= thresholdConfig;
21342
21413
  this.closeButtonText = userConfig.closeButtonText ? userConfig.closeButtonText : "";
21414
+ this.closeButton = null;
21343
21415
  this.stopPropagation = userConfig.stopPropagation || false;
21344
21416
  this.overlay = Modal.createOverlay();
21345
21417
  this.wrapper = this.createWrapper();
21418
+ this.addFocusListener();
21346
21419
  }
21347
21420
  createCloseBtn() {
21348
- const closeButton = document.createElement("button");
21349
- closeButton.classList.add(iframeConstants.CLASS_NAMES.CLOSE_BUTTON);
21421
+ this.closeButton = document.createElement("button");
21422
+ this.closeButton.classList.add(iframeConstants.CLASS_NAMES.CLOSE_BUTTON);
21350
21423
  if (this.closeButtonText) {
21351
21424
  const closeTxt = document.createElement("div");
21352
21425
  closeTxt.classList.add(iframeConstants.CLASS_NAMES.CLOSE_TEXT);
21353
21426
  closeTxt.innerHTML = this.closeButtonText;
21354
- closeButton.appendChild(closeTxt);
21427
+ this.closeButton.appendChild(closeTxt);
21355
21428
  }
21356
21429
  const closeIcon = document.createElement("span");
21357
21430
  closeIcon.classList.add(iframeConstants.CLASS_NAMES.CLOSE_ICON);
21358
21431
  closeIcon.setAttribute("role", "img");
21359
- closeButton.appendChild(closeIcon);
21360
- closeButton.addEventListener("click", (e) => {
21432
+ this.closeButton.appendChild(closeIcon);
21433
+ this.closeButton.addEventListener("click", (e) => {
21361
21434
  e.preventDefault();
21362
21435
  if (this.stopPropagation) {
21363
21436
  e.stopPropagation();
21364
21437
  }
21365
21438
  this.closeModal();
21366
21439
  });
21367
- return closeButton;
21440
+ return this.closeButton;
21368
21441
  }
21369
21442
  closeModal(historyEventTrigger = false) {
21370
21443
  window.removeEventListener("popstate", this.popStateEventHandler);
@@ -21397,10 +21470,32 @@ class Modal {
21397
21470
  addPopStateListener() {
21398
21471
  window.addEventListener("popstate", this.popStateEventHandler);
21399
21472
  }
21473
+ addFocusListener() {
21474
+ window.addEventListener("message", (event) => {
21475
+ const message = typeof event.data === "string" ? JSON.parse(event.data) : event.data;
21476
+ if (message.focusOn === "firstElement") {
21477
+ this.closeButton.focus();
21478
+ }
21479
+ });
21480
+ document.addEventListener("keydown", (e) => {
21481
+ const isTabPressed = e.key === "Tab";
21482
+ if (!isTabPressed) {
21483
+ return;
21484
+ }
21485
+ if (e.shiftKey && document.activeElement === this.closeButton) {
21486
+ this.iframe.contentWindow.postMessage({ focusOn: "lastElement" }, "*");
21487
+ e.preventDefault();
21488
+ }
21489
+ });
21490
+ }
21491
+ isInLightboxPostMessage(inLightbox) {
21492
+ this.iframe.contentWindow.postMessage({ isInLightBox: inLightbox }, "*");
21493
+ }
21400
21494
  displayModal() {
21401
21495
  this.iframe.addEventListener("load", () => {
21402
21496
  fadeInElements([this.overlay, this.wrapper]);
21403
21497
  document.body.style.overflow = "hidden";
21498
+ this.isInLightboxPostMessage("true");
21404
21499
  });
21405
21500
  document.body.appendChild(this.overlay);
21406
21501
  document.body.appendChild(this.wrapper);
@@ -21455,5 +21550,5 @@ const collectDeviceProfile = async (verificationId, programId) => {
21455
21550
  includeIPQSDeviceFingerprintScript(programTheme, verificationId);
21456
21551
  };
21457
21552
 
21458
- export { ACCEPTED_DOC_MIME_TYPES, AcceptableUploadsComponent, AddressComponent, BirthDateComponent, BranchOfServiceComponent, ChangeLocaleComponent, CityComponent, CollegeNameComponent, CompanyComponent, CopyToClipboard, CountDownComponent, CountryComponent, CountryComponentWrapper, DEFAULT_LOCALE, DEFAULT_MINIMUM_ORG_SEARCH_VALUE_LENGTH, DEFAULT_PRIVACY_POLICY_URL, DeleteJson, DischargeDateComponent, DriverLicenseNumberComponent, EmailComponent, FaqLinkComponent, FetchOrganizationsComponent, FieldIdEnum, FieldIds, FirstNameComponent, FirstResponderOrganizationComponent, FirstResponderStatusComponent, FirstResponderStatusDefaultMessagesEnum, FormFooterComponent, GetEmptyTheme, GetJson, GetResponse, HTTP_REQUEST_TIMEOUT, HookNameEnum, HookNames, HowDoesVerifyingWorkComponent, InputSelectButtonComponent, InputSelectComponent, InputSelectListComponent, InputTextComponent, LastNameComponent, LicensedProfessionalOrganizationComponent, LinkExternal, LoadingSpinnerComponent, Locales, LogoComponent, MAX_DOC_UPLOAD_DOCS_ALLOWED, MarketConsentWrapperComponent as MarketConsentWrapper, MedicalProfessionalOrganizationComponent, MedicalProfessionalStatusDefaultMessagesEnum, MedicalStatusComponent, MemberIdComponent, MembershipOrganizationComponent, MilitaryStatusComponent, MilitaryStatusDefaultMessagesEnum, MockSteps, MockStepsEnum, OptInComponent, OptInInputComponent, OrganizationListComponent, OrganizationResultComponent, PhoneNumberComponent, PostFiles, PostJson, PostalCodeComponent, PostalCodeInputComponent, PoweredByComponent, PrivacyPolicyLinkComponent, QUERY_STRING_ERRORID_OVERRIDE, QUERY_STRING_INSTALL_PAGE_URL, QUERY_STRING_SEGMENT_OVERRIDE, QUERY_STRING_STEP_OVERRIDE, QUERY_STRING_SUBSEGMENT_OVERRIDE, RequestOrganizationContext, RequestOrganizationErrorComponent, RequestOrganizationForm, RequestOrganizationFormFooterComponent, RequestOrganizationSearchComponent, RequestOrganizationSearchResultComponent, RequestOrganizationSuccessComponent, ReviewPendingComponent, RewardsRemainingComponent, SHEERID, SMSCodeComponent, SSN_STRING_LENGTH, SSOPendingComponent, SearchFieldComponent, SegmentEnum, Segments, SelectButtonComponent, SelectComponent, SelectListComponent, SocialSecurityNumber, SortByLabel, SsnChoice, StateComponent, StateEnum, StateSelectComponent, StatusComponent, StepActiveMilitaryPersonalInfoComponent, StepDriverLicensePersonalInfoComponent, StepGeneralIdentityPersonalInfoComponent, StepHybridIdentityPersonalInfoComponent, SubSegmentEnum, TeacherSchoolComponent, TryAgainButtonComponent, TryAgainSteps, TypeaheadComponent, UPLOAD_FILE_PREFIX, UploadInfoComponent, VerificationApiClient, VerificationForm, VerificationSteps, VerificationStepsEnum, addFiles, addHook, allMockedResponses, arrayUnique, assertValidConversionRequest, assertValidDatabaseId, assertValidFieldId, assertValidFunction, assertValidHook, assertValidHookName, assertValidHtmlElement, assertValidLocale, assertValidMockStepName, assertValidProgramId, assertValidSegmentName, assertValidTrackingId, assertValidTryAgainStep, assertValidVerificationStepName, carrierConsentValueValidator, closeTabRef, collectDeviceProfile, conversion, convertByTrackingId, convertByVerificationId, customValidatorExists$1 as customValidatorExists, deepClone, deepMerge, displaySSN, employmentPInfoReqEmpty, ensureMaxMetadataKeyValueLengths, ensureTrailingSlash, fetchExistingVerificationRequest, fetchProgramOrganizations, fetchRequestOrganizations, formatTwoDigitValues, getAddSchoolRequestUrl, getAllEmptyViewModels, getAvailableCountryChoices, getAvailableLocaleChoices, getAvailableLocales, getAvailableMilitaryStatuses, getAvailableStateChoices, getCompanyName, getConfiguredCountries, getConfiguredStates, getCustomValidator, getCustomValidatorFields, getDefaultCountryChoice, getDomainFromUrl, getEmptyViewModel, getEstAndMaxReviewTimes, getEstimatedReviewTime, getExtendedFieldValidationErrorsEmpty, getFaqLink, getFieldDisplayOrderFromRefs, getFieldValidationErrors, getFieldValidationErrorsEmpty, getFingerprint, getFirstErroredFieldId, getHook, getLocaleSafely, getLogoUrl, getMarketConsent, getMaxReviewTime, getMessages, getMetadata, getNewEmailCodeResendUrl, getNewSmsCodeResendUrl, getNewVerificationRequestUrl, getOptions, getOrgSearchCountryTags, getOverriddenMock, getOverridenValidator, getPhoneNumberValidationError, getPrivacyPolicyCompanyName, getPrivacyPolicyUrl, getProgramThemeUrl, getQueryParamsFromUrl, getRefByFieldId, getRefs, getRouteOverride, getSafe, getSheerIdScriptBasePath, getStatusLabel, getTabRef, getTrackingIdFromQueryString, getVerificationIdFromQueryString, getVerificationStatusUrl, handleCountryOnKeyDown, handleEmailOnKeyDown, handleStateChange, hasFailedInstantMatch, howDoesVerifyingWorkMessages, isFormErrored, isFormFilled, isInLightbox, isTestEmailDomains, isValidLocale, isValidUsPostalCode, listenToSheerIdFrame, loadInModal, loadInlineIframe, logger, orgToOption, orgsInStatus, overrideComponent, overrideValidator, phoneNumberValidator, populateViewModelFromQueryParams, postVerificationSizeUpdates, postalCodeMatchers, postalCodeValidator, produceDraftViewModel, produceDraftViewModelWithRequiredFields, recordEvent, recordVerificationResponse, recordViewModelChange, refreshStore, registerAdditionalLocales, removeAllFiles, removeCustomValidator, removeFile, requestOrganizationConstants, resetCustomValidators, resetHooks, resetMetadata, resetOptions, resetOverriddenComponents, resetOverriddenValidators, resetRefs, resetStore, resetTabRef, resetViewModel, resolveTrackingId, setCustomValidator, setDimension, setFocus, setGaDimensionIsTest, setMetadata, setOptions, setRef, setTabRef, setViewModel, shouldCollectAddressFields, shouldCollectPostalCode, socialSecurityEmpty, speakToOuterFrame, submitAddSchoolRequest, submitForm, unDisplaySSN, updateFieldValidationErrors, updateFieldValidationErrorsByFieldId, updateMilitaryViewModel, updateViewModelOrganization, usePollingInterval, validateFieldById, validateMetadata };
21553
+ export { ACCEPTED_DOC_MIME_TYPES, AcceptableUploadsComponent, AddressComponent, BirthDateComponent, BranchOfServiceComponent, ChangeLocaleComponent, CityComponent, CollegeNameComponent, CompanyComponent, CopyToClipboard, CountDownComponent, CountryComponent, CountryComponentWrapper, DEFAULT_LOCALE, DEFAULT_MINIMUM_ORG_SEARCH_VALUE_LENGTH, DEFAULT_PRIVACY_POLICY_URL, DeleteJson, DischargeDateComponent, DriverLicenseNumberComponent, EmailComponent, FaqLinkComponent, FetchOrganizationsComponent, FieldIdEnum, FieldIds, FirstNameComponent, FirstResponderOrganizationComponent, FirstResponderStatusComponent, FirstResponderStatusDefaultMessagesEnum, FormFooterComponent, GetEmptyTheme, GetJson, GetResponse, HTTP_REQUEST_TIMEOUT, HookNameEnum, HookNames, HowDoesVerifyingWorkComponent, InputSelectButtonComponent, InputSelectComponent, InputSelectListComponent, InputTextComponent, LastNameComponent, LicensedProfessionalOrganizationComponent, LinkExternal, LoadingSpinnerComponent, Locales, LogoComponent, MAX_DOC_UPLOAD_DOCS_ALLOWED, MarketConsentWrapperComponent as MarketConsentWrapper, MedicalProfessionalOrganizationComponent, MedicalProfessionalStatusDefaultMessagesEnum, MedicalStatusComponent, MemberIdComponent, MembershipOrganizationComponent, MilitaryStatusComponent, MilitaryStatusDefaultMessagesEnum, MockSteps, MockStepsEnum, OptInComponent, OptInInputComponent, OrganizationListComponent, OrganizationResultComponent, PhoneNumberComponent, PostFiles, PostJson, PostalCodeComponent, PostalCodeInputComponent, PoweredByComponent, PrivacyPolicyLinkComponent, QUERY_STRING_ERRORID_OVERRIDE, QUERY_STRING_INSTALL_PAGE_URL, QUERY_STRING_REDIRECT_URL_OVERRIDE, QUERY_STRING_REWARD_CODE_OVERRIDE, QUERY_STRING_SEGMENT_OVERRIDE, QUERY_STRING_STEP_OVERRIDE, QUERY_STRING_SUBSEGMENT_OVERRIDE, RequestOrganizationContext, RequestOrganizationErrorComponent, RequestOrganizationForm, RequestOrganizationFormFooterComponent, RequestOrganizationSearchComponent, RequestOrganizationSearchResultComponent, RequestOrganizationSuccessComponent, ReviewPendingComponent, RewardsRemainingComponent, SHEERID, SMSCodeComponent, SSN_STRING_LENGTH, SSOPendingComponent, SearchFieldComponent, SegmentEnum, Segments, SelectButtonComponent, SelectComponent, SelectListComponent, SocialSecurityNumber, SortByLabel, SsnChoice, StateComponent, StateEnum, StateSelectComponent, StatusComponent, StepActiveMilitaryPersonalInfoComponent, StepDriverLicensePersonalInfoComponent, StepGeneralIdentityPersonalInfoComponent, StepHybridIdentityPersonalInfoComponent, SubSegmentEnum, TeacherSchoolComponent, TryAgainButtonComponent, TryAgainSteps, TypeaheadComponent, UPLOAD_FILE_PREFIX, UploadInfoComponent, VerificationApiClient, VerificationForm, VerificationSteps, VerificationStepsEnum, addFiles, addHook, allMockedResponses, arrayUnique, assertValidConversionRequest, assertValidDatabaseId, assertValidFieldId, assertValidFunction, assertValidHook, assertValidHookName, assertValidHtmlElement, assertValidLocale, assertValidMockStepName, assertValidProgramId, assertValidSegmentName, assertValidTrackingId, assertValidTryAgainStep, assertValidVerificationStepName, carrierConsentValueValidator, closeTabRef, collectDeviceProfile, conversion, convertByTrackingId, convertByVerificationId, customValidatorExists$1 as customValidatorExists, deepClone, deepMerge, displaySSN, employmentPInfoReqEmpty, ensureMaxMetadataKeyValueLengths, ensureTrailingSlash, fetchExistingVerificationRequest, fetchProgramOrganizations, fetchRequestOrganizations, formatTwoDigitValues, getAddSchoolRequestUrl, getAllEmptyViewModels, getAvailableCountryChoices, getAvailableLocaleChoices, getAvailableLocales, getAvailableMilitaryStatuses, getAvailableStateChoices, getCompanyName, getConfiguredCountries, getConfiguredStates, getCustomValidator, getCustomValidatorFields, getDefaultCountryChoice, getDomainFromUrl, getEmptyViewModel, getEstAndMaxReviewTimes, getEstimatedReviewTime, getExtendedFieldValidationErrorsEmpty, getFaqLink, getFieldDisplayOrderFromRefs, getFieldValidationErrors, getFieldValidationErrorsEmpty, getFingerprint, getFirstErroredFieldId, getHook, getLocaleSafely, getLogoUrl, getMarketConsent, getMaxReviewTime, getMessages, getMetadata, getNewEmailCodeResendUrl, getNewSmsCodeResendUrl, getNewVerificationRequestUrl, getOptions, getOrgSearchCountryTags, getOverriddenMock, getOverridenValidator, getPhoneNumberValidationError, getPrivacyPolicyCompanyName, getPrivacyPolicyUrl, getProgramThemeUrl, getQueryParamsFromUrl, getRefByFieldId, getRefs, getRouteOverride, getSafe, getSheerIdScriptBasePath, getStatusLabel, getTabRef, getTrackingIdFromQueryString, getVerificationIdFromQueryString, getVerificationStatusUrl, handleCountryOnKeyDown, handleEmailOnKeyDown, handleStateChange, hasFailedInstantMatch, howDoesVerifyingWorkMessages, isFormErrored, isFormFilled, isTestEmailDomains, isValidLocale, isValidUsPostalCode, listenToSheerIdFrame, loadInModal, loadInlineIframe, logger, orgToOption, orgsInStatus, overrideComponent, overrideValidator, phoneNumberValidator, populateViewModelFromQueryParams, postVerificationSizeUpdates, postalCodeMatchers, postalCodeValidator, produceDraftViewModel, produceDraftViewModelWithRequiredFields, recordEvent, recordVerificationResponse, recordViewModelChange, refreshStore, registerAdditionalLocales, removeAllFiles, removeCustomValidator, removeFile, requestOrganizationConstants, resetCustomValidators, resetHooks, resetMetadata, resetOptions, resetOverriddenComponents, resetOverriddenValidators, resetRefs, resetStore, resetTabRef, resetViewModel, resolveTrackingId, setCustomValidator, setDimension, setFocus, setGaDimensionIsTest, setMetadata, setOptions, setRef, setTabRef, setViewModel, shouldCollectAddressFields, shouldCollectPostalCode, socialSecurityEmpty, speakToOuterFrame, submitAddSchoolRequest, submitForm, unDisplaySSN, updateFieldValidationErrors, updateFieldValidationErrorsByFieldId, updateMilitaryViewModel, updateViewModelOrganization, usePollingInterval, validateFieldById, validateMetadata };
21459
21554
  //# sourceMappingURL=sheerides6.js.map