@activecollab/components 1.0.403 → 1.0.404
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js +76 -0
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js.map +1 -0
- package/dist/cjs/components/EditableCurrency/index.js +17 -0
- package/dist/cjs/components/EditableCurrency/index.js.map +1 -0
- package/dist/cjs/components/Input/InputCurrency.js.map +1 -1
- package/dist/cjs/components/Input/InputNumber.js +27 -131
- package/dist/cjs/components/Input/InputNumber.js.map +1 -1
- package/dist/cjs/hooks/index.js +11 -0
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useInputNumber.js +147 -0
- package/dist/cjs/hooks/useInputNumber.js.map +1 -0
- package/dist/cjs/utils/currencyUtils.js +18 -15
- package/dist/cjs/utils/currencyUtils.js.map +1 -1
- package/dist/cjs/utils/currencyUtils.test.js +2 -2
- package/dist/cjs/utils/currencyUtils.test.js.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts +4 -0
- package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts.map +1 -0
- package/dist/esm/components/EditableCurrency/EditableCurrency.js +63 -0
- package/dist/esm/components/EditableCurrency/EditableCurrency.js.map +1 -0
- package/dist/esm/components/EditableCurrency/index.d.ts +2 -0
- package/dist/esm/components/EditableCurrency/index.d.ts.map +1 -0
- package/dist/esm/components/EditableCurrency/index.js +2 -0
- package/dist/esm/components/EditableCurrency/index.js.map +1 -0
- package/dist/esm/components/Input/InputCurrency.d.ts +1 -1
- package/dist/esm/components/Input/InputCurrency.d.ts.map +1 -1
- package/dist/esm/components/Input/InputCurrency.js.map +1 -1
- package/dist/esm/components/Input/InputNumber.d.ts +1 -10
- package/dist/esm/components/Input/InputNumber.d.ts.map +1 -1
- package/dist/esm/components/Input/InputNumber.js +28 -124
- package/dist/esm/components/Input/InputNumber.js.map +1 -1
- package/dist/esm/hooks/index.d.ts +1 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useInputNumber.d.ts +22 -0
- package/dist/esm/hooks/useInputNumber.d.ts.map +1 -0
- package/dist/esm/hooks/useInputNumber.js +131 -0
- package/dist/esm/hooks/useInputNumber.js.map +1 -0
- package/dist/esm/utils/currencyUtils.d.ts +8 -2
- package/dist/esm/utils/currencyUtils.d.ts.map +1 -1
- package/dist/esm/utils/currencyUtils.js +16 -14
- package/dist/esm/utils/currencyUtils.js.map +1 -1
- package/dist/esm/utils/currencyUtils.test.js +2 -2
- package/dist/esm/utils/currencyUtils.test.js.map +1 -1
- package/dist/index.js +167 -0
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.EditableCurrency = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _hooks = require("../../hooks");
|
|
10
|
+
var _EditableContent = require("../EditableContent");
|
|
11
|
+
var _Tooltip = require("../Tooltip");
|
|
12
|
+
var _utils = require("../../utils");
|
|
13
|
+
var _excluded = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "onValueChange", "step", "thousandSeparator", "value", "className"];
|
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
18
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
19
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
20
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
21
|
+
var EditableCurrency = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
22
|
+
var _ref$decimalLength = _ref.decimalLength,
|
|
23
|
+
decimalLength = _ref$decimalLength === void 0 ? 2 : _ref$decimalLength,
|
|
24
|
+
_ref$decimalSeparator = _ref.decimalSeparator,
|
|
25
|
+
decimalSeparator = _ref$decimalSeparator === void 0 ? "." : _ref$decimalSeparator,
|
|
26
|
+
_ref$disableAbbreviat = _ref.disableAbbreviation,
|
|
27
|
+
disableAbbreviation = _ref$disableAbbreviat === void 0 ? false : _ref$disableAbbreviat,
|
|
28
|
+
disabled = _ref.disabled,
|
|
29
|
+
_ref$disableMacros = _ref.disableMacros,
|
|
30
|
+
disableMacros = _ref$disableMacros === void 0 ? false : _ref$disableMacros,
|
|
31
|
+
onValueChange = _ref.onValueChange,
|
|
32
|
+
_ref$step = _ref.step,
|
|
33
|
+
step = _ref$step === void 0 ? 1 : _ref$step,
|
|
34
|
+
_ref$thousandSeparato = _ref.thousandSeparator,
|
|
35
|
+
thousandSeparator = _ref$thousandSeparato === void 0 ? "," : _ref$thousandSeparato,
|
|
36
|
+
value = _ref.value,
|
|
37
|
+
className = _ref.className,
|
|
38
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
39
|
+
var inputRef = (0, _react.useRef)(null);
|
|
40
|
+
var handleRef = (0, _utils.useForkRef)(ref, inputRef);
|
|
41
|
+
var _useInputNumber = (0, _hooks.useInputNumber)({
|
|
42
|
+
decimalLength: decimalLength,
|
|
43
|
+
decimalSeparator: decimalSeparator,
|
|
44
|
+
disableAbbreviation: disableAbbreviation,
|
|
45
|
+
disableMacros: disableMacros,
|
|
46
|
+
onValueChange: onValueChange,
|
|
47
|
+
step: step,
|
|
48
|
+
thousandSeparator: thousandSeparator,
|
|
49
|
+
value: value
|
|
50
|
+
}, inputRef),
|
|
51
|
+
focused = _useInputNumber.focused,
|
|
52
|
+
rootValue = _useInputNumber.rootValue,
|
|
53
|
+
formattedValue = _useInputNumber.formattedValue,
|
|
54
|
+
handleBlur = _useInputNumber.handleBlur,
|
|
55
|
+
handleChange = _useInputNumber.handleChange,
|
|
56
|
+
handleFocus = _useInputNumber.handleFocus,
|
|
57
|
+
handleKeyDown = _useInputNumber.handleKeyDown;
|
|
58
|
+
return /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
|
|
59
|
+
title: rootValue,
|
|
60
|
+
disable: focused
|
|
61
|
+
}, /*#__PURE__*/_react.default.createElement(_EditableContent.EditableContent, {
|
|
62
|
+
disabled: disabled,
|
|
63
|
+
ref: handleRef,
|
|
64
|
+
className: className,
|
|
65
|
+
inputProps: _objectSpread({
|
|
66
|
+
value: formattedValue,
|
|
67
|
+
onBlur: handleBlur,
|
|
68
|
+
onChange: handleChange,
|
|
69
|
+
onFocus: handleFocus,
|
|
70
|
+
onKeyDown: handleKeyDown
|
|
71
|
+
}, rest)
|
|
72
|
+
}));
|
|
73
|
+
});
|
|
74
|
+
exports.EditableCurrency = EditableCurrency;
|
|
75
|
+
EditableCurrency.displayName = "EditableCurrency";
|
|
76
|
+
//# sourceMappingURL=EditableCurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditableCurrency.js","names":["EditableCurrency","forwardRef","ref","decimalLength","decimalSeparator","disableAbbreviation","disabled","disableMacros","onValueChange","step","thousandSeparator","value","className","rest","inputRef","useRef","handleRef","useForkRef","useInputNumber","focused","rootValue","formattedValue","handleBlur","handleChange","handleFocus","handleKeyDown","onBlur","onChange","onFocus","onKeyDown","displayName"],"sources":["../../../../src/components/EditableCurrency/EditableCurrency.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from \"react\";\nimport { useInputNumber } from \"../../hooks\";\nimport { EditableContent } from \"../EditableContent\";\nimport { Tooltip } from \"../Tooltip\";\nimport { useForkRef } from \"../../utils\";\n\nimport type { InputNumberProps } from \"../../hooks\";\n\nexport const EditableCurrency = forwardRef<\n HTMLInputElement,\n Omit<InputNumberProps, \"size\">\n>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n onValueChange,\n step = 1,\n thousandSeparator = \",\",\n value,\n className,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const {\n focused,\n rootValue,\n formattedValue,\n handleBlur,\n handleChange,\n handleFocus,\n handleKeyDown,\n } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n onValueChange,\n step,\n thousandSeparator,\n value,\n },\n inputRef\n );\n\n return (\n <Tooltip title={rootValue as string} disable={focused}>\n <EditableContent\n disabled={disabled}\n ref={handleRef}\n className={className}\n inputProps={{\n value: formattedValue,\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n ...rest,\n }}\n />\n </Tooltip>\n );\n }\n);\n\nEditableCurrency.displayName = \"EditableCurrency\";\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AAAyC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIlC,IAAMA,gBAAgB,gBAAG,IAAAC,iBAAU,EAIxC,gBAcEC,GAAG,EACA;EAAA,8BAbDC,aAAa;IAAbA,aAAa,mCAAG,CAAC;IAAA,6BACjBC,gBAAgB;IAAhBA,gBAAgB,sCAAG,GAAG;IAAA,6BACtBC,mBAAmB;IAAnBA,mBAAmB,sCAAG,KAAK;IAC3BC,QAAQ,QAARA,QAAQ;IAAA,0BACRC,aAAa;IAAbA,aAAa,mCAAG,KAAK;IACrBC,aAAa,QAAbA,aAAa;IAAA,iBACbC,IAAI;IAAJA,IAAI,0BAAG,CAAC;IAAA,6BACRC,iBAAiB;IAAjBA,iBAAiB,sCAAG,GAAG;IACvBC,KAAK,QAALA,KAAK;IACLC,SAAS,QAATA,SAAS;IACNC,IAAI;EAIT,IAAMC,QAAQ,GAAG,IAAAC,aAAM,EAA0B,IAAI,CAAC;EACtD,IAAMC,SAAS,GAAG,IAAAC,iBAAU,EAACf,GAAG,EAAEY,QAAQ,CAAC;EAE3C,sBAQI,IAAAI,qBAAc,EAChB;MACEf,aAAa,EAAbA,aAAa;MACbC,gBAAgB,EAAhBA,gBAAgB;MAChBC,mBAAmB,EAAnBA,mBAAmB;MACnBE,aAAa,EAAbA,aAAa;MACbC,aAAa,EAAbA,aAAa;MACbC,IAAI,EAAJA,IAAI;MACJC,iBAAiB,EAAjBA,iBAAiB;MACjBC,KAAK,EAALA;IACF,CAAC,EACDG,QAAQ,CACT;IAnBCK,OAAO,mBAAPA,OAAO;IACPC,SAAS,mBAATA,SAAS;IACTC,cAAc,mBAAdA,cAAc;IACdC,UAAU,mBAAVA,UAAU;IACVC,YAAY,mBAAZA,YAAY;IACZC,WAAW,mBAAXA,WAAW;IACXC,aAAa,mBAAbA,aAAa;EAef,oBACE,6BAAC,gBAAO;IAAC,KAAK,EAAEL,SAAoB;IAAC,OAAO,EAAED;EAAQ,gBACpD,6BAAC,gCAAe;IACd,QAAQ,EAAEb,QAAS;IACnB,GAAG,EAAEU,SAAU;IACf,SAAS,EAAEJ,SAAU;IACrB,UAAU;MACRD,KAAK,EAAEU,cAAc;MACrBK,MAAM,EAAEJ,UAAU;MAClBK,QAAQ,EAAEJ,YAAY;MACtBK,OAAO,EAAEJ,WAAW;MACpBK,SAAS,EAAEJ;IAAa,GACrBZ,IAAI;EACP,EACF,CACM;AAEd,CAAC,CACF;AAAC;AAEFb,gBAAgB,CAAC8B,WAAW,GAAG,kBAAkB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _EditableCurrency = require("./EditableCurrency");
|
|
7
|
+
Object.keys(_EditableCurrency).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _EditableCurrency[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function get() {
|
|
13
|
+
return _EditableCurrency[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/EditableCurrency/index.ts"],"sourcesContent":["export * from \"./EditableCurrency\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputCurrency.js","names":["InputCurrency","forwardRef","ref","rest","displayName"],"sources":["../../../../src/components/Input/InputCurrency.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport { InputNumber } from \"./InputNumber\";\nimport type { InputNumberProps } from \"
|
|
1
|
+
{"version":3,"file":"InputCurrency.js","names":["InputCurrency","forwardRef","ref","rest","displayName"],"sources":["../../../../src/components/Input/InputCurrency.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport { InputNumber } from \"./InputNumber\";\nimport type { InputNumberProps } from \"../../hooks\";\n\nexport type InputCurrencyProps = InputNumberProps;\n\nexport const InputCurrency = forwardRef<HTMLInputElement, InputCurrencyProps>(\n ({ ...rest }, ref) => {\n return <InputNumber ref={ref} {...rest} />;\n }\n);\n\nInputCurrency.displayName = \"InputCurrency\";\n"],"mappings":";;;;;;;AAAA;AACA;AAA4C;AAAA;AAAA;AAKrC,IAAMA,aAAa,gBAAG,IAAAC,iBAAU,EACrC,gBAAcC,GAAG,EAAK;EAAA,IAAhBC,IAAI;EACR,oBAAO,6BAAC,wBAAW;IAAC,GAAG,EAAED;EAAI,GAAKC,IAAI,EAAI;AAC5C,CAAC,CACF;AAAC;AAEFH,aAAa,CAACI,WAAW,GAAG,eAAe"}
|
|
@@ -6,154 +6,50 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.InputNumber = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var
|
|
10
|
-
var _currencyUtils = require("../../utils/currencyUtils");
|
|
9
|
+
var _hooks = require("../../hooks");
|
|
11
10
|
var _utils = require("../../utils");
|
|
12
|
-
var
|
|
11
|
+
var _Input = require("./Input");
|
|
12
|
+
var _excluded = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "invalid", "onValueChange", "step", "thousandSeparator", "value"];
|
|
13
13
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
14
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
15
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
16
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
17
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
18
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
19
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
20
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
21
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
22
16
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
23
17
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
24
|
-
var multiplier = {
|
|
25
|
-
k: 1000,
|
|
26
|
-
m: 1000000,
|
|
27
|
-
b: 1000000000,
|
|
28
|
-
t: 1000000000000
|
|
29
|
-
};
|
|
30
18
|
var InputNumber = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
31
|
-
var _ref$
|
|
32
|
-
disableMacros = _ref$disableMacros === void 0 ? false : _ref$disableMacros,
|
|
33
|
-
_ref$disableAbbreviat = _ref.disableAbbreviation,
|
|
34
|
-
disableAbbreviation = _ref$disableAbbreviat === void 0 ? false : _ref$disableAbbreviat,
|
|
35
|
-
_ref$decimalLength = _ref.decimalLength,
|
|
19
|
+
var _ref$decimalLength = _ref.decimalLength,
|
|
36
20
|
decimalLength = _ref$decimalLength === void 0 ? 2 : _ref$decimalLength,
|
|
37
|
-
_ref$thousandSeparato = _ref.thousandSeparator,
|
|
38
|
-
thousandSeparator = _ref$thousandSeparato === void 0 ? "," : _ref$thousandSeparato,
|
|
39
21
|
_ref$decimalSeparator = _ref.decimalSeparator,
|
|
40
22
|
decimalSeparator = _ref$decimalSeparator === void 0 ? "." : _ref$decimalSeparator,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
onKeyDown = _ref.onKeyDown,
|
|
44
|
-
onFocus = _ref.onFocus,
|
|
45
|
-
onValueChange = _ref.onValueChange,
|
|
23
|
+
_ref$disableAbbreviat = _ref.disableAbbreviation,
|
|
24
|
+
disableAbbreviation = _ref$disableAbbreviat === void 0 ? false : _ref$disableAbbreviat,
|
|
46
25
|
disabled = _ref.disabled,
|
|
26
|
+
_ref$disableMacros = _ref.disableMacros,
|
|
27
|
+
disableMacros = _ref$disableMacros === void 0 ? false : _ref$disableMacros,
|
|
47
28
|
invalid = _ref.invalid,
|
|
29
|
+
onValueChange = _ref.onValueChange,
|
|
48
30
|
_ref$step = _ref.step,
|
|
49
31
|
step = _ref$step === void 0 ? 1 : _ref$step,
|
|
32
|
+
_ref$thousandSeparato = _ref.thousandSeparator,
|
|
33
|
+
thousandSeparator = _ref$thousandSeparato === void 0 ? "," : _ref$thousandSeparato,
|
|
34
|
+
value = _ref.value,
|
|
50
35
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
51
|
-
var _useState = (0, _react.useState)(value),
|
|
52
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
53
|
-
formattedValue = _useState2[0],
|
|
54
|
-
setFormatted = _useState2[1];
|
|
55
|
-
var _useState3 = (0, _react.useState)(value),
|
|
56
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
57
|
-
rootValue = _useState4[0],
|
|
58
|
-
setRootValue = _useState4[1];
|
|
59
36
|
var inputRef = (0, _react.useRef)(null);
|
|
60
37
|
var handleRef = (0, _utils.useForkRef)(ref, inputRef);
|
|
61
|
-
var
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
var numericInput = disableMacros ? inputValue : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, function (_, num, unit) {
|
|
78
|
-
return (parseFloat(num) * multiplier[unit.toLowerCase()]).toString();
|
|
79
|
-
});
|
|
80
|
-
var regexString = "^(\\d{0,9}(?:[".concat(thousandSeparator, "]?\\d{0,3})*(?:\\").concat(decimalSeparator, "\\d{0,").concat(decimalLength, "})?)?$");
|
|
81
|
-
if (thousandSeparator === ",") {
|
|
82
|
-
isValidInput = new RegExp(regexString).test(numericInput);
|
|
83
|
-
}
|
|
84
|
-
if (thousandSeparator === ".") {
|
|
85
|
-
isValidInput = new RegExp(regexString).test(numericInput);
|
|
86
|
-
}
|
|
87
|
-
if (!isValidInput) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
setFormatted(numericInput);
|
|
91
|
-
onValueChange && onValueChange(numericInput);
|
|
92
|
-
};
|
|
93
|
-
var handleKeyDown = function handleKeyDown(e) {
|
|
94
|
-
var allowedChars = /[0-9km.,b]/i;
|
|
95
|
-
var key = e.key;
|
|
96
|
-
var _step = parseFloat(String(step));
|
|
97
|
-
if (key === "Escape") {
|
|
98
|
-
handleInputBlur();
|
|
99
|
-
}
|
|
100
|
-
if (key === "ArrowUp") {
|
|
101
|
-
e.preventDefault();
|
|
102
|
-
updateValue("increment", _step);
|
|
103
|
-
}
|
|
104
|
-
if (key === "ArrowDown") {
|
|
105
|
-
e.preventDefault();
|
|
106
|
-
updateValue("decrement", _step);
|
|
107
|
-
}
|
|
108
|
-
if ((e.metaKey || e.ctrlKey) && e.key === "a") {
|
|
109
|
-
handleSelect();
|
|
110
|
-
}
|
|
111
|
-
if (!allowedChars.test(key)) {
|
|
112
|
-
e.preventDefault();
|
|
113
|
-
}
|
|
114
|
-
if (decimalLength === 0 && e.key === decimalSeparator) {
|
|
115
|
-
e.preventDefault();
|
|
116
|
-
}
|
|
117
|
-
onKeyDown && onKeyDown(e);
|
|
118
|
-
};
|
|
119
|
-
var handleBlur = function handleBlur(e) {
|
|
120
|
-
if (disableAbbreviation) {
|
|
121
|
-
setFormatted(formattedValue);
|
|
122
|
-
} else {
|
|
123
|
-
setFormatted((0, _currencyUtils.formatCurrency)(formattedValue, thousandSeparator));
|
|
124
|
-
}
|
|
125
|
-
setRootValue(formattedValue);
|
|
126
|
-
onBlur && onBlur(e);
|
|
127
|
-
};
|
|
128
|
-
var handleFocus = function handleFocus(e) {
|
|
129
|
-
setFormatted(rootValue);
|
|
130
|
-
onFocus && onFocus(e);
|
|
131
|
-
};
|
|
132
|
-
var updateValue = function updateValue(type, step) {
|
|
133
|
-
var value = String(formattedValue);
|
|
134
|
-
var decimalPart = "";
|
|
135
|
-
var increasedValue = 0;
|
|
136
|
-
var nonDecimalPart = value.replaceAll(thousandSeparator, "");
|
|
137
|
-
if (!value) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
if (value.includes(decimalSeparator)) {
|
|
141
|
-
nonDecimalPart = value.slice(0, value.indexOf(decimalSeparator)).replaceAll(thousandSeparator, "");
|
|
142
|
-
}
|
|
143
|
-
if (value.includes(decimalSeparator)) {
|
|
144
|
-
decimalPart = value.slice(value.indexOf(decimalSeparator));
|
|
145
|
-
}
|
|
146
|
-
if (type === "increment") {
|
|
147
|
-
increasedValue = parseFloat(nonDecimalPart) + step;
|
|
148
|
-
} else {
|
|
149
|
-
increasedValue = parseFloat(nonDecimalPart) - step;
|
|
150
|
-
}
|
|
151
|
-
if (value.includes(decimalSeparator)) {
|
|
152
|
-
increasedValue = parseFloat(increasedValue.toFixed(decimalLength));
|
|
153
|
-
}
|
|
154
|
-
var joinedValue = (0, _currencyUtils.numberWithSeparator)(increasedValue, thousandSeparator, value.includes(thousandSeparator));
|
|
155
|
-
setFormatted(decimalPart ? joinedValue + decimalPart : joinedValue);
|
|
156
|
-
};
|
|
38
|
+
var _useInputNumber = (0, _hooks.useInputNumber)({
|
|
39
|
+
decimalLength: decimalLength,
|
|
40
|
+
decimalSeparator: decimalSeparator,
|
|
41
|
+
disableAbbreviation: disableAbbreviation,
|
|
42
|
+
disableMacros: disableMacros,
|
|
43
|
+
onValueChange: onValueChange,
|
|
44
|
+
step: step,
|
|
45
|
+
thousandSeparator: thousandSeparator,
|
|
46
|
+
value: value
|
|
47
|
+
}, inputRef),
|
|
48
|
+
formattedValue = _useInputNumber.formattedValue,
|
|
49
|
+
handleBlur = _useInputNumber.handleBlur,
|
|
50
|
+
handleChange = _useInputNumber.handleChange,
|
|
51
|
+
handleFocus = _useInputNumber.handleFocus,
|
|
52
|
+
handleKeyDown = _useInputNumber.handleKeyDown;
|
|
157
53
|
return /*#__PURE__*/_react.default.createElement(_Input.Input, _extends({
|
|
158
54
|
ref: handleRef,
|
|
159
55
|
placeholder: "5".concat(thousandSeparator, "000").concat(decimalSeparator, "00"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputNumber.js","names":["multiplier","k","m","b","t","InputNumber","forwardRef","ref","disableMacros","disableAbbreviation","decimalLength","thousandSeparator","decimalSeparator","value","onBlur","onKeyDown","onFocus","onValueChange","disabled","invalid","step","rest","useState","formattedValue","setFormatted","rootValue","setRootValue","inputRef","useRef","handleRef","useForkRef","handleInputBlur","current","blur","handleSelect","select","handleChange","e","inputValue","target","isValidInput","startsWith","numericInput","replace","_","num","unit","parseFloat","toLowerCase","toString","regexString","RegExp","test","handleKeyDown","allowedChars","key","_step","String","preventDefault","updateValue","metaKey","ctrlKey","handleBlur","formatCurrency","handleFocus","type","decimalPart","increasedValue","nonDecimalPart","replaceAll","includes","slice","indexOf","toFixed","joinedValue","numberWithSeparator","displayName"],"sources":["../../../../src/components/Input/InputNumber.tsx"],"sourcesContent":["import React, {\n ChangeEventHandler,\n forwardRef,\n FocusEventHandler,\n KeyboardEventHandler,\n useRef,\n useState,\n} from \"react\";\nimport { Input } from \"./Input\";\nimport { formatCurrency, numberWithSeparator } from \"../../utils/currencyUtils\";\nimport { useForkRef } from \"../../utils\";\n\nimport type { InputProps } from \"./Input\";\n\nconst multiplier = {\n k: 1_000,\n m: 1_000_000,\n b: 1_000_000_000,\n t: 1_000_000_000_000,\n};\n\nexport type Separators = \".\" | \",\";\n\nexport interface InputNumberProps extends InputProps {\n decimalSeparator?: Separators;\n thousandSeparator?: Separators;\n disableAbbreviation?: boolean;\n disableMacros?: boolean;\n decimalLength?: number;\n onValueChange?: (value: string) => void;\n}\n\nexport const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n disableMacros = false,\n disableAbbreviation = false,\n decimalLength = 2,\n thousandSeparator = \",\",\n decimalSeparator = \".\",\n value,\n onBlur,\n onKeyDown,\n onFocus,\n onValueChange,\n disabled,\n invalid,\n step = 1,\n ...rest\n },\n ref\n ) => {\n const [formattedValue, setFormatted] = useState(value);\n const [rootValue, setRootValue] = useState(value);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const handleInputBlur = () => {\n if (inputRef && inputRef.current) {\n inputRef.current.blur();\n }\n };\n\n const handleSelect = () => {\n if (inputRef && inputRef.current) {\n inputRef.current.select();\n }\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n const inputValue = e.target.value;\n let isValidInput = false;\n\n if (inputValue.startsWith(\"00\")) {\n return;\n }\n\n const numericInput = disableMacros\n ? inputValue\n : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {\n return (\n parseFloat(num) * multiplier[unit.toLowerCase()]\n ).toString();\n });\n\n const regexString = `^(\\\\d{0,9}(?:[${thousandSeparator}]?\\\\d{0,3})*(?:\\\\${decimalSeparator}\\\\d{0,${decimalLength}})?)?$`;\n\n if (thousandSeparator === \",\") {\n isValidInput = new RegExp(regexString).test(numericInput);\n }\n\n if (thousandSeparator === \".\") {\n isValidInput = new RegExp(regexString).test(numericInput);\n }\n\n if (!isValidInput) {\n return;\n }\n\n setFormatted(numericInput);\n\n onValueChange && onValueChange(numericInput);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLInputElement> = (e) => {\n const allowedChars = /[0-9km.,b]/i;\n const key = e.key;\n const _step = parseFloat(String(step));\n\n if (key === \"Escape\") {\n handleInputBlur();\n }\n\n if (key === \"ArrowUp\") {\n e.preventDefault();\n\n updateValue(\"increment\", _step);\n }\n\n if (key === \"ArrowDown\") {\n e.preventDefault();\n\n updateValue(\"decrement\", _step);\n }\n\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n handleSelect();\n }\n\n if (!allowedChars.test(key)) {\n e.preventDefault();\n }\n\n if (decimalLength === 0 && e.key === decimalSeparator) {\n e.preventDefault();\n }\n\n onKeyDown && onKeyDown(e);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (e) => {\n if (disableAbbreviation) {\n setFormatted(formattedValue);\n } else {\n setFormatted(\n formatCurrency(formattedValue as string, thousandSeparator)\n );\n }\n\n setRootValue(formattedValue);\n\n onBlur && onBlur(e);\n };\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (e) => {\n setFormatted(rootValue);\n\n onFocus && onFocus(e);\n };\n\n const updateValue = (type: \"increment\" | \"decrement\", step: number) => {\n const value = String(formattedValue);\n\n let decimalPart = \"\";\n let increasedValue = 0;\n let nonDecimalPart = value.replaceAll(thousandSeparator, \"\");\n\n if (!value) {\n return;\n }\n\n if (value.includes(decimalSeparator)) {\n nonDecimalPart = value\n .slice(0, value.indexOf(decimalSeparator))\n .replaceAll(thousandSeparator, \"\");\n }\n\n if (value.includes(decimalSeparator)) {\n decimalPart = value.slice(value.indexOf(decimalSeparator));\n }\n\n if (type === \"increment\") {\n increasedValue = parseFloat(nonDecimalPart) + step;\n } else {\n increasedValue = parseFloat(nonDecimalPart) - step;\n }\n\n if (value.includes(decimalSeparator)) {\n increasedValue = parseFloat(increasedValue.toFixed(decimalLength));\n }\n\n const joinedValue = numberWithSeparator(\n increasedValue,\n thousandSeparator,\n value.includes(thousandSeparator)\n );\n\n setFormatted(decimalPart ? joinedValue + decimalPart : joinedValue);\n };\n\n return (\n <Input\n ref={handleRef}\n placeholder={`5${thousandSeparator}000${decimalSeparator}00`}\n value={formattedValue}\n type=\"text\"\n disabled={disabled}\n invalid={invalid}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n aria-placeholder={`5${thousandSeparator}000${decimalSeparator}00`}\n aria-disabled={disabled}\n aria-invalid={invalid}\n {...rest}\n />\n );\n }\n);\n\nInputNumber.displayName = \"InputNumber\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InputNumber.js","names":["InputNumber","forwardRef","ref","decimalLength","decimalSeparator","disableAbbreviation","disabled","disableMacros","invalid","onValueChange","step","thousandSeparator","value","rest","inputRef","useRef","handleRef","useForkRef","useInputNumber","formattedValue","handleBlur","handleChange","handleFocus","handleKeyDown","displayName"],"sources":["../../../../src/components/Input/InputNumber.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from \"react\";\nimport { InputNumberProps, useInputNumber } from \"../../hooks\";\nimport { useForkRef } from \"../../utils\";\nimport { Input } from \"./Input\";\n\nexport const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n invalid,\n onValueChange,\n step = 1,\n thousandSeparator = \",\",\n value,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const {\n formattedValue,\n handleBlur,\n handleChange,\n handleFocus,\n handleKeyDown,\n } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n onValueChange,\n step,\n thousandSeparator,\n value,\n },\n inputRef\n );\n\n return (\n <Input\n ref={handleRef}\n placeholder={`5${thousandSeparator}000${decimalSeparator}00`}\n value={formattedValue}\n type=\"text\"\n disabled={disabled}\n invalid={invalid}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n aria-placeholder={`5${thousandSeparator}000${decimalSeparator}00`}\n aria-disabled={disabled}\n aria-invalid={invalid}\n {...rest}\n />\n );\n }\n);\n\nInputNumber.displayName = \"InputNumber\";\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAEzB,IAAMA,WAAW,gBAAG,IAAAC,iBAAU,EACnC,gBAcEC,GAAG,EACA;EAAA,8BAbDC,aAAa;IAAbA,aAAa,mCAAG,CAAC;IAAA,6BACjBC,gBAAgB;IAAhBA,gBAAgB,sCAAG,GAAG;IAAA,6BACtBC,mBAAmB;IAAnBA,mBAAmB,sCAAG,KAAK;IAC3BC,QAAQ,QAARA,QAAQ;IAAA,0BACRC,aAAa;IAAbA,aAAa,mCAAG,KAAK;IACrBC,OAAO,QAAPA,OAAO;IACPC,aAAa,QAAbA,aAAa;IAAA,iBACbC,IAAI;IAAJA,IAAI,0BAAG,CAAC;IAAA,6BACRC,iBAAiB;IAAjBA,iBAAiB,sCAAG,GAAG;IACvBC,KAAK,QAALA,KAAK;IACFC,IAAI;EAIT,IAAMC,QAAQ,GAAG,IAAAC,aAAM,EAA0B,IAAI,CAAC;EACtD,IAAMC,SAAS,GAAG,IAAAC,iBAAU,EAACf,GAAG,EAAEY,QAAQ,CAAC;EAE3C,sBAMI,IAAAI,qBAAc,EAChB;MACEf,aAAa,EAAbA,aAAa;MACbC,gBAAgB,EAAhBA,gBAAgB;MAChBC,mBAAmB,EAAnBA,mBAAmB;MACnBE,aAAa,EAAbA,aAAa;MACbE,aAAa,EAAbA,aAAa;MACbC,IAAI,EAAJA,IAAI;MACJC,iBAAiB,EAAjBA,iBAAiB;MACjBC,KAAK,EAALA;IACF,CAAC,EACDE,QAAQ,CACT;IAjBCK,cAAc,mBAAdA,cAAc;IACdC,UAAU,mBAAVA,UAAU;IACVC,YAAY,mBAAZA,YAAY;IACZC,WAAW,mBAAXA,WAAW;IACXC,aAAa,mBAAbA,aAAa;EAef,oBACE,6BAAC,YAAK;IACJ,GAAG,EAAEP,SAAU;IACf,WAAW,aAAML,iBAAiB,gBAAMP,gBAAgB,OAAK;IAC7D,KAAK,EAAEe,cAAe;IACtB,IAAI,EAAC,MAAM;IACX,QAAQ,EAAEb,QAAS;IACnB,OAAO,EAAEE,OAAQ;IACjB,QAAQ,EAAEa,YAAa;IACvB,OAAO,EAAEC,WAAY;IACrB,MAAM,EAAEF,UAAW;IACnB,SAAS,EAAEG,aAAc;IACzB,+BAAsBZ,iBAAiB,gBAAMP,gBAAgB,OAAK;IAClE,iBAAeE,QAAS;IACxB,gBAAcE;EAAQ,GAClBK,IAAI,EACR;AAEN,CAAC,CACF;AAAC;AAEFb,WAAW,CAACwB,WAAW,GAAG,aAAa"}
|
package/dist/cjs/hooks/index.js
CHANGED
|
@@ -25,4 +25,15 @@ Object.keys(_useHeight).forEach(function (key) {
|
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
|
+
var _useInputNumber = require("./useInputNumber");
|
|
29
|
+
Object.keys(_useInputNumber).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _useInputNumber[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function get() {
|
|
35
|
+
return _useInputNumber[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
28
39
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export * from \"./useInitScrollRef\";\nexport * from \"./useHeight\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export * from \"./useInitScrollRef\";\nexport * from \"./useHeight\";\nexport * from \"./useInputNumber\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useInputNumber = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _currencyUtils = require("../utils/currencyUtils");
|
|
9
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
10
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
12
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
13
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
14
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
15
|
+
var useInputNumber = function useInputNumber(_ref, ref) {
|
|
16
|
+
var _ref$decimalSeparator = _ref.decimalSeparator,
|
|
17
|
+
decimalSeparator = _ref$decimalSeparator === void 0 ? "." : _ref$decimalSeparator,
|
|
18
|
+
_ref$thousandSeparato = _ref.thousandSeparator,
|
|
19
|
+
thousandSeparator = _ref$thousandSeparato === void 0 ? "," : _ref$thousandSeparato,
|
|
20
|
+
disableAbbreviation = _ref.disableAbbreviation,
|
|
21
|
+
disableMacros = _ref.disableMacros,
|
|
22
|
+
decimalLength = _ref.decimalLength,
|
|
23
|
+
value = _ref.value,
|
|
24
|
+
onValueChange = _ref.onValueChange,
|
|
25
|
+
onKeyDown = _ref.onKeyDown,
|
|
26
|
+
onBlur = _ref.onBlur,
|
|
27
|
+
onFocus = _ref.onFocus,
|
|
28
|
+
step = _ref.step;
|
|
29
|
+
var _useState = (0, _react.useState)(value),
|
|
30
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
31
|
+
formattedValue = _useState2[0],
|
|
32
|
+
setFormatted = _useState2[1];
|
|
33
|
+
var _useState3 = (0, _react.useState)(value),
|
|
34
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
35
|
+
rootValue = _useState4[0],
|
|
36
|
+
setRootValue = _useState4[1];
|
|
37
|
+
var _useState5 = (0, _react.useState)(false),
|
|
38
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
39
|
+
focused = _useState6[0],
|
|
40
|
+
setFocused = _useState6[1];
|
|
41
|
+
var handleInputBlur = function handleInputBlur() {
|
|
42
|
+
if (ref && ref.current) {
|
|
43
|
+
ref.current.blur();
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
var handleSelect = function handleSelect() {
|
|
47
|
+
if (ref && ref.current) {
|
|
48
|
+
ref.current.select();
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
var handleChange = function handleChange(e) {
|
|
52
|
+
var inputValue = e.target.value;
|
|
53
|
+
var isValidInput = false;
|
|
54
|
+
if (inputValue.startsWith("00")) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
var numericInput = disableMacros ? inputValue : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, function (_, num, unit) {
|
|
58
|
+
return (parseFloat(num) * _currencyUtils.currencyMultiplier[unit.toLowerCase()]).toString();
|
|
59
|
+
});
|
|
60
|
+
var regexString = "^(-?\\d{0,9}(?:[".concat(thousandSeparator, "]?\\d{0,3})*(?:\\").concat(decimalSeparator, "\\d{0,").concat(decimalLength, "})?)?$");
|
|
61
|
+
if (thousandSeparator === ",") {
|
|
62
|
+
isValidInput = new RegExp(regexString).test(numericInput);
|
|
63
|
+
}
|
|
64
|
+
if (thousandSeparator === ".") {
|
|
65
|
+
isValidInput = new RegExp(regexString).test(numericInput);
|
|
66
|
+
}
|
|
67
|
+
if (!isValidInput) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
setFormatted(numericInput);
|
|
71
|
+
onValueChange && onValueChange(numericInput);
|
|
72
|
+
};
|
|
73
|
+
var handleKeyDown = function handleKeyDown(e) {
|
|
74
|
+
var key = e.key;
|
|
75
|
+
var _step = parseFloat(String(step));
|
|
76
|
+
if (key === "Escape") {
|
|
77
|
+
handleInputBlur();
|
|
78
|
+
}
|
|
79
|
+
if (key === "ArrowUp") {
|
|
80
|
+
e.preventDefault();
|
|
81
|
+
updateValue("increment", _step);
|
|
82
|
+
}
|
|
83
|
+
if (key === "ArrowDown") {
|
|
84
|
+
e.preventDefault();
|
|
85
|
+
updateValue("decrement", _step);
|
|
86
|
+
}
|
|
87
|
+
if ((e.metaKey || e.ctrlKey) && e.key === "a") {
|
|
88
|
+
handleSelect();
|
|
89
|
+
}
|
|
90
|
+
if (decimalLength === 0 && e.key === decimalSeparator) {
|
|
91
|
+
e.preventDefault();
|
|
92
|
+
}
|
|
93
|
+
onKeyDown && onKeyDown(e);
|
|
94
|
+
};
|
|
95
|
+
var handleBlur = function handleBlur(e) {
|
|
96
|
+
if (disableAbbreviation) {
|
|
97
|
+
setFormatted(formattedValue);
|
|
98
|
+
} else {
|
|
99
|
+
setFormatted((0, _currencyUtils.formatCurrency)(formattedValue, thousandSeparator));
|
|
100
|
+
}
|
|
101
|
+
setRootValue(formattedValue);
|
|
102
|
+
setFocused(false);
|
|
103
|
+
onBlur && onBlur(e);
|
|
104
|
+
};
|
|
105
|
+
var handleFocus = function handleFocus(e) {
|
|
106
|
+
setFormatted(rootValue);
|
|
107
|
+
setFocused(true);
|
|
108
|
+
onFocus && onFocus(e);
|
|
109
|
+
};
|
|
110
|
+
var updateValue = function updateValue(type, step) {
|
|
111
|
+
var value = String(formattedValue);
|
|
112
|
+
var decimalPart = "";
|
|
113
|
+
var increasedValue = 0;
|
|
114
|
+
var nonDecimalPart = value.replaceAll(thousandSeparator, "");
|
|
115
|
+
if (!value) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (value.includes(decimalSeparator)) {
|
|
119
|
+
nonDecimalPart = value.slice(0, value.indexOf(decimalSeparator)).replaceAll(thousandSeparator, "");
|
|
120
|
+
}
|
|
121
|
+
if (value.includes(decimalSeparator)) {
|
|
122
|
+
decimalPart = value.slice(value.indexOf(decimalSeparator));
|
|
123
|
+
}
|
|
124
|
+
if (type === "increment") {
|
|
125
|
+
increasedValue = parseFloat(nonDecimalPart) + step;
|
|
126
|
+
} else {
|
|
127
|
+
increasedValue = parseFloat(nonDecimalPart) - step;
|
|
128
|
+
}
|
|
129
|
+
if (value.includes(decimalSeparator)) {
|
|
130
|
+
increasedValue = parseFloat(increasedValue.toFixed(decimalLength));
|
|
131
|
+
}
|
|
132
|
+
var joinedValue = (0, _currencyUtils.numberWithSeparator)(increasedValue, thousandSeparator, value.includes(thousandSeparator));
|
|
133
|
+
setFormatted(decimalPart ? joinedValue + decimalPart : joinedValue);
|
|
134
|
+
};
|
|
135
|
+
return {
|
|
136
|
+
focused: focused,
|
|
137
|
+
formattedValue: formattedValue,
|
|
138
|
+
rootValue: rootValue,
|
|
139
|
+
handleChange: handleChange,
|
|
140
|
+
handleKeyDown: handleKeyDown,
|
|
141
|
+
handleBlur: handleBlur,
|
|
142
|
+
handleFocus: handleFocus,
|
|
143
|
+
onValueChange: onValueChange
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
exports.useInputNumber = useInputNumber;
|
|
147
|
+
//# sourceMappingURL=useInputNumber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInputNumber.js","names":["useInputNumber","ref","decimalSeparator","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","value","onValueChange","onKeyDown","onBlur","onFocus","step","useState","formattedValue","setFormatted","rootValue","setRootValue","focused","setFocused","handleInputBlur","current","blur","handleSelect","select","handleChange","e","inputValue","target","isValidInput","startsWith","numericInput","replace","_","num","unit","parseFloat","currencyMultiplier","toLowerCase","toString","regexString","RegExp","test","handleKeyDown","key","_step","String","preventDefault","updateValue","metaKey","ctrlKey","handleBlur","formatCurrency","handleFocus","type","decimalPart","increasedValue","nonDecimalPart","replaceAll","includes","slice","indexOf","toFixed","joinedValue","numberWithSeparator"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n ChangeEventHandler,\n KeyboardEventHandler,\n FocusEventHandler,\n MutableRefObject,\n} from \"react\";\nimport {\n currencyMultiplier,\n formatCurrency,\n numberWithSeparator,\n} from \"../utils/currencyUtils\";\nimport type { InputProps } from \"../components\";\n\nexport type Separators = \".\" | \",\";\n\n// https://www.youtube.com/watch?v=2AilA-M6N5U\n// @TODO: Pitati foo za testove.\nexport interface InputNumberProps extends InputProps {\n decimalLength?: number;\n decimalSeparator?: Separators;\n disableAbbreviation?: boolean;\n disableMacros?: boolean;\n thousandSeparator?: Separators;\n onValueChange?: (value: string) => void;\n}\n\nexport const useInputNumber = (\n {\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n disableAbbreviation,\n disableMacros,\n decimalLength,\n value,\n onValueChange,\n onKeyDown,\n onBlur,\n onFocus,\n step,\n }: InputNumberProps,\n ref: MutableRefObject<HTMLInputElement | null>\n) => {\n const [formattedValue, setFormatted] = useState(value);\n const [rootValue, setRootValue] = useState(value);\n const [focused, setFocused] = useState<boolean>(false);\n\n const handleInputBlur = () => {\n if (ref && ref.current) {\n ref.current.blur();\n }\n };\n\n const handleSelect = () => {\n if (ref && ref.current) {\n ref.current.select();\n }\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n const inputValue = e.target.value;\n let isValidInput = false;\n\n if (inputValue.startsWith(\"00\")) {\n return;\n }\n\n const numericInput = disableMacros\n ? inputValue\n : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {\n return (\n parseFloat(num) * currencyMultiplier[unit.toLowerCase()]\n ).toString();\n });\n\n const regexString = `^(-?\\\\d{0,9}(?:[${thousandSeparator}]?\\\\d{0,3})*(?:\\\\${decimalSeparator}\\\\d{0,${decimalLength}})?)?$`;\n\n if (thousandSeparator === \",\") {\n isValidInput = new RegExp(regexString).test(numericInput);\n }\n\n if (thousandSeparator === \".\") {\n isValidInput = new RegExp(regexString).test(numericInput);\n }\n\n if (!isValidInput) {\n return;\n }\n\n setFormatted(numericInput);\n\n onValueChange && onValueChange(numericInput);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLInputElement> = (e) => {\n const key = e.key;\n const _step = parseFloat(String(step));\n\n if (key === \"Escape\") {\n handleInputBlur();\n }\n\n if (key === \"ArrowUp\") {\n e.preventDefault();\n\n updateValue(\"increment\", _step);\n }\n\n if (key === \"ArrowDown\") {\n e.preventDefault();\n\n updateValue(\"decrement\", _step);\n }\n\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n handleSelect();\n }\n\n if (decimalLength === 0 && e.key === decimalSeparator) {\n e.preventDefault();\n }\n\n onKeyDown && onKeyDown(e);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (e) => {\n if (disableAbbreviation) {\n setFormatted(formattedValue);\n } else {\n setFormatted(formatCurrency(formattedValue as string, thousandSeparator));\n }\n\n setRootValue(formattedValue);\n setFocused(false);\n\n onBlur && onBlur(e);\n };\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (e) => {\n setFormatted(rootValue);\n setFocused(true);\n\n onFocus && onFocus(e);\n };\n\n const updateValue = (type: \"increment\" | \"decrement\", step: number) => {\n const value = String(formattedValue);\n\n let decimalPart = \"\";\n let increasedValue = 0;\n let nonDecimalPart = value.replaceAll(thousandSeparator, \"\");\n\n if (!value) {\n return;\n }\n\n if (value.includes(decimalSeparator)) {\n nonDecimalPart = value\n .slice(0, value.indexOf(decimalSeparator))\n .replaceAll(thousandSeparator, \"\");\n }\n\n if (value.includes(decimalSeparator)) {\n decimalPart = value.slice(value.indexOf(decimalSeparator));\n }\n\n if (type === \"increment\") {\n increasedValue = parseFloat(nonDecimalPart) + step;\n } else {\n increasedValue = parseFloat(nonDecimalPart) - step;\n }\n\n if (value.includes(decimalSeparator)) {\n increasedValue = parseFloat(increasedValue.toFixed(decimalLength));\n }\n\n const joinedValue = numberWithSeparator(\n increasedValue,\n thousandSeparator,\n value.includes(thousandSeparator)\n );\n\n setFormatted(decimalPart ? joinedValue + decimalPart : joinedValue);\n };\n\n return {\n focused,\n formattedValue,\n rootValue,\n handleChange,\n handleKeyDown,\n handleBlur,\n handleFocus,\n onValueChange,\n } as const;\n};\n"],"mappings":"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"}
|
|
@@ -3,28 +3,31 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.numberWithSeparator = exports.formatCurrency = void 0;
|
|
6
|
+
exports.numberWithSeparator = exports.formatCurrency = exports.currencyMultiplier = void 0;
|
|
7
|
+
var currencyMultiplier = {
|
|
8
|
+
k: 1000,
|
|
9
|
+
m: 1000000,
|
|
10
|
+
b: 1000000000,
|
|
11
|
+
t: 1000000000000
|
|
12
|
+
};
|
|
13
|
+
exports.currencyMultiplier = currencyMultiplier;
|
|
7
14
|
var formatCurrency = function formatCurrency(n) {
|
|
8
15
|
var thousandSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ",";
|
|
9
16
|
var number = parseFloat(String(n).replaceAll(thousandSeparator, ""));
|
|
10
17
|
if (isNaN(number)) {
|
|
11
18
|
return "";
|
|
12
19
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return _formattedNum.endsWith(".0") ? (number / 1000000).toFixed(0) + "M" : _formattedNum + "M";
|
|
21
|
-
} else if (number >= 1000000000 && number < 1000000000000) {
|
|
22
|
-
var _formattedNum2 = (number / 1000000000).toFixed(1);
|
|
23
|
-
return _formattedNum2.endsWith(".0") ? (number / 1000000000).toFixed(0) + "B" : _formattedNum2 + "B";
|
|
24
|
-
} else if (number >= 1000000000000 && number < 1000000000000000) {
|
|
25
|
-
var _formattedNum3 = (number / 1000000000000).toFixed(1);
|
|
26
|
-
return _formattedNum3.endsWith(".0") ? (number / 1000000000000).toFixed(0) + "T" : _formattedNum3 + "T";
|
|
20
|
+
var isNegative = number < 0;
|
|
21
|
+
var absoluteNumber = Math.abs(number);
|
|
22
|
+
var suffixes = ["", "K", "M", "B", "T"];
|
|
23
|
+
var scale = 0;
|
|
24
|
+
while (absoluteNumber >= 1000 && scale < suffixes.length - 1) {
|
|
25
|
+
absoluteNumber /= 1000;
|
|
26
|
+
scale++;
|
|
27
27
|
}
|
|
28
|
+
var formattedNum = scale === 0 ? absoluteNumber.toFixed(0) : absoluteNumber.toFixed(1);
|
|
29
|
+
var result = formattedNum.endsWith(".0") ? formattedNum.slice(0, -2) : formattedNum;
|
|
30
|
+
return isNegative ? "-".concat(result).concat(suffixes[scale]) : "".concat(result).concat(suffixes[scale]);
|
|
28
31
|
};
|
|
29
32
|
exports.formatCurrency = formatCurrency;
|
|
30
33
|
var numberWithSeparator = function numberWithSeparator(x, thousandSeparator) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currencyUtils.js","names":["formatCurrency","n","thousandSeparator","number","parseFloat","String","replaceAll","isNaN","formattedNum","toFixed","endsWith","numberWithSeparator","x","format","parts","toString","split","replace","join"],"sources":["../../../src/utils/currencyUtils.ts"],"sourcesContent":["import { Separators } from \"../
|
|
1
|
+
{"version":3,"file":"currencyUtils.js","names":["currencyMultiplier","k","m","b","t","formatCurrency","n","thousandSeparator","number","parseFloat","String","replaceAll","isNaN","isNegative","absoluteNumber","Math","abs","suffixes","scale","length","formattedNum","toFixed","result","endsWith","slice","numberWithSeparator","x","format","parts","toString","split","replace","join"],"sources":["../../../src/utils/currencyUtils.ts"],"sourcesContent":["import { Separators } from \"../hooks\";\n\nexport const currencyMultiplier = {\n k: 1_000,\n m: 1_000_000,\n b: 1_000_000_000,\n t: 1_000_000_000_000,\n};\n\nexport const formatCurrency = (n: string, thousandSeparator = \",\") => {\n const number = parseFloat(String(n).replaceAll(thousandSeparator, \"\"));\n\n if (isNaN(number)) {\n return \"\";\n }\n\n const isNegative = number < 0;\n let absoluteNumber = Math.abs(number);\n\n const suffixes = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let scale = 0;\n\n while (absoluteNumber >= 1000 && scale < suffixes.length - 1) {\n absoluteNumber /= 1000;\n scale++;\n }\n\n const formattedNum =\n scale === 0 ? absoluteNumber.toFixed(0) : absoluteNumber.toFixed(1);\n const result = formattedNum.endsWith(\".0\")\n ? formattedNum.slice(0, -2)\n : formattedNum;\n\n return isNegative\n ? `-${result}${suffixes[scale]}`\n : `${result}${suffixes[scale]}`;\n};\n\nexport const numberWithSeparator = (\n x: number | string,\n thousandSeparator: Separators,\n format = true\n) => {\n if (!format) {\n return x;\n }\n\n const parts = x.toString().split(\".\");\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n return parts.join(\".\");\n};\n"],"mappings":";;;;;;AAEO,IAAMA,kBAAkB,GAAG;EAChCC,CAAC,EAAE,IAAK;EACRC,CAAC,EAAE,OAAS;EACZC,CAAC,EAAE,UAAa;EAChBC,CAAC,EAAE;AACL,CAAC;AAAC;AAEK,IAAMC,cAAc,GAAG,SAAjBA,cAAc,CAAIC,CAAS,EAA8B;EAAA,IAA5BC,iBAAiB,uEAAG,GAAG;EAC/D,IAAMC,MAAM,GAAGC,UAAU,CAACC,MAAM,CAACJ,CAAC,CAAC,CAACK,UAAU,CAACJ,iBAAiB,EAAE,EAAE,CAAC,CAAC;EAEtE,IAAIK,KAAK,CAACJ,MAAM,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EAEA,IAAMK,UAAU,GAAGL,MAAM,GAAG,CAAC;EAC7B,IAAIM,cAAc,GAAGC,IAAI,CAACC,GAAG,CAACR,MAAM,CAAC;EAErC,IAAMS,QAAQ,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzC,IAAIC,KAAK,GAAG,CAAC;EAEb,OAAOJ,cAAc,IAAI,IAAI,IAAII,KAAK,GAAGD,QAAQ,CAACE,MAAM,GAAG,CAAC,EAAE;IAC5DL,cAAc,IAAI,IAAI;IACtBI,KAAK,EAAE;EACT;EAEA,IAAME,YAAY,GAChBF,KAAK,KAAK,CAAC,GAAGJ,cAAc,CAACO,OAAO,CAAC,CAAC,CAAC,GAAGP,cAAc,CAACO,OAAO,CAAC,CAAC,CAAC;EACrE,IAAMC,MAAM,GAAGF,YAAY,CAACG,QAAQ,CAAC,IAAI,CAAC,GACtCH,YAAY,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACzBJ,YAAY;EAEhB,OAAOP,UAAU,cACTS,MAAM,SAAGL,QAAQ,CAACC,KAAK,CAAC,cACzBI,MAAM,SAAGL,QAAQ,CAACC,KAAK,CAAC,CAAE;AACnC,CAAC;AAAC;AAEK,IAAMO,mBAAmB,GAAG,SAAtBA,mBAAmB,CAC9BC,CAAkB,EAClBnB,iBAA6B,EAE1B;EAAA,IADHoB,MAAM,uEAAG,IAAI;EAEb,IAAI,CAACA,MAAM,EAAE;IACX,OAAOD,CAAC;EACV;EAEA,IAAME,KAAK,GAAGF,CAAC,CAACG,QAAQ,EAAE,CAACC,KAAK,CAAC,GAAG,CAAC;EACrCF,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAACG,OAAO,CAAC,uBAAuB,EAAExB,iBAAiB,CAAC;EAEvE,OAAOqB,KAAK,CAACI,IAAI,CAAC,GAAG,CAAC;AACxB,CAAC;AAAC"}
|