@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.
Files changed (49) hide show
  1. package/dist/cjs/components/EditableCurrency/EditableCurrency.js +76 -0
  2. package/dist/cjs/components/EditableCurrency/EditableCurrency.js.map +1 -0
  3. package/dist/cjs/components/EditableCurrency/index.js +17 -0
  4. package/dist/cjs/components/EditableCurrency/index.js.map +1 -0
  5. package/dist/cjs/components/Input/InputCurrency.js.map +1 -1
  6. package/dist/cjs/components/Input/InputNumber.js +27 -131
  7. package/dist/cjs/components/Input/InputNumber.js.map +1 -1
  8. package/dist/cjs/hooks/index.js +11 -0
  9. package/dist/cjs/hooks/index.js.map +1 -1
  10. package/dist/cjs/hooks/useInputNumber.js +147 -0
  11. package/dist/cjs/hooks/useInputNumber.js.map +1 -0
  12. package/dist/cjs/utils/currencyUtils.js +18 -15
  13. package/dist/cjs/utils/currencyUtils.js.map +1 -1
  14. package/dist/cjs/utils/currencyUtils.test.js +2 -2
  15. package/dist/cjs/utils/currencyUtils.test.js.map +1 -1
  16. package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts +4 -0
  17. package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts.map +1 -0
  18. package/dist/esm/components/EditableCurrency/EditableCurrency.js +63 -0
  19. package/dist/esm/components/EditableCurrency/EditableCurrency.js.map +1 -0
  20. package/dist/esm/components/EditableCurrency/index.d.ts +2 -0
  21. package/dist/esm/components/EditableCurrency/index.d.ts.map +1 -0
  22. package/dist/esm/components/EditableCurrency/index.js +2 -0
  23. package/dist/esm/components/EditableCurrency/index.js.map +1 -0
  24. package/dist/esm/components/Input/InputCurrency.d.ts +1 -1
  25. package/dist/esm/components/Input/InputCurrency.d.ts.map +1 -1
  26. package/dist/esm/components/Input/InputCurrency.js.map +1 -1
  27. package/dist/esm/components/Input/InputNumber.d.ts +1 -10
  28. package/dist/esm/components/Input/InputNumber.d.ts.map +1 -1
  29. package/dist/esm/components/Input/InputNumber.js +28 -124
  30. package/dist/esm/components/Input/InputNumber.js.map +1 -1
  31. package/dist/esm/hooks/index.d.ts +1 -0
  32. package/dist/esm/hooks/index.d.ts.map +1 -1
  33. package/dist/esm/hooks/index.js +1 -0
  34. package/dist/esm/hooks/index.js.map +1 -1
  35. package/dist/esm/hooks/useInputNumber.d.ts +22 -0
  36. package/dist/esm/hooks/useInputNumber.d.ts.map +1 -0
  37. package/dist/esm/hooks/useInputNumber.js +131 -0
  38. package/dist/esm/hooks/useInputNumber.js.map +1 -0
  39. package/dist/esm/utils/currencyUtils.d.ts +8 -2
  40. package/dist/esm/utils/currencyUtils.d.ts.map +1 -1
  41. package/dist/esm/utils/currencyUtils.js +16 -14
  42. package/dist/esm/utils/currencyUtils.js.map +1 -1
  43. package/dist/esm/utils/currencyUtils.test.js +2 -2
  44. package/dist/esm/utils/currencyUtils.test.js.map +1 -1
  45. package/dist/index.js +167 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/index.min.js +1 -1
  48. package/dist/index.min.js.map +1 -1
  49. 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 \"./InputNumber\";\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"}
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 _Input = require("./Input");
10
- var _currencyUtils = require("../../utils/currencyUtils");
9
+ var _hooks = require("../../hooks");
11
10
  var _utils = require("../../utils");
12
- var _excluded = ["disableMacros", "disableAbbreviation", "decimalLength", "thousandSeparator", "decimalSeparator", "value", "onBlur", "onKeyDown", "onFocus", "onValueChange", "disabled", "invalid", "step"];
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$disableMacros = _ref.disableMacros,
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
- value = _ref.value,
42
- onBlur = _ref.onBlur,
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 handleInputBlur = function handleInputBlur() {
62
- if (inputRef && inputRef.current) {
63
- inputRef.current.blur();
64
- }
65
- };
66
- var handleSelect = function handleSelect() {
67
- if (inputRef && inputRef.current) {
68
- inputRef.current.select();
69
- }
70
- };
71
- var handleChange = function handleChange(e) {
72
- var inputValue = e.target.value;
73
- var isValidInput = false;
74
- if (inputValue.startsWith("00")) {
75
- return;
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"}
@@ -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
- if (number < 1000) {
14
- return n;
15
- } else if (number >= 1000 && number < 1000000) {
16
- var formattedNum = (number / 1000).toFixed(1);
17
- return formattedNum.endsWith(".0") ? (number / 1000).toFixed(0) + "K" : formattedNum + "K";
18
- } else if (number >= 1000000 && number < 1000000000) {
19
- var _formattedNum = (number / 1000000).toFixed(1);
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 \"../components/Input/InputNumber\";\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 if (number < 1000) {\n return n;\n } else if (number >= 1000 && number < 1_000_000) {\n const formattedNum = (number / 1000).toFixed(1);\n return formattedNum.endsWith(\".0\")\n ? (number / 1000).toFixed(0) + \"K\"\n : formattedNum + \"K\";\n } else if (number >= 1_000_000 && number < 1_000_000_000) {\n const formattedNum = (number / 1_000_000).toFixed(1);\n return formattedNum.endsWith(\".0\")\n ? (number / 1_000_000).toFixed(0) + \"M\"\n : formattedNum + \"M\";\n } else if (number >= 1_000_000_000 && number < 1_000_000_000_000) {\n const formattedNum = (number / 1_000_000_000).toFixed(1);\n return formattedNum.endsWith(\".0\")\n ? (number / 1_000_000_000).toFixed(0) + \"B\"\n : formattedNum + \"B\";\n } else if (number >= 1_000_000_000_000 && number < 1_000_000_000_000_000) {\n const formattedNum = (number / 1_000_000_000_000).toFixed(1);\n return formattedNum.endsWith(\".0\")\n ? (number / 1_000_000_000_000).toFixed(0) + \"T\"\n : formattedNum + \"T\";\n }\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,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,IAAIA,MAAM,GAAG,IAAI,EAAE;IACjB,OAAOF,CAAC;EACV,CAAC,MAAM,IAAIE,MAAM,IAAI,IAAI,IAAIA,MAAM,GAAG,OAAS,EAAE;IAC/C,IAAMK,YAAY,GAAG,CAACL,MAAM,GAAG,IAAI,EAAEM,OAAO,CAAC,CAAC,CAAC;IAC/C,OAAOD,YAAY,CAACE,QAAQ,CAAC,IAAI,CAAC,GAC9B,CAACP,MAAM,GAAG,IAAI,EAAEM,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GAChCD,YAAY,GAAG,GAAG;EACxB,CAAC,MAAM,IAAIL,MAAM,IAAI,OAAS,IAAIA,MAAM,GAAG,UAAa,EAAE;IACxD,IAAMK,aAAY,GAAG,CAACL,MAAM,GAAG,OAAS,EAAEM,OAAO,CAAC,CAAC,CAAC;IACpD,OAAOD,aAAY,CAACE,QAAQ,CAAC,IAAI,CAAC,GAC9B,CAACP,MAAM,GAAG,OAAS,EAAEM,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GACrCD,aAAY,GAAG,GAAG;EACxB,CAAC,MAAM,IAAIL,MAAM,IAAI,UAAa,IAAIA,MAAM,GAAG,aAAiB,EAAE;IAChE,IAAMK,cAAY,GAAG,CAACL,MAAM,GAAG,UAAa,EAAEM,OAAO,CAAC,CAAC,CAAC;IACxD,OAAOD,cAAY,CAACE,QAAQ,CAAC,IAAI,CAAC,GAC9B,CAACP,MAAM,GAAG,UAAa,EAAEM,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GACzCD,cAAY,GAAG,GAAG;EACxB,CAAC,MAAM,IAAIL,MAAM,IAAI,aAAiB,IAAIA,MAAM,GAAG,gBAAqB,EAAE;IACxE,IAAMK,cAAY,GAAG,CAACL,MAAM,GAAG,aAAiB,EAAEM,OAAO,CAAC,CAAC,CAAC;IAC5D,OAAOD,cAAY,CAACE,QAAQ,CAAC,IAAI,CAAC,GAC9B,CAACP,MAAM,GAAG,aAAiB,EAAEM,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GAC7CD,cAAY,GAAG,GAAG;EACxB;AACF,CAAC;AAAC;AAEK,IAAMG,mBAAmB,GAAG,SAAtBA,mBAAmB,CAC9BC,CAAkB,EAClBV,iBAA6B,EAE1B;EAAA,IADHW,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,EAAEf,iBAAiB,CAAC;EAEvE,OAAOY,KAAK,CAACI,IAAI,CAAC,GAAG,CAAC;AACxB,CAAC;AAAC"}
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"}