@1money/react-ui 1.7.1 → 1.7.3

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.
@@ -8,8 +8,8 @@ var __rest = this && this.__rest || function (s, e) {
8
8
  return t;
9
9
  };
10
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- import { memo, useState, useCallback, useRef, useEffect } from 'react';
12
- import { InputNumber } from 'primereact/inputnumber';
11
+ import { memo, useMemo, useState, useCallback, useRef, useEffect } from 'react';
12
+ import BigNumber from 'bignumber.js';
13
13
  import { numericFormatter } from 'react-number-format';
14
14
  import classnames from '../../utils/classnames';
15
15
  var MIN_INPUT_WIDTH = 33;
@@ -20,6 +20,8 @@ export var InputAmount = function InputAmount(props) {
20
20
  wrapperCls = props.wrapperCls,
21
21
  _props$prefixCls = props.prefixCls,
22
22
  prefixCls = _props$prefixCls === void 0 ? 'input-amount' : _props$prefixCls,
23
+ messageCls = props.messageCls,
24
+ footnoteCls = props.footnoteCls,
23
25
  invalid = props.invalid,
24
26
  _props$placeholder = props.placeholder,
25
27
  placeholder = _props$placeholder === void 0 ? '0' : _props$placeholder,
@@ -29,10 +31,16 @@ export var InputAmount = function InputAmount(props) {
29
31
  message = props.message,
30
32
  footnote = props.footnote,
31
33
  onChange = props.onChange,
32
- rest = __rest(props, ["value", "children", "className", "wrapperCls", "prefixCls", "invalid", "placeholder", "prefix", "currency", "suffix", "message", "footnote", "onChange"]);
34
+ _onBlur = props.onBlur,
35
+ _onFocus = props.onFocus,
36
+ rest = __rest(props, ["value", "children", "className", "wrapperCls", "prefixCls", "messageCls", "footnoteCls", "invalid", "placeholder", "prefix", "currency", "suffix", "message", "footnote", "onChange", "onBlur", "onFocus"]);
33
37
  var classes = classnames(prefixCls);
34
38
  var inputRef = useRef(null);
35
39
  var fakeEleRef = useRef(null);
40
+ var prefixRef = useRef(null);
41
+ var suffixRef = useRef(null);
42
+ var currencyRef = useRef(null);
43
+ var containerRef = useRef(null);
36
44
  var _useState = useState(null),
37
45
  _useState2 = _slicedToArray(_useState, 2),
38
46
  _value = _useState2[0],
@@ -41,68 +49,102 @@ export var InputAmount = function InputAmount(props) {
41
49
  _useState4 = _slicedToArray(_useState3, 2),
42
50
  _width = _useState4[0],
43
51
  setWidth = _useState4[1];
52
+ var _useState5 = useState(false),
53
+ _useState6 = _slicedToArray(_useState5, 2),
54
+ isMaxWidth = _useState6[0],
55
+ setIsMaxWidth = _useState6[1];
56
+ var _useState7 = useState(false),
57
+ _useState8 = _slicedToArray(_useState7, 2),
58
+ isFocus = _useState8[0],
59
+ setIsFocus = _useState8[1];
60
+ var formattedValue = useMemo(function () {
61
+ return numericFormatter('' + (_value == null ? '' : _value), {
62
+ thousandSeparator: true,
63
+ allowNegative: true
64
+ });
65
+ }, [_value]);
66
+ var scrollToEnd = useCallback(function () {
67
+ var _a;
68
+ var input = inputRef.current;
69
+ if (!input) return;
70
+ var len = (_a = input.value) === null || _a === void 0 ? void 0 : _a.length;
71
+ input.setSelectionRange(len, len);
72
+ input.scrollLeft = input.scrollWidth;
73
+ input.focus();
74
+ }, []);
44
75
  var handleChange = useCallback(function (e) {
45
- setValue(e.value);
76
+ var val = e.target.value;
77
+ if (val != null) val = val.split(',').join('');
78
+ var hasDecimalPoint = val.lastIndexOf('.') === val.length - 1;
79
+ if (hasDecimalPoint) val = val.slice(0, -1);
80
+ if (isNaN(+val)) return;
81
+ setValue(val === '' ? null : "".concat(BigNumber(val).toFixed()).concat(hasDecimalPoint ? '.' : '').trim());
46
82
  onChange === null || onChange === void 0 ? void 0 : onChange(e);
47
83
  }, [onChange]);
48
- var handleKeyDown = useCallback(function (e) {
49
- switch (e.key) {
50
- case '.':
51
- setValue(function (prev) {
52
- return "".concat(prev, ".");
53
- });
54
- break;
55
- case 'Backspace':
56
- if (_value == null) return;
57
- // eslint-disable-next-line no-case-declarations
58
- var str = _value.toString();
59
- if (str[str.length - 2] === '.') {
60
- setTimeout(function () {
61
- setValue("".concat(str.slice(0, -1)));
62
- }, 0);
63
- }
64
- break;
65
- default:
66
- break;
67
- }
68
- }, [_value]);
69
84
  useEffect(function () {
70
- var _a;
71
- setWidth(((_a = fakeEleRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || MIN_INPUT_WIDTH);
85
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
86
+ var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
87
+ var prefixWidth = (_d = (_c = prefixRef.current) === null || _c === void 0 ? void 0 : _c.offsetWidth) !== null && _d !== void 0 ? _d : 0;
88
+ var suffixWidth = (_f = (_e = suffixRef.current) === null || _e === void 0 ? void 0 : _e.offsetWidth) !== null && _f !== void 0 ? _f : 0;
89
+ var currencyWidth = (_h = (_g = currencyRef.current) === null || _g === void 0 ? void 0 : _g.offsetWidth) !== null && _h !== void 0 ? _h : 0;
90
+ var fakeWidth = (_k = (_j = fakeEleRef.current) === null || _j === void 0 ? void 0 : _j.offsetWidth) !== null && _k !== void 0 ? _k : 0;
91
+ var gapWidth = prefixWidth && suffixWidth && currencyWidth ? 24 : prefixWidth && suffixWidth || prefixWidth && currencyWidth || suffixWidth && currencyWidth ? 16 : prefixWidth || suffixWidth || currencyWidth ? 8 : 0;
92
+ var maxWidth = containerWidth - prefixWidth - suffixWidth - currencyWidth - gapWidth;
93
+ var isMax = fakeWidth >= maxWidth;
94
+ if (isMax) scrollToEnd();
95
+ setWidth(Math.min(maxWidth, Math.max(fakeWidth, MIN_INPUT_WIDTH)));
96
+ setIsMaxWidth(isMax);
72
97
  }, [_value]);
73
98
  useEffect(function () {
74
- return setValue(value !== null && value !== void 0 ? value : null);
99
+ var val = value;
100
+ if (typeof val === 'string') {
101
+ val = val.split(',').join('');
102
+ var hasDecimalPoint = val.lastIndexOf('.') === val.length - 1;
103
+ if (hasDecimalPoint) val = val.slice(0, -1);
104
+ if (isNaN(+val)) return;
105
+ } else if (val !== null && typeof val !== 'number' && typeof val !== 'bigint') return;
106
+ setValue(val == null ? null : BigNumber(val).toString());
75
107
  }, [value]);
76
108
  return _jsxs("div", {
77
109
  className: classes('wrapper', [wrapperCls, invalid ? classes('invalid') : undefined].join(' ').trim()),
78
110
  children: [_jsxs("div", {
79
- className: classes(void 0, className),
111
+ ref: containerRef,
112
+ className: classes(void 0, [className, isFocus ? classes('focus') : ''].join(' ').trim()),
113
+ onClick: function onClick(e) {
114
+ var _a;
115
+ if (e.target instanceof HTMLInputElement) return;
116
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
117
+ if (isMaxWidth) scrollToEnd();
118
+ },
80
119
  children: [prefix && _jsx("span", {
120
+ ref: prefixRef,
81
121
  className: classes('prefix'),
82
- onClick: function onClick() {
83
- var _a;
84
- return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
85
- },
86
122
  children: prefix
87
- }), _jsx(InputNumber, Object.assign({}, rest, {
88
- mode: 'decimal',
89
- ref: inputRef,
90
- value: value,
91
- placeholder: placeholder,
92
- className: classes('element'),
93
- onChange: handleChange,
94
- onKeyDown: handleKeyDown,
95
- style: {
96
- '--input-width': "".concat(_width, "px")
97
- }
98
- })), currency && _jsx("span", {
123
+ }), _jsx("div", {
124
+ className: classes('element', !isFocus && isMaxWidth ? classes('element-max') : ''),
125
+ children: _jsx("input", Object.assign({}, rest, {
126
+ ref: inputRef,
127
+ value: formattedValue,
128
+ placeholder: placeholder,
129
+ style: {
130
+ '--input-width': "".concat(_width, "px")
131
+ },
132
+ onChange: handleChange,
133
+ onFocus: function onFocus(e) {
134
+ setIsFocus(true);
135
+ _onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
136
+ },
137
+ onBlur: function onBlur(e) {
138
+ setIsFocus(false);
139
+ _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
140
+ }
141
+ }))
142
+ }), currency && _jsx("span", {
143
+ ref: currencyRef,
99
144
  className: classes('currency'),
100
- onClick: function onClick() {
101
- var _a;
102
- return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
103
- },
104
145
  children: currency
105
146
  }), suffix && _jsx("span", {
147
+ ref: suffixRef,
106
148
  className: classes('suffix'),
107
149
  children: suffix
108
150
  }), _jsx("span", {
@@ -112,20 +154,21 @@ export var InputAmount = function InputAmount(props) {
112
154
  return e.stopPropagation();
113
155
  },
114
156
  children: numericFormatter('' + (_value == null ? '' : _value), {
115
- thousandSeparator: true
157
+ thousandSeparator: true,
158
+ allowNegative: true
116
159
  })
117
160
  })]
118
161
  }), (message || footnote) && _jsxs("div", {
119
162
  className: classes('extra'),
120
- children: [message && _jsx("span", {
121
- className: classes('message'),
163
+ children: [message && _jsx("div", {
164
+ className: classes('message', messageCls),
122
165
  children: message
123
- }), footnote && _jsx("span", {
124
- className: classes('footnote'),
166
+ }), footnote && _jsx("div", {
167
+ className: classes('footnote', footnoteCls),
125
168
  children: footnote
126
169
  })]
127
170
  })]
128
171
  });
129
172
  };
130
173
  export default /*#__PURE__*/memo(InputAmount);
131
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsIklucHV0TnVtYmVyIiwibnVtZXJpY0Zvcm1hdHRlciIsImNsYXNzbmFtZXMiLCJNSU5fSU5QVVRfV0lEVEgiLCJJbnB1dEFtb3VudCIsInByb3BzIiwidmFsdWUiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIndyYXBwZXJDbHMiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwiaW52YWxpZCIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwicHJlZml4IiwiY3VycmVuY3kiLCJzdWZmaXgiLCJtZXNzYWdlIiwiZm9vdG5vdGUiLCJvbkNoYW5nZSIsInJlc3QiLCJjbGFzc2VzIiwiaW5wdXRSZWYiLCJmYWtlRWxlUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiX3ZhbHVlIiwic2V0VmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIl93aWR0aCIsInNldFdpZHRoIiwiaGFuZGxlQ2hhbmdlIiwiaGFuZGxlS2V5RG93biIsImtleSIsInByZXYiLCJjb25jYXQiLCJzdHIiLCJ0b1N0cmluZyIsInNldFRpbWVvdXQiLCJzbGljZSIsIl9hIiwiY3VycmVudCIsIm9mZnNldFdpZHRoIiwidW5kZWZpbmVkIiwiam9pbiIsInRyaW0iLCJvbkNsaWNrIiwiZm9jdXMiLCJhc3NpZ24iLCJtb2RlIiwicmVmIiwib25LZXlEb3duIiwic3R5bGUiLCJzdG9wUHJvcGFnYXRpb24iLCJ0aG91c2FuZFNlcGFyYXRvciJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxxQkFBcUIsQ0FBQ1QsQ0FBQyxDQUFDLEVBQUVVLENBQUMsR0FBR1AsQ0FBQyxDQUFDUSxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlULENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJTixNQUFNLENBQUNDLFNBQVMsQ0FBQ08sb0JBQW9CLENBQUNMLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEVBQzFFUixDQUFDLENBQUNDLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBR1YsQ0FBQyxDQUFDRyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDO0VBQ3pC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TyxDQUFDLFVBQVUsQ0FBQztRQUFBZixRQUFBLEVBQUdZO01BQVEsQ0FBQSxDQUFRO0lBQUEsQ0FBQSxDQUNoRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZXhCLElBQUksQ0FBQ1MsV0FBVyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IElucHV0TnVtYmVyIH0gZnJvbSAncHJpbWVyZWFjdC9pbnB1dG51bWJlcic7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIGNoaWxkcmVuLCBjbGFzc05hbWUsIHdyYXBwZXJDbHMsIHByZWZpeENscyA9ICdpbnB1dC1hbW91bnQnLCBpbnZhbGlkLCBwbGFjZWhvbGRlciA9ICcwJywgcHJlZml4LCBjdXJyZW5jeSwgc3VmZml4LCBtZXNzYWdlLCBmb290bm90ZSwgb25DaGFuZ2UgfSA9IHByb3BzLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJ2YWx1ZVwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcInByZWZpeENsc1wiLCBcImludmFsaWRcIiwgXCJwbGFjZWhvbGRlclwiLCBcInByZWZpeFwiLCBcImN1cnJlbmN5XCIsIFwic3VmZml4XCIsIFwibWVzc2FnZVwiLCBcImZvb3Rub3RlXCIsIFwib25DaGFuZ2VcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZmFrZUVsZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbX3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbX3dpZHRoLCBzZXRXaWR0aF0gPSB1c2VTdGF0ZShNSU5fSU5QVVRfV0lEVEgpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHNldFZhbHVlKGUudmFsdWUpO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZSk7XG4gICAgfSwgW29uQ2hhbmdlXSk7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZS5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJy4nOlxuICAgICAgICAgICAgICAgIHNldFZhbHVlKHByZXYgPT4gYCR7cHJldn0uYCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgICAgICAgIGlmIChfdmFsdWUgPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jYXNlLWRlY2xhcmF0aW9uc1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0ciA9IF92YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIGlmIChzdHJbc3RyLmxlbmd0aCAtIDJdID09PSAnLicpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShgJHtzdHIuc2xpY2UoMCwgLTEpfWApO1xuICAgICAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSwgW192YWx1ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgc2V0V2lkdGgoKChfYSA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9mZnNldFdpZHRoKSB8fCBNSU5fSU5QVVRfV0lEVEgpO1xuICAgIH0sIFtfdmFsdWVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4gc2V0VmFsdWUodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCA/IHZhbHVlIDogbnVsbCksIFt2YWx1ZV0pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIFt3cmFwcGVyQ2xzLCBpbnZhbGlkID8gY2xhc3NlcygnaW52YWxpZCcpIDogdW5kZWZpbmVkXS5qb2luKCcgJykudHJpbSgpKSwgY2hpbGRyZW46IFtfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgb25DbGljazogKCkgPT4geyB2YXIgX2E7IHJldHVybiAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTsgfSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChJbnB1dE51bWJlciwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyBtb2RlOiAnZGVjaW1hbCcsIHJlZjogaW5wdXRSZWYsIHZhbHVlOiB2YWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2VsZW1lbnQnKSwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSwgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLCBzdHlsZTogeyAnLS1pbnB1dC13aWR0aCc6IGAke193aWR0aH1weGAgfSB9KSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBvbkNsaWNrOiAoKSA9PiB7IHZhciBfYTsgcmV0dXJuIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpOyB9LCBjaGlsZHJlbjogY3VycmVuY3kgfSksIHN1ZmZpeCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc3VmZml4JyksIGNoaWxkcmVuOiBzdWZmaXggfSksIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBmYWtlRWxlUmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zha2UnKSwgb25DbGljazogZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpLCBjaGlsZHJlbjogbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3VzYW5kU2VwYXJhdG9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgfSldIH0pLCAobWVzc2FnZSB8fCBmb290bm90ZSkgJiYgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2V4dHJhJyksIGNoaWxkcmVuOiBbbWVzc2FnZSAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScpLCBjaGlsZHJlbjogbWVzc2FnZSB9KSwgZm9vdG5vdGUgJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSldIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oSW5wdXRBbW91bnQpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
174
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiY2xhc3NuYW1lcyIsIk1JTl9JTlBVVF9XSURUSCIsIklucHV0QW1vdW50IiwicHJvcHMiLCJ2YWx1ZSIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJtZXNzYWdlQ2xzIiwiZm9vdG5vdGVDbHMiLCJpbnZhbGlkIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJwcmVmaXgiLCJjdXJyZW5jeSIsInN1ZmZpeCIsIm1lc3NhZ2UiLCJmb290bm90ZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwib25Gb2N1cyIsInJlc3QiLCJjbGFzc2VzIiwiaW5wdXRSZWYiLCJmYWtlRWxlUmVmIiwicHJlZml4UmVmIiwic3VmZml4UmVmIiwiY3VycmVuY3lSZWYiLCJjb250YWluZXJSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJfdmFsdWUiLCJzZXRWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiX3dpZHRoIiwic2V0V2lkdGgiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTWF4V2lkdGgiLCJzZXRJc01heFdpZHRoIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJpc0ZvY3VzIiwic2V0SXNGb2N1cyIsImZvcm1hdHRlZFZhbHVlIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJhbGxvd05lZ2F0aXZlIiwic2Nyb2xsVG9FbmQiLCJfYSIsImlucHV0IiwiY3VycmVudCIsImxlbiIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsTGVmdCIsInNjcm9sbFdpZHRoIiwiZm9jdXMiLCJoYW5kbGVDaGFuZ2UiLCJ2YWwiLCJ0YXJnZXQiLCJzcGxpdCIsImpvaW4iLCJoYXNEZWNpbWFsUG9pbnQiLCJsYXN0SW5kZXhPZiIsInNsaWNlIiwiaXNOYU4iLCJjb25jYXQiLCJ0b0ZpeGVkIiwidHJpbSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwiX2YiLCJfZyIsIl9oIiwiX2oiLCJfayIsImNvbnRhaW5lcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJwcmVmaXhXaWR0aCIsInN1ZmZpeFdpZHRoIiwiY3VycmVuY3lXaWR0aCIsImZha2VXaWR0aCIsImdhcFdpZHRoIiwibWF4V2lkdGgiLCJpc01heCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJ0b1N0cmluZyIsInVuZGVmaW5lZCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJzdG9wUHJvcGFnYXRpb24iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENB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RTVCLElBQUEsQ0FBQSxNQUFBLEVBQUE7UUFDRTBHLEdBQUcsRUFBRXJFLFVBQVU7UUFDZnBCLFNBQVMsRUFBRWtCLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUJ3RSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRXhILENBQUM7VUFBQSxPQUFJQSxDQUFDLENBQUM0SCxlQUFlLENBQUEsQ0FBRTtRQUFBO1FBQUEvRixRQUFBLEVBRy9CTixnQkFBZ0IsQ0FBQyxFQUFFLElBQUltQyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBR0EsTUFBTSxDQUFDLEVBQUU7VUFDcERlLGlCQUFpQixFQUFFLElBQUk7VUFDdkJDLGFBQWEsRUFBRTtRRHBESCxDQ3FEYjtNQUFDLENBQUEsQ0FFQztJQUFBLENBQUEsQ0FDSCxFQUVKLENBQUNoQyxPQUFPLElBQUlDLFFBQVEsS0FBSzVCLEtBQUEsQ0FBQSxLQUFBLEVBQUE7TUFBS2UsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLE9BQU8sQ0FBQztNQUFBbkIsUUFBQSxFQUFBLENBQ3REYSxPQUFPLElBQUk3QixJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUtpQixTQUFTLEVBQUVrQixPQUFPLENBQUMsU0FBUyxFQUFFZCxVQUFVLENBQUM7UUFBQUwsUUFBQSxFQUFHYTtNQUFPLENBQUEsQ0FBTyxFQUMxRUMsUUFBUSxJQUFJOUIsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLaUIsU0FBUyxFQUFFa0IsT0FBTyxDQUFDLFVBQVUsRUFBRWIsV0FBVyxDQUFDO1FBQUFOLFFBQUEsRUFBR2M7TUFBUSxDQUFBLENBQU87SUFBQSxDQUFBLENBQzNFO0VBQUEsQ0FBQSxDQUVKO0FBQ1IsQ0FBQztBQUVELDRCQUFlM0IsSUFBSSxDQUFDVSxXQUFXLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9JbnB1dEFtb3VudC9JbnB1dEFtb3VudC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgbnVtZXJpY0Zvcm1hdHRlciB9IGZyb20gJ3JlYWN0LW51bWJlci1mb3JtYXQnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5jb25zdCBNSU5fSU5QVVRfV0lEVEggPSAzMztcbmV4cG9ydCBjb25zdCBJbnB1dEFtb3VudCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBwcmVmaXhDbHMgPSAnaW5wdXQtYW1vdW50JywgbWVzc2FnZUNscywgZm9vdG5vdGVDbHMsIGludmFsaWQsIHBsYWNlaG9sZGVyID0gJzAnLCBwcmVmaXgsIGN1cnJlbmN5LCBzdWZmaXgsIG1lc3NhZ2UsIGZvb3Rub3RlLCBvbkNoYW5nZSwgb25CbHVyLCBvbkZvY3VzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1widmFsdWVcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcIndyYXBwZXJDbHNcIiwgXCJwcmVmaXhDbHNcIiwgXCJtZXNzYWdlQ2xzXCIsIFwiZm9vdG5vdGVDbHNcIiwgXCJpbnZhbGlkXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJwcmVmaXhcIiwgXCJjdXJyZW5jeVwiLCBcInN1ZmZpeFwiLCBcIm1lc3NhZ2VcIiwgXCJmb290bm90ZVwiLCBcIm9uQ2hhbmdlXCIsIFwib25CbHVyXCIsIFwib25Gb2N1c1wiXSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBmYWtlRWxlUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZWZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzdWZmaXhSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY3VycmVuY3lSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlXSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWlucHV0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBsZW4gPSAoX2EgPSBpbnB1dC52YWx1ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aDtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UobGVuLCBsZW4pO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gaW5wdXQuc2Nyb2xsV2lkdGg7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKVxuICAgICAgICAgICAgdmFsID0gdmFsLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgIGNvbnN0IGhhc0RlY2ltYWxQb2ludCA9IHZhbC5sYXN0SW5kZXhPZignLicpID09PSB2YWwubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmIChpc05hTigrdmFsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0VmFsdWUodmFsID09PSAnJyA/IG51bGwgOiBgJHtCaWdOdW1iZXIodmFsKS50b0ZpeGVkKCl9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICB9LCBbb25DaGFuZ2VdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2s7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKF9iID0gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogTUlOX0lOUFVUX1dJRFRIO1xuICAgICAgICBjb25zdCBwcmVmaXhXaWR0aCA9IChfZCA9IChfYyA9IHByZWZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Mub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDA7XG4gICAgICAgIGNvbnN0IHN1ZmZpeFdpZHRoID0gKF9mID0gKF9lID0gc3VmZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMDtcbiAgICAgICAgY29uc3QgY3VycmVuY3lXaWR0aCA9IChfaCA9IChfZyA9IGN1cnJlbmN5UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogMDtcbiAgICAgICAgY29uc3QgZmFrZVdpZHRoID0gKF9rID0gKF9qID0gZmFrZUVsZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2oub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9rICE9PSB2b2lkIDAgPyBfayA6IDA7XG4gICAgICAgIGNvbnN0IGdhcFdpZHRoID0gcHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgPyAyNFxuICAgICAgICAgICAgOiAocHJlZml4V2lkdGggJiYgc3VmZml4V2lkdGgpIHx8IChwcmVmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKSB8fCAoc3VmZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aClcbiAgICAgICAgICAgICAgICA/IDE2XG4gICAgICAgICAgICAgICAgOiBwcmVmaXhXaWR0aCB8fCBzdWZmaXhXaWR0aCB8fCBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICAgICAgICAgID8gOFxuICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgIGNvbnN0IG1heFdpZHRoID0gY29udGFpbmVyV2lkdGggLSBwcmVmaXhXaWR0aCAtIHN1ZmZpeFdpZHRoIC0gY3VycmVuY3lXaWR0aCAtIGdhcFdpZHRoO1xuICAgICAgICBjb25zdCBpc01heCA9IGZha2VXaWR0aCA+PSBtYXhXaWR0aDtcbiAgICAgICAgaWYgKGlzTWF4KVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgc2V0V2lkdGgoTWF0aC5taW4obWF4V2lkdGgsIE1hdGgubWF4KGZha2VXaWR0aCwgTUlOX0lOUFVUX1dJRFRIKSkpO1xuICAgICAgICBzZXRJc01heFdpZHRoKGlzTWF4KTtcbiAgICB9LCBbX3ZhbHVlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IHZhbCA9IHZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gdmFsLmxhc3RJbmRleE9mKCcuJykgPT09IHZhbC5sZW5ndGggLSAxO1xuICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgaWYgKGlzTmFOKCt2YWwpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldFZhbHVlKHZhbCA9PSBudWxsID8gbnVsbCA6IEJpZ051bWJlcih2YWwpLnRvU3RyaW5nKCkpO1xuICAgIH0sIFt2YWx1ZV0pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIFt3cmFwcGVyQ2xzLCBpbnZhbGlkID8gY2xhc3NlcygnaW52YWxpZCcpIDogdW5kZWZpbmVkXS5qb2luKCcgJykudHJpbSgpKSwgY2hpbGRyZW46IFtfanN4cyhcImRpdlwiLCB7IHJlZjogY29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXModm9pZCAwLCBbY2xhc3NOYW1lLCBpc0ZvY3VzID8gY2xhc3NlcygnZm9jdXMnKSA6ICcnXS5qb2luKCcgJykudHJpbSgpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2VsZW1lbnQnLCAoIWlzRm9jdXMgJiYgaXNNYXhXaWR0aCkgPyBjbGFzc2VzKCdlbGVtZW50LW1heCcpIDogJycpLCBjaGlsZHJlbjogX2pzeChcImlucHV0XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiBpbnB1dFJlZiwgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIHN1ZmZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcpLCBjaGlsZHJlbjogc3VmZml4IH0pLCBfanN4KFwic3BhblwiLCB7IHJlZjogZmFrZUVsZVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmYWtlJyksIG9uQ2xpY2s6IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSwgY2hpbGRyZW46IG51bWVyaWNGb3JtYXR0ZXIoJycgKyAoX3ZhbHVlID09IG51bGwgPyAnJyA6IF92YWx1ZSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgfSldIH0pLCAobWVzc2FnZSB8fCBmb290bm90ZSkgJiYgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2V4dHJhJyksIGNoaWxkcmVuOiBbbWVzc2FnZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdtZXNzYWdlJywgbWVzc2FnZUNscyksIGNoaWxkcmVuOiBtZXNzYWdlIH0pLCBmb290bm90ZSAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdmb290bm90ZScsIGZvb3Rub3RlQ2xzKSwgY2hpbGRyZW46IGZvb3Rub3RlIH0pXSB9KV0gfSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhJbnB1dEFtb3VudCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -1,14 +1,23 @@
1
- import type { RefObject, ReactNode } from 'react';
2
- import type { InputNumberProps, InputNumber } from 'primereact/inputnumber';
3
- export interface InputAmountProps extends Omit<InputNumberProps, 'prefix' | 'suffix' | 'currency'> {
4
- ref?: RefObject<InputNumber | null>;
1
+ import type { RefObject, ReactNode, MouseEvent, ChangeEvent, KeyboardEvent, FocusEvent } from 'react';
2
+ export interface InputAmountProps {
3
+ ref?: RefObject<HTMLInputElement | null>;
4
+ value?: string | number | bigint | null;
5
+ placeholder?: string;
5
6
  className?: string;
6
7
  prefixCls?: string;
7
8
  wrapperCls?: string;
9
+ messageCls?: string;
10
+ footnoteCls?: string;
8
11
  invalid?: boolean;
9
12
  prefix?: ReactNode;
10
13
  currency?: ReactNode;
11
14
  suffix?: ReactNode;
12
15
  message?: ReactNode;
13
16
  footnote?: ReactNode;
17
+ onClick?: (e: MouseEvent<HTMLInputElement>) => void;
18
+ onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
19
+ onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;
20
+ onKeyUp?: (e: KeyboardEvent<HTMLInputElement>) => void;
21
+ onFocus?: (e: FocusEvent<HTMLInputElement>) => void;
22
+ onBlur?: (e: FocusEvent<HTMLInputElement>) => void;
14
23
  }
@@ -1 +1 @@
1
- .om-react-ui-input-amount{display:inline-flex;gap:8px;align-items:center;justify-content:start;width:100%;padding-bottom:16px;border-bottom:1px solid #d1d2d2}.om-react-ui-input-amount-wrapper{display:inline-flex;flex-direction:column;gap:16px;width:100%}.om-react-ui-input-amount:has(.p-inputwrapper-focus:not(.p-invalid)){border-bottom-color:#073387}.om-react-ui-input-amount-element{display:inline-flex;flex-grow:0;color:#073387;font-weight:500;font-size:52px;font-family:var(--font-aeonik),Aeonik;line-height:56px;letter-spacing:-.25px}.om-react-ui-input-amount-element input{position:relative;width:var(--input-width);padding:0;color:inherit;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;border:none;border-radius:0;box-shadow:none}.om-react-ui-input-amount-element input::placeholder{color:inherit}.om-react-ui-input-amount-fake{position:absolute;top:0;left:-9999px;z-index:-1;display:inline-block;color:#073387;font-weight:500;font-size:52px;font-family:var(--font-aeonik),Aeonik;line-height:56px;letter-spacing:-.25px;white-space:pre;visibility:hidden;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;inset-block-start:0;inset-inline-start:0}.om-react-ui-input-amount-currency,.om-react-ui-input-amount-prefix,.om-react-ui-input-amount-suffix{display:inline-flex;flex-grow:0;flex-shrink:0;align-items:center}.om-react-ui-input-amount-prefix{color:#073387}.om-react-ui-input-amount-currency,.om-react-ui-input-amount-prefix{font-weight:500;font-size:52px;font-family:var(--font-aeonik),Aeonik;line-height:56px;letter-spacing:-.25px}.om-react-ui-input-amount-currency{color:#e3e4e4}.om-react-ui-input-amount-suffix{margin-left:auto}.om-react-ui-input-amount-extra{display:inline-flex;flex-direction:column;gap:16px}.om-react-ui-input-amount-message{color:#131313;font-weight:400;font-size:12px;font-family:var(--font-inter),Inter;line-height:140%}.om-react-ui-input-amount-footnote{color:#073387;font-weight:500;font-size:16px;font-family:var(--font-inter),Inter;line-height:140%}.om-react-ui-input-amount-invalid .om-react-ui-input-amount{border-bottom-color:#ae0000}.om-react-ui-input-amount-invalid .om-react-ui-input-amount-element,.om-react-ui-input-amount-invalid .om-react-ui-input-amount-message,.om-react-ui-input-amount-invalid .om-react-ui-input-amount-prefix{color:#ae0000}
1
+ .om-react-ui-input-amount{display:inline-flex;gap:8px;align-items:center;justify-content:start;width:100%;padding-bottom:16px;border-bottom:1px solid #d1d2d2}.om-react-ui-input-amount-focus{border-bottom-color:#073387}.om-react-ui-input-amount-element{position:relative;display:inline-flex;flex-grow:0;color:#073387;font-weight:500;font-size:52px;font-family:var(--font-aeonik),Aeonik;line-height:56px;letter-spacing:-.25px}.om-react-ui-input-amount-element input{position:relative;width:var(--input-width);max-width:100%;padding:0;color:inherit;font-weight:inherit;font-size:inherit;font-family:inherit;line-height:inherit;letter-spacing:inherit;border:none;border-radius:0;outline:none;box-shadow:none}.om-react-ui-input-amount-element input::placeholder{color:inherit}.om-react-ui-input-amount-element-max:after{position:absolute;top:0;right:0;width:98px;height:100%;background:linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.51) 37.98%,#fff 84.13%);cursor:text;content:""}.om-react-ui-input-amount-fake{position:absolute;top:0;left:-9999px;z-index:-1;display:inline-block;color:#073387;font-weight:500;font-size:52px;font-family:var(--font-aeonik),Aeonik;line-height:56px;letter-spacing:-.25px;white-space:pre;visibility:hidden;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;inset-block-start:0;inset-inline-start:0}.om-react-ui-input-amount-currency,.om-react-ui-input-amount-prefix,.om-react-ui-input-amount-suffix{display:inline-flex;flex-grow:0;flex-shrink:0;align-items:center}.om-react-ui-input-amount-prefix{color:#073387}.om-react-ui-input-amount-currency,.om-react-ui-input-amount-prefix{font-weight:500;font-size:52px;font-family:var(--font-aeonik),Aeonik;line-height:56px;letter-spacing:-.25px}.om-react-ui-input-amount-currency{color:#e3e4e4}.om-react-ui-input-amount-suffix{margin-left:auto}.om-react-ui-input-amount-extra{display:inline-flex;flex-direction:column;gap:16px}.om-react-ui-input-amount-message{color:#131313;font-weight:400;font-size:12px;font-family:var(--font-inter),Inter;line-height:140%}.om-react-ui-input-amount-footnote{text-align:left}.om-react-ui-input-amount-invalid .om-react-ui-input-amount{border-bottom-color:#ae0000}.om-react-ui-input-amount-invalid .om-react-ui-input-amount-element,.om-react-ui-input-amount-invalid .om-react-ui-input-amount-message,.om-react-ui-input-amount-invalid .om-react-ui-input-amount-prefix{color:#ae0000}.om-react-ui-input-amount-wrapper{display:inline-flex;flex-direction:column;gap:16px;width:100%}
@@ -13,26 +13,22 @@ $cls: #{$prefix}-#{$component};
13
13
  }
14
14
 
15
15
  .#{$cls} {
16
- display: inline-flex;
17
- gap: 8px;
18
- align-items: center;
19
- justify-content: start;
20
- width: 100%;
21
- padding-bottom: 16px;
22
- border-bottom: 1px solid $color-grey-bold;
23
-
24
- &-wrapper {
16
+ & {
25
17
  display: inline-flex;
26
- flex-direction: column;
27
- gap: 16px;
18
+ gap: 8px;
19
+ align-items: center;
20
+ justify-content: start;
28
21
  width: 100%;
22
+ padding-bottom: 16px;
23
+ border-bottom: 1px solid $color-grey-bold;
29
24
  }
30
25
 
31
- &:has(.p-inputwrapper-focus:not(.p-invalid)) {
26
+ &-focus {
32
27
  border-bottom-color: $color-primary;
33
28
  }
34
29
 
35
30
  &-element {
31
+ position: relative;
36
32
  display: inline-flex;
37
33
  flex-grow: 0;
38
34
 
@@ -41,6 +37,7 @@ $cls: #{$prefix}-#{$component};
41
37
  input {
42
38
  position: relative;
43
39
  width: var(--input-width);
40
+ max-width: 100%;
44
41
  padding: 0;
45
42
  color: inherit;
46
43
  font-weight: inherit;
@@ -50,12 +47,26 @@ $cls: #{$prefix}-#{$component};
50
47
  letter-spacing: inherit;
51
48
  border: none;
52
49
  border-radius: 0;
50
+ outline: none;
53
51
  box-shadow: none;
54
52
 
55
53
  &::placeholder {
56
54
  color: inherit;
57
55
  }
58
56
  }
57
+
58
+ &-max {
59
+ &::after {
60
+ position: absolute;
61
+ top: 0;
62
+ right: 0;
63
+ width: 98px;
64
+ height: 100%;
65
+ background: linear-gradient(90deg, rgba(254, 254, 254, 0%) 0%, rgba(255, 255, 255, 51%) 37.98%, #FFF 84.13%);
66
+ cursor: text;
67
+ content: '';
68
+ }
69
+ }
59
70
  }
60
71
 
61
72
  &-fake {
@@ -112,11 +123,7 @@ $cls: #{$prefix}-#{$component};
112
123
  }
113
124
 
114
125
  &-footnote {
115
- color: $color-primary;
116
- font-weight: 500;
117
- font-size: 16px;
118
- font-family: var(--font-inter), Inter;
119
- line-height: 140%;
126
+ text-align: left;
120
127
  }
121
128
 
122
129
  &-invalid {
@@ -130,4 +137,11 @@ $cls: #{$prefix}-#{$component};
130
137
  color: $color-negative;
131
138
  }
132
139
  }
140
+ }
141
+
142
+ .#{$cls}-wrapper {
143
+ display: inline-flex;
144
+ flex-direction: column;
145
+ gap: 16px;
146
+ width: 100%;
133
147
  }