@hh.ru/magritte-ui-phone-input 4.2.74 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,7 @@ import classNames from 'classnames';
5
5
  import { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';
6
6
  import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
7
7
 
8
- var styles = {"calling-code-input":"magritte-calling-code-input___Hb20f_4-2-74","callingCodeInput":"magritte-calling-code-input___Hb20f_4-2-74","calling-code-input-container":"magritte-calling-code-input-container___UXmHV_4-2-74","callingCodeInputContainer":"magritte-calling-code-input-container___UXmHV_4-2-74","disabled":"magritte-disabled___fvEeH_4-2-74","focused":"magritte-focused___Ok8x4_4-2-74","invalid":"magritte-invalid___kptbH_4-2-74","ghost-data":"magritte-ghost-data___zShvn_4-2-74","ghostData":"magritte-ghost-data___zShvn_4-2-74","focus-visible":"magritte-focus-visible___kbwmg_4-2-74","focusVisible":"magritte-focus-visible___kbwmg_4-2-74","flag-container":"magritte-flag-container___wsoAd_4-2-74","flagContainer":"magritte-flag-container___wsoAd_4-2-74","input-container":"magritte-input-container___WSSZi_4-2-74","inputContainer":"magritte-input-container___WSSZi_4-2-74","phone-input-container":"magritte-phone-input-container___D587K_4-2-74","phoneInputContainer":"magritte-phone-input-container___D587K_4-2-74","flag-emoji":"magritte-flag-emoji___pyJS7_4-2-74","flagEmoji":"magritte-flag-emoji___pyJS7_4-2-74","no-flag-emoji":"magritte-no-flag-emoji___yiuyr_4-2-74","noFlagEmoji":"magritte-no-flag-emoji___yiuyr_4-2-74"};
8
+ var styles = {"calling-code-input":"magritte-calling-code-input___Hb20f_4-3-0","callingCodeInput":"magritte-calling-code-input___Hb20f_4-3-0","calling-code-input-container":"magritte-calling-code-input-container___UXmHV_4-3-0","callingCodeInputContainer":"magritte-calling-code-input-container___UXmHV_4-3-0","disabled":"magritte-disabled___fvEeH_4-3-0","focused":"magritte-focused___Ok8x4_4-3-0","invalid":"magritte-invalid___kptbH_4-3-0","ghost-data":"magritte-ghost-data___zShvn_4-3-0","ghostData":"magritte-ghost-data___zShvn_4-3-0","focus-visible":"magritte-focus-visible___kbwmg_4-3-0","focusVisible":"magritte-focus-visible___kbwmg_4-3-0","country-locked":"magritte-country-locked___9HDyw_4-3-0","countryLocked":"magritte-country-locked___9HDyw_4-3-0","flag-container":"magritte-flag-container___wsoAd_4-3-0","flagContainer":"magritte-flag-container___wsoAd_4-3-0","input-container":"magritte-input-container___WSSZi_4-3-0","inputContainer":"magritte-input-container___WSSZi_4-3-0","phone-input-container":"magritte-phone-input-container___D587K_4-3-0","phoneInputContainer":"magritte-phone-input-container___D587K_4-3-0","flag-emoji":"magritte-flag-emoji___pyJS7_4-3-0","flagEmoji":"magritte-flag-emoji___pyJS7_4-3-0","no-flag-emoji":"magritte-no-flag-emoji___yiuyr_4-3-0","noFlagEmoji":"magritte-no-flag-emoji___yiuyr_4-3-0"};
9
9
 
10
10
  const CallingCodeInput = forwardRef(({ onFocus, onBlur, value, onChange, flag, onKeyDownInput, onKeyDownContainer, invalid, disabled, className, inputElementRef, descriptionId, }, ref) => {
11
11
  const inputRef = useRef(null);
@@ -21,7 +21,7 @@ const CallingCodeInput = forwardRef(({ onFocus, onBlur, value, onChange, flag, o
21
21
  return (jsxs("div", { className: classNames(styles.callingCodeInputContainer, className, {
22
22
  [styles.focusVisible]: isFocusVisible && !disabled,
23
23
  [styles.focused]: isFocused && !disabled,
24
- [styles.invalid]: invalid && !disabled,
24
+ [styles.invalid]: invalid,
25
25
  [styles.disabled]: disabled,
26
26
  }), tabIndex: disabled ? -1 : 0, onFocus: () => {
27
27
  if (disabled) {
@@ -50,4 +50,4 @@ const CallingCodeInput = forwardRef(({ onFocus, onBlur, value, onChange, flag, o
50
50
  CallingCodeInput.displayName = 'CallingCodeInput';
51
51
 
52
52
  export { CallingCodeInput as C, styles as s };
53
- //# sourceMappingURL=CallingCodeInput-B2J7IUp3.js.map
53
+ //# sourceMappingURL=CallingCodeInput-BcCQZB3Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallingCodeInput-BcCQZB3Z.js","sources":["src/CallingCodeInput.tsx"],"sourcesContent":["import {\n type KeyboardEventHandler,\n type ChangeEvent,\n type ReactNode,\n type Ref,\n forwardRef,\n useState,\n useEffect,\n useRef,\n} from 'react';\nimport classnames from 'classnames';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\n\nimport styles from './phoneInput.less';\n\ninterface CallingCodeInputProps {\n flag: ReactNode;\n onChange: (value: string) => void;\n value: string;\n onFocus: VoidFunction;\n onBlur?: VoidFunction;\n onKeyDownInput?: KeyboardEventHandler<HTMLInputElement>;\n onKeyDownContainer?: KeyboardEventHandler<HTMLDivElement>;\n invalid?: boolean;\n disabled?: boolean;\n className?: string | boolean;\n inputElementRef: Ref<HTMLInputElement>;\n descriptionId: string;\n}\n\nexport const CallingCodeInput = forwardRef<HTMLDivElement, CallingCodeInputProps>(\n (\n {\n onFocus,\n onBlur,\n value,\n onChange,\n flag,\n onKeyDownInput,\n onKeyDownContainer,\n invalid,\n disabled,\n className,\n inputElementRef,\n descriptionId,\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const inputRefMultiplexer = useMultipleRefs(inputRef, inputElementRef);\n const [isFocused, setIsFocused] = useState(false);\n const [isFocusVisible, setIsFocusVisible] = useState(false);\n const { isMobile } = useBreakpoint();\n\n useEffect(() => {\n if (inputRef.current) {\n setIsFocusVisible(isFocused && inputRef.current.classList.contains('focus-visible'));\n }\n }, [isFocused]);\n\n return (\n <div\n className={classnames(styles.callingCodeInputContainer, className, {\n [styles.focusVisible]: isFocusVisible && !disabled,\n [styles.focused]: isFocused && !disabled,\n [styles.invalid]: invalid,\n [styles.disabled]: disabled,\n })}\n tabIndex={disabled ? -1 : 0}\n onFocus={() => {\n if (disabled) {\n return;\n }\n if (!isMobile) {\n inputRef.current?.focus();\n return;\n }\n\n setIsFocused(true);\n onFocus();\n }}\n onBlur={() => {\n if (!isMobile) {\n return;\n }\n setIsFocused(false);\n onBlur?.();\n }}\n onKeyDown={onKeyDownContainer}\n ref={ref}\n data-qa=\"magritte-phone-input-calling-code\"\n >\n <div className={styles.flagContainer}>{flag}</div>\n <div className={styles.inputContainer}>\n <input\n ref={inputRefMultiplexer}\n onFocus={() => {\n setIsFocused(true);\n onFocus();\n }}\n onBlur={() => {\n setIsFocused(false);\n onBlur?.();\n }}\n onKeyDown={onKeyDownInput}\n className={styles.callingCodeInput}\n value={value}\n onChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n disabled={disabled}\n data-qa=\"magritte-phone-input-calling-code-input\"\n aria-describedby={descriptionId}\n aria-invalid={invalid}\n />\n <div className={styles.ghostData} data-qa=\"magritte-phone-input-calling-code-value\">\n {value}\n </div>\n </div>\n </div>\n );\n }\n);\n\nCallingCodeInput.displayName = 'CallingCodeInput';\n"],"names":["_jsxs","classnames","_jsx"],"mappings":"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"}
@@ -4,5 +4,5 @@ import 'react';
4
4
  import 'classnames';
5
5
  import '@hh.ru/magritte-common-use-multiple-refs';
6
6
  import '@hh.ru/magritte-ui-breakpoint';
7
- export { C as CallingCodeInput } from './CallingCodeInput-B2J7IUp3.js';
7
+ export { C as CallingCodeInput } from './CallingCodeInput-BcCQZB3Z.js';
8
8
  //# sourceMappingURL=CallingCodeInput.js.map
package/PhoneInput.d.ts CHANGED
@@ -26,6 +26,11 @@ export interface PhoneInputProps {
26
26
  availableCountries?: CountryCode[];
27
27
  /** Флаг приоритетных стран, которые будут отображаться в начале списка */
28
28
  priorityCountries?: CountryCode[];
29
+ /**
30
+ * Фиксирует регион на указанной стране: селект блокируется (отображается как disabled),
31
+ * а ввод номера другого региона не меняет выбранную страну. Если проп не задан — регион можно менять.
32
+ */
33
+ lockedCountry?: CountryCode;
29
34
  /** Флаг валидности номера */
30
35
  invalid?: boolean;
31
36
  /** Описание которое будет отображаться под полями ввода */
package/PhoneInput.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import './index.css';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
- import { forwardRef, useId, useMemo, useState, useRef } from 'react';
3
+ import { forwardRef, useId, useMemo, useState, useRef, useEffect } from 'react';
4
+ import classNames from 'classnames';
4
5
  import { useDisabled } from '@hh.ru/magritte-common-use-disabled';
5
6
  import { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';
6
7
  import { FormHelper } from '@hh.ru/magritte-ui-form-helper';
@@ -9,8 +10,7 @@ import { RegionSelect } from './RegionSelect.js';
9
10
  import { phoneFormatterFactory } from './phoneFormatter.js';
10
11
  import { useCountrySelectDataProvider } from './useCountrySelectDataProvider.js';
11
12
  import { useLibPhoneNumber } from './useLibPhoneNumber.js';
12
- import { s as styles } from './CallingCodeInput-B2J7IUp3.js';
13
- import 'classnames';
13
+ import { s as styles } from './CallingCodeInput-BcCQZB3Z.js';
14
14
  import '@hh.ru/magritte-common-flag-emoji-font';
15
15
  import '@hh.ru/magritte-common-keyboard';
16
16
  import '@hh.ru/magritte-ui-breakpoint';
@@ -21,7 +21,7 @@ import './basicMetadata.js';
21
21
 
22
22
  const DEFAULT_PRIORITY_COUNTRIES = ['RU', 'BY', 'KZ', 'UZ'];
23
23
  const notDigitsRegExp = /[\D]/g;
24
- const PhoneInput = forwardRef(({ defaultCountry = 'RU', defaultNationalNumber = '', onChange, availableCountries, invalid, description, errorMessage, priorityCountries = DEFAULT_PRIORITY_COUNTRIES, onFocus, onBlur, countryNames, priorityCountriesTitle, mobileOnly, 'data-qa': dataQa = 'magritte-phone-input-wrapper', inputsWrapperRef, phoneInputElementRef, codeInputElementRef, onPhoneValidationApiLoadError, disabled, }, ref) => {
24
+ const PhoneInput = forwardRef(({ defaultCountry = 'RU', defaultNationalNumber = '', onChange, availableCountries, invalid, description, errorMessage, priorityCountries = DEFAULT_PRIORITY_COUNTRIES, lockedCountry, onFocus, onBlur, countryNames, priorityCountriesTitle, mobileOnly, 'data-qa': dataQa = 'magritte-phone-input-wrapper', inputsWrapperRef, phoneInputElementRef, codeInputElementRef, onPhoneValidationApiLoadError, disabled, }, ref) => {
25
25
  const descriptionId = useId();
26
26
  const metadataVariant = useMemo(() => {
27
27
  const minimalMetadata = availableCountries?.length === DEFAULT_PRIORITY_COUNTRIES.length &&
@@ -38,7 +38,7 @@ const PhoneInput = forwardRef(({ defaultCountry = 'RU', defaultNationalNumber =
38
38
  }, [availableCountries, countryNames]);
39
39
  const libPhoneNumberAPI = useLibPhoneNumber(metadataVariant, !!mobileOnly, onPhoneValidationApiLoadError);
40
40
  const { getCountryCallingCode, isValidPhoneNumber, isLoaded } = libPhoneNumberAPI;
41
- const [country, setCountry] = useState(defaultCountry);
41
+ const [country, setCountry] = useState(lockedCountry ?? defaultCountry);
42
42
  const countryRef = useRef(country);
43
43
  const countryCallingCodeRef = useRef(getCountryCallingCode(country));
44
44
  const focusInsideRef = useRef(false);
@@ -49,6 +49,7 @@ const PhoneInput = forwardRef(({ defaultCountry = 'RU', defaultNationalNumber =
49
49
  const inputRefMultiplexer = useMultipleRefs(phoneInputRef, phoneInputElementRef);
50
50
  const forceDisabled = useDisabled();
51
51
  const isComponentDisabled = forceDisabled || !!disabled;
52
+ const isCountryLocked = lockedCountry !== undefined;
52
53
  countryCallingCodeRef.current = getCountryCallingCode(country);
53
54
  const availableCountriesRef = useRef();
54
55
  availableCountriesRef.current = availableCountries;
@@ -70,8 +71,9 @@ const PhoneInput = forwardRef(({ defaultCountry = 'RU', defaultNationalNumber =
70
71
  currentCountryRef: countryRef,
71
72
  availableCountriesRef,
72
73
  libPhoneNumberAPI,
74
+ countryLocked: isCountryLocked,
73
75
  });
74
- }, [libPhoneNumberAPI]);
76
+ }, [libPhoneNumberAPI, isCountryLocked]);
75
77
  const onChangeHandler = (country, phoneValue, event) => {
76
78
  const callingCode = getCountryCallingCode(country);
77
79
  const nationalNumber = phoneValue.replace(notDigitsRegExp, '');
@@ -84,6 +86,15 @@ const PhoneInput = forwardRef(({ defaultCountry = 'RU', defaultNationalNumber =
84
86
  isPhoneValidationApiLoaded: isLoaded,
85
87
  }, event);
86
88
  };
89
+ useEffect(() => {
90
+ if (lockedCountry !== undefined && countryRef.current !== lockedCountry) {
91
+ setCountry(lockedCountry);
92
+ countryRef.current = lockedCountry;
93
+ setPhoneValue('');
94
+ onChangeHandler(lockedCountry, '');
95
+ }
96
+ // eslint-disable-next-line disable-autofix/react-hooks/exhaustive-deps
97
+ }, [lockedCountry]);
87
98
  const focusHandler = () => {
88
99
  if (focusInsideRef.current) {
89
100
  return;
@@ -100,7 +111,9 @@ const PhoneInput = forwardRef(({ defaultCountry = 'RU', defaultNationalNumber =
100
111
  onBlur?.();
101
112
  });
102
113
  };
103
- return (jsxs("div", { ref: ref, children: [jsxs("div", { className: styles.phoneInputContainer, onFocus: focusHandler, onBlur: blurHandler, ref: wrapperRefMultiplexer, "data-qa": dataQa, children: [jsx(RegionSelect, { ref: codeInputElementRef, country: country, selectDataProvider: selectDataProvider, selectOptions: selectOptions, showSearchInMobile: selectOptions.length > 10, callingCode: countryCallingCodeRef.current, descriptionId: descriptionId, onChange: (newCountry) => {
114
+ return (jsxs("div", { ref: ref, children: [jsxs("div", { className: classNames(styles.phoneInputContainer, {
115
+ [styles.countryLocked]: isCountryLocked && !isComponentDisabled,
116
+ }), onFocus: focusHandler, onBlur: blurHandler, ref: wrapperRefMultiplexer, "data-qa": dataQa, children: [jsx(RegionSelect, { ref: codeInputElementRef, country: country, countryLocked: isCountryLocked, selectDataProvider: selectDataProvider, selectOptions: selectOptions, showSearchInMobile: selectOptions.length > 10, callingCode: countryCallingCodeRef.current, descriptionId: descriptionId, onChange: (newCountry) => {
104
117
  let currentPhoneValue = phoneValue;
105
118
  if (country !== newCountry) {
106
119
  setPhoneValue('');
package/PhoneInput.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"PhoneInput.js","sources":["src/PhoneInput.tsx"],"sourcesContent":["import { type FC, type Ref, useState, useRef, useMemo, forwardRef, ChangeEvent, useId } from 'react';\nimport { type CountryCode, type CountryCallingCode } from 'libphonenumber-js';\n\nimport { useDisabled } from '@hh.ru/magritte-common-use-disabled';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { FormHelper } from '@hh.ru/magritte-ui-form-helper';\nimport { Input } from '@hh.ru/magritte-ui-input';\nimport { RegionSelect } from '@hh.ru/magritte-ui-phone-input/RegionSelect';\nimport { phoneFormatterFactory } from '@hh.ru/magritte-ui-phone-input/phoneFormatter';\nimport { useCountrySelectDataProvider } from '@hh.ru/magritte-ui-phone-input/useCountrySelectDataProvider';\nimport { type MetadataVariant, useLibPhoneNumber } from '@hh.ru/magritte-ui-phone-input/useLibPhoneNumber';\n\nimport styles from './phoneInput.less';\n\nexport interface PhoneInputProps {\n /** Код страны который будет выбран при инициализации компонента */\n defaultCountry?: CountryCode;\n /** Национальная часть номера который будет введен в компонент при инициализации */\n defaultNationalNumber?: string;\n /** Обработчик изменения номера телефона */\n onChange: (\n data: {\n /** Двухбуквенный код страны */\n country: CountryCode;\n /** Международный телефонный код страны */\n callingCode: CountryCallingCode;\n /** Национальная часть номера, содержит только цифры */\n nationalNumber: string;\n /** Номер телефона в международном формате */\n phone: string;\n /** Флаг валидности номера */\n isValid: boolean;\n /** Флаг загрузки API для валидации номера */\n isPhoneValidationApiLoaded: boolean;\n },\n event?: ChangeEvent<HTMLInputElement>\n ) => void;\n /** Обработчик ошибки загрузки API для валидации номера */\n onPhoneValidationApiLoadError?: (error: Error, reload: VoidFunction) => void;\n /** Список стран доступных для выбора */\n availableCountries?: CountryCode[];\n /** Флаг приоритетных стран, которые будут отображаться в начале списка */\n priorityCountries?: CountryCode[];\n /** Флаг валидности номера */\n invalid?: boolean;\n /** Описание которое будет отображаться под полями ввода */\n description?: string;\n /** Сообщение об ошибке валидации, будет отображаться только если установлен флаг invalid */\n errorMessage?: string;\n /** Словарь содержащий названия стран */\n countryNames: Partial<Record<CountryCode, string>>;\n /** Название блока с приоритетными странами */\n priorityCountriesTitle?: string;\n /** Обработчик фокуса на компоненте */\n onFocus?: VoidFunction;\n /** Обработчик потери фокуса на компоненте */\n onBlur?: VoidFunction;\n /**\n * Включает режим парсинга только мобильных номеров, в этом режиме уменьшается время загрузки компонента,\n * но номера фиксированных линий связи не пройдут валидацию\n * */\n mobileOnly?: boolean;\n /** Атрибут data-qa */\n 'data-qa'?: string;\n /** Ссылка на обертку полей ввода */\n inputsWrapperRef?: Ref<HTMLDivElement>;\n /** Ссылка на элемент input */\n phoneInputElementRef?: Ref<HTMLInputElement>;\n codeInputElementRef?: Ref<HTMLInputElement>;\n disabled?: boolean;\n}\n\nconst DEFAULT_PRIORITY_COUNTRIES: CountryCode[] = ['RU', 'BY', 'KZ', 'UZ'] as const;\nconst notDigitsRegExp = /[\\D]/g;\n\nexport const PhoneInput: FC<PhoneInputProps> = forwardRef<HTMLDivElement, PhoneInputProps>(\n (\n {\n defaultCountry = 'RU',\n defaultNationalNumber = '',\n onChange,\n availableCountries,\n invalid,\n description,\n errorMessage,\n priorityCountries = DEFAULT_PRIORITY_COUNTRIES,\n onFocus,\n onBlur,\n countryNames,\n priorityCountriesTitle,\n mobileOnly,\n 'data-qa': dataQa = 'magritte-phone-input-wrapper',\n inputsWrapperRef,\n phoneInputElementRef,\n codeInputElementRef,\n onPhoneValidationApiLoadError,\n disabled,\n },\n ref\n ) => {\n const descriptionId = useId();\n const metadataVariant: MetadataVariant = useMemo<MetadataVariant>(() => {\n const minimalMetadata =\n availableCountries?.length === DEFAULT_PRIORITY_COUNTRIES.length &&\n DEFAULT_PRIORITY_COUNTRIES.every((country) => availableCountries.includes(country));\n if (minimalMetadata) {\n return 'ru-by-kz-uz';\n }\n\n const keys = Object.keys(countryNames);\n if (\n keys.length === DEFAULT_PRIORITY_COUNTRIES.length &&\n DEFAULT_PRIORITY_COUNTRIES.every((country) => keys.includes(country))\n ) {\n return 'ru-by-kz-uz';\n }\n\n return 'max';\n }, [availableCountries, countryNames]);\n\n const libPhoneNumberAPI = useLibPhoneNumber(metadataVariant, !!mobileOnly, onPhoneValidationApiLoadError);\n const { getCountryCallingCode, isValidPhoneNumber, isLoaded } = libPhoneNumberAPI;\n const [country, setCountry] = useState<CountryCode>(defaultCountry);\n const countryRef = useRef<CountryCode>(country);\n const countryCallingCodeRef = useRef<CountryCallingCode>(getCountryCallingCode(country));\n const focusInsideRef = useRef(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const wrapperRefMultiplexer = useMultipleRefs(wrapperRef, inputsWrapperRef);\n const [phoneValue, setPhoneValue] = useState(defaultNationalNumber);\n const phoneInputRef = useRef<HTMLInputElement>(null);\n const inputRefMultiplexer = useMultipleRefs(phoneInputRef, phoneInputElementRef);\n const forceDisabled = useDisabled();\n const isComponentDisabled = forceDisabled || !!disabled;\n countryCallingCodeRef.current = getCountryCallingCode(country);\n const availableCountriesRef = useRef<CountryCode[] | undefined>();\n availableCountriesRef.current = availableCountries;\n\n const { dataProvider: selectDataProvider, options: selectOptions } = useCountrySelectDataProvider({\n availableCountries,\n countryNames,\n priorityCountriesTitle,\n priorityCountries,\n libPhoneNumberAPI,\n });\n\n const phoneFormatter = useMemo(() => {\n return phoneFormatterFactory({\n // обернуто в промис т.к. форматтер вызывается в процессе рендера BaseInput и не может синхронно\n // вызывать изменения стейта другого компонента\n setCountry: (country) => {\n countryRef.current = country;\n void Promise.resolve().then(() => setCountry(country));\n },\n currentCountryRef: countryRef,\n availableCountriesRef,\n libPhoneNumberAPI,\n });\n }, [libPhoneNumberAPI]);\n\n const onChangeHandler = (country: CountryCode, phoneValue: string, event?: ChangeEvent<HTMLInputElement>) => {\n const callingCode = getCountryCallingCode(country);\n const nationalNumber = phoneValue.replace(notDigitsRegExp, '');\n onChange(\n {\n country,\n callingCode,\n phone: `+${callingCode}${nationalNumber}`,\n nationalNumber,\n isValid: isValidPhoneNumber(nationalNumber, country),\n isPhoneValidationApiLoaded: isLoaded,\n },\n event\n );\n };\n\n const focusHandler = () => {\n if (focusInsideRef.current) {\n return;\n }\n\n focusInsideRef.current = true;\n onFocus?.();\n };\n\n const blurHandler = () => {\n requestAnimationFrame(() => {\n if (wrapperRef.current?.contains(document.activeElement)) {\n return;\n }\n\n focusInsideRef.current = false;\n onBlur?.();\n });\n };\n\n return (\n <div ref={ref}>\n <div\n className={styles.phoneInputContainer}\n onFocus={focusHandler}\n onBlur={blurHandler}\n ref={wrapperRefMultiplexer}\n data-qa={dataQa}\n >\n <RegionSelect\n ref={codeInputElementRef}\n country={country}\n selectDataProvider={selectDataProvider}\n selectOptions={selectOptions}\n showSearchInMobile={selectOptions.length > 10}\n callingCode={countryCallingCodeRef.current}\n descriptionId={descriptionId}\n onChange={(newCountry) => {\n let currentPhoneValue = phoneValue;\n if (country !== newCountry) {\n setPhoneValue('');\n currentPhoneValue = '';\n }\n setCountry(newCountry);\n countryRef.current = newCountry;\n onChangeHandler(newCountry, currentPhoneValue);\n phoneInputRef.current?.focus();\n }}\n availableCountries={availableCountries}\n priorityCountries={priorityCountries}\n libPhoneNumberAPI={libPhoneNumberAPI}\n invalid={invalid}\n disabled={isComponentDisabled}\n metadataVariant={metadataVariant}\n />\n <Input\n ref={inputRefMultiplexer}\n size=\"large\"\n onChange={(value, event) => {\n setPhoneValue(value);\n onChangeHandler(countryRef.current, value, event);\n }}\n formatter={phoneFormatter}\n value={phoneValue}\n invalid={invalid}\n disabled={isComponentDisabled}\n inputMode=\"tel\"\n data-qa=\"magritte-phone-input-national-number-input\"\n aria-describedby={descriptionId}\n />\n </div>\n <FormHelper\n invalid={invalid}\n description={description}\n disabled={isComponentDisabled}\n errorMessage={errorMessage}\n descriptionId={descriptionId}\n data-qa=\"magritte-phone-input-form-helper\"\n />\n </div>\n );\n }\n);\n\nPhoneInput.displayName = 'PhoneInput';\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"PhoneInput.js","sources":["src/PhoneInput.tsx"],"sourcesContent":["import { type FC, type Ref, useState, useRef, useMemo, forwardRef, ChangeEvent, useId, useEffect } from 'react';\nimport classNames from 'classnames';\nimport { type CountryCode, type CountryCallingCode } from 'libphonenumber-js';\n\nimport { useDisabled } from '@hh.ru/magritte-common-use-disabled';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { FormHelper } from '@hh.ru/magritte-ui-form-helper';\nimport { Input } from '@hh.ru/magritte-ui-input';\nimport { RegionSelect } from '@hh.ru/magritte-ui-phone-input/RegionSelect';\nimport { phoneFormatterFactory } from '@hh.ru/magritte-ui-phone-input/phoneFormatter';\nimport { useCountrySelectDataProvider } from '@hh.ru/magritte-ui-phone-input/useCountrySelectDataProvider';\nimport { type MetadataVariant, useLibPhoneNumber } from '@hh.ru/magritte-ui-phone-input/useLibPhoneNumber';\n\nimport styles from './phoneInput.less';\n\nexport interface PhoneInputProps {\n /** Код страны который будет выбран при инициализации компонента */\n defaultCountry?: CountryCode;\n /** Национальная часть номера который будет введен в компонент при инициализации */\n defaultNationalNumber?: string;\n /** Обработчик изменения номера телефона */\n onChange: (\n data: {\n /** Двухбуквенный код страны */\n country: CountryCode;\n /** Международный телефонный код страны */\n callingCode: CountryCallingCode;\n /** Национальная часть номера, содержит только цифры */\n nationalNumber: string;\n /** Номер телефона в международном формате */\n phone: string;\n /** Флаг валидности номера */\n isValid: boolean;\n /** Флаг загрузки API для валидации номера */\n isPhoneValidationApiLoaded: boolean;\n },\n event?: ChangeEvent<HTMLInputElement>\n ) => void;\n /** Обработчик ошибки загрузки API для валидации номера */\n onPhoneValidationApiLoadError?: (error: Error, reload: VoidFunction) => void;\n /** Список стран доступных для выбора */\n availableCountries?: CountryCode[];\n /** Флаг приоритетных стран, которые будут отображаться в начале списка */\n priorityCountries?: CountryCode[];\n /**\n * Фиксирует регион на указанной стране: селект блокируется (отображается как disabled),\n * а ввод номера другого региона не меняет выбранную страну. Если проп не задан — регион можно менять.\n */\n lockedCountry?: CountryCode;\n /** Флаг валидности номера */\n invalid?: boolean;\n /** Описание которое будет отображаться под полями ввода */\n description?: string;\n /** Сообщение об ошибке валидации, будет отображаться только если установлен флаг invalid */\n errorMessage?: string;\n /** Словарь содержащий названия стран */\n countryNames: Partial<Record<CountryCode, string>>;\n /** Название блока с приоритетными странами */\n priorityCountriesTitle?: string;\n /** Обработчик фокуса на компоненте */\n onFocus?: VoidFunction;\n /** Обработчик потери фокуса на компоненте */\n onBlur?: VoidFunction;\n /**\n * Включает режим парсинга только мобильных номеров, в этом режиме уменьшается время загрузки компонента,\n * но номера фиксированных линий связи не пройдут валидацию\n * */\n mobileOnly?: boolean;\n /** Атрибут data-qa */\n 'data-qa'?: string;\n /** Ссылка на обертку полей ввода */\n inputsWrapperRef?: Ref<HTMLDivElement>;\n /** Ссылка на элемент input */\n phoneInputElementRef?: Ref<HTMLInputElement>;\n codeInputElementRef?: Ref<HTMLInputElement>;\n disabled?: boolean;\n}\n\nconst DEFAULT_PRIORITY_COUNTRIES: CountryCode[] = ['RU', 'BY', 'KZ', 'UZ'] as const;\nconst notDigitsRegExp = /[\\D]/g;\n\nexport const PhoneInput: FC<PhoneInputProps> = forwardRef<HTMLDivElement, PhoneInputProps>(\n (\n {\n defaultCountry = 'RU',\n defaultNationalNumber = '',\n onChange,\n availableCountries,\n invalid,\n description,\n errorMessage,\n priorityCountries = DEFAULT_PRIORITY_COUNTRIES,\n lockedCountry,\n onFocus,\n onBlur,\n countryNames,\n priorityCountriesTitle,\n mobileOnly,\n 'data-qa': dataQa = 'magritte-phone-input-wrapper',\n inputsWrapperRef,\n phoneInputElementRef,\n codeInputElementRef,\n onPhoneValidationApiLoadError,\n disabled,\n },\n ref\n ) => {\n const descriptionId = useId();\n const metadataVariant: MetadataVariant = useMemo<MetadataVariant>(() => {\n const minimalMetadata =\n availableCountries?.length === DEFAULT_PRIORITY_COUNTRIES.length &&\n DEFAULT_PRIORITY_COUNTRIES.every((country) => availableCountries.includes(country));\n if (minimalMetadata) {\n return 'ru-by-kz-uz';\n }\n\n const keys = Object.keys(countryNames);\n if (\n keys.length === DEFAULT_PRIORITY_COUNTRIES.length &&\n DEFAULT_PRIORITY_COUNTRIES.every((country) => keys.includes(country))\n ) {\n return 'ru-by-kz-uz';\n }\n\n return 'max';\n }, [availableCountries, countryNames]);\n\n const libPhoneNumberAPI = useLibPhoneNumber(metadataVariant, !!mobileOnly, onPhoneValidationApiLoadError);\n const { getCountryCallingCode, isValidPhoneNumber, isLoaded } = libPhoneNumberAPI;\n const [country, setCountry] = useState<CountryCode>(lockedCountry ?? defaultCountry);\n const countryRef = useRef<CountryCode>(country);\n const countryCallingCodeRef = useRef<CountryCallingCode>(getCountryCallingCode(country));\n const focusInsideRef = useRef(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const wrapperRefMultiplexer = useMultipleRefs(wrapperRef, inputsWrapperRef);\n const [phoneValue, setPhoneValue] = useState(defaultNationalNumber);\n const phoneInputRef = useRef<HTMLInputElement>(null);\n const inputRefMultiplexer = useMultipleRefs(phoneInputRef, phoneInputElementRef);\n const forceDisabled = useDisabled();\n const isComponentDisabled = forceDisabled || !!disabled;\n const isCountryLocked = lockedCountry !== undefined;\n countryCallingCodeRef.current = getCountryCallingCode(country);\n const availableCountriesRef = useRef<CountryCode[] | undefined>();\n availableCountriesRef.current = availableCountries;\n\n const { dataProvider: selectDataProvider, options: selectOptions } = useCountrySelectDataProvider({\n availableCountries,\n countryNames,\n priorityCountriesTitle,\n priorityCountries,\n libPhoneNumberAPI,\n });\n\n const phoneFormatter = useMemo(() => {\n return phoneFormatterFactory({\n // обернуто в промис т.к. форматтер вызывается в процессе рендера BaseInput и не может синхронно\n // вызывать изменения стейта другого компонента\n setCountry: (country) => {\n countryRef.current = country;\n void Promise.resolve().then(() => setCountry(country));\n },\n currentCountryRef: countryRef,\n availableCountriesRef,\n libPhoneNumberAPI,\n countryLocked: isCountryLocked,\n });\n }, [libPhoneNumberAPI, isCountryLocked]);\n\n const onChangeHandler = (country: CountryCode, phoneValue: string, event?: ChangeEvent<HTMLInputElement>) => {\n const callingCode = getCountryCallingCode(country);\n const nationalNumber = phoneValue.replace(notDigitsRegExp, '');\n onChange(\n {\n country,\n callingCode,\n phone: `+${callingCode}${nationalNumber}`,\n nationalNumber,\n isValid: isValidPhoneNumber(nationalNumber, country),\n isPhoneValidationApiLoaded: isLoaded,\n },\n event\n );\n };\n\n useEffect(() => {\n if (lockedCountry !== undefined && countryRef.current !== lockedCountry) {\n setCountry(lockedCountry);\n countryRef.current = lockedCountry;\n setPhoneValue('');\n onChangeHandler(lockedCountry, '');\n }\n // eslint-disable-next-line disable-autofix/react-hooks/exhaustive-deps\n }, [lockedCountry]);\n\n const focusHandler = () => {\n if (focusInsideRef.current) {\n return;\n }\n\n focusInsideRef.current = true;\n onFocus?.();\n };\n\n const blurHandler = () => {\n requestAnimationFrame(() => {\n if (wrapperRef.current?.contains(document.activeElement)) {\n return;\n }\n\n focusInsideRef.current = false;\n onBlur?.();\n });\n };\n\n return (\n <div ref={ref}>\n <div\n className={classNames(styles.phoneInputContainer, {\n [styles.countryLocked]: isCountryLocked && !isComponentDisabled,\n })}\n onFocus={focusHandler}\n onBlur={blurHandler}\n ref={wrapperRefMultiplexer}\n data-qa={dataQa}\n >\n <RegionSelect\n ref={codeInputElementRef}\n country={country}\n countryLocked={isCountryLocked}\n selectDataProvider={selectDataProvider}\n selectOptions={selectOptions}\n showSearchInMobile={selectOptions.length > 10}\n callingCode={countryCallingCodeRef.current}\n descriptionId={descriptionId}\n onChange={(newCountry) => {\n let currentPhoneValue = phoneValue;\n if (country !== newCountry) {\n setPhoneValue('');\n currentPhoneValue = '';\n }\n setCountry(newCountry);\n countryRef.current = newCountry;\n onChangeHandler(newCountry, currentPhoneValue);\n phoneInputRef.current?.focus();\n }}\n availableCountries={availableCountries}\n priorityCountries={priorityCountries}\n libPhoneNumberAPI={libPhoneNumberAPI}\n invalid={invalid}\n disabled={isComponentDisabled}\n metadataVariant={metadataVariant}\n />\n <Input\n ref={inputRefMultiplexer}\n size=\"large\"\n onChange={(value, event) => {\n setPhoneValue(value);\n onChangeHandler(countryRef.current, value, event);\n }}\n formatter={phoneFormatter}\n value={phoneValue}\n invalid={invalid}\n disabled={isComponentDisabled}\n inputMode=\"tel\"\n data-qa=\"magritte-phone-input-national-number-input\"\n aria-describedby={descriptionId}\n />\n </div>\n <FormHelper\n invalid={invalid}\n description={description}\n disabled={isComponentDisabled}\n errorMessage={errorMessage}\n descriptionId={descriptionId}\n data-qa=\"magritte-phone-input-form-helper\"\n />\n </div>\n );\n }\n);\n\nPhoneInput.displayName = 'PhoneInput';\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
package/RegionSelect.d.ts CHANGED
@@ -4,6 +4,7 @@ import { type PhoneCodeOption } from '@hh.ru/magritte-ui-phone-input/useCountryS
4
4
  import { type LibPhoneNumberAPI, type MetadataVariant } from '@hh.ru/magritte-ui-phone-input/useLibPhoneNumber';
5
5
  type RegionSelectProps = {
6
6
  country: CountryCode;
7
+ countryLocked: boolean;
7
8
  selectDataProvider: DataProvider<PhoneCodeOption>;
8
9
  selectOptions: PhoneCodeOption[];
9
10
  callingCode: CountryCallingCode;
package/RegionSelect.js CHANGED
@@ -6,7 +6,7 @@ import { useIsFlagEmojiSupported, useFlagEmojiFont } from '@hh.ru/magritte-commo
6
6
  import { keyboardMatches, keyboardKeys } from '@hh.ru/magritte-common-keyboard';
7
7
  import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
8
8
  import { CellText, Cell, CellRightLabel } from '@hh.ru/magritte-ui-cell';
9
- import { s as styles, C as CallingCodeInput } from './CallingCodeInput-B2J7IUp3.js';
9
+ import { s as styles, C as CallingCodeInput } from './CallingCodeInput-BcCQZB3Z.js';
10
10
  import { Select, RenderHeaderDefault } from '@hh.ru/magritte-ui-select';
11
11
  import '@hh.ru/magritte-common-use-multiple-refs';
12
12
 
@@ -23,7 +23,7 @@ const renderSelectItem = ({ data, onChange, type }) => {
23
23
  }
24
24
  return (jsx(Cell, { left: jsx("div", { className: styles.flagContainer, children: jsx("span", { className: classNames(styles.flagEmoji), children: getFlagEmoji(data.value) }) }), right: jsxs(CellRightLabel, { hideIcon: true, children: ["+", data.callingCode] }), horPadding: false, vertPadding: false, onClick: () => onChange(data, true), tabIndex: -1, children: jsx(CellText, { children: data.text }) }));
25
25
  };
26
- const RegionSelect = forwardRef(({ selectDataProvider, selectOptions, country, callingCode, onChange, invalid, libPhoneNumberAPI, showSearchInMobile, disabled, metadataVariant, descriptionId, }, ref) => {
26
+ const RegionSelect = forwardRef(({ selectDataProvider, selectOptions, country, countryLocked, callingCode, onChange, invalid, libPhoneNumberAPI, showSearchInMobile, disabled, metadataVariant, descriptionId, }, ref) => {
27
27
  const { getCountryCallingCode } = libPhoneNumberAPI;
28
28
  const [inputValue, setInputValue] = useState(`+${callingCode}`);
29
29
  const exactMatchRef = useRef(true);
@@ -44,7 +44,7 @@ const RegionSelect = forwardRef(({ selectDataProvider, selectOptions, country, c
44
44
  onChange?.(selectedValue.value, getCountryCallingCode(selectedValue.value));
45
45
  }, widthEqualToActivator: false, searchable: true, renderMobileItem: renderSelectItem, renderDesktopItem: renderSelectItem, pickerRef: pickerRefCallback, renderHeader: (props) => {
46
46
  return jsx(RenderHeaderDefault, { ...props, searchable: showSearchInMobile });
47
- }, renderTrigger: ({ setSearchValue, onChange: toggleVisibility, onFocus, onBlur, onKeyDown, ref: triggerRef, }) => (jsx(CallingCodeInput, { ref: triggerRef, inputElementRef: ref, className: !isFlagEmojiSupported && styles.noFlagEmoji, flag: jsx("span", { className: classNames(styles.flagEmoji), children: getFlagEmoji(country) }), invalid: invalid, disabled: disabled, descriptionId: descriptionId, onKeyDownContainer: (event) => {
47
+ }, renderTrigger: ({ setSearchValue, onChange: toggleVisibility, onFocus, onBlur, onKeyDown, ref: triggerRef, }) => (jsx(CallingCodeInput, { ref: triggerRef, inputElementRef: ref, className: !isFlagEmojiSupported && styles.noFlagEmoji, flag: jsx("span", { className: classNames(styles.flagEmoji), children: getFlagEmoji(country) }), invalid: invalid, disabled: disabled || countryLocked, descriptionId: descriptionId, onKeyDownContainer: (event) => {
48
48
  if (isMobile &&
49
49
  keyboardMatches(event.nativeEvent, [keyboardKeys.Space, keyboardKeys.Enter])) {
50
50
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"RegionSelect.js","sources":["src/RegionSelect.tsx"],"sourcesContent":["import { type Ref, forwardRef, useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { type CountryCode, type CountryCallingCode } from 'libphonenumber-js';\n\nimport { DataProvider } from '@hh.ru/magritte-common-data-provider';\nimport { useFlagEmojiFont, useIsFlagEmojiSupported } from '@hh.ru/magritte-common-flag-emoji-font';\nimport { keyboardKeys, keyboardMatches } from '@hh.ru/magritte-common-keyboard';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Cell, CellRightLabel, CellText } from '@hh.ru/magritte-ui-cell';\nimport { CallingCodeInput } from '@hh.ru/magritte-ui-phone-input/CallingCodeInput';\nimport { type PhoneCodeOption } from '@hh.ru/magritte-ui-phone-input/useCountrySelectDataProvider';\nimport { type LibPhoneNumberAPI, type MetadataVariant } from '@hh.ru/magritte-ui-phone-input/useLibPhoneNumber';\nimport { RenderOptionType, Select, RenderHeaderDefault } from '@hh.ru/magritte-ui-select';\n\nimport styles from './phoneInput.less';\n\nconst getFlagEmoji = (countryCode: CountryCode) => {\n const codePoints = countryCode\n .toUpperCase()\n .split('')\n .map((char) => 127397 + char.charCodeAt(0));\n return String.fromCodePoint(...codePoints);\n};\n\nconst renderSelectItem: RenderOptionType<PhoneCodeOption> = ({ data, onChange, type }) => {\n if (type === 'delimiter') {\n return (\n <CellText maxLines={1} style=\"secondary\">\n {data.text}\n </CellText>\n );\n }\n\n return (\n <Cell\n left={\n <div className={styles.flagContainer}>\n <span className={classNames(styles.flagEmoji)}>{getFlagEmoji(data.value)}</span>\n </div>\n }\n right={<CellRightLabel hideIcon>+{data.callingCode}</CellRightLabel>}\n horPadding={false}\n vertPadding={false}\n onClick={() => onChange(data, true)}\n tabIndex={-1}\n >\n <CellText>{data.text}</CellText>\n </Cell>\n );\n};\n\ntype RegionSelectProps = {\n country: CountryCode;\n selectDataProvider: DataProvider<PhoneCodeOption>;\n selectOptions: PhoneCodeOption[];\n callingCode: CountryCallingCode;\n onChange: (country: CountryCode, callingCode: CountryCallingCode) => void;\n availableCountries?: CountryCode[];\n priorityCountries: CountryCode[];\n invalid?: boolean;\n libPhoneNumberAPI: LibPhoneNumberAPI;\n showSearchInMobile: boolean;\n disabled?: boolean;\n metadataVariant: MetadataVariant;\n descriptionId: string;\n};\n\nexport const RegionSelect = forwardRef<HTMLInputElement, RegionSelectProps>(\n (\n {\n selectDataProvider,\n selectOptions,\n country,\n callingCode,\n onChange,\n invalid,\n libPhoneNumberAPI,\n showSearchInMobile,\n disabled,\n metadataVariant,\n descriptionId,\n },\n ref\n ) => {\n const { getCountryCallingCode } = libPhoneNumberAPI;\n const [inputValue, setInputValue] = useState<string>(`+${callingCode}`);\n const exactMatchRef = useRef(true);\n const { isMobile } = useBreakpoint();\n\n const isFlagEmojiSupported = useIsFlagEmojiSupported();\n useFlagEmojiFont(metadataVariant, isFlagEmojiSupported);\n const pickerRefCallback = useCallback(\n (node: HTMLElement) => {\n if (node) {\n node.classList.toggle(styles.noFlagEmoji, !isFlagEmojiSupported);\n }\n },\n [isFlagEmojiSupported]\n );\n\n useEffect(() => {\n setInputValue(`+${callingCode}`);\n }, [callingCode]);\n\n const value = useMemo(() => selectOptions.find((item) => item.value === country), [selectOptions, country]);\n return (\n <Select\n type=\"radio\"\n dataProvider={selectDataProvider}\n value={value}\n onChange={(selectedValue) => {\n exactMatchRef.current = true;\n onChange?.(selectedValue.value, getCountryCallingCode(selectedValue.value));\n }}\n widthEqualToActivator={false}\n searchable={true}\n renderMobileItem={renderSelectItem}\n renderDesktopItem={renderSelectItem}\n pickerRef={pickerRefCallback}\n renderHeader={(props) => {\n return <RenderHeaderDefault {...props} searchable={showSearchInMobile} />;\n }}\n renderTrigger={({\n setSearchValue,\n onChange: toggleVisibility,\n onFocus,\n onBlur,\n onKeyDown,\n ref: triggerRef,\n }) => (\n <CallingCodeInput\n ref={triggerRef as Ref<HTMLDivElement>}\n inputElementRef={ref}\n className={!isFlagEmojiSupported && styles.noFlagEmoji}\n flag={<span className={classNames(styles.flagEmoji)}>{getFlagEmoji(country)}</span>}\n invalid={invalid}\n disabled={disabled}\n descriptionId={descriptionId}\n onKeyDownContainer={(event) => {\n if (\n isMobile &&\n keyboardMatches(event.nativeEvent, [keyboardKeys.Space, keyboardKeys.Enter])\n ) {\n event.preventDefault();\n toggleVisibility(true);\n }\n }}\n onChange={(value) => {\n if (value === '') {\n setInputValue('+');\n setSearchValue('');\n }\n if (!value.startsWith('+')) {\n return;\n }\n const code = value.substring(1);\n let hasPartialMatch = false;\n const exactMatch = selectOptions.find((option) => {\n if (!option.value) {\n return false;\n }\n\n if (option.callingCode.startsWith(code)) {\n hasPartialMatch = true;\n }\n\n return option.callingCode === code;\n });\n\n // выполнится даже если есть точное совпадение\n if (hasPartialMatch) {\n exactMatchRef.current = false;\n setInputValue(`+${code}`);\n setSearchValue(code === '' ? '' : `+${code}`);\n }\n\n if (exactMatch) {\n exactMatchRef.current = true;\n onChange(exactMatch.value, exactMatch.callingCode);\n }\n }}\n value={inputValue}\n onFocus={() => {\n setSearchValue('');\n onFocus?.();\n }}\n onBlur={onBlur}\n onKeyDownInput={onKeyDown}\n />\n )}\n onBlur={() => {\n if (!exactMatchRef.current) {\n const code = inputValue.substring(1);\n const bestMatch = selectOptions.find((option) => option?.callingCode.startsWith(code));\n if (bestMatch && bestMatch.value) {\n onChange(bestMatch.value, bestMatch.callingCode);\n setInputValue(`+${bestMatch.callingCode}`);\n }\n }\n }}\n />\n );\n }\n);\n\nRegionSelect.displayName = 'RegionSelect';\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"RegionSelect.js","sources":["src/RegionSelect.tsx"],"sourcesContent":["import { type Ref, forwardRef, useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { type CountryCode, type CountryCallingCode } from 'libphonenumber-js';\n\nimport { DataProvider } from '@hh.ru/magritte-common-data-provider';\nimport { useFlagEmojiFont, useIsFlagEmojiSupported } from '@hh.ru/magritte-common-flag-emoji-font';\nimport { keyboardKeys, keyboardMatches } from '@hh.ru/magritte-common-keyboard';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Cell, CellRightLabel, CellText } from '@hh.ru/magritte-ui-cell';\nimport { CallingCodeInput } from '@hh.ru/magritte-ui-phone-input/CallingCodeInput';\nimport { type PhoneCodeOption } from '@hh.ru/magritte-ui-phone-input/useCountrySelectDataProvider';\nimport { type LibPhoneNumberAPI, type MetadataVariant } from '@hh.ru/magritte-ui-phone-input/useLibPhoneNumber';\nimport { RenderOptionType, Select, RenderHeaderDefault } from '@hh.ru/magritte-ui-select';\n\nimport styles from './phoneInput.less';\n\nconst getFlagEmoji = (countryCode: CountryCode) => {\n const codePoints = countryCode\n .toUpperCase()\n .split('')\n .map((char) => 127397 + char.charCodeAt(0));\n return String.fromCodePoint(...codePoints);\n};\n\nconst renderSelectItem: RenderOptionType<PhoneCodeOption> = ({ data, onChange, type }) => {\n if (type === 'delimiter') {\n return (\n <CellText maxLines={1} style=\"secondary\">\n {data.text}\n </CellText>\n );\n }\n\n return (\n <Cell\n left={\n <div className={styles.flagContainer}>\n <span className={classNames(styles.flagEmoji)}>{getFlagEmoji(data.value)}</span>\n </div>\n }\n right={<CellRightLabel hideIcon>+{data.callingCode}</CellRightLabel>}\n horPadding={false}\n vertPadding={false}\n onClick={() => onChange(data, true)}\n tabIndex={-1}\n >\n <CellText>{data.text}</CellText>\n </Cell>\n );\n};\n\ntype RegionSelectProps = {\n country: CountryCode;\n countryLocked: boolean;\n selectDataProvider: DataProvider<PhoneCodeOption>;\n selectOptions: PhoneCodeOption[];\n callingCode: CountryCallingCode;\n onChange: (country: CountryCode, callingCode: CountryCallingCode) => void;\n availableCountries?: CountryCode[];\n priorityCountries: CountryCode[];\n invalid?: boolean;\n libPhoneNumberAPI: LibPhoneNumberAPI;\n showSearchInMobile: boolean;\n disabled?: boolean;\n metadataVariant: MetadataVariant;\n descriptionId: string;\n};\n\nexport const RegionSelect = forwardRef<HTMLInputElement, RegionSelectProps>(\n (\n {\n selectDataProvider,\n selectOptions,\n country,\n countryLocked,\n callingCode,\n onChange,\n invalid,\n libPhoneNumberAPI,\n showSearchInMobile,\n disabled,\n metadataVariant,\n descriptionId,\n },\n ref\n ) => {\n const { getCountryCallingCode } = libPhoneNumberAPI;\n const [inputValue, setInputValue] = useState<string>(`+${callingCode}`);\n const exactMatchRef = useRef(true);\n const { isMobile } = useBreakpoint();\n\n const isFlagEmojiSupported = useIsFlagEmojiSupported();\n useFlagEmojiFont(metadataVariant, isFlagEmojiSupported);\n const pickerRefCallback = useCallback(\n (node: HTMLElement) => {\n if (node) {\n node.classList.toggle(styles.noFlagEmoji, !isFlagEmojiSupported);\n }\n },\n [isFlagEmojiSupported]\n );\n\n useEffect(() => {\n setInputValue(`+${callingCode}`);\n }, [callingCode]);\n\n const value = useMemo(() => selectOptions.find((item) => item.value === country), [selectOptions, country]);\n return (\n <Select\n type=\"radio\"\n dataProvider={selectDataProvider}\n value={value}\n onChange={(selectedValue) => {\n exactMatchRef.current = true;\n onChange?.(selectedValue.value, getCountryCallingCode(selectedValue.value));\n }}\n widthEqualToActivator={false}\n searchable={true}\n renderMobileItem={renderSelectItem}\n renderDesktopItem={renderSelectItem}\n pickerRef={pickerRefCallback}\n renderHeader={(props) => {\n return <RenderHeaderDefault {...props} searchable={showSearchInMobile} />;\n }}\n renderTrigger={({\n setSearchValue,\n onChange: toggleVisibility,\n onFocus,\n onBlur,\n onKeyDown,\n ref: triggerRef,\n }) => (\n <CallingCodeInput\n ref={triggerRef as Ref<HTMLDivElement>}\n inputElementRef={ref}\n className={!isFlagEmojiSupported && styles.noFlagEmoji}\n flag={<span className={classNames(styles.flagEmoji)}>{getFlagEmoji(country)}</span>}\n invalid={invalid}\n disabled={disabled || countryLocked}\n descriptionId={descriptionId}\n onKeyDownContainer={(event) => {\n if (\n isMobile &&\n keyboardMatches(event.nativeEvent, [keyboardKeys.Space, keyboardKeys.Enter])\n ) {\n event.preventDefault();\n toggleVisibility(true);\n }\n }}\n onChange={(value) => {\n if (value === '') {\n setInputValue('+');\n setSearchValue('');\n }\n if (!value.startsWith('+')) {\n return;\n }\n const code = value.substring(1);\n let hasPartialMatch = false;\n const exactMatch = selectOptions.find((option) => {\n if (!option.value) {\n return false;\n }\n\n if (option.callingCode.startsWith(code)) {\n hasPartialMatch = true;\n }\n\n return option.callingCode === code;\n });\n\n // выполнится даже если есть точное совпадение\n if (hasPartialMatch) {\n exactMatchRef.current = false;\n setInputValue(`+${code}`);\n setSearchValue(code === '' ? '' : `+${code}`);\n }\n\n if (exactMatch) {\n exactMatchRef.current = true;\n onChange(exactMatch.value, exactMatch.callingCode);\n }\n }}\n value={inputValue}\n onFocus={() => {\n setSearchValue('');\n onFocus?.();\n }}\n onBlur={onBlur}\n onKeyDownInput={onKeyDown}\n />\n )}\n onBlur={() => {\n if (!exactMatchRef.current) {\n const code = inputValue.substring(1);\n const bestMatch = selectOptions.find((option) => option?.callingCode.startsWith(code));\n if (bestMatch && bestMatch.value) {\n onChange(bestMatch.value, bestMatch.callingCode);\n setInputValue(`+${bestMatch.callingCode}`);\n }\n }\n }}\n />\n );\n }\n);\n\nRegionSelect.displayName = 'RegionSelect';\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
package/index.css CHANGED
@@ -1,45 +1,45 @@
1
1
  :root{
2
- --magritte-color-text-primary-v24-7-2:#000000;
3
- --magritte-color-component-input-stroke-state-field-hovered-v24-7-2:#CCD5DF;
4
- --magritte-color-component-input-stroke-state-field-focused-v24-7-2:#0070ff;
5
- --magritte-color-component-input-stroke-state-accent-focused-accessible-v24-7-2:#0070ff7a;
6
- --magritte-color-component-input-stroke-state-field-invalid-v24-7-2:#ff4d3a;
7
- --magritte-color-component-input-stroke-state-negative-focused-accessible-v24-7-2:#ff4d3a7a;
8
- --magritte-color-component-input-stroke-state-field-disabled-v24-7-2:#EEF1F7;
9
- --magritte-color-component-input-background-field-v24-7-2:#ffffff;
10
- --magritte-color-component-input-background-state-field-hovered-v24-7-2:#ffffff;
11
- --magritte-color-component-input-background-state-field-focused-v24-7-2:#ffffff;
12
- --magritte-color-component-input-background-state-field-invalid-v24-7-2:#ffffff;
13
- --magritte-color-component-input-background-state-field-disabled-v24-7-2:#F4F6FB;
14
- --magritte-color-component-input-stroke-field-v24-7-2:#DCE3EB;
15
- --magritte-color-component-input-text-state-content-disabled-v24-7-2:#AABBCA;
16
- --magritte-color-component-input-text-state-content-hovered-v24-7-2:#000000;
17
- --magritte-color-component-input-text-state-content-focused-v24-7-2:#000000;
18
- --magritte-color-component-input-text-state-content-invalid-v24-7-2:#000000;
19
- --magritte-color-component-input-text-content-v24-7-2:#000000;
2
+ --magritte-color-text-primary-v24-7-3:#000000;
3
+ --magritte-color-component-input-stroke-state-field-hovered-v24-7-3:#CCD5DF;
4
+ --magritte-color-component-input-stroke-state-field-focused-v24-7-3:#0070ff;
5
+ --magritte-color-component-input-stroke-state-accent-focused-accessible-v24-7-3:#0070ff7a;
6
+ --magritte-color-component-input-stroke-state-field-invalid-v24-7-3:#ff4d3a;
7
+ --magritte-color-component-input-stroke-state-negative-focused-accessible-v24-7-3:#ff4d3a7a;
8
+ --magritte-color-component-input-stroke-state-field-disabled-v24-7-3:#EEF1F7;
9
+ --magritte-color-component-input-background-field-v24-7-3:#ffffff;
10
+ --magritte-color-component-input-background-state-field-hovered-v24-7-3:#ffffff;
11
+ --magritte-color-component-input-background-state-field-focused-v24-7-3:#ffffff;
12
+ --magritte-color-component-input-background-state-field-invalid-v24-7-3:#ffffff;
13
+ --magritte-color-component-input-background-state-field-disabled-v24-7-3:#F4F6FB;
14
+ --magritte-color-component-input-stroke-field-v24-7-3:#DCE3EB;
15
+ --magritte-color-component-input-text-state-content-disabled-v24-7-3:#AABBCA;
16
+ --magritte-color-component-input-text-state-content-hovered-v24-7-3:#000000;
17
+ --magritte-color-component-input-text-state-content-focused-v24-7-3:#000000;
18
+ --magritte-color-component-input-text-state-content-invalid-v24-7-3:#000000;
19
+ --magritte-color-component-input-text-content-v24-7-3:#000000;
20
20
  }
21
21
 
22
22
  .magritte-night-theme{
23
- --magritte-color-text-primary-v24-7-2:#ffffff;
24
- --magritte-color-component-input-stroke-state-field-hovered-v24-7-2:#3B3B3B;
25
- --magritte-color-component-input-stroke-state-field-disabled-v24-7-2:#1B1B1B;
26
- --magritte-color-component-input-background-field-v24-7-2:#111;
27
- --magritte-color-component-input-background-state-field-hovered-v24-7-2:#111;
28
- --magritte-color-component-input-background-state-field-focused-v24-7-2:#111;
29
- --magritte-color-component-input-background-state-field-invalid-v24-7-2:#111;
30
- --magritte-color-component-input-background-state-field-disabled-v24-7-2:#111;
31
- --magritte-color-component-input-stroke-field-v24-7-2:#303030;
32
- --magritte-color-component-input-text-content-v24-7-2:#ffffff;
33
- --magritte-color-component-input-text-state-content-disabled-v24-7-2:#474747;
34
- --magritte-color-component-input-text-state-content-hovered-v24-7-2:#ffffff;
35
- --magritte-color-component-input-text-state-content-focused-v24-7-2:#ffffff;
36
- --magritte-color-component-input-text-state-content-invalid-v24-7-2:#ffffff;
23
+ --magritte-color-text-primary-v24-7-3:#ffffff;
24
+ --magritte-color-component-input-stroke-state-field-hovered-v24-7-3:#3B3B3B;
25
+ --magritte-color-component-input-stroke-state-field-disabled-v24-7-3:#1B1B1B;
26
+ --magritte-color-component-input-background-field-v24-7-3:#111;
27
+ --magritte-color-component-input-background-state-field-hovered-v24-7-3:#111;
28
+ --magritte-color-component-input-background-state-field-focused-v24-7-3:#111;
29
+ --magritte-color-component-input-background-state-field-invalid-v24-7-3:#111;
30
+ --magritte-color-component-input-background-state-field-disabled-v24-7-3:#111;
31
+ --magritte-color-component-input-stroke-field-v24-7-3:#303030;
32
+ --magritte-color-component-input-text-content-v24-7-3:#ffffff;
33
+ --magritte-color-component-input-text-state-content-disabled-v24-7-3:#474747;
34
+ --magritte-color-component-input-text-state-content-hovered-v24-7-3:#ffffff;
35
+ --magritte-color-component-input-text-state-content-focused-v24-7-3:#ffffff;
36
+ --magritte-color-component-input-text-state-content-invalid-v24-7-3:#ffffff;
37
37
  }
38
38
 
39
39
  .magritte-zp-day-theme{
40
- --magritte-color-component-input-stroke-state-field-focused-v24-7-2:#7195AF;
40
+ --magritte-color-component-input-stroke-state-field-focused-v24-7-3:#7195AF;
41
41
  }
42
- .magritte-calling-code-input___Hb20f_4-2-74{
42
+ .magritte-calling-code-input___Hb20f_4-3-0{
43
43
  display:none;
44
44
  position:absolute;
45
45
  inset:0;
@@ -48,8 +48,8 @@
48
48
  border:0;
49
49
  text-overflow:ellipsis;
50
50
  padding:0;
51
- color:var(--magritte-color-component-input-text-content-v24-7-2);
52
- caret-color:var(--magritte-ui-input-caret-color-override, var(--magritte-color-text-primary-v24-7-2));
51
+ color:var(--magritte-color-component-input-text-content-v24-7-3);
52
+ caret-color:var(--magritte-ui-input-caret-color-override, var(--magritte-color-text-primary-v24-7-3));
53
53
  outline:none;
54
54
  font-family:"hh sans";
55
55
  font-weight:400;
@@ -61,72 +61,75 @@
61
61
  text-decoration:none;
62
62
  }
63
63
  @media (min-width: 1020px){
64
- body.magritte-old-layout .magritte-calling-code-input___Hb20f_4-2-74{
64
+ body.magritte-old-layout .magritte-calling-code-input___Hb20f_4-3-0{
65
65
  display:block;
66
66
  }
67
67
  }
68
68
  @media (min-width: 1024px){
69
- body:not(.magritte-old-layout) .magritte-calling-code-input___Hb20f_4-2-74{
69
+ body:not(.magritte-old-layout) .magritte-calling-code-input___Hb20f_4-3-0{
70
70
  display:block;
71
71
  }
72
72
  }
73
- .magritte-calling-code-input-container___UXmHV_4-2-74{
73
+ .magritte-calling-code-input-container___UXmHV_4-3-0{
74
74
  display:inline-flex;
75
75
  gap:12px;
76
- background-color:var(--magritte-color-component-input-background-field-v24-7-2);
76
+ background-color:var(--magritte-color-component-input-background-field-v24-7-3);
77
77
  padding:16px;
78
78
  border-radius:12px;
79
- box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-field-v24-7-2);
79
+ box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-field-v24-7-3);
80
80
  cursor:text;
81
81
  }
82
- .magritte-calling-code-input-container___UXmHV_4-2-74:hover:not(.magritte-disabled___fvEeH_4-2-74):not(.magritte-focused___Ok8x4_4-2-74):not(.magritte-invalid___kptbH_4-2-74){
83
- background-color:var(--magritte-color-component-input-background-state-field-hovered-v24-7-2);
84
- box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-hovered-v24-7-2);
82
+ .magritte-calling-code-input-container___UXmHV_4-3-0:hover:not(.magritte-disabled___fvEeH_4-3-0):not(.magritte-focused___Ok8x4_4-3-0):not(.magritte-invalid___kptbH_4-3-0){
83
+ background-color:var(--magritte-color-component-input-background-state-field-hovered-v24-7-3);
84
+ box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-hovered-v24-7-3);
85
85
  }
86
- .magritte-calling-code-input-container___UXmHV_4-2-74:hover:not(.magritte-disabled___fvEeH_4-2-74):not(.magritte-focused___Ok8x4_4-2-74):not(.magritte-invalid___kptbH_4-2-74) .magritte-calling-code-input___Hb20f_4-2-74,
87
- .magritte-calling-code-input-container___UXmHV_4-2-74:hover:not(.magritte-disabled___fvEeH_4-2-74):not(.magritte-focused___Ok8x4_4-2-74):not(.magritte-invalid___kptbH_4-2-74) .magritte-ghost-data___zShvn_4-2-74{
88
- color:var(--magritte-color-component-input-text-state-content-hovered-v24-7-2);
86
+ .magritte-calling-code-input-container___UXmHV_4-3-0:hover:not(.magritte-disabled___fvEeH_4-3-0):not(.magritte-focused___Ok8x4_4-3-0):not(.magritte-invalid___kptbH_4-3-0) .magritte-calling-code-input___Hb20f_4-3-0,
87
+ .magritte-calling-code-input-container___UXmHV_4-3-0:hover:not(.magritte-disabled___fvEeH_4-3-0):not(.magritte-focused___Ok8x4_4-3-0):not(.magritte-invalid___kptbH_4-3-0) .magritte-ghost-data___zShvn_4-3-0{
88
+ color:var(--magritte-color-component-input-text-state-content-hovered-v24-7-3);
89
89
  }
90
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-focused___Ok8x4_4-2-74{
91
- background-color:var(--magritte-color-component-input-background-state-field-focused-v24-7-2);
92
- box-shadow:inset 0 0 0 2px var(--magritte-color-component-input-stroke-state-field-focused-v24-7-2);
90
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-focused___Ok8x4_4-3-0{
91
+ background-color:var(--magritte-color-component-input-background-state-field-focused-v24-7-3);
92
+ box-shadow:inset 0 0 0 2px var(--magritte-color-component-input-stroke-state-field-focused-v24-7-3);
93
93
  }
94
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-focused___Ok8x4_4-2-74 .magritte-calling-code-input___Hb20f_4-2-74,
95
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-focused___Ok8x4_4-2-74 .magritte-ghost-data___zShvn_4-2-74{
96
- color:var(--magritte-color-component-input-text-state-content-focused-v24-7-2);
94
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-focused___Ok8x4_4-3-0 .magritte-calling-code-input___Hb20f_4-3-0,
95
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-focused___Ok8x4_4-3-0 .magritte-ghost-data___zShvn_4-3-0{
96
+ color:var(--magritte-color-component-input-text-state-content-focused-v24-7-3);
97
97
  }
98
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-focused___Ok8x4_4-2-74.magritte-invalid___kptbH_4-2-74{
99
- background-color:var(--magritte-color-component-input-background-state-field-invalid-v24-7-2);
100
- box-shadow:inset 0 0 0 2px var(--magritte-color-component-input-stroke-state-field-invalid-v24-7-2);
98
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-focused___Ok8x4_4-3-0.magritte-invalid___kptbH_4-3-0{
99
+ background-color:var(--magritte-color-component-input-background-state-field-invalid-v24-7-3);
100
+ box-shadow:inset 0 0 0 2px var(--magritte-color-component-input-stroke-state-field-invalid-v24-7-3);
101
101
  }
102
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-focused___Ok8x4_4-2-74.magritte-invalid___kptbH_4-2-74 .magritte-calling-code-input___Hb20f_4-2-74,
103
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-focused___Ok8x4_4-2-74.magritte-invalid___kptbH_4-2-74 .magritte-ghost-data___zShvn_4-2-74{
104
- color:var(--magritte-color-component-input-text-state-content-invalid-v24-7-2);
102
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-focused___Ok8x4_4-3-0.magritte-invalid___kptbH_4-3-0 .magritte-calling-code-input___Hb20f_4-3-0,
103
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-focused___Ok8x4_4-3-0.magritte-invalid___kptbH_4-3-0 .magritte-ghost-data___zShvn_4-3-0{
104
+ color:var(--magritte-color-component-input-text-state-content-invalid-v24-7-3);
105
105
  }
106
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-focus-visible___kbwmg_4-2-74{
107
- outline:var(--magritte-color-component-input-stroke-state-accent-focused-accessible-v24-7-2) solid 4px;
106
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-focus-visible___kbwmg_4-3-0{
107
+ outline:var(--magritte-color-component-input-stroke-state-accent-focused-accessible-v24-7-3) solid 4px;
108
108
  }
109
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-focus-visible___kbwmg_4-2-74.magritte-invalid___kptbH_4-2-74{
110
- outline-color:var(--magritte-color-component-input-stroke-state-negative-focused-accessible-v24-7-2);
109
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-focus-visible___kbwmg_4-3-0.magritte-invalid___kptbH_4-3-0{
110
+ outline-color:var(--magritte-color-component-input-stroke-state-negative-focused-accessible-v24-7-3);
111
111
  }
112
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-invalid___kptbH_4-2-74{
113
- background-color:var(--magritte-color-component-input-background-state-field-invalid-v24-7-2);
114
- box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-invalid-v24-7-2);
112
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-invalid___kptbH_4-3-0{
113
+ background-color:var(--magritte-color-component-input-background-state-field-invalid-v24-7-3);
114
+ box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-invalid-v24-7-3);
115
115
  }
116
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-invalid___kptbH_4-2-74 .magritte-calling-code-input___Hb20f_4-2-74,
117
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-invalid___kptbH_4-2-74 .magritte-ghost-data___zShvn_4-2-74{
118
- color:var(--magritte-color-component-input-text-state-content-invalid-v24-7-2);
116
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-invalid___kptbH_4-3-0 .magritte-calling-code-input___Hb20f_4-3-0,
117
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-invalid___kptbH_4-3-0 .magritte-ghost-data___zShvn_4-3-0{
118
+ color:var(--magritte-color-component-input-text-state-content-invalid-v24-7-3);
119
119
  }
120
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-disabled___fvEeH_4-2-74{
120
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-disabled___fvEeH_4-3-0{
121
121
  cursor:default;
122
- background-color:var(--magritte-color-component-input-background-state-field-disabled-v24-7-2);
123
- box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-disabled-v24-7-2);
122
+ background-color:var(--magritte-color-component-input-background-state-field-disabled-v24-7-3);
123
+ box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-disabled-v24-7-3);
124
124
  }
125
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-disabled___fvEeH_4-2-74 .magritte-calling-code-input___Hb20f_4-2-74,
126
- .magritte-calling-code-input-container___UXmHV_4-2-74.magritte-disabled___fvEeH_4-2-74 .magritte-ghost-data___zShvn_4-2-74{
127
- color:var(--magritte-color-component-input-text-state-content-disabled-v24-7-2);
125
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-disabled___fvEeH_4-3-0 .magritte-calling-code-input___Hb20f_4-3-0,
126
+ .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-disabled___fvEeH_4-3-0 .magritte-ghost-data___zShvn_4-3-0{
127
+ color:var(--magritte-color-component-input-text-state-content-disabled-v24-7-3);
128
128
  }
129
- .magritte-flag-container___wsoAd_4-2-74{
129
+ .magritte-country-locked___9HDyw_4-3-0 .magritte-calling-code-input-container___UXmHV_4-3-0.magritte-invalid___kptbH_4-3-0{
130
+ box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-invalid-v24-7-3);
131
+ }
132
+ .magritte-flag-container___wsoAd_4-3-0{
130
133
  display:flex;
131
134
  align-items:center;
132
135
  height:24px;
@@ -135,11 +138,11 @@
135
138
  font-size:24px;
136
139
  line-height:24px;
137
140
  }
138
- .magritte-input-container___WSSZi_4-2-74{
141
+ .magritte-input-container___WSSZi_4-3-0{
139
142
  position:relative;
140
143
  flex:0 1 auto;
141
144
  }
142
- .magritte-ghost-data___zShvn_4-2-74{
145
+ .magritte-ghost-data___zShvn_4-3-0{
143
146
  display:flex;
144
147
  align-items:center;
145
148
  height:24px;
@@ -154,23 +157,23 @@
154
157
  text-decoration:none;
155
158
  }
156
159
  @media (min-width: 1020px){
157
- body.magritte-old-layout .magritte-ghost-data___zShvn_4-2-74{
160
+ body.magritte-old-layout .magritte-ghost-data___zShvn_4-3-0{
158
161
  visibility:hidden;
159
162
  }
160
163
  }
161
164
  @media (min-width: 1024px){
162
- body:not(.magritte-old-layout) .magritte-ghost-data___zShvn_4-2-74{
165
+ body:not(.magritte-old-layout) .magritte-ghost-data___zShvn_4-3-0{
163
166
  visibility:hidden;
164
167
  }
165
168
  }
166
- .magritte-phone-input-container___D587K_4-2-74{
169
+ .magritte-phone-input-container___D587K_4-3-0{
167
170
  display:flex;
168
171
  gap:12px;
169
172
  }
170
- .magritte-flag-emoji___pyJS7_4-2-74{
173
+ .magritte-flag-emoji___pyJS7_4-3-0{
171
174
  display:inline;
172
175
  }
173
- .magritte-no-flag-emoji___yiuyr_4-2-74 .magritte-flag-emoji___pyJS7_4-2-74{
176
+ .magritte-no-flag-emoji___yiuyr_4-3-0 .magritte-flag-emoji___pyJS7_4-3-0{
174
177
  font-family:FlagEmoji;
175
178
  font-weight:normal;
176
179
  font-size:18px;
package/index.js CHANGED
@@ -2,17 +2,17 @@ import './index.css';
2
2
  export { PhoneInput } from './PhoneInput.js';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
5
+ import 'classnames';
5
6
  import '@hh.ru/magritte-common-use-disabled';
6
7
  import '@hh.ru/magritte-common-use-multiple-refs';
7
8
  import '@hh.ru/magritte-ui-form-helper';
8
9
  import '@hh.ru/magritte-ui-input';
9
10
  import './RegionSelect.js';
10
- import 'classnames';
11
11
  import '@hh.ru/magritte-common-flag-emoji-font';
12
12
  import '@hh.ru/magritte-common-keyboard';
13
13
  import '@hh.ru/magritte-ui-breakpoint';
14
14
  import '@hh.ru/magritte-ui-cell';
15
- import './CallingCodeInput-B2J7IUp3.js';
15
+ import './CallingCodeInput-BcCQZB3Z.js';
16
16
  import '@hh.ru/magritte-ui-select';
17
17
  import './phoneFormatter.js';
18
18
  import './useCountrySelectDataProvider.js';
@@ -17129,4 +17129,4 @@ var metadata_max = {
17129
17129
  };
17130
17130
 
17131
17131
  export { countries, country_calling_codes, metadata_max as default, nonGeographic, version };
17132
- //# sourceMappingURL=metadata.max-_TCaIJWC.js.map
17132
+ //# sourceMappingURL=metadata.max-C-HdkbBh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.max-_TCaIJWC.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"metadata.max-C-HdkbBh.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -12474,4 +12474,4 @@ var metadata_mobile = {
12474
12474
  };
12475
12475
 
12476
12476
  export { countries, country_calling_codes, metadata_mobile as default, nonGeographic, version };
12477
- //# sourceMappingURL=metadata.mobile-DlAlt9iv.js.map
12477
+ //# sourceMappingURL=metadata.mobile-AjZd4M6a.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.mobile-DlAlt9iv.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"metadata.mobile-AjZd4M6a.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -309,4 +309,4 @@ var metadata_ru_by_kz_uz_max = {
309
309
  };
310
310
 
311
311
  export { countries, country_calling_codes, metadata_ru_by_kz_uz_max as default, nonGeographic, version };
312
- //# sourceMappingURL=metadata.ru_by_kz_uz.max-B4n-estX.js.map
312
+ //# sourceMappingURL=metadata.ru_by_kz_uz.max-BOkcOFdo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.ru_by_kz_uz.max-B4n-estX.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"metadata.ru_by_kz_uz.max-BOkcOFdo.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -234,4 +234,4 @@ var metadata_ru_by_kz_uz_mobile = {
234
234
  };
235
235
 
236
236
  export { countries, country_calling_codes, metadata_ru_by_kz_uz_mobile as default, nonGeographic, version };
237
- //# sourceMappingURL=metadata.ru_by_kz_uz.mobile-JZvRvZvv.js.map
237
+ //# sourceMappingURL=metadata.ru_by_kz_uz.mobile-EY2PCC7u.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.ru_by_kz_uz.mobile-JZvRvZvv.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"metadata.ru_by_kz_uz.mobile-EY2PCC7u.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hh.ru/magritte-ui-phone-input",
3
- "version": "4.2.74",
3
+ "version": "4.3.0",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -27,19 +27,19 @@
27
27
  "@hh.ru/magritte-common-keyboard": "4.3.4",
28
28
  "@hh.ru/magritte-common-use-disabled": "1.0.15",
29
29
  "@hh.ru/magritte-common-use-multiple-refs": "1.1.11",
30
- "@hh.ru/magritte-design-tokens": "24.7.2",
30
+ "@hh.ru/magritte-design-tokens": "24.7.3",
31
31
  "@hh.ru/magritte-ui-breakpoint": "6.1.1",
32
- "@hh.ru/magritte-ui-cell": "7.2.28",
33
- "@hh.ru/magritte-ui-form-helper": "2.1.15",
34
- "@hh.ru/magritte-ui-input": "9.4.30",
32
+ "@hh.ru/magritte-ui-cell": "7.2.29",
33
+ "@hh.ru/magritte-ui-form-helper": "2.1.16",
34
+ "@hh.ru/magritte-ui-input": "9.4.31",
35
35
  "@hh.ru/magritte-ui-mock-component": "1.1.7",
36
- "@hh.ru/magritte-ui-select": "12.9.10",
37
- "@hh.ru/magritte-ui-typography": "5.3.6",
36
+ "@hh.ru/magritte-ui-select": "12.9.11",
37
+ "@hh.ru/magritte-ui-typography": "5.3.7",
38
38
  "libphonenumber-js": "1.11.12"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "classnames": ">=2.3.2",
42
42
  "react": ">=18.2.0"
43
43
  },
44
- "gitHead": "eaaa9c7fae970de7b7e95e31aee6b45f0ec03f8b"
44
+ "gitHead": "70ac6d4c2faa2fe631fae008bb817f6cb21f6520"
45
45
  }
@@ -7,4 +7,5 @@ export declare const phoneFormatterFactory: (params: {
7
7
  currentCountryRef: RefObject<CountryCode>;
8
8
  availableCountriesRef?: RefObject<CountryCode[] | undefined>;
9
9
  libPhoneNumberAPI: LibPhoneNumberAPI;
10
+ countryLocked: boolean;
10
11
  }) => InputFormatter;
package/phoneFormatter.js CHANGED
@@ -19,7 +19,7 @@ const buildRegExpFromNumber = (number, inTheMiddle = false, optionalDigits = tru
19
19
  return new RegExp(inTheMiddle ? `.*(${regExp}).*` : regExp, 'u');
20
20
  };
21
21
  const phoneFormatterFactory = (params) => {
22
- const { setCountry, currentCountryRef, libPhoneNumberAPI: { formatIncompletePhoneNumber, parsePhoneNumber, getCountryCallingCode }, availableCountriesRef, } = params;
22
+ const { setCountry, currentCountryRef, libPhoneNumberAPI: { formatIncompletePhoneNumber, parsePhoneNumber, getCountryCallingCode }, availableCountriesRef, countryLocked, } = params;
23
23
  return (prevValue, value, caretPosition) => {
24
24
  let sanitizedValue = value.replace(prohibitedSymbolsRegExp, '');
25
25
  let formattedValue = sanitizedValue;
@@ -32,9 +32,10 @@ const phoneFormatterFactory = (params) => {
32
32
  }
33
33
  try {
34
34
  const phoneNumber = parsePhoneNumber(formattedValue, currentCountryRef.current || 'RU');
35
- const allowedCountry = !availableCountriesRef?.current ||
35
+ const allowedCountry = (!availableCountriesRef?.current ||
36
36
  !phoneNumber.country ||
37
- availableCountriesRef.current.includes(phoneNumber.country);
37
+ availableCountriesRef.current.includes(phoneNumber.country)) &&
38
+ (!countryLocked || currentCountryRef.current === phoneNumber.country);
38
39
  const country = (allowedCountry ? phoneNumber.country : false) || currentCountryRef.current || 'RU';
39
40
  formattedValue =
40
41
  phoneNumber.isValid() && allowedCountry
@@ -1 +1 @@
1
- {"version":3,"file":"phoneFormatter.js","sources":["src/phoneFormatter.ts"],"sourcesContent":["import { type RefObject } from 'react';\nimport { type CountryCode } from 'libphonenumber-js';\n\nimport { type InputFormatter } from '@hh.ru/magritte-ui-input';\nimport { type LibPhoneNumberAPI } from '@hh.ru/magritte-ui-phone-input/useLibPhoneNumber';\n\nconst notDigitsOrPlusRegExp = /[\\D+]/g;\nconst prohibitedSymbolsRegExp = /[^0-9+()-]/g;\nconst digitRegexp = /\\d/;\nconst notSpaceRegExp = /[^\\s]/;\n\nconst buildRegExpFromNumber = (number: string, inTheMiddle = false, optionalDigits = true) => {\n const regExp = number\n .split('')\n .reduce<string[]>((acc, char, index) => {\n // символы из строки нужно экранировать т.к. там могут оказаться символы имеющие специальное\n // значение в регулярных выражениях, например +\n acc.push(`\\\\u{${char.charCodeAt(0).toString(16)}}${optionalDigits ? '?' : ''}`);\n if (index !== number.length - 1) {\n acc.push('\\\\s?-?\\\\(?\\\\)?\\\\s?');\n }\n return acc;\n }, [])\n .join('');\n return new RegExp(inTheMiddle ? `.*(${regExp}).*` : regExp, 'u');\n};\n\nexport const phoneFormatterFactory = (params: {\n setCountry: (country: CountryCode) => void;\n currentCountryRef: RefObject<CountryCode>;\n availableCountriesRef?: RefObject<CountryCode[] | undefined>;\n libPhoneNumberAPI: LibPhoneNumberAPI;\n}): InputFormatter => {\n const {\n setCountry,\n currentCountryRef,\n libPhoneNumberAPI: { formatIncompletePhoneNumber, parsePhoneNumber, getCountryCallingCode },\n availableCountriesRef,\n } = params;\n\n return (prevValue: string, value: string, caretPosition: number) => {\n let sanitizedValue = value.replace(prohibitedSymbolsRegExp, '');\n let formattedValue = sanitizedValue;\n let caret = caretPosition;\n\n let digitsBeforeCaret = value.substring(0, caret).replace(notDigitsOrPlusRegExp, '');\n\n // удалили один символ и этот символ не цифра, надо удалить ближайшую цифру слева от каретки\n if (prevValue.length - value.length === 1 && notDigitsOrPlusRegExp.test(prevValue[caretPosition])) {\n digitsBeforeCaret = digitsBeforeCaret.slice(0, -1);\n formattedValue = `${digitsBeforeCaret}${value.substring(caret)}`;\n }\n\n try {\n const phoneNumber = parsePhoneNumber(formattedValue, currentCountryRef.current || 'RU');\n const allowedCountry =\n !availableCountriesRef?.current ||\n !phoneNumber.country ||\n availableCountriesRef.current.includes(phoneNumber.country);\n const country = (allowedCountry ? phoneNumber.country : false) || currentCountryRef.current || 'RU';\n\n formattedValue =\n phoneNumber.isValid() && allowedCountry\n ? phoneNumber.format('NATIONAL', { nationalPrefix: false })\n : formatIncompletePhoneNumber(phoneNumber.nationalNumber, country);\n\n const code = getCountryCallingCode(country);\n if (sanitizedValue.startsWith(`+${code}`)) {\n sanitizedValue = sanitizedValue.slice(code.length + 1);\n }\n if (country !== currentCountryRef.current) {\n setCountry(country);\n }\n } catch {\n // do nothing\n }\n\n // В процессе форматирования libphonenumber может дописать в national number префикс, который не используется\n // в международном номере (для Беларуси например 80), при этом требование дизайна в остальном форматировать\n // часть номера после кода по национальным стандартам. Поэтому находим цифры которые пользователь не вводил\n // и удаляем их.\n const currentValueRegExp = buildRegExpFromNumber(\n sanitizedValue.replace(notDigitsOrPlusRegExp, ''),\n true,\n false\n );\n formattedValue = formattedValue.match(currentValueRegExp)?.[1] || formattedValue;\n\n if (digitsBeforeCaret.length === 0) {\n caret = formattedValue.substring(0, caret).match(notSpaceRegExp)?.[0].length || 0;\n } else {\n // в результате форматирования в строке с номером могут появляться дополнительные символы\n // при этом каретка должна сохранить свое положение относительно цифр в номере\n // для этого находим позицию каретки в строке до форматирования, извлекаем из неё только цифры находящиеся\n // перед кареткой, находим длину строки после форматирования которая содержит те же цифры что и в строке до\n // форматирования перед кареткой и сдвигаем каретку на эту длину\n // для этого используем регулярку в которую добавляем все символы перед кареткой и возможные символы между\n // ними которые могут появиться после форматирования\n // кроме того делаем все символы опциональными, т.к. после форматирования может удалиться часть\n // символов в начале номера относящаяся к коду страны\n const caretPositionRegExp = buildRegExpFromNumber(digitsBeforeCaret);\n\n // применяем регулярку к отформатированной строке и сдвигаем каретку на длину найденного совпадения\n const match = formattedValue.match(caretPositionRegExp)?.[0];\n\n if (match) {\n const positionOfFirstDigitToTheRightOfCaret = formattedValue\n .substring(match.length)\n .search(digitRegexp);\n\n caret =\n positionOfFirstDigitToTheRightOfCaret === -1\n ? formattedValue.length\n : positionOfFirstDigitToTheRightOfCaret + match.length;\n }\n }\n\n return {\n formattedValue,\n outputValue: formattedValue,\n caretPosition: caret,\n };\n };\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phoneFormatter.js","sources":["src/phoneFormatter.ts"],"sourcesContent":["import { type RefObject } from 'react';\nimport { type CountryCode } from 'libphonenumber-js';\n\nimport { type InputFormatter } from '@hh.ru/magritte-ui-input';\nimport { type LibPhoneNumberAPI } from '@hh.ru/magritte-ui-phone-input/useLibPhoneNumber';\n\nconst notDigitsOrPlusRegExp = /[\\D+]/g;\nconst prohibitedSymbolsRegExp = /[^0-9+()-]/g;\nconst digitRegexp = /\\d/;\nconst notSpaceRegExp = /[^\\s]/;\n\nconst buildRegExpFromNumber = (number: string, inTheMiddle = false, optionalDigits = true) => {\n const regExp = number\n .split('')\n .reduce<string[]>((acc, char, index) => {\n // символы из строки нужно экранировать т.к. там могут оказаться символы имеющие специальное\n // значение в регулярных выражениях, например +\n acc.push(`\\\\u{${char.charCodeAt(0).toString(16)}}${optionalDigits ? '?' : ''}`);\n if (index !== number.length - 1) {\n acc.push('\\\\s?-?\\\\(?\\\\)?\\\\s?');\n }\n return acc;\n }, [])\n .join('');\n return new RegExp(inTheMiddle ? `.*(${regExp}).*` : regExp, 'u');\n};\n\nexport const phoneFormatterFactory = (params: {\n setCountry: (country: CountryCode) => void;\n currentCountryRef: RefObject<CountryCode>;\n availableCountriesRef?: RefObject<CountryCode[] | undefined>;\n libPhoneNumberAPI: LibPhoneNumberAPI;\n countryLocked: boolean;\n}): InputFormatter => {\n const {\n setCountry,\n currentCountryRef,\n libPhoneNumberAPI: { formatIncompletePhoneNumber, parsePhoneNumber, getCountryCallingCode },\n availableCountriesRef,\n countryLocked,\n } = params;\n\n return (prevValue: string, value: string, caretPosition: number) => {\n let sanitizedValue = value.replace(prohibitedSymbolsRegExp, '');\n let formattedValue = sanitizedValue;\n let caret = caretPosition;\n\n let digitsBeforeCaret = value.substring(0, caret).replace(notDigitsOrPlusRegExp, '');\n\n // удалили один символ и этот символ не цифра, надо удалить ближайшую цифру слева от каретки\n if (prevValue.length - value.length === 1 && notDigitsOrPlusRegExp.test(prevValue[caretPosition])) {\n digitsBeforeCaret = digitsBeforeCaret.slice(0, -1);\n formattedValue = `${digitsBeforeCaret}${value.substring(caret)}`;\n }\n\n try {\n const phoneNumber = parsePhoneNumber(formattedValue, currentCountryRef.current || 'RU');\n const allowedCountry =\n (!availableCountriesRef?.current ||\n !phoneNumber.country ||\n availableCountriesRef.current.includes(phoneNumber.country)) &&\n (!countryLocked || currentCountryRef.current === phoneNumber.country);\n\n const country = (allowedCountry ? phoneNumber.country : false) || currentCountryRef.current || 'RU';\n\n formattedValue =\n phoneNumber.isValid() && allowedCountry\n ? phoneNumber.format('NATIONAL', { nationalPrefix: false })\n : formatIncompletePhoneNumber(phoneNumber.nationalNumber, country);\n\n const code = getCountryCallingCode(country);\n if (sanitizedValue.startsWith(`+${code}`)) {\n sanitizedValue = sanitizedValue.slice(code.length + 1);\n }\n if (country !== currentCountryRef.current) {\n setCountry(country);\n }\n } catch {\n // do nothing\n }\n\n // В процессе форматирования libphonenumber может дописать в national number префикс, который не используется\n // в международном номере (для Беларуси например 80), при этом требование дизайна в остальном форматировать\n // часть номера после кода по национальным стандартам. Поэтому находим цифры которые пользователь не вводил\n // и удаляем их.\n const currentValueRegExp = buildRegExpFromNumber(\n sanitizedValue.replace(notDigitsOrPlusRegExp, ''),\n true,\n false\n );\n formattedValue = formattedValue.match(currentValueRegExp)?.[1] || formattedValue;\n\n if (digitsBeforeCaret.length === 0) {\n caret = formattedValue.substring(0, caret).match(notSpaceRegExp)?.[0].length || 0;\n } else {\n // в результате форматирования в строке с номером могут появляться дополнительные символы\n // при этом каретка должна сохранить свое положение относительно цифр в номере\n // для этого находим позицию каретки в строке до форматирования, извлекаем из неё только цифры находящиеся\n // перед кареткой, находим длину строки после форматирования которая содержит те же цифры что и в строке до\n // форматирования перед кареткой и сдвигаем каретку на эту длину\n // для этого используем регулярку в которую добавляем все символы перед кареткой и возможные символы между\n // ними которые могут появиться после форматирования\n // кроме того делаем все символы опциональными, т.к. после форматирования может удалиться часть\n // символов в начале номера относящаяся к коду страны\n const caretPositionRegExp = buildRegExpFromNumber(digitsBeforeCaret);\n\n // применяем регулярку к отформатированной строке и сдвигаем каретку на длину найденного совпадения\n const match = formattedValue.match(caretPositionRegExp)?.[0];\n\n if (match) {\n const positionOfFirstDigitToTheRightOfCaret = formattedValue\n .substring(match.length)\n .search(digitRegexp);\n\n caret =\n positionOfFirstDigitToTheRightOfCaret === -1\n ? formattedValue.length\n : positionOfFirstDigitToTheRightOfCaret + match.length;\n }\n }\n\n return {\n formattedValue,\n outputValue: formattedValue,\n caretPosition: caret,\n };\n };\n};\n"],"names":[],"mappings":"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"}
@@ -37,16 +37,16 @@ const useLibPhoneNumber = (variant, mobileOnly, onLoadError) => {
37
37
  /* eslint-disable @typescript-eslint/ban-ts-comment */
38
38
  (mobileOnly
39
39
  ? // @ts-ignore
40
- import('./metadata.ru_by_kz_uz.mobile-JZvRvZvv.js')
40
+ import('./metadata.ru_by_kz_uz.mobile-EY2PCC7u.js')
41
41
  : // @ts-ignore
42
- import('./metadata.ru_by_kz_uz.max-B4n-estX.js'));
42
+ import('./metadata.ru_by_kz_uz.max-BOkcOFdo.js'));
43
43
  }
44
44
  else {
45
45
  loadMetadata = () => (mobileOnly
46
46
  ? // @ts-ignore
47
- import('./metadata.mobile-DlAlt9iv.js')
47
+ import('./metadata.mobile-AjZd4M6a.js')
48
48
  : // @ts-ignore
49
- import('./metadata.max-_TCaIJWC.js'));
49
+ import('./metadata.max-C-HdkbBh.js'));
50
50
  /* eslint-enable @typescript-eslint/ban-ts-comment */
51
51
  }
52
52
  const loadApi = () => Promise.all([loadLibPhoneNumber(), loadMetadata()]).then(([libPhoneNumber, metadata]) => {
@@ -1 +0,0 @@
1
- {"version":3,"file":"CallingCodeInput-B2J7IUp3.js","sources":["src/CallingCodeInput.tsx"],"sourcesContent":["import {\n type KeyboardEventHandler,\n type ChangeEvent,\n type ReactNode,\n type Ref,\n forwardRef,\n useState,\n useEffect,\n useRef,\n} from 'react';\nimport classnames from 'classnames';\n\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\n\nimport styles from './phoneInput.less';\n\ninterface CallingCodeInputProps {\n flag: ReactNode;\n onChange: (value: string) => void;\n value: string;\n onFocus: VoidFunction;\n onBlur?: VoidFunction;\n onKeyDownInput?: KeyboardEventHandler<HTMLInputElement>;\n onKeyDownContainer?: KeyboardEventHandler<HTMLDivElement>;\n invalid?: boolean;\n disabled?: boolean;\n className?: string | boolean;\n inputElementRef: Ref<HTMLInputElement>;\n descriptionId: string;\n}\n\nexport const CallingCodeInput = forwardRef<HTMLDivElement, CallingCodeInputProps>(\n (\n {\n onFocus,\n onBlur,\n value,\n onChange,\n flag,\n onKeyDownInput,\n onKeyDownContainer,\n invalid,\n disabled,\n className,\n inputElementRef,\n descriptionId,\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const inputRefMultiplexer = useMultipleRefs(inputRef, inputElementRef);\n const [isFocused, setIsFocused] = useState(false);\n const [isFocusVisible, setIsFocusVisible] = useState(false);\n const { isMobile } = useBreakpoint();\n\n useEffect(() => {\n if (inputRef.current) {\n setIsFocusVisible(isFocused && inputRef.current.classList.contains('focus-visible'));\n }\n }, [isFocused]);\n\n return (\n <div\n className={classnames(styles.callingCodeInputContainer, className, {\n [styles.focusVisible]: isFocusVisible && !disabled,\n [styles.focused]: isFocused && !disabled,\n [styles.invalid]: invalid && !disabled,\n [styles.disabled]: disabled,\n })}\n tabIndex={disabled ? -1 : 0}\n onFocus={() => {\n if (disabled) {\n return;\n }\n if (!isMobile) {\n inputRef.current?.focus();\n return;\n }\n\n setIsFocused(true);\n onFocus();\n }}\n onBlur={() => {\n if (!isMobile) {\n return;\n }\n setIsFocused(false);\n onBlur?.();\n }}\n onKeyDown={onKeyDownContainer}\n ref={ref}\n data-qa=\"magritte-phone-input-calling-code\"\n >\n <div className={styles.flagContainer}>{flag}</div>\n <div className={styles.inputContainer}>\n <input\n ref={inputRefMultiplexer}\n onFocus={() => {\n setIsFocused(true);\n onFocus();\n }}\n onBlur={() => {\n setIsFocused(false);\n onBlur?.();\n }}\n onKeyDown={onKeyDownInput}\n className={styles.callingCodeInput}\n value={value}\n onChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n disabled={disabled}\n data-qa=\"magritte-phone-input-calling-code-input\"\n aria-describedby={descriptionId}\n aria-invalid={invalid}\n />\n <div className={styles.ghostData} data-qa=\"magritte-phone-input-calling-code-value\">\n {value}\n </div>\n </div>\n </div>\n );\n }\n);\n\nCallingCodeInput.displayName = 'CallingCodeInput';\n"],"names":["_jsxs","classnames","_jsx"],"mappings":"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"}