@nuskin/address-lookup 1.0.1 → 1.1.0-pa-1117.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -6
- package/dist/AddressLookup.js +8 -4
- package/dist/AddressLookup.js.map +1 -1
- package/dist/components/SmartyIntlResults.js +35 -18
- package/dist/components/SmartyIntlResults.js.map +1 -1
- package/dist/components/SmartyUSResults.js +36 -18
- package/dist/components/SmartyUSResults.js.map +1 -1
- package/dist/config/address/countries.js +51 -123
- package/dist/config/address/countries.js.map +1 -1
- package/dist/config/address/index.js +0 -117
- package/dist/config/address/index.js.map +1 -1
- package/dist/hooks/useAddressForm.js +36 -0
- package/dist/hooks/useAddressForm.js.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/addressForm.js +91 -0
- package/dist/utils/addressForm.js.map +1 -0
- package/dist/utils/addressStatus.js +39 -20
- package/dist/utils/addressStatus.js.map +1 -1
- package/dist/utils/componentPropTypes.js +15 -1
- package/dist/utils/componentPropTypes.js.map +1 -1
- package/package.json +2 -2
- package/dist/config/address/behaviorConfigs.js +0 -21
- package/dist/config/address/behaviorConfigs.js.map +0 -1
- package/dist/config/address/forms.js +0 -422
- package/dist/config/address/forms.js.map +0 -1
- package/dist/config/address/postalCodeRules.js +0 -77
- package/dist/config/address/postalCodeRules.js.map +0 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
React address entry component with:
|
|
4
4
|
- Smarty autocomplete (US + international)
|
|
5
5
|
- optional Smarty verification
|
|
6
|
-
-
|
|
6
|
+
- Contentstack-backed form definitions
|
|
7
7
|
- required-field and email-format validation state
|
|
8
8
|
- localized field labels (Contentstack or parent-provided)
|
|
9
9
|
|
|
@@ -24,11 +24,15 @@ yarn add @nuskin/address-lookup
|
|
|
24
24
|
## Exports
|
|
25
25
|
|
|
26
26
|
```js
|
|
27
|
-
import AddressLookup, {
|
|
27
|
+
import AddressLookup, {
|
|
28
|
+
COUNTRY_MAP,
|
|
29
|
+
normalizeAddressForm
|
|
30
|
+
} from '@nuskin/address-lookup'
|
|
28
31
|
```
|
|
29
32
|
|
|
30
33
|
- `AddressLookup` (default + named export)
|
|
31
|
-
- `COUNTRY_MAP` for available countries/
|
|
34
|
+
- `COUNTRY_MAP` for available countries/ISO metadata
|
|
35
|
+
- `normalizeAddressForm` and `DEFAULT_ADDRESS_FORM` for parent-side form-definition reuse
|
|
32
36
|
|
|
33
37
|
## Basic usage
|
|
34
38
|
|
|
@@ -74,6 +78,7 @@ export default function ShippingAddress() {
|
|
|
74
78
|
- `showManualValidateButton?: boolean` (default: `false`)
|
|
75
79
|
- `validationRequestId?: number` (default: `0`)
|
|
76
80
|
- `strings?: object | null` optional label overrides
|
|
81
|
+
- `formDefinition?: object | null` optional normalized form-definition override
|
|
77
82
|
|
|
78
83
|
### `strings` shape
|
|
79
84
|
|
|
@@ -95,6 +100,35 @@ If passed, these labels are used instead of loading from Contentstack:
|
|
|
95
100
|
}
|
|
96
101
|
```
|
|
97
102
|
|
|
103
|
+
### `formDefinition` shape
|
|
104
|
+
|
|
105
|
+
If passed, this is used instead of loading a form definition inside `AddressLookup`.
|
|
106
|
+
|
|
107
|
+
```js
|
|
108
|
+
{
|
|
109
|
+
addressElements: [
|
|
110
|
+
{
|
|
111
|
+
field: 'address1',
|
|
112
|
+
width: 'full',
|
|
113
|
+
editable: true,
|
|
114
|
+
maxLength: 40,
|
|
115
|
+
required: true
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
lookupField: 'address1',
|
|
119
|
+
requiredFields: ['address1'],
|
|
120
|
+
postalCodeRegex: /^\d{5}$/,
|
|
121
|
+
verifyAfterAutocomplete: false,
|
|
122
|
+
wrapAddress1ToAddress2: false
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
If the parent is already loading form definitions from Contentstack, it can normalize them once and pass them through:
|
|
127
|
+
|
|
128
|
+
```js
|
|
129
|
+
import { normalizeAddressForm } from '@nuskin/address-lookup'
|
|
130
|
+
```
|
|
131
|
+
|
|
98
132
|
## Callback payloads
|
|
99
133
|
|
|
100
134
|
`onAddressSelect(payload)` emits different `type` values:
|
|
@@ -121,6 +155,7 @@ Common payload shape:
|
|
|
121
155
|
isDeliverable?: boolean,
|
|
122
156
|
isValidEmail?: boolean,
|
|
123
157
|
status: {
|
|
158
|
+
formAvailable: boolean,
|
|
124
159
|
verification: 'unverified' | 'autocomplete' | 'verified',
|
|
125
160
|
needsValidation: boolean,
|
|
126
161
|
completeness: 'complete' | 'incomplete',
|
|
@@ -144,7 +179,8 @@ Common payload shape:
|
|
|
144
179
|
|
|
145
180
|
## Validation behavior
|
|
146
181
|
|
|
147
|
-
- Required fields
|
|
182
|
+
- Required fields come from the resolved form definition
|
|
183
|
+
- `status.formAvailable` is `false` when no form definition is available for the selected country
|
|
148
184
|
- `status.needsValidation` is `true` when:
|
|
149
185
|
- `requireValidation=true`
|
|
150
186
|
- mode is `manual`
|
|
@@ -166,8 +202,8 @@ Common payload shape:
|
|
|
166
202
|
|
|
167
203
|
## Autocomplete and manual mode
|
|
168
204
|
|
|
169
|
-
- Lookup field
|
|
170
|
-
- example: JP
|
|
205
|
+
- Lookup field comes from the resolved form definition
|
|
206
|
+
- example: JP can use `postalCode`
|
|
171
207
|
- Typing in lookup creates a draft
|
|
172
208
|
- Clicking outside while suggestions are open cancels draft and restores prior committed values
|
|
173
209
|
- Manual mode:
|
|
@@ -182,6 +218,13 @@ When `strings` is not passed, labels load from Contentstack via `@nuskin/content
|
|
|
182
218
|
|
|
183
219
|
- cache key format: `${language}_${country}`
|
|
184
220
|
|
|
221
|
+
When `formDefinition` is not passed, the address form definition also loads from Contentstack.
|
|
222
|
+
|
|
223
|
+
If no form definition is available after loading, the component shows:
|
|
224
|
+
|
|
225
|
+
- `No form available for this country: US`
|
|
226
|
+
- `No form available for this country: {countryCode}`
|
|
227
|
+
|
|
185
228
|
## Styling and Overrides
|
|
186
229
|
|
|
187
230
|
The component now ships with a shared stylesheet:
|
package/dist/AddressLookup.js
CHANGED
|
@@ -19,7 +19,8 @@ const AddressLookup = ({
|
|
|
19
19
|
showManualValidateButton = false,
|
|
20
20
|
validationRequestId = 0,
|
|
21
21
|
language = 'en',
|
|
22
|
-
strings = null
|
|
22
|
+
strings = null,
|
|
23
|
+
formDefinition = null
|
|
23
24
|
}) => {
|
|
24
25
|
const isUS = country === 'US';
|
|
25
26
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
@@ -31,7 +32,8 @@ const AddressLookup = ({
|
|
|
31
32
|
showManualValidateButton: showManualValidateButton,
|
|
32
33
|
validationRequestId: validationRequestId,
|
|
33
34
|
language: language,
|
|
34
|
-
strings: strings
|
|
35
|
+
strings: strings,
|
|
36
|
+
formDefinition: formDefinition
|
|
35
37
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_SmartyIntlResults.default, {
|
|
36
38
|
countryCode: country,
|
|
37
39
|
onSelect: onAddressSelect,
|
|
@@ -40,7 +42,8 @@ const AddressLookup = ({
|
|
|
40
42
|
showManualValidateButton: showManualValidateButton,
|
|
41
43
|
validationRequestId: validationRequestId,
|
|
42
44
|
language: language,
|
|
43
|
-
strings: strings
|
|
45
|
+
strings: strings,
|
|
46
|
+
formDefinition: formDefinition
|
|
44
47
|
})
|
|
45
48
|
});
|
|
46
49
|
};
|
|
@@ -52,7 +55,8 @@ AddressLookup.propTypes = {
|
|
|
52
55
|
showManualValidateButton: _propTypes.default.bool,
|
|
53
56
|
validationRequestId: _propTypes.default.number,
|
|
54
57
|
language: _propTypes.default.string,
|
|
55
|
-
strings: _componentPropTypes.labelStringsPropType
|
|
58
|
+
strings: _componentPropTypes.labelStringsPropType,
|
|
59
|
+
formDefinition: _componentPropTypes.formDefinitionPropType
|
|
56
60
|
};
|
|
57
61
|
var _default = exports.default = AddressLookup;
|
|
58
62
|
//# sourceMappingURL=AddressLookup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressLookup.js","names":["_propTypes","_interopRequireDefault","require","_SmartyUSResults","_SmartyIntlResults","_componentPropTypes","_jsxRuntime","e","__esModule","default","AddressLookup","onAddressSelect","country","address","requireValidation","showManualValidateButton","validationRequestId","language","strings","isUS","jsx","className","children","onSelect","initialAddress","countryCode","propTypes","PropTypes","func","string","addressPropType","bool","number","labelStringsPropType","_default","exports"],"sources":["../src/AddressLookup.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport './styles/addressLookup.css';\nimport SmartyUSResults from './components/SmartyUSResults';\nimport SmartyIntlResults from './components/SmartyIntlResults';\nimport { addressPropType, labelStringsPropType } from './utils/componentPropTypes';\n\nconst AddressLookup = ({ \n onAddressSelect, \n country = 'US',\n address = null,\n requireValidation = true,\n showManualValidateButton = false,\n validationRequestId = 0,\n language = 'en',\n strings = null\n}) => {\n const isUS = country === 'US';\n\n return (\n <div className='ns-address-lookup'>\n {isUS ? (\n <SmartyUSResults \n onSelect={onAddressSelect}\n initialAddress={address}\n requireValidation={requireValidation}\n showManualValidateButton={showManualValidateButton}\n validationRequestId={validationRequestId}\n language={language}\n strings={strings}\n />\n ) : (\n <SmartyIntlResults \n countryCode={country}\n onSelect={onAddressSelect}\n initialAddress={address}\n requireValidation={requireValidation}\n showManualValidateButton={showManualValidateButton}\n validationRequestId={validationRequestId}\n language={language}\n strings={strings}\n />\n )}\n </div>\n );\n};\n\nAddressLookup.propTypes = {\n onAddressSelect: PropTypes.func,\n country: PropTypes.string,\n address: addressPropType,\n requireValidation: PropTypes.bool,\n showManualValidateButton: PropTypes.bool,\n validationRequestId: PropTypes.number,\n language: PropTypes.string,\n strings: labelStringsPropType\n};\n\nexport default AddressLookup;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACAA,OAAA;AACA,IAAAC,gBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,kBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;
|
|
1
|
+
{"version":3,"file":"AddressLookup.js","names":["_propTypes","_interopRequireDefault","require","_SmartyUSResults","_SmartyIntlResults","_componentPropTypes","_jsxRuntime","e","__esModule","default","AddressLookup","onAddressSelect","country","address","requireValidation","showManualValidateButton","validationRequestId","language","strings","formDefinition","isUS","jsx","className","children","onSelect","initialAddress","countryCode","propTypes","PropTypes","func","string","addressPropType","bool","number","labelStringsPropType","formDefinitionPropType","_default","exports"],"sources":["../src/AddressLookup.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport './styles/addressLookup.css';\nimport SmartyUSResults from './components/SmartyUSResults';\nimport SmartyIntlResults from './components/SmartyIntlResults';\nimport { addressPropType, formDefinitionPropType, labelStringsPropType } from './utils/componentPropTypes';\n\nconst AddressLookup = ({ \n onAddressSelect, \n country = 'US',\n address = null,\n requireValidation = true,\n showManualValidateButton = false,\n validationRequestId = 0,\n language = 'en',\n strings = null,\n formDefinition = null\n}) => {\n const isUS = country === 'US';\n\n return (\n <div className='ns-address-lookup'>\n {isUS ? (\n <SmartyUSResults \n onSelect={onAddressSelect}\n initialAddress={address}\n requireValidation={requireValidation}\n showManualValidateButton={showManualValidateButton}\n validationRequestId={validationRequestId}\n language={language}\n strings={strings}\n formDefinition={formDefinition}\n />\n ) : (\n <SmartyIntlResults \n countryCode={country}\n onSelect={onAddressSelect}\n initialAddress={address}\n requireValidation={requireValidation}\n showManualValidateButton={showManualValidateButton}\n validationRequestId={validationRequestId}\n language={language}\n strings={strings}\n formDefinition={formDefinition}\n />\n )}\n </div>\n );\n};\n\nAddressLookup.propTypes = {\n onAddressSelect: PropTypes.func,\n country: PropTypes.string,\n address: addressPropType,\n requireValidation: PropTypes.bool,\n showManualValidateButton: PropTypes.bool,\n validationRequestId: PropTypes.number,\n language: PropTypes.string,\n strings: labelStringsPropType,\n formDefinition: formDefinitionPropType\n};\n\nexport default AddressLookup;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACAA,OAAA;AACA,IAAAC,gBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,kBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AAA2G,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE3G,MAAMG,aAAa,GAAGA,CAAC;EACrBC,eAAe;EACfC,OAAO,GAAG,IAAI;EACdC,OAAO,GAAG,IAAI;EACdC,iBAAiB,GAAG,IAAI;EACxBC,wBAAwB,GAAG,KAAK;EAChCC,mBAAmB,GAAG,CAAC;EACvBC,QAAQ,GAAG,IAAI;EACfC,OAAO,GAAG,IAAI;EACdC,cAAc,GAAG;AACnB,CAAC,KAAK;EACJ,MAAMC,IAAI,GAAGR,OAAO,KAAK,IAAI;EAE7B,oBACE,IAAAN,WAAA,CAAAe,GAAA;IAAKC,SAAS,EAAC,mBAAmB;IAAAC,QAAA,EAC/BH,IAAI,gBACH,IAAAd,WAAA,CAAAe,GAAA,EAAClB,gBAAA,CAAAM,OAAe;MACde,QAAQ,EAAEb,eAAgB;MAC1Bc,cAAc,EAAEZ,OAAQ;MACxBC,iBAAiB,EAAEA,iBAAkB;MACrCC,wBAAwB,EAAEA,wBAAyB;MACnDC,mBAAmB,EAAEA,mBAAoB;MACzCC,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,cAAc,EAAEA;IAAe,CAChC,CAAC,gBAEF,IAAAb,WAAA,CAAAe,GAAA,EAACjB,kBAAA,CAAAK,OAAiB;MAChBiB,WAAW,EAAEd,OAAQ;MACrBY,QAAQ,EAAEb,eAAgB;MAC1Bc,cAAc,EAAEZ,OAAQ;MACxBC,iBAAiB,EAAEA,iBAAkB;MACrCC,wBAAwB,EAAEA,wBAAyB;MACnDC,mBAAmB,EAAEA,mBAAoB;MACzCC,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBC,cAAc,EAAEA;IAAe,CAChC;EACF,CACE,CAAC;AAEV,CAAC;AAEDT,aAAa,CAACiB,SAAS,GAAG;EACxBhB,eAAe,EAAEiB,kBAAS,CAACC,IAAI;EAC/BjB,OAAO,EAAEgB,kBAAS,CAACE,MAAM;EACzBjB,OAAO,EAAEkB,mCAAe;EACxBjB,iBAAiB,EAAEc,kBAAS,CAACI,IAAI;EACjCjB,wBAAwB,EAAEa,kBAAS,CAACI,IAAI;EACxChB,mBAAmB,EAAEY,kBAAS,CAACK,MAAM;EACrChB,QAAQ,EAAEW,kBAAS,CAACE,MAAM;EAC1BZ,OAAO,EAAEgB,wCAAoB;EAC7Bf,cAAc,EAAEgB;AAClB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA5B,OAAA,GAEaC,aAAa","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@ var _react = require("react");
|
|
|
9
9
|
var _useSmartyInternationalLookup = _interopRequireDefault(require("../hooks/useSmartyInternationalLookup"));
|
|
10
10
|
var _useIntlAddressValidation = _interopRequireDefault(require("../hooks/useIntlAddressValidation"));
|
|
11
11
|
var _useAddressFieldLabels = _interopRequireDefault(require("../hooks/useAddressFieldLabels"));
|
|
12
|
-
var
|
|
12
|
+
var _useAddressForm = _interopRequireDefault(require("../hooks/useAddressForm"));
|
|
13
13
|
var _addressWrapper = require("../utils/addressWrapper");
|
|
14
14
|
var _addressStatus = require("../utils/addressStatus");
|
|
15
15
|
var _validators = require("../utils/validators");
|
|
@@ -24,12 +24,10 @@ const SmartyIntlResults = ({
|
|
|
24
24
|
showManualValidateButton = false,
|
|
25
25
|
validationRequestId = 0,
|
|
26
26
|
language = 'en',
|
|
27
|
-
strings = null
|
|
27
|
+
strings = null,
|
|
28
|
+
formDefinition = null
|
|
28
29
|
}) => {
|
|
29
|
-
var
|
|
30
|
-
const countryConfig = _countries.COUNTRY_MAP[countryCode] || {};
|
|
31
|
-
const lookupField = countryConfig.lookupField || ((_countryConfig$addres = countryConfig.addressForm) === null || _countryConfig$addres === void 0 || (_countryConfig$addres = _countryConfig$addres[0]) === null || _countryConfig$addres === void 0 ? void 0 : _countryConfig$addres.field) || 'address1';
|
|
32
|
-
const requiredFields = (0, _addressStatus.getRequiredFieldsForCountry)(countryCode);
|
|
30
|
+
var _formDefinition$addre;
|
|
33
31
|
const [mode, setMode] = (0, _react.useState)('autocomplete');
|
|
34
32
|
const [query, setQuery] = (0, _react.useState)('');
|
|
35
33
|
const [selectedAddress, setSelectedAddress] = (0, _react.useState)(null);
|
|
@@ -73,6 +71,7 @@ const SmartyIntlResults = ({
|
|
|
73
71
|
address: formData,
|
|
74
72
|
status: (0, _addressStatus.buildAddressStatus)({
|
|
75
73
|
countryCode,
|
|
74
|
+
addressForm: resolvedAddressForm,
|
|
76
75
|
formData,
|
|
77
76
|
verificationStatus,
|
|
78
77
|
mode,
|
|
@@ -92,6 +91,15 @@ const SmartyIntlResults = ({
|
|
|
92
91
|
labels: fieldLabels,
|
|
93
92
|
isLoading: areLabelsLoading
|
|
94
93
|
} = (0, _useAddressFieldLabels.default)(countryCode, language, strings);
|
|
94
|
+
const shouldLoadAddressForm = !formDefinition;
|
|
95
|
+
const {
|
|
96
|
+
addressForm: loadedAddressForm,
|
|
97
|
+
isLoading: isFormLoading
|
|
98
|
+
} = (0, _useAddressForm.default)(countryCode, shouldLoadAddressForm);
|
|
99
|
+
const providedAddressForm = formDefinition !== null && formDefinition !== void 0 && (_formDefinition$addre = formDefinition.addressElements) !== null && _formDefinition$addre !== void 0 && _formDefinition$addre.length ? formDefinition : null;
|
|
100
|
+
const resolvedAddressForm = providedAddressForm || loadedAddressForm;
|
|
101
|
+
const lookupField = (resolvedAddressForm === null || resolvedAddressForm === void 0 ? void 0 : resolvedAddressForm.lookupField) || 'address1';
|
|
102
|
+
const requiredFields = (0, _addressStatus.getRequiredFieldsFromAddressForm)(resolvedAddressForm);
|
|
95
103
|
const {
|
|
96
104
|
suggestions,
|
|
97
105
|
loading,
|
|
@@ -136,6 +144,7 @@ const SmartyIntlResults = ({
|
|
|
136
144
|
address: formData,
|
|
137
145
|
status: (0, _addressStatus.buildAddressStatus)({
|
|
138
146
|
countryCode,
|
|
147
|
+
addressForm: resolvedAddressForm,
|
|
139
148
|
formData,
|
|
140
149
|
verificationStatus,
|
|
141
150
|
mode,
|
|
@@ -157,6 +166,7 @@ const SmartyIntlResults = ({
|
|
|
157
166
|
address: formData,
|
|
158
167
|
status: (0, _addressStatus.buildAddressStatus)({
|
|
159
168
|
countryCode,
|
|
169
|
+
addressForm: resolvedAddressForm,
|
|
160
170
|
formData,
|
|
161
171
|
verificationStatus,
|
|
162
172
|
mode,
|
|
@@ -241,7 +251,6 @@ const SmartyIntlResults = ({
|
|
|
241
251
|
return;
|
|
242
252
|
}
|
|
243
253
|
appliedSelectionKeyRef.current = selectionKey;
|
|
244
|
-
const config = (countryConfig === null || countryConfig === void 0 ? void 0 : countryConfig.config) || {};
|
|
245
254
|
const mapped = {
|
|
246
255
|
address1: selectedAddress.street,
|
|
247
256
|
address2: '',
|
|
@@ -267,13 +276,14 @@ const SmartyIntlResults = ({
|
|
|
267
276
|
address: updatedFormData,
|
|
268
277
|
status: (0, _addressStatus.buildAddressStatus)({
|
|
269
278
|
countryCode,
|
|
279
|
+
addressForm: resolvedAddressForm,
|
|
270
280
|
formData: updatedFormData,
|
|
271
281
|
verificationStatus: currentVerificationStatus,
|
|
272
282
|
mode,
|
|
273
283
|
requireValidation
|
|
274
284
|
})
|
|
275
285
|
});
|
|
276
|
-
if (requireValidation &&
|
|
286
|
+
if (requireValidation && resolvedAddressForm.verifyAfterAutocomplete) {
|
|
277
287
|
// Trigger validation instead of directly selecting.
|
|
278
288
|
// Keep suggestions visible in case multiple candidates are returned.
|
|
279
289
|
setShowValidationSuggestions(true);
|
|
@@ -308,10 +318,10 @@ const SmartyIntlResults = ({
|
|
|
308
318
|
return false;
|
|
309
319
|
}
|
|
310
320
|
const value = String(formData.postalCode || '').trim();
|
|
311
|
-
if (!value || !
|
|
321
|
+
if (!value || !resolvedAddressForm.postalCodeRegex) {
|
|
312
322
|
return false;
|
|
313
323
|
}
|
|
314
|
-
return !
|
|
324
|
+
return !resolvedAddressForm.postalCodeRegex.test(value);
|
|
315
325
|
};
|
|
316
326
|
const hasInvalidEmailFormat = field => {
|
|
317
327
|
if (field !== 'email') {
|
|
@@ -381,6 +391,7 @@ const SmartyIntlResults = ({
|
|
|
381
391
|
address: updatedFormData,
|
|
382
392
|
status: (0, _addressStatus.buildAddressStatus)({
|
|
383
393
|
countryCode,
|
|
394
|
+
addressForm: resolvedAddressForm,
|
|
384
395
|
formData: updatedFormData,
|
|
385
396
|
verificationStatus: nextVerificationStatus,
|
|
386
397
|
mode,
|
|
@@ -413,14 +424,13 @@ const SmartyIntlResults = ({
|
|
|
413
424
|
}
|
|
414
425
|
};
|
|
415
426
|
const handleValidationSelect = validatedAddress => {
|
|
416
|
-
var _countryConfig$config;
|
|
417
427
|
clearServiceErrors({
|
|
418
428
|
lookup: false,
|
|
419
429
|
validation: true,
|
|
420
430
|
custom: false
|
|
421
431
|
});
|
|
422
432
|
const components = validatedAddress.components || {};
|
|
423
|
-
const config =
|
|
433
|
+
const config = resolvedAddressForm.addressElements || [];
|
|
424
434
|
const formFields = new Set(config.map(f => f.field));
|
|
425
435
|
let mapped = {
|
|
426
436
|
address1: [components.thoroughfare, components.premise].filter(Boolean).join(' ') || '',
|
|
@@ -436,7 +446,7 @@ const SmartyIntlResults = ({
|
|
|
436
446
|
}
|
|
437
447
|
|
|
438
448
|
// Apply address wrapping if enabled
|
|
439
|
-
if (
|
|
449
|
+
if (resolvedAddressForm.wrapAddress1ToAddress2) {
|
|
440
450
|
const address1Field = config.find(f => f.field === 'address1');
|
|
441
451
|
if (address1Field !== null && address1Field !== void 0 && address1Field.maxLength) {
|
|
442
452
|
const wrapped = (0, _addressWrapper.wrapAddress1ToAddress2)(mapped.address1, mapped.address2, address1Field.maxLength);
|
|
@@ -461,6 +471,7 @@ const SmartyIntlResults = ({
|
|
|
461
471
|
verification: validatedAddress.analysis,
|
|
462
472
|
status: (0, _addressStatus.buildAddressStatus)({
|
|
463
473
|
countryCode,
|
|
474
|
+
addressForm: resolvedAddressForm,
|
|
464
475
|
formData: updatedFormData,
|
|
465
476
|
verificationStatus: currentVerificationStatus,
|
|
466
477
|
mode,
|
|
@@ -603,10 +614,15 @@ const SmartyIntlResults = ({
|
|
|
603
614
|
}
|
|
604
615
|
}, [validationSuggestions]);
|
|
605
616
|
const renderAddressForm = () => {
|
|
606
|
-
const config =
|
|
607
|
-
if (!config) {
|
|
608
|
-
|
|
609
|
-
|
|
617
|
+
const config = resolvedAddressForm === null || resolvedAddressForm === void 0 ? void 0 : resolvedAddressForm.addressElements;
|
|
618
|
+
if (!(config !== null && config !== void 0 && config.length)) {
|
|
619
|
+
if (isFormLoading) {
|
|
620
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
621
|
+
children: "Loading address form..."
|
|
622
|
+
});
|
|
623
|
+
}
|
|
624
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
625
|
+
children: ["No form available for this country: ", countryCode]
|
|
610
626
|
});
|
|
611
627
|
}
|
|
612
628
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
@@ -639,7 +655,8 @@ SmartyIntlResults.propTypes = {
|
|
|
639
655
|
showManualValidateButton: _propTypes.default.bool,
|
|
640
656
|
validationRequestId: _propTypes.default.number,
|
|
641
657
|
language: _propTypes.default.string,
|
|
642
|
-
strings: _componentPropTypes.labelStringsPropType
|
|
658
|
+
strings: _componentPropTypes.labelStringsPropType,
|
|
659
|
+
formDefinition: _componentPropTypes.formDefinitionPropType
|
|
643
660
|
};
|
|
644
661
|
var _default = exports.default = SmartyIntlResults;
|
|
645
662
|
//# sourceMappingURL=SmartyIntlResults.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartyIntlResults.js","names":["_propTypes","_interopRequireDefault","require","_react","_useSmartyInternationalLookup","_useIntlAddressValidation","_useAddressFieldLabels","_countries","_addressWrapper","_addressStatus","_validators","_componentPropTypes","_jsxRuntime","e","__esModule","default","SmartyIntlResults","countryCode","onSelect","initialAddress","requireValidation","showManualValidateButton","validationRequestId","language","strings","_countryConfig$addres","countryConfig","COUNTRY_MAP","lookupField","addressForm","field","requiredFields","getRequiredFieldsForCountry","mode","setMode","useState","query","setQuery","selectedAddress","setSelectedAddress","selectedIntlAddressId","setSelectedIntlAddressId","formData","setFormData","verificationStatus","setVerificationStatus","customError","setCustomError","validationTrigger","setValidationTrigger","showValidationSuggestions","setShowValidationSuggestions","hasPendingLookupDraft","setHasPendingLookupDraft","touchedFields","setTouchedFields","showAllRequiredErrors","setShowAllRequiredErrors","lookupServiceError","setLookupServiceError","validationServiceError","setValidationServiceError","shouldSearchRef","useRef","fieldTimerRef","componentRef","suggestionsListRef","lastCommittedAddressRef","lookupDraftOriginalRef","appliedSelectionKeyRef","useEffect","current","type","address","status","buildAddressStatus","clearTimeout","isAutocompleteMode","labels","fieldLabels","isLoading","areLabelsLoading","useAddressFieldLabels","suggestions","loading","error","rateLimited","useSmartyInternationalLookup","validationSuggestions","validationLoading","validationError","validationRateLimited","useIntlAddressValidation","lookupValue","lookupErrorMessage","lookupError","validationErrorMessage","rawMessage","kind","source","message","clearServiceErrors","lookup","validation","custom","length","isDetailed","undefined","handleDocumentMouseDown","event","component","contains","target","suggestionsList","document","addEventListener","removeEventListener","selectionKey","address_id","street","locality","postal_code","config","mapped","address1","address2","city","region","administrative_area","postalCode","updatedFormData","email","currentVerificationStatus","verifyAfterAutocomplete","prev","handleInputChange","value","isFieldRequired","includes","isFieldBlank","String","trim","hasInvalidPostalCodeFormat","postalCodeRegex","test","hasInvalidEmailFormat","isValidEmail","shouldShowFieldError","shouldShowValidation","Boolean","requiredError","handleFieldBlur","getFieldErrorMessage","fieldRequired","invalidPostalCode","invalidEmail","hasVisibleFieldError","handleEditableFieldChange","nextVerificationStatus","setTimeout","payload","handleSelect","entries","displayText","handleValidationSelect","validatedAddress","_countryConfig$config","components","formFields","Set","map","f","thoroughfare","premise","filter","join","has","district","dependent_locality","wrapAddress1ToAddress2","address1Field","find","maxLength","wrapped","verification","analysis","handleValidate","getFieldKey","fieldConfig","getSuggestionKey","suggestion","address_text","getValidationSuggestionKey","_suggestion$component","_suggestion$component2","_suggestion$component3","_suggestion$component4","_suggestion$component5","address3","renderLookupActions","jsxs","className","children","jsx","onClick","disabled","renderLookupLists","isLookupField","ref","index","_suggestion$analysis","verification_status","renderField","fieldError","isInvalid","isReadOnly","editable","inputClassName","fieldClassName","style","width","label","onBlur","onChange","readOnly","renderAddressForm","Fragment","propTypes","PropTypes","string","isRequired","func","addressPropType","bool","number","labelStringsPropType","_default","exports"],"sources":["../../src/components/SmartyIntlResults.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useState, useEffect, useRef } from 'react';\nimport useSmartyInternationalLookup from '../hooks/useSmartyInternationalLookup';\nimport useIntlAddressValidation from '../hooks/useIntlAddressValidation';\nimport useAddressFieldLabels from '../hooks/useAddressFieldLabels';\nimport { COUNTRY_MAP } from '../countries';\nimport { wrapAddress1ToAddress2 } from '../utils/addressWrapper';\nimport { buildAddressStatus, getRequiredFieldsForCountry } from '../utils/addressStatus';\nimport { isValidEmail } from '../utils/validators';\nimport { addressPropType, labelStringsPropType } from '../utils/componentPropTypes';\n\nconst SmartyIntlResults = ({\n countryCode,\n onSelect,\n initialAddress = null,\n requireValidation = true,\n showManualValidateButton = false,\n validationRequestId = 0,\n language = 'en',\n strings = null\n}) => {\n const countryConfig = COUNTRY_MAP[countryCode] || {};\n const lookupField = countryConfig.lookupField || countryConfig.addressForm?.[0]?.field || 'address1';\n const requiredFields = getRequiredFieldsForCountry(countryCode);\n const [mode, setMode] = useState('autocomplete');\n const [query, setQuery] = useState('');\n const [selectedAddress, setSelectedAddress] = useState(null);\n const [selectedIntlAddressId, setSelectedIntlAddressId] = useState(null);\n const [formData, setFormData] = useState(initialAddress || {});\n const [verificationStatus, setVerificationStatus] = useState('unverified');\n const [customError, setCustomError] = useState(null);\n const [validationTrigger, setValidationTrigger] = useState(0);\n const [showValidationSuggestions, setShowValidationSuggestions] = useState(false);\n const [hasPendingLookupDraft, setHasPendingLookupDraft] = useState(false);\n const [touchedFields, setTouchedFields] = useState({});\n const [showAllRequiredErrors, setShowAllRequiredErrors] = useState(false);\n const [lookupServiceError, setLookupServiceError] = useState(null);\n const [validationServiceError, setValidationServiceError] = useState(null);\n const shouldSearchRef = useRef(true);\n const fieldTimerRef = useRef(null);\n const componentRef = useRef(null);\n const suggestionsListRef = useRef(null);\n const lastCommittedAddressRef = useRef(initialAddress || {});\n const lookupDraftOriginalRef = useRef(initialAddress || {});\n const appliedSelectionKeyRef = useRef(null);\n\n useEffect(() => {\n if (initialAddress) {\n setFormData(initialAddress);\n shouldSearchRef.current = false;\n lastCommittedAddressRef.current = initialAddress;\n lookupDraftOriginalRef.current = initialAddress;\n setTouchedFields({});\n setShowAllRequiredErrors(false);\n setLookupServiceError(null);\n setValidationServiceError(null);\n }\n }, [initialAddress]);\n\n useEffect(() => {\n if (!validationRequestId) {\n return;\n }\n\n setShowAllRequiredErrors(true);\n onSelect?.({\n type: 'validation-request',\n address: formData,\n status: buildAddressStatus({\n countryCode,\n formData,\n verificationStatus,\n mode,\n requireValidation\n })\n });\n }, [validationRequestId]);\n\n useEffect(() => {\n return () => {\n if (fieldTimerRef.current) {\n clearTimeout(fieldTimerRef.current);\n }\n };\n }, []);\n\n const isAutocompleteMode = mode === 'autocomplete';\n const {\n labels: fieldLabels,\n isLoading: areLabelsLoading\n } = useAddressFieldLabels(countryCode, language, strings);\n\n const { suggestions, loading, error, rateLimited } = useSmartyInternationalLookup(\n shouldSearchRef.current && isAutocompleteMode ? query : '',\n countryCode,\n selectedIntlAddressId,\n 500\n );\n\n const {\n suggestions: validationSuggestions,\n loading: validationLoading,\n error: validationError,\n rateLimited: validationRateLimited\n } = useIntlAddressValidation(\n formData,\n countryCode,\n requireValidation ? validationTrigger : 0\n );\n const lookupValue = formData[lookupField];\n const lookupErrorMessage = lookupServiceError?.rateLimited ?\n (fieldLabels?.rateLimited || 'Too many requests. Please wait a moment and try again.') :\n (fieldLabels?.lookupError || 'We could not look up that address right now.');\n const validationErrorMessage = validationServiceError?.rateLimited ?\n (fieldLabels?.rateLimited || 'Too many requests. Please wait a moment and try again.') :\n (fieldLabels?.validationError || 'We could not validate that address right now.');\n\n useEffect(() => {\n if (!error) {\n setLookupServiceError(null);\n return;\n }\n\n setLookupServiceError({\n rateLimited,\n rawMessage: error\n });\n }, [error, rateLimited]);\n\n useEffect(() => {\n if (!validationError) {\n setValidationServiceError(null);\n return;\n }\n\n setValidationServiceError({\n rateLimited: validationRateLimited,\n rawMessage: validationError\n });\n }, [validationError, validationRateLimited]);\n\n useEffect(() => {\n if (!lookupServiceError) {\n return;\n }\n\n onSelect?.({\n type: 'lookup-error',\n address: formData,\n status: buildAddressStatus({\n countryCode,\n formData,\n verificationStatus,\n mode,\n requireValidation\n }),\n error: {\n kind: lookupServiceError.rateLimited ? 'rate-limited' : 'api',\n source: 'autocomplete',\n message: lookupErrorMessage\n }\n });\n }, [lookupServiceError]);\n\n useEffect(() => {\n if (!validationServiceError) {\n return;\n }\n\n onSelect?.({\n type: 'validation-error',\n address: formData,\n status: buildAddressStatus({\n countryCode,\n formData,\n verificationStatus,\n mode,\n requireValidation\n }),\n error: {\n kind: validationServiceError.rateLimited ? 'rate-limited' : 'api',\n source: 'validation',\n message: validationErrorMessage\n }\n });\n }, [validationServiceError]);\n\n const clearServiceErrors = ({ lookup = true, validation = true, custom = false } = {}) => {\n if (lookup) {\n setLookupServiceError(null);\n }\n if (validation) {\n setValidationServiceError(null);\n }\n if (custom) {\n setCustomError(null);\n }\n };\n\n useEffect(() => {\n if (selectedIntlAddressId) {\n if (suggestions.length === 1 && suggestions[0].isDetailed) {\n setSelectedAddress(suggestions[0]);\n setSelectedIntlAddressId(null);\n setQuery('');\n setCustomError(null);\n } else if (suggestions.length === 0 && !loading) {\n setCustomError('Unable to retrieve address details. Please try another address or enter manually.');\n setSelectedIntlAddressId(null);\n setQuery('');\n }\n } else if (suggestions.length > 0 && !suggestions[0].isDetailed && !selectedAddress) {\n setSelectedAddress(null);\n setCustomError(null);\n }\n }, [suggestions, selectedIntlAddressId, selectedAddress, loading]);\n\n useEffect(() => {\n if (lookupValue !== undefined && shouldSearchRef.current && !selectedAddress) {\n setQuery(lookupValue);\n }\n }, [lookupValue, selectedAddress]);\n\n useEffect(() => {\n if (!hasPendingLookupDraft || suggestions.length === 0) {\n return undefined;\n }\n\n const handleDocumentMouseDown = (event) => {\n const component = componentRef.current;\n if (component?.contains(event.target)) {\n return;\n }\n\n const suggestionsList = suggestionsListRef.current;\n if (suggestionsList?.contains(event.target) === false) {\n shouldSearchRef.current = false;\n setQuery('');\n setSelectedAddress(null);\n setSelectedIntlAddressId(null);\n setShowValidationSuggestions(false);\n clearServiceErrors({ custom: true });\n setFormData(lookupDraftOriginalRef.current);\n setHasPendingLookupDraft(false);\n }\n };\n\n document.addEventListener('pointerdown', handleDocumentMouseDown);\n return () => {\n document.removeEventListener('pointerdown', handleDocumentMouseDown);\n };\n }, [hasPendingLookupDraft, suggestions]);\n\n useEffect(() => {\n if (selectedAddress) {\n const selectionKey = selectedAddress.address_id ||\n `${selectedAddress.street || ''}|${selectedAddress.locality || ''}|${selectedAddress.postal_code || ''}`;\n if (appliedSelectionKeyRef.current === selectionKey) {\n return;\n }\n appliedSelectionKeyRef.current = selectionKey;\n\n const config = countryConfig?.config || {};\n const mapped = {\n address1: selectedAddress.street,\n address2: '',\n city: selectedAddress.locality,\n region: selectedAddress.administrative_area,\n postalCode: selectedAddress.postal_code\n };\n const updatedFormData = { ...mapped, email: formData.email };\n setFormData(updatedFormData);\n lastCommittedAddressRef.current = updatedFormData;\n lookupDraftOriginalRef.current = updatedFormData;\n setHasPendingLookupDraft(false);\n clearServiceErrors({ custom: true });\n const currentVerificationStatus = 'autocomplete';\n setVerificationStatus(currentVerificationStatus);\n onSelect?.({\n type: 'autocomplete',\n address: updatedFormData,\n status: buildAddressStatus({\n countryCode,\n formData: updatedFormData,\n verificationStatus: currentVerificationStatus,\n mode,\n requireValidation\n })\n });\n\n if (requireValidation && config.verifyAfterAutocomplete) {\n // Trigger validation instead of directly selecting.\n // Keep suggestions visible in case multiple candidates are returned.\n setShowValidationSuggestions(true);\n setValidationTrigger(prev => prev + 1);\n }\n }\n }, [selectedAddress]);\n\n const handleInputChange = (e) => {\n const value = e.target.value;\n shouldSearchRef.current = true;\n appliedSelectionKeyRef.current = null;\n setSelectedAddress(null);\n setSelectedIntlAddressId(null);\n setShowValidationSuggestions(false);\n clearServiceErrors({ custom: true });\n if (!hasPendingLookupDraft) {\n lookupDraftOriginalRef.current = formData;\n setHasPendingLookupDraft(true);\n }\n const updatedFormData = { ...formData, [lookupField]: value };\n setFormData(updatedFormData);\n };\n\n const isFieldRequired = (field) => requiredFields.includes(field);\n const isFieldBlank = (field) => String(formData[field] || '').trim() === '';\n const hasInvalidPostalCodeFormat = (field) => {\n if (field !== 'postalCode') {\n return false;\n }\n const value = String(formData.postalCode || '').trim();\n if (!value || !countryConfig.postalCodeRegex) {\n return false;\n }\n return !countryConfig.postalCodeRegex.test(value);\n };\n const hasInvalidEmailFormat = (field) => {\n if (field !== 'email') {\n return false;\n }\n const value = String(formData.email || '').trim();\n if (!value) {\n return false;\n }\n return !isValidEmail(value);\n };\n const shouldShowFieldError = (field) => {\n const shouldShowValidation = Boolean(showAllRequiredErrors || touchedFields[field]);\n if (!shouldShowValidation) {\n return false;\n }\n const requiredError = isFieldRequired(field) && isFieldBlank(field);\n return requiredError || hasInvalidPostalCodeFormat(field) || hasInvalidEmailFormat(field);\n };\n\n const handleFieldBlur = (field) => {\n if (!isFieldRequired(field) && field !== 'email' && field !== 'postalCode') {\n return;\n }\n setTouchedFields((prev) => ({ ...prev, [field]: true }));\n };\n\n const getFieldErrorMessage = (field) => {\n if (!shouldShowFieldError(field)) {\n return '';\n }\n if (isFieldRequired(field) && isFieldBlank(field)) {\n return areLabelsLoading ? '' : fieldLabels?.fieldRequired;\n }\n if (hasInvalidPostalCodeFormat(field)) {\n return areLabelsLoading ? '' : fieldLabels?.invalidPostalCode;\n }\n if (hasInvalidEmailFormat(field)) {\n return areLabelsLoading ? '' : fieldLabels?.invalidEmail;\n }\n return '';\n };\n\n const hasVisibleFieldError = (field) => shouldShowFieldError(field);\n\n const handleEditableFieldChange = (field, value) => {\n if (field === lookupField) {\n setShowValidationSuggestions(false);\n }\n clearServiceErrors({ custom: true });\n\n const updatedFormData = { ...formData, [field]: value };\n setFormData(updatedFormData);\n const nextVerificationStatus = (!isAutocompleteMode || !requireValidation) ? 'unverified' : verificationStatus;\n setVerificationStatus(nextVerificationStatus);\n\n if (fieldTimerRef.current) {\n clearTimeout(fieldTimerRef.current);\n }\n\n fieldTimerRef.current = setTimeout(() => {\n const payload = {\n type: 'field-change',\n field,\n value,\n address: updatedFormData,\n status: buildAddressStatus({\n countryCode,\n formData: updatedFormData,\n verificationStatus: nextVerificationStatus,\n mode,\n requireValidation\n })\n };\n\n if (field === 'email' && value) {\n payload.isValidEmail = isValidEmail(value);\n }\n\n onSelect?.(payload);\n }, 500);\n };\n\n const handleSelect = (address) => {\n clearServiceErrors({ lookup: true, validation: false, custom: true });\n if (address.entries > 1 || (address.entries === 1 && address.isDetailed === false)) {\n shouldSearchRef.current = true;\n appliedSelectionKeyRef.current = null;\n setSelectedIntlAddressId(address.address_id);\n setQuery(address.displayText);\n } else {\n shouldSearchRef.current = false;\n appliedSelectionKeyRef.current = null;\n setSelectedIntlAddressId(null);\n setSelectedAddress(address);\n setQuery('');\n }\n };\n\n const handleValidationSelect = (validatedAddress) => {\n clearServiceErrors({ lookup: false, validation: true, custom: false });\n const components = validatedAddress.components || {};\n const config = countryConfig?.addressForm || [];\n const formFields = new Set(config.map(f => f.field));\n\n let mapped = {\n address1: [components.thoroughfare, components.premise].filter(Boolean).join(' ') || '',\n address2: '',\n city: components.locality || '',\n postalCode: components.postal_code || ''\n };\n\n if (formFields.has('region')) {\n mapped.region = components.administrative_area || '';\n }\n\n if (formFields.has('district')) {\n mapped.district = components.dependent_locality || '';\n }\n\n // Apply address wrapping if enabled\n if (countryConfig?.config?.wrapAddress1ToAddress2) {\n const address1Field = config.find(f => f.field === 'address1');\n if (address1Field?.maxLength) {\n const wrapped = wrapAddress1ToAddress2(mapped.address1, mapped.address2, address1Field.maxLength);\n mapped.address1 = wrapped.address1;\n mapped.address2 = wrapped.address2;\n }\n }\n\n const updatedFormData = { ...mapped, email: formData.email };\n setShowValidationSuggestions(false);\n setFormData(updatedFormData);\n lastCommittedAddressRef.current = updatedFormData;\n lookupDraftOriginalRef.current = updatedFormData;\n setHasPendingLookupDraft(false);\n const currentVerificationStatus = 'verified';\n setVerificationStatus(currentVerificationStatus);\n onSelect?.({\n type: 'validation',\n address: updatedFormData,\n verification: validatedAddress.analysis,\n status: buildAddressStatus({\n countryCode,\n formData: updatedFormData,\n verificationStatus: currentVerificationStatus,\n mode,\n requireValidation\n })\n });\n };\n\n const handleValidate = () => {\n if (!requireValidation) {\n return;\n }\n clearServiceErrors({ lookup: false, validation: true, custom: false });\n setShowValidationSuggestions(true);\n setValidationTrigger(prev => prev + 1);\n };\n\n const getFieldKey = (fieldConfig) => fieldConfig.field;\n\n const getSuggestionKey = (suggestion) => (\n suggestion.address_id ||\n [\n suggestion.displayText,\n suggestion.street,\n suggestion.address_text,\n suggestion.locality,\n suggestion.administrative_area,\n suggestion.postal_code,\n suggestion.entries\n ].filter((value) => value !== undefined && value !== null).join('|')\n );\n\n const getValidationSuggestionKey = (suggestion) => [\n suggestion.displayText,\n suggestion.address1,\n suggestion.address2,\n suggestion.address3,\n suggestion.components?.thoroughfare,\n suggestion.components?.premise,\n suggestion.components?.locality,\n suggestion.components?.administrative_area,\n suggestion.components?.postal_code\n ].filter((value) => value !== undefined && value !== null).join('|');\n\n const renderLookupActions = () => (\n <div className=\"ns-address-lookup__actions\">\n {!isAutocompleteMode && requireValidation && showManualValidateButton && (\n <button\n type=\"button\"\n onClick={handleValidate}\n disabled={validationLoading || !String(formData[lookupField] || '').trim()}\n className=\"ns-address-lookup__button ns-address-lookup__button--compact\"\n >\n {validationLoading ? 'Validating...' : 'Validate Address'}\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => {\n setShowValidationSuggestions(false);\n clearServiceErrors({ custom: true });\n setMode(mode === 'autocomplete' ? 'manual' : 'autocomplete');\n }}\n className=\"ns-address-lookup__toggle\"\n >\n {mode === 'autocomplete' ? 'Switch to Manual Entry' : 'Switch to Autocomplete'}\n </button>\n </div>\n );\n\n const renderLookupLists = (isLookupField) => {\n if (!isLookupField) {\n return null;\n }\n\n if (loading && isAutocompleteMode) {\n return <div className=\"ns-address-lookup__spinner\" />;\n }\n\n if (suggestions.length > 0 && !selectedAddress && isAutocompleteMode) {\n return (\n <ul\n ref={suggestionsListRef}\n className=\"ns-address-lookup__list ns-address-lookup__list--suggestions\">\n {suggestions.map((suggestion, index) => (\n <li\n key={getSuggestionKey(suggestion)}\n className={[\n 'ns-address-lookup__list-item',\n index < suggestions.length - 1 ? 'ns-address-lookup__list-item--divided' : ''\n ].filter(Boolean).join(' ')}\n >\n <button\n type=\"button\"\n onClick={() => handleSelect(suggestion)}\n className=\"ns-address-lookup__list-button\"\n >\n {suggestion.displayText}\n </button>\n </li>\n ))}\n </ul>\n );\n }\n\n if (!isAutocompleteMode && requireValidation && showValidationSuggestions && validationSuggestions.length > 0) {\n return (\n <ul className=\"ns-address-lookup__list ns-address-lookup__list--validation-inline\">\n {validationSuggestions.map((suggestion, index) => (\n <li\n key={getValidationSuggestionKey(suggestion)}\n className={[\n 'ns-address-lookup__list-item',\n index < validationSuggestions.length - 1 ? 'ns-address-lookup__list-item--divided' : ''\n ].filter(Boolean).join(' ')}\n >\n <button\n type=\"button\"\n onClick={() => handleValidationSelect(suggestion)}\n className=\"ns-address-lookup__list-button\"\n >\n <div className=\"ns-address-lookup__list-title\">\n {suggestion.analysis?.verification_status || 'Unknown'}\n </div>\n <div className=\"ns-address-lookup__list-subtitle\">\n {suggestion.displayText}\n </div>\n </button>\n </li>\n ))}\n </ul>\n );\n }\n\n return null;\n };\n\n const renderField = (fieldConfig) => {\n const isLookupField = fieldConfig.field === lookupField;\n const fieldError = getFieldErrorMessage(fieldConfig.field);\n const isInvalid = hasVisibleFieldError(fieldConfig.field);\n const isReadOnly = (!fieldConfig.editable && !isLookupField) && isAutocompleteMode;\n const inputClassName = [\n 'ns-address-lookup__input',\n isInvalid ? 'ns-address-lookup__input--invalid' : '',\n isReadOnly ? 'ns-address-lookup__input--readonly' : '',\n isLookupField && loading ? 'ns-address-lookup__input--loading' : ''\n ].filter(Boolean).join(' ');\n const fieldClassName = [\n 'ns-address-lookup__field',\n isInvalid ? 'ns-address-lookup__field--with-error' : ''\n ].filter(Boolean).join(' ');\n\n return (\n <div\n key={getFieldKey(fieldConfig)}\n className={fieldClassName}\n style={{ width: fieldConfig.width === 'full' ? '100%' : '50%' }}\n >\n <div className=\"ns-address-lookup__label-row\">\n <label className=\"ns-address-lookup__label\">\n {areLabelsLoading ? '' : (fieldLabels?.[fieldConfig.field] || fieldConfig.label)}\n </label>\n {isLookupField && renderLookupActions()}\n </div>\n <input\n type=\"text\"\n value={formData[fieldConfig.field] || ''}\n maxLength={fieldConfig.maxLength}\n aria-invalid={shouldShowFieldError(fieldConfig.field) ? 'true' : undefined}\n onBlur={() => handleFieldBlur(fieldConfig.field)}\n onChange={(e) => {\n if (isLookupField && isAutocompleteMode) {\n handleInputChange(e);\n } else {\n handleEditableFieldChange(fieldConfig.field, e.target.value);\n }\n }}\n readOnly={!isAutocompleteMode && !fieldConfig.editable && !isLookupField ? false : (!fieldConfig.editable && !isLookupField)}\n className={inputClassName}\n />\n {fieldError && (\n <div className=\"ns-address-lookup__error-text\">\n {fieldError}\n </div>\n )}\n {renderLookupLists(isLookupField)}\n </div>\n );\n };\n\n useEffect(() => {\n if (validationSuggestions.length === 1) {\n // Auto-select when exactly one validation result is returned\n setShowValidationSuggestions(false);\n handleValidationSelect(validationSuggestions[0]);\n }\n }, [validationSuggestions]);\n\n const renderAddressForm = () => {\n const config = countryConfig?.addressForm;\n\n if (!config) {\n return <div>No address form configured for this country</div>;\n }\n\n return (\n <>\n {config.map(renderField)}\n </>\n );\n };\n\n return (\n <div ref={componentRef} className=\"ns-address-lookup__panel\">\n {lookupServiceError && <div className=\"ns-address-lookup__message\">{lookupErrorMessage}</div>}\n {customError && <div className=\"ns-address-lookup__message\">{customError}</div>}\n {requireValidation && validationServiceError && (\n <div className=\"ns-address-lookup__message\">\n {validationErrorMessage}\n </div>\n )}\n\n <div className=\"ns-address-lookup__form\">\n {renderAddressForm()}\n </div>\n\n </div>\n );\n};\n\nSmartyIntlResults.propTypes = {\n countryCode: PropTypes.string.isRequired,\n onSelect: PropTypes.func,\n initialAddress: addressPropType,\n requireValidation: PropTypes.bool,\n showManualValidateButton: PropTypes.bool,\n validationRequestId: PropTypes.number,\n language: PropTypes.string,\n strings: labelStringsPropType\n};\n\nexport default SmartyIntlResults;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"SmartyIntlResults.js","names":["_propTypes","_interopRequireDefault","require","_react","_useSmartyInternationalLookup","_useIntlAddressValidation","_useAddressFieldLabels","_useAddressForm","_addressWrapper","_addressStatus","_validators","_componentPropTypes","_jsxRuntime","e","__esModule","default","SmartyIntlResults","countryCode","onSelect","initialAddress","requireValidation","showManualValidateButton","validationRequestId","language","strings","formDefinition","_formDefinition$addre","mode","setMode","useState","query","setQuery","selectedAddress","setSelectedAddress","selectedIntlAddressId","setSelectedIntlAddressId","formData","setFormData","verificationStatus","setVerificationStatus","customError","setCustomError","validationTrigger","setValidationTrigger","showValidationSuggestions","setShowValidationSuggestions","hasPendingLookupDraft","setHasPendingLookupDraft","touchedFields","setTouchedFields","showAllRequiredErrors","setShowAllRequiredErrors","lookupServiceError","setLookupServiceError","validationServiceError","setValidationServiceError","shouldSearchRef","useRef","fieldTimerRef","componentRef","suggestionsListRef","lastCommittedAddressRef","lookupDraftOriginalRef","appliedSelectionKeyRef","useEffect","current","type","address","status","buildAddressStatus","addressForm","resolvedAddressForm","clearTimeout","isAutocompleteMode","labels","fieldLabels","isLoading","areLabelsLoading","useAddressFieldLabels","shouldLoadAddressForm","loadedAddressForm","isFormLoading","useAddressForm","providedAddressForm","addressElements","length","lookupField","requiredFields","getRequiredFieldsFromAddressForm","suggestions","loading","error","rateLimited","useSmartyInternationalLookup","validationSuggestions","validationLoading","validationError","validationRateLimited","useIntlAddressValidation","lookupValue","lookupErrorMessage","lookupError","validationErrorMessage","rawMessage","kind","source","message","clearServiceErrors","lookup","validation","custom","isDetailed","undefined","handleDocumentMouseDown","event","component","contains","target","suggestionsList","document","addEventListener","removeEventListener","selectionKey","address_id","street","locality","postal_code","mapped","address1","address2","city","region","administrative_area","postalCode","updatedFormData","email","currentVerificationStatus","verifyAfterAutocomplete","prev","handleInputChange","value","isFieldRequired","field","includes","isFieldBlank","String","trim","hasInvalidPostalCodeFormat","postalCodeRegex","test","hasInvalidEmailFormat","isValidEmail","shouldShowFieldError","shouldShowValidation","Boolean","requiredError","handleFieldBlur","getFieldErrorMessage","fieldRequired","invalidPostalCode","invalidEmail","hasVisibleFieldError","handleEditableFieldChange","nextVerificationStatus","setTimeout","payload","handleSelect","entries","displayText","handleValidationSelect","validatedAddress","components","config","formFields","Set","map","f","thoroughfare","premise","filter","join","has","district","dependent_locality","wrapAddress1ToAddress2","address1Field","find","maxLength","wrapped","verification","analysis","handleValidate","getFieldKey","fieldConfig","getSuggestionKey","suggestion","address_text","getValidationSuggestionKey","_suggestion$component","_suggestion$component2","_suggestion$component3","_suggestion$component4","_suggestion$component5","address3","renderLookupActions","jsxs","className","children","jsx","onClick","disabled","renderLookupLists","isLookupField","ref","index","_suggestion$analysis","verification_status","renderField","fieldError","isInvalid","isReadOnly","editable","inputClassName","fieldClassName","style","width","label","onBlur","onChange","readOnly","renderAddressForm","Fragment","propTypes","PropTypes","string","isRequired","func","addressPropType","bool","number","labelStringsPropType","formDefinitionPropType","_default","exports"],"sources":["../../src/components/SmartyIntlResults.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport { useState, useEffect, useRef } from 'react';\nimport useSmartyInternationalLookup from '../hooks/useSmartyInternationalLookup';\nimport useIntlAddressValidation from '../hooks/useIntlAddressValidation';\nimport useAddressFieldLabels from '../hooks/useAddressFieldLabels';\nimport useAddressForm from '../hooks/useAddressForm';\nimport { wrapAddress1ToAddress2 } from '../utils/addressWrapper';\nimport { buildAddressStatus, getRequiredFieldsFromAddressForm } from '../utils/addressStatus';\nimport { isValidEmail } from '../utils/validators';\nimport { addressPropType, formDefinitionPropType, labelStringsPropType } from '../utils/componentPropTypes';\n\nconst SmartyIntlResults = ({\n countryCode,\n onSelect,\n initialAddress = null,\n requireValidation = true,\n showManualValidateButton = false,\n validationRequestId = 0,\n language = 'en',\n strings = null,\n formDefinition = null\n}) => {\n const [mode, setMode] = useState('autocomplete');\n const [query, setQuery] = useState('');\n const [selectedAddress, setSelectedAddress] = useState(null);\n const [selectedIntlAddressId, setSelectedIntlAddressId] = useState(null);\n const [formData, setFormData] = useState(initialAddress || {});\n const [verificationStatus, setVerificationStatus] = useState('unverified');\n const [customError, setCustomError] = useState(null);\n const [validationTrigger, setValidationTrigger] = useState(0);\n const [showValidationSuggestions, setShowValidationSuggestions] = useState(false);\n const [hasPendingLookupDraft, setHasPendingLookupDraft] = useState(false);\n const [touchedFields, setTouchedFields] = useState({});\n const [showAllRequiredErrors, setShowAllRequiredErrors] = useState(false);\n const [lookupServiceError, setLookupServiceError] = useState(null);\n const [validationServiceError, setValidationServiceError] = useState(null);\n const shouldSearchRef = useRef(true);\n const fieldTimerRef = useRef(null);\n const componentRef = useRef(null);\n const suggestionsListRef = useRef(null);\n const lastCommittedAddressRef = useRef(initialAddress || {});\n const lookupDraftOriginalRef = useRef(initialAddress || {});\n const appliedSelectionKeyRef = useRef(null);\n\n useEffect(() => {\n if (initialAddress) {\n setFormData(initialAddress);\n shouldSearchRef.current = false;\n lastCommittedAddressRef.current = initialAddress;\n lookupDraftOriginalRef.current = initialAddress;\n setTouchedFields({});\n setShowAllRequiredErrors(false);\n setLookupServiceError(null);\n setValidationServiceError(null);\n }\n }, [initialAddress]);\n\n useEffect(() => {\n if (!validationRequestId) {\n return;\n }\n\n setShowAllRequiredErrors(true);\n onSelect?.({\n type: 'validation-request',\n address: formData,\n status: buildAddressStatus({\n countryCode,\n addressForm: resolvedAddressForm,\n formData,\n verificationStatus,\n mode,\n requireValidation\n })\n });\n }, [validationRequestId]);\n\n useEffect(() => {\n return () => {\n if (fieldTimerRef.current) {\n clearTimeout(fieldTimerRef.current);\n }\n };\n }, []);\n\n const isAutocompleteMode = mode === 'autocomplete';\n const {\n labels: fieldLabels,\n isLoading: areLabelsLoading\n } = useAddressFieldLabels(countryCode, language, strings);\n const shouldLoadAddressForm = !formDefinition;\n const {\n addressForm: loadedAddressForm,\n isLoading: isFormLoading\n } = useAddressForm(countryCode, shouldLoadAddressForm);\n const providedAddressForm = formDefinition?.addressElements?.length ? formDefinition : null;\n const resolvedAddressForm = providedAddressForm || loadedAddressForm;\n const lookupField = resolvedAddressForm?.lookupField || 'address1';\n const requiredFields = getRequiredFieldsFromAddressForm(resolvedAddressForm);\n\n const { suggestions, loading, error, rateLimited } = useSmartyInternationalLookup(\n shouldSearchRef.current && isAutocompleteMode ? query : '',\n countryCode,\n selectedIntlAddressId,\n 500\n );\n\n const {\n suggestions: validationSuggestions,\n loading: validationLoading,\n error: validationError,\n rateLimited: validationRateLimited\n } = useIntlAddressValidation(\n formData,\n countryCode,\n requireValidation ? validationTrigger : 0\n );\n const lookupValue = formData[lookupField];\n const lookupErrorMessage = lookupServiceError?.rateLimited ?\n (fieldLabels?.rateLimited || 'Too many requests. Please wait a moment and try again.') :\n (fieldLabels?.lookupError || 'We could not look up that address right now.');\n const validationErrorMessage = validationServiceError?.rateLimited ?\n (fieldLabels?.rateLimited || 'Too many requests. Please wait a moment and try again.') :\n (fieldLabels?.validationError || 'We could not validate that address right now.');\n\n useEffect(() => {\n if (!error) {\n setLookupServiceError(null);\n return;\n }\n\n setLookupServiceError({\n rateLimited,\n rawMessage: error\n });\n }, [error, rateLimited]);\n\n useEffect(() => {\n if (!validationError) {\n setValidationServiceError(null);\n return;\n }\n\n setValidationServiceError({\n rateLimited: validationRateLimited,\n rawMessage: validationError\n });\n }, [validationError, validationRateLimited]);\n\n useEffect(() => {\n if (!lookupServiceError) {\n return;\n }\n\n onSelect?.({\n type: 'lookup-error',\n address: formData,\n status: buildAddressStatus({\n countryCode,\n addressForm: resolvedAddressForm,\n formData,\n verificationStatus,\n mode,\n requireValidation\n }),\n error: {\n kind: lookupServiceError.rateLimited ? 'rate-limited' : 'api',\n source: 'autocomplete',\n message: lookupErrorMessage\n }\n });\n }, [lookupServiceError]);\n\n useEffect(() => {\n if (!validationServiceError) {\n return;\n }\n\n onSelect?.({\n type: 'validation-error',\n address: formData,\n status: buildAddressStatus({\n countryCode,\n addressForm: resolvedAddressForm,\n formData,\n verificationStatus,\n mode,\n requireValidation\n }),\n error: {\n kind: validationServiceError.rateLimited ? 'rate-limited' : 'api',\n source: 'validation',\n message: validationErrorMessage\n }\n });\n }, [validationServiceError]);\n\n const clearServiceErrors = ({ lookup = true, validation = true, custom = false } = {}) => {\n if (lookup) {\n setLookupServiceError(null);\n }\n if (validation) {\n setValidationServiceError(null);\n }\n if (custom) {\n setCustomError(null);\n }\n };\n\n useEffect(() => {\n if (selectedIntlAddressId) {\n if (suggestions.length === 1 && suggestions[0].isDetailed) {\n setSelectedAddress(suggestions[0]);\n setSelectedIntlAddressId(null);\n setQuery('');\n setCustomError(null);\n } else if (suggestions.length === 0 && !loading) {\n setCustomError('Unable to retrieve address details. Please try another address or enter manually.');\n setSelectedIntlAddressId(null);\n setQuery('');\n }\n } else if (suggestions.length > 0 && !suggestions[0].isDetailed && !selectedAddress) {\n setSelectedAddress(null);\n setCustomError(null);\n }\n }, [suggestions, selectedIntlAddressId, selectedAddress, loading]);\n\n useEffect(() => {\n if (lookupValue !== undefined && shouldSearchRef.current && !selectedAddress) {\n setQuery(lookupValue);\n }\n }, [lookupValue, selectedAddress]);\n\n useEffect(() => {\n if (!hasPendingLookupDraft || suggestions.length === 0) {\n return undefined;\n }\n\n const handleDocumentMouseDown = (event) => {\n const component = componentRef.current;\n if (component?.contains(event.target)) {\n return;\n }\n\n const suggestionsList = suggestionsListRef.current;\n if (suggestionsList?.contains(event.target) === false) {\n shouldSearchRef.current = false;\n setQuery('');\n setSelectedAddress(null);\n setSelectedIntlAddressId(null);\n setShowValidationSuggestions(false);\n clearServiceErrors({ custom: true });\n setFormData(lookupDraftOriginalRef.current);\n setHasPendingLookupDraft(false);\n }\n };\n\n document.addEventListener('pointerdown', handleDocumentMouseDown);\n return () => {\n document.removeEventListener('pointerdown', handleDocumentMouseDown);\n };\n }, [hasPendingLookupDraft, suggestions]);\n\n useEffect(() => {\n if (selectedAddress) {\n const selectionKey = selectedAddress.address_id ||\n `${selectedAddress.street || ''}|${selectedAddress.locality || ''}|${selectedAddress.postal_code || ''}`;\n if (appliedSelectionKeyRef.current === selectionKey) {\n return;\n }\n appliedSelectionKeyRef.current = selectionKey;\n\n const mapped = {\n address1: selectedAddress.street,\n address2: '',\n city: selectedAddress.locality,\n region: selectedAddress.administrative_area,\n postalCode: selectedAddress.postal_code\n };\n const updatedFormData = { ...mapped, email: formData.email };\n setFormData(updatedFormData);\n lastCommittedAddressRef.current = updatedFormData;\n lookupDraftOriginalRef.current = updatedFormData;\n setHasPendingLookupDraft(false);\n clearServiceErrors({ custom: true });\n const currentVerificationStatus = 'autocomplete';\n setVerificationStatus(currentVerificationStatus);\n onSelect?.({\n type: 'autocomplete',\n address: updatedFormData,\n status: buildAddressStatus({\n countryCode,\n addressForm: resolvedAddressForm,\n formData: updatedFormData,\n verificationStatus: currentVerificationStatus,\n mode,\n requireValidation\n })\n });\n\n if (requireValidation && resolvedAddressForm.verifyAfterAutocomplete) {\n // Trigger validation instead of directly selecting.\n // Keep suggestions visible in case multiple candidates are returned.\n setShowValidationSuggestions(true);\n setValidationTrigger(prev => prev + 1);\n }\n }\n }, [selectedAddress]);\n\n const handleInputChange = (e) => {\n const value = e.target.value;\n shouldSearchRef.current = true;\n appliedSelectionKeyRef.current = null;\n setSelectedAddress(null);\n setSelectedIntlAddressId(null);\n setShowValidationSuggestions(false);\n clearServiceErrors({ custom: true });\n if (!hasPendingLookupDraft) {\n lookupDraftOriginalRef.current = formData;\n setHasPendingLookupDraft(true);\n }\n const updatedFormData = { ...formData, [lookupField]: value };\n setFormData(updatedFormData);\n };\n\n const isFieldRequired = (field) => requiredFields.includes(field);\n const isFieldBlank = (field) => String(formData[field] || '').trim() === '';\n const hasInvalidPostalCodeFormat = (field) => {\n if (field !== 'postalCode') {\n return false;\n }\n const value = String(formData.postalCode || '').trim();\n if (!value || !resolvedAddressForm.postalCodeRegex) {\n return false;\n }\n return !resolvedAddressForm.postalCodeRegex.test(value);\n };\n const hasInvalidEmailFormat = (field) => {\n if (field !== 'email') {\n return false;\n }\n const value = String(formData.email || '').trim();\n if (!value) {\n return false;\n }\n return !isValidEmail(value);\n };\n const shouldShowFieldError = (field) => {\n const shouldShowValidation = Boolean(showAllRequiredErrors || touchedFields[field]);\n if (!shouldShowValidation) {\n return false;\n }\n const requiredError = isFieldRequired(field) && isFieldBlank(field);\n return requiredError || hasInvalidPostalCodeFormat(field) || hasInvalidEmailFormat(field);\n };\n\n const handleFieldBlur = (field) => {\n if (!isFieldRequired(field) && field !== 'email' && field !== 'postalCode') {\n return;\n }\n setTouchedFields((prev) => ({ ...prev, [field]: true }));\n };\n\n const getFieldErrorMessage = (field) => {\n if (!shouldShowFieldError(field)) {\n return '';\n }\n if (isFieldRequired(field) && isFieldBlank(field)) {\n return areLabelsLoading ? '' : fieldLabels?.fieldRequired;\n }\n if (hasInvalidPostalCodeFormat(field)) {\n return areLabelsLoading ? '' : fieldLabels?.invalidPostalCode;\n }\n if (hasInvalidEmailFormat(field)) {\n return areLabelsLoading ? '' : fieldLabels?.invalidEmail;\n }\n return '';\n };\n\n const hasVisibleFieldError = (field) => shouldShowFieldError(field);\n\n const handleEditableFieldChange = (field, value) => {\n if (field === lookupField) {\n setShowValidationSuggestions(false);\n }\n clearServiceErrors({ custom: true });\n\n const updatedFormData = { ...formData, [field]: value };\n setFormData(updatedFormData);\n const nextVerificationStatus = (!isAutocompleteMode || !requireValidation) ? 'unverified' : verificationStatus;\n setVerificationStatus(nextVerificationStatus);\n\n if (fieldTimerRef.current) {\n clearTimeout(fieldTimerRef.current);\n }\n\n fieldTimerRef.current = setTimeout(() => {\n const payload = {\n type: 'field-change',\n field,\n value,\n address: updatedFormData,\n status: buildAddressStatus({\n countryCode,\n addressForm: resolvedAddressForm,\n formData: updatedFormData,\n verificationStatus: nextVerificationStatus,\n mode,\n requireValidation\n })\n };\n\n if (field === 'email' && value) {\n payload.isValidEmail = isValidEmail(value);\n }\n\n onSelect?.(payload);\n }, 500);\n };\n\n const handleSelect = (address) => {\n clearServiceErrors({ lookup: true, validation: false, custom: true });\n if (address.entries > 1 || (address.entries === 1 && address.isDetailed === false)) {\n shouldSearchRef.current = true;\n appliedSelectionKeyRef.current = null;\n setSelectedIntlAddressId(address.address_id);\n setQuery(address.displayText);\n } else {\n shouldSearchRef.current = false;\n appliedSelectionKeyRef.current = null;\n setSelectedIntlAddressId(null);\n setSelectedAddress(address);\n setQuery('');\n }\n };\n\n const handleValidationSelect = (validatedAddress) => {\n clearServiceErrors({ lookup: false, validation: true, custom: false });\n const components = validatedAddress.components || {};\n const config = resolvedAddressForm.addressElements || [];\n const formFields = new Set(config.map(f => f.field));\n\n let mapped = {\n address1: [components.thoroughfare, components.premise].filter(Boolean).join(' ') || '',\n address2: '',\n city: components.locality || '',\n postalCode: components.postal_code || ''\n };\n\n if (formFields.has('region')) {\n mapped.region = components.administrative_area || '';\n }\n\n if (formFields.has('district')) {\n mapped.district = components.dependent_locality || '';\n }\n\n // Apply address wrapping if enabled\n if (resolvedAddressForm.wrapAddress1ToAddress2) {\n const address1Field = config.find(f => f.field === 'address1');\n if (address1Field?.maxLength) {\n const wrapped = wrapAddress1ToAddress2(mapped.address1, mapped.address2, address1Field.maxLength);\n mapped.address1 = wrapped.address1;\n mapped.address2 = wrapped.address2;\n }\n }\n\n const updatedFormData = { ...mapped, email: formData.email };\n setShowValidationSuggestions(false);\n setFormData(updatedFormData);\n lastCommittedAddressRef.current = updatedFormData;\n lookupDraftOriginalRef.current = updatedFormData;\n setHasPendingLookupDraft(false);\n const currentVerificationStatus = 'verified';\n setVerificationStatus(currentVerificationStatus);\n onSelect?.({\n type: 'validation',\n address: updatedFormData,\n verification: validatedAddress.analysis,\n status: buildAddressStatus({\n countryCode,\n addressForm: resolvedAddressForm,\n formData: updatedFormData,\n verificationStatus: currentVerificationStatus,\n mode,\n requireValidation\n })\n });\n };\n\n const handleValidate = () => {\n if (!requireValidation) {\n return;\n }\n clearServiceErrors({ lookup: false, validation: true, custom: false });\n setShowValidationSuggestions(true);\n setValidationTrigger(prev => prev + 1);\n };\n\n const getFieldKey = (fieldConfig) => fieldConfig.field;\n\n const getSuggestionKey = (suggestion) => (\n suggestion.address_id ||\n [\n suggestion.displayText,\n suggestion.street,\n suggestion.address_text,\n suggestion.locality,\n suggestion.administrative_area,\n suggestion.postal_code,\n suggestion.entries\n ].filter((value) => value !== undefined && value !== null).join('|')\n );\n\n const getValidationSuggestionKey = (suggestion) => [\n suggestion.displayText,\n suggestion.address1,\n suggestion.address2,\n suggestion.address3,\n suggestion.components?.thoroughfare,\n suggestion.components?.premise,\n suggestion.components?.locality,\n suggestion.components?.administrative_area,\n suggestion.components?.postal_code\n ].filter((value) => value !== undefined && value !== null).join('|');\n\n const renderLookupActions = () => (\n <div className=\"ns-address-lookup__actions\">\n {!isAutocompleteMode && requireValidation && showManualValidateButton && (\n <button\n type=\"button\"\n onClick={handleValidate}\n disabled={validationLoading || !String(formData[lookupField] || '').trim()}\n className=\"ns-address-lookup__button ns-address-lookup__button--compact\"\n >\n {validationLoading ? 'Validating...' : 'Validate Address'}\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => {\n setShowValidationSuggestions(false);\n clearServiceErrors({ custom: true });\n setMode(mode === 'autocomplete' ? 'manual' : 'autocomplete');\n }}\n className=\"ns-address-lookup__toggle\"\n >\n {mode === 'autocomplete' ? 'Switch to Manual Entry' : 'Switch to Autocomplete'}\n </button>\n </div>\n );\n\n const renderLookupLists = (isLookupField) => {\n if (!isLookupField) {\n return null;\n }\n\n if (loading && isAutocompleteMode) {\n return <div className=\"ns-address-lookup__spinner\" />;\n }\n\n if (suggestions.length > 0 && !selectedAddress && isAutocompleteMode) {\n return (\n <ul\n ref={suggestionsListRef}\n className=\"ns-address-lookup__list ns-address-lookup__list--suggestions\">\n {suggestions.map((suggestion, index) => (\n <li\n key={getSuggestionKey(suggestion)}\n className={[\n 'ns-address-lookup__list-item',\n index < suggestions.length - 1 ? 'ns-address-lookup__list-item--divided' : ''\n ].filter(Boolean).join(' ')}\n >\n <button\n type=\"button\"\n onClick={() => handleSelect(suggestion)}\n className=\"ns-address-lookup__list-button\"\n >\n {suggestion.displayText}\n </button>\n </li>\n ))}\n </ul>\n );\n }\n\n if (!isAutocompleteMode && requireValidation && showValidationSuggestions && validationSuggestions.length > 0) {\n return (\n <ul className=\"ns-address-lookup__list ns-address-lookup__list--validation-inline\">\n {validationSuggestions.map((suggestion, index) => (\n <li\n key={getValidationSuggestionKey(suggestion)}\n className={[\n 'ns-address-lookup__list-item',\n index < validationSuggestions.length - 1 ? 'ns-address-lookup__list-item--divided' : ''\n ].filter(Boolean).join(' ')}\n >\n <button\n type=\"button\"\n onClick={() => handleValidationSelect(suggestion)}\n className=\"ns-address-lookup__list-button\"\n >\n <div className=\"ns-address-lookup__list-title\">\n {suggestion.analysis?.verification_status || 'Unknown'}\n </div>\n <div className=\"ns-address-lookup__list-subtitle\">\n {suggestion.displayText}\n </div>\n </button>\n </li>\n ))}\n </ul>\n );\n }\n\n return null;\n };\n\n const renderField = (fieldConfig) => {\n const isLookupField = fieldConfig.field === lookupField;\n const fieldError = getFieldErrorMessage(fieldConfig.field);\n const isInvalid = hasVisibleFieldError(fieldConfig.field);\n const isReadOnly = (!fieldConfig.editable && !isLookupField) && isAutocompleteMode;\n const inputClassName = [\n 'ns-address-lookup__input',\n isInvalid ? 'ns-address-lookup__input--invalid' : '',\n isReadOnly ? 'ns-address-lookup__input--readonly' : '',\n isLookupField && loading ? 'ns-address-lookup__input--loading' : ''\n ].filter(Boolean).join(' ');\n const fieldClassName = [\n 'ns-address-lookup__field',\n isInvalid ? 'ns-address-lookup__field--with-error' : ''\n ].filter(Boolean).join(' ');\n\n return (\n <div\n key={getFieldKey(fieldConfig)}\n className={fieldClassName}\n style={{ width: fieldConfig.width === 'full' ? '100%' : '50%' }}\n >\n <div className=\"ns-address-lookup__label-row\">\n <label className=\"ns-address-lookup__label\">\n {areLabelsLoading ? '' : (fieldLabels?.[fieldConfig.field] || fieldConfig.label)}\n </label>\n {isLookupField && renderLookupActions()}\n </div>\n <input\n type=\"text\"\n value={formData[fieldConfig.field] || ''}\n maxLength={fieldConfig.maxLength}\n aria-invalid={shouldShowFieldError(fieldConfig.field) ? 'true' : undefined}\n onBlur={() => handleFieldBlur(fieldConfig.field)}\n onChange={(e) => {\n if (isLookupField && isAutocompleteMode) {\n handleInputChange(e);\n } else {\n handleEditableFieldChange(fieldConfig.field, e.target.value);\n }\n }}\n readOnly={!isAutocompleteMode && !fieldConfig.editable && !isLookupField ? false : (!fieldConfig.editable && !isLookupField)}\n className={inputClassName}\n />\n {fieldError && (\n <div className=\"ns-address-lookup__error-text\">\n {fieldError}\n </div>\n )}\n {renderLookupLists(isLookupField)}\n </div>\n );\n };\n\n useEffect(() => {\n if (validationSuggestions.length === 1) {\n // Auto-select when exactly one validation result is returned\n setShowValidationSuggestions(false);\n handleValidationSelect(validationSuggestions[0]);\n }\n }, [validationSuggestions]);\n\n const renderAddressForm = () => {\n const config = resolvedAddressForm?.addressElements;\n\n if (!config?.length) {\n if (isFormLoading) {\n return <div>Loading address form...</div>;\n }\n\n return <div>No form available for this country: {countryCode}</div>;\n }\n\n return (\n <>\n {config.map(renderField)}\n </>\n );\n };\n\n return (\n <div ref={componentRef} className=\"ns-address-lookup__panel\">\n {lookupServiceError && <div className=\"ns-address-lookup__message\">{lookupErrorMessage}</div>}\n {customError && <div className=\"ns-address-lookup__message\">{customError}</div>}\n {requireValidation && validationServiceError && (\n <div className=\"ns-address-lookup__message\">\n {validationErrorMessage}\n </div>\n )}\n\n <div className=\"ns-address-lookup__form\">\n {renderAddressForm()}\n </div>\n\n </div>\n );\n};\n\nSmartyIntlResults.propTypes = {\n countryCode: PropTypes.string.isRequired,\n onSelect: PropTypes.func,\n initialAddress: addressPropType,\n requireValidation: PropTypes.bool,\n showManualValidateButton: PropTypes.bool,\n validationRequestId: PropTypes.number,\n language: PropTypes.string,\n strings: labelStringsPropType,\n formDefinition: formDefinitionPropType\n};\n\nexport default SmartyIntlResults;\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,6BAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,yBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,sBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,eAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AACA,IAAAS,mBAAA,GAAAT,OAAA;AAA4G,IAAAU,WAAA,GAAAV,OAAA;AAAA,SAAAD,uBAAAY,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE5G,MAAMG,iBAAiB,GAAGA,CAAC;EACzBC,WAAW;EACXC,QAAQ;EACRC,cAAc,GAAG,IAAI;EACrBC,iBAAiB,GAAG,IAAI;EACxBC,wBAAwB,GAAG,KAAK;EAChCC,mBAAmB,GAAG,CAAC;EACvBC,QAAQ,GAAG,IAAI;EACfC,OAAO,GAAG,IAAI;EACdC,cAAc,GAAG;AACnB,CAAC,KAAK;EAAA,IAAAC,qBAAA;EACJ,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAC,eAAQ,EAAC,cAAc,CAAC;EAChD,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAF,eAAQ,EAAC,EAAE,CAAC;EACtC,MAAM,CAACG,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAJ,eAAQ,EAAC,IAAI,CAAC;EAC5D,MAAM,CAACK,qBAAqB,EAAEC,wBAAwB,CAAC,GAAG,IAAAN,eAAQ,EAAC,IAAI,CAAC;EACxE,MAAM,CAACO,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAR,eAAQ,EAACV,cAAc,IAAI,CAAC,CAAC,CAAC;EAC9D,MAAM,CAACmB,kBAAkB,EAAEC,qBAAqB,CAAC,GAAG,IAAAV,eAAQ,EAAC,YAAY,CAAC;EAC1E,MAAM,CAACW,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAZ,eAAQ,EAAC,IAAI,CAAC;EACpD,MAAM,CAACa,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG,IAAAd,eAAQ,EAAC,CAAC,CAAC;EAC7D,MAAM,CAACe,yBAAyB,EAAEC,4BAA4B,CAAC,GAAG,IAAAhB,eAAQ,EAAC,KAAK,CAAC;EACjF,MAAM,CAACiB,qBAAqB,EAAEC,wBAAwB,CAAC,GAAG,IAAAlB,eAAQ,EAAC,KAAK,CAAC;EACzE,MAAM,CAACmB,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAApB,eAAQ,EAAC,CAAC,CAAC,CAAC;EACtD,MAAM,CAACqB,qBAAqB,EAAEC,wBAAwB,CAAC,GAAG,IAAAtB,eAAQ,EAAC,KAAK,CAAC;EACzE,MAAM,CAACuB,kBAAkB,EAAEC,qBAAqB,CAAC,GAAG,IAAAxB,eAAQ,EAAC,IAAI,CAAC;EAClE,MAAM,CAACyB,sBAAsB,EAAEC,yBAAyB,CAAC,GAAG,IAAA1B,eAAQ,EAAC,IAAI,CAAC;EAC1E,MAAM2B,eAAe,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EACpC,MAAMC,aAAa,GAAG,IAAAD,aAAM,EAAC,IAAI,CAAC;EAClC,MAAME,YAAY,GAAG,IAAAF,aAAM,EAAC,IAAI,CAAC;EACjC,MAAMG,kBAAkB,GAAG,IAAAH,aAAM,EAAC,IAAI,CAAC;EACvC,MAAMI,uBAAuB,GAAG,IAAAJ,aAAM,EAACtC,cAAc,IAAI,CAAC,CAAC,CAAC;EAC5D,MAAM2C,sBAAsB,GAAG,IAAAL,aAAM,EAACtC,cAAc,IAAI,CAAC,CAAC,CAAC;EAC3D,MAAM4C,sBAAsB,GAAG,IAAAN,aAAM,EAAC,IAAI,CAAC;EAE3C,IAAAO,gBAAS,EAAC,MAAM;IACd,IAAI7C,cAAc,EAAE;MAClBkB,WAAW,CAAClB,cAAc,CAAC;MAC3BqC,eAAe,CAACS,OAAO,GAAG,KAAK;MAC/BJ,uBAAuB,CAACI,OAAO,GAAG9C,cAAc;MAChD2C,sBAAsB,CAACG,OAAO,GAAG9C,cAAc;MAC/C8B,gBAAgB,CAAC,CAAC,CAAC,CAAC;MACpBE,wBAAwB,CAAC,KAAK,CAAC;MAC/BE,qBAAqB,CAAC,IAAI,CAAC;MAC3BE,yBAAyB,CAAC,IAAI,CAAC;IACjC;EACF,CAAC,EAAE,CAACpC,cAAc,CAAC,CAAC;EAEpB,IAAA6C,gBAAS,EAAC,MAAM;IACd,IAAI,CAAC1C,mBAAmB,EAAE;MACxB;IACF;IAEA6B,wBAAwB,CAAC,IAAI,CAAC;IAC9BjC,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG;MACTgD,IAAI,EAAE,oBAAoB;MAC1BC,OAAO,EAAE/B,QAAQ;MACjBgC,MAAM,EAAE,IAAAC,iCAAkB,EAAC;QACzBpD,WAAW;QACXqD,WAAW,EAAEC,mBAAmB;QAChCnC,QAAQ;QACRE,kBAAkB;QAClBX,IAAI;QACJP;MACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,EAAE,CAACE,mBAAmB,CAAC,CAAC;EAEzB,IAAA0C,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACX,IAAIN,aAAa,CAACO,OAAO,EAAE;QACzBO,YAAY,CAACd,aAAa,CAACO,OAAO,CAAC;MACrC;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMQ,kBAAkB,GAAG9C,IAAI,KAAK,cAAc;EAClD,MAAM;IACJ+C,MAAM,EAAEC,WAAW;IACnBC,SAAS,EAAEC;EACb,CAAC,GAAG,IAAAC,8BAAqB,EAAC7D,WAAW,EAAEM,QAAQ,EAAEC,OAAO,CAAC;EACzD,MAAMuD,qBAAqB,GAAG,CAACtD,cAAc;EAC7C,MAAM;IACJ6C,WAAW,EAAEU,iBAAiB;IAC9BJ,SAAS,EAAEK;EACb,CAAC,GAAG,IAAAC,uBAAc,EAACjE,WAAW,EAAE8D,qBAAqB,CAAC;EACtD,MAAMI,mBAAmB,GAAG1D,cAAc,aAAdA,cAAc,gBAAAC,qBAAA,GAAdD,cAAc,CAAE2D,eAAe,cAAA1D,qBAAA,eAA/BA,qBAAA,CAAiC2D,MAAM,GAAG5D,cAAc,GAAG,IAAI;EAC3F,MAAM8C,mBAAmB,GAAGY,mBAAmB,IAAIH,iBAAiB;EACpE,MAAMM,WAAW,GAAG,CAAAf,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAEe,WAAW,KAAI,UAAU;EAClE,MAAMC,cAAc,GAAG,IAAAC,+CAAgC,EAACjB,mBAAmB,CAAC;EAE5E,MAAM;IAAEkB,WAAW;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAY,CAAC,GAAG,IAAAC,qCAA4B,EAC/ErC,eAAe,CAACS,OAAO,IAAIQ,kBAAkB,GAAG3C,KAAK,GAAG,EAAE,EAC1Db,WAAW,EACXiB,qBAAqB,EACrB,GACF,CAAC;EAED,MAAM;IACJuD,WAAW,EAAEK,qBAAqB;IAClCJ,OAAO,EAAEK,iBAAiB;IAC1BJ,KAAK,EAAEK,eAAe;IACtBJ,WAAW,EAAEK;EACf,CAAC,GAAG,IAAAC,iCAAwB,EAC1B9D,QAAQ,EACRnB,WAAW,EACXG,iBAAiB,GAAGsB,iBAAiB,GAAG,CAC1C,CAAC;EACD,MAAMyD,WAAW,GAAG/D,QAAQ,CAACkD,WAAW,CAAC;EACzC,MAAMc,kBAAkB,GAAGhD,kBAAkB,aAAlBA,kBAAkB,eAAlBA,kBAAkB,CAAEwC,WAAW,GACvD,CAAAjB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEiB,WAAW,KAAI,wDAAwD,GACpF,CAAAjB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE0B,WAAW,KAAI,8CAA+C;EAC9E,MAAMC,sBAAsB,GAAGhD,sBAAsB,aAAtBA,sBAAsB,eAAtBA,sBAAsB,CAAEsC,WAAW,GAC/D,CAAAjB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEiB,WAAW,KAAI,wDAAwD,GACpF,CAAAjB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEqB,eAAe,KAAI,+CAAgD;EAEnF,IAAAhC,gBAAS,EAAC,MAAM;IACd,IAAI,CAAC2B,KAAK,EAAE;MACVtC,qBAAqB,CAAC,IAAI,CAAC;MAC3B;IACF;IAEAA,qBAAqB,CAAC;MACpBuC,WAAW;MACXW,UAAU,EAAEZ;IACd,CAAC,CAAC;EACJ,CAAC,EAAE,CAACA,KAAK,EAAEC,WAAW,CAAC,CAAC;EAExB,IAAA5B,gBAAS,EAAC,MAAM;IACd,IAAI,CAACgC,eAAe,EAAE;MACpBzC,yBAAyB,CAAC,IAAI,CAAC;MAC/B;IACF;IAEAA,yBAAyB,CAAC;MACxBqC,WAAW,EAAEK,qBAAqB;MAClCM,UAAU,EAAEP;IACd,CAAC,CAAC;EACJ,CAAC,EAAE,CAACA,eAAe,EAAEC,qBAAqB,CAAC,CAAC;EAE5C,IAAAjC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACZ,kBAAkB,EAAE;MACvB;IACF;IAEAlC,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG;MACTgD,IAAI,EAAE,cAAc;MACpBC,OAAO,EAAE/B,QAAQ;MACjBgC,MAAM,EAAE,IAAAC,iCAAkB,EAAC;QACzBpD,WAAW;QACXqD,WAAW,EAAEC,mBAAmB;QAChCnC,QAAQ;QACRE,kBAAkB;QAClBX,IAAI;QACJP;MACF,CAAC,CAAC;MACFuE,KAAK,EAAE;QACLa,IAAI,EAAEpD,kBAAkB,CAACwC,WAAW,GAAG,cAAc,GAAG,KAAK;QAC7Da,MAAM,EAAE,cAAc;QACtBC,OAAO,EAAEN;MACX;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAAChD,kBAAkB,CAAC,CAAC;EAExB,IAAAY,gBAAS,EAAC,MAAM;IACd,IAAI,CAACV,sBAAsB,EAAE;MAC3B;IACF;IAEApC,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG;MACTgD,IAAI,EAAE,kBAAkB;MACxBC,OAAO,EAAE/B,QAAQ;MACjBgC,MAAM,EAAE,IAAAC,iCAAkB,EAAC;QACzBpD,WAAW;QACXqD,WAAW,EAAEC,mBAAmB;QAChCnC,QAAQ;QACRE,kBAAkB;QAClBX,IAAI;QACJP;MACF,CAAC,CAAC;MACFuE,KAAK,EAAE;QACLa,IAAI,EAAElD,sBAAsB,CAACsC,WAAW,GAAG,cAAc,GAAG,KAAK;QACjEa,MAAM,EAAE,YAAY;QACpBC,OAAO,EAAEJ;MACX;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAAChD,sBAAsB,CAAC,CAAC;EAE5B,MAAMqD,kBAAkB,GAAGA,CAAC;IAAEC,MAAM,GAAG,IAAI;IAAEC,UAAU,GAAG,IAAI;IAAEC,MAAM,GAAG;EAAM,CAAC,GAAG,CAAC,CAAC,KAAK;IACxF,IAAIF,MAAM,EAAE;MACVvD,qBAAqB,CAAC,IAAI,CAAC;IAC7B;IACA,IAAIwD,UAAU,EAAE;MACdtD,yBAAyB,CAAC,IAAI,CAAC;IACjC;IACA,IAAIuD,MAAM,EAAE;MACVrE,cAAc,CAAC,IAAI,CAAC;IACtB;EACF,CAAC;EAED,IAAAuB,gBAAS,EAAC,MAAM;IACd,IAAI9B,qBAAqB,EAAE;MACzB,IAAIuD,WAAW,CAACJ,MAAM,KAAK,CAAC,IAAII,WAAW,CAAC,CAAC,CAAC,CAACsB,UAAU,EAAE;QACzD9E,kBAAkB,CAACwD,WAAW,CAAC,CAAC,CAAC,CAAC;QAClCtD,wBAAwB,CAAC,IAAI,CAAC;QAC9BJ,QAAQ,CAAC,EAAE,CAAC;QACZU,cAAc,CAAC,IAAI,CAAC;MACtB,CAAC,MAAM,IAAIgD,WAAW,CAACJ,MAAM,KAAK,CAAC,IAAI,CAACK,OAAO,EAAE;QAC/CjD,cAAc,CAAC,mFAAmF,CAAC;QACnGN,wBAAwB,CAAC,IAAI,CAAC;QAC9BJ,QAAQ,CAAC,EAAE,CAAC;MACd;IACF,CAAC,MAAM,IAAI0D,WAAW,CAACJ,MAAM,GAAG,CAAC,IAAI,CAACI,WAAW,CAAC,CAAC,CAAC,CAACsB,UAAU,IAAI,CAAC/E,eAAe,EAAE;MACnFC,kBAAkB,CAAC,IAAI,CAAC;MACxBQ,cAAc,CAAC,IAAI,CAAC;IACtB;EACF,CAAC,EAAE,CAACgD,WAAW,EAAEvD,qBAAqB,EAAEF,eAAe,EAAE0D,OAAO,CAAC,CAAC;EAElE,IAAA1B,gBAAS,EAAC,MAAM;IACd,IAAImC,WAAW,KAAKa,SAAS,IAAIxD,eAAe,CAACS,OAAO,IAAI,CAACjC,eAAe,EAAE;MAC5ED,QAAQ,CAACoE,WAAW,CAAC;IACvB;EACF,CAAC,EAAE,CAACA,WAAW,EAAEnE,eAAe,CAAC,CAAC;EAElC,IAAAgC,gBAAS,EAAC,MAAM;IACd,IAAI,CAAClB,qBAAqB,IAAI2C,WAAW,CAACJ,MAAM,KAAK,CAAC,EAAE;MACtD,OAAO2B,SAAS;IAClB;IAEA,MAAMC,uBAAuB,GAAIC,KAAK,IAAK;MACzC,MAAMC,SAAS,GAAGxD,YAAY,CAACM,OAAO;MACtC,IAAIkD,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEC,QAAQ,CAACF,KAAK,CAACG,MAAM,CAAC,EAAE;QACrC;MACF;MAEA,MAAMC,eAAe,GAAG1D,kBAAkB,CAACK,OAAO;MAClD,IAAI,CAAAqD,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAEF,QAAQ,CAACF,KAAK,CAACG,MAAM,CAAC,MAAK,KAAK,EAAE;QACrD7D,eAAe,CAACS,OAAO,GAAG,KAAK;QAC/BlC,QAAQ,CAAC,EAAE,CAAC;QACZE,kBAAkB,CAAC,IAAI,CAAC;QACxBE,wBAAwB,CAAC,IAAI,CAAC;QAC9BU,4BAA4B,CAAC,KAAK,CAAC;QACnC8D,kBAAkB,CAAC;UAAEG,MAAM,EAAE;QAAK,CAAC,CAAC;QACpCzE,WAAW,CAACyB,sBAAsB,CAACG,OAAO,CAAC;QAC3ClB,wBAAwB,CAAC,KAAK,CAAC;MACjC;IACF,CAAC;IAEDwE,QAAQ,CAACC,gBAAgB,CAAC,aAAa,EAAEP,uBAAuB,CAAC;IACjE,OAAO,MAAM;MACXM,QAAQ,CAACE,mBAAmB,CAAC,aAAa,EAAER,uBAAuB,CAAC;IACtE,CAAC;EACH,CAAC,EAAE,CAACnE,qBAAqB,EAAE2C,WAAW,CAAC,CAAC;EAExC,IAAAzB,gBAAS,EAAC,MAAM;IACd,IAAIhC,eAAe,EAAE;MACnB,MAAM0F,YAAY,GAAG1F,eAAe,CAAC2F,UAAU,IAC7C,GAAG3F,eAAe,CAAC4F,MAAM,IAAI,EAAE,IAAI5F,eAAe,CAAC6F,QAAQ,IAAI,EAAE,IAAI7F,eAAe,CAAC8F,WAAW,IAAI,EAAE,EAAE;MAC1G,IAAI/D,sBAAsB,CAACE,OAAO,KAAKyD,YAAY,EAAE;QACnD;MACF;MACA3D,sBAAsB,CAACE,OAAO,GAAGyD,YAAY;MAE7C,MAAMK,MAAM,GAAG;QACbC,QAAQ,EAAEhG,eAAe,CAAC4F,MAAM;QAChCK,QAAQ,EAAE,EAAE;QACZC,IAAI,EAAElG,eAAe,CAAC6F,QAAQ;QAC9BM,MAAM,EAAEnG,eAAe,CAACoG,mBAAmB;QAC3CC,UAAU,EAAErG,eAAe,CAAC8F;MAC9B,CAAC;MACD,MAAMQ,eAAe,GAAG;QAAE,GAAGP,MAAM;QAAEQ,KAAK,EAAEnG,QAAQ,CAACmG;MAAM,CAAC;MAC5DlG,WAAW,CAACiG,eAAe,CAAC;MAC5BzE,uBAAuB,CAACI,OAAO,GAAGqE,eAAe;MACjDxE,sBAAsB,CAACG,OAAO,GAAGqE,eAAe;MAChDvF,wBAAwB,CAAC,KAAK,CAAC;MAC/B4D,kBAAkB,CAAC;QAAEG,MAAM,EAAE;MAAK,CAAC,CAAC;MACpC,MAAM0B,yBAAyB,GAAG,cAAc;MAChDjG,qBAAqB,CAACiG,yBAAyB,CAAC;MAChDtH,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG;QACTgD,IAAI,EAAE,cAAc;QACpBC,OAAO,EAAEmE,eAAe;QACxBlE,MAAM,EAAE,IAAAC,iCAAkB,EAAC;UACzBpD,WAAW;UACXqD,WAAW,EAAEC,mBAAmB;UAChCnC,QAAQ,EAAEkG,eAAe;UACzBhG,kBAAkB,EAAEkG,yBAAyB;UAC7C7G,IAAI;UACJP;QACF,CAAC;MACH,CAAC,CAAC;MAEF,IAAIA,iBAAiB,IAAImD,mBAAmB,CAACkE,uBAAuB,EAAE;QACpE;QACA;QACA5F,4BAA4B,CAAC,IAAI,CAAC;QAClCF,oBAAoB,CAAC+F,IAAI,IAAIA,IAAI,GAAG,CAAC,CAAC;MACxC;IACF;EACF,CAAC,EAAE,CAAC1G,eAAe,CAAC,CAAC;EAErB,MAAM2G,iBAAiB,GAAI9H,CAAC,IAAK;IAC/B,MAAM+H,KAAK,GAAG/H,CAAC,CAACwG,MAAM,CAACuB,KAAK;IAC5BpF,eAAe,CAACS,OAAO,GAAG,IAAI;IAC9BF,sBAAsB,CAACE,OAAO,GAAG,IAAI;IACrChC,kBAAkB,CAAC,IAAI,CAAC;IACxBE,wBAAwB,CAAC,IAAI,CAAC;IAC9BU,4BAA4B,CAAC,KAAK,CAAC;IACnC8D,kBAAkB,CAAC;MAAEG,MAAM,EAAE;IAAK,CAAC,CAAC;IACpC,IAAI,CAAChE,qBAAqB,EAAE;MAC1BgB,sBAAsB,CAACG,OAAO,GAAG7B,QAAQ;MACzCW,wBAAwB,CAAC,IAAI,CAAC;IAChC;IACA,MAAMuF,eAAe,GAAG;MAAE,GAAGlG,QAAQ;MAAE,CAACkD,WAAW,GAAGsD;IAAM,CAAC;IAC7DvG,WAAW,CAACiG,eAAe,CAAC;EAC9B,CAAC;EAED,MAAMO,eAAe,GAAIC,KAAK,IAAKvD,cAAc,CAACwD,QAAQ,CAACD,KAAK,CAAC;EACjE,MAAME,YAAY,GAAIF,KAAK,IAAKG,MAAM,CAAC7G,QAAQ,CAAC0G,KAAK,CAAC,IAAI,EAAE,CAAC,CAACI,IAAI,CAAC,CAAC,KAAK,EAAE;EAC3E,MAAMC,0BAA0B,GAAIL,KAAK,IAAK;IAC5C,IAAIA,KAAK,KAAK,YAAY,EAAE;MAC1B,OAAO,KAAK;IACd;IACA,MAAMF,KAAK,GAAGK,MAAM,CAAC7G,QAAQ,CAACiG,UAAU,IAAI,EAAE,CAAC,CAACa,IAAI,CAAC,CAAC;IACtD,IAAI,CAACN,KAAK,IAAI,CAACrE,mBAAmB,CAAC6E,eAAe,EAAE;MAClD,OAAO,KAAK;IACd;IACA,OAAO,CAAC7E,mBAAmB,CAAC6E,eAAe,CAACC,IAAI,CAACT,KAAK,CAAC;EACzD,CAAC;EACD,MAAMU,qBAAqB,GAAIR,KAAK,IAAK;IACvC,IAAIA,KAAK,KAAK,OAAO,EAAE;MACrB,OAAO,KAAK;IACd;IACA,MAAMF,KAAK,GAAGK,MAAM,CAAC7G,QAAQ,CAACmG,KAAK,IAAI,EAAE,CAAC,CAACW,IAAI,CAAC,CAAC;IACjD,IAAI,CAACN,KAAK,EAAE;MACV,OAAO,KAAK;IACd;IACA,OAAO,CAAC,IAAAW,wBAAY,EAACX,KAAK,CAAC;EAC7B,CAAC;EACD,MAAMY,oBAAoB,GAAIV,KAAK,IAAK;IACtC,MAAMW,oBAAoB,GAAGC,OAAO,CAACxG,qBAAqB,IAAIF,aAAa,CAAC8F,KAAK,CAAC,CAAC;IACnF,IAAI,CAACW,oBAAoB,EAAE;MACzB,OAAO,KAAK;IACd;IACA,MAAME,aAAa,GAAGd,eAAe,CAACC,KAAK,CAAC,IAAIE,YAAY,CAACF,KAAK,CAAC;IACnE,OAAOa,aAAa,IAAIR,0BAA0B,CAACL,KAAK,CAAC,IAAIQ,qBAAqB,CAACR,KAAK,CAAC;EAC3F,CAAC;EAED,MAAMc,eAAe,GAAId,KAAK,IAAK;IACjC,IAAI,CAACD,eAAe,CAACC,KAAK,CAAC,IAAIA,KAAK,KAAK,OAAO,IAAIA,KAAK,KAAK,YAAY,EAAE;MAC1E;IACF;IACA7F,gBAAgB,CAAEyF,IAAI,KAAM;MAAE,GAAGA,IAAI;MAAE,CAACI,KAAK,GAAG;IAAK,CAAC,CAAC,CAAC;EAC1D,CAAC;EAED,MAAMe,oBAAoB,GAAIf,KAAK,IAAK;IACtC,IAAI,CAACU,oBAAoB,CAACV,KAAK,CAAC,EAAE;MAChC,OAAO,EAAE;IACX;IACA,IAAID,eAAe,CAACC,KAAK,CAAC,IAAIE,YAAY,CAACF,KAAK,CAAC,EAAE;MACjD,OAAOjE,gBAAgB,GAAG,EAAE,GAAGF,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEmF,aAAa;IAC3D;IACA,IAAIX,0BAA0B,CAACL,KAAK,CAAC,EAAE;MACrC,OAAOjE,gBAAgB,GAAG,EAAE,GAAGF,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEoF,iBAAiB;IAC/D;IACA,IAAIT,qBAAqB,CAACR,KAAK,CAAC,EAAE;MAChC,OAAOjE,gBAAgB,GAAG,EAAE,GAAGF,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEqF,YAAY;IAC1D;IACA,OAAO,EAAE;EACX,CAAC;EAED,MAAMC,oBAAoB,GAAInB,KAAK,IAAKU,oBAAoB,CAACV,KAAK,CAAC;EAEnE,MAAMoB,yBAAyB,GAAGA,CAACpB,KAAK,EAAEF,KAAK,KAAK;IAClD,IAAIE,KAAK,KAAKxD,WAAW,EAAE;MACzBzC,4BAA4B,CAAC,KAAK,CAAC;IACrC;IACA8D,kBAAkB,CAAC;MAAEG,MAAM,EAAE;IAAK,CAAC,CAAC;IAEpC,MAAMwB,eAAe,GAAG;MAAE,GAAGlG,QAAQ;MAAE,CAAC0G,KAAK,GAAGF;IAAM,CAAC;IACvDvG,WAAW,CAACiG,eAAe,CAAC;IAC5B,MAAM6B,sBAAsB,GAAI,CAAC1F,kBAAkB,IAAI,CAACrD,iBAAiB,GAAI,YAAY,GAAGkB,kBAAkB;IAC9GC,qBAAqB,CAAC4H,sBAAsB,CAAC;IAE7C,IAAIzG,aAAa,CAACO,OAAO,EAAE;MACzBO,YAAY,CAACd,aAAa,CAACO,OAAO,CAAC;IACrC;IAEAP,aAAa,CAACO,OAAO,GAAGmG,UAAU,CAAC,MAAM;MACvC,MAAMC,OAAO,GAAG;QACdnG,IAAI,EAAE,cAAc;QACpB4E,KAAK;QACLF,KAAK;QACLzE,OAAO,EAAEmE,eAAe;QACxBlE,MAAM,EAAE,IAAAC,iCAAkB,EAAC;UACzBpD,WAAW;UACXqD,WAAW,EAAEC,mBAAmB;UAChCnC,QAAQ,EAAEkG,eAAe;UACzBhG,kBAAkB,EAAE6H,sBAAsB;UAC1CxI,IAAI;UACJP;QACF,CAAC;MACH,CAAC;MAED,IAAI0H,KAAK,KAAK,OAAO,IAAIF,KAAK,EAAE;QAC9ByB,OAAO,CAACd,YAAY,GAAG,IAAAA,wBAAY,EAACX,KAAK,CAAC;MAC5C;MAEA1H,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAGmJ,OAAO,CAAC;IACrB,CAAC,EAAE,GAAG,CAAC;EACT,CAAC;EAED,MAAMC,YAAY,GAAInG,OAAO,IAAK;IAChCwC,kBAAkB,CAAC;MAAEC,MAAM,EAAE,IAAI;MAAEC,UAAU,EAAE,KAAK;MAAEC,MAAM,EAAE;IAAK,CAAC,CAAC;IACrE,IAAI3C,OAAO,CAACoG,OAAO,GAAG,CAAC,IAAKpG,OAAO,CAACoG,OAAO,KAAK,CAAC,IAAIpG,OAAO,CAAC4C,UAAU,KAAK,KAAM,EAAE;MAClFvD,eAAe,CAACS,OAAO,GAAG,IAAI;MAC9BF,sBAAsB,CAACE,OAAO,GAAG,IAAI;MACrC9B,wBAAwB,CAACgC,OAAO,CAACwD,UAAU,CAAC;MAC5C5F,QAAQ,CAACoC,OAAO,CAACqG,WAAW,CAAC;IAC/B,CAAC,MAAM;MACLhH,eAAe,CAACS,OAAO,GAAG,KAAK;MAC/BF,sBAAsB,CAACE,OAAO,GAAG,IAAI;MACrC9B,wBAAwB,CAAC,IAAI,CAAC;MAC9BF,kBAAkB,CAACkC,OAAO,CAAC;MAC3BpC,QAAQ,CAAC,EAAE,CAAC;IACd;EACF,CAAC;EAED,MAAM0I,sBAAsB,GAAIC,gBAAgB,IAAK;IACnD/D,kBAAkB,CAAC;MAAEC,MAAM,EAAE,KAAK;MAAEC,UAAU,EAAE,IAAI;MAAEC,MAAM,EAAE;IAAM,CAAC,CAAC;IACtE,MAAM6D,UAAU,GAAGD,gBAAgB,CAACC,UAAU,IAAI,CAAC,CAAC;IACpD,MAAMC,MAAM,GAAGrG,mBAAmB,CAACa,eAAe,IAAI,EAAE;IACxD,MAAMyF,UAAU,GAAG,IAAIC,GAAG,CAACF,MAAM,CAACG,GAAG,CAACC,CAAC,IAAIA,CAAC,CAAClC,KAAK,CAAC,CAAC;IAEpD,IAAIf,MAAM,GAAG;MACXC,QAAQ,EAAE,CAAC2C,UAAU,CAACM,YAAY,EAAEN,UAAU,CAACO,OAAO,CAAC,CAACC,MAAM,CAACzB,OAAO,CAAC,CAAC0B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;MACvFnD,QAAQ,EAAE,EAAE;MACZC,IAAI,EAAEyC,UAAU,CAAC9C,QAAQ,IAAI,EAAE;MAC/BQ,UAAU,EAAEsC,UAAU,CAAC7C,WAAW,IAAI;IACxC,CAAC;IAED,IAAI+C,UAAU,CAACQ,GAAG,CAAC,QAAQ,CAAC,EAAE;MAC5BtD,MAAM,CAACI,MAAM,GAAGwC,UAAU,CAACvC,mBAAmB,IAAI,EAAE;IACtD;IAEA,IAAIyC,UAAU,CAACQ,GAAG,CAAC,UAAU,CAAC,EAAE;MAC9BtD,MAAM,CAACuD,QAAQ,GAAGX,UAAU,CAACY,kBAAkB,IAAI,EAAE;IACvD;;IAEA;IACA,IAAIhH,mBAAmB,CAACiH,sBAAsB,EAAE;MAC9C,MAAMC,aAAa,GAAGb,MAAM,CAACc,IAAI,CAACV,CAAC,IAAIA,CAAC,CAAClC,KAAK,KAAK,UAAU,CAAC;MAC9D,IAAI2C,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAEE,SAAS,EAAE;QAC5B,MAAMC,OAAO,GAAG,IAAAJ,sCAAsB,EAACzD,MAAM,CAACC,QAAQ,EAAED,MAAM,CAACE,QAAQ,EAAEwD,aAAa,CAACE,SAAS,CAAC;QACjG5D,MAAM,CAACC,QAAQ,GAAG4D,OAAO,CAAC5D,QAAQ;QAClCD,MAAM,CAACE,QAAQ,GAAG2D,OAAO,CAAC3D,QAAQ;MACpC;IACF;IAEA,MAAMK,eAAe,GAAG;MAAE,GAAGP,MAAM;MAAEQ,KAAK,EAAEnG,QAAQ,CAACmG;IAAM,CAAC;IAC5D1F,4BAA4B,CAAC,KAAK,CAAC;IACnCR,WAAW,CAACiG,eAAe,CAAC;IAC5BzE,uBAAuB,CAACI,OAAO,GAAGqE,eAAe;IACjDxE,sBAAsB,CAACG,OAAO,GAAGqE,eAAe;IAChDvF,wBAAwB,CAAC,KAAK,CAAC;IAC/B,MAAMyF,yBAAyB,GAAG,UAAU;IAC5CjG,qBAAqB,CAACiG,yBAAyB,CAAC;IAChDtH,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAG;MACTgD,IAAI,EAAE,YAAY;MAClBC,OAAO,EAAEmE,eAAe;MACxBuD,YAAY,EAAEnB,gBAAgB,CAACoB,QAAQ;MACvC1H,MAAM,EAAE,IAAAC,iCAAkB,EAAC;QACzBpD,WAAW;QACXqD,WAAW,EAAEC,mBAAmB;QAChCnC,QAAQ,EAAEkG,eAAe;QACzBhG,kBAAkB,EAAEkG,yBAAyB;QAC7C7G,IAAI;QACJP;MACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC;EAED,MAAM2K,cAAc,GAAGA,CAAA,KAAM;IAC3B,IAAI,CAAC3K,iBAAiB,EAAE;MACtB;IACF;IACAuF,kBAAkB,CAAC;MAAEC,MAAM,EAAE,KAAK;MAAEC,UAAU,EAAE,IAAI;MAAEC,MAAM,EAAE;IAAM,CAAC,CAAC;IACtEjE,4BAA4B,CAAC,IAAI,CAAC;IAClCF,oBAAoB,CAAC+F,IAAI,IAAIA,IAAI,GAAG,CAAC,CAAC;EACxC,CAAC;EAED,MAAMsD,WAAW,GAAIC,WAAW,IAAKA,WAAW,CAACnD,KAAK;EAEtD,MAAMoD,gBAAgB,GAAIC,UAAU,IAClCA,UAAU,CAACxE,UAAU,IACrB,CACEwE,UAAU,CAAC3B,WAAW,EACtB2B,UAAU,CAACvE,MAAM,EACjBuE,UAAU,CAACC,YAAY,EACvBD,UAAU,CAACtE,QAAQ,EACnBsE,UAAU,CAAC/D,mBAAmB,EAC9B+D,UAAU,CAACrE,WAAW,EACtBqE,UAAU,CAAC5B,OAAO,CACnB,CAACY,MAAM,CAAEvC,KAAK,IAAKA,KAAK,KAAK5B,SAAS,IAAI4B,KAAK,KAAK,IAAI,CAAC,CAACwC,IAAI,CAAC,GAAG,CACpE;EAED,MAAMiB,0BAA0B,GAAIF,UAAU;IAAA,IAAAG,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAAA,OAAK,CACjDP,UAAU,CAAC3B,WAAW,EACtB2B,UAAU,CAACnE,QAAQ,EACnBmE,UAAU,CAAClE,QAAQ,EACnBkE,UAAU,CAACQ,QAAQ,GAAAL,qBAAA,GACnBH,UAAU,CAACxB,UAAU,cAAA2B,qBAAA,uBAArBA,qBAAA,CAAuBrB,YAAY,GAAAsB,sBAAA,GACnCJ,UAAU,CAACxB,UAAU,cAAA4B,sBAAA,uBAArBA,sBAAA,CAAuBrB,OAAO,GAAAsB,sBAAA,GAC9BL,UAAU,CAACxB,UAAU,cAAA6B,sBAAA,uBAArBA,sBAAA,CAAuB3E,QAAQ,GAAA4E,sBAAA,GAC/BN,UAAU,CAACxB,UAAU,cAAA8B,sBAAA,uBAArBA,sBAAA,CAAuBrE,mBAAmB,GAAAsE,sBAAA,GAC1CP,UAAU,CAACxB,UAAU,cAAA+B,sBAAA,uBAArBA,sBAAA,CAAuB5E,WAAW,CACnC,CAACqD,MAAM,CAAEvC,KAAK,IAAKA,KAAK,KAAK5B,SAAS,IAAI4B,KAAK,KAAK,IAAI,CAAC,CAACwC,IAAI,CAAC,GAAG,CAAC;EAAA;EAEpE,MAAMwB,mBAAmB,GAAGA,CAAA,kBAC1B,IAAAhM,WAAA,CAAAiM,IAAA;IAAKC,SAAS,EAAC,4BAA4B;IAAAC,QAAA,GACxC,CAACtI,kBAAkB,IAAIrD,iBAAiB,IAAIC,wBAAwB,iBACnE,IAAAT,WAAA,CAAAoM,GAAA;MACE9I,IAAI,EAAC,QAAQ;MACb+I,OAAO,EAAElB,cAAe;MACxBmB,QAAQ,EAAEnH,iBAAiB,IAAI,CAACkD,MAAM,CAAC7G,QAAQ,CAACkD,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC4D,IAAI,CAAC,CAAE;MAC3E4D,SAAS,EAAC,8DAA8D;MAAAC,QAAA,EAEvEhH,iBAAiB,GAAG,eAAe,GAAG;IAAkB,CACnD,CACT,eACD,IAAAnF,WAAA,CAAAoM,GAAA;MACE9I,IAAI,EAAC,QAAQ;MACb+I,OAAO,EAAEA,CAAA,KAAM;QACbpK,4BAA4B,CAAC,KAAK,CAAC;QACnC8D,kBAAkB,CAAC;UAAEG,MAAM,EAAE;QAAK,CAAC,CAAC;QACpClF,OAAO,CAACD,IAAI,KAAK,cAAc,GAAG,QAAQ,GAAG,cAAc,CAAC;MAC9D,CAAE;MACFmL,SAAS,EAAC,2BAA2B;MAAAC,QAAA,EAEpCpL,IAAI,KAAK,cAAc,GAAG,wBAAwB,GAAG;IAAwB,CACxE,CAAC;EAAA,CACN,CACN;EAED,MAAMwL,iBAAiB,GAAIC,aAAa,IAAK;IAC3C,IAAI,CAACA,aAAa,EAAE;MAClB,OAAO,IAAI;IACb;IAEA,IAAI1H,OAAO,IAAIjB,kBAAkB,EAAE;MACjC,oBAAO,IAAA7D,WAAA,CAAAoM,GAAA;QAAKF,SAAS,EAAC;MAA4B,CAAE,CAAC;IACvD;IAEA,IAAIrH,WAAW,CAACJ,MAAM,GAAG,CAAC,IAAI,CAACrD,eAAe,IAAIyC,kBAAkB,EAAE;MACpE,oBACE,IAAA7D,WAAA,CAAAoM,GAAA;QACEK,GAAG,EAAEzJ,kBAAmB;QACxBkJ,SAAS,EAAC,8DAA8D;QAAAC,QAAA,EACvEtH,WAAW,CAACsF,GAAG,CAAC,CAACoB,UAAU,EAAEmB,KAAK,kBACjC,IAAA1M,WAAA,CAAAoM,GAAA;UAEEF,SAAS,EAAE,CACT,8BAA8B,EAC9BQ,KAAK,GAAG7H,WAAW,CAACJ,MAAM,GAAG,CAAC,GAAG,uCAAuC,GAAG,EAAE,CAC9E,CAAC8F,MAAM,CAACzB,OAAO,CAAC,CAAC0B,IAAI,CAAC,GAAG,CAAE;UAAA2B,QAAA,eAE5B,IAAAnM,WAAA,CAAAoM,GAAA;YACE9I,IAAI,EAAC,QAAQ;YACb+I,OAAO,EAAEA,CAAA,KAAM3C,YAAY,CAAC6B,UAAU,CAAE;YACxCW,SAAS,EAAC,gCAAgC;YAAAC,QAAA,EAEzCZ,UAAU,CAAC3B;UAAW,CACjB;QAAC,GAZJ0B,gBAAgB,CAACC,UAAU,CAa9B,CACL;MAAC,CACA,CAAC;IAET;IAEA,IAAI,CAAC1H,kBAAkB,IAAIrD,iBAAiB,IAAIwB,yBAAyB,IAAIkD,qBAAqB,CAACT,MAAM,GAAG,CAAC,EAAE;MAC7G,oBACE,IAAAzE,WAAA,CAAAoM,GAAA;QAAIF,SAAS,EAAC,oEAAoE;QAAAC,QAAA,EAC/EjH,qBAAqB,CAACiF,GAAG,CAAC,CAACoB,UAAU,EAAEmB,KAAK;UAAA,IAAAC,oBAAA;UAAA,oBAC3C,IAAA3M,WAAA,CAAAoM,GAAA;YAEEF,SAAS,EAAE,CACT,8BAA8B,EAC9BQ,KAAK,GAAGxH,qBAAqB,CAACT,MAAM,GAAG,CAAC,GAAG,uCAAuC,GAAG,EAAE,CACxF,CAAC8F,MAAM,CAACzB,OAAO,CAAC,CAAC0B,IAAI,CAAC,GAAG,CAAE;YAAA2B,QAAA,eAE5B,IAAAnM,WAAA,CAAAiM,IAAA;cACE3I,IAAI,EAAC,QAAQ;cACb+I,OAAO,EAAEA,CAAA,KAAMxC,sBAAsB,CAAC0B,UAAU,CAAE;cAClDW,SAAS,EAAC,gCAAgC;cAAAC,QAAA,gBAE1C,IAAAnM,WAAA,CAAAoM,GAAA;gBAAKF,SAAS,EAAC,+BAA+B;gBAAAC,QAAA,EAC3C,EAAAQ,oBAAA,GAAApB,UAAU,CAACL,QAAQ,cAAAyB,oBAAA,uBAAnBA,oBAAA,CAAqBC,mBAAmB,KAAI;cAAS,CACnD,CAAC,eACN,IAAA5M,WAAA,CAAAoM,GAAA;gBAAKF,SAAS,EAAC,kCAAkC;gBAAAC,QAAA,EAC9CZ,UAAU,CAAC3B;cAAW,CACpB,CAAC;YAAA,CACA;UAAC,GAjBJ6B,0BAA0B,CAACF,UAAU,CAkBxC,CAAC;QAAA,CACN;MAAC,CACA,CAAC;IAET;IAEA,OAAO,IAAI;EACb,CAAC;EAED,MAAMsB,WAAW,GAAIxB,WAAW,IAAK;IACnC,MAAMmB,aAAa,GAAGnB,WAAW,CAACnD,KAAK,KAAKxD,WAAW;IACvD,MAAMoI,UAAU,GAAG7D,oBAAoB,CAACoC,WAAW,CAACnD,KAAK,CAAC;IAC1D,MAAM6E,SAAS,GAAG1D,oBAAoB,CAACgC,WAAW,CAACnD,KAAK,CAAC;IACzD,MAAM8E,UAAU,GAAI,CAAC3B,WAAW,CAAC4B,QAAQ,IAAI,CAACT,aAAa,IAAK3I,kBAAkB;IAClF,MAAMqJ,cAAc,GAAG,CACrB,0BAA0B,EAC1BH,SAAS,GAAG,mCAAmC,GAAG,EAAE,EACpDC,UAAU,GAAG,oCAAoC,GAAG,EAAE,EACtDR,aAAa,IAAI1H,OAAO,GAAG,mCAAmC,GAAG,EAAE,CACpE,CAACyF,MAAM,CAACzB,OAAO,CAAC,CAAC0B,IAAI,CAAC,GAAG,CAAC;IAC3B,MAAM2C,cAAc,GAAG,CACrB,0BAA0B,EAC1BJ,SAAS,GAAG,sCAAsC,GAAG,EAAE,CACxD,CAACxC,MAAM,CAACzB,OAAO,CAAC,CAAC0B,IAAI,CAAC,GAAG,CAAC;IAE3B,oBACE,IAAAxK,WAAA,CAAAiM,IAAA;MAEEC,SAAS,EAAEiB,cAAe;MAC1BC,KAAK,EAAE;QAAEC,KAAK,EAAEhC,WAAW,CAACgC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG;MAAM,CAAE;MAAAlB,QAAA,gBAEhE,IAAAnM,WAAA,CAAAiM,IAAA;QAAKC,SAAS,EAAC,8BAA8B;QAAAC,QAAA,gBAC3C,IAAAnM,WAAA,CAAAoM,GAAA;UAAOF,SAAS,EAAC,0BAA0B;UAAAC,QAAA,EACxClI,gBAAgB,GAAG,EAAE,GAAI,CAAAF,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAGsH,WAAW,CAACnD,KAAK,CAAC,KAAImD,WAAW,CAACiC;QAAM,CAC3E,CAAC,EACPd,aAAa,IAAIR,mBAAmB,CAAC,CAAC;MAAA,CACpC,CAAC,eACN,IAAAhM,WAAA,CAAAoM,GAAA;QACE9I,IAAI,EAAC,MAAM;QACX0E,KAAK,EAAExG,QAAQ,CAAC6J,WAAW,CAACnD,KAAK,CAAC,IAAI,EAAG;QACzC6C,SAAS,EAAEM,WAAW,CAACN,SAAU;QACjC,gBAAcnC,oBAAoB,CAACyC,WAAW,CAACnD,KAAK,CAAC,GAAG,MAAM,GAAG9B,SAAU;QAC3EmH,MAAM,EAAEA,CAAA,KAAMvE,eAAe,CAACqC,WAAW,CAACnD,KAAK,CAAE;QACjDsF,QAAQ,EAAGvN,CAAC,IAAK;UACf,IAAIuM,aAAa,IAAI3I,kBAAkB,EAAE;YACvCkE,iBAAiB,CAAC9H,CAAC,CAAC;UACtB,CAAC,MAAM;YACLqJ,yBAAyB,CAAC+B,WAAW,CAACnD,KAAK,EAAEjI,CAAC,CAACwG,MAAM,CAACuB,KAAK,CAAC;UAC9D;QACF,CAAE;QACFyF,QAAQ,EAAE,CAAC5J,kBAAkB,IAAI,CAACwH,WAAW,CAAC4B,QAAQ,IAAI,CAACT,aAAa,GAAG,KAAK,GAAI,CAACnB,WAAW,CAAC4B,QAAQ,IAAI,CAACT,aAAe;QAC7HN,SAAS,EAAEgB;MAAe,CAC3B,CAAC,EACDJ,UAAU,iBACT,IAAA9M,WAAA,CAAAoM,GAAA;QAAKF,SAAS,EAAC,+BAA+B;QAAAC,QAAA,EAC3CW;MAAU,CACR,CACN,EACAP,iBAAiB,CAACC,aAAa,CAAC;IAAA,GA/B5BpB,WAAW,CAACC,WAAW,CAgCzB,CAAC;EAEV,CAAC;EAED,IAAAjI,gBAAS,EAAC,MAAM;IACd,IAAI8B,qBAAqB,CAACT,MAAM,KAAK,CAAC,EAAE;MACtC;MACAxC,4BAA4B,CAAC,KAAK,CAAC;MACnC4H,sBAAsB,CAAC3E,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClD;EACF,CAAC,EAAE,CAACA,qBAAqB,CAAC,CAAC;EAE3B,MAAMwI,iBAAiB,GAAGA,CAAA,KAAM;IAC9B,MAAM1D,MAAM,GAAGrG,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAEa,eAAe;IAEnD,IAAI,EAACwF,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEvF,MAAM,GAAE;MACnB,IAAIJ,aAAa,EAAE;QACjB,oBAAO,IAAArE,WAAA,CAAAoM,GAAA;UAAAD,QAAA,EAAK;QAAuB,CAAK,CAAC;MAC3C;MAEA,oBAAO,IAAAnM,WAAA,CAAAiM,IAAA;QAAAE,QAAA,GAAK,sCAAoC,EAAC9L,WAAW;MAAA,CAAM,CAAC;IACrE;IAEA,oBACE,IAAAL,WAAA,CAAAoM,GAAA,EAAApM,WAAA,CAAA2N,QAAA;MAAAxB,QAAA,EACGnC,MAAM,CAACG,GAAG,CAAC0C,WAAW;IAAC,CACxB,CAAC;EAEP,CAAC;EAED,oBACE,IAAA7M,WAAA,CAAAiM,IAAA;IAAKQ,GAAG,EAAE1J,YAAa;IAACmJ,SAAS,EAAC,0BAA0B;IAAAC,QAAA,GACzD3J,kBAAkB,iBAAI,IAAAxC,WAAA,CAAAoM,GAAA;MAAKF,SAAS,EAAC,4BAA4B;MAAAC,QAAA,EAAE3G;IAAkB,CAAM,CAAC,EAC5F5D,WAAW,iBAAI,IAAA5B,WAAA,CAAAoM,GAAA;MAAKF,SAAS,EAAC,4BAA4B;MAAAC,QAAA,EAAEvK;IAAW,CAAM,CAAC,EAC9EpB,iBAAiB,IAAIkC,sBAAsB,iBAC1C,IAAA1C,WAAA,CAAAoM,GAAA;MAAKF,SAAS,EAAC,4BAA4B;MAAAC,QAAA,EACxCzG;IAAsB,CACpB,CACN,eAED,IAAA1F,WAAA,CAAAoM,GAAA;MAAKF,SAAS,EAAC,yBAAyB;MAAAC,QAAA,EACrCuB,iBAAiB,CAAC;IAAC,CACjB,CAAC;EAAA,CAEH,CAAC;AAEV,CAAC;AAEDtN,iBAAiB,CAACwN,SAAS,GAAG;EAC5BvN,WAAW,EAAEwN,kBAAS,CAACC,MAAM,CAACC,UAAU;EACxCzN,QAAQ,EAAEuN,kBAAS,CAACG,IAAI;EACxBzN,cAAc,EAAE0N,mCAAe;EAC/BzN,iBAAiB,EAAEqN,kBAAS,CAACK,IAAI;EACjCzN,wBAAwB,EAAEoN,kBAAS,CAACK,IAAI;EACxCxN,mBAAmB,EAAEmN,kBAAS,CAACM,MAAM;EACrCxN,QAAQ,EAAEkN,kBAAS,CAACC,MAAM;EAC1BlN,OAAO,EAAEwN,wCAAoB;EAC7BvN,cAAc,EAAEwN;AAClB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAApO,OAAA,GAEaC,iBAAiB","ignoreList":[]}
|