@commercetools-uikit/localized-money-input 13.0.3 → 13.0.4

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 CHANGED
@@ -1,85 +1,85 @@
1
+ <!-- THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -->
2
+ <!-- This file is created by the `yarn generate-readme` script. -->
3
+
1
4
  # LocalizedMoneyInput
2
5
 
3
6
  ## Description
4
7
 
5
- A controlled input component for localized money values with validation
6
- states.
7
-
8
- ## Usage
8
+ A controlled input component for localized money values with validation states.
9
9
 
10
- ```js
11
- import LocalizedMoneyInput from '@commercetools-uikit/localized-money-input';
10
+ ## Installation
12
11
 
13
- <LocalizedMoneyInput
14
- value={{
15
- USD: { currencyCode: 'USD', amount: '12.22' },
16
- EUR: { currencyCode: 'EUR', amount: '41.44' },
17
- }}
18
- onChange={(event) => alert(event.target.name, event.target.value)}
19
- />;
12
+ ```
13
+ yarn add @commercetools-uikit/localized-money-input
20
14
  ```
21
15
 
22
- ## Properties
23
-
24
- | Props | Type | Required | Values | Default | Description |
25
- | ------------------------------- | ---------------- | :------: | ----------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
26
- | `id` | `string` | - | - | - | Used as prefix of HTML `id` property. Each input field id will have the currency as a suffix (`${idPrefix}.${lang}`), e.g. `foo.en` |
27
- | `name` | `string` | - | - | - | Used as HTML `name` property for each input field. Each input field name will have the currency as a suffix (`${namePrefix}.${lang}`), e.g. `foo.en` |
28
- | `value` | `object` | ✅ | - | - | Values to use. Keyed by currency, the values are the money values, e.g. `{ USD: {currencyCode: 'USD', amount: '12.22'}, EUR: {currencyCode: 'EUR', amount: '41.44'} }` |
29
- | `onChange` | `function` | ✅ | - | - | Gets called when any input is changed. Is called with the change event of the changed input. |
30
- | `selectedCurrency` | `string` | ✅ | - | - | Specifies which currency will be shown in case the `LocalizedMoneyInput` is collapsed. |
31
- | `onBlur` | `function` | - | - | - | Called when any field is blurred. Is called with the `event` of that field. |
32
- | `onFocus` | `function` | - | - | - | Called when any field is focussed. Is called with the `event` of that field. |
33
- | `hideCurrencyExpansionControls` | `bool` | - | - | `false` | Will hide the currency toggle controls when set to `true`. It always shows all currencies instead. |
34
- | `defaultExpandCurrencies` | `bool` | - | - | `false` | Controls whether one or all currencies are visible by default. Pass `true` to show all currencies by default. |
35
- | `isDisabled` | `bool` | - | - | `false` | Disables all input fields. |
36
- | `isReadOnly` | `bool` | - | - | `false` | Makes all input fields readonly. |
37
- | `placeholder` | `object` | - | - | - | Placeholders for each currency. Object of the same shape as `value`. |
38
- | `horizontalConstraint` | `object` | - | `m`, `l`, `xl`, `scale` | `scale` | Horizontal size limit of the input fields. |
39
- | `hasError` | `bool` | - | - | - | Will apply the error state to each input without showing any error message. |
40
- | `hasWarning` | `bool` | - | - | - | Indicates the input field has a warning |
41
- | `errors` | `objectOf(node)` | - | - | - | Used to show errors underneath the inputs of specific currencies. Pass an object whose key is a currency and whose value is the error to show for that key. |
42
- | `warnings` | `objectOf(node)` | - | - | - | Used to show warnings underneath the inputs of specific currencies. Pass an object whose key is a currency and whose value is the warning to show for that key. |
43
-
44
- The component forwards all `data` attribute props. It further adds a `-${currency}` suffix to the values of the `data-test` and `data-track-component` attributes, e.g `data-test="foo"` will get added to the input for `en` as `data-test="foo-en"`.
16
+ ```
17
+ npm --save install @commercetools-uikit/localized-money-input
18
+ ```
45
19
 
46
- Main Functions and use cases are:
20
+ Additionally install the peer dependencies (if not present)
47
21
 
48
- - Receiving localized input from user
22
+ ```
23
+ yarn add react react-dom react-intl
24
+ ```
49
25
 
50
- ## Static Properties
26
+ ```
27
+ npm --save install react react-dom react-intl
28
+ ```
51
29
 
52
- ### `LocalizedMoneyInput.convertToMoneyValue`
30
+ ## Usage
53
31
 
54
- The `convertToMoneyValue` function will turn a LocalizedMoneyInput value into a [`MoneyValue`](https://docs.commercetools.com/http-api-types#money) the API can handle. It automatically converts to `centPrecision` or `highPrecision` types when the number of supplied fraction digits exceeds the number of fraction digits used by the currency.
55
- If you want to forbid `highPrecision`, then the form's validation needs to add an error when it sees a `highPrecision` price. See example below.
32
+ ```jsx
33
+ import LocalizedMoneyInput from '@commercetools-uikit/localized-money-input';
56
34
 
57
- Here are examples of `centPrecision` and `highPrecision` prices.
35
+ const Example = () => (
36
+ <LocalizedMoneyInput
37
+ value={{
38
+ USD: { currencyCode: 'USD', amount: '12.22' },
39
+ EUR: { currencyCode: 'EUR', amount: '41.44' },
40
+ }}
41
+ onChange={
42
+ (/** event */) => {
43
+ // alert(event.target.name, event.target.value)
44
+ }
45
+ }
46
+ />
47
+ );
58
48
 
59
- ```js
60
- // 42.00 €
61
- {
62
- "type": "centPrecision",
63
- "currencyCode": "EUR",
64
- "centAmount": 4200,
65
- "fractionDigits": 2
66
- }
49
+ export default Example;
67
50
  ```
68
51
 
69
- ```js
70
- // 0.0123456 €
71
- {
72
- "type": "highPrecision",
73
- "currencyCode": "EUR",
74
- "centAmount": 1,
75
- "preciseAmount": 123456,
76
- "fractionDigits": 7
77
- }
78
- ```
52
+ ## Properties
79
53
 
80
- ### `LocalizedMoneyInput.parseMoneyValue`
54
+ | Props | Type | Required | Default | Description |
55
+ | ------------------------------- | ----------------------------------------------------------------------------------------------------- | :------: | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
56
+ | `id` | `string` | | | Used as HTML id property. |
57
+ | `name` | `string` | | | The prefix used to create a HTML `name` property for the amount input field (`${name}.amount`). |
58
+ | `value` | `Record` | ✅ | | value of possible currency&#xA;<br/>&#xA;the input doesn't accept a "currencies" prop, instead all possible&#xA;currencies have to exist (with empty or filled strings) on the value:&#xA;{ EUR: {amount: '12.00', currencyCode: 'EUR'}, USD: {amount: '', currencyCode: 'USD'}} |
59
+ | `onChange` | `ChangeEventHandler` | | | Called with the event of the input. |
60
+ | `selectedCurrency` | `string` | ✅ | | the currently selected currency |
61
+ | `onBlur` | `Function`<br/>[See signature.](#signature-onBlur) | | | Called when input is blurred |
62
+ | `onFocus` | `FocusEventHandler` | | | Called when input is focused |
63
+ | `hideCurrencyExpansionControls` | `boolean` | | | Will hide the currency expansion controls when set to `true`. All currencies will be shown when set to `true`. |
64
+ | `defaultExpandCurrencies` | `boolean` | | | Controls whether one or all currencirs are visible by default |
65
+ | `isDisabled` | `boolean` | | | Indicates that the input cannot be modified (e.g not authorized, or changes currently saving). |
66
+ | `isReadOnly` | `boolean` | | | Indicates that the field is displaying read-only content |
67
+ | `placeholder` | `Record` | | | Placeholder text for the input |
68
+ | `horizontalConstraint` | `union`<br/>Possible values:<br/>`, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 'scale', 'auto'` | | `'scale'` | Horizontal size limit of the input fields. |
69
+ | `hasError` | `boolean` | | | Indicates that input has errors |
70
+ | `hasWarning` | `boolean` | | | Control to indicate on the input if there are values that are potentially invalid |
71
+ | `errors` | `Record` | | | A map of errors. Error messages for known errors are rendered automatically.&#xA;<br>&#xA;Unknown errors will be forwarded to `renderError` |
72
+ | `warnings` | `Record` | | | A map of warnings. |
73
+
74
+ ## Signatures
75
+
76
+ ### Signature `onBlur`
77
+
78
+ ```ts
79
+ (event: TEvent) => void
80
+ ```
81
81
 
82
- The `parseMoneyValue` function will turn a [`MoneyValue`](https://docs.commercetools.com/http-api-types#money) into a value the LocalizedMoneyInput component can handle `({ amount, currencyCode })`.
82
+ ## Static methods
83
83
 
84
84
  ### `LocalizedMoneyInput.getEmptyCurrencies`
85
85
 
@@ -145,8 +145,7 @@ LocalizedMoneyInput.getHighPrecisionCurrencies({
145
145
 
146
146
  ### `LocalizedMoneyInput.convertToMoneyValues`
147
147
 
148
- The `convertToMoneyValues` function will turn a LocalizedMoneyInput value into array of [`MoneyValue`](https://docs.commercetools.com/http-api-types#money) the API can handle. It automatically converts to `centPrecision` or `highPrecision` types when the number of supplied fraction digits exceeds the number of fraction digits used by the currency.
149
- If you want to forbid `highPrecision`, then the form's validation needs to add an error when it sees a `highPrecision` price. See example below.
148
+ The convertToMoneyValues function will turn a list of `LocalizedMoneyInput` values into a list of [`MoneyValue`](https://docs.commercetools.com/http-api-types#money) the API can handle. It automatically converts to `centPrecision` or `highPrecision` types when the number of supplied fraction digits exceeds the number of fraction digits used by the currency. If you want to forbid `highPrecision`, then the form's validation needs to add an error when it sees a `highPrecision` price. See example below.
150
149
 
151
150
  Here are examples of `centPrecision` and `highPrecision` prices.
152
151
 
@@ -177,24 +176,29 @@ Here are examples of `centPrecision` and `highPrecision` prices.
177
176
 
178
177
  ### `LocalizedMoneyInput.parseMoneyValues`
179
178
 
180
- The `parseMoneyValues` function will turn a [`MoneyValue`](https://docs.commercetools.com/http-api-types#money) into a value the LocalizedMoneyInput component can handle `({ [currencyCode]: {currencyCode, amount} })`.
179
+ The `parseMoneyValues` function will turn a list of `MoneyValue` into a record of values the `LocalizedMoneyInput` component can handle.
180
+
181
+ ```js
182
+ LocalizedMoneyInput.parseMoneyValues([{ currencyCode: 'EUR', centAmount: 10 }]);
183
+
184
+ // -> { EUR: { currencyCode: 'EUR', centAmount: 10 } }
185
+ ```
181
186
 
182
187
  ### `LocalizedMoneyInput.getEmptyCurrencies`
183
188
 
184
- The `getEmptyCurrencies` function will return array of currencies that don't have amount .
189
+ The getEmptyCurrencies function will return array of currencies that don't have amount .
185
190
 
186
191
  ```js
187
192
  LocalizedMoneyInput.getEmptyCurrencies({
188
193
  EUR: { currencyCode: 'EUR', amount: '' },
189
194
  USD: { currencyCode: 'USD', amount: '12.77' },
190
195
  }); // -> ['EUR']
191
-
192
196
  LocalizedMoneyInput.getEmptyCurrencies({
193
197
  EUR: { currencyCode: 'EUR', amount: '12.77' },
194
198
  }); // -> []
195
199
  ```
196
200
 
197
- ## Example
201
+ ## Examples
198
202
 
199
203
  Here's an example of how `LocalizedMoneyInput` would be used inside a form.
200
204
 
@@ -204,7 +208,6 @@ import { Formik } from 'formik';
204
208
  import omitEmpty from 'omit-empty-es';
205
209
  import { ErrorMessage } from '@commercetools-uikit/messages';
206
210
  import LocalizedMoneyInput from '@commercetools-uikit/localized-money-input';
207
-
208
211
  // the existing document, e.g. from the database
209
212
  const doc = {
210
213
  prices: [
@@ -218,14 +221,12 @@ const doc = {
218
221
  },
219
222
  ],
220
223
  };
221
-
222
224
  // A function to convert a document to form values.
223
225
  const docToFormValues = (doc) => ({
224
226
  // The parseMoneyValue function will turn a MoneyValue into a
225
227
  // value the LocalizedMoneyInput component can handle ({currency: amount})
226
228
  prices: LocalizedMoneyInput.parseMoneyValues(doc.prices),
227
229
  });
228
-
229
230
  // a function to convert form values back to a document
230
231
  const formValuesToDoc = (formValues) => ({
231
232
  // The convertToMoneyValue function will convert a LocalizedMoneyInput
@@ -238,7 +239,6 @@ const formValuesToDoc = (formValues) => ({
238
239
  // See example below
239
240
  prices: LocalizedMoneyInput.convertToMoneyValues(formValues.prices),
240
241
  });
241
-
242
242
  const validate = (formValues) => {
243
243
  const errors = { prices: {} };
244
244
  Object.keys(formValues.prices).forEach((currency) => {
@@ -251,7 +251,6 @@ const validate = (formValues) => {
251
251
  // This form doesn't accept high precision prices
252
252
  const highPrecisionCurrencies =
253
253
  LocalizedMoneyInput.getHighPrecisionCurrencies(formValues.prices);
254
-
255
254
  // ['CAD', 'USD']
256
255
  emptyCurrencies.forEach((emptyCurrency) => {
257
256
  errors.prices[emptyCurrency].missing = true;
@@ -259,7 +258,6 @@ const validate = (formValues) => {
259
258
  highPrecisionCurrencies.forEach((highPrecisionCurrency) => {
260
259
  errors.prices[highPrecisionCurrency].highPrecision = true;
261
260
  });
262
-
263
261
  return omitEmpty(errors);
264
262
  };
265
263
  const initialValues = docToFormValues(doc);
@@ -277,7 +275,6 @@ const renderErrors = (errors) => {
277
275
  };
278
276
  });
279
277
  };
280
-
281
278
  return (
282
279
  <Formik
283
280
  initialValues={initialValues}
@@ -305,7 +302,6 @@ return (
305
302
  errors={renderErrors(errors)}
306
303
  horizontalConstraint={10}
307
304
  />
308
-
309
305
  <button type="submit">Submit</button>
310
306
  </form>
311
307
  )}
@@ -0,0 +1,2 @@
1
+ export * from "./declarations/src/index";
2
+ export { default } from "./declarations/src/index";
@@ -8,10 +8,10 @@ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/in
8
8
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
9
9
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
10
10
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
11
- var _taggedTemplateLiteral = require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral');
12
11
  var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
13
12
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
14
13
  var _toConsumableArray = require('@babel/runtime-corejs3/helpers/toConsumableArray');
14
+ var _pt = require('prop-types');
15
15
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
16
16
  var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
17
17
  var _sortInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/sort');
@@ -20,8 +20,6 @@ var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instan
20
20
  var _Object$values = require('@babel/runtime-corejs3/core-js-stable/object/values');
21
21
  var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
22
22
  var react = require('react');
23
- var PropTypes = require('prop-types');
24
- var commonTags = require('common-tags');
25
23
  var reactIntl = require('react-intl');
26
24
  require('@emotion/react');
27
25
  var hooks = require('@commercetools-uikit/hooks');
@@ -42,6 +40,7 @@ var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachIns
42
40
  var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
43
41
  var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
44
42
  var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
43
+ var _pt__default = /*#__PURE__*/_interopDefault(_pt);
45
44
  var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
46
45
  var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
47
46
  var _sortInstanceProperty__default = /*#__PURE__*/_interopDefault(_sortInstanceProperty);
@@ -49,7 +48,6 @@ var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
49
48
  var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
50
49
  var _Object$values__default = /*#__PURE__*/_interopDefault(_Object$values);
51
50
  var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
52
- var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
53
51
  var MoneyInput__default = /*#__PURE__*/_interopDefault(MoneyInput);
54
52
  var Stack__default = /*#__PURE__*/_interopDefault(Stack);
55
53
  var Constraints__default = /*#__PURE__*/_interopDefault(Constraints);
@@ -72,11 +70,9 @@ var messages = reactIntl.defineMessages({
72
70
  }
73
71
  });
74
72
 
75
- var _templateObject;
76
-
77
73
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
78
74
 
79
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context7, _context8; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context7 = ownKeys(Object(source), !0)).call(_context7, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context8 = ownKeys(Object(source))).call(_context8, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
75
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(source), !0)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
80
76
 
81
77
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
82
78
  var sequentialId = utils.createSequentialId('localized-money-input-'); // sorts the currencies with the following priority:
@@ -99,7 +95,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
99
95
  } : {
100
96
  name: "1ysn02y-LocalizedInput",
101
97
  styles: "width:100%;position:relative;display:flex;label:LocalizedInput;",
102
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvY2FsaXplZC1tb25leS1pbnB1dC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0RGdCIiwiZmlsZSI6ImxvY2FsaXplZC1tb25leS1pbnB1dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IG9uZUxpbmUgfSBmcm9tICdjb21tb24tdGFncyc7XG5pbXBvcnQgeyB1c2VJbnRsIH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyB1c2VUb2dnbGVTdGF0ZSwgdXNlRmllbGRJZCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2hvb2tzJztcbmltcG9ydCBNb25leUlucHV0IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L21vbmV5LWlucHV0JztcbmltcG9ydCBTdGFjayBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9zcGFjaW5ncy1zdGFjayc7XG5pbXBvcnQgQ29uc3RyYWludHMgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvY29uc3RyYWludHMnO1xuaW1wb3J0IHsgQ29pbnNJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlTG9jYWxpemVkRGF0YUF0dHJpYnV0ZXMsXG4gIGdldEhhc0Vycm9yT25SZW1haW5pbmdMYW5ndWFnZXMsXG4gIGdldEhhc1dhcm5pbmdPblJlbWFpbmluZ0xhbmd1YWdlcyxcbiAgZ2V0SWQsXG4gIGdldE5hbWUsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2xvY2FsaXplZC11dGlscyc7XG5pbXBvcnQge1xuICBjcmVhdGVTZXF1ZW50aWFsSWQsXG4gIGZpbHRlckRhdGFBdHRyaWJ1dGVzLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC91dGlscyc7XG5pbXBvcnQgeyBMb2NhbGl6ZWRJbnB1dFRvZ2dsZSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2lucHV0LXV0aWxzJztcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuL21lc3NhZ2VzJztcblxuY29uc3Qgc2VxdWVudGlhbElkID0gY3JlYXRlU2VxdWVudGlhbElkKCdsb2NhbGl6ZWQtbW9uZXktaW5wdXQtJyk7XG5cbi8vIHNvcnRzIHRoZSBjdXJyZW5jaWVzIHdpdGggdGhlIGZvbGxvd2luZyBwcmlvcml0eTpcbi8vIC0gVGhlIHNlbGVjdGVkIGN1cnJlbmN5IGlzIHBsYWNlZCBmaXJzdCAoZS5nIEVVUilcbi8vIC0gQWxsIG90aGVyIGN1cnJlbmNpZXMgZm9sbG93LCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgYXMgd2VsbFxuZXhwb3J0IGNvbnN0IHNvcnRDdXJyZW5jaWVzID0gKHNlbGVjdGVkQ3VycmVuY3ksIGFsbEN1cnJlbmNpZXMpID0+IHtcbiAgY29uc3QgcmVtYWluaW5nQ3VycmVuY2llcyA9IGFsbEN1cnJlbmNpZXMuZmlsdGVyKFxuICAgIChjdXJyZW5jeSkgPT4gY3VycmVuY3kgIT09IHNlbGVjdGVkQ3VycmVuY3lcbiAgKTtcbiAgcmV0dXJuIFtzZWxlY3RlZEN1cnJlbmN5LCAuLi5yZW1haW5pbmdDdXJyZW5jaWVzLnNvcnQoKV07XG59O1xuXG5jb25zdCBMb2NhbGl6ZWRJbnB1dCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IG9uQ2hhbmdlIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBXZSBtYW5pcHVsYXRlIHRoZSBldmVudCB0byBhZGQgdGhlIGN1cnJlbmN5IHRvIHRoZSB0YXJnZXQuXG4gICAgICAvLyBUaGF0IHdheSB0aGUgdXNlcnMgIGNhbiByZWFkXG4gICAgICAvLyBldmVudC50YXJnZXQuY3VycmVuY3kgYW5kIGV2ZW50LnRhcmdldC52YWx1ZSB0byBkZXRlcm1pbmUgdGhlIG5leHQgdmFsdWUuXG4gICAgICAvL1xuICAgICAgLy8gV2Ugb25seSBuZWVkIHRoaXMgaW5mb3JtYXRpb24gZm9yIHRoZSBzdG9yeSwgdGhlIE1DIGFwcGxpY2F0aW9uIGNvZGUgd2lsbFxuICAgICAgLy8gbmV2ZXIgbmVlZCB0byBhY2Nlc3MgdGhlIGluZm9ybWF0aW9uIGluIHN1Y2ggYW4gaW5jb252ZW5pZW50IHdheSwgYXNcbiAgICAgIC8vIEZvcm1payBjYW4gZGVhbCB3aXRoIGEgbmFtZSBsaWtlIFwiZm9vLmVuXCIgYW5kIHNldHMgdGhlIHZhbHVlIGNvcnJlY3RseS5cbiAgICAgIC8vIFdlIGNhbid0IHVzZSB0aGlzIGFzIHdlIGFyZW4ndCBndWFyYW50ZWVkIGEgbmFtZSBpbiB0aGUgc3RvcnkgYXMgdGhlIHVzZXJcbiAgICAgIC8vIG1pZ2h0IGNsZWFyIGl0IHVzaW5nIHRoZSBrbm9iLCBhbmQgdGhlbiB3ZSBjYW4ndCBwYXJzZSB0aGUgY3VycmVuY3kgZnJvbVxuICAgICAgLy8gdGhlIGlucHV0IG5hbWUgYW55bW9yZS5cbiAgICAgIC8vXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIGV2ZW50LnRhcmdldC5jdXJyZW5jeSA9IHByb3BzLmN1cnJlbmN5O1xuICAgICAgb25DaGFuZ2UoZXZlbnQpO1xuICAgIH0sXG4gICAgW3Byb3BzLmN1cnJlbmN5LCBvbkNoYW5nZV1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8U3RhY2sgc2NhbGU9XCJ4c1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYH1cbiAgICAgID5cbiAgICAgICAgPE1vbmV5SW5wdXRcbiAgICAgICAgICBpZD17cHJvcHMuaWR9XG4gICAgICAgICAgbmFtZT17cHJvcHMubmFtZX1cbiAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e3Byb3BzLm9uQmx1cn1cbiAgICAgICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgIGlzUmVhZE9ubHk9e3Byb3BzLmlzUmVhZE9ubHl9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgIGhhc0Vycm9yPXtwcm9wcy5oYXNFcnJvcn1cbiAgICAgICAgICBoYXNXYXJuaW5nPXtwcm9wcy5oYXNXYXJuaW5nfVxuICAgICAgICAgIHsuLi5maWx0ZXJEYXRhQXR0cmlidXRlcyhwcm9wcyl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHsocHJvcHMuZXJyb3IgfHwgcHJvcHMud2FybmluZykgJiYgKFxuICAgICAgICA8ZGl2Pntwcm9wcy5lcnJvciA/IHByb3BzLmVycm9yIDogcHJvcHMud2FybmluZ308L2Rpdj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cbkxvY2FsaXplZElucHV0LmRpc3BsYXlOYW1lID0gJ0xvY2FsaXplZElucHV0JztcblxuTG9jYWxpemVkSW5wdXQucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmFsdWU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYW1vdW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgY3VycmVuY3lDb2RlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbCxcbiAgaGFzRXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoYXNXYXJuaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGVycm9yOiBQcm9wVHlwZXMubm9kZSxcbiAgd2FybmluZzogUHJvcFR5cGVzLm5vZGUsXG59O1xuXG5jb25zdCBMb2NhbGl6ZWRNb25leUlucHV0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG5cbiAgY29uc3QgZGVmYXVsdEV4cGFuc2lvblN0YXRlID1cbiAgICBwcm9wcy5oaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9scyB8fFxuICAgIHByb3BzLmRlZmF1bHRFeHBhbmRDdXJyZW5jaWVzIHx8XG4gICAgLy8gZGVmYXVsdCB0byBgZmFsc2VgLCBiZWNhdXNlIHVzZVRvZ2dsZVN0YXRlIGRlZmF1bHRzIHRvIGB0cnVlYFxuICAgIGZhbHNlO1xuXG4gIGNvbnN0IFthcmVDdXJyZW5jaWVzRXhwYW5kZWQsIHRvZ2dsZUN1cnJlbmNpZXNdID0gdXNlVG9nZ2xlU3RhdGUoXG4gICAgZGVmYXVsdEV4cGFuc2lvblN0YXRlXG4gICk7XG5cbiAgY29uc3QgaWQgPSB1c2VGaWVsZElkKHByb3BzLmlkLCBzZXF1ZW50aWFsSWQpO1xuXG4gIGNvbnN0IGhhc0Vycm9ySW5SZW1haW5pbmdDdXJyZW5jaWVzID1cbiAgICBwcm9wcy5oYXNFcnJvciB8fFxuICAgIGdldEhhc0Vycm9yT25SZW1haW5pbmdMYW5ndWFnZXMocHJvcHMuZXJyb3JzLCBwcm9wcy5zZWxlY3RlZEN1cnJlbmN5KTtcblxuICBjb25zdCBoYXNXYXJuaW5nSW5SZW1haW5pbmdDdXJyZW5jaWVzID1cbiAgICBwcm9wcy5oYXNXYXJuaW5nIHx8XG4gICAgZ2V0SGFzV2FybmluZ09uUmVtYWluaW5nTGFuZ3VhZ2VzKHByb3BzLndhcm5pbmdzLCBwcm9wcy5zZWxlY3RlZEN1cnJlbmN5KTtcblxuICBpZiAoaGFzRXJyb3JJblJlbWFpbmluZ0N1cnJlbmNpZXMgfHwgaGFzV2FybmluZ0luUmVtYWluaW5nQ3VycmVuY2llcykge1xuICAgIC8vIHRoaXMgdXBkYXRlIHdpdGhpbiByZW5kZXIgcmVwbGFjZXMgdGhlIG9sZCBgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzYCBmdW5jdGlvbmFsaXR5XG4gICAgLy8gaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2hvb2tzLWZhcS5odG1sI2hvdy1kby1pLWltcGxlbWVudC1nZXRkZXJpdmVkc3RhdGVmcm9tcHJvcHNcbiAgICBpZiAoIWFyZUN1cnJlbmNpZXNFeHBhbmRlZCkge1xuICAgICAgdG9nZ2xlQ3VycmVuY2llcygpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGN1cnJlbmNpZXMgPSBzb3J0Q3VycmVuY2llcyhcbiAgICBwcm9wcy5zZWxlY3RlZEN1cnJlbmN5LFxuICAgIE9iamVjdC5rZXlzKHByb3BzLnZhbHVlKVxuICApO1xuXG4gIGNvbnN0IHNob3VsZFJlbmRlckN1cnJlbmN5Q29udHJvbCA9XG4gICAgY3VycmVuY2llcy5sZW5ndGggPiAxICYmICFwcm9wcy5oaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9scztcblxuICByZXR1cm4gKFxuICAgIDxDb25zdHJhaW50cy5Ib3Jpem9udGFsIG1heD17cHJvcHMuaG9yaXpvbnRhbENvbnN0cmFpbnR9PlxuICAgICAgPFN0YWNrIHNjYWxlPVwieHNcIj5cbiAgICAgICAgPFN0YWNrIHNjYWxlPVwic1wiPlxuICAgICAgICAgIHtjdXJyZW5jaWVzLm1hcCgoY3VycmVuY3ksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0ZpcnN0Q3VycmVuY3kgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgICAgIGlmICghaXNGaXJzdEN1cnJlbmN5ICYmICFhcmVDdXJyZW5jaWVzRXhwYW5kZWQpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8TG9jYWxpemVkSW5wdXRcbiAgICAgICAgICAgICAgICBrZXk9e2N1cnJlbmN5fVxuICAgICAgICAgICAgICAgIGlkPXtMb2NhbGl6ZWRNb25leUlucHV0LmdldElkKGlkLCBjdXJyZW5jeSl9XG4gICAgICAgICAgICAgICAgbmFtZT17TG9jYWxpemVkTW9uZXlJbnB1dC5nZXROYW1lKHByb3BzLm5hbWUsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWVbY3VycmVuY3ldfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtwcm9wcy5vbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBjdXJyZW5jeT17Y3VycmVuY3l9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e1xuICAgICAgICAgICAgICAgICAgcHJvcHMucGxhY2Vob2xkZXIgPyBwcm9wcy5wbGFjZWhvbGRlcltjdXJyZW5jeV0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25CbHVyPXtwcm9wcy5vbkJsdXJ9XG4gICAgICAgICAgICAgICAgb25Gb2N1cz17cHJvcHMub25Gb2N1c31cbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgICAgIGlzUmVhZE9ubHk9e3Byb3BzLmlzUmVhZE9ubHl9XG4gICAgICAgICAgICAgICAgaGFzRXJyb3I9e0Jvb2xlYW4oXG4gICAgICAgICAgICAgICAgICBwcm9wcy5oYXNFcnJvciB8fCAocHJvcHMuZXJyb3JzICYmIHByb3BzLmVycm9yc1tjdXJyZW5jeV0pXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICBoYXNXYXJuaW5nPXtCb29sZWFuKFxuICAgICAgICAgICAgICAgICAgcHJvcHMuaGFzV2FybmluZyB8fFxuICAgICAgICAgICAgICAgICAgICAocHJvcHMud2FybmluZ3MgJiYgcHJvcHMud2FybmluZ3NbY3VycmVuY3ldKVxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgaW50bD17aW50bH1cbiAgICAgICAgICAgICAgICB3YXJuaW5nPXtwcm9wcy53YXJuaW5ncyAmJiBwcm9wcy53YXJuaW5nc1tjdXJyZW5jeV19XG4gICAgICAgICAgICAgICAgZXJyb3I9e3Byb3BzLmVycm9ycyAmJiBwcm9wcy5lcnJvcnNbY3VycmVuY3ldfVxuICAgICAgICAgICAgICAgIHsuLi5jcmVhdGVMb2NhbGl6ZWREYXRhQXR0cmlidXRlcyhwcm9wcywgY3VycmVuY3kpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICAge3Nob3VsZFJlbmRlckN1cnJlbmN5Q29udHJvbCAmJiAoXG4gICAgICAgICAgPExvY2FsaXplZElucHV0VG9nZ2xlXG4gICAgICAgICAgICBpY29uPXs8Q29pbnNJY29uIC8+fVxuICAgICAgICAgICAgb25DbGljaz17dG9nZ2xlQ3VycmVuY2llc31cbiAgICAgICAgICAgIGlzT3Blbj17YXJlQ3VycmVuY2llc0V4cGFuZGVkfVxuICAgICAgICAgICAgaXNEaXNhYmxlZD17XG4gICAgICAgICAgICAgIGFyZUN1cnJlbmNpZXNFeHBhbmRlZCAmJlxuICAgICAgICAgICAgICBCb29sZWFuKFxuICAgICAgICAgICAgICAgIGhhc0Vycm9ySW5SZW1haW5pbmdDdXJyZW5jaWVzIHx8IGhhc1dhcm5pbmdJblJlbWFpbmluZ0N1cnJlbmNpZXNcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hvd01lc3NhZ2U9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5zaG93LCB7XG4gICAgICAgICAgICAgIHJlbWFpbmluZ0N1cnJlbmNpZXM6IGN1cnJlbmNpZXMubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgaGlkZU1lc3NhZ2U9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5oaWRlLCB7XG4gICAgICAgICAgICAgIHJlbWFpbmluZ0N1cnJlbmNpZXM6IGN1cnJlbmNpZXMubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0YWNrPlxuICAgIDwvQ29uc3RyYWludHMuSG9yaXpvbnRhbD5cbiAgKTtcbn07XG5cbkxvY2FsaXplZE1vbmV5SW5wdXQuZGlzcGxheU5hbWUgPSAnTG9jYWxpemVkTW9uZXlJbnB1dCc7XG5cbkxvY2FsaXplZE1vbmV5SW5wdXQucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLy8gdGhlbiBpbnB1dCBkb2Vzbid0IGFjY2VwdCBhIFwiY3VycmVuY2llc1wiIHByb3AsIGluc3RlYWQgYWxsIHBvc3NpYmxlXG4gIC8vIGN1cnJlbmNpZXMgaGF2ZSB0byBleGlzdCAod2l0aCBlbXB0eSBvciBmaWxsZWQgc3RyaW5ncykgb24gdGhlIHZhbHVlOlxuICAvLyB7IEVVUjoge2Ftb3VudDogJzEyLjAwJywgY3VycmVuY3lDb2RlOiAnRVVSJ30sIFVTRDoge2Ftb3VudDogJycsIGN1cnJlbmN5Q29kZTogJ1VTRCd9fVxuICB2YWx1ZTogUHJvcFR5cGVzLm9iamVjdE9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBhbW91bnQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGN1cnJlbmN5Q29kZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIH0pXG4gICkuaXNSZXF1aXJlZCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBzZWxlY3RlZEN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICBoaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9sczogUHJvcFR5cGVzLmJvb2wsXG4gIGRlZmF1bHRFeHBhbmRDdXJyZW5jaWVzOiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCAuLi5yZXN0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgcHJvcHMuaGlkZUN1cnJlbmN5RXhwYW5zaW9uQ29udHJvbHMgJiZcbiAgICAgIHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gPT09ICdib29sZWFuJ1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBvbmVMaW5lYFxuICAgICAgICAgICR7Y29tcG9uZW50TmFtZX06IFwiJHtwcm9wTmFtZX1cIiBkb2VzIG5vdCBoYXZlIGFueSBlZmZlY3Qgd2hlblxuICAgICAgICAgIFwiaGlkZUN1cnJlbmN5RXhwYW5zaW9uQ29udHJvbHNcIiBpcyBzZXQuXG4gICAgICAgIGBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBQcm9wVHlwZXMuYm9vbChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIC4uLnJlc3QpO1xuICB9LFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLnN0cmluZyksXG4gIGhvcml6b250YWxDb25zdHJhaW50OiBQcm9wVHlwZXMub25lT2YoW1xuICAgIDMsXG4gICAgNCxcbiAgICA1LFxuICAgIDYsXG4gICAgNyxcbiAgICA4LFxuICAgIDksXG4gICAgMTAsXG4gICAgMTEsXG4gICAgMTIsXG4gICAgMTMsXG4gICAgMTQsXG4gICAgMTUsXG4gICAgMTYsXG4gICAgJ3NjYWxlJyxcbiAgICAnYXV0bycsXG4gIF0pLFxuICBoYXNFcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhhc1dhcm5pbmc6IFByb3BUeXBlcy5ib29sLFxuICBlcnJvcnM6IFByb3BUeXBlcy5vYmplY3RPZihQcm9wVHlwZXMubm9kZSksXG4gIHdhcm5pbmdzOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLm5vZGUpLFxufTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5nZXRJZCA9IGdldElkO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmdldE5hbWUgPSBnZXROYW1lO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmRlZmF1bHRQcm9wcyA9IHtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6ICdzY2FsZScsXG59O1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmNvbnZlcnRUb01vbmV5VmFsdWVzID0gKHZhbHVlcywgbG9jYWxlKSA9PlxuICBPYmplY3QudmFsdWVzKHZhbHVlcykubWFwKCh2YWx1ZSkgPT5cbiAgICBNb25leUlucHV0LmNvbnZlcnRUb01vbmV5VmFsdWUodmFsdWUsIGxvY2FsZSlcbiAgKTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWVzID0gKG1vbmV5VmFsdWVzID0gW10sIGxvY2FsZSkgPT5cbiAgbW9uZXlWYWx1ZXNcbiAgICAubWFwKCh2YWx1ZSkgPT4gTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWUodmFsdWUsIGxvY2FsZSkpXG4gICAgLnJlZHVjZShcbiAgICAgIChwYWlycywgdmFsdWUpID0+ICh7XG4gICAgICAgIC4uLnBhaXJzLFxuICAgICAgICBbdmFsdWUuY3VycmVuY3lDb2RlXTogdmFsdWUsXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5nZXRIaWdoUHJlY2lzaW9uQ3VycmVuY2llcyA9ICh2YWx1ZXMsIGxvY2FsZSkgPT5cbiAgT2JqZWN0LmtleXModmFsdWVzKS5maWx0ZXIoKGN1cnJlbmN5Q29kZSkgPT5cbiAgICBNb25leUlucHV0LmlzSGlnaFByZWNpc2lvbih2YWx1ZXNbY3VycmVuY3lDb2RlXSwgbG9jYWxlKVxuICApO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmdldEVtcHR5Q3VycmVuY2llcyA9ICh2YWx1ZXMpID0+XG4gIE9iamVjdC5rZXlzKHZhbHVlcykuZmlsdGVyKChjdXJyZW5jeUNvZGUpID0+XG4gICAgTW9uZXlJbnB1dC5pc0VtcHR5KHZhbHVlc1tjdXJyZW5jeUNvZGVdKVxuICApO1xuXG5leHBvcnQgZGVmYXVsdCBMb2NhbGl6ZWRNb25leUlucHV0O1xuIl19 */",
98
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvY2FsaXplZC1tb25leS1pbnB1dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd09nQiIsImZpbGUiOiJsb2NhbGl6ZWQtbW9uZXktaW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHR5cGUgRm9jdXNFdmVudEhhbmRsZXIsXG4gIHR5cGUgQ2hhbmdlRXZlbnRIYW5kbGVyLFxuICB0eXBlIFJlYWN0Tm9kZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgdXNlVG9nZ2xlU3RhdGUsIHVzZUZpZWxkSWQgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9ob29rcyc7XG5pbXBvcnQgTW9uZXlJbnB1dCwge1xuICB0eXBlIFRDdXJyZW5jeUNvZGUsXG4gIHR5cGUgVE1vbmV5VmFsdWUsXG4gIHR5cGUgVFZhbHVlLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9tb25leS1pbnB1dCc7XG5pbXBvcnQgU3RhY2sgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc3BhY2luZ3Mtc3RhY2snO1xuaW1wb3J0IENvbnN0cmFpbnRzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2NvbnN0cmFpbnRzJztcbmltcG9ydCB7IENvaW5zSWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCB7XG4gIGNyZWF0ZUxvY2FsaXplZERhdGFBdHRyaWJ1dGVzLFxuICBnZXRIYXNFcnJvck9uUmVtYWluaW5nTGFuZ3VhZ2VzLFxuICBnZXRIYXNXYXJuaW5nT25SZW1haW5pbmdMYW5ndWFnZXMsXG4gIGdldElkLFxuICBnZXROYW1lLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9sb2NhbGl6ZWQtdXRpbHMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlU2VxdWVudGlhbElkLFxuICBmaWx0ZXJEYXRhQXR0cmlidXRlcyxcbiAgd2FybmluZyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvdXRpbHMnO1xuaW1wb3J0IHsgTG9jYWxpemVkSW5wdXRUb2dnbGUgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pbnB1dC11dGlscyc7XG5pbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi9tZXNzYWdlcyc7XG5cbnR5cGUgVEV2ZW50ID0ge1xuICB0YXJnZXQ6IHtcbiAgICBpZD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsO1xuICB9O1xufTtcblxudHlwZSBUTG9jYWxpemVkTW9uZXlJbnB1dFByb3BzID0ge1xuICAvKipcbiAgICogVXNlZCBhcyBIVE1MIGlkIHByb3BlcnR5LlxuICAgKi9cbiAgaWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVzZWQgdG8gY3JlYXRlIGEgSFRNTCBgbmFtZWAgcHJvcGVydHkgZm9yIHRoZSBhbW91bnQgaW5wdXQgZmllbGQgKGAke25hbWV9LmFtb3VudGApLlxuICAgKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIHZhbHVlIG9mIHBvc3NpYmxlIGN1cnJlbmN5XG4gICAqIDxici8+XG4gICAqIHRoZSBpbnB1dCBkb2Vzbid0IGFjY2VwdCBhIFwiY3VycmVuY2llc1wiIHByb3AsIGluc3RlYWQgYWxsIHBvc3NpYmxlXG4gICAqIGN1cnJlbmNpZXMgaGF2ZSB0byBleGlzdCAod2l0aCBlbXB0eSBvciBmaWxsZWQgc3RyaW5ncykgb24gdGhlIHZhbHVlOlxuICAgKiB7IEVVUjoge2Ftb3VudDogJzEyLjAwJywgY3VycmVuY3lDb2RlOiAnRVVSJ30sIFVTRDoge2Ftb3VudDogJycsIGN1cnJlbmN5Q29kZTogJ1VTRCd9fVxuICAgKi9cbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIFRWYWx1ZT47XG4gIC8qKlxuICAgKiBDYWxsZWQgd2l0aCB0aGUgZXZlbnQgb2YgdGhlIGlucHV0LlxuICAgKi9cbiAgb25DaGFuZ2U/OiBDaGFuZ2VFdmVudEhhbmRsZXI7XG4gIC8qKlxuICAgKiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGN1cnJlbmN5XG4gICAqL1xuICBzZWxlY3RlZEN1cnJlbmN5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBpbnB1dCBpcyBibHVycmVkXG4gICAqL1xuICBvbkJsdXI/OiAoZXZlbnQ6IFRFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IGlzIGZvY3VzZWRcbiAgICovXG4gIG9uRm9jdXM/OiBGb2N1c0V2ZW50SGFuZGxlcjtcbiAgLyoqXG4gICAqIFdpbGwgaGlkZSB0aGUgY3VycmVuY3kgZXhwYW5zaW9uIGNvbnRyb2xzIHdoZW4gc2V0IHRvIGB0cnVlYC4gQWxsIGN1cnJlbmNpZXMgd2lsbCBiZSBzaG93biB3aGVuIHNldCB0byBgdHJ1ZWAuXG4gICAqL1xuICBoaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9scz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIG9uZSBvciBhbGwgY3VycmVuY2lycyBhcmUgdmlzaWJsZSBieSBkZWZhdWx0XG4gICAqL1xuICBkZWZhdWx0RXhwYW5kQ3VycmVuY2llcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgaW5wdXQgY2Fubm90IGJlIG1vZGlmaWVkIChlLmcgbm90IGF1dGhvcml6ZWQsIG9yIGNoYW5nZXMgY3VycmVudGx5IHNhdmluZykuXG4gICAqL1xuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBmaWVsZCBpcyBkaXNwbGF5aW5nIHJlYWQtb25seSBjb250ZW50XG4gICAqL1xuICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBpbnB1dFxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKipcbiAgICogSG9yaXpvbnRhbCBzaXplIGxpbWl0IG9mIHRoZSBpbnB1dCBmaWVsZHMuXG4gICAqL1xuICBob3Jpem9udGFsQ29uc3RyYWludD86XG4gICAgfCAzXG4gICAgfCA0XG4gICAgfCA1XG4gICAgfCA2XG4gICAgfCA3XG4gICAgfCA4XG4gICAgfCA5XG4gICAgfCAxMFxuICAgIHwgMTFcbiAgICB8IDEyXG4gICAgfCAxM1xuICAgIHwgMTRcbiAgICB8IDE1XG4gICAgfCAxNlxuICAgIHwgJ3NjYWxlJ1xuICAgIHwgJ2F1dG8nO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgaW5wdXQgaGFzIGVycm9yc1xuICAgKi9cbiAgaGFzRXJyb3I/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbCB0byBpbmRpY2F0ZSBvbiB0aGUgaW5wdXQgaWYgdGhlcmUgYXJlIHZhbHVlcyB0aGF0IGFyZSBwb3RlbnRpYWxseSBpbnZhbGlkXG4gICAqL1xuICBoYXNXYXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEEgbWFwIG9mIGVycm9ycy4gRXJyb3IgbWVzc2FnZXMgZm9yIGtub3duIGVycm9ycyBhcmUgcmVuZGVyZWQgYXV0b21hdGljYWxseS5cbiAgICogPGJyPlxuICAgKiBVbmtub3duIGVycm9ycyB3aWxsIGJlIGZvcndhcmRlZCB0byBgcmVuZGVyRXJyb3JgXG4gICAqL1xuICBlcnJvcnM/OiBSZWNvcmQ8c3RyaW5nLCBSZWFjdE5vZGU+O1xuICAvKipcbiAgICogQSBtYXAgb2Ygd2FybmluZ3MuXG4gICAqL1xuICB3YXJuaW5ncz86IFJlY29yZDxzdHJpbmcsIFJlYWN0Tm9kZT47XG59O1xuXG50eXBlIFRMb2NhbGl6ZWRJbnB1dFByb3BzID0ge1xuICAvKipcbiAgICogVXNlZCBhcyBIVE1MIGlkIHByb3BlcnR5LlxuICAgKi9cbiAgaWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVzZWQgdG8gY3JlYXRlIGEgSFRNTCBgbmFtZWAgcHJvcGVydHkgZm9yIHRoZSBhbW91bnQgaW5wdXQgZmllbGQgKGAke25hbWV9LmFtb3VudGApLlxuICAgKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIHZhbHVlIG9mIHBvc3NpYmxlIGN1cnJlbmN5XG4gICAqL1xuICB2YWx1ZTogVFZhbHVlO1xuICAvKipcbiAgICogQ2FsbGVkIHdpdGggdGhlIGV2ZW50IG9mIHRoZSBpbnB1dC5cbiAgICovXG4gIG9uQ2hhbmdlPzogQ2hhbmdlRXZlbnRIYW5kbGVyO1xuICAvKipcbiAgICogQ2FsbGVkIHdpdGggdGhlIGV2ZW50IG9mIHRoZSBpbnB1dC5cbiAgICovXG4gIGN1cnJlbmN5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBpbnB1dCBpcyBibHVycmVkXG4gICAqL1xuICBvbkJsdXI/OiAoZXZlbnQ6IFRFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IGlzIGZvY3VzZWRcbiAgICovXG4gIG9uRm9jdXM/OiBGb2N1c0V2ZW50SGFuZGxlcjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBpbnB1dCBjYW5ub3QgYmUgbW9kaWZpZWQgKGUuZyBub3QgYXV0aG9yaXplZCwgb3IgY2hhbmdlcyBjdXJyZW50bHkgc2F2aW5nKS5cbiAgICovXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGZpZWxkIGlzIGRpc3BsYXlpbmcgcmVhZC1vbmx5IGNvbnRlbnRcbiAgICovXG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgaW5wdXQgaGFzIGVycm9yc1xuICAgKi9cbiAgaGFzRXJyb3I/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbCB0byBpbmRpY2F0ZSBvbiB0aGUgaW5wdXQgaWYgdGhlcmUgYXJlIHZhbHVlcyB0aGF0IGFyZSBwb3RlbnRpYWxseSBpbnZhbGlkXG4gICAqL1xuICBoYXNXYXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBpbnB1dFxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBlcnJvcnMuIEVycm9yIG1lc3NhZ2VzIGZvciBrbm93biBlcnJvcnMgYXJlIHJlbmRlcmVkIGF1dG9tYXRpY2FsbHkuXG4gICAqIDxicj5cbiAgICogVW5rbm93biBlcnJvcnMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYHJlbmRlckVycm9yYFxuICAgKi9cbiAgZXJyb3I/OiBSZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBIVE1MIG5vZGUgdG8gZGlzcGxheSB3YXJuaW5nXG4gICAqL1xuICB3YXJuaW5nPzogUmVhY3ROb2RlO1xufTtcblxuY29uc3Qgc2VxdWVudGlhbElkID0gY3JlYXRlU2VxdWVudGlhbElkKCdsb2NhbGl6ZWQtbW9uZXktaW5wdXQtJyk7XG5cbi8vIHNvcnRzIHRoZSBjdXJyZW5jaWVzIHdpdGggdGhlIGZvbGxvd2luZyBwcmlvcml0eTpcbi8vIC0gVGhlIHNlbGVjdGVkIGN1cnJlbmN5IGlzIHBsYWNlZCBmaXJzdCAoZS5nIEVVUilcbi8vIC0gQWxsIG90aGVyIGN1cnJlbmNpZXMgZm9sbG93LCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgYXMgd2VsbFxuZXhwb3J0IGNvbnN0IHNvcnRDdXJyZW5jaWVzID0gKFxuICBzZWxlY3RlZEN1cnJlbmN5OiBzdHJpbmcsXG4gIGFsbEN1cnJlbmNpZXM6IHN0cmluZ1tdXG4pID0+IHtcbiAgY29uc3QgcmVtYWluaW5nQ3VycmVuY2llcyA9IGFsbEN1cnJlbmNpZXMuZmlsdGVyKFxuICAgIChjdXJyZW5jeSkgPT4gY3VycmVuY3kgIT09IHNlbGVjdGVkQ3VycmVuY3lcbiAgKTtcbiAgcmV0dXJuIFtzZWxlY3RlZEN1cnJlbmN5LCAuLi5yZW1haW5pbmdDdXJyZW5jaWVzLnNvcnQoKV07XG59O1xuXG5jb25zdCBMb2NhbGl6ZWRJbnB1dCA9IChwcm9wczogVExvY2FsaXplZElucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgeyBvbkNoYW5nZSB9ID0gcHJvcHM7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgLy8gV2UgbWFuaXB1bGF0ZSB0aGUgZXZlbnQgdG8gYWRkIHRoZSBjdXJyZW5jeSB0byB0aGUgdGFyZ2V0LlxuICAgICAgLy8gVGhhdCB3YXkgdGhlIHVzZXJzICBjYW4gcmVhZFxuICAgICAgLy8gZXZlbnQudGFyZ2V0LmN1cnJlbmN5IGFuZCBldmVudC50YXJnZXQudmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBuZXh0IHZhbHVlLlxuICAgICAgLy9cbiAgICAgIC8vIFdlIG9ubHkgbmVlZCB0aGlzIGluZm9ybWF0aW9uIGZvciB0aGUgc3RvcnksIHRoZSBNQyBhcHBsaWNhdGlvbiBjb2RlIHdpbGxcbiAgICAgIC8vIG5ldmVyIG5lZWQgdG8gYWNjZXNzIHRoZSBpbmZvcm1hdGlvbiBpbiBzdWNoIGFuIGluY29udmVuaWVudCB3YXksIGFzXG4gICAgICAvLyBGb3JtaWsgY2FuIGRlYWwgd2l0aCBhIG5hbWUgbGlrZSBcImZvby5lblwiIGFuZCBzZXRzIHRoZSB2YWx1ZSBjb3JyZWN0bHkuXG4gICAgICAvLyBXZSBjYW4ndCB1c2UgdGhpcyBhcyB3ZSBhcmVuJ3QgZ3VhcmFudGVlZCBhIG5hbWUgaW4gdGhlIHN0b3J5IGFzIHRoZSB1c2VyXG4gICAgICAvLyBtaWdodCBjbGVhciBpdCB1c2luZyB0aGUga25vYiwgYW5kIHRoZW4gd2UgY2FuJ3QgcGFyc2UgdGhlIGN1cnJlbmN5IGZyb21cbiAgICAgIC8vIHRoZSBpbnB1dCBuYW1lIGFueW1vcmUuXG4gICAgICAvL1xuICAgICAgZXZlbnQudGFyZ2V0LmN1cnJlbmN5ID0gcHJvcHMuY3VycmVuY3k7XG4gICAgICBvbkNoYW5nZT8uKGV2ZW50KTtcbiAgICB9LFxuICAgIFtwcm9wcy5jdXJyZW5jeSwgb25DaGFuZ2VdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPFN0YWNrIHNjYWxlPVwieHNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxNb25leUlucHV0XG4gICAgICAgICAgbmFtZT17cHJvcHMubmFtZX1cbiAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e3Byb3BzLm9uQmx1cn1cbiAgICAgICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgIGlzUmVhZE9ubHk9e3Byb3BzLmlzUmVhZE9ubHl9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgIGhhc0Vycm9yPXtwcm9wcy5oYXNFcnJvcn1cbiAgICAgICAgICBoYXNXYXJuaW5nPXtwcm9wcy5oYXNXYXJuaW5nfVxuICAgICAgICAgIHsuLi5maWx0ZXJEYXRhQXR0cmlidXRlcyhwcm9wcyl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHsocHJvcHMuZXJyb3IgfHwgcHJvcHMud2FybmluZykgJiYgKFxuICAgICAgICA8ZGl2Pntwcm9wcy5lcnJvciA/IHByb3BzLmVycm9yIDogcHJvcHMud2FybmluZ308L2Rpdj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cbkxvY2FsaXplZElucHV0LmRpc3BsYXlOYW1lID0gJ0xvY2FsaXplZElucHV0JztcblxuY29uc3QgTG9jYWxpemVkTW9uZXlJbnB1dCA9IChwcm9wczogVExvY2FsaXplZE1vbmV5SW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuXG4gIGNvbnN0IGRlZmF1bHRFeHBhbnNpb25TdGF0ZSA9XG4gICAgcHJvcHMuaGlkZUN1cnJlbmN5RXhwYW5zaW9uQ29udHJvbHMgfHxcbiAgICBwcm9wcy5kZWZhdWx0RXhwYW5kQ3VycmVuY2llcyB8fFxuICAgIC8vIGRlZmF1bHQgdG8gYGZhbHNlYCwgYmVjYXVzZSB1c2VUb2dnbGVTdGF0ZSBkZWZhdWx0cyB0byBgdHJ1ZWBcbiAgICBmYWxzZTtcblxuICBjb25zdCBbYXJlQ3VycmVuY2llc0V4cGFuZGVkLCB0b2dnbGVDdXJyZW5jaWVzXSA9IHVzZVRvZ2dsZVN0YXRlKFxuICAgIGRlZmF1bHRFeHBhbnNpb25TdGF0ZVxuICApO1xuXG4gIGNvbnN0IG9uTG9jYWxpemVkTW9uZXlJbnB1dFRvZ2dsZSA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IHRvZ2dsZUN1cnJlbmNpZXMoKSxcbiAgICBbdG9nZ2xlQ3VycmVuY2llc11cbiAgKTtcblxuICBjb25zdCBpZCA9IHVzZUZpZWxkSWQocHJvcHMuaWQsIHNlcXVlbnRpYWxJZCk7XG5cbiAgY29uc3QgaGFzRXJyb3JJblJlbWFpbmluZ0N1cnJlbmNpZXMgPVxuICAgIHByb3BzLmhhc0Vycm9yIHx8XG4gICAgZ2V0SGFzRXJyb3JPblJlbWFpbmluZ0xhbmd1YWdlcyhwcm9wcy5lcnJvcnMsIHByb3BzLnNlbGVjdGVkQ3VycmVuY3kpO1xuXG4gIGNvbnN0IGhhc1dhcm5pbmdJblJlbWFpbmluZ0N1cnJlbmNpZXMgPVxuICAgIHByb3BzLmhhc1dhcm5pbmcgfHxcbiAgICBnZXRIYXNXYXJuaW5nT25SZW1haW5pbmdMYW5ndWFnZXMocHJvcHMud2FybmluZ3MsIHByb3BzLnNlbGVjdGVkQ3VycmVuY3kpO1xuXG4gIGlmIChoYXNFcnJvckluUmVtYWluaW5nQ3VycmVuY2llcyB8fCBoYXNXYXJuaW5nSW5SZW1haW5pbmdDdXJyZW5jaWVzKSB7XG4gICAgLy8gdGhpcyB1cGRhdGUgd2l0aGluIHJlbmRlciByZXBsYWNlcyB0aGUgb2xkIGBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNgIGZ1bmN0aW9uYWxpdHlcbiAgICAvLyBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtZmFxLmh0bWwjaG93LWRvLWktaW1wbGVtZW50LWdldGRlcml2ZWRzdGF0ZWZyb21wcm9wc1xuICAgIGlmICghYXJlQ3VycmVuY2llc0V4cGFuZGVkKSB7XG4gICAgICB0b2dnbGVDdXJyZW5jaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY3VycmVuY2llcyA9IHNvcnRDdXJyZW5jaWVzKFxuICAgIHByb3BzLnNlbGVjdGVkQ3VycmVuY3ksXG4gICAgT2JqZWN0LmtleXMocHJvcHMudmFsdWUpXG4gICk7XG5cbiAgY29uc3Qgc2hvdWxkUmVuZGVyQ3VycmVuY3lDb250cm9sID1cbiAgICBjdXJyZW5jaWVzLmxlbmd0aCA+IDEgJiYgIXByb3BzLmhpZGVDdXJyZW5jeUV4cGFuc2lvbkNvbnRyb2xzO1xuXG4gIGlmIChwcm9wcy5oaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9scykge1xuICAgIHdhcm5pbmcoXG4gICAgICB0eXBlb2YgcHJvcHMuZGVmYXVsdEV4cGFuZEN1cnJlbmNpZXMgIT09ICdib29sZWFuJyxcbiAgICAgICdMb2NhbGl6ZWRNb25leUlucHV0OiBcImRlZmF1bHRFeHBhbmRDdXJyZW5jaWVzXCIgZG9lcyBub3QgaGF2ZSBhbnkgZWZmZWN0IHdoZW4gXCJoaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9sc1wiIGlzIHNldC4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnN0cmFpbnRzLkhvcml6b250YWwgbWF4PXtwcm9wcy5ob3Jpem9udGFsQ29uc3RyYWludH0+XG4gICAgICA8U3RhY2sgc2NhbGU9XCJ4c1wiPlxuICAgICAgICA8U3RhY2sgc2NhbGU9XCJzXCI+XG4gICAgICAgICAge2N1cnJlbmNpZXMubWFwKChjdXJyZW5jeSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RDdXJyZW5jeSA9IGluZGV4ID09PSAwO1xuICAgICAgICAgICAgaWYgKCFpc0ZpcnN0Q3VycmVuY3kgJiYgIWFyZUN1cnJlbmNpZXNFeHBhbmRlZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxMb2NhbGl6ZWRJbnB1dFxuICAgICAgICAgICAgICAgIGtleT17Y3VycmVuY3l9XG4gICAgICAgICAgICAgICAgaWQ9e0xvY2FsaXplZE1vbmV5SW5wdXQuZ2V0SWQoaWQsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgICAgICBuYW1lPXtMb2NhbGl6ZWRNb25leUlucHV0LmdldE5hbWUocHJvcHMubmFtZSwgY3VycmVuY3kpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZVtjdXJyZW5jeV19XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3Byb3BzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIGN1cnJlbmN5PXtjdXJyZW5jeX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgICAgICAgICBwcm9wcy5wbGFjZWhvbGRlciA/IHByb3BzLnBsYWNlaG9sZGVyW2N1cnJlbmN5XSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbkJsdXI9e3Byb3BzLm9uQmx1cn1cbiAgICAgICAgICAgICAgICBvbkZvY3VzPXtwcm9wcy5vbkZvY3VzfVxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ9e3Byb3BzLmlzRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgaXNSZWFkT25seT17cHJvcHMuaXNSZWFkT25seX1cbiAgICAgICAgICAgICAgICBoYXNFcnJvcj17Qm9vbGVhbihcbiAgICAgICAgICAgICAgICAgIHByb3BzLmhhc0Vycm9yIHx8IChwcm9wcy5lcnJvcnMgJiYgcHJvcHMuZXJyb3JzW2N1cnJlbmN5XSlcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIGhhc1dhcm5pbmc9e0Jvb2xlYW4oXG4gICAgICAgICAgICAgICAgICBwcm9wcy5oYXNXYXJuaW5nIHx8XG4gICAgICAgICAgICAgICAgICAgIChwcm9wcy53YXJuaW5ncyAmJiBwcm9wcy53YXJuaW5nc1tjdXJyZW5jeV0pXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB3YXJuaW5nPXtwcm9wcy53YXJuaW5ncyAmJiBwcm9wcy53YXJuaW5nc1tjdXJyZW5jeV19XG4gICAgICAgICAgICAgICAgZXJyb3I9e3Byb3BzLmVycm9ycyAmJiBwcm9wcy5lcnJvcnNbY3VycmVuY3ldfVxuICAgICAgICAgICAgICAgIHsuLi5jcmVhdGVMb2NhbGl6ZWREYXRhQXR0cmlidXRlcyhwcm9wcywgY3VycmVuY3kpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICAge3Nob3VsZFJlbmRlckN1cnJlbmN5Q29udHJvbCAmJiAoXG4gICAgICAgICAgPExvY2FsaXplZElucHV0VG9nZ2xlXG4gICAgICAgICAgICBpY29uPXs8Q29pbnNJY29uIC8+fVxuICAgICAgICAgICAgb25DbGljaz17b25Mb2NhbGl6ZWRNb25leUlucHV0VG9nZ2xlfVxuICAgICAgICAgICAgaXNPcGVuPXthcmVDdXJyZW5jaWVzRXhwYW5kZWR9XG4gICAgICAgICAgICBpc0Rpc2FibGVkPXtcbiAgICAgICAgICAgICAgYXJlQ3VycmVuY2llc0V4cGFuZGVkICYmXG4gICAgICAgICAgICAgIEJvb2xlYW4oXG4gICAgICAgICAgICAgICAgaGFzRXJyb3JJblJlbWFpbmluZ0N1cnJlbmNpZXMgfHwgaGFzV2FybmluZ0luUmVtYWluaW5nQ3VycmVuY2llc1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzaG93TWVzc2FnZT17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLnNob3csIHtcbiAgICAgICAgICAgICAgcmVtYWluaW5nQ3VycmVuY2llczogY3VycmVuY2llcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBoaWRlTWVzc2FnZT17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmhpZGUsIHtcbiAgICAgICAgICAgICAgcmVtYWluaW5nQ3VycmVuY2llczogY3VycmVuY2llcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Db25zdHJhaW50cy5Ib3Jpem9udGFsPlxuICApO1xufTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5kaXNwbGF5TmFtZSA9ICdMb2NhbGl6ZWRNb25leUlucHV0JztcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5nZXRJZCA9IGdldElkO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmdldE5hbWUgPSBnZXROYW1lO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmRlZmF1bHRQcm9wcyA9IHtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6ICdzY2FsZScsXG59O1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmNvbnZlcnRUb01vbmV5VmFsdWVzID0gKFxuICB2YWx1ZXM6IFRWYWx1ZVtdLFxuICBsb2NhbGU6IHN0cmluZ1xuKTogQXJyYXk8VE1vbmV5VmFsdWUgfCBudWxsPiA9PlxuICBPYmplY3QudmFsdWVzKHZhbHVlcykubWFwPFRNb25leVZhbHVlIHwgbnVsbD4oKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIE1vbmV5SW5wdXQuY29udmVydFRvTW9uZXlWYWx1ZSh2YWx1ZSwgbG9jYWxlKTtcbiAgfSk7XG5cbkxvY2FsaXplZE1vbmV5SW5wdXQucGFyc2VNb25leVZhbHVlcyA9IChcbiAgbW9uZXlWYWx1ZXM6IFRNb25leVZhbHVlW10gPSBbXSxcbiAgbG9jYWxlOiBzdHJpbmdcbik6IFJlY29yZDxUQ3VycmVuY3lDb2RlLCBUVmFsdWU+ID0+XG4gIG1vbmV5VmFsdWVzLnJlZHVjZTxSZWNvcmQ8VEN1cnJlbmN5Q29kZSwgVFZhbHVlPj4oKGFsbFZhbHVlcywgbW9uZXlWYWx1ZSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWUobW9uZXlWYWx1ZSwgbG9jYWxlKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWxsVmFsdWVzLFxuICAgICAgW3ZhbHVlLmN1cnJlbmN5Q29kZV06IHZhbHVlLFxuICAgIH07XG4gIH0sIHt9IGFzIFJlY29yZDxUQ3VycmVuY3lDb2RlLCBUVmFsdWU+KTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5nZXRIaWdoUHJlY2lzaW9uQ3VycmVuY2llcyA9IChcbiAgdmFsdWVzOiBSZWNvcmQ8VEN1cnJlbmN5Q29kZSwgVFZhbHVlPixcbiAgbG9jYWxlOiBzdHJpbmdcbik6IFRDdXJyZW5jeUNvZGVbXSA9PiB7XG4gIGNvbnN0IHR5cGVkQ3VycmVuY3lDb2RlcyA9IE9iamVjdC5rZXlzKHZhbHVlcykgYXMgVEN1cnJlbmN5Q29kZVtdO1xuICByZXR1cm4gdHlwZWRDdXJyZW5jeUNvZGVzLmZpbHRlcigoY3VycmVuY3lDb2RlKSA9PlxuICAgIE1vbmV5SW5wdXQuaXNIaWdoUHJlY2lzaW9uKHZhbHVlc1tjdXJyZW5jeUNvZGVdLCBsb2NhbGUpXG4gICk7XG59O1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmdldEVtcHR5Q3VycmVuY2llcyA9IChcbiAgdmFsdWVzOiBSZWNvcmQ8VEN1cnJlbmN5Q29kZSwgVFZhbHVlPlxuKTogVEN1cnJlbmN5Q29kZVtdID0+IHtcbiAgY29uc3QgdHlwZWRDdXJyZW5jeUNvZGVzID0gT2JqZWN0LmtleXModmFsdWVzKSBhcyBUQ3VycmVuY3lDb2RlW107XG4gIHJldHVybiB0eXBlZEN1cnJlbmN5Q29kZXMuZmlsdGVyKChjdXJyZW5jeUNvZGUpID0+XG4gICAgTW9uZXlJbnB1dC5pc0VtcHR5KHZhbHVlc1tjdXJyZW5jeUNvZGVdKVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9jYWxpemVkTW9uZXlJbnB1dDtcbiJdfQ== */",
103
99
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
104
100
  };
105
101
 
@@ -117,16 +113,14 @@ var LocalizedInput = function LocalizedInput(props) {
117
113
  // might clear it using the knob, and then we can't parse the currency from
118
114
  // the input name anymore.
119
115
  //
120
- // eslint-disable-next-line no-param-reassign
121
116
  event.target.currency = props.currency;
122
- onChange(event);
117
+ onChange === null || onChange === void 0 ? void 0 : onChange(event);
123
118
  }, [props.currency, onChange]);
124
119
  return jsxRuntime.jsxs(Stack__default["default"], {
125
120
  scale: "xs",
126
121
  children: [jsxRuntime.jsx("div", {
127
122
  css: _ref,
128
123
  children: jsxRuntime.jsx(MoneyInput__default["default"], _objectSpread({
129
- id: props.id,
130
124
  name: props.name,
131
125
  value: props.value,
132
126
  onChange: handleChange,
@@ -143,26 +137,23 @@ var LocalizedInput = function LocalizedInput(props) {
143
137
  });
144
138
  };
145
139
 
146
- LocalizedInput.displayName = 'LocalizedInput';
147
140
  LocalizedInput.propTypes = process.env.NODE_ENV !== "production" ? {
148
- id: PropTypes__default["default"].string,
149
- name: PropTypes__default["default"].string,
150
- value: PropTypes__default["default"].shape({
151
- amount: PropTypes__default["default"].string.isRequired,
152
- currencyCode: PropTypes__default["default"].string.isRequired
153
- }).isRequired,
154
- onChange: PropTypes__default["default"].func,
155
- currency: PropTypes__default["default"].string.isRequired,
156
- onBlur: PropTypes__default["default"].func,
157
- onFocus: PropTypes__default["default"].func,
158
- isDisabled: PropTypes__default["default"].bool,
159
- isReadOnly: PropTypes__default["default"].bool,
160
- hasError: PropTypes__default["default"].bool,
161
- hasWarning: PropTypes__default["default"].bool,
162
- placeholder: PropTypes__default["default"].string,
163
- error: PropTypes__default["default"].node,
164
- warning: PropTypes__default["default"].node
141
+ id: _pt__default["default"].string,
142
+ name: _pt__default["default"].string,
143
+ value: _pt__default["default"].any.isRequired,
144
+ onChange: _pt__default["default"].func,
145
+ currency: _pt__default["default"].string.isRequired,
146
+ onBlur: _pt__default["default"].func,
147
+ onFocus: _pt__default["default"].func,
148
+ isDisabled: _pt__default["default"].bool,
149
+ isReadOnly: _pt__default["default"].bool,
150
+ hasError: _pt__default["default"].bool,
151
+ hasWarning: _pt__default["default"].bool,
152
+ placeholder: _pt__default["default"].string,
153
+ error: _pt__default["default"].node,
154
+ warning: _pt__default["default"].node
165
155
  } : {};
156
+ LocalizedInput.displayName = 'LocalizedInput';
166
157
 
167
158
  var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
168
159
  var intl = reactIntl.useIntl();
@@ -174,6 +165,9 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
174
165
  areCurrenciesExpanded = _useToggleState2[0],
175
166
  toggleCurrencies = _useToggleState2[1];
176
167
 
168
+ var onLocalizedMoneyInputToggle = react.useCallback(function () {
169
+ return toggleCurrencies();
170
+ }, [toggleCurrencies]);
177
171
  var id = hooks.useFieldId(props.id, sequentialId);
178
172
  var hasErrorInRemainingCurrencies = props.hasError || localizedUtils.getHasErrorOnRemainingLanguages(props.errors, props.selectedCurrency);
179
173
  var hasWarningInRemainingCurrencies = props.hasWarning || localizedUtils.getHasWarningOnRemainingLanguages(props.warnings, props.selectedCurrency);
@@ -188,6 +182,11 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
188
182
 
189
183
  var currencies = sortCurrencies(props.selectedCurrency, _Object$keys__default["default"](props.value));
190
184
  var shouldRenderCurrencyControl = currencies.length > 1 && !props.hideCurrencyExpansionControls;
185
+
186
+ if (props.hideCurrencyExpansionControls) {
187
+ process.env.NODE_ENV !== "production" ? utils.warning(typeof props.defaultExpandCurrencies !== 'boolean', 'LocalizedMoneyInput: "defaultExpandCurrencies" does not have any effect when "hideCurrencyExpansionControls" is set.') : void 0;
188
+ }
189
+
191
190
  return jsxRuntime.jsx(Constraints__default["default"].Horizontal, {
192
191
  max: props.horizontalConstraint,
193
192
  children: jsxRuntime.jsxs(Stack__default["default"], {
@@ -210,14 +209,13 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
210
209
  isReadOnly: props.isReadOnly,
211
210
  hasError: Boolean(props.hasError || props.errors && props.errors[currency]),
212
211
  hasWarning: Boolean(props.hasWarning || props.warnings && props.warnings[currency]),
213
- intl: intl,
214
212
  warning: props.warnings && props.warnings[currency],
215
213
  error: props.errors && props.errors[currency]
216
214
  }, localizedUtils.createLocalizedDataAttributes(props, currency)), currency);
217
215
  })
218
216
  }), shouldRenderCurrencyControl && jsxRuntime.jsx(inputUtils.LocalizedInputToggle, {
219
217
  icon: jsxRuntime.jsx(icons.CoinsIcon, {}),
220
- onClick: toggleCurrencies,
218
+ onClick: onLocalizedMoneyInputToggle,
221
219
  isOpen: areCurrenciesExpanded,
222
220
  isDisabled: areCurrenciesExpanded && Boolean(hasErrorInRemainingCurrencies || hasWarningInRemainingCurrencies),
223
221
  showMessage: intl.formatMessage(messages.show, {
@@ -231,44 +229,26 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
231
229
  });
232
230
  };
233
231
 
234
- LocalizedMoneyInput.displayName = 'LocalizedMoneyInput';
235
232
  LocalizedMoneyInput.propTypes = process.env.NODE_ENV !== "production" ? {
236
- id: PropTypes__default["default"].string,
237
- name: PropTypes__default["default"].string,
238
- // then input doesn't accept a "currencies" prop, instead all possible
239
- // currencies have to exist (with empty or filled strings) on the value:
240
- // { EUR: {amount: '12.00', currencyCode: 'EUR'}, USD: {amount: '', currencyCode: 'USD'}}
241
- value: PropTypes__default["default"].objectOf(PropTypes__default["default"].shape({
242
- amount: PropTypes__default["default"].string.isRequired,
243
- currencyCode: PropTypes__default["default"].string.isRequired
244
- })).isRequired,
245
- onChange: PropTypes__default["default"].func,
246
- selectedCurrency: PropTypes__default["default"].string.isRequired,
247
- onBlur: PropTypes__default["default"].func,
248
- onFocus: PropTypes__default["default"].func,
249
- hideCurrencyExpansionControls: PropTypes__default["default"].bool,
250
- defaultExpandCurrencies: function defaultExpandCurrencies(props, propName, componentName) {
251
- var _context2;
252
-
253
- if (props.hideCurrencyExpansionControls && typeof props[propName] === 'boolean') {
254
- throw new Error(commonTags.oneLine(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", ": \"", "\" does not have any effect when\n \"hideCurrencyExpansionControls\" is set.\n "])), componentName, propName));
255
- }
256
-
257
- for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
258
- rest[_key - 3] = arguments[_key];
259
- }
260
-
261
- return PropTypes__default["default"].bool.apply(PropTypes__default["default"], _concatInstanceProperty__default["default"](_context2 = [props, propName, componentName]).call(_context2, rest));
262
- },
263
- isDisabled: PropTypes__default["default"].bool,
264
- isReadOnly: PropTypes__default["default"].bool,
265
- placeholder: PropTypes__default["default"].objectOf(PropTypes__default["default"].string),
266
- horizontalConstraint: PropTypes__default["default"].oneOf([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 'scale', 'auto']),
267
- hasError: PropTypes__default["default"].bool,
268
- hasWarning: PropTypes__default["default"].bool,
269
- errors: PropTypes__default["default"].objectOf(PropTypes__default["default"].node),
270
- warnings: PropTypes__default["default"].objectOf(PropTypes__default["default"].node)
233
+ id: _pt__default["default"].string,
234
+ name: _pt__default["default"].string,
235
+ value: _pt__default["default"].objectOf(_pt__default["default"].any).isRequired,
236
+ onChange: _pt__default["default"].func,
237
+ selectedCurrency: _pt__default["default"].string.isRequired,
238
+ onBlur: _pt__default["default"].func,
239
+ onFocus: _pt__default["default"].func,
240
+ hideCurrencyExpansionControls: _pt__default["default"].bool,
241
+ defaultExpandCurrencies: _pt__default["default"].bool,
242
+ isDisabled: _pt__default["default"].bool,
243
+ isReadOnly: _pt__default["default"].bool,
244
+ placeholder: _pt__default["default"].objectOf(_pt__default["default"].string),
245
+ horizontalConstraint: _pt__default["default"].oneOf([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 'scale', 'auto']),
246
+ hasError: _pt__default["default"].bool,
247
+ hasWarning: _pt__default["default"].bool,
248
+ errors: _pt__default["default"].objectOf(_pt__default["default"].node),
249
+ warnings: _pt__default["default"].objectOf(_pt__default["default"].node)
271
250
  } : {};
251
+ LocalizedMoneyInput.displayName = 'LocalizedMoneyInput';
272
252
  LocalizedMoneyInput.getId = localizedUtils.getId;
273
253
  LocalizedMoneyInput.getName = localizedUtils.getName;
274
254
  LocalizedMoneyInput.defaultProps = {
@@ -276,37 +256,34 @@ LocalizedMoneyInput.defaultProps = {
276
256
  };
277
257
 
278
258
  LocalizedMoneyInput.convertToMoneyValues = function (values, locale) {
279
- var _context3;
259
+ var _context2;
280
260
 
281
- return _mapInstanceProperty__default["default"](_context3 = _Object$values__default["default"](values)).call(_context3, function (value) {
261
+ return _mapInstanceProperty__default["default"](_context2 = _Object$values__default["default"](values)).call(_context2, function (value) {
282
262
  return MoneyInput__default["default"].convertToMoneyValue(value, locale);
283
263
  });
284
264
  };
285
265
 
286
266
  LocalizedMoneyInput.parseMoneyValues = function () {
287
- var _context4;
288
-
289
267
  var moneyValues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
290
268
  var locale = arguments.length > 1 ? arguments[1] : undefined;
291
- return _reduceInstanceProperty__default["default"](_context4 = _mapInstanceProperty__default["default"](moneyValues).call(moneyValues, function (value) {
292
- return MoneyInput__default["default"].parseMoneyValue(value, locale);
293
- })).call(_context4, function (pairs, value) {
294
- return _objectSpread(_objectSpread({}, pairs), {}, _defineProperty({}, value.currencyCode, value));
269
+ return _reduceInstanceProperty__default["default"](moneyValues).call(moneyValues, function (allValues, moneyValue) {
270
+ var value = MoneyInput__default["default"].parseMoneyValue(moneyValue, locale);
271
+ return _objectSpread(_objectSpread({}, allValues), {}, _defineProperty({}, value.currencyCode, value));
295
272
  }, {});
296
273
  };
297
274
 
298
275
  LocalizedMoneyInput.getHighPrecisionCurrencies = function (values, locale) {
299
- var _context5;
276
+ var typedCurrencyCodes = _Object$keys__default["default"](values);
300
277
 
301
- return _filterInstanceProperty__default["default"](_context5 = _Object$keys__default["default"](values)).call(_context5, function (currencyCode) {
278
+ return _filterInstanceProperty__default["default"](typedCurrencyCodes).call(typedCurrencyCodes, function (currencyCode) {
302
279
  return MoneyInput__default["default"].isHighPrecision(values[currencyCode], locale);
303
280
  });
304
281
  };
305
282
 
306
283
  LocalizedMoneyInput.getEmptyCurrencies = function (values) {
307
- var _context6;
284
+ var typedCurrencyCodes = _Object$keys__default["default"](values);
308
285
 
309
- return _filterInstanceProperty__default["default"](_context6 = _Object$keys__default["default"](values)).call(_context6, function (currencyCode) {
286
+ return _filterInstanceProperty__default["default"](typedCurrencyCodes).call(typedCurrencyCodes, function (currencyCode) {
310
287
  return MoneyInput__default["default"].isEmpty(values[currencyCode]);
311
288
  });
312
289
  };
@@ -314,7 +291,7 @@ LocalizedMoneyInput.getEmptyCurrencies = function (values) {
314
291
  var LocalizedMoneyInput$1 = LocalizedMoneyInput;
315
292
 
316
293
  // NOTE: This string will be replaced on build time with the package version.
317
- var version = "13.0.3";
294
+ var version = "13.0.4";
318
295
 
319
296
  exports["default"] = LocalizedMoneyInput$1;
320
297
  exports.version = version;
@@ -8,10 +8,10 @@ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/in
8
8
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
9
9
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
10
10
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
11
- require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral');
12
11
  var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
13
12
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
14
13
  var _toConsumableArray = require('@babel/runtime-corejs3/helpers/toConsumableArray');
14
+ require('prop-types');
15
15
  var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
16
16
  var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
17
17
  var _sortInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/sort');
@@ -20,8 +20,6 @@ var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instan
20
20
  var _Object$values = require('@babel/runtime-corejs3/core-js-stable/object/values');
21
21
  var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
22
22
  var react = require('react');
23
- require('prop-types');
24
- require('common-tags');
25
23
  var reactIntl = require('react-intl');
26
24
  require('@emotion/react');
27
25
  var hooks = require('@commercetools-uikit/hooks');
@@ -73,7 +71,7 @@ var messages = reactIntl.defineMessages({
73
71
 
74
72
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
75
73
 
76
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context7, _context8; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context7 = ownKeys(Object(source), !0)).call(_context7, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context8 = ownKeys(Object(source))).call(_context8, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
74
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(source), !0)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
77
75
  var sequentialId = utils.createSequentialId('localized-money-input-'); // sorts the currencies with the following priority:
78
76
  // - The selected currency is placed first (e.g EUR)
79
77
  // - All other currencies follow, sorted alphabetically as well
@@ -107,16 +105,14 @@ var LocalizedInput = function LocalizedInput(props) {
107
105
  // might clear it using the knob, and then we can't parse the currency from
108
106
  // the input name anymore.
109
107
  //
110
- // eslint-disable-next-line no-param-reassign
111
108
  event.target.currency = props.currency;
112
- onChange(event);
109
+ onChange === null || onChange === void 0 ? void 0 : onChange(event);
113
110
  }, [props.currency, onChange]);
114
111
  return jsxRuntime.jsxs(Stack__default["default"], {
115
112
  scale: "xs",
116
113
  children: [jsxRuntime.jsx("div", {
117
114
  css: _ref,
118
115
  children: jsxRuntime.jsx(MoneyInput__default["default"], _objectSpread({
119
- id: props.id,
120
116
  name: props.name,
121
117
  value: props.value,
122
118
  onChange: handleChange,
@@ -133,8 +129,8 @@ var LocalizedInput = function LocalizedInput(props) {
133
129
  });
134
130
  };
135
131
 
136
- LocalizedInput.displayName = 'LocalizedInput';
137
132
  LocalizedInput.propTypes = {};
133
+ LocalizedInput.displayName = 'LocalizedInput';
138
134
 
139
135
  var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
140
136
  var intl = reactIntl.useIntl();
@@ -146,6 +142,9 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
146
142
  areCurrenciesExpanded = _useToggleState2[0],
147
143
  toggleCurrencies = _useToggleState2[1];
148
144
 
145
+ var onLocalizedMoneyInputToggle = react.useCallback(function () {
146
+ return toggleCurrencies();
147
+ }, [toggleCurrencies]);
149
148
  var id = hooks.useFieldId(props.id, sequentialId);
150
149
  var hasErrorInRemainingCurrencies = props.hasError || localizedUtils.getHasErrorOnRemainingLanguages(props.errors, props.selectedCurrency);
151
150
  var hasWarningInRemainingCurrencies = props.hasWarning || localizedUtils.getHasWarningOnRemainingLanguages(props.warnings, props.selectedCurrency);
@@ -160,6 +159,9 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
160
159
 
161
160
  var currencies = sortCurrencies(props.selectedCurrency, _Object$keys__default["default"](props.value));
162
161
  var shouldRenderCurrencyControl = currencies.length > 1 && !props.hideCurrencyExpansionControls;
162
+
163
+ if (props.hideCurrencyExpansionControls) ;
164
+
163
165
  return jsxRuntime.jsx(Constraints__default["default"].Horizontal, {
164
166
  max: props.horizontalConstraint,
165
167
  children: jsxRuntime.jsxs(Stack__default["default"], {
@@ -182,14 +184,13 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
182
184
  isReadOnly: props.isReadOnly,
183
185
  hasError: Boolean(props.hasError || props.errors && props.errors[currency]),
184
186
  hasWarning: Boolean(props.hasWarning || props.warnings && props.warnings[currency]),
185
- intl: intl,
186
187
  warning: props.warnings && props.warnings[currency],
187
188
  error: props.errors && props.errors[currency]
188
189
  }, localizedUtils.createLocalizedDataAttributes(props, currency)), currency);
189
190
  })
190
191
  }), shouldRenderCurrencyControl && jsxRuntime.jsx(inputUtils.LocalizedInputToggle, {
191
192
  icon: jsxRuntime.jsx(icons.CoinsIcon, {}),
192
- onClick: toggleCurrencies,
193
+ onClick: onLocalizedMoneyInputToggle,
193
194
  isOpen: areCurrenciesExpanded,
194
195
  isDisabled: areCurrenciesExpanded && Boolean(hasErrorInRemainingCurrencies || hasWarningInRemainingCurrencies),
195
196
  showMessage: intl.formatMessage(messages.show, {
@@ -203,8 +204,8 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
203
204
  });
204
205
  };
205
206
 
206
- LocalizedMoneyInput.displayName = 'LocalizedMoneyInput';
207
207
  LocalizedMoneyInput.propTypes = {};
208
+ LocalizedMoneyInput.displayName = 'LocalizedMoneyInput';
208
209
  LocalizedMoneyInput.getId = localizedUtils.getId;
209
210
  LocalizedMoneyInput.getName = localizedUtils.getName;
210
211
  LocalizedMoneyInput.defaultProps = {
@@ -212,37 +213,34 @@ LocalizedMoneyInput.defaultProps = {
212
213
  };
213
214
 
214
215
  LocalizedMoneyInput.convertToMoneyValues = function (values, locale) {
215
- var _context3;
216
+ var _context2;
216
217
 
217
- return _mapInstanceProperty__default["default"](_context3 = _Object$values__default["default"](values)).call(_context3, function (value) {
218
+ return _mapInstanceProperty__default["default"](_context2 = _Object$values__default["default"](values)).call(_context2, function (value) {
218
219
  return MoneyInput__default["default"].convertToMoneyValue(value, locale);
219
220
  });
220
221
  };
221
222
 
222
223
  LocalizedMoneyInput.parseMoneyValues = function () {
223
- var _context4;
224
-
225
224
  var moneyValues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
226
225
  var locale = arguments.length > 1 ? arguments[1] : undefined;
227
- return _reduceInstanceProperty__default["default"](_context4 = _mapInstanceProperty__default["default"](moneyValues).call(moneyValues, function (value) {
228
- return MoneyInput__default["default"].parseMoneyValue(value, locale);
229
- })).call(_context4, function (pairs, value) {
230
- return _objectSpread(_objectSpread({}, pairs), {}, _defineProperty({}, value.currencyCode, value));
226
+ return _reduceInstanceProperty__default["default"](moneyValues).call(moneyValues, function (allValues, moneyValue) {
227
+ var value = MoneyInput__default["default"].parseMoneyValue(moneyValue, locale);
228
+ return _objectSpread(_objectSpread({}, allValues), {}, _defineProperty({}, value.currencyCode, value));
231
229
  }, {});
232
230
  };
233
231
 
234
232
  LocalizedMoneyInput.getHighPrecisionCurrencies = function (values, locale) {
235
- var _context5;
233
+ var typedCurrencyCodes = _Object$keys__default["default"](values);
236
234
 
237
- return _filterInstanceProperty__default["default"](_context5 = _Object$keys__default["default"](values)).call(_context5, function (currencyCode) {
235
+ return _filterInstanceProperty__default["default"](typedCurrencyCodes).call(typedCurrencyCodes, function (currencyCode) {
238
236
  return MoneyInput__default["default"].isHighPrecision(values[currencyCode], locale);
239
237
  });
240
238
  };
241
239
 
242
240
  LocalizedMoneyInput.getEmptyCurrencies = function (values) {
243
- var _context6;
241
+ var typedCurrencyCodes = _Object$keys__default["default"](values);
244
242
 
245
- return _filterInstanceProperty__default["default"](_context6 = _Object$keys__default["default"](values)).call(_context6, function (currencyCode) {
243
+ return _filterInstanceProperty__default["default"](typedCurrencyCodes).call(typedCurrencyCodes, function (currencyCode) {
246
244
  return MoneyInput__default["default"].isEmpty(values[currencyCode]);
247
245
  });
248
246
  };
@@ -250,7 +248,7 @@ LocalizedMoneyInput.getEmptyCurrencies = function (values) {
250
248
  var LocalizedMoneyInput$1 = LocalizedMoneyInput;
251
249
 
252
250
  // NOTE: This string will be replaced on build time with the package version.
253
- var version = "13.0.3";
251
+ var version = "13.0.4";
254
252
 
255
253
  exports["default"] = LocalizedMoneyInput$1;
256
254
  exports.version = version;
@@ -4,10 +4,10 @@ import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/inst
4
4
  import _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors';
5
5
  import _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/object/define-properties';
6
6
  import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';
7
- import _taggedTemplateLiteral from '@babel/runtime-corejs3/helpers/esm/taggedTemplateLiteral';
8
7
  import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
9
8
  import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
10
9
  import _toConsumableArray from '@babel/runtime-corejs3/helpers/esm/toConsumableArray';
10
+ import _pt from 'prop-types';
11
11
  import _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';
12
12
  import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
13
13
  import _sortInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/sort';
@@ -16,8 +16,6 @@ import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance
16
16
  import _Object$values from '@babel/runtime-corejs3/core-js-stable/object/values';
17
17
  import _reduceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reduce';
18
18
  import { useCallback } from 'react';
19
- import PropTypes from 'prop-types';
20
- import { oneLine } from 'common-tags';
21
19
  import { defineMessages, useIntl } from 'react-intl';
22
20
  import '@emotion/react';
23
21
  import { useToggleState, useFieldId } from '@commercetools-uikit/hooks';
@@ -26,7 +24,7 @@ import Stack from '@commercetools-uikit/spacings-stack';
26
24
  import Constraints from '@commercetools-uikit/constraints';
27
25
  import { CoinsIcon } from '@commercetools-uikit/icons';
28
26
  import { getHasErrorOnRemainingLanguages, getHasWarningOnRemainingLanguages, createLocalizedDataAttributes, getId, getName } from '@commercetools-uikit/localized-utils';
29
- import { createSequentialId, filterDataAttributes } from '@commercetools-uikit/utils';
27
+ import { createSequentialId, warning, filterDataAttributes } from '@commercetools-uikit/utils';
30
28
  import { LocalizedInputToggle } from '@commercetools-uikit/input-utils';
31
29
  import { jsx, jsxs } from '@emotion/react/jsx-runtime';
32
30
 
@@ -48,11 +46,9 @@ var messages = defineMessages({
48
46
  }
49
47
  });
50
48
 
51
- var _templateObject;
52
-
53
49
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
54
50
 
55
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context7, _context8; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context7 = ownKeys(Object(source), !0)).call(_context7, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context8 = ownKeys(Object(source))).call(_context8, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
51
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context3 = ownKeys(Object(source), !0)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
56
52
 
57
53
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
58
54
  var sequentialId = createSequentialId('localized-money-input-'); // sorts the currencies with the following priority:
@@ -75,7 +71,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
75
71
  } : {
76
72
  name: "1ysn02y-LocalizedInput",
77
73
  styles: "width:100%;position:relative;display:flex;label:LocalizedInput;",
78
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvY2FsaXplZC1tb25leS1pbnB1dC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0RGdCIiwiZmlsZSI6ImxvY2FsaXplZC1tb25leS1pbnB1dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IG9uZUxpbmUgfSBmcm9tICdjb21tb24tdGFncyc7XG5pbXBvcnQgeyB1c2VJbnRsIH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyB1c2VUb2dnbGVTdGF0ZSwgdXNlRmllbGRJZCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2hvb2tzJztcbmltcG9ydCBNb25leUlucHV0IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L21vbmV5LWlucHV0JztcbmltcG9ydCBTdGFjayBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9zcGFjaW5ncy1zdGFjayc7XG5pbXBvcnQgQ29uc3RyYWludHMgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvY29uc3RyYWludHMnO1xuaW1wb3J0IHsgQ29pbnNJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlTG9jYWxpemVkRGF0YUF0dHJpYnV0ZXMsXG4gIGdldEhhc0Vycm9yT25SZW1haW5pbmdMYW5ndWFnZXMsXG4gIGdldEhhc1dhcm5pbmdPblJlbWFpbmluZ0xhbmd1YWdlcyxcbiAgZ2V0SWQsXG4gIGdldE5hbWUsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2xvY2FsaXplZC11dGlscyc7XG5pbXBvcnQge1xuICBjcmVhdGVTZXF1ZW50aWFsSWQsXG4gIGZpbHRlckRhdGFBdHRyaWJ1dGVzLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC91dGlscyc7XG5pbXBvcnQgeyBMb2NhbGl6ZWRJbnB1dFRvZ2dsZSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2lucHV0LXV0aWxzJztcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuL21lc3NhZ2VzJztcblxuY29uc3Qgc2VxdWVudGlhbElkID0gY3JlYXRlU2VxdWVudGlhbElkKCdsb2NhbGl6ZWQtbW9uZXktaW5wdXQtJyk7XG5cbi8vIHNvcnRzIHRoZSBjdXJyZW5jaWVzIHdpdGggdGhlIGZvbGxvd2luZyBwcmlvcml0eTpcbi8vIC0gVGhlIHNlbGVjdGVkIGN1cnJlbmN5IGlzIHBsYWNlZCBmaXJzdCAoZS5nIEVVUilcbi8vIC0gQWxsIG90aGVyIGN1cnJlbmNpZXMgZm9sbG93LCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgYXMgd2VsbFxuZXhwb3J0IGNvbnN0IHNvcnRDdXJyZW5jaWVzID0gKHNlbGVjdGVkQ3VycmVuY3ksIGFsbEN1cnJlbmNpZXMpID0+IHtcbiAgY29uc3QgcmVtYWluaW5nQ3VycmVuY2llcyA9IGFsbEN1cnJlbmNpZXMuZmlsdGVyKFxuICAgIChjdXJyZW5jeSkgPT4gY3VycmVuY3kgIT09IHNlbGVjdGVkQ3VycmVuY3lcbiAgKTtcbiAgcmV0dXJuIFtzZWxlY3RlZEN1cnJlbmN5LCAuLi5yZW1haW5pbmdDdXJyZW5jaWVzLnNvcnQoKV07XG59O1xuXG5jb25zdCBMb2NhbGl6ZWRJbnB1dCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IG9uQ2hhbmdlIH0gPSBwcm9wcztcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBXZSBtYW5pcHVsYXRlIHRoZSBldmVudCB0byBhZGQgdGhlIGN1cnJlbmN5IHRvIHRoZSB0YXJnZXQuXG4gICAgICAvLyBUaGF0IHdheSB0aGUgdXNlcnMgIGNhbiByZWFkXG4gICAgICAvLyBldmVudC50YXJnZXQuY3VycmVuY3kgYW5kIGV2ZW50LnRhcmdldC52YWx1ZSB0byBkZXRlcm1pbmUgdGhlIG5leHQgdmFsdWUuXG4gICAgICAvL1xuICAgICAgLy8gV2Ugb25seSBuZWVkIHRoaXMgaW5mb3JtYXRpb24gZm9yIHRoZSBzdG9yeSwgdGhlIE1DIGFwcGxpY2F0aW9uIGNvZGUgd2lsbFxuICAgICAgLy8gbmV2ZXIgbmVlZCB0byBhY2Nlc3MgdGhlIGluZm9ybWF0aW9uIGluIHN1Y2ggYW4gaW5jb252ZW5pZW50IHdheSwgYXNcbiAgICAgIC8vIEZvcm1payBjYW4gZGVhbCB3aXRoIGEgbmFtZSBsaWtlIFwiZm9vLmVuXCIgYW5kIHNldHMgdGhlIHZhbHVlIGNvcnJlY3RseS5cbiAgICAgIC8vIFdlIGNhbid0IHVzZSB0aGlzIGFzIHdlIGFyZW4ndCBndWFyYW50ZWVkIGEgbmFtZSBpbiB0aGUgc3RvcnkgYXMgdGhlIHVzZXJcbiAgICAgIC8vIG1pZ2h0IGNsZWFyIGl0IHVzaW5nIHRoZSBrbm9iLCBhbmQgdGhlbiB3ZSBjYW4ndCBwYXJzZSB0aGUgY3VycmVuY3kgZnJvbVxuICAgICAgLy8gdGhlIGlucHV0IG5hbWUgYW55bW9yZS5cbiAgICAgIC8vXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIGV2ZW50LnRhcmdldC5jdXJyZW5jeSA9IHByb3BzLmN1cnJlbmN5O1xuICAgICAgb25DaGFuZ2UoZXZlbnQpO1xuICAgIH0sXG4gICAgW3Byb3BzLmN1cnJlbmN5LCBvbkNoYW5nZV1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8U3RhY2sgc2NhbGU9XCJ4c1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYH1cbiAgICAgID5cbiAgICAgICAgPE1vbmV5SW5wdXRcbiAgICAgICAgICBpZD17cHJvcHMuaWR9XG4gICAgICAgICAgbmFtZT17cHJvcHMubmFtZX1cbiAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e3Byb3BzLm9uQmx1cn1cbiAgICAgICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgIGlzUmVhZE9ubHk9e3Byb3BzLmlzUmVhZE9ubHl9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgIGhhc0Vycm9yPXtwcm9wcy5oYXNFcnJvcn1cbiAgICAgICAgICBoYXNXYXJuaW5nPXtwcm9wcy5oYXNXYXJuaW5nfVxuICAgICAgICAgIHsuLi5maWx0ZXJEYXRhQXR0cmlidXRlcyhwcm9wcyl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHsocHJvcHMuZXJyb3IgfHwgcHJvcHMud2FybmluZykgJiYgKFxuICAgICAgICA8ZGl2Pntwcm9wcy5lcnJvciA/IHByb3BzLmVycm9yIDogcHJvcHMud2FybmluZ308L2Rpdj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cbkxvY2FsaXplZElucHV0LmRpc3BsYXlOYW1lID0gJ0xvY2FsaXplZElucHV0JztcblxuTG9jYWxpemVkSW5wdXQucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmFsdWU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYW1vdW50OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgY3VycmVuY3lDb2RlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLmlzUmVxdWlyZWQsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbCxcbiAgaGFzRXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoYXNXYXJuaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGVycm9yOiBQcm9wVHlwZXMubm9kZSxcbiAgd2FybmluZzogUHJvcFR5cGVzLm5vZGUsXG59O1xuXG5jb25zdCBMb2NhbGl6ZWRNb25leUlucHV0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG5cbiAgY29uc3QgZGVmYXVsdEV4cGFuc2lvblN0YXRlID1cbiAgICBwcm9wcy5oaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9scyB8fFxuICAgIHByb3BzLmRlZmF1bHRFeHBhbmRDdXJyZW5jaWVzIHx8XG4gICAgLy8gZGVmYXVsdCB0byBgZmFsc2VgLCBiZWNhdXNlIHVzZVRvZ2dsZVN0YXRlIGRlZmF1bHRzIHRvIGB0cnVlYFxuICAgIGZhbHNlO1xuXG4gIGNvbnN0IFthcmVDdXJyZW5jaWVzRXhwYW5kZWQsIHRvZ2dsZUN1cnJlbmNpZXNdID0gdXNlVG9nZ2xlU3RhdGUoXG4gICAgZGVmYXVsdEV4cGFuc2lvblN0YXRlXG4gICk7XG5cbiAgY29uc3QgaWQgPSB1c2VGaWVsZElkKHByb3BzLmlkLCBzZXF1ZW50aWFsSWQpO1xuXG4gIGNvbnN0IGhhc0Vycm9ySW5SZW1haW5pbmdDdXJyZW5jaWVzID1cbiAgICBwcm9wcy5oYXNFcnJvciB8fFxuICAgIGdldEhhc0Vycm9yT25SZW1haW5pbmdMYW5ndWFnZXMocHJvcHMuZXJyb3JzLCBwcm9wcy5zZWxlY3RlZEN1cnJlbmN5KTtcblxuICBjb25zdCBoYXNXYXJuaW5nSW5SZW1haW5pbmdDdXJyZW5jaWVzID1cbiAgICBwcm9wcy5oYXNXYXJuaW5nIHx8XG4gICAgZ2V0SGFzV2FybmluZ09uUmVtYWluaW5nTGFuZ3VhZ2VzKHByb3BzLndhcm5pbmdzLCBwcm9wcy5zZWxlY3RlZEN1cnJlbmN5KTtcblxuICBpZiAoaGFzRXJyb3JJblJlbWFpbmluZ0N1cnJlbmNpZXMgfHwgaGFzV2FybmluZ0luUmVtYWluaW5nQ3VycmVuY2llcykge1xuICAgIC8vIHRoaXMgdXBkYXRlIHdpdGhpbiByZW5kZXIgcmVwbGFjZXMgdGhlIG9sZCBgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzYCBmdW5jdGlvbmFsaXR5XG4gICAgLy8gaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2hvb2tzLWZhcS5odG1sI2hvdy1kby1pLWltcGxlbWVudC1nZXRkZXJpdmVkc3RhdGVmcm9tcHJvcHNcbiAgICBpZiAoIWFyZUN1cnJlbmNpZXNFeHBhbmRlZCkge1xuICAgICAgdG9nZ2xlQ3VycmVuY2llcygpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGN1cnJlbmNpZXMgPSBzb3J0Q3VycmVuY2llcyhcbiAgICBwcm9wcy5zZWxlY3RlZEN1cnJlbmN5LFxuICAgIE9iamVjdC5rZXlzKHByb3BzLnZhbHVlKVxuICApO1xuXG4gIGNvbnN0IHNob3VsZFJlbmRlckN1cnJlbmN5Q29udHJvbCA9XG4gICAgY3VycmVuY2llcy5sZW5ndGggPiAxICYmICFwcm9wcy5oaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9scztcblxuICByZXR1cm4gKFxuICAgIDxDb25zdHJhaW50cy5Ib3Jpem9udGFsIG1heD17cHJvcHMuaG9yaXpvbnRhbENvbnN0cmFpbnR9PlxuICAgICAgPFN0YWNrIHNjYWxlPVwieHNcIj5cbiAgICAgICAgPFN0YWNrIHNjYWxlPVwic1wiPlxuICAgICAgICAgIHtjdXJyZW5jaWVzLm1hcCgoY3VycmVuY3ksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0ZpcnN0Q3VycmVuY3kgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgICAgIGlmICghaXNGaXJzdEN1cnJlbmN5ICYmICFhcmVDdXJyZW5jaWVzRXhwYW5kZWQpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8TG9jYWxpemVkSW5wdXRcbiAgICAgICAgICAgICAgICBrZXk9e2N1cnJlbmN5fVxuICAgICAgICAgICAgICAgIGlkPXtMb2NhbGl6ZWRNb25leUlucHV0LmdldElkKGlkLCBjdXJyZW5jeSl9XG4gICAgICAgICAgICAgICAgbmFtZT17TG9jYWxpemVkTW9uZXlJbnB1dC5nZXROYW1lKHByb3BzLm5hbWUsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWVbY3VycmVuY3ldfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtwcm9wcy5vbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBjdXJyZW5jeT17Y3VycmVuY3l9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e1xuICAgICAgICAgICAgICAgICAgcHJvcHMucGxhY2Vob2xkZXIgPyBwcm9wcy5wbGFjZWhvbGRlcltjdXJyZW5jeV0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25CbHVyPXtwcm9wcy5vbkJsdXJ9XG4gICAgICAgICAgICAgICAgb25Gb2N1cz17cHJvcHMub25Gb2N1c31cbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgICAgICAgIGlzUmVhZE9ubHk9e3Byb3BzLmlzUmVhZE9ubHl9XG4gICAgICAgICAgICAgICAgaGFzRXJyb3I9e0Jvb2xlYW4oXG4gICAgICAgICAgICAgICAgICBwcm9wcy5oYXNFcnJvciB8fCAocHJvcHMuZXJyb3JzICYmIHByb3BzLmVycm9yc1tjdXJyZW5jeV0pXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICBoYXNXYXJuaW5nPXtCb29sZWFuKFxuICAgICAgICAgICAgICAgICAgcHJvcHMuaGFzV2FybmluZyB8fFxuICAgICAgICAgICAgICAgICAgICAocHJvcHMud2FybmluZ3MgJiYgcHJvcHMud2FybmluZ3NbY3VycmVuY3ldKVxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgaW50bD17aW50bH1cbiAgICAgICAgICAgICAgICB3YXJuaW5nPXtwcm9wcy53YXJuaW5ncyAmJiBwcm9wcy53YXJuaW5nc1tjdXJyZW5jeV19XG4gICAgICAgICAgICAgICAgZXJyb3I9e3Byb3BzLmVycm9ycyAmJiBwcm9wcy5lcnJvcnNbY3VycmVuY3ldfVxuICAgICAgICAgICAgICAgIHsuLi5jcmVhdGVMb2NhbGl6ZWREYXRhQXR0cmlidXRlcyhwcm9wcywgY3VycmVuY3kpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICAge3Nob3VsZFJlbmRlckN1cnJlbmN5Q29udHJvbCAmJiAoXG4gICAgICAgICAgPExvY2FsaXplZElucHV0VG9nZ2xlXG4gICAgICAgICAgICBpY29uPXs8Q29pbnNJY29uIC8+fVxuICAgICAgICAgICAgb25DbGljaz17dG9nZ2xlQ3VycmVuY2llc31cbiAgICAgICAgICAgIGlzT3Blbj17YXJlQ3VycmVuY2llc0V4cGFuZGVkfVxuICAgICAgICAgICAgaXNEaXNhYmxlZD17XG4gICAgICAgICAgICAgIGFyZUN1cnJlbmNpZXNFeHBhbmRlZCAmJlxuICAgICAgICAgICAgICBCb29sZWFuKFxuICAgICAgICAgICAgICAgIGhhc0Vycm9ySW5SZW1haW5pbmdDdXJyZW5jaWVzIHx8IGhhc1dhcm5pbmdJblJlbWFpbmluZ0N1cnJlbmNpZXNcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hvd01lc3NhZ2U9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5zaG93LCB7XG4gICAgICAgICAgICAgIHJlbWFpbmluZ0N1cnJlbmNpZXM6IGN1cnJlbmNpZXMubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgaGlkZU1lc3NhZ2U9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5oaWRlLCB7XG4gICAgICAgICAgICAgIHJlbWFpbmluZ0N1cnJlbmNpZXM6IGN1cnJlbmNpZXMubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0YWNrPlxuICAgIDwvQ29uc3RyYWludHMuSG9yaXpvbnRhbD5cbiAgKTtcbn07XG5cbkxvY2FsaXplZE1vbmV5SW5wdXQuZGlzcGxheU5hbWUgPSAnTG9jYWxpemVkTW9uZXlJbnB1dCc7XG5cbkxvY2FsaXplZE1vbmV5SW5wdXQucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLy8gdGhlbiBpbnB1dCBkb2Vzbid0IGFjY2VwdCBhIFwiY3VycmVuY2llc1wiIHByb3AsIGluc3RlYWQgYWxsIHBvc3NpYmxlXG4gIC8vIGN1cnJlbmNpZXMgaGF2ZSB0byBleGlzdCAod2l0aCBlbXB0eSBvciBmaWxsZWQgc3RyaW5ncykgb24gdGhlIHZhbHVlOlxuICAvLyB7IEVVUjoge2Ftb3VudDogJzEyLjAwJywgY3VycmVuY3lDb2RlOiAnRVVSJ30sIFVTRDoge2Ftb3VudDogJycsIGN1cnJlbmN5Q29kZTogJ1VTRCd9fVxuICB2YWx1ZTogUHJvcFR5cGVzLm9iamVjdE9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBhbW91bnQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGN1cnJlbmN5Q29kZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIH0pXG4gICkuaXNSZXF1aXJlZCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBzZWxlY3RlZEN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICBoaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9sczogUHJvcFR5cGVzLmJvb2wsXG4gIGRlZmF1bHRFeHBhbmRDdXJyZW5jaWVzOiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCAuLi5yZXN0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgcHJvcHMuaGlkZUN1cnJlbmN5RXhwYW5zaW9uQ29udHJvbHMgJiZcbiAgICAgIHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gPT09ICdib29sZWFuJ1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBvbmVMaW5lYFxuICAgICAgICAgICR7Y29tcG9uZW50TmFtZX06IFwiJHtwcm9wTmFtZX1cIiBkb2VzIG5vdCBoYXZlIGFueSBlZmZlY3Qgd2hlblxuICAgICAgICAgIFwiaGlkZUN1cnJlbmN5RXhwYW5zaW9uQ29udHJvbHNcIiBpcyBzZXQuXG4gICAgICAgIGBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBQcm9wVHlwZXMuYm9vbChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIC4uLnJlc3QpO1xuICB9LFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLnN0cmluZyksXG4gIGhvcml6b250YWxDb25zdHJhaW50OiBQcm9wVHlwZXMub25lT2YoW1xuICAgIDMsXG4gICAgNCxcbiAgICA1LFxuICAgIDYsXG4gICAgNyxcbiAgICA4LFxuICAgIDksXG4gICAgMTAsXG4gICAgMTEsXG4gICAgMTIsXG4gICAgMTMsXG4gICAgMTQsXG4gICAgMTUsXG4gICAgMTYsXG4gICAgJ3NjYWxlJyxcbiAgICAnYXV0bycsXG4gIF0pLFxuICBoYXNFcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhhc1dhcm5pbmc6IFByb3BUeXBlcy5ib29sLFxuICBlcnJvcnM6IFByb3BUeXBlcy5vYmplY3RPZihQcm9wVHlwZXMubm9kZSksXG4gIHdhcm5pbmdzOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLm5vZGUpLFxufTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5nZXRJZCA9IGdldElkO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmdldE5hbWUgPSBnZXROYW1lO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmRlZmF1bHRQcm9wcyA9IHtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6ICdzY2FsZScsXG59O1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmNvbnZlcnRUb01vbmV5VmFsdWVzID0gKHZhbHVlcywgbG9jYWxlKSA9PlxuICBPYmplY3QudmFsdWVzKHZhbHVlcykubWFwKCh2YWx1ZSkgPT5cbiAgICBNb25leUlucHV0LmNvbnZlcnRUb01vbmV5VmFsdWUodmFsdWUsIGxvY2FsZSlcbiAgKTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWVzID0gKG1vbmV5VmFsdWVzID0gW10sIGxvY2FsZSkgPT5cbiAgbW9uZXlWYWx1ZXNcbiAgICAubWFwKCh2YWx1ZSkgPT4gTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWUodmFsdWUsIGxvY2FsZSkpXG4gICAgLnJlZHVjZShcbiAgICAgIChwYWlycywgdmFsdWUpID0+ICh7XG4gICAgICAgIC4uLnBhaXJzLFxuICAgICAgICBbdmFsdWUuY3VycmVuY3lDb2RlXTogdmFsdWUsXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5nZXRIaWdoUHJlY2lzaW9uQ3VycmVuY2llcyA9ICh2YWx1ZXMsIGxvY2FsZSkgPT5cbiAgT2JqZWN0LmtleXModmFsdWVzKS5maWx0ZXIoKGN1cnJlbmN5Q29kZSkgPT5cbiAgICBNb25leUlucHV0LmlzSGlnaFByZWNpc2lvbih2YWx1ZXNbY3VycmVuY3lDb2RlXSwgbG9jYWxlKVxuICApO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmdldEVtcHR5Q3VycmVuY2llcyA9ICh2YWx1ZXMpID0+XG4gIE9iamVjdC5rZXlzKHZhbHVlcykuZmlsdGVyKChjdXJyZW5jeUNvZGUpID0+XG4gICAgTW9uZXlJbnB1dC5pc0VtcHR5KHZhbHVlc1tjdXJyZW5jeUNvZGVdKVxuICApO1xuXG5leHBvcnQgZGVmYXVsdCBMb2NhbGl6ZWRNb25leUlucHV0O1xuIl19 */",
74
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvY2FsaXplZC1tb25leS1pbnB1dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd09nQiIsImZpbGUiOiJsb2NhbGl6ZWQtbW9uZXktaW5wdXQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHR5cGUgRm9jdXNFdmVudEhhbmRsZXIsXG4gIHR5cGUgQ2hhbmdlRXZlbnRIYW5kbGVyLFxuICB0eXBlIFJlYWN0Tm9kZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgdXNlVG9nZ2xlU3RhdGUsIHVzZUZpZWxkSWQgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9ob29rcyc7XG5pbXBvcnQgTW9uZXlJbnB1dCwge1xuICB0eXBlIFRDdXJyZW5jeUNvZGUsXG4gIHR5cGUgVE1vbmV5VmFsdWUsXG4gIHR5cGUgVFZhbHVlLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9tb25leS1pbnB1dCc7XG5pbXBvcnQgU3RhY2sgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc3BhY2luZ3Mtc3RhY2snO1xuaW1wb3J0IENvbnN0cmFpbnRzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2NvbnN0cmFpbnRzJztcbmltcG9ydCB7IENvaW5zSWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCB7XG4gIGNyZWF0ZUxvY2FsaXplZERhdGFBdHRyaWJ1dGVzLFxuICBnZXRIYXNFcnJvck9uUmVtYWluaW5nTGFuZ3VhZ2VzLFxuICBnZXRIYXNXYXJuaW5nT25SZW1haW5pbmdMYW5ndWFnZXMsXG4gIGdldElkLFxuICBnZXROYW1lLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9sb2NhbGl6ZWQtdXRpbHMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlU2VxdWVudGlhbElkLFxuICBmaWx0ZXJEYXRhQXR0cmlidXRlcyxcbiAgd2FybmluZyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvdXRpbHMnO1xuaW1wb3J0IHsgTG9jYWxpemVkSW5wdXRUb2dnbGUgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pbnB1dC11dGlscyc7XG5pbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi9tZXNzYWdlcyc7XG5cbnR5cGUgVEV2ZW50ID0ge1xuICB0YXJnZXQ6IHtcbiAgICBpZD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsO1xuICB9O1xufTtcblxudHlwZSBUTG9jYWxpemVkTW9uZXlJbnB1dFByb3BzID0ge1xuICAvKipcbiAgICogVXNlZCBhcyBIVE1MIGlkIHByb3BlcnR5LlxuICAgKi9cbiAgaWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVzZWQgdG8gY3JlYXRlIGEgSFRNTCBgbmFtZWAgcHJvcGVydHkgZm9yIHRoZSBhbW91bnQgaW5wdXQgZmllbGQgKGAke25hbWV9LmFtb3VudGApLlxuICAgKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIHZhbHVlIG9mIHBvc3NpYmxlIGN1cnJlbmN5XG4gICAqIDxici8+XG4gICAqIHRoZSBpbnB1dCBkb2Vzbid0IGFjY2VwdCBhIFwiY3VycmVuY2llc1wiIHByb3AsIGluc3RlYWQgYWxsIHBvc3NpYmxlXG4gICAqIGN1cnJlbmNpZXMgaGF2ZSB0byBleGlzdCAod2l0aCBlbXB0eSBvciBmaWxsZWQgc3RyaW5ncykgb24gdGhlIHZhbHVlOlxuICAgKiB7IEVVUjoge2Ftb3VudDogJzEyLjAwJywgY3VycmVuY3lDb2RlOiAnRVVSJ30sIFVTRDoge2Ftb3VudDogJycsIGN1cnJlbmN5Q29kZTogJ1VTRCd9fVxuICAgKi9cbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIFRWYWx1ZT47XG4gIC8qKlxuICAgKiBDYWxsZWQgd2l0aCB0aGUgZXZlbnQgb2YgdGhlIGlucHV0LlxuICAgKi9cbiAgb25DaGFuZ2U/OiBDaGFuZ2VFdmVudEhhbmRsZXI7XG4gIC8qKlxuICAgKiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGN1cnJlbmN5XG4gICAqL1xuICBzZWxlY3RlZEN1cnJlbmN5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBpbnB1dCBpcyBibHVycmVkXG4gICAqL1xuICBvbkJsdXI/OiAoZXZlbnQ6IFRFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IGlzIGZvY3VzZWRcbiAgICovXG4gIG9uRm9jdXM/OiBGb2N1c0V2ZW50SGFuZGxlcjtcbiAgLyoqXG4gICAqIFdpbGwgaGlkZSB0aGUgY3VycmVuY3kgZXhwYW5zaW9uIGNvbnRyb2xzIHdoZW4gc2V0IHRvIGB0cnVlYC4gQWxsIGN1cnJlbmNpZXMgd2lsbCBiZSBzaG93biB3aGVuIHNldCB0byBgdHJ1ZWAuXG4gICAqL1xuICBoaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9scz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIG9uZSBvciBhbGwgY3VycmVuY2lycyBhcmUgdmlzaWJsZSBieSBkZWZhdWx0XG4gICAqL1xuICBkZWZhdWx0RXhwYW5kQ3VycmVuY2llcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgaW5wdXQgY2Fubm90IGJlIG1vZGlmaWVkIChlLmcgbm90IGF1dGhvcml6ZWQsIG9yIGNoYW5nZXMgY3VycmVudGx5IHNhdmluZykuXG4gICAqL1xuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBmaWVsZCBpcyBkaXNwbGF5aW5nIHJlYWQtb25seSBjb250ZW50XG4gICAqL1xuICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBpbnB1dFxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKipcbiAgICogSG9yaXpvbnRhbCBzaXplIGxpbWl0IG9mIHRoZSBpbnB1dCBmaWVsZHMuXG4gICAqL1xuICBob3Jpem9udGFsQ29uc3RyYWludD86XG4gICAgfCAzXG4gICAgfCA0XG4gICAgfCA1XG4gICAgfCA2XG4gICAgfCA3XG4gICAgfCA4XG4gICAgfCA5XG4gICAgfCAxMFxuICAgIHwgMTFcbiAgICB8IDEyXG4gICAgfCAxM1xuICAgIHwgMTRcbiAgICB8IDE1XG4gICAgfCAxNlxuICAgIHwgJ3NjYWxlJ1xuICAgIHwgJ2F1dG8nO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgaW5wdXQgaGFzIGVycm9yc1xuICAgKi9cbiAgaGFzRXJyb3I/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbCB0byBpbmRpY2F0ZSBvbiB0aGUgaW5wdXQgaWYgdGhlcmUgYXJlIHZhbHVlcyB0aGF0IGFyZSBwb3RlbnRpYWxseSBpbnZhbGlkXG4gICAqL1xuICBoYXNXYXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEEgbWFwIG9mIGVycm9ycy4gRXJyb3IgbWVzc2FnZXMgZm9yIGtub3duIGVycm9ycyBhcmUgcmVuZGVyZWQgYXV0b21hdGljYWxseS5cbiAgICogPGJyPlxuICAgKiBVbmtub3duIGVycm9ycyB3aWxsIGJlIGZvcndhcmRlZCB0byBgcmVuZGVyRXJyb3JgXG4gICAqL1xuICBlcnJvcnM/OiBSZWNvcmQ8c3RyaW5nLCBSZWFjdE5vZGU+O1xuICAvKipcbiAgICogQSBtYXAgb2Ygd2FybmluZ3MuXG4gICAqL1xuICB3YXJuaW5ncz86IFJlY29yZDxzdHJpbmcsIFJlYWN0Tm9kZT47XG59O1xuXG50eXBlIFRMb2NhbGl6ZWRJbnB1dFByb3BzID0ge1xuICAvKipcbiAgICogVXNlZCBhcyBIVE1MIGlkIHByb3BlcnR5LlxuICAgKi9cbiAgaWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVzZWQgdG8gY3JlYXRlIGEgSFRNTCBgbmFtZWAgcHJvcGVydHkgZm9yIHRoZSBhbW91bnQgaW5wdXQgZmllbGQgKGAke25hbWV9LmFtb3VudGApLlxuICAgKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIHZhbHVlIG9mIHBvc3NpYmxlIGN1cnJlbmN5XG4gICAqL1xuICB2YWx1ZTogVFZhbHVlO1xuICAvKipcbiAgICogQ2FsbGVkIHdpdGggdGhlIGV2ZW50IG9mIHRoZSBpbnB1dC5cbiAgICovXG4gIG9uQ2hhbmdlPzogQ2hhbmdlRXZlbnRIYW5kbGVyO1xuICAvKipcbiAgICogQ2FsbGVkIHdpdGggdGhlIGV2ZW50IG9mIHRoZSBpbnB1dC5cbiAgICovXG4gIGN1cnJlbmN5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBpbnB1dCBpcyBibHVycmVkXG4gICAqL1xuICBvbkJsdXI/OiAoZXZlbnQ6IFRFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IGlzIGZvY3VzZWRcbiAgICovXG4gIG9uRm9jdXM/OiBGb2N1c0V2ZW50SGFuZGxlcjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBpbnB1dCBjYW5ub3QgYmUgbW9kaWZpZWQgKGUuZyBub3QgYXV0aG9yaXplZCwgb3IgY2hhbmdlcyBjdXJyZW50bHkgc2F2aW5nKS5cbiAgICovXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGZpZWxkIGlzIGRpc3BsYXlpbmcgcmVhZC1vbmx5IGNvbnRlbnRcbiAgICovXG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgaW5wdXQgaGFzIGVycm9yc1xuICAgKi9cbiAgaGFzRXJyb3I/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbCB0byBpbmRpY2F0ZSBvbiB0aGUgaW5wdXQgaWYgdGhlcmUgYXJlIHZhbHVlcyB0aGF0IGFyZSBwb3RlbnRpYWxseSBpbnZhbGlkXG4gICAqL1xuICBoYXNXYXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBpbnB1dFxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIG1hcCBvZiBlcnJvcnMuIEVycm9yIG1lc3NhZ2VzIGZvciBrbm93biBlcnJvcnMgYXJlIHJlbmRlcmVkIGF1dG9tYXRpY2FsbHkuXG4gICAqIDxicj5cbiAgICogVW5rbm93biBlcnJvcnMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYHJlbmRlckVycm9yYFxuICAgKi9cbiAgZXJyb3I/OiBSZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBIVE1MIG5vZGUgdG8gZGlzcGxheSB3YXJuaW5nXG4gICAqL1xuICB3YXJuaW5nPzogUmVhY3ROb2RlO1xufTtcblxuY29uc3Qgc2VxdWVudGlhbElkID0gY3JlYXRlU2VxdWVudGlhbElkKCdsb2NhbGl6ZWQtbW9uZXktaW5wdXQtJyk7XG5cbi8vIHNvcnRzIHRoZSBjdXJyZW5jaWVzIHdpdGggdGhlIGZvbGxvd2luZyBwcmlvcml0eTpcbi8vIC0gVGhlIHNlbGVjdGVkIGN1cnJlbmN5IGlzIHBsYWNlZCBmaXJzdCAoZS5nIEVVUilcbi8vIC0gQWxsIG90aGVyIGN1cnJlbmNpZXMgZm9sbG93LCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgYXMgd2VsbFxuZXhwb3J0IGNvbnN0IHNvcnRDdXJyZW5jaWVzID0gKFxuICBzZWxlY3RlZEN1cnJlbmN5OiBzdHJpbmcsXG4gIGFsbEN1cnJlbmNpZXM6IHN0cmluZ1tdXG4pID0+IHtcbiAgY29uc3QgcmVtYWluaW5nQ3VycmVuY2llcyA9IGFsbEN1cnJlbmNpZXMuZmlsdGVyKFxuICAgIChjdXJyZW5jeSkgPT4gY3VycmVuY3kgIT09IHNlbGVjdGVkQ3VycmVuY3lcbiAgKTtcbiAgcmV0dXJuIFtzZWxlY3RlZEN1cnJlbmN5LCAuLi5yZW1haW5pbmdDdXJyZW5jaWVzLnNvcnQoKV07XG59O1xuXG5jb25zdCBMb2NhbGl6ZWRJbnB1dCA9IChwcm9wczogVExvY2FsaXplZElucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgeyBvbkNoYW5nZSB9ID0gcHJvcHM7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgLy8gV2UgbWFuaXB1bGF0ZSB0aGUgZXZlbnQgdG8gYWRkIHRoZSBjdXJyZW5jeSB0byB0aGUgdGFyZ2V0LlxuICAgICAgLy8gVGhhdCB3YXkgdGhlIHVzZXJzICBjYW4gcmVhZFxuICAgICAgLy8gZXZlbnQudGFyZ2V0LmN1cnJlbmN5IGFuZCBldmVudC50YXJnZXQudmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBuZXh0IHZhbHVlLlxuICAgICAgLy9cbiAgICAgIC8vIFdlIG9ubHkgbmVlZCB0aGlzIGluZm9ybWF0aW9uIGZvciB0aGUgc3RvcnksIHRoZSBNQyBhcHBsaWNhdGlvbiBjb2RlIHdpbGxcbiAgICAgIC8vIG5ldmVyIG5lZWQgdG8gYWNjZXNzIHRoZSBpbmZvcm1hdGlvbiBpbiBzdWNoIGFuIGluY29udmVuaWVudCB3YXksIGFzXG4gICAgICAvLyBGb3JtaWsgY2FuIGRlYWwgd2l0aCBhIG5hbWUgbGlrZSBcImZvby5lblwiIGFuZCBzZXRzIHRoZSB2YWx1ZSBjb3JyZWN0bHkuXG4gICAgICAvLyBXZSBjYW4ndCB1c2UgdGhpcyBhcyB3ZSBhcmVuJ3QgZ3VhcmFudGVlZCBhIG5hbWUgaW4gdGhlIHN0b3J5IGFzIHRoZSB1c2VyXG4gICAgICAvLyBtaWdodCBjbGVhciBpdCB1c2luZyB0aGUga25vYiwgYW5kIHRoZW4gd2UgY2FuJ3QgcGFyc2UgdGhlIGN1cnJlbmN5IGZyb21cbiAgICAgIC8vIHRoZSBpbnB1dCBuYW1lIGFueW1vcmUuXG4gICAgICAvL1xuICAgICAgZXZlbnQudGFyZ2V0LmN1cnJlbmN5ID0gcHJvcHMuY3VycmVuY3k7XG4gICAgICBvbkNoYW5nZT8uKGV2ZW50KTtcbiAgICB9LFxuICAgIFtwcm9wcy5jdXJyZW5jeSwgb25DaGFuZ2VdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPFN0YWNrIHNjYWxlPVwieHNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxNb25leUlucHV0XG4gICAgICAgICAgbmFtZT17cHJvcHMubmFtZX1cbiAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e3Byb3BzLm9uQmx1cn1cbiAgICAgICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgICAgIGlzUmVhZE9ubHk9e3Byb3BzLmlzUmVhZE9ubHl9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgIGhhc0Vycm9yPXtwcm9wcy5oYXNFcnJvcn1cbiAgICAgICAgICBoYXNXYXJuaW5nPXtwcm9wcy5oYXNXYXJuaW5nfVxuICAgICAgICAgIHsuLi5maWx0ZXJEYXRhQXR0cmlidXRlcyhwcm9wcyl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHsocHJvcHMuZXJyb3IgfHwgcHJvcHMud2FybmluZykgJiYgKFxuICAgICAgICA8ZGl2Pntwcm9wcy5lcnJvciA/IHByb3BzLmVycm9yIDogcHJvcHMud2FybmluZ308L2Rpdj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cbkxvY2FsaXplZElucHV0LmRpc3BsYXlOYW1lID0gJ0xvY2FsaXplZElucHV0JztcblxuY29uc3QgTG9jYWxpemVkTW9uZXlJbnB1dCA9IChwcm9wczogVExvY2FsaXplZE1vbmV5SW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCBpbnRsID0gdXNlSW50bCgpO1xuXG4gIGNvbnN0IGRlZmF1bHRFeHBhbnNpb25TdGF0ZSA9XG4gICAgcHJvcHMuaGlkZUN1cnJlbmN5RXhwYW5zaW9uQ29udHJvbHMgfHxcbiAgICBwcm9wcy5kZWZhdWx0RXhwYW5kQ3VycmVuY2llcyB8fFxuICAgIC8vIGRlZmF1bHQgdG8gYGZhbHNlYCwgYmVjYXVzZSB1c2VUb2dnbGVTdGF0ZSBkZWZhdWx0cyB0byBgdHJ1ZWBcbiAgICBmYWxzZTtcblxuICBjb25zdCBbYXJlQ3VycmVuY2llc0V4cGFuZGVkLCB0b2dnbGVDdXJyZW5jaWVzXSA9IHVzZVRvZ2dsZVN0YXRlKFxuICAgIGRlZmF1bHRFeHBhbnNpb25TdGF0ZVxuICApO1xuXG4gIGNvbnN0IG9uTG9jYWxpemVkTW9uZXlJbnB1dFRvZ2dsZSA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IHRvZ2dsZUN1cnJlbmNpZXMoKSxcbiAgICBbdG9nZ2xlQ3VycmVuY2llc11cbiAgKTtcblxuICBjb25zdCBpZCA9IHVzZUZpZWxkSWQocHJvcHMuaWQsIHNlcXVlbnRpYWxJZCk7XG5cbiAgY29uc3QgaGFzRXJyb3JJblJlbWFpbmluZ0N1cnJlbmNpZXMgPVxuICAgIHByb3BzLmhhc0Vycm9yIHx8XG4gICAgZ2V0SGFzRXJyb3JPblJlbWFpbmluZ0xhbmd1YWdlcyhwcm9wcy5lcnJvcnMsIHByb3BzLnNlbGVjdGVkQ3VycmVuY3kpO1xuXG4gIGNvbnN0IGhhc1dhcm5pbmdJblJlbWFpbmluZ0N1cnJlbmNpZXMgPVxuICAgIHByb3BzLmhhc1dhcm5pbmcgfHxcbiAgICBnZXRIYXNXYXJuaW5nT25SZW1haW5pbmdMYW5ndWFnZXMocHJvcHMud2FybmluZ3MsIHByb3BzLnNlbGVjdGVkQ3VycmVuY3kpO1xuXG4gIGlmIChoYXNFcnJvckluUmVtYWluaW5nQ3VycmVuY2llcyB8fCBoYXNXYXJuaW5nSW5SZW1haW5pbmdDdXJyZW5jaWVzKSB7XG4gICAgLy8gdGhpcyB1cGRhdGUgd2l0aGluIHJlbmRlciByZXBsYWNlcyB0aGUgb2xkIGBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNgIGZ1bmN0aW9uYWxpdHlcbiAgICAvLyBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtZmFxLmh0bWwjaG93LWRvLWktaW1wbGVtZW50LWdldGRlcml2ZWRzdGF0ZWZyb21wcm9wc1xuICAgIGlmICghYXJlQ3VycmVuY2llc0V4cGFuZGVkKSB7XG4gICAgICB0b2dnbGVDdXJyZW5jaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY3VycmVuY2llcyA9IHNvcnRDdXJyZW5jaWVzKFxuICAgIHByb3BzLnNlbGVjdGVkQ3VycmVuY3ksXG4gICAgT2JqZWN0LmtleXMocHJvcHMudmFsdWUpXG4gICk7XG5cbiAgY29uc3Qgc2hvdWxkUmVuZGVyQ3VycmVuY3lDb250cm9sID1cbiAgICBjdXJyZW5jaWVzLmxlbmd0aCA+IDEgJiYgIXByb3BzLmhpZGVDdXJyZW5jeUV4cGFuc2lvbkNvbnRyb2xzO1xuXG4gIGlmIChwcm9wcy5oaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9scykge1xuICAgIHdhcm5pbmcoXG4gICAgICB0eXBlb2YgcHJvcHMuZGVmYXVsdEV4cGFuZEN1cnJlbmNpZXMgIT09ICdib29sZWFuJyxcbiAgICAgICdMb2NhbGl6ZWRNb25leUlucHV0OiBcImRlZmF1bHRFeHBhbmRDdXJyZW5jaWVzXCIgZG9lcyBub3QgaGF2ZSBhbnkgZWZmZWN0IHdoZW4gXCJoaWRlQ3VycmVuY3lFeHBhbnNpb25Db250cm9sc1wiIGlzIHNldC4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnN0cmFpbnRzLkhvcml6b250YWwgbWF4PXtwcm9wcy5ob3Jpem9udGFsQ29uc3RyYWludH0+XG4gICAgICA8U3RhY2sgc2NhbGU9XCJ4c1wiPlxuICAgICAgICA8U3RhY2sgc2NhbGU9XCJzXCI+XG4gICAgICAgICAge2N1cnJlbmNpZXMubWFwKChjdXJyZW5jeSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RDdXJyZW5jeSA9IGluZGV4ID09PSAwO1xuICAgICAgICAgICAgaWYgKCFpc0ZpcnN0Q3VycmVuY3kgJiYgIWFyZUN1cnJlbmNpZXNFeHBhbmRlZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxMb2NhbGl6ZWRJbnB1dFxuICAgICAgICAgICAgICAgIGtleT17Y3VycmVuY3l9XG4gICAgICAgICAgICAgICAgaWQ9e0xvY2FsaXplZE1vbmV5SW5wdXQuZ2V0SWQoaWQsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgICAgICBuYW1lPXtMb2NhbGl6ZWRNb25leUlucHV0LmdldE5hbWUocHJvcHMubmFtZSwgY3VycmVuY3kpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZVtjdXJyZW5jeV19XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3Byb3BzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIGN1cnJlbmN5PXtjdXJyZW5jeX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgICAgICAgICBwcm9wcy5wbGFjZWhvbGRlciA/IHByb3BzLnBsYWNlaG9sZGVyW2N1cnJlbmN5XSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbkJsdXI9e3Byb3BzLm9uQmx1cn1cbiAgICAgICAgICAgICAgICBvbkZvY3VzPXtwcm9wcy5vbkZvY3VzfVxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ9e3Byb3BzLmlzRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgaXNSZWFkT25seT17cHJvcHMuaXNSZWFkT25seX1cbiAgICAgICAgICAgICAgICBoYXNFcnJvcj17Qm9vbGVhbihcbiAgICAgICAgICAgICAgICAgIHByb3BzLmhhc0Vycm9yIHx8IChwcm9wcy5lcnJvcnMgJiYgcHJvcHMuZXJyb3JzW2N1cnJlbmN5XSlcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIGhhc1dhcm5pbmc9e0Jvb2xlYW4oXG4gICAgICAgICAgICAgICAgICBwcm9wcy5oYXNXYXJuaW5nIHx8XG4gICAgICAgICAgICAgICAgICAgIChwcm9wcy53YXJuaW5ncyAmJiBwcm9wcy53YXJuaW5nc1tjdXJyZW5jeV0pXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB3YXJuaW5nPXtwcm9wcy53YXJuaW5ncyAmJiBwcm9wcy53YXJuaW5nc1tjdXJyZW5jeV19XG4gICAgICAgICAgICAgICAgZXJyb3I9e3Byb3BzLmVycm9ycyAmJiBwcm9wcy5lcnJvcnNbY3VycmVuY3ldfVxuICAgICAgICAgICAgICAgIHsuLi5jcmVhdGVMb2NhbGl6ZWREYXRhQXR0cmlidXRlcyhwcm9wcywgY3VycmVuY3kpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICAge3Nob3VsZFJlbmRlckN1cnJlbmN5Q29udHJvbCAmJiAoXG4gICAgICAgICAgPExvY2FsaXplZElucHV0VG9nZ2xlXG4gICAgICAgICAgICBpY29uPXs8Q29pbnNJY29uIC8+fVxuICAgICAgICAgICAgb25DbGljaz17b25Mb2NhbGl6ZWRNb25leUlucHV0VG9nZ2xlfVxuICAgICAgICAgICAgaXNPcGVuPXthcmVDdXJyZW5jaWVzRXhwYW5kZWR9XG4gICAgICAgICAgICBpc0Rpc2FibGVkPXtcbiAgICAgICAgICAgICAgYXJlQ3VycmVuY2llc0V4cGFuZGVkICYmXG4gICAgICAgICAgICAgIEJvb2xlYW4oXG4gICAgICAgICAgICAgICAgaGFzRXJyb3JJblJlbWFpbmluZ0N1cnJlbmNpZXMgfHwgaGFzV2FybmluZ0luUmVtYWluaW5nQ3VycmVuY2llc1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzaG93TWVzc2FnZT17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLnNob3csIHtcbiAgICAgICAgICAgICAgcmVtYWluaW5nQ3VycmVuY2llczogY3VycmVuY2llcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBoaWRlTWVzc2FnZT17aW50bC5mb3JtYXRNZXNzYWdlKG1lc3NhZ2VzLmhpZGUsIHtcbiAgICAgICAgICAgICAgcmVtYWluaW5nQ3VycmVuY2llczogY3VycmVuY2llcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvU3RhY2s+XG4gICAgPC9Db25zdHJhaW50cy5Ib3Jpem9udGFsPlxuICApO1xufTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5kaXNwbGF5TmFtZSA9ICdMb2NhbGl6ZWRNb25leUlucHV0JztcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5nZXRJZCA9IGdldElkO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmdldE5hbWUgPSBnZXROYW1lO1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmRlZmF1bHRQcm9wcyA9IHtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6ICdzY2FsZScsXG59O1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmNvbnZlcnRUb01vbmV5VmFsdWVzID0gKFxuICB2YWx1ZXM6IFRWYWx1ZVtdLFxuICBsb2NhbGU6IHN0cmluZ1xuKTogQXJyYXk8VE1vbmV5VmFsdWUgfCBudWxsPiA9PlxuICBPYmplY3QudmFsdWVzKHZhbHVlcykubWFwPFRNb25leVZhbHVlIHwgbnVsbD4oKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIE1vbmV5SW5wdXQuY29udmVydFRvTW9uZXlWYWx1ZSh2YWx1ZSwgbG9jYWxlKTtcbiAgfSk7XG5cbkxvY2FsaXplZE1vbmV5SW5wdXQucGFyc2VNb25leVZhbHVlcyA9IChcbiAgbW9uZXlWYWx1ZXM6IFRNb25leVZhbHVlW10gPSBbXSxcbiAgbG9jYWxlOiBzdHJpbmdcbik6IFJlY29yZDxUQ3VycmVuY3lDb2RlLCBUVmFsdWU+ID0+XG4gIG1vbmV5VmFsdWVzLnJlZHVjZTxSZWNvcmQ8VEN1cnJlbmN5Q29kZSwgVFZhbHVlPj4oKGFsbFZhbHVlcywgbW9uZXlWYWx1ZSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gTW9uZXlJbnB1dC5wYXJzZU1vbmV5VmFsdWUobW9uZXlWYWx1ZSwgbG9jYWxlKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWxsVmFsdWVzLFxuICAgICAgW3ZhbHVlLmN1cnJlbmN5Q29kZV06IHZhbHVlLFxuICAgIH07XG4gIH0sIHt9IGFzIFJlY29yZDxUQ3VycmVuY3lDb2RlLCBUVmFsdWU+KTtcblxuTG9jYWxpemVkTW9uZXlJbnB1dC5nZXRIaWdoUHJlY2lzaW9uQ3VycmVuY2llcyA9IChcbiAgdmFsdWVzOiBSZWNvcmQ8VEN1cnJlbmN5Q29kZSwgVFZhbHVlPixcbiAgbG9jYWxlOiBzdHJpbmdcbik6IFRDdXJyZW5jeUNvZGVbXSA9PiB7XG4gIGNvbnN0IHR5cGVkQ3VycmVuY3lDb2RlcyA9IE9iamVjdC5rZXlzKHZhbHVlcykgYXMgVEN1cnJlbmN5Q29kZVtdO1xuICByZXR1cm4gdHlwZWRDdXJyZW5jeUNvZGVzLmZpbHRlcigoY3VycmVuY3lDb2RlKSA9PlxuICAgIE1vbmV5SW5wdXQuaXNIaWdoUHJlY2lzaW9uKHZhbHVlc1tjdXJyZW5jeUNvZGVdLCBsb2NhbGUpXG4gICk7XG59O1xuXG5Mb2NhbGl6ZWRNb25leUlucHV0LmdldEVtcHR5Q3VycmVuY2llcyA9IChcbiAgdmFsdWVzOiBSZWNvcmQ8VEN1cnJlbmN5Q29kZSwgVFZhbHVlPlxuKTogVEN1cnJlbmN5Q29kZVtdID0+IHtcbiAgY29uc3QgdHlwZWRDdXJyZW5jeUNvZGVzID0gT2JqZWN0LmtleXModmFsdWVzKSBhcyBUQ3VycmVuY3lDb2RlW107XG4gIHJldHVybiB0eXBlZEN1cnJlbmN5Q29kZXMuZmlsdGVyKChjdXJyZW5jeUNvZGUpID0+XG4gICAgTW9uZXlJbnB1dC5pc0VtcHR5KHZhbHVlc1tjdXJyZW5jeUNvZGVdKVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9jYWxpemVkTW9uZXlJbnB1dDtcbiJdfQ== */",
79
75
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
80
76
  };
81
77
 
@@ -93,16 +89,14 @@ var LocalizedInput = function LocalizedInput(props) {
93
89
  // might clear it using the knob, and then we can't parse the currency from
94
90
  // the input name anymore.
95
91
  //
96
- // eslint-disable-next-line no-param-reassign
97
92
  event.target.currency = props.currency;
98
- onChange(event);
93
+ onChange === null || onChange === void 0 ? void 0 : onChange(event);
99
94
  }, [props.currency, onChange]);
100
95
  return jsxs(Stack, {
101
96
  scale: "xs",
102
97
  children: [jsx("div", {
103
98
  css: _ref,
104
99
  children: jsx(MoneyInput, _objectSpread({
105
- id: props.id,
106
100
  name: props.name,
107
101
  value: props.value,
108
102
  onChange: handleChange,
@@ -119,26 +113,23 @@ var LocalizedInput = function LocalizedInput(props) {
119
113
  });
120
114
  };
121
115
 
122
- LocalizedInput.displayName = 'LocalizedInput';
123
116
  LocalizedInput.propTypes = process.env.NODE_ENV !== "production" ? {
124
- id: PropTypes.string,
125
- name: PropTypes.string,
126
- value: PropTypes.shape({
127
- amount: PropTypes.string.isRequired,
128
- currencyCode: PropTypes.string.isRequired
129
- }).isRequired,
130
- onChange: PropTypes.func,
131
- currency: PropTypes.string.isRequired,
132
- onBlur: PropTypes.func,
133
- onFocus: PropTypes.func,
134
- isDisabled: PropTypes.bool,
135
- isReadOnly: PropTypes.bool,
136
- hasError: PropTypes.bool,
137
- hasWarning: PropTypes.bool,
138
- placeholder: PropTypes.string,
139
- error: PropTypes.node,
140
- warning: PropTypes.node
117
+ id: _pt.string,
118
+ name: _pt.string,
119
+ value: _pt.any.isRequired,
120
+ onChange: _pt.func,
121
+ currency: _pt.string.isRequired,
122
+ onBlur: _pt.func,
123
+ onFocus: _pt.func,
124
+ isDisabled: _pt.bool,
125
+ isReadOnly: _pt.bool,
126
+ hasError: _pt.bool,
127
+ hasWarning: _pt.bool,
128
+ placeholder: _pt.string,
129
+ error: _pt.node,
130
+ warning: _pt.node
141
131
  } : {};
132
+ LocalizedInput.displayName = 'LocalizedInput';
142
133
 
143
134
  var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
144
135
  var intl = useIntl();
@@ -150,6 +141,9 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
150
141
  areCurrenciesExpanded = _useToggleState2[0],
151
142
  toggleCurrencies = _useToggleState2[1];
152
143
 
144
+ var onLocalizedMoneyInputToggle = useCallback(function () {
145
+ return toggleCurrencies();
146
+ }, [toggleCurrencies]);
153
147
  var id = useFieldId(props.id, sequentialId);
154
148
  var hasErrorInRemainingCurrencies = props.hasError || getHasErrorOnRemainingLanguages(props.errors, props.selectedCurrency);
155
149
  var hasWarningInRemainingCurrencies = props.hasWarning || getHasWarningOnRemainingLanguages(props.warnings, props.selectedCurrency);
@@ -164,6 +158,11 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
164
158
 
165
159
  var currencies = sortCurrencies(props.selectedCurrency, _Object$keys(props.value));
166
160
  var shouldRenderCurrencyControl = currencies.length > 1 && !props.hideCurrencyExpansionControls;
161
+
162
+ if (props.hideCurrencyExpansionControls) {
163
+ process.env.NODE_ENV !== "production" ? warning(typeof props.defaultExpandCurrencies !== 'boolean', 'LocalizedMoneyInput: "defaultExpandCurrencies" does not have any effect when "hideCurrencyExpansionControls" is set.') : void 0;
164
+ }
165
+
167
166
  return jsx(Constraints.Horizontal, {
168
167
  max: props.horizontalConstraint,
169
168
  children: jsxs(Stack, {
@@ -186,14 +185,13 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
186
185
  isReadOnly: props.isReadOnly,
187
186
  hasError: Boolean(props.hasError || props.errors && props.errors[currency]),
188
187
  hasWarning: Boolean(props.hasWarning || props.warnings && props.warnings[currency]),
189
- intl: intl,
190
188
  warning: props.warnings && props.warnings[currency],
191
189
  error: props.errors && props.errors[currency]
192
190
  }, createLocalizedDataAttributes(props, currency)), currency);
193
191
  })
194
192
  }), shouldRenderCurrencyControl && jsx(LocalizedInputToggle, {
195
193
  icon: jsx(CoinsIcon, {}),
196
- onClick: toggleCurrencies,
194
+ onClick: onLocalizedMoneyInputToggle,
197
195
  isOpen: areCurrenciesExpanded,
198
196
  isDisabled: areCurrenciesExpanded && Boolean(hasErrorInRemainingCurrencies || hasWarningInRemainingCurrencies),
199
197
  showMessage: intl.formatMessage(messages.show, {
@@ -207,44 +205,26 @@ var LocalizedMoneyInput = function LocalizedMoneyInput(props) {
207
205
  });
208
206
  };
209
207
 
210
- LocalizedMoneyInput.displayName = 'LocalizedMoneyInput';
211
208
  LocalizedMoneyInput.propTypes = process.env.NODE_ENV !== "production" ? {
212
- id: PropTypes.string,
213
- name: PropTypes.string,
214
- // then input doesn't accept a "currencies" prop, instead all possible
215
- // currencies have to exist (with empty or filled strings) on the value:
216
- // { EUR: {amount: '12.00', currencyCode: 'EUR'}, USD: {amount: '', currencyCode: 'USD'}}
217
- value: PropTypes.objectOf(PropTypes.shape({
218
- amount: PropTypes.string.isRequired,
219
- currencyCode: PropTypes.string.isRequired
220
- })).isRequired,
221
- onChange: PropTypes.func,
222
- selectedCurrency: PropTypes.string.isRequired,
223
- onBlur: PropTypes.func,
224
- onFocus: PropTypes.func,
225
- hideCurrencyExpansionControls: PropTypes.bool,
226
- defaultExpandCurrencies: function defaultExpandCurrencies(props, propName, componentName) {
227
- var _context2;
228
-
229
- if (props.hideCurrencyExpansionControls && typeof props[propName] === 'boolean') {
230
- throw new Error(oneLine(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", ": \"", "\" does not have any effect when\n \"hideCurrencyExpansionControls\" is set.\n "])), componentName, propName));
231
- }
232
-
233
- for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
234
- rest[_key - 3] = arguments[_key];
235
- }
236
-
237
- return PropTypes.bool.apply(PropTypes, _concatInstanceProperty(_context2 = [props, propName, componentName]).call(_context2, rest));
238
- },
239
- isDisabled: PropTypes.bool,
240
- isReadOnly: PropTypes.bool,
241
- placeholder: PropTypes.objectOf(PropTypes.string),
242
- horizontalConstraint: PropTypes.oneOf([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 'scale', 'auto']),
243
- hasError: PropTypes.bool,
244
- hasWarning: PropTypes.bool,
245
- errors: PropTypes.objectOf(PropTypes.node),
246
- warnings: PropTypes.objectOf(PropTypes.node)
209
+ id: _pt.string,
210
+ name: _pt.string,
211
+ value: _pt.objectOf(_pt.any).isRequired,
212
+ onChange: _pt.func,
213
+ selectedCurrency: _pt.string.isRequired,
214
+ onBlur: _pt.func,
215
+ onFocus: _pt.func,
216
+ hideCurrencyExpansionControls: _pt.bool,
217
+ defaultExpandCurrencies: _pt.bool,
218
+ isDisabled: _pt.bool,
219
+ isReadOnly: _pt.bool,
220
+ placeholder: _pt.objectOf(_pt.string),
221
+ horizontalConstraint: _pt.oneOf([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 'scale', 'auto']),
222
+ hasError: _pt.bool,
223
+ hasWarning: _pt.bool,
224
+ errors: _pt.objectOf(_pt.node),
225
+ warnings: _pt.objectOf(_pt.node)
247
226
  } : {};
227
+ LocalizedMoneyInput.displayName = 'LocalizedMoneyInput';
248
228
  LocalizedMoneyInput.getId = getId;
249
229
  LocalizedMoneyInput.getName = getName;
250
230
  LocalizedMoneyInput.defaultProps = {
@@ -252,37 +232,34 @@ LocalizedMoneyInput.defaultProps = {
252
232
  };
253
233
 
254
234
  LocalizedMoneyInput.convertToMoneyValues = function (values, locale) {
255
- var _context3;
235
+ var _context2;
256
236
 
257
- return _mapInstanceProperty(_context3 = _Object$values(values)).call(_context3, function (value) {
237
+ return _mapInstanceProperty(_context2 = _Object$values(values)).call(_context2, function (value) {
258
238
  return MoneyInput.convertToMoneyValue(value, locale);
259
239
  });
260
240
  };
261
241
 
262
242
  LocalizedMoneyInput.parseMoneyValues = function () {
263
- var _context4;
264
-
265
243
  var moneyValues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
266
244
  var locale = arguments.length > 1 ? arguments[1] : undefined;
267
- return _reduceInstanceProperty(_context4 = _mapInstanceProperty(moneyValues).call(moneyValues, function (value) {
268
- return MoneyInput.parseMoneyValue(value, locale);
269
- })).call(_context4, function (pairs, value) {
270
- return _objectSpread(_objectSpread({}, pairs), {}, _defineProperty({}, value.currencyCode, value));
245
+ return _reduceInstanceProperty(moneyValues).call(moneyValues, function (allValues, moneyValue) {
246
+ var value = MoneyInput.parseMoneyValue(moneyValue, locale);
247
+ return _objectSpread(_objectSpread({}, allValues), {}, _defineProperty({}, value.currencyCode, value));
271
248
  }, {});
272
249
  };
273
250
 
274
251
  LocalizedMoneyInput.getHighPrecisionCurrencies = function (values, locale) {
275
- var _context5;
252
+ var typedCurrencyCodes = _Object$keys(values);
276
253
 
277
- return _filterInstanceProperty(_context5 = _Object$keys(values)).call(_context5, function (currencyCode) {
254
+ return _filterInstanceProperty(typedCurrencyCodes).call(typedCurrencyCodes, function (currencyCode) {
278
255
  return MoneyInput.isHighPrecision(values[currencyCode], locale);
279
256
  });
280
257
  };
281
258
 
282
259
  LocalizedMoneyInput.getEmptyCurrencies = function (values) {
283
- var _context6;
260
+ var typedCurrencyCodes = _Object$keys(values);
284
261
 
285
- return _filterInstanceProperty(_context6 = _Object$keys(values)).call(_context6, function (currencyCode) {
262
+ return _filterInstanceProperty(typedCurrencyCodes).call(typedCurrencyCodes, function (currencyCode) {
286
263
  return MoneyInput.isEmpty(values[currencyCode]);
287
264
  });
288
265
  };
@@ -290,6 +267,6 @@ LocalizedMoneyInput.getEmptyCurrencies = function (values) {
290
267
  var LocalizedMoneyInput$1 = LocalizedMoneyInput;
291
268
 
292
269
  // NOTE: This string will be replaced on build time with the package version.
293
- var version = "13.0.3";
270
+ var version = "13.0.4";
294
271
 
295
272
  export { LocalizedMoneyInput$1 as default, version };
@@ -0,0 +1,2 @@
1
+ export { default } from './localized-money-input';
2
+ export { default as version } from './version';
@@ -0,0 +1,43 @@
1
+ import { type FocusEventHandler, type ChangeEventHandler, type ReactNode } from 'react';
2
+ import { type TCurrencyCode, type TMoneyValue, type TValue } from '@commercetools-uikit/money-input';
3
+ declare type TEvent = {
4
+ target: {
5
+ id?: string;
6
+ name?: string;
7
+ value?: string | string[] | null;
8
+ };
9
+ };
10
+ declare type TLocalizedMoneyInputProps = {
11
+ id?: string;
12
+ name?: string;
13
+ value: Record<string, TValue>;
14
+ onChange?: ChangeEventHandler;
15
+ selectedCurrency: string;
16
+ onBlur?: (event: TEvent) => void;
17
+ onFocus?: FocusEventHandler;
18
+ hideCurrencyExpansionControls?: boolean;
19
+ defaultExpandCurrencies?: boolean;
20
+ isDisabled?: boolean;
21
+ isReadOnly?: boolean;
22
+ placeholder?: Record<string, string>;
23
+ horizontalConstraint?: 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 'scale' | 'auto';
24
+ hasError?: boolean;
25
+ hasWarning?: boolean;
26
+ errors?: Record<string, ReactNode>;
27
+ warnings?: Record<string, ReactNode>;
28
+ };
29
+ export declare const sortCurrencies: (selectedCurrency: string, allCurrencies: string[]) => string[];
30
+ declare const LocalizedMoneyInput: {
31
+ (props: TLocalizedMoneyInputProps): import("@emotion/react/jsx-runtime").JSX.Element;
32
+ displayName: string;
33
+ getId: (idPrefix?: string | undefined, language?: string | undefined) => string | undefined;
34
+ getName: (namePrefix?: string | undefined, language?: string | undefined) => string | undefined;
35
+ defaultProps: {
36
+ horizontalConstraint: string;
37
+ };
38
+ convertToMoneyValues(values: TValue[], locale: string): Array<TMoneyValue | null>;
39
+ parseMoneyValues(moneyValues: TMoneyValue[] | undefined, locale: string): Record<TCurrencyCode, TValue>;
40
+ getHighPrecisionCurrencies(values: Record<TCurrencyCode, TValue>, locale: string): TCurrencyCode[];
41
+ getEmptyCurrencies(values: Record<TCurrencyCode, TValue>): TCurrencyCode[];
42
+ };
43
+ export default LocalizedMoneyInput;
@@ -0,0 +1,18 @@
1
+ declare const _default: {
2
+ missingRequiredField: {
3
+ id: string;
4
+ description: string;
5
+ defaultMessage: string;
6
+ };
7
+ show: {
8
+ id: string;
9
+ description: string;
10
+ defaultMessage: string;
11
+ };
12
+ hide: {
13
+ id: string;
14
+ description: string;
15
+ defaultMessage: string;
16
+ };
17
+ };
18
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: "__@UI_KIT_PACKAGE/VERSION_OF_RELEASE__";
2
+ export default _default;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@commercetools-uikit/localized-money-input",
3
3
  "description": "A controlled input component for localized money values with validation states.",
4
- "version": "13.0.3",
4
+ "version": "13.0.4",
5
5
  "bugs": "https://github.com/commercetools/ui-kit/issues",
6
6
  "repository": {
7
7
  "type": "git",
@@ -23,27 +23,25 @@
23
23
  "@babel/runtime-corejs3": "7.17.2",
24
24
  "@commercetools-uikit/constraints": "13.0.2",
25
25
  "@commercetools-uikit/design-system": "13.0.0",
26
- "@commercetools-uikit/flat-button": "13.0.2",
26
+ "@commercetools-uikit/flat-button": "13.0.4",
27
27
  "@commercetools-uikit/hooks": "13.0.2",
28
28
  "@commercetools-uikit/icons": "13.0.2",
29
- "@commercetools-uikit/input-utils": "13.0.2",
29
+ "@commercetools-uikit/input-utils": "13.0.4",
30
30
  "@commercetools-uikit/localized-utils": "13.0.2",
31
- "@commercetools-uikit/money-input": "13.0.3",
32
- "@commercetools-uikit/select-utils": "13.0.2",
31
+ "@commercetools-uikit/money-input": "13.0.4",
32
+ "@commercetools-uikit/select-utils": "13.0.4",
33
33
  "@commercetools-uikit/spacings-stack": "13.0.2",
34
34
  "@commercetools-uikit/tooltip": "13.0.2",
35
35
  "@commercetools-uikit/utils": "13.0.2",
36
36
  "@emotion/react": "^11.4.0",
37
37
  "@emotion/styled": "^11.3.0",
38
- "common-tags": "1.8.2",
39
38
  "prop-types": "15.8.1",
40
- "react-required-if": "1.0.3",
41
39
  "react-select": "5.2.2"
42
40
  },
43
41
  "devDependencies": {
44
42
  "react": "17.0.2",
45
43
  "react-dom": "17.0.2",
46
- "react-intl": "5.24.6"
44
+ "react-intl": "^5.24.6"
47
45
  },
48
46
  "peerDependencies": {
49
47
  "react": "17.x",