intl-tel-input 29.1.1 → 29.1.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.
- package/dist/js/data.js +1 -1
- package/dist/js/data.min.js +1 -1
- package/dist/js/intlTelInput.js +48 -36
- package/dist/js/intlTelInput.min.js +2 -2
- package/dist/js/intlTelInput.mjs +47 -35
- package/dist/js/intlTelInputWithUtils.js +68 -104
- package/dist/js/intlTelInputWithUtils.min.js +2 -2
- package/dist/js/intlTelInputWithUtils.mjs +67 -103
- package/dist/js/utils.js +14 -14
- package/package.json +1 -1
package/dist/js/intlTelInput.mjs
CHANGED
|
@@ -2455,7 +2455,7 @@ var Numerals = class _Numerals {
|
|
|
2455
2455
|
|
|
2456
2456
|
// packages/core/src/js/core/ui.ts
|
|
2457
2457
|
var supportsCssAnchor = typeof CSS !== "undefined" && typeof CSS.supports === "function" && CSS.supports("anchor-name: --x");
|
|
2458
|
-
var UI = class
|
|
2458
|
+
var UI = class {
|
|
2459
2459
|
// private
|
|
2460
2460
|
#options;
|
|
2461
2461
|
#id;
|
|
@@ -2465,6 +2465,7 @@ var UI = class _UI {
|
|
|
2465
2465
|
#searchTokens;
|
|
2466
2466
|
#searchDebounceTimer = null;
|
|
2467
2467
|
#inlineDropdownHeight;
|
|
2468
|
+
#cssAnchorPositioningDone = false;
|
|
2468
2469
|
#countryContainerEl;
|
|
2469
2470
|
#selectedCountryEl;
|
|
2470
2471
|
#selectedFlagEl;
|
|
@@ -2657,16 +2658,6 @@ var UI = class _UI {
|
|
|
2657
2658
|
if (countrySearch) {
|
|
2658
2659
|
this.#updateSearchResultsA11yText();
|
|
2659
2660
|
}
|
|
2660
|
-
if (!isFullscreen) {
|
|
2661
|
-
const { height, width } = this.#getHiddenInlineDropdownSize();
|
|
2662
|
-
this.#inlineDropdownHeight = height;
|
|
2663
|
-
if (countrySearch) {
|
|
2664
|
-
this.#countrySelectorEl.style.height = `${height}px`;
|
|
2665
|
-
if (!matchDropdownWidth && width > 0) {
|
|
2666
|
-
this.#countrySelectorEl.style.width = `${width}px`;
|
|
2667
|
-
}
|
|
2668
|
-
}
|
|
2669
|
-
}
|
|
2670
2661
|
if (detachedParent) {
|
|
2671
2662
|
const wrapperClasses = buildClassNames({
|
|
2672
2663
|
iti: true,
|
|
@@ -2677,9 +2668,6 @@ var UI = class _UI {
|
|
|
2677
2668
|
});
|
|
2678
2669
|
this.#detachedCountrySelectorEl = createEl("div", { class: wrapperClasses });
|
|
2679
2670
|
this.#detachedCountrySelectorEl.appendChild(this.#countrySelectorEl);
|
|
2680
|
-
if (!isFullscreen) {
|
|
2681
|
-
this.#setupCssAnchorPositioning();
|
|
2682
|
-
}
|
|
2683
2671
|
} else {
|
|
2684
2672
|
this.#countryContainerEl.appendChild(this.#countrySelectorEl);
|
|
2685
2673
|
}
|
|
@@ -2852,24 +2840,16 @@ var UI = class _UI {
|
|
|
2852
2840
|
});
|
|
2853
2841
|
this.#resizeObserver.observe(this.#selectedCountryEl);
|
|
2854
2842
|
}
|
|
2855
|
-
static #getBody() {
|
|
2856
|
-
let body;
|
|
2857
|
-
try {
|
|
2858
|
-
body = window.top.document.body;
|
|
2859
|
-
} catch (e) {
|
|
2860
|
-
body = document.body;
|
|
2861
|
-
}
|
|
2862
|
-
return body;
|
|
2863
|
-
}
|
|
2864
2843
|
//* When input is in a hidden container during init, we cannot calculate the selected country width.
|
|
2865
2844
|
//* Fix: clone the markup, make it invisible, add it to the end of the DOM, and then measure it's width.
|
|
2866
2845
|
//* To get the right styling to apply, all we need is a shallow clone of the container,
|
|
2867
2846
|
//* and then to inject a deep clone of the selectedCountryEl element.
|
|
2847
|
+
//* Measures in the LOCAL document.body: appending to the local body escapes any hidden ancestor container, and the input's own frame is where intl-tel-input's styles live (so the clone lays out correctly). We deliberately do NOT escape to window.top: that only measures correctly in the rare case where the top frame also loads the library's styles, and measures wrong when it doesn't (e.g. a same-origin iframe whose outer frame lacks the styles — cf. #2178). If the local frame itself isn't laid out yet (e.g. an iframe hidden during init), this returns 0 and the caller falls back to a sane constant; the ResizeObserver in #observeSelectedCountryResize then corrects the padding once the input becomes visible.
|
|
2868
2848
|
#getHiddenSelectedCountryWidth() {
|
|
2869
2849
|
if (!this.telInputEl.parentNode) {
|
|
2870
2850
|
return 0;
|
|
2871
2851
|
}
|
|
2872
|
-
const body =
|
|
2852
|
+
const body = document.body;
|
|
2873
2853
|
const containerClone = this.telInputEl.parentNode.cloneNode(
|
|
2874
2854
|
false
|
|
2875
2855
|
);
|
|
@@ -2885,21 +2865,43 @@ var UI = class _UI {
|
|
|
2885
2865
|
body.removeChild(containerClone);
|
|
2886
2866
|
return width;
|
|
2887
2867
|
}
|
|
2888
|
-
|
|
2868
|
+
//* Measure the inline dropdown size once, lazily, on first open — see #getHiddenInlineDropdownSize for why measuring forces a reflow. Memoised via #inlineDropdownHeight so subsequent opens are free.
|
|
2869
|
+
//* Captured for two uses: (1) on open, decide whether to position the dropdown above or below the input; (2) when countrySearch is enabled, pin the dropdown height (and, when matchDropdownWidth is disabled, width) so it doesn't jump around as the country list is filtered.
|
|
2870
|
+
#ensureInlineDropdownSizeMeasured() {
|
|
2871
|
+
if (this.#inlineDropdownHeight !== void 0) {
|
|
2872
|
+
return;
|
|
2873
|
+
}
|
|
2874
|
+
const { countrySearch, matchDropdownWidth } = this.#options;
|
|
2875
|
+
const { height, width } = this.#getHiddenInlineDropdownSize();
|
|
2876
|
+
this.#inlineDropdownHeight = height;
|
|
2877
|
+
if (countrySearch) {
|
|
2878
|
+
this.#countrySelectorEl.style.height = `${height}px`;
|
|
2879
|
+
if (!matchDropdownWidth && width > 0) {
|
|
2880
|
+
this.#countrySelectorEl.style.width = `${width}px`;
|
|
2881
|
+
}
|
|
2882
|
+
}
|
|
2883
|
+
}
|
|
2884
|
+
// Measure the dropdown by moving it into a temporary hidden container on the body (it needs the right ancestor classes to lay out correctly). Restores it to its original position afterwards — a no-op during init (when it is still detached) but required when called lazily on first open (when it is already inserted).
|
|
2885
|
+
//* Deliberately measures in the LOCAL document.body (not window.top): this runs on first open, when the input's own frame is visibly rendered and styled. Escaping to the top frame breaks when the input is inside a same-origin iframe whose outer frame lacks intl-tel-input's styles (e.g. Storybook), as the dropdown would then be measured unstyled and come out far too tall (issue #2178).
|
|
2889
2886
|
#getHiddenInlineDropdownSize() {
|
|
2890
|
-
const body =
|
|
2891
|
-
this.#countrySelectorEl
|
|
2887
|
+
const body = document.body;
|
|
2888
|
+
const selectorEl = this.#countrySelectorEl;
|
|
2889
|
+
const originalParent = selectorEl.parentNode;
|
|
2890
|
+
const originalNextSibling = selectorEl.nextSibling;
|
|
2891
|
+
selectorEl.classList.remove(CLASSES.HIDE);
|
|
2892
2892
|
const tempContainer = createEl("div", {
|
|
2893
2893
|
class: "iti iti--inline-country-selector"
|
|
2894
2894
|
});
|
|
2895
|
-
tempContainer.appendChild(
|
|
2895
|
+
tempContainer.appendChild(selectorEl);
|
|
2896
2896
|
tempContainer.style.visibility = "hidden";
|
|
2897
2897
|
body.appendChild(tempContainer);
|
|
2898
|
-
const height =
|
|
2899
|
-
const width =
|
|
2898
|
+
const height = selectorEl.offsetHeight;
|
|
2899
|
+
const width = selectorEl.offsetWidth;
|
|
2900
2900
|
body.removeChild(tempContainer);
|
|
2901
|
-
|
|
2902
|
-
|
|
2901
|
+
selectorEl.classList.add(CLASSES.HIDE);
|
|
2902
|
+
if (originalParent) {
|
|
2903
|
+
originalParent.insertBefore(selectorEl, originalNextSibling);
|
|
2904
|
+
}
|
|
2903
2905
|
return {
|
|
2904
2906
|
height: height > 0 ? height : LAYOUT.FALLBACK_DROPDOWN_HEIGHT,
|
|
2905
2907
|
width
|
|
@@ -3063,6 +3065,9 @@ var UI = class _UI {
|
|
|
3063
3065
|
openCountrySelector(onSelect, onClose) {
|
|
3064
3066
|
const { countrySearch, dropdownAlwaysOpen } = this.#options;
|
|
3065
3067
|
this.#countrySelectorAbortController = new AbortController();
|
|
3068
|
+
if (this.#options.countrySelectorMode !== COUNTRY_SELECTOR_MODE.FULLSCREEN) {
|
|
3069
|
+
this.#ensureInlineDropdownSizeMeasured();
|
|
3070
|
+
}
|
|
3066
3071
|
this.ensureDropdownWidthSet();
|
|
3067
3072
|
if (this.#detachedCountrySelectorEl) {
|
|
3068
3073
|
this.#injectAndPositionDetachedCountrySelector();
|
|
@@ -3335,7 +3340,10 @@ var UI = class _UI {
|
|
|
3335
3340
|
this.#detachedCountrySelectorEl.style.paddingLeft = `${inputPos.left}px`;
|
|
3336
3341
|
this.#detachedCountrySelectorEl.style.paddingRight = `${window.innerWidth - inputPos.right}px`;
|
|
3337
3342
|
}
|
|
3338
|
-
} else
|
|
3343
|
+
} else {
|
|
3344
|
+
this.#setupCssAnchorPositioning();
|
|
3345
|
+
}
|
|
3346
|
+
if (!isFullscreen && !supportsCssAnchor) {
|
|
3339
3347
|
const inputPos = this.telInputEl.getBoundingClientRect();
|
|
3340
3348
|
this.#detachedCountrySelectorEl.style.left = `${inputPos.left}px`;
|
|
3341
3349
|
if (this.#shouldPositionDropdownBelowInput()) {
|
|
@@ -3348,13 +3356,17 @@ var UI = class _UI {
|
|
|
3348
3356
|
detachedParent.appendChild(this.#detachedCountrySelectorEl);
|
|
3349
3357
|
}
|
|
3350
3358
|
//* Wire up CSS Anchor Positioning between the input and the detached country selector using a
|
|
3351
|
-
//* unique anchor name per instance. Called
|
|
3359
|
+
//* unique anchor name per instance. Called lazily on first open (memoised) — the matching styles in
|
|
3352
3360
|
//* intlTelInput.css only take effect in browsers that support anchor(); elsewhere these
|
|
3353
3361
|
//* properties are inert. We append our name to any existing anchor-name (read via
|
|
3354
3362
|
//* getComputedStyle so we pick up CSS-defined values), so consumer-set anchors on the input
|
|
3355
3363
|
//* are preserved. Caveat: this snapshots the consumer's value once — if they later change
|
|
3356
3364
|
//* anchor-name via CSS (e.g. a class swap), our inline write will shadow the change.
|
|
3357
3365
|
#setupCssAnchorPositioning() {
|
|
3366
|
+
if (this.#cssAnchorPositioningDone) {
|
|
3367
|
+
return;
|
|
3368
|
+
}
|
|
3369
|
+
this.#cssAnchorPositioningDone = true;
|
|
3358
3370
|
const anchorName = `--iti-anchor-${this.#id}`;
|
|
3359
3371
|
const existing = getComputedStyle(this.telInputEl).anchorName;
|
|
3360
3372
|
this.telInputEl.style.anchorName = existing && existing !== "none" ? `${existing}, ${anchorName}` : anchorName;
|
|
@@ -4829,7 +4841,7 @@ var intlTelInput = Object.assign(
|
|
|
4829
4841
|
attachUtils,
|
|
4830
4842
|
startedLoadingUtils: false,
|
|
4831
4843
|
startedLoadingAutoCountry: false,
|
|
4832
|
-
version: "29.1.
|
|
4844
|
+
version: "29.1.2",
|
|
4833
4845
|
NUMBER_FORMAT,
|
|
4834
4846
|
NUMBER_TYPE,
|
|
4835
4847
|
VALIDATION_ERROR,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* International Telephone Input v29.1.
|
|
2
|
+
* International Telephone Input v29.1.2
|
|
3
3
|
* git+https://github.com/jackocnr/intl-tel-input.git
|
|
4
4
|
* Licensed under the MIT license
|
|
5
5
|
*/
|
|
@@ -2486,7 +2486,7 @@ var _factory = (() => {
|
|
|
2486
2486
|
|
|
2487
2487
|
// packages/core/src/js/core/ui.ts
|
|
2488
2488
|
var supportsCssAnchor = typeof CSS !== "undefined" && typeof CSS.supports === "function" && CSS.supports("anchor-name: --x");
|
|
2489
|
-
var UI = class
|
|
2489
|
+
var UI = class {
|
|
2490
2490
|
// private
|
|
2491
2491
|
#options;
|
|
2492
2492
|
#id;
|
|
@@ -2496,6 +2496,7 @@ var _factory = (() => {
|
|
|
2496
2496
|
#searchTokens;
|
|
2497
2497
|
#searchDebounceTimer = null;
|
|
2498
2498
|
#inlineDropdownHeight;
|
|
2499
|
+
#cssAnchorPositioningDone = false;
|
|
2499
2500
|
#countryContainerEl;
|
|
2500
2501
|
#selectedCountryEl;
|
|
2501
2502
|
#selectedFlagEl;
|
|
@@ -2688,16 +2689,6 @@ var _factory = (() => {
|
|
|
2688
2689
|
if (countrySearch) {
|
|
2689
2690
|
this.#updateSearchResultsA11yText();
|
|
2690
2691
|
}
|
|
2691
|
-
if (!isFullscreen) {
|
|
2692
|
-
const { height, width } = this.#getHiddenInlineDropdownSize();
|
|
2693
|
-
this.#inlineDropdownHeight = height;
|
|
2694
|
-
if (countrySearch) {
|
|
2695
|
-
this.#countrySelectorEl.style.height = `${height}px`;
|
|
2696
|
-
if (!matchDropdownWidth && width > 0) {
|
|
2697
|
-
this.#countrySelectorEl.style.width = `${width}px`;
|
|
2698
|
-
}
|
|
2699
|
-
}
|
|
2700
|
-
}
|
|
2701
2692
|
if (detachedParent) {
|
|
2702
2693
|
const wrapperClasses = buildClassNames({
|
|
2703
2694
|
iti: true,
|
|
@@ -2708,9 +2699,6 @@ var _factory = (() => {
|
|
|
2708
2699
|
});
|
|
2709
2700
|
this.#detachedCountrySelectorEl = createEl("div", { class: wrapperClasses });
|
|
2710
2701
|
this.#detachedCountrySelectorEl.appendChild(this.#countrySelectorEl);
|
|
2711
|
-
if (!isFullscreen) {
|
|
2712
|
-
this.#setupCssAnchorPositioning();
|
|
2713
|
-
}
|
|
2714
2702
|
} else {
|
|
2715
2703
|
this.#countryContainerEl.appendChild(this.#countrySelectorEl);
|
|
2716
2704
|
}
|
|
@@ -2883,24 +2871,16 @@ var _factory = (() => {
|
|
|
2883
2871
|
});
|
|
2884
2872
|
this.#resizeObserver.observe(this.#selectedCountryEl);
|
|
2885
2873
|
}
|
|
2886
|
-
static #getBody() {
|
|
2887
|
-
let body;
|
|
2888
|
-
try {
|
|
2889
|
-
body = window.top.document.body;
|
|
2890
|
-
} catch (e) {
|
|
2891
|
-
body = document.body;
|
|
2892
|
-
}
|
|
2893
|
-
return body;
|
|
2894
|
-
}
|
|
2895
2874
|
//* When input is in a hidden container during init, we cannot calculate the selected country width.
|
|
2896
2875
|
//* Fix: clone the markup, make it invisible, add it to the end of the DOM, and then measure it's width.
|
|
2897
2876
|
//* To get the right styling to apply, all we need is a shallow clone of the container,
|
|
2898
2877
|
//* and then to inject a deep clone of the selectedCountryEl element.
|
|
2878
|
+
//* Measures in the LOCAL document.body: appending to the local body escapes any hidden ancestor container, and the input's own frame is where intl-tel-input's styles live (so the clone lays out correctly). We deliberately do NOT escape to window.top: that only measures correctly in the rare case where the top frame also loads the library's styles, and measures wrong when it doesn't (e.g. a same-origin iframe whose outer frame lacks the styles — cf. #2178). If the local frame itself isn't laid out yet (e.g. an iframe hidden during init), this returns 0 and the caller falls back to a sane constant; the ResizeObserver in #observeSelectedCountryResize then corrects the padding once the input becomes visible.
|
|
2899
2879
|
#getHiddenSelectedCountryWidth() {
|
|
2900
2880
|
if (!this.telInputEl.parentNode) {
|
|
2901
2881
|
return 0;
|
|
2902
2882
|
}
|
|
2903
|
-
const body =
|
|
2883
|
+
const body = document.body;
|
|
2904
2884
|
const containerClone = this.telInputEl.parentNode.cloneNode(
|
|
2905
2885
|
false
|
|
2906
2886
|
);
|
|
@@ -2916,21 +2896,43 @@ var _factory = (() => {
|
|
|
2916
2896
|
body.removeChild(containerClone);
|
|
2917
2897
|
return width;
|
|
2918
2898
|
}
|
|
2919
|
-
|
|
2899
|
+
//* Measure the inline dropdown size once, lazily, on first open — see #getHiddenInlineDropdownSize for why measuring forces a reflow. Memoised via #inlineDropdownHeight so subsequent opens are free.
|
|
2900
|
+
//* Captured for two uses: (1) on open, decide whether to position the dropdown above or below the input; (2) when countrySearch is enabled, pin the dropdown height (and, when matchDropdownWidth is disabled, width) so it doesn't jump around as the country list is filtered.
|
|
2901
|
+
#ensureInlineDropdownSizeMeasured() {
|
|
2902
|
+
if (this.#inlineDropdownHeight !== void 0) {
|
|
2903
|
+
return;
|
|
2904
|
+
}
|
|
2905
|
+
const { countrySearch, matchDropdownWidth } = this.#options;
|
|
2906
|
+
const { height, width } = this.#getHiddenInlineDropdownSize();
|
|
2907
|
+
this.#inlineDropdownHeight = height;
|
|
2908
|
+
if (countrySearch) {
|
|
2909
|
+
this.#countrySelectorEl.style.height = `${height}px`;
|
|
2910
|
+
if (!matchDropdownWidth && width > 0) {
|
|
2911
|
+
this.#countrySelectorEl.style.width = `${width}px`;
|
|
2912
|
+
}
|
|
2913
|
+
}
|
|
2914
|
+
}
|
|
2915
|
+
// Measure the dropdown by moving it into a temporary hidden container on the body (it needs the right ancestor classes to lay out correctly). Restores it to its original position afterwards — a no-op during init (when it is still detached) but required when called lazily on first open (when it is already inserted).
|
|
2916
|
+
//* Deliberately measures in the LOCAL document.body (not window.top): this runs on first open, when the input's own frame is visibly rendered and styled. Escaping to the top frame breaks when the input is inside a same-origin iframe whose outer frame lacks intl-tel-input's styles (e.g. Storybook), as the dropdown would then be measured unstyled and come out far too tall (issue #2178).
|
|
2920
2917
|
#getHiddenInlineDropdownSize() {
|
|
2921
|
-
const body =
|
|
2922
|
-
this.#countrySelectorEl
|
|
2918
|
+
const body = document.body;
|
|
2919
|
+
const selectorEl = this.#countrySelectorEl;
|
|
2920
|
+
const originalParent = selectorEl.parentNode;
|
|
2921
|
+
const originalNextSibling = selectorEl.nextSibling;
|
|
2922
|
+
selectorEl.classList.remove(CLASSES.HIDE);
|
|
2923
2923
|
const tempContainer = createEl("div", {
|
|
2924
2924
|
class: "iti iti--inline-country-selector"
|
|
2925
2925
|
});
|
|
2926
|
-
tempContainer.appendChild(
|
|
2926
|
+
tempContainer.appendChild(selectorEl);
|
|
2927
2927
|
tempContainer.style.visibility = "hidden";
|
|
2928
2928
|
body.appendChild(tempContainer);
|
|
2929
|
-
const height =
|
|
2930
|
-
const width =
|
|
2929
|
+
const height = selectorEl.offsetHeight;
|
|
2930
|
+
const width = selectorEl.offsetWidth;
|
|
2931
2931
|
body.removeChild(tempContainer);
|
|
2932
|
-
|
|
2933
|
-
|
|
2932
|
+
selectorEl.classList.add(CLASSES.HIDE);
|
|
2933
|
+
if (originalParent) {
|
|
2934
|
+
originalParent.insertBefore(selectorEl, originalNextSibling);
|
|
2935
|
+
}
|
|
2934
2936
|
return {
|
|
2935
2937
|
height: height > 0 ? height : LAYOUT.FALLBACK_DROPDOWN_HEIGHT,
|
|
2936
2938
|
width
|
|
@@ -3094,6 +3096,9 @@ var _factory = (() => {
|
|
|
3094
3096
|
openCountrySelector(onSelect, onClose) {
|
|
3095
3097
|
const { countrySearch, dropdownAlwaysOpen } = this.#options;
|
|
3096
3098
|
this.#countrySelectorAbortController = new AbortController();
|
|
3099
|
+
if (this.#options.countrySelectorMode !== COUNTRY_SELECTOR_MODE.FULLSCREEN) {
|
|
3100
|
+
this.#ensureInlineDropdownSizeMeasured();
|
|
3101
|
+
}
|
|
3097
3102
|
this.ensureDropdownWidthSet();
|
|
3098
3103
|
if (this.#detachedCountrySelectorEl) {
|
|
3099
3104
|
this.#injectAndPositionDetachedCountrySelector();
|
|
@@ -3366,7 +3371,10 @@ var _factory = (() => {
|
|
|
3366
3371
|
this.#detachedCountrySelectorEl.style.paddingLeft = `${inputPos.left}px`;
|
|
3367
3372
|
this.#detachedCountrySelectorEl.style.paddingRight = `${window.innerWidth - inputPos.right}px`;
|
|
3368
3373
|
}
|
|
3369
|
-
} else
|
|
3374
|
+
} else {
|
|
3375
|
+
this.#setupCssAnchorPositioning();
|
|
3376
|
+
}
|
|
3377
|
+
if (!isFullscreen && !supportsCssAnchor) {
|
|
3370
3378
|
const inputPos = this.telInputEl.getBoundingClientRect();
|
|
3371
3379
|
this.#detachedCountrySelectorEl.style.left = `${inputPos.left}px`;
|
|
3372
3380
|
if (this.#shouldPositionDropdownBelowInput()) {
|
|
@@ -3379,13 +3387,17 @@ var _factory = (() => {
|
|
|
3379
3387
|
detachedParent.appendChild(this.#detachedCountrySelectorEl);
|
|
3380
3388
|
}
|
|
3381
3389
|
//* Wire up CSS Anchor Positioning between the input and the detached country selector using a
|
|
3382
|
-
//* unique anchor name per instance. Called
|
|
3390
|
+
//* unique anchor name per instance. Called lazily on first open (memoised) — the matching styles in
|
|
3383
3391
|
//* intlTelInput.css only take effect in browsers that support anchor(); elsewhere these
|
|
3384
3392
|
//* properties are inert. We append our name to any existing anchor-name (read via
|
|
3385
3393
|
//* getComputedStyle so we pick up CSS-defined values), so consumer-set anchors on the input
|
|
3386
3394
|
//* are preserved. Caveat: this snapshots the consumer's value once — if they later change
|
|
3387
3395
|
//* anchor-name via CSS (e.g. a class swap), our inline write will shadow the change.
|
|
3388
3396
|
#setupCssAnchorPositioning() {
|
|
3397
|
+
if (this.#cssAnchorPositioningDone) {
|
|
3398
|
+
return;
|
|
3399
|
+
}
|
|
3400
|
+
this.#cssAnchorPositioningDone = true;
|
|
3389
3401
|
const anchorName = `--iti-anchor-${this.#id}`;
|
|
3390
3402
|
const existing = getComputedStyle(this.telInputEl).anchorName;
|
|
3391
3403
|
this.telInputEl.style.anchorName = existing && existing !== "none" ? `${existing}, ${anchorName}` : anchorName;
|
|
@@ -4860,7 +4872,7 @@ var _factory = (() => {
|
|
|
4860
4872
|
attachUtils,
|
|
4861
4873
|
startedLoadingUtils: false,
|
|
4862
4874
|
startedLoadingAutoCountry: false,
|
|
4863
|
-
version: "29.1.
|
|
4875
|
+
version: "29.1.2",
|
|
4864
4876
|
NUMBER_FORMAT,
|
|
4865
4877
|
NUMBER_TYPE,
|
|
4866
4878
|
VALIDATION_ERROR,
|
|
@@ -6388,7 +6400,7 @@ var _factory = (() => {
|
|
|
6388
6400
|
CM: [, [, , "[26]\\d{8}|88\\d{6,7}", , , , , , , [8, 9]], [, , "2(?:22|33)\\d{6}", , , , "222123456", , , [9]], [
|
|
6389
6401
|
,
|
|
6390
6402
|
,
|
|
6391
|
-
"(?:24[23]|6(?:[25-9]\\d|4[
|
|
6403
|
+
"(?:24[23]|6(?:[25-9]\\d|4[0-2]))\\d{6}",
|
|
6392
6404
|
,
|
|
6393
6405
|
,
|
|
6394
6406
|
,
|
|
@@ -6929,37 +6941,15 @@ var _factory = (() => {
|
|
|
6929
6941
|
["[178]"],
|
|
6930
6942
|
"0$1"
|
|
6931
6943
|
]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]],
|
|
6932
|
-
ES: [
|
|
6933
|
-
,
|
|
6934
|
-
[, , "[5-9]\\d{8}", , , , , , , [9]],
|
|
6935
|
-
[, , "96906(?:0[0-8]|1[1-9]|[2-9]\\d)\\d\\d|9(?:69(?:0[0-57-9]|[1-9]\\d)|73(?:[0-8]\\d|9[1-9]))\\d{4}|(?:8(?:[1356]\\d|[28][0-8]|[47][1-9])|9(?:[135]\\d|[268][0-8]|4[1-9]|7[124-9]))\\d{6}", , , , "810123456"],
|
|
6936
|
-
[, , "96906(?:09|10)\\d\\d|(?:590(?:10[0-2]|600)|97390\\d)\\d{3}|(?:6\\d|7[1-48])\\d{7}", , , , "612345678"],
|
|
6937
|
-
[, , "[89]00\\d{6}", , , , "800123456"],
|
|
6938
|
-
[, , "80[367]\\d{6}", , , , "803123456"],
|
|
6939
|
-
[, , "90[12]\\d{6}", , , , "901123456"],
|
|
6940
|
-
[, , "70\\d{7}", , , , "701234567"],
|
|
6941
|
-
[, , , , , , , , , [-1]],
|
|
6942
|
-
"ES",
|
|
6943
|
-
34,
|
|
6944
|
-
"00",
|
|
6945
|
-
,
|
|
6944
|
+
ES: [, [, , "(?:400|[5-9]\\d\\d)\\d{6}", , , , , , , [9]], [, , "96906(?:0[0-8]|1[1-9]|[2-9]\\d)\\d\\d|9(?:69(?:0[0-57-9]|[1-9]\\d)|73(?:[0-8]\\d|9[1-9]))\\d{4}|(?:400|8(?:[1356]\\d|[28][0-8]|[47][1-9])|9(?:[135]\\d|[268][0-8]|4[1-9]|7[124-9]))\\d{6}", , , , "810123456"], [, , "96906(?:09|10)\\d\\d|(?:590(?:10[0-2]|600)|97390\\d)\\d{3}|(?:6\\d|7[1-48])\\d{7}", , , , "612345678"], [, , "[89]00\\d{6}", , , , "800123456"], [
|
|
6946
6945
|
,
|
|
6947
6946
|
,
|
|
6947
|
+
"80[367]\\d{6}",
|
|
6948
6948
|
,
|
|
6949
6949
|
,
|
|
6950
6950
|
,
|
|
6951
|
-
|
|
6952
|
-
|
|
6953
|
-
[[, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[89]00"]], [, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-9]"]]],
|
|
6954
|
-
[, , , , , , , , , [-1]],
|
|
6955
|
-
,
|
|
6956
|
-
,
|
|
6957
|
-
[, , , , , , , , , [-1]],
|
|
6958
|
-
[, , "51\\d{7}", , , , "511234567"],
|
|
6959
|
-
,
|
|
6960
|
-
,
|
|
6961
|
-
[, , , , , , , , , [-1]]
|
|
6962
|
-
],
|
|
6951
|
+
"803123456"
|
|
6952
|
+
], [, , "90[12]\\d{6}", , , , "901123456"], [, , "70\\d{7}", , , , "701234567"], [, , , , , , , , , [-1]], "ES", 34, "00", , , , , , , , [[, "(\\d{4})", "$1", ["905"]], [, "(\\d{6})", "$1", ["[79]9"]], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[89]00"]], [, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[4-9]"]]], [[, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[89]00"]], [, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[4-9]"]]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "51\\d{7}", , , , "511234567"], , , [, , , , , , , , , [-1]]],
|
|
6963
6953
|
ET: [, [
|
|
6964
6954
|
,
|
|
6965
6955
|
,
|
|
@@ -7365,7 +7355,7 @@ var _factory = (() => {
|
|
|
7365
7355
|
,
|
|
7366
7356
|
,
|
|
7367
7357
|
"2201234"
|
|
7368
|
-
], [, , "(?:51[01]|6\\d\\d|7(?:[0-5]\\d|6[0-79]|
|
|
7358
|
+
], [, , "(?:51[01]|6\\d\\d|7(?:[0-5]\\d|6[0-79]|[78]0))\\d{4}", , , , "6091234"], [, , "(?:289|8(?:00|6[28]|88|99))\\d{4}", , , , "2891234"], [, , "9008\\d{3}", , , , "9008123"], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "515\\d{4}", , , , "5151234"], "GY", 592, "001", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]],
|
|
7369
7359
|
HK: [
|
|
7370
7360
|
,
|
|
7371
7361
|
[, , "8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}", , , , , , , [5, 6, 7, 8, 9, 11]],
|
|
@@ -7422,7 +7412,7 @@ var _factory = (() => {
|
|
|
7422
7412
|
HN: [, [, , "8\\d{10}|[237-9]\\d{7}", , , , , , , [8, 11]], [
|
|
7423
7413
|
,
|
|
7424
7414
|
,
|
|
7425
|
-
"2(?:2(?:0[0-59]|1[1-9]|[23]\\d|4[02-
|
|
7415
|
+
"2(?:2(?:0[0-59]|1[1-9]|[23]\\d|4[02-8]|5[57]|6[2458]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[578]|2[3-59]|3[13-9]|4[0-68]|5[1-3589]|80)|5(?:0[2357-9]|1[1-6]|4[03-58]|5\\d|6[014-69]|7[04]|80)|6(?:[056]\\d|17|2[067]|3[047]|4[0-378]|[78][0-8]|9[01])|7(?:0[5-79]|2[01]|6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\d{4}",
|
|
7426
7416
|
,
|
|
7427
7417
|
,
|
|
7428
7418
|
,
|
|
@@ -8738,7 +8728,7 @@ var _factory = (() => {
|
|
|
8738
8728
|
,
|
|
8739
8729
|
[-1]
|
|
8740
8730
|
], , , [, , , , , , , , , [-1]]],
|
|
8741
|
-
MZ: [, [, , "(?:2|8\\d)\\d{7}", , , , , , , [8, 9]], [, , "2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}", , , , "21123456", , , [8]], [, , "8[2-79]\\d{
|
|
8731
|
+
MZ: [, [, , "(?:2|8\\d)\\d{7}", , , , , , , [8, 9]], [, , "2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}", , , , "21123456", , , [8]], [, , "8(?:[2-79]\\d|80)\\d{6}", , , , "821234567", , , [9]], [, , "800\\d{6}", , , , "800123456", , , [9]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], "MZ", 258, "00", , , , , , , , [[, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2|8[2-9]"]], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]],
|
|
8742
8732
|
NA: [, [
|
|
8743
8733
|
,
|
|
8744
8734
|
,
|
|
@@ -9556,7 +9546,7 @@ var _factory = (() => {
|
|
|
9556
9546
|
"$1 $2 $3",
|
|
9557
9547
|
["[346-9]"]
|
|
9558
9548
|
]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]],
|
|
9559
|
-
SR: [, [, , "(?:[2-5]|[6-9]\\d)\\d{5}", , , , , , , [6, 7]], [, , "(?:2[1-3]|3[0-7]|4\\d|5[2-578])\\d{4}", , , , "211234", , , [6]], [, , "(?:6[08]|7[
|
|
9549
|
+
SR: [, [, , "(?:[2-5]|[6-9]\\d)\\d{5}", , , , , , , [6, 7]], [, , "(?:2[1-3]|3[0-7]|4\\d|5[2-578])\\d{4}", , , , "211234", , , [6]], [, , "(?:6[08]|7[1-7]|8[1-9])\\d{5}", , , , "7412345", , , [7]], [, , "80\\d{5}", , , , "8012345", , , [7]], [, , "90\\d{5}", , , , "9012345", , , [7]], [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], [, , "(?:56|91\\d)\\d{4}", , , , "561234"], "SR", 597, "00", , , , , , , , [
|
|
9560
9550
|
[, "(\\d{2})(\\d{2})(\\d{2})", "$1-$2-$3", ["56"]],
|
|
9561
9551
|
[, "(\\d{3})(\\d{3})", "$1-$2", ["[2-5]"]],
|
|
9562
9552
|
[, "(\\d{3})(\\d{4})", "$1-$2", ["[6-9]"]]
|
|
@@ -9723,10 +9713,10 @@ var _factory = (() => {
|
|
|
9723
9713
|
,
|
|
9724
9714
|
[8]
|
|
9725
9715
|
], [, , "80\\d{5}", , , , "8012345", , , [7]], [, , "90\\d{5}", , , , "9012345", , , [7]], [, , , , , , , , , [-1]], [, , "70\\d{5}", , , , "7012345", , , [7]], [, , , , , , , , , [-1]], "TL", 670, "00", , , , , , , , [[, "(\\d{3})(\\d{4})", "$1 $2", ["[2-489]|70"]], [, "(\\d{4})(\\d{4})", "$1 $2", ["7"]]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]],
|
|
9726
|
-
TM: [, [, , "
|
|
9716
|
+
TM: [, [, , "[1-7]\\d{7}", , , , , , , [8]], [, , "(?:1(?:2\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\d{5}", , , , "12345678"], [
|
|
9727
9717
|
,
|
|
9728
9718
|
,
|
|
9729
|
-
"(?:6\\d|
|
|
9719
|
+
"(?:6\\d|7[12])\\d{6}",
|
|
9730
9720
|
,
|
|
9731
9721
|
,
|
|
9732
9722
|
,
|
|
@@ -9818,48 +9808,22 @@ var _factory = (() => {
|
|
|
9818
9808
|
["83"],
|
|
9819
9809
|
"0$1"
|
|
9820
9810
|
], [, "(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["82"], "0$1"], [, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[25]0|37|49|8[09]"], "0$1"], [, "(\\d)(\\d{3,4})(\\d{4})", "$1 $2 $3", ["[23568]|4(?:0[02-48]|[1-478])|7[1-9]", "[23568]|4(?:0[2-48]|[1-478])|(?:400|7)[1-9]"], "0$1"], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[49]"], "0$1"], [, "(\\d{2})(\\d{4})(\\d{4,5})", "$1 $2 $3", ["7"], "0$1"]], , [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]], [, , "50[0-46-9]\\d{6}", , , , "500123456", , , [9]], , , [, , , , , , , , , [-1]]],
|
|
9821
|
-
TZ: [
|
|
9822
|
-
,
|
|
9823
|
-
[
|
|
9824
|
-
,
|
|
9825
|
-
,
|
|
9826
|
-
"(?:[25-8]\\d|41|90)\\d{7}",
|
|
9827
|
-
,
|
|
9828
|
-
,
|
|
9829
|
-
,
|
|
9830
|
-
,
|
|
9831
|
-
,
|
|
9832
|
-
,
|
|
9833
|
-
[9]
|
|
9834
|
-
],
|
|
9835
|
-
[, , "2[2-8]\\d{7}", , , , "222345678"],
|
|
9836
|
-
[, , "(?:6[1-35-9]|7[013-9])\\d{7}", , , , "621234567"],
|
|
9837
|
-
[, , "80[08]\\d{6}", , , , "800123456"],
|
|
9838
|
-
[, , "90\\d{7}", , , , "900123456"],
|
|
9839
|
-
[, , "8(?:40|6[01])\\d{6}", , , , "840123456"],
|
|
9840
|
-
[, , , , , , , , , [-1]],
|
|
9841
|
-
[, , "41\\d{7}", , , , "412345678"],
|
|
9842
|
-
"TZ",
|
|
9843
|
-
255,
|
|
9844
|
-
"00[056]",
|
|
9845
|
-
"0",
|
|
9811
|
+
TZ: [, [
|
|
9846
9812
|
,
|
|
9847
9813
|
,
|
|
9848
|
-
"
|
|
9814
|
+
"(?:[25-8]\\d|41|90)\\d{7}",
|
|
9849
9815
|
,
|
|
9850
9816
|
,
|
|
9851
9817
|
,
|
|
9852
|
-
[[, "(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"], [, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[24]"], "0$1"], [, "(\\d{2})(\\d{7})", "$1 $2", ["5"]], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[67]"], "0$1"]],
|
|
9853
9818
|
,
|
|
9854
|
-
[, , , , , , , , , [-1]],
|
|
9855
9819
|
,
|
|
9856
9820
|
,
|
|
9857
|
-
[
|
|
9858
|
-
|
|
9821
|
+
[9]
|
|
9822
|
+
], [, , "2[2-8]\\d{7}", , , , "222345678"], [, , "(?:6[1-35-9]|7\\d)\\d{7}", , , , "621234567"], [, , "80[08]\\d{6}", , , , "800123456"], [, , "90\\d{7}", , , , "900123456"], [, , "8(?:40|6[01])\\d{6}", , , , "840123456"], [, , , , , , , , , [-1]], [, , "41\\d{7}", , , , "412345678"], "TZ", 255, "00[056]", "0", , , "0", , , , [[, "(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"], [, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[24]"], "0$1"], [, "(\\d{2})(\\d{7})", "$1 $2", ["5"]], [, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[67]"], "0$1"]], , [, , , , , , , , , [-1]], , , [
|
|
9859
9823
|
,
|
|
9860
9824
|
,
|
|
9861
|
-
[
|
|
9862
|
-
],
|
|
9825
|
+
"(?:8(?:[04]0|6[01])|90\\d)\\d{6}"
|
|
9826
|
+
], [, , , , , , , , , [-1]], , , [, , , , , , , , , [-1]]],
|
|
9863
9827
|
UA: [
|
|
9864
9828
|
,
|
|
9865
9829
|
[, , "[89]\\d{9}|[3-9]\\d{8}", , , , , , , [9, 10], [5, 6, 7]],
|
|
@@ -9931,7 +9895,7 @@ var _factory = (() => {
|
|
|
9931
9895
|
US: [, [, , "[2-9]\\d{9}|3\\d{6}", , , , , , , [10], [7]], [
|
|
9932
9896
|
,
|
|
9933
9897
|
,
|
|
9934
|
-
"(?:
|
|
9898
|
+
"(?:472[2-47-9]|983[2-57-9])\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[02469]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-2478]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\d{6}",
|
|
9935
9899
|
,
|
|
9936
9900
|
,
|
|
9937
9901
|
,
|
|
@@ -9943,7 +9907,7 @@ var _factory = (() => {
|
|
|
9943
9907
|
], [
|
|
9944
9908
|
,
|
|
9945
9909
|
,
|
|
9946
|
-
"(?:
|
|
9910
|
+
"(?:472[2-47-9]|983[2-57-9])\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[02469]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-2478]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\d{6}",
|
|
9947
9911
|
,
|
|
9948
9912
|
,
|
|
9949
9913
|
,
|
|
@@ -9981,7 +9945,7 @@ var _factory = (() => {
|
|
|
9981
9945
|
,
|
|
9982
9946
|
[-1]
|
|
9983
9947
|
], , , [, , , , , , , , , [-1]], [, , "21\\d{2,3}", , , , "21123", , , [4, 5]], , , [, , , , , , , , , [-1]]],
|
|
9984
|
-
UZ: [, [, , "(?:20|33|[5-9]\\d)\\d{7}", , , , , , , [9]], [, , "(?:55\\d\\d|6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|[69]\\d\\d|7(?:[23]\\d|7[69]))|7(?:
|
|
9948
|
+
UZ: [, [, , "(?:20|33|[5-9]\\d)\\d{7}", , , , , , , [9]], [, , "(?:55\\d\\d|6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|[69]\\d\\d|7(?:[23]\\d|7[69]))|7(?:[168]\\d\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|9(?:22|5[1-9])))\\d{5}", , , , "669050123"], [
|
|
9985
9949
|
,
|
|
9986
9950
|
,
|
|
9987
9951
|
"(?:(?:[25]0|33|8[078]|9[0-57-9])\\d{3}|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079])))|7(?:[07]\\d{3}|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07]))))\\d{4}",
|