rebill-web-components-sdk 1.10.10-beta.1 → 1.10.10-beta.2

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 (170) hide show
  1. package/dist/cjs/card-fields-wrapper_11.cjs.entry.js +8 -8
  2. package/dist/cjs/index-C-VTnc0I.js.map +1 -1
  3. package/dist/cjs/input-otp.cjs.entry.js +2 -2
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/rebill-card.rebill-input-email.entry.cjs.js.map +1 -1
  6. package/dist/cjs/rebill-card_2.cjs.entry.js +77 -83
  7. package/dist/cjs/rebill-container_2.cjs.entry.js +1 -1
  8. package/dist/cjs/rebill-flex-container.cjs.entry.js +1 -1
  9. package/dist/cjs/rebill-grid-container.cjs.entry.js +1 -1
  10. package/dist/cjs/rebill-input-select.cjs.entry.js +2 -2
  11. package/dist/cjs/rebill-input-text.cjs.entry.js +2 -2
  12. package/dist/cjs/rebill-mode-sandbox_2.cjs.entry.js +1 -1
  13. package/dist/cjs/rebill-timeline-debit-day_2.cjs.entry.js +2 -2
  14. package/dist/cjs/rebill-web-components-sdk.cjs.js +1 -1
  15. package/dist/collection/components/shared/inputs/input-email/input-email.css +19 -8
  16. package/dist/collection/components/shared/inputs/input-email/input-email.js +84 -73
  17. package/dist/collection/components/shared/inputs/input-email/input-email.js.map +1 -1
  18. package/dist/collection/components/shared/inputs/input-otp/input-otp.js +2 -2
  19. package/dist/collection/components/shared/inputs/input-phone/input-phone.js +2 -2
  20. package/dist/collection/components/shared/inputs/input-select/input-select.js +2 -2
  21. package/dist/collection/components/shared/inputs/input-text/input-text.js +2 -2
  22. package/dist/collection/components/shared/layouts/generics/container.js +1 -1
  23. package/dist/collection/components/shared/layouts/generics/flex.js +1 -1
  24. package/dist/collection/components/shared/layouts/generics/grid.js +1 -1
  25. package/dist/collection/components/shared/mode-sandbox/mode-sandbox-mobile.js +1 -1
  26. package/dist/collection/components/shared/selectable-card/selectable-card.js +2 -2
  27. package/dist/collection/components/shared/singlePaymentMethod/singlePaymentMethod.js +4 -4
  28. package/dist/collection/components/shared/timeline/timeline-debit-day.js +1 -1
  29. package/dist/collection/components/shared/timeline/timeline-free-trial.js +1 -1
  30. package/dist/collection/utils/email-validation.js +11 -1
  31. package/dist/collection/utils/email-validation.js.map +1 -1
  32. package/dist/components/card-fields-wrapper.js +1 -1
  33. package/dist/components/change-card-success.js +1 -1
  34. package/dist/components/discount-coupon.js +1 -1
  35. package/dist/components/input-otp.js +1 -1
  36. package/dist/components/otp-component.js +1 -1
  37. package/dist/components/{p-xKyxKtdF.js → p-30DP4s-1.js} +4 -4
  38. package/dist/components/{p-xKyxKtdF.js.map → p-30DP4s-1.js.map} +1 -1
  39. package/dist/components/p-8BpuJ_V5.js.map +1 -1
  40. package/dist/components/{p-Cg8vTcm1.js → p-B28tIeVs.js} +3 -3
  41. package/dist/components/{p-Cg8vTcm1.js.map → p-B28tIeVs.js.map} +1 -1
  42. package/dist/components/{p-PtbrPqLv.js → p-B2zhJUcA.js} +4 -4
  43. package/dist/components/{p-PtbrPqLv.js.map → p-B2zhJUcA.js.map} +1 -1
  44. package/dist/components/{p-0K5ek-gN.js → p-B3jFm6B_.js} +4 -4
  45. package/dist/components/{p-0K5ek-gN.js.map → p-B3jFm6B_.js.map} +1 -1
  46. package/dist/components/{p-BGrQjFTc.js → p-BOYVvAQB.js} +3 -3
  47. package/dist/components/{p-BGrQjFTc.js.map → p-BOYVvAQB.js.map} +1 -1
  48. package/dist/components/{p-BgLkcEoy.js → p-BR18G7Pq.js} +4 -4
  49. package/dist/components/{p-BgLkcEoy.js.map → p-BR18G7Pq.js.map} +1 -1
  50. package/dist/components/{p-BwbfTRHn.js → p-Ba3VDw-H.js} +3 -3
  51. package/dist/components/{p-BwbfTRHn.js.map → p-Ba3VDw-H.js.map} +1 -1
  52. package/dist/components/{p-h01Qiljf.js → p-Ba8zuq-V.js} +3 -3
  53. package/dist/components/{p-h01Qiljf.js.map → p-Ba8zuq-V.js.map} +1 -1
  54. package/dist/components/{p-CiOrml-5.js → p-CFLYpSRc.js} +3 -3
  55. package/dist/components/{p-CiOrml-5.js.map → p-CFLYpSRc.js.map} +1 -1
  56. package/dist/components/{p-VlzBlwUc.js → p-CMVxImmw.js} +5 -5
  57. package/dist/components/{p-VlzBlwUc.js.map → p-CMVxImmw.js.map} +1 -1
  58. package/dist/components/{p-Cthy0N10.js → p-CP4gYqda.js} +5 -5
  59. package/dist/components/{p-Cthy0N10.js.map → p-CP4gYqda.js.map} +1 -1
  60. package/dist/components/{p-CSeC5LGG.js → p-Ch0U0Vmb.js} +3 -3
  61. package/dist/components/{p-CSeC5LGG.js.map → p-Ch0U0Vmb.js.map} +1 -1
  62. package/dist/components/{p-CamHvHq5.js → p-ChYpVv-Q.js} +4 -4
  63. package/dist/components/{p-CamHvHq5.js.map → p-ChYpVv-Q.js.map} +1 -1
  64. package/dist/components/{p-CtFu9Z9D.js → p-CypPi9fK.js} +4 -4
  65. package/dist/components/{p-CtFu9Z9D.js.map → p-CypPi9fK.js.map} +1 -1
  66. package/dist/components/{p-BOYEmkB-.js → p-D19UjlNC.js} +5 -5
  67. package/dist/components/{p-BOYEmkB-.js.map → p-D19UjlNC.js.map} +1 -1
  68. package/dist/components/{p-BqeCVajN.js → p-D6CVLxdH.js} +4 -4
  69. package/dist/components/{p-BqeCVajN.js.map → p-D6CVLxdH.js.map} +1 -1
  70. package/dist/components/{p-CVq9IPp4.js → p-DPB4aAQa.js} +6 -6
  71. package/dist/components/{p-CVq9IPp4.js.map → p-DPB4aAQa.js.map} +1 -1
  72. package/dist/components/{p-DP1RHUGR.js → p-DWbH_VvT.js} +81 -88
  73. package/dist/components/p-DWbH_VvT.js.map +1 -0
  74. package/dist/components/{p-B0tiz_Xb.js → p-DcwjZ5a1.js} +4 -4
  75. package/dist/components/{p-B0tiz_Xb.js.map → p-DcwjZ5a1.js.map} +1 -1
  76. package/dist/components/{p-6IQljT42.js → p-Dhm2b0J_.js} +7 -7
  77. package/dist/components/{p-6IQljT42.js.map → p-Dhm2b0J_.js.map} +1 -1
  78. package/dist/components/{p-Dvnf-j7X.js → p-Dhs3vhG4.js} +5 -5
  79. package/dist/components/{p-Dvnf-j7X.js.map → p-Dhs3vhG4.js.map} +1 -1
  80. package/dist/components/{p-DR6_SaU9.js → p-Dp-CUwYp.js} +3 -3
  81. package/dist/components/{p-DR6_SaU9.js.map → p-Dp-CUwYp.js.map} +1 -1
  82. package/dist/components/{p-DeStKoNN.js → p-Dsrpb4rI.js} +3 -3
  83. package/dist/components/{p-DeStKoNN.js.map → p-Dsrpb4rI.js.map} +1 -1
  84. package/dist/components/{p-De7T_ng8.js → p-G3CHdt_U.js} +6 -6
  85. package/dist/components/{p-De7T_ng8.js.map → p-G3CHdt_U.js.map} +1 -1
  86. package/dist/components/{p-CN-2D26g.js → p-Pg_gixIL.js} +3 -3
  87. package/dist/components/{p-CN-2D26g.js.map → p-Pg_gixIL.js.map} +1 -1
  88. package/dist/components/{p-d40T-Ru7.js → p-fJpj0Zb5.js} +4 -4
  89. package/dist/components/{p-d40T-Ru7.js.map → p-fJpj0Zb5.js.map} +1 -1
  90. package/dist/components/{p-Czjk80qD.js → p-fXuAmVVV.js} +6 -6
  91. package/dist/components/{p-Czjk80qD.js.map → p-fXuAmVVV.js.map} +1 -1
  92. package/dist/components/{p-BMlyFJD4.js → p-iM2t1WOr.js} +3 -3
  93. package/dist/components/{p-BMlyFJD4.js.map → p-iM2t1WOr.js.map} +1 -1
  94. package/dist/components/{p-C-mZ7tbj.js → p-lrqPOj5Q.js} +3 -3
  95. package/dist/components/{p-C-mZ7tbj.js.map → p-lrqPOj5Q.js.map} +1 -1
  96. package/dist/components/{p-Bnocq8Cb.js → p-mSjgruQE.js} +4 -4
  97. package/dist/components/{p-Bnocq8Cb.js.map → p-mSjgruQE.js.map} +1 -1
  98. package/dist/components/payment-method-selector.js +1 -1
  99. package/dist/components/rebill-address-form.js +1 -1
  100. package/dist/components/rebill-address-search.js +1 -1
  101. package/dist/components/rebill-address.js +1 -1
  102. package/dist/components/rebill-bank-selector.js +1 -1
  103. package/dist/components/rebill-change-card.js +19 -19
  104. package/dist/components/rebill-checkout-single-column.js +1 -1
  105. package/dist/components/rebill-checkout.js +26 -26
  106. package/dist/components/rebill-container.js +1 -1
  107. package/dist/components/rebill-flex-container.js +1 -1
  108. package/dist/components/rebill-footer.js +1 -1
  109. package/dist/components/rebill-grid-container.js +1 -1
  110. package/dist/components/rebill-input-email.js +1 -1
  111. package/dist/components/rebill-input-phone.js +1 -1
  112. package/dist/components/rebill-input-select.js +1 -1
  113. package/dist/components/rebill-input-text.js +1 -1
  114. package/dist/components/rebill-installments.js +1 -1
  115. package/dist/components/rebill-mode-sandbox-mobile.js +1 -1
  116. package/dist/components/rebill-processing-payment.js +1 -1
  117. package/dist/components/rebill-renewal.js +19 -19
  118. package/dist/components/rebill-summary.js +1 -1
  119. package/dist/components/rebill-timeline-debit-day.js +1 -1
  120. package/dist/components/rebill-timeline-free-trial.js +1 -1
  121. package/dist/components/renewal-success-page.js +1 -1
  122. package/dist/components/renewal-summary.js +1 -1
  123. package/dist/components/root-component.js +3 -3
  124. package/dist/components/selectable-card.js +1 -1
  125. package/dist/components/single-payment-method.js +1 -1
  126. package/dist/components/success-page.js +1 -1
  127. package/dist/components/user-information-phone.js +1 -1
  128. package/dist/components/user-information.js +1 -1
  129. package/dist/esm/card-fields-wrapper_11.entry.js +8 -8
  130. package/dist/esm/index-BTZ7D7jU.js.map +1 -1
  131. package/dist/esm/input-otp.entry.js +2 -2
  132. package/dist/esm/loader.js +1 -1
  133. package/dist/esm/rebill-card.rebill-input-email.entry.js.map +1 -1
  134. package/dist/esm/rebill-card_2.entry.js +77 -83
  135. package/dist/esm/rebill-container_2.entry.js +1 -1
  136. package/dist/esm/rebill-flex-container.entry.js +1 -1
  137. package/dist/esm/rebill-grid-container.entry.js +1 -1
  138. package/dist/esm/rebill-input-select.entry.js +2 -2
  139. package/dist/esm/rebill-input-text.entry.js +2 -2
  140. package/dist/esm/rebill-mode-sandbox_2.entry.js +1 -1
  141. package/dist/esm/rebill-timeline-debit-day_2.entry.js +2 -2
  142. package/dist/esm/rebill-web-components-sdk.js +1 -1
  143. package/dist/rebill-web-components-sdk/{p-2b3cb9b5.entry.js → p-11ee0328.entry.js} +2 -2
  144. package/dist/rebill-web-components-sdk/{p-24a79725.entry.js → p-130877f9.entry.js} +2 -2
  145. package/dist/rebill-web-components-sdk/{p-734696df.entry.js → p-16e7646e.entry.js} +2 -2
  146. package/dist/rebill-web-components-sdk/{p-c6c8bf05.entry.js → p-6eede717.entry.js} +2 -2
  147. package/dist/rebill-web-components-sdk/p-98fc2da1.entry.js +2 -0
  148. package/dist/rebill-web-components-sdk/p-98fc2da1.entry.js.map +1 -0
  149. package/dist/rebill-web-components-sdk/p-BTZ7D7jU.js.map +1 -1
  150. package/dist/rebill-web-components-sdk/{p-a09a0d53.entry.js → p-b350f63e.entry.js} +2 -2
  151. package/dist/rebill-web-components-sdk/{p-c38319c1.entry.js → p-be004b4f.entry.js} +2 -2
  152. package/dist/rebill-web-components-sdk/{p-894d7d00.entry.js → p-d73d7c39.entry.js} +2 -2
  153. package/dist/rebill-web-components-sdk/{p-45d1115b.entry.js → p-dd44d494.entry.js} +2 -2
  154. package/dist/rebill-web-components-sdk/{p-6ab7c3bc.entry.js → p-e54f571c.entry.js} +2 -2
  155. package/dist/rebill-web-components-sdk/rebill-card.rebill-input-email.entry.esm.js.map +1 -1
  156. package/dist/rebill-web-components-sdk/rebill-web-components-sdk.esm.js +1 -1
  157. package/dist/types/components/shared/inputs/input-email/input-email.d.ts +8 -17
  158. package/package.json +1 -1
  159. package/dist/components/p-DP1RHUGR.js.map +0 -1
  160. package/dist/rebill-web-components-sdk/p-8a2f420d.entry.js +0 -2
  161. package/dist/rebill-web-components-sdk/p-8a2f420d.entry.js.map +0 -1
  162. /package/dist/rebill-web-components-sdk/{p-2b3cb9b5.entry.js.map → p-11ee0328.entry.js.map} +0 -0
  163. /package/dist/rebill-web-components-sdk/{p-24a79725.entry.js.map → p-130877f9.entry.js.map} +0 -0
  164. /package/dist/rebill-web-components-sdk/{p-734696df.entry.js.map → p-16e7646e.entry.js.map} +0 -0
  165. /package/dist/rebill-web-components-sdk/{p-c6c8bf05.entry.js.map → p-6eede717.entry.js.map} +0 -0
  166. /package/dist/rebill-web-components-sdk/{p-a09a0d53.entry.js.map → p-b350f63e.entry.js.map} +0 -0
  167. /package/dist/rebill-web-components-sdk/{p-c38319c1.entry.js.map → p-be004b4f.entry.js.map} +0 -0
  168. /package/dist/rebill-web-components-sdk/{p-894d7d00.entry.js.map → p-d73d7c39.entry.js.map} +0 -0
  169. /package/dist/rebill-web-components-sdk/{p-45d1115b.entry.js.map → p-dd44d494.entry.js.map} +0 -0
  170. /package/dist/rebill-web-components-sdk/{p-6ab7c3bc.entry.js.map → p-e54f571c.entry.js.map} +0 -0
@@ -3,10 +3,7 @@ export declare class InputEmail {
3
3
  el: HTMLElement;
4
4
  private inputElement;
5
5
  private suggestionsDropdownRef?;
6
- private isMouseOverSuggestions;
7
6
  private blurTimeout?;
8
- private readonly INPUT_PADDING_WITH_ICON;
9
- private readonly INPUT_PADDING_DEFAULT;
10
7
  /** Etiqueta que se muestra arriba del input */
11
8
  label: string;
12
9
  /** Placeholder del input */
@@ -41,19 +38,21 @@ export declare class InputEmail {
41
38
  highlightedSuggestionIndex: number;
42
39
  /** Sugerencia de corrección de email (para errores tipográficos) */
43
40
  emailCorrectionSuggestion: string | null;
44
- /** Indica si el formato del email es válido */
45
- isValidFormat: boolean;
46
- /** Indica si el usuario ya salió del campo (blur) */
47
- hasBlurred: boolean;
41
+ /** Posición del dropdown (arriba o abajo) */
42
+ dropdownPosition: 'down' | 'up';
48
43
  handleFormChange(event: CustomEvent): void;
49
44
  handleDocumentClick(event: MouseEvent): void;
45
+ handleDocumentTouchEnd(event: TouchEvent): void;
50
46
  /**
51
47
  * Detecta si hay un error tipográfico en el email y actualiza el estado
52
48
  */
53
49
  private checkForTypo;
50
+ /**
51
+ * Calcula si el dropdown debe posicionarse arriba o abajo según el espacio disponible
52
+ */
53
+ private calculateDropdownPosition;
54
54
  private normalizeEmailInput;
55
55
  private updateEmailState;
56
- private emitInputEvent;
57
56
  private onInput;
58
57
  private resetValidationState;
59
58
  private onClear;
@@ -61,21 +60,13 @@ export declare class InputEmail {
61
60
  private clearSuggestions;
62
61
  private onBlur;
63
62
  private onFocus;
64
- private moveHighlightDown;
65
- private moveHighlightUp;
66
- private selectHighlightedSuggestion;
67
- private closeSuggestions;
68
63
  private onKeyDown;
69
64
  private selectSuggestion;
70
65
  private applyCorrection;
71
66
  private handleSuggestionMouseEnter;
72
- private handleSuggestionsMouseEnter;
73
- private handleSuggestionsMouseLeave;
67
+ private handleSuggestionTouchEnd;
74
68
  getInputElement(): Promise<HTMLInputElement | null>;
75
69
  disconnectedCallback(): void;
76
- private getInputPaddingStyles;
77
- private shouldShowInvalidFormat;
78
- private shouldShowInvalidFormatError;
79
70
  private renderEmailCorrectionSuggestion;
80
71
  render(): any;
81
72
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rebill-web-components-sdk",
3
- "version": "1.10.10-beta.1",
3
+ "version": "1.10.10-beta.2",
4
4
  "description": "Stencil Component Starter",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- {"file":"p-DP1RHUGR.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/utils/email-validation.constants.ts","src/utils/email-validation.ts","src/components/shared/inputs/input-email/input-email.css?tag=rebill-input-email","src/components/shared/inputs/input-email/input-email.tsx"],"sourcesContent":["export const COMMON_EMAIL_DOMAINS = [\n 'gmail.com',\n 'outlook.com',\n 'hotmail.com',\n 'yahoo.com',\n 'icloud.com',\n 'msn.com',\n 'live.com',\n];\n\nexport const VALID_TLDS = [\n 'com',\n 'org',\n 'net',\n 'info',\n 'biz',\n 'online',\n 'site',\n 'store',\n 'shop',\n 'xyz',\n 'pro',\n 'name',\n 'email',\n 'cloud',\n 'tech',\n 'app',\n 'dev',\n 'io',\n 'me',\n 'ai',\n 'co',\n 'int',\n 'edu',\n 'gov',\n 'mil',\n 'us',\n 'ca',\n 'uk',\n 'de',\n 'fr',\n 'es',\n 'it',\n 'nl',\n 'be',\n 'se',\n 'no',\n 'dk',\n 'fi',\n 'ch',\n 'at',\n 'pl',\n 'cz',\n 'gr',\n 'hu',\n 'pt',\n 'ro',\n 'bg',\n 'si',\n 'sk',\n 'ie',\n 'lt',\n 'lv',\n 'ee',\n 'is',\n 'ru',\n 'tr',\n 'ge',\n 'am',\n 'az',\n 'ar',\n 'mx',\n 'br',\n 'cl',\n 'co',\n 'uy',\n 'py',\n 'bo',\n 'pe',\n 'ec',\n 've',\n 'pa',\n 'cr',\n 'ni',\n 'hn',\n 'sv',\n 'gt',\n 'bs',\n 'bb',\n 'ag',\n 'dm',\n 'gd',\n 'lc',\n 'vc',\n 'tt',\n 'jm',\n 'do',\n 'ht',\n 'ky',\n 'tc',\n 'vg',\n 'bm',\n 'gf',\n 'gp',\n 'mq',\n 're',\n 'yt',\n 'pf',\n 'nc',\n];\n\nexport const MAX_LEVENSHTEIN_DISTANCE_DOMAIN = 3;\nexport const MAX_LEVENSHTEIN_DISTANCE_TLD = 2;\nexport const BLUR_DELAY_MS = 200;\n","import {\n COMMON_EMAIL_DOMAINS,\n MAX_LEVENSHTEIN_DISTANCE_DOMAIN,\n MAX_LEVENSHTEIN_DISTANCE_TLD,\n VALID_TLDS,\n} from './email-validation.constants';\n\n// ============================================================================\n// HELPER FUNCTIONS\n// ============================================================================\n\nfunction normalizeDomain(domain: string): string {\n return domain?.toLowerCase().trim() || '';\n}\n\nfunction normalizeTLD(tld: string): string {\n if (!tld) return '';\n return tld.toLowerCase().replace(/^\\./, '');\n}\n\nfunction isExactCommonDomain(domain: string): boolean {\n return COMMON_EMAIL_DOMAINS.some(\n commonDomain => normalizeDomain(commonDomain) === normalizeDomain(domain),\n );\n}\n\nfunction buildEmailCorrection(localPart: string, domain: string): string {\n return `${localPart}@${domain}`;\n}\n\nfunction getDomainParts(commonDomain: string): { name: string; tld: string } {\n const parts = commonDomain.split('.');\n return {\n name: parts[0],\n tld: parts[1] || '',\n };\n}\n\nfunction levenshteinDistance(str1: string, str2: string): number {\n const matrix: number[][] = [];\n\n for (let i = 0; i <= str2.length; i++) {\n matrix[i] = [i];\n }\n\n for (let j = 0; j <= str1.length; j++) {\n matrix[0][j] = j;\n }\n\n for (let i = 1; i <= str2.length; i++) {\n for (let j = 1; j <= str1.length; j++) {\n if (str2.charAt(i - 1) === str1.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1,\n );\n }\n }\n }\n\n return matrix[str2.length][str1.length];\n}\n\nfunction extractDomainName(domain: string): string {\n return domain.split('.')[0];\n}\n\n/**\n * Valida si el TLD es válido\n * Los TLDs en VALID_TLDS no tienen punto (ej: \"com\")\n */\nexport function isValidTLD(tld: string): boolean {\n if (!tld) return false;\n return VALID_TLDS.includes(normalizeTLD(tld));\n}\n\n/**\n * Encuentra un TLD válido similar al ingresado\n * Retorna el TLD sin punto porque se usa en join('.')\n */\nexport function findSimilarTLD(inputTLD: string): string | null {\n if (!inputTLD) return null;\n\n const normalized = normalizeTLD(inputTLD);\n\n if (VALID_TLDS.includes(normalized)) {\n return null;\n }\n let bestMatch: string | null = null;\n let minDistance = Infinity;\n\n for (const validTLD of VALID_TLDS) {\n const distance = levenshteinDistance(normalized, validTLD);\n\n if (distance < minDistance && distance > 0 && distance <= MAX_LEVENSHTEIN_DISTANCE_TLD) {\n minDistance = distance;\n bestMatch = validTLD;\n }\n }\n\n return bestMatch;\n}\n\n/**\n * Encuentra el dominio más similar a uno de los dominios comunes\n */\nexport function findSimilarDomain(inputDomain: string): string | null {\n if (!inputDomain || inputDomain.trim() === '') {\n return null;\n }\n\n const normalizedInput = inputDomain.toLowerCase().trim();\n const domainName = extractDomainName(normalizedInput);\n\n let bestMatch: string | null = null;\n let minDistance = Infinity;\n\n for (const domain of COMMON_EMAIL_DOMAINS) {\n const commonDomainName = extractDomainName(domain);\n const distance = levenshteinDistance(domainName, commonDomainName);\n\n if (distance < minDistance && distance > 0 && distance <= MAX_LEVENSHTEIN_DISTANCE_DOMAIN) {\n minDistance = distance;\n bestMatch = domain;\n }\n }\n\n return bestMatch;\n}\n\n/**\n * Detecta si hay errores de formato en el dominio (no errores tipográficos)\n * ej: doble punto (..), punto al inicio/final, caracteres inválidos\n */\nexport function hasEmailFormatError(domainPart: string): boolean {\n if (!domainPart) return false;\n\n if (domainPart.includes('..')) {\n return true;\n }\n\n if (domainPart.startsWith('.') || domainPart.endsWith('.')) {\n return true;\n }\n\n const validDomainPattern = /^[a-zA-Z0-9.-]+$/;\n if (!validDomainPattern.test(domainPart)) {\n return true;\n }\n\n // Validar que el TLD (después del último punto) tenga al menos 2 caracteres\n const lastDotIndex = domainPart.lastIndexOf('.');\n if (lastDotIndex !== -1) {\n const tld = domainPart.substring(lastDotIndex + 1);\n if (tld.length < 2) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Detecta si falta un punto en el dominio (ej: \"gmailcom\" -> \"gmail.com\")\n */\nexport function detectMissingDot(\n domainPart: string,\n isValidTLDFn: (tld: string) => boolean,\n): string | null {\n if (!domainPart || domainPart.includes('.')) {\n return null;\n }\n\n for (const commonDomain of COMMON_EMAIL_DOMAINS) {\n const commonDomainName = extractDomainName(commonDomain);\n const normalizedDomain = normalizeDomain(domainPart);\n const normalizedCommonName = normalizeDomain(commonDomainName);\n\n if (normalizedDomain.startsWith(normalizedCommonName)) {\n const remaining = normalizedDomain.substring(normalizedCommonName.length);\n\n if (isValidTLDFn(remaining)) {\n return `${commonDomainName}.${remaining}`;\n }\n }\n }\n for (const commonDomain of COMMON_EMAIL_DOMAINS) {\n const commonDomainName = extractDomainName(commonDomain);\n const { tld: commonTLD } = getDomainParts(commonDomain);\n\n const expectedWithoutDot = `${commonDomainName}${commonTLD}`;\n if (normalizeDomain(domainPart) === normalizeDomain(expectedWithoutDot)) {\n return commonDomain;\n }\n }\n\n return null;\n}\n\n/**\n * Detecta si falta un punto en un dominio de múltiples partes\n * ej: \"gmailcom.ar\" -> \"gmail.com.ar\"\n */\nexport function detectMissingDotInMultiPartDomain(domainPart: string): string | null {\n if (!domainPart || !domainPart.includes('.')) {\n return null;\n }\n\n const domainParts = domainPart.split('.');\n const firstPart = domainParts[0];\n const restParts = domainParts.slice(1);\n\n for (const commonDomain of COMMON_EMAIL_DOMAINS) {\n const commonDomainName = extractDomainName(commonDomain);\n const { tld: commonTLD } = getDomainParts(commonDomain);\n\n const expectedWithoutDot = `${commonDomainName}${commonTLD}`;\n if (normalizeDomain(firstPart) === normalizeDomain(expectedWithoutDot)) {\n const correctedParts = [commonDomainName, commonTLD, ...restParts];\n return correctedParts.join('.');\n }\n }\n\n return null;\n}\n\n/**\n * Valida el formato básico del email completo\n * @param email - El email a validar\n * @returns true si el formato es válido, false en caso contrario\n */\nexport function validateEmailFormat(email: string): boolean {\n if (!email || email.trim() === '') {\n return true;\n }\n\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}\n\n/**\n * Genera sugerencias de email basadas en dominios comunes\n * @param emailValue - El valor actual del email que el usuario está escribiendo\n * @returns Array de emails sugeridos\n */\nexport function getEmailSuggestions(emailValue: string): string[] {\n if (!emailValue || !emailValue.includes('@')) {\n return [];\n }\n\n const [localPart, domainPart] = emailValue.split('@');\n\n if (!localPart) {\n return [];\n }\n\n if (domainPart && domainPart.includes('.') && !domainPart.endsWith('.')) {\n return [];\n }\n\n const filteredDomains = COMMON_EMAIL_DOMAINS.filter(domain => {\n if (!domainPart || domainPart.trim() === '') {\n return true;\n }\n return domain.startsWith(domainPart.toLowerCase());\n });\n\n return filteredDomains.map(domain => `${localPart}@${domain}`);\n}\n\n/**\n * Corrige errores tipográficos en un dominio que ya tiene puntos\n * @param localPart - La parte local del email (antes del @)\n * @param domainPart - La parte del dominio (después del @)\n * @returns El email corregido sugerido, o null si no hay corrección\n */\nfunction correctDomainTypos(localPart: string, domainPart: string): string | null {\n const domainParts = domainPart.split('.');\n const domainName = domainParts[0];\n const isDomainNameValid = COMMON_EMAIL_DOMAINS.some(domain => {\n const { name } = getDomainParts(domain);\n return normalizeDomain(name) === normalizeDomain(domainName);\n });\n\n let correctedDomainParts = [...domainParts];\n let hasCorrection = false;\n\n if (!isDomainNameValid) {\n const similarDomain = findSimilarDomain(domainPart);\n if (similarDomain) {\n const { name } = getDomainParts(similarDomain);\n correctedDomainParts[0] = name;\n hasCorrection = true;\n }\n }\n\n for (let i = 1; i < correctedDomainParts.length; i++) {\n const part = correctedDomainParts[i];\n if (!isValidTLD(part)) {\n const similarTLD = findSimilarTLD(part);\n if (similarTLD) {\n correctedDomainParts[i] = similarTLD;\n hasCorrection = true;\n }\n }\n }\n\n return hasCorrection ? buildEmailCorrection(localPart, correctedDomainParts.join('.')) : null;\n}\n\n/**\n * Detecta si hay un error tipográfico en el email y sugiere una corrección\n * @param emailValue - El email a verificar\n * @returns El email corregido sugerido, o null si no hay corrección\n */\nexport function suggestEmailCorrection(emailValue: string): string | null {\n if (!emailValue || !emailValue.includes('@')) {\n return null;\n }\n\n const [localPart, domainPart] = emailValue.split('@');\n\n if (!localPart || !domainPart) {\n return null;\n }\n\n if (hasEmailFormatError(domainPart)) {\n return null;\n }\n\n if (isExactCommonDomain(domainPart)) {\n return null;\n }\n\n if (!domainPart.includes('.')) {\n const correctedDomain = detectMissingDot(domainPart, isValidTLD);\n return correctedDomain ? buildEmailCorrection(localPart, correctedDomain) : null;\n }\n\n const missingDotCorrection = detectMissingDotInMultiPartDomain(domainPart);\n if (missingDotCorrection) {\n return buildEmailCorrection(localPart, missingDotCorrection);\n }\n\n return correctDomainTypos(localPart, domainPart);\n}\n","@import '../shared-input.css';\n\n.input-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.input-element {\n width: 100%;\n box-sizing: border-box;\n}\n\n.icon-left,\n.icon-right {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n top: 50%;\n transform: translateY(-50%);\n}\n\n.icon-left {\n left: 0.75rem;\n color: var(--rebill-color-text-secondary-light);\n}\n\n.icon-right {\n right: 0.75rem;\n cursor: pointer;\n color: var(--rebill-color-text-secondary-light);\n}\n\n.input-element.input-error:focus {\n flex-direction: column;\n box-shadow: 0 0 0 2px var(--rebill-color-error-light);\n}\n\n.input-wrapper.has-invalid-format .input-element {\n border-color: var(--rebill-color-error);\n}\n\n.input-wrapper.has-invalid-format .input-element:focus {\n box-shadow: 0 0 0 2px var(--rebill-color-error-light);\n}\n\n/* Floating label styles */\n.floating-label {\n position: relative;\n}\n\n.floating-label .input-text__input-label {\n position: absolute;\n top: 50%;\n left: 0.75rem;\n transform: translateY(-50%);\n color: var(--rebill-color-text-secondary-light);\n transition: all 0.1s ease-in-out;\n pointer-events: none;\n}\n\n.floating-label .input-element::placeholder {\n color: transparent;\n}\n\n.floating-label .input-element:focus ~ .input-text__input-label,\n.floating-label .input-element:not(:placeholder-shown) ~ .input-text__input-label {\n top: 0;\n font-size: 0.62rem;\n color: var(--rebill-color-text-secondary);\n background-color: var(--rebill-color-background);\n padding: 0 4px;\n left: 0.75rem;\n}\n\n.floating-label.has-left-icon .input-text__input-label {\n left: 2.5rem;\n}\n\n/* Disabled state styles */\n.input-element:disabled {\n color: var(--rebill-color-neutrals-500);\n}\n\n.input-wrapper:has(.input-element:disabled) .icon-left,\n.input-wrapper:has(.input-element:disabled) .icon-right {\n color: var(--rebill-color-text-secondary-light) !important;\n}\n\n/* Email suggestions dropdown */\n.email-suggestions-dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: 1000;\n background-color: var(--rebill-color-background);\n border: 1px solid var(--rebill-color-border);\n border-radius: 0.375rem;\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n margin-top: 0.25rem;\n max-height: 200px;\n overflow-y: auto;\n animation: slideDown 0.15s ease-out;\n box-sizing: border-box;\n width: 100%;\n}\n\n.email-suggestions-header {\n padding: 0.75rem;\n font-size: 0.875rem;\n font-weight: 400;\n color: var(--rebill-color-primary);\n border-bottom: 1px solid var(--rebill-color-border);\n background-color: var(--rebill-color-background);\n}\n\n.email-suggestion-item {\n padding: 0.75rem;\n font-size: 0.875rem;\n color: var(--rebill-color-text-primary);\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.email-suggestion-item:last-child {\n border-bottom: none;\n}\n\n.email-suggestion-item:hover,\n.email-suggestion-item.highlighted {\n background-color: var(--rebill-color-background-right);\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Scrollbar styling for email suggestions dropdown */\n.email-suggestions-dropdown::-webkit-scrollbar {\n width: 6px;\n}\n\n.email-suggestions-dropdown::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.email-suggestions-dropdown::-webkit-scrollbar-thumb {\n background-color: var(--rebill-color-border);\n border-radius: 3px;\n}\n\n.email-suggestions-dropdown::-webkit-scrollbar-thumb:hover {\n background-color: var(--rebill-color-text-secondary);\n}\n\n/* Email correction suggestion */\n.email-correction-suggestion {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.75rem;\n margin-top: 0.375rem;\n line-height: 1.4;\n}\n\n.email-correction-icon {\n flex-shrink: 0;\n}\n\n.email-correction-text {\n color: var(--rebill-color-text-primary);\n flex: 1;\n}\n\n.email-correction-link {\n color: var(--rebill-color-link);\n text-decoration: underline;\n cursor: pointer;\n font-weight: 500;\n transition: opacity 0.2s ease;\n}\n\n.email-correction-link:hover {\n opacity: 0.8;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Listen,\n Method,\n Prop,\n State,\n h,\n} from '@stencil/core';\nimport { I18nService } from '../../../../i18n/i18n.service';\nimport { COLORS_ENUM } from '../../../../utils/color-class-mapper';\nimport {\n getEmailSuggestions,\n suggestEmailCorrection,\n validateEmailFormat,\n} from '../../../../utils/email-validation';\nimport { BLUR_DELAY_MS } from '../../../../utils/email-validation.constants';\n\n@Component({\n tag: 'rebill-input-email',\n styleUrl: 'input-email.css',\n shadow: false,\n})\nexport class InputEmail {\n @Element() el: HTMLElement;\n private inputElement: HTMLInputElement;\n private suggestionsDropdownRef?: HTMLDivElement;\n private isMouseOverSuggestions: boolean = false;\n private blurTimeout?: number;\n\n // Constants\n private readonly INPUT_PADDING_WITH_ICON = '2.5rem';\n private readonly INPUT_PADDING_DEFAULT = '0.75rem';\n\n /** Etiqueta que se muestra arriba del input */\n @Prop() label: string = '';\n /** Placeholder del input */\n @Prop() placeholder: string = '';\n /** Valor del input */\n @Prop({ mutable: true, reflect: true }) value: string = '';\n /** Mensaje de error */\n @Prop() error: string = '';\n /** ID del input */\n @Prop() id: string = 'email';\n /** Estado deshabilitado */\n @Prop() disabled: boolean = false;\n /** Icono a la izquierda */\n @Prop() leftIcon: string;\n /** Permitir limpiar el input */\n @Prop() clearable: boolean = false;\n /** Variacion de estilo del input */\n @Prop() variant: 'default' | 'floating' = 'default';\n /** Evento al cambiar el valor */\n @Event() input: EventEmitter<{ id: string; value: string }>;\n /** Evento al salir del input */\n @Event() blur: EventEmitter<{ id: string; value: string }>;\n /** Sugerencias de email */\n @State() emailSuggestions: string[] = [];\n /** Índice de la sugerencia resaltada */\n @State() highlightedSuggestionIndex: number = -1;\n /** Sugerencia de corrección de email (para errores tipográficos) */\n @State() emailCorrectionSuggestion: string | null = null;\n /** Indica si el formato del email es válido */\n @State() isValidFormat: boolean = true;\n /** Indica si el usuario ya salió del campo (blur) */\n @State() hasBlurred: boolean = false;\n\n @Listen('change', { target: 'document' })\n handleFormChange(event: CustomEvent) {\n const formData = event.detail;\n if (formData && this.id in formData) {\n this.value = formData[this.id];\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent) {\n if (\n this.suggestionsDropdownRef &&\n !this.suggestionsDropdownRef.contains(event.target as Node) &&\n !this.inputElement?.contains(event.target as Node) &&\n !this.isMouseOverSuggestions\n ) {\n this.emailSuggestions = [];\n this.highlightedSuggestionIndex = -1;\n }\n }\n\n // ============================================================================\n // EMAIL VALIDATION & SUGGESTIONS\n // ============================================================================\n\n /**\n * Detecta si hay un error tipográfico en el email y actualiza el estado\n */\n private checkForTypo(emailValue: string): void {\n this.emailCorrectionSuggestion = suggestEmailCorrection(emailValue);\n }\n\n // ============================================================================\n // INPUT EVENT HANDLERS\n // ============================================================================\n\n private normalizeEmailInput(value: string): string {\n return value.toLowerCase();\n }\n\n private updateEmailState(inputValue: string): void {\n this.isValidFormat = validateEmailFormat(inputValue);\n this.emailSuggestions = getEmailSuggestions(inputValue);\n this.highlightedSuggestionIndex = -1;\n // Limpiar sugerencia de corrección al modificar el input\n this.emailCorrectionSuggestion = null;\n this.value = inputValue;\n }\n\n private emitInputEvent(value: string): void {\n this.input.emit({ id: this.id, value });\n }\n\n private onInput = (event: Event) => {\n if (this.disabled) return;\n\n const input = event.target as HTMLInputElement;\n const inputValue = this.normalizeEmailInput(input.value);\n\n input.value = inputValue;\n this.updateEmailState(inputValue);\n this.emitInputEvent(inputValue);\n };\n\n private resetValidationState(): void {\n this.isValidFormat = true;\n this.emailSuggestions = [];\n this.highlightedSuggestionIndex = -1;\n this.emailCorrectionSuggestion = null;\n this.hasBlurred = false;\n }\n\n private onClear = () => {\n if (this.disabled) return;\n\n this.value = '';\n this.resetValidationState();\n this.input.emit({ id: this.id, value: this.value });\n };\n\n private trimAndUpdateValue(): void {\n const trimmedValue = this.value.trim();\n if (trimmedValue !== this.value) {\n this.value = trimmedValue;\n this.input.emit({ id: this.id, value: this.value });\n }\n }\n\n private clearSuggestions(): void {\n this.emailSuggestions = [];\n this.highlightedSuggestionIndex = -1;\n // Nota: No limpiamos emailCorrectionSuggestion para que el usuario pueda verla\n }\n\n private onBlur = () => {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout);\n }\n\n this.blurTimeout = window.setTimeout(() => {\n if (!this.isMouseOverSuggestions) {\n this.hasBlurred = true;\n this.trimAndUpdateValue();\n // Revalidar formato después del trim\n this.isValidFormat = validateEmailFormat(this.value);\n this.clearSuggestions();\n // Verificar errores tipográficos solo cuando sale del campo\n this.checkForTypo(this.value);\n this.blur.emit({ id: this.id, value: this.value });\n }\n }, BLUR_DELAY_MS);\n };\n\n private onFocus = () => {\n if (this.value) {\n this.emailSuggestions = getEmailSuggestions(this.value);\n }\n };\n\n // ============================================================================\n // SUGGESTION INTERACTION HANDLERS\n // ============================================================================\n\n private moveHighlightDown(): void {\n this.highlightedSuggestionIndex = Math.min(\n this.highlightedSuggestionIndex + 1,\n this.emailSuggestions.length - 1,\n );\n }\n\n private moveHighlightUp(): void {\n this.highlightedSuggestionIndex = Math.max(this.highlightedSuggestionIndex - 1, -1);\n }\n\n private selectHighlightedSuggestion(): void {\n if (this.highlightedSuggestionIndex >= 0) {\n this.selectSuggestion(this.emailSuggestions[this.highlightedSuggestionIndex]);\n }\n }\n\n private closeSuggestions(): void {\n this.emailSuggestions = [];\n this.highlightedSuggestionIndex = -1;\n }\n\n private onKeyDown = (event: KeyboardEvent) => {\n if (this.emailSuggestions.length === 0) {\n return;\n }\n\n const keyHandlers: Record<string, () => void> = {\n ArrowDown: () => this.moveHighlightDown(),\n ArrowUp: () => this.moveHighlightUp(),\n Escape: () => this.closeSuggestions(),\n };\n\n const handler = keyHandlers[event.key];\n if (handler) {\n event.preventDefault();\n handler();\n } else if (event.key === 'Enter' && this.highlightedSuggestionIndex >= 0) {\n event.preventDefault();\n this.selectHighlightedSuggestion();\n }\n };\n\n private selectSuggestion = (suggestion: string) => {\n this.value = suggestion;\n this.emailSuggestions = [];\n this.highlightedSuggestionIndex = -1;\n this.emailCorrectionSuggestion = null;\n if (this.inputElement) {\n this.inputElement.value = suggestion;\n }\n this.input.emit({ id: this.id, value: this.value });\n this.inputElement?.focus();\n };\n\n private applyCorrection = () => {\n if (this.emailCorrectionSuggestion) {\n this.selectSuggestion(this.emailCorrectionSuggestion);\n }\n };\n\n private handleSuggestionMouseEnter = (index: number) => {\n this.highlightedSuggestionIndex = index;\n };\n\n private handleSuggestionsMouseEnter = () => {\n this.isMouseOverSuggestions = true;\n };\n\n private handleSuggestionsMouseLeave = () => {\n this.isMouseOverSuggestions = false;\n };\n\n // ============================================================================\n // PUBLIC METHODS\n // ============================================================================\n\n @Method()\n async getInputElement(): Promise<HTMLInputElement | null> {\n return this.inputElement;\n }\n\n disconnectedCallback() {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout);\n }\n }\n\n // ============================================================================\n // RENDER HELPERS\n // ============================================================================\n\n private getInputPaddingStyles() {\n return {\n paddingLeft: this.leftIcon ? this.INPUT_PADDING_WITH_ICON : this.INPUT_PADDING_DEFAULT,\n paddingRight: this.clearable ? this.INPUT_PADDING_WITH_ICON : this.INPUT_PADDING_DEFAULT,\n };\n }\n\n private shouldShowInvalidFormat(): boolean {\n return !this.isValidFormat && this.value && !this.error && this.hasBlurred;\n }\n\n private shouldShowInvalidFormatError(): boolean {\n return !this.isValidFormat && this.value && !this.error && this.hasBlurred;\n }\n\n private renderEmailCorrectionSuggestion() {\n if (!this.emailCorrectionSuggestion) return null;\n\n const translatedText = I18nService.translate('userInformation.emailCorrectionSuggestion', {\n email: this.emailCorrectionSuggestion,\n });\n const parts = translatedText.split(this.emailCorrectionSuggestion);\n\n return (\n <div class=\"email-correction-suggestion\" role=\"status\" aria-live=\"polite\">\n <rebill-icon name=\"circle-info-outline\" size=\"16px\" color={COLORS_ENUM.NEUTRALS_500} />\n <span class=\"email-correction-text\">\n {parts.map((part, index) => (\n <span key={index}>\n {part}\n {index < parts.length - 1 && (\n <span class=\"email-correction-link\" onClick={this.applyCorrection}>\n {this.emailCorrectionSuggestion}\n </span>\n )}\n </span>\n ))}\n </span>\n </div>\n );\n }\n\n render() {\n const isFloating = this.variant === 'floating';\n const showEmailSuggestions = this.emailSuggestions.length > 0;\n\n const inputClasses = {\n 'input-element': true,\n 'input-error': !!this.error,\n };\n\n const wrapperClasses = {\n 'input-wrapper': true,\n 'floating-label': isFloating,\n 'has-left-icon': !!this.leftIcon,\n 'has-email-suggestions': showEmailSuggestions,\n 'has-invalid-format': this.shouldShowInvalidFormat(),\n };\n\n return (\n <div class=\"input-container\">\n {!isFloating && this.label && (\n <label class={`input-label ${this.disabled ? 'disabled' : ''}`}>{this.label}</label>\n )}\n <div class={wrapperClasses}>\n {this.leftIcon && (\n <div class=\"icon-left\">\n <rebill-icon name={this.leftIcon}></rebill-icon>\n </div>\n )}\n <input\n ref={el => (this.inputElement = el)}\n type=\"email\"\n class={inputClasses}\n placeholder={isFloating ? this.label : this.placeholder}\n value={this.value}\n onInput={this.onInput}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onKeyDown={this.onKeyDown}\n disabled={this.disabled}\n autocomplete=\"email\"\n autocapitalize=\"none\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n aria-autocomplete=\"list\"\n aria-expanded={showEmailSuggestions ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-owns={showEmailSuggestions ? 'email-suggestions' : undefined}\n aria-invalid={!this.isValidFormat && this.value && this.hasBlurred ? 'true' : 'false'}\n aria-describedby={\n this.error || (!this.isValidFormat && this.value && this.hasBlurred)\n ? `${this.id}-error`\n : undefined\n }\n style={this.getInputPaddingStyles()}\n />\n {isFloating && <label class=\"input-text__input-label input-label\">{this.label}</label>}\n {this.clearable && this.value && (\n <div class=\"icon-right\" onClick={this.onClear}>\n <rebill-icon name=\"x\"></rebill-icon>\n </div>\n )}\n {showEmailSuggestions && (\n <div\n id=\"email-suggestions\"\n ref={el => (this.suggestionsDropdownRef = el)}\n class=\"email-suggestions-dropdown\"\n role=\"listbox\"\n aria-label={I18nService.translate(\n 'userInformation.suggestionsLabel',\n 'Email suggestions',\n )}\n onMouseEnter={this.handleSuggestionsMouseEnter}\n onMouseLeave={this.handleSuggestionsMouseLeave}\n >\n <div class=\"email-suggestions-header\">\n {I18nService.translate('userInformation.suggestionsHeader', 'Suggestion')}\n </div>\n {this.emailSuggestions.map((suggestion, index) => (\n <div\n key={suggestion}\n role=\"option\"\n aria-selected={this.highlightedSuggestionIndex === index ? 'true' : 'false'}\n class={`email-suggestion-item ${this.highlightedSuggestionIndex === index ? 'highlighted' : ''}`}\n onClick={() => this.selectSuggestion(suggestion)}\n onMouseEnter={() => this.handleSuggestionMouseEnter(index)}\n >\n {suggestion}\n </div>\n ))}\n </div>\n )}\n </div>\n {this.error && (\n <span id={`${this.id}-error`} class=\"error-message\" role=\"alert\">\n {this.error}\n </span>\n )}\n {this.shouldShowInvalidFormatError() && (\n <span id={`${this.id}-error`} class=\"error-message\" role=\"alert\">\n {I18nService.translate('paymentErrors.emailInvalid', 'The email address is not valid')}\n </span>\n )}\n {this.renderEmailCorrectionSuggestion()}\n </div>\n );\n }\n}\n"],"version":3}
@@ -1,2 +0,0 @@
1
- import{r as e,h as t,c as i,d as r}from"./p-BTZ7D7jU.js";import{C as o}from"./p-C5Pu-n-i.js";import{I as n}from"./p-DPLmRWqO.js";const l=["gmail.com","outlook.com","hotmail.com","yahoo.com","icloud.com","msn.com","live.com"];const s=["com","org","net","info","biz","online","site","store","shop","xyz","pro","name","email","cloud","tech","app","dev","io","me","ai","co","int","edu","gov","mil","us","ca","uk","de","fr","es","it","nl","be","se","no","dk","fi","ch","at","pl","cz","gr","hu","pt","ro","bg","si","sk","ie","lt","lv","ee","is","ru","tr","ge","am","az","ar","mx","br","cl","co","uy","py","bo","pe","ec","ve","pa","cr","ni","hn","sv","gt","bs","bb","ag","dm","gd","lc","vc","tt","jm","do","ht","ky","tc","vg","bm","gf","gp","mq","re","yt","pf","nc"];const a=3;const c=2;const u=200;function d(e){return e?.toLowerCase().trim()||""}function h(e){if(!e)return"";return e.toLowerCase().replace(/^\./,"")}function p(e){return l.some((t=>d(t)===d(e)))}function f(e,t){return`${e}@${t}`}function b(e){const t=e.split(".");return{name:t[0],tld:t[1]||""}}function m(e,t){const i=[];for(let e=0;e<=t.length;e++){i[e]=[e]}for(let t=0;t<=e.length;t++){i[0][t]=t}for(let r=1;r<=t.length;r++){for(let o=1;o<=e.length;o++){if(t.charAt(r-1)===e.charAt(o-1)){i[r][o]=i[r-1][o-1]}else{i[r][o]=Math.min(i[r-1][o-1]+1,i[r][o-1]+1,i[r-1][o]+1)}}}return i[t.length][e.length]}function g(e){return e.split(".")[0]}function v(e){if(!e)return false;return s.includes(h(e))}function x(e){if(!e)return null;const t=h(e);if(s.includes(t)){return null}let i=null;let r=Infinity;for(const e of s){const o=m(t,e);if(o<r&&o>0&&o<=c){r=o;i=e}}return i}function y(e){if(!e||e.trim()===""){return null}const t=e.toLowerCase().trim();const i=g(t);let r=null;let o=Infinity;for(const e of l){const t=g(e);const n=m(i,t);if(n<o&&n>0&&n<=a){o=n;r=e}}return r}function k(e){if(!e)return false;if(e.includes("..")){return true}if(e.startsWith(".")||e.endsWith(".")){return true}const t=/^[a-zA-Z0-9.-]+$/;if(!t.test(e)){return true}const i=e.lastIndexOf(".");if(i!==-1){const t=e.substring(i+1);if(t.length<2){return true}}return false}function w(e,t){if(!e||e.includes(".")){return null}for(const i of l){const r=g(i);const o=d(e);const n=d(r);if(o.startsWith(n)){const e=o.substring(n.length);if(t(e)){return`${r}.${e}`}}}for(const t of l){const i=g(t);const{tld:r}=b(t);const o=`${i}${r}`;if(d(e)===d(o)){return t}}return null}function I(e){if(!e||!e.includes(".")){return null}const t=e.split(".");const i=t[0];const r=t.slice(1);for(const e of l){const t=g(e);const{tld:o}=b(e);const n=`${t}${o}`;if(d(i)===d(n)){const e=[t,o,...r];return e.join(".")}}return null}function z(e){if(!e||e.trim()===""){return true}const t=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return t.test(e)}function S(e){if(!e||!e.includes("@")){return[]}const[t,i]=e.split("@");if(!t){return[]}if(i&&i.includes(".")&&!i.endsWith(".")){return[]}const r=l.filter((e=>{if(!i||i.trim()===""){return true}return e.startsWith(i.toLowerCase())}));return r.map((e=>`${t}@${e}`))}function _(e,t){const i=t.split(".");const r=i[0];const o=l.some((e=>{const{name:t}=b(e);return d(t)===d(r)}));let n=[...i];let s=false;if(!o){const e=y(t);if(e){const{name:t}=b(e);n[0]=t;s=true}}for(let e=1;e<n.length;e++){const t=n[e];if(!v(t)){const i=x(t);if(i){n[e]=i;s=true}}}return s?f(e,n.join(".")):null}function $(e){if(!e||!e.includes("@")){return null}const[t,i]=e.split("@");if(!t||!i){return null}if(k(i)){return null}if(p(i)){return null}if(!i.includes(".")){const e=w(i,v);return e?f(t,e):null}const r=I(i);if(r){return f(t,r)}return _(t,i)}const E=".card-container{display:flex;flex-direction:column;gap:16px;border-radius:8px;padding:16px;background-color:var(--rebill-color-background)}.card-labels{display:flex;flex-direction:column;gap:8px}.card-label{display:flex;flex-direction:row;justify-content:flex-start;gap:16px}";const D=class{constructor(t){e(this,t)}cardTitle;cardLabels;render(){return t("div",{key:"47bc2a22607b6b62f97239931bed6857d31af145",class:"card-container"},t("div",{key:"7c9322357b1d70694b699b88aa8fd62e8fa33732",class:"card-title"},t("rebill-typography",{key:"ef7d8f28ccf0e5019f12d5a16f23d2318352d6b1",variant:"subtitle-bold"},this.cardTitle)),t("div",{key:"77b9b9a8e5a0f8ca2d7599a3d1a37adc6ed006fb",class:"card-labels"},this.cardLabels.map((e=>t("div",{class:"card-label"},t("rebill-typography",{variant:"body2",color:o.TEXT_SECONDARY},e.label),t("rebill-typography",{variant:"body2",color:o.TEXT_PRIMARY},e.value))))))}};D.style=E;const C=".input-container{display:flex;flex-direction:column}.input-label{font-size:0.875rem;color:var(--rebill-color-text-primary);font-weight:500;margin-bottom:0.375rem}.input-label.disabled{cursor:not-allowed}.input-element{border-radius:var(--input-group-inner-border-radius, 8px);border:1.5px solid var(--rebill-color-border);padding:10px 14px;font-size:0.875rem;color:var(--rebill-color-text-primary);outline:none;transition:border-color 0.2s;background:var(--rebill-color-background);height:38.33px;box-sizing:border-box}.input-element.input-error{border-color:var(--rebill-color-error)}.input-element:disabled{background-color:var(--rebill-color-background);border-color:var(--rebill-color-disabled);color:var(--rebill-color-text-secondary);cursor:not-allowed;opacity:0.7}select.input-element{padding:10px 30px 10px 14px;appearance:none;cursor:pointer}select.input-element:disabled{cursor:not-allowed}.input-element:focus{border-color:var(--rebill-color-primary)}.input-element:disabled:focus{border-color:var(--rebill-color-disabled)}.input-element::placeholder{color:var(--rebill-color-text-secondary-light);font-size:0.875rem;opacity:1}.select-wrapper.disabled .select-icon{color:var(--rebill-color-disabled)}.error-message{color:var(--rebill-color-error);font-size:0.75rem;margin-top:0.375rem}@media screen and (max-width: 768px){.input-element{font-size:1rem}.input-element::placeholder{font-size:1rem}}.input-wrapper{position:relative;display:flex;align-items:center}.input-element{width:100%;box-sizing:border-box}.icon-left,.icon-right{position:absolute;display:flex;align-items:center;justify-content:center;top:50%;transform:translateY(-50%)}.icon-left{left:0.75rem;color:var(--rebill-color-text-secondary-light)}.icon-right{right:0.75rem;cursor:pointer;color:var(--rebill-color-text-secondary-light)}.input-element.input-error:focus{flex-direction:column;box-shadow:0 0 0 2px var(--rebill-color-error-light)}.input-wrapper.has-invalid-format .input-element{border-color:var(--rebill-color-error)}.input-wrapper.has-invalid-format .input-element:focus{box-shadow:0 0 0 2px var(--rebill-color-error-light)}.floating-label{position:relative}.floating-label .input-text__input-label{position:absolute;top:50%;left:0.75rem;transform:translateY(-50%);color:var(--rebill-color-text-secondary-light);transition:all 0.1s ease-in-out;pointer-events:none}.floating-label .input-element::placeholder{color:transparent}.floating-label .input-element:focus~.input-text__input-label,.floating-label .input-element:not(:placeholder-shown)~.input-text__input-label{top:0;font-size:0.62rem;color:var(--rebill-color-text-secondary);background-color:var(--rebill-color-background);padding:0 4px;left:0.75rem}.floating-label.has-left-icon .input-text__input-label{left:2.5rem}.input-element:disabled{color:var(--rebill-color-neutrals-500)}.input-wrapper:has(.input-element:disabled) .icon-left,.input-wrapper:has(.input-element:disabled) .icon-right{color:var(--rebill-color-text-secondary-light) !important}.email-suggestions-dropdown{position:absolute;top:100%;left:0;right:0;z-index:1000;background-color:var(--rebill-color-background);border:1px solid var(--rebill-color-border);border-radius:0.375rem;box-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -1px rgba(0, 0, 0, 0.06);margin-top:0.25rem;max-height:200px;overflow-y:auto;animation:slideDown 0.15s ease-out;box-sizing:border-box;width:100%}.email-suggestions-header{padding:0.75rem;font-size:0.875rem;font-weight:400;color:var(--rebill-color-primary);border-bottom:1px solid var(--rebill-color-border);background-color:var(--rebill-color-background)}.email-suggestion-item{padding:0.75rem;font-size:0.875rem;color:var(--rebill-color-text-primary);cursor:pointer;transition:background-color 0.15s ease}.email-suggestion-item:last-child{border-bottom:none}.email-suggestion-item:hover,.email-suggestion-item.highlighted{background-color:var(--rebill-color-background-right)}@keyframes slideDown{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.email-suggestions-dropdown::-webkit-scrollbar{width:6px}.email-suggestions-dropdown::-webkit-scrollbar-track{background:transparent}.email-suggestions-dropdown::-webkit-scrollbar-thumb{background-color:var(--rebill-color-border);border-radius:3px}.email-suggestions-dropdown::-webkit-scrollbar-thumb:hover{background-color:var(--rebill-color-text-secondary)}.email-correction-suggestion{display:flex;align-items:center;gap:8px;font-size:0.75rem;margin-top:0.375rem;line-height:1.4}.email-correction-icon{flex-shrink:0}.email-correction-text{color:var(--rebill-color-text-primary);flex:1}.email-correction-link{color:var(--rebill-color-link);text-decoration:underline;cursor:pointer;font-weight:500;transition:opacity 0.2s ease}.email-correction-link:hover{opacity:0.8}";const T=class{constructor(t){e(this,t);this.input=i(this,"input");this.blur=i(this,"blur")}get el(){return r(this)}inputElement;suggestionsDropdownRef;isMouseOverSuggestions=false;blurTimeout;INPUT_PADDING_WITH_ICON="2.5rem";INPUT_PADDING_DEFAULT="0.75rem";label="";placeholder="";value="";error="";id="email";disabled=false;leftIcon;clearable=false;variant="default";input;blur;emailSuggestions=[];highlightedSuggestionIndex=-1;emailCorrectionSuggestion=null;isValidFormat=true;hasBlurred=false;handleFormChange(e){const t=e.detail;if(t&&this.id in t){this.value=t[this.id]}}handleDocumentClick(e){if(this.suggestionsDropdownRef&&!this.suggestionsDropdownRef.contains(e.target)&&!this.inputElement?.contains(e.target)&&!this.isMouseOverSuggestions){this.emailSuggestions=[];this.highlightedSuggestionIndex=-1}}checkForTypo(e){this.emailCorrectionSuggestion=$(e)}normalizeEmailInput(e){return e.toLowerCase()}updateEmailState(e){this.isValidFormat=z(e);this.emailSuggestions=S(e);this.highlightedSuggestionIndex=-1;this.emailCorrectionSuggestion=null;this.value=e}emitInputEvent(e){this.input.emit({id:this.id,value:e})}onInput=e=>{if(this.disabled)return;const t=e.target;const i=this.normalizeEmailInput(t.value);t.value=i;this.updateEmailState(i);this.emitInputEvent(i)};resetValidationState(){this.isValidFormat=true;this.emailSuggestions=[];this.highlightedSuggestionIndex=-1;this.emailCorrectionSuggestion=null;this.hasBlurred=false}onClear=()=>{if(this.disabled)return;this.value="";this.resetValidationState();this.input.emit({id:this.id,value:this.value})};trimAndUpdateValue(){const e=this.value.trim();if(e!==this.value){this.value=e;this.input.emit({id:this.id,value:this.value})}}clearSuggestions(){this.emailSuggestions=[];this.highlightedSuggestionIndex=-1}onBlur=()=>{if(this.blurTimeout){clearTimeout(this.blurTimeout)}this.blurTimeout=window.setTimeout((()=>{if(!this.isMouseOverSuggestions){this.hasBlurred=true;this.trimAndUpdateValue();this.isValidFormat=z(this.value);this.clearSuggestions();this.checkForTypo(this.value);this.blur.emit({id:this.id,value:this.value})}}),u)};onFocus=()=>{if(this.value){this.emailSuggestions=S(this.value)}};moveHighlightDown(){this.highlightedSuggestionIndex=Math.min(this.highlightedSuggestionIndex+1,this.emailSuggestions.length-1)}moveHighlightUp(){this.highlightedSuggestionIndex=Math.max(this.highlightedSuggestionIndex-1,-1)}selectHighlightedSuggestion(){if(this.highlightedSuggestionIndex>=0){this.selectSuggestion(this.emailSuggestions[this.highlightedSuggestionIndex])}}closeSuggestions(){this.emailSuggestions=[];this.highlightedSuggestionIndex=-1}onKeyDown=e=>{if(this.emailSuggestions.length===0){return}const t={ArrowDown:()=>this.moveHighlightDown(),ArrowUp:()=>this.moveHighlightUp(),Escape:()=>this.closeSuggestions()};const i=t[e.key];if(i){e.preventDefault();i()}else if(e.key==="Enter"&&this.highlightedSuggestionIndex>=0){e.preventDefault();this.selectHighlightedSuggestion()}};selectSuggestion=e=>{this.value=e;this.emailSuggestions=[];this.highlightedSuggestionIndex=-1;this.emailCorrectionSuggestion=null;if(this.inputElement){this.inputElement.value=e}this.input.emit({id:this.id,value:this.value});this.inputElement?.focus()};applyCorrection=()=>{if(this.emailCorrectionSuggestion){this.selectSuggestion(this.emailCorrectionSuggestion)}};handleSuggestionMouseEnter=e=>{this.highlightedSuggestionIndex=e};handleSuggestionsMouseEnter=()=>{this.isMouseOverSuggestions=true};handleSuggestionsMouseLeave=()=>{this.isMouseOverSuggestions=false};async getInputElement(){return this.inputElement}disconnectedCallback(){if(this.blurTimeout){clearTimeout(this.blurTimeout)}}getInputPaddingStyles(){return{paddingLeft:this.leftIcon?this.INPUT_PADDING_WITH_ICON:this.INPUT_PADDING_DEFAULT,paddingRight:this.clearable?this.INPUT_PADDING_WITH_ICON:this.INPUT_PADDING_DEFAULT}}shouldShowInvalidFormat(){return!this.isValidFormat&&this.value&&!this.error&&this.hasBlurred}shouldShowInvalidFormatError(){return!this.isValidFormat&&this.value&&!this.error&&this.hasBlurred}renderEmailCorrectionSuggestion(){if(!this.emailCorrectionSuggestion)return null;const e=n.translate("userInformation.emailCorrectionSuggestion",{email:this.emailCorrectionSuggestion});const i=e.split(this.emailCorrectionSuggestion);return t("div",{class:"email-correction-suggestion",role:"status","aria-live":"polite"},t("rebill-icon",{name:"circle-info-outline",size:"16px",color:o.NEUTRALS_500}),t("span",{class:"email-correction-text"},i.map(((e,r)=>t("span",{key:r},e,r<i.length-1&&t("span",{class:"email-correction-link",onClick:this.applyCorrection},this.emailCorrectionSuggestion))))))}render(){const e=this.variant==="floating";const i=this.emailSuggestions.length>0;const r={"input-element":true,"input-error":!!this.error};const o={"input-wrapper":true,"floating-label":e,"has-left-icon":!!this.leftIcon,"has-email-suggestions":i,"has-invalid-format":this.shouldShowInvalidFormat()};return t("div",{key:"5e40ed1a07b4d6c4b8aa7d4296613d4972a9f53c",class:"input-container"},!e&&this.label&&t("label",{key:"c9495052e17b8a3809b27eca34d0d13b6e2d4659",class:`input-label ${this.disabled?"disabled":""}`},this.label),t("div",{key:"27464568b4aa841a1563bc251ec278316e5b98f2",class:o},this.leftIcon&&t("div",{key:"0087a2c77deb8a5b5e47fb89ed07130a98775056",class:"icon-left"},t("rebill-icon",{key:"53422720b4914238bdf07ef6e2366c6b687fb18f",name:this.leftIcon})),t("input",{key:"ec35a711e007049c0d83efc4f81a83bc593f7808",ref:e=>this.inputElement=e,type:"email",class:r,placeholder:e?this.label:this.placeholder,value:this.value,onInput:this.onInput,onBlur:this.onBlur,onFocus:this.onFocus,onKeyDown:this.onKeyDown,disabled:this.disabled,autocomplete:"email",autocapitalize:"none",autocorrect:"off",spellcheck:"false","aria-autocomplete":"list","aria-expanded":i?"true":"false","aria-haspopup":"listbox","aria-owns":i?"email-suggestions":undefined,"aria-invalid":!this.isValidFormat&&this.value&&this.hasBlurred?"true":"false","aria-describedby":this.error||!this.isValidFormat&&this.value&&this.hasBlurred?`${this.id}-error`:undefined,style:this.getInputPaddingStyles()}),e&&t("label",{key:"d6c0532aaa21de0fa4f02670b1e13f848ea10663",class:"input-text__input-label input-label"},this.label),this.clearable&&this.value&&t("div",{key:"9d005dae6956ccc5210edec04d591e05c8e7badd",class:"icon-right",onClick:this.onClear},t("rebill-icon",{key:"ab11a4670e21d4da92aadaff27d63bf4f4b33a71",name:"x"})),i&&t("div",{key:"ed65d951fc245455cf6b2cd6b3e31f20ed7af55b",id:"email-suggestions",ref:e=>this.suggestionsDropdownRef=e,class:"email-suggestions-dropdown",role:"listbox","aria-label":n.translate("userInformation.suggestionsLabel","Email suggestions"),onMouseEnter:this.handleSuggestionsMouseEnter,onMouseLeave:this.handleSuggestionsMouseLeave},t("div",{key:"2229c646e008d7d06e8367557f51242353eb1262",class:"email-suggestions-header"},n.translate("userInformation.suggestionsHeader","Suggestion")),this.emailSuggestions.map(((e,i)=>t("div",{key:e,role:"option","aria-selected":this.highlightedSuggestionIndex===i?"true":"false",class:`email-suggestion-item ${this.highlightedSuggestionIndex===i?"highlighted":""}`,onClick:()=>this.selectSuggestion(e),onMouseEnter:()=>this.handleSuggestionMouseEnter(i)},e))))),this.error&&t("span",{key:"e52aa1a0bb4a601956736ae5560d2e1185504587",id:`${this.id}-error`,class:"error-message",role:"alert"},this.error),this.shouldShowInvalidFormatError()&&t("span",{key:"2335067645f44850b24459788a818062a1eb368a",id:`${this.id}-error`,class:"error-message",role:"alert"},n.translate("paymentErrors.emailInvalid","The email address is not valid")),this.renderEmailCorrectionSuggestion())}};T.style=C;export{D as rebill_card,T as rebill_input_email};
2
- //# sourceMappingURL=p-8a2f420d.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["registerInstance","h","createEvent","getElement","COLORS_ENUM","I18nService","COMMON_EMAIL_DOMAINS","VALID_TLDS","MAX_LEVENSHTEIN_DISTANCE_DOMAIN","MAX_LEVENSHTEIN_DISTANCE_TLD","BLUR_DELAY_MS","normalizeDomain","domain","toLowerCase","trim","normalizeTLD","tld","replace","isExactCommonDomain","some","commonDomain","buildEmailCorrection","localPart","getDomainParts","parts","split","name","levenshteinDistance","str1","str2","matrix","i","length","j","charAt","Math","min","extractDomainName","isValidTLD","includes","findSimilarTLD","inputTLD","normalized","bestMatch","minDistance","Infinity","validTLD","distance","findSimilarDomain","inputDomain","normalizedInput","domainName","commonDomainName","hasEmailFormatError","domainPart","startsWith","endsWith","validDomainPattern","test","lastDotIndex","lastIndexOf","substring","detectMissingDot","isValidTLDFn","normalizedDomain","normalizedCommonName","remaining","commonTLD","expectedWithoutDot","detectMissingDotInMultiPartDomain","domainParts","firstPart","restParts","slice","correctedParts","join","validateEmailFormat","email","emailRegex","getEmailSuggestions","emailValue","filteredDomains","filter","map","correctDomainTypos","isDomainNameValid","correctedDomainParts","hasCorrection","similarDomain","part","similarTLD","suggestEmailCorrection","correctedDomain","missingDotCorrection","cardCss","Card","constructor","hostRef","this","cardTitle","cardLabels","render","key","class","variant","label","color","TEXT_SECONDARY","TEXT_PRIMARY","value","style","inputEmailCss","InputEmail","input","blur","el","inputElement","suggestionsDropdownRef","isMouseOverSuggestions","blurTimeout","INPUT_PADDING_WITH_ICON","INPUT_PADDING_DEFAULT","placeholder","error","id","disabled","leftIcon","clearable","emailSuggestions","highlightedSuggestionIndex","emailCorrectionSuggestion","isValidFormat","hasBlurred","handleFormChange","event","formData","detail","handleDocumentClick","contains","target","checkForTypo","normalizeEmailInput","updateEmailState","inputValue","emitInputEvent","emit","onInput","resetValidationState","onClear","trimAndUpdateValue","trimmedValue","clearSuggestions","onBlur","clearTimeout","window","setTimeout","onFocus","moveHighlightDown","moveHighlightUp","max","selectHighlightedSuggestion","selectSuggestion","closeSuggestions","onKeyDown","keyHandlers","ArrowDown","ArrowUp","Escape","handler","preventDefault","suggestion","focus","applyCorrection","handleSuggestionMouseEnter","index","handleSuggestionsMouseEnter","handleSuggestionsMouseLeave","getInputElement","disconnectedCallback","getInputPaddingStyles","paddingLeft","paddingRight","shouldShowInvalidFormat","shouldShowInvalidFormatError","renderEmailCorrectionSuggestion","translatedText","translate","role","size","NEUTRALS_500","onClick","isFloating","showEmailSuggestions","inputClasses","wrapperClasses","ref","type","autocomplete","autocapitalize","autocorrect","spellcheck","undefined","onMouseEnter","onMouseLeave"],"sources":["0"],"mappings":"YAAcA,OAAkBC,OAAQC,OAAkBC,MAAkB,8BAC9DC,MAAmB,8BACnBC,MAAmB,kBAEjC,MAAMC,EAAuB,CACzB,YACA,cACA,cACA,YACA,aACA,UACA,YAEJ,MAAMC,EAAa,CACf,MACA,MACA,MACA,OACA,MACA,SACA,OACA,QACA,OACA,MACA,MACA,OACA,QACA,QACA,OACA,MACA,MACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ,MAAMC,EAAkC,EACxC,MAAMC,EAA+B,EACrC,MAAMC,EAAgB,IAKtB,SAASC,EAAgBC,GACrB,OAAOA,GAAQC,cAAcC,QAAU,EAC3C,CACA,SAASC,EAAaC,GAClB,IAAKA,EACD,MAAO,GACX,OAAOA,EAAIH,cAAcI,QAAQ,MAAO,GAC5C,CACA,SAASC,EAAoBN,GACzB,OAAON,EAAqBa,MAAKC,GAAgBT,EAAgBS,KAAkBT,EAAgBC,IACvG,CACA,SAASS,EAAqBC,EAAWV,GACrC,MAAO,GAAGU,KAAaV,GAC3B,CACA,SAASW,EAAeH,GACpB,MAAMI,EAAQJ,EAAaK,MAAM,KACjC,MAAO,CACHC,KAAMF,EAAM,GACZR,IAAKQ,EAAM,IAAM,GAEzB,CACA,SAASG,EAAoBC,EAAMC,GAC/B,MAAMC,EAAS,GACf,IAAK,IAAIC,EAAI,EAAGA,GAAKF,EAAKG,OAAQD,IAAK,CACnCD,EAAOC,GAAK,CAACA,EACjB,CACA,IAAK,IAAIE,EAAI,EAAGA,GAAKL,EAAKI,OA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","ignoreList":[]}