@semcore/input-number 4.2.1 → 4.3.0

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 (35) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/cjs/InputNumber.js +34 -23
  3. package/lib/cjs/InputNumber.js.map +1 -1
  4. package/lib/cjs/index.d.js.map +1 -1
  5. package/lib/cjs/translations/__intergalactic-dynamic-locales.js +46 -0
  6. package/lib/cjs/translations/__intergalactic-dynamic-locales.js.map +1 -0
  7. package/lib/cjs/translations/de.json +4 -0
  8. package/lib/cjs/translations/en.json +4 -0
  9. package/lib/cjs/translations/es.json +4 -0
  10. package/lib/cjs/translations/fr.json +4 -0
  11. package/lib/cjs/translations/it.json +4 -0
  12. package/lib/cjs/translations/ja.json +4 -0
  13. package/lib/cjs/translations/ko.json +4 -0
  14. package/lib/cjs/translations/pt.json +4 -0
  15. package/lib/cjs/translations/tr.json +4 -0
  16. package/lib/cjs/translations/vi.json +4 -0
  17. package/lib/cjs/translations/zh.json +4 -0
  18. package/lib/es6/InputNumber.js +33 -23
  19. package/lib/es6/InputNumber.js.map +1 -1
  20. package/lib/es6/index.d.js.map +1 -1
  21. package/lib/es6/translations/__intergalactic-dynamic-locales.js +25 -0
  22. package/lib/es6/translations/__intergalactic-dynamic-locales.js.map +1 -0
  23. package/lib/es6/translations/de.json +4 -0
  24. package/lib/es6/translations/en.json +4 -0
  25. package/lib/es6/translations/es.json +4 -0
  26. package/lib/es6/translations/fr.json +4 -0
  27. package/lib/es6/translations/it.json +4 -0
  28. package/lib/es6/translations/ja.json +4 -0
  29. package/lib/es6/translations/ko.json +4 -0
  30. package/lib/es6/translations/pt.json +4 -0
  31. package/lib/es6/translations/tr.json +4 -0
  32. package/lib/es6/translations/vi.json +4 -0
  33. package/lib/es6/translations/zh.json +4 -0
  34. package/lib/types/index.d.ts +1 -0
  35. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [4.3.0] - 2022-12-14
6
+
7
+ ### Added
8
+
9
+ - Added internationalization of aria attributes.
10
+
5
11
  ## [4.2.1] - 2022-12-13
6
12
 
7
13
  ### Changed
@@ -31,6 +31,10 @@ var _input = _interopRequireDefault(require("@semcore/input"));
31
31
 
32
32
  var _buttons = _interopRequireDefault(require("./buttons"));
33
33
 
34
+ var _intergalacticDynamicLocales = require("./translations/__intergalactic-dynamic-locales");
35
+
36
+ var _i18nEnhance = _interopRequireDefault(require("@semcore/utils/lib/enhances/i18nEnhance"));
37
+
34
38
  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); }
35
39
 
36
40
  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; }
@@ -48,20 +52,20 @@ var style = (
48
52
  /*__reshadow_css_start__*/
49
53
  _core.sstyled.insert(
50
54
  /*__inner_css_start__*/
51
- ".___SInputNumber_109sv_gg_:hover .___SValue_109sv_gg_:not(.__disabled_109sv_gg_)~.___SControls_109sv_gg_{visibility:visible}.___SValue_109sv_gg_:focus~.___SControls_109sv_gg_{visibility:visible}.___SControls_109sv_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_109sv_gg_.__showControls_109sv_gg_{visibility:visible}.___SDown_109sv_gg_,.___SUp_109sv_gg_{padding:0;width:16px;color:var(--intergalactic-icon-secondary-neutral,#a9abb6);box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_109sv_gg_:focus,.___SUp_109sv_gg_:focus{outline:none}.___SDown_109sv_gg_:hover,.___SUp_109sv_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,#8a8e9b)}.___SUp_109sv_gg_{padding-bottom:1px}.___SDown_109sv_gg_{padding-top:1px}.___SValue_109sv_gg_::-webkit-inner-spin-button,.___SValue_109sv_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_109sv_gg_._type_number_109sv_gg_{-moz-appearance:textfield}.___SValue_109sv_gg_.__disabled_109sv_gg_~.___SControls_109sv_gg_{opacity:var(--intergalactic-disabled-opacity,.3);cursor:default;pointer-events:none}.___SValueHidden_109sv_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}"
55
+ ".___SInputNumber_e3dxg_gg_:hover .___SValue_e3dxg_gg_:not(.__disabled_e3dxg_gg_)~.___SControls_e3dxg_gg_{visibility:visible}.___SValue_e3dxg_gg_:focus~.___SControls_e3dxg_gg_{visibility:visible}.___SControls_e3dxg_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_e3dxg_gg_.__showControls_e3dxg_gg_{visibility:visible}.___SDown_e3dxg_gg_,.___SUp_e3dxg_gg_{padding:0;width:16px;color:var(--intergalactic-icon-secondary-neutral,#a9abb6);box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_e3dxg_gg_:focus,.___SUp_e3dxg_gg_:focus{outline:none}.___SDown_e3dxg_gg_:hover,.___SUp_e3dxg_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,#8a8e9b)}.___SUp_e3dxg_gg_{padding-bottom:1px}.___SDown_e3dxg_gg_{padding-top:1px}.___SValue_e3dxg_gg_::-webkit-inner-spin-button,.___SValue_e3dxg_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_e3dxg_gg_._type_number_e3dxg_gg_{-moz-appearance:textfield}.___SValue_e3dxg_gg_.__disabled_e3dxg_gg_~.___SControls_e3dxg_gg_{opacity:var(--intergalactic-disabled-opacity,.3);cursor:default;pointer-events:none}.___SValueHidden_e3dxg_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}"
52
56
  /*__inner_css_end__*/
53
- , "109sv_gg_")
57
+ , "e3dxg_gg_")
54
58
  /*__reshadow_css_end__*/
55
59
  , {
56
- "__SInputNumber": "___SInputNumber_109sv_gg_",
57
- "__SValue": "___SValue_109sv_gg_",
58
- "_disabled": "__disabled_109sv_gg_",
59
- "__SControls": "___SControls_109sv_gg_",
60
- "_showControls": "__showControls_109sv_gg_",
61
- "__SDown": "___SDown_109sv_gg_",
62
- "__SUp": "___SUp_109sv_gg_",
63
- "_type_number": "_type_number_109sv_gg_",
64
- "__SValueHidden": "___SValueHidden_109sv_gg_"
60
+ "__SInputNumber": "___SInputNumber_e3dxg_gg_",
61
+ "__SValue": "___SValue_e3dxg_gg_",
62
+ "_disabled": "__disabled_e3dxg_gg_",
63
+ "__SControls": "___SControls_e3dxg_gg_",
64
+ "_showControls": "__showControls_e3dxg_gg_",
65
+ "__SDown": "___SDown_e3dxg_gg_",
66
+ "__SUp": "___SUp_e3dxg_gg_",
67
+ "_type_number": "_type_number_e3dxg_gg_",
68
+ "__SValueHidden": "___SValueHidden_e3dxg_gg_"
65
69
  });
66
70
 
67
71
  function parseValueWithMinMax(value) {
@@ -123,11 +127,14 @@ var InputNumber = /*#__PURE__*/function (_Component) {
123
127
  }, {
124
128
  key: "getControlsProps",
125
129
  value: function getControlsProps() {
126
- var size = this.asProps.size;
130
+ var _this$asProps = this.asProps,
131
+ size = _this$asProps.size,
132
+ getI18nText = _this$asProps.getI18nText;
127
133
  return {
128
134
  size: size,
129
135
  inc: this.handlerInc,
130
- dec: this.handlerDec
136
+ dec: this.handlerDec,
137
+ getI18nText: getI18nText
131
138
  };
132
139
  }
133
140
  }, {
@@ -145,8 +152,11 @@ var InputNumber = /*#__PURE__*/function (_Component) {
145
152
 
146
153
  (0, _defineProperty2["default"])(InputNumber, "displayName", 'InputNumber');
147
154
  (0, _defineProperty2["default"])(InputNumber, "style", style);
155
+ (0, _defineProperty2["default"])(InputNumber, "enhance", [(0, _i18nEnhance["default"])(_intergalacticDynamicLocales.localizedMessages)]);
148
156
  (0, _defineProperty2["default"])(InputNumber, "defaultProps", {
149
- size: 'm'
157
+ size: 'm',
158
+ i18n: _intergalacticDynamicLocales.localizedMessages,
159
+ locale: 'en'
150
160
  });
151
161
 
152
162
  var Value = /*#__PURE__*/function (_Component2) {
@@ -218,12 +228,12 @@ var Value = /*#__PURE__*/function (_Component2) {
218
228
 
219
229
  var SValue = _input["default"].Value;
220
230
  var SValueHidden = 'div';
221
- var _this$asProps = this.asProps,
222
- styles = _this$asProps.styles,
223
- $inputHandlers = _this$asProps.$inputHandlers,
224
- value = _this$asProps.value,
225
- min = _this$asProps.min,
226
- max = _this$asProps.max; // 🐒 не делайте так
231
+ var _this$asProps2 = this.asProps,
232
+ styles = _this$asProps2.styles,
233
+ $inputHandlers = _this$asProps2.$inputHandlers,
234
+ value = _this$asProps2.value,
235
+ min = _this$asProps2.min,
236
+ max = _this$asProps2.max; // 🐒 не делайте так
227
237
 
228
238
  $inputHandlers.current = this.handlers;
229
239
  return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(SValue, _ref5.cn("SValue", _objectSpread({}, (0, _core.assignProps)({
@@ -256,7 +266,8 @@ function Controls(props) {
256
266
  inc = props.inc,
257
267
  dec = props.dec,
258
268
  size = props.size,
259
- styles = props.styles;
269
+ styles = props.styles,
270
+ getI18nText = props.getI18nText;
260
271
  var SControls = _input["default"].Addon;
261
272
  var SUp = 'button';
262
273
  var SDown = 'button';
@@ -265,13 +276,13 @@ function Controls(props) {
265
276
  "tabIndex": -1,
266
277
  "type": "button",
267
278
  "size": size,
268
- "aria-label": "Increment number"
279
+ "aria-label": getI18nText('increment')
269
280
  }), /*#__PURE__*/_react["default"].createElement(IconUp, _ref6.cn("IconUp", {}))), /*#__PURE__*/_react["default"].createElement(SDown, _ref6.cn("SDown", {
270
281
  "onClick": dec,
271
282
  "tabIndex": -1,
272
283
  "type": "button",
273
284
  "size": size,
274
- "aria-label": "Decrement number"
285
+ "aria-label": getI18nText('decrement')
275
286
  }), /*#__PURE__*/_react["default"].createElement(IconDown, _ref6.cn("IconDown", {}))), /*#__PURE__*/_react["default"].createElement(Children, _ref6.cn("Children", {})));
276
287
  }
277
288
 
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.js","names":["parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","IconUp","BUTTONS","up","IconDown","down","InputNumber","React","createRef","e","inputRef","current","stepUp","inputHandlersRef","stepDown","ref","$inputHandlers","size","asProps","inc","handlerInc","dec","handlerDec","SInputNumber","Input","sstyled","style","Component","Value","step","roundCoefficient","toString","split","length","isNaN","currentTarget","valueAsNumber","handlers","numberValue","parseFloat","r","roundRemainder","abs","numberValueRounded","toFixed","String","countDecimals","floor","toPrecision","SValue","SValueHidden","styles","handleValidation","defaultValue","Controls","props","Children","SControls","Addon","SUp","SDown","createComponent"],"sources":["../../src/InputNumber.jsx"],"sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Input from '@semcore/input';\nimport BUTTONS from './buttons';\n\nimport style from './style/input-number.shadow.css';\n\nfunction parseValueWithMinMax(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(max, value));\n}\n\nconst IconUp = () => BUTTONS.up;\nconst IconDown = () => BUTTONS.down;\n\nclass InputNumber extends Component {\n static displayName = 'InputNumber';\n static style = style;\n static defaultProps = {\n size: 'm',\n };\n\n inputRef = React.createRef();\n inputHandlersRef = React.createRef();\n\n handlerInc = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepUp && this.inputRef.current?.stepUp();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n handlerDec = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepDown && this.inputRef.current?.stepDown();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n getValueProps() {\n return {\n ref: this.inputRef,\n $inputHandlers: this.inputHandlersRef,\n };\n }\n\n getControlsProps() {\n const { size } = this.asProps;\n return {\n size,\n inc: this.handlerInc,\n dec: this.handlerDec,\n };\n }\n\n render() {\n const SInputNumber = Root;\n return sstyled(this.asProps.style)(<SInputNumber render={Input} />);\n }\n}\n\nclass Value extends Component {\n static defaultProps = {\n defaultValue: '',\n step: 1,\n };\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n roundRemainder(value, step) {\n const countDecimals = Math.floor(step) === step ? 0 : step.toString().split('.')[1].length || 0;\n return countDecimals === 0\n ? Number.parseFloat(value)\n : Number.parseFloat(value).toPrecision(countDecimals);\n }\n\n handleValidation = (e) => {\n const { value, min, max, step } = this.asProps;\n const roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;\n if (Number.isNaN(e.currentTarget.valueAsNumber)) {\n e.currentTarget.value = '';\n this.handlers.value('', e);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(value), min, max);\n const r = this.roundRemainder(numberValue % step, step);\n if (r !== 0) {\n if (r >= step / 2) {\n numberValue += step - r;\n } else if (Math.abs(r) < step) {\n numberValue -= r;\n }\n }\n const numberValueRounded = Number(numberValue.toFixed(roundCoefficient));\n this.handlers.value(String(numberValueRounded), e);\n }\n };\n\n render() {\n const SValue = Root;\n const SValueHidden = 'div';\n const { styles, $inputHandlers, value, min, max } = this.asProps;\n\n // 🐒 не делайте так\n $inputHandlers.current = this.handlers;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n type=\"number\"\n autoComplete=\"off\"\n onBlur={this.handleValidation}\n onInvalid={this.handleValidation}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n />\n {/* the next hidden div is necessary for the screen reader to report the value \n in the input, because after validation the value can change to the `min` or `max` \n if entered less than `min` or more than `max` */}\n <SValueHidden aria-live=\"polite\" aria-atomic={true}>\n {value}\n </SValueHidden>\n </>,\n );\n }\n}\n\nfunction Controls(props) {\n const { Children, inc, dec, size, styles } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon}>\n <SUp onClick={inc} tabIndex={-1} type=\"button\" size={size} aria-label=\"Increment number\">\n <IconUp />\n </SUp>\n <SDown onClick={dec} tabIndex={-1} type=\"button\" size={size} aria-label=\"Decrement number\">\n <IconDown />\n </SDown>\n <Children />\n </SControls>,\n );\n}\n\nexport default createComponent(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AADA;;AAEA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,oBAAT,CAA8BC,KAA9B,EAAmG;EAAA,IAA9DC,GAA8D,uEAAxDC,MAAM,CAACC,gBAAiD;EAAA,IAA/BC,GAA+B,uEAAzBF,MAAM,CAACG,gBAAkB;EACjG,OAAOC,IAAI,CAACF,GAAL,CAASH,GAAT,EAAcK,IAAI,CAACL,GAAL,CAASG,GAAT,EAAcJ,KAAd,CAAd,CAAP;AACD;;AAED,IAAMO,MAAM,GAAG,SAATA,MAAS;EAAA,OAAMC,mBAAA,CAAQC,EAAd;AAAA,CAAf;;AACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW;EAAA,OAAMF,mBAAA,CAAQG,IAAd;AAAA,CAAjB;;IAEMC,W;;;;;;;;;;;;;;;8GAOOC,iBAAA,CAAMC,SAAN,E;sHACQD,iBAAA,CAAMC,SAAN,E;mGAEN,UAACC,CAAD,EAAO;MAAA;;MAClB;MACA,gCAAKC,QAAL,CAAcC,OAAd,gFAAuBC,MAAvB,gCAAiC,MAAKF,QAAL,CAAcC,OAA/C,2DAAiC,uBAAuBC,MAAvB,EAAjC;MACA,+BAAKC,gBAAL,CAAsBF,OAAtB,gFAA+BjB,KAA/B,CAAqC,MAAKgB,QAAL,CAAcC,OAAd,CAAsBjB,KAA3D,EAAkEe,CAAlE;IACD,C;mGAEY,UAACA,CAAD,EAAO;MAAA;;MAClB;MACA,iCAAKC,QAAL,CAAcC,OAAd,kFAAuBG,QAAvB,gCAAmC,MAAKJ,QAAL,CAAcC,OAAjD,2DAAmC,uBAAuBG,QAAvB,EAAnC;MACA,gCAAKD,gBAAL,CAAsBF,OAAtB,kFAA+BjB,KAA/B,CAAqC,MAAKgB,QAAL,CAAcC,OAAd,CAAsBjB,KAA3D,EAAkEe,CAAlE;IACD,C;;;;;;WAED,yBAAgB;MACd,OAAO;QACLM,GAAG,EAAE,KAAKL,QADL;QAELM,cAAc,EAAE,KAAKH;MAFhB,CAAP;IAID;;;WAED,4BAAmB;MACjB,IAAQI,IAAR,GAAiB,KAAKC,OAAtB,CAAQD,IAAR;MACA,OAAO;QACLA,IAAI,EAAJA,IADK;QAELE,GAAG,EAAE,KAAKC,UAFL;QAGLC,GAAG,EAAE,KAAKC;MAHL,CAAP;IAKD;;;WAED,kBAAS;MAAA;MAAA;;MACP,IAAMC,YAAY,GACuCC,iBADzD;MACA,eAAO,IAAAC,aAAA,EAAQ,KAAKP,OAAL,CAAaQ,KAArB,CAAP,eAAmC,gCAAC,YAAD,gFAAnC;IACD;;;EAzCuBC,e;;iCAApBrB,W,iBACiB,a;iCADjBA,W,WAEWoB,K;iCAFXpB,W,kBAGkB;EACpBW,IAAI,EAAE;AADc,C;;IAyClBW,K;;;;;;;;;;;;;;;0GAmBe,UAACnB,CAAD,EAAO;MACxB,qBAAkC,OAAKS,OAAvC;MAAA,IAAQxB,KAAR,kBAAQA,KAAR;MAAA,IAAeC,GAAf,kBAAeA,GAAf;MAAA,IAAoBG,GAApB,kBAAoBA,GAApB;MAAA,IAAyB+B,IAAzB,kBAAyBA,IAAzB;MACA,IAAMC,gBAAgB,GAAGD,IAAI,GAAG,CAAP,GAAWA,IAAI,CAACE,QAAL,GAAgBC,KAAhB,CAAsB,GAAtB,EAA2B,CAA3B,EAA8BC,MAAzC,GAAkD,CAA3E;;MACA,IAAIrC,MAAM,CAACsC,KAAP,CAAazB,CAAC,CAAC0B,aAAF,CAAgBC,aAA7B,CAAJ,EAAiD;QAC/C3B,CAAC,CAAC0B,aAAF,CAAgBzC,KAAhB,GAAwB,EAAxB;;QACA,OAAK2C,QAAL,CAAc3C,KAAd,CAAoB,EAApB,EAAwBe,CAAxB;MACD,CAHD,MAGO;QACL,IAAI6B,WAAW,GAAG7C,oBAAoB,CAACG,MAAM,CAAC2C,UAAP,CAAkB7C,KAAlB,CAAD,EAA2BC,GAA3B,EAAgCG,GAAhC,CAAtC;;QACA,IAAM0C,CAAC,GAAG,OAAKC,cAAL,CAAoBH,WAAW,GAAGT,IAAlC,EAAwCA,IAAxC,CAAV;;QACA,IAAIW,CAAC,KAAK,CAAV,EAAa;UACX,IAAIA,CAAC,IAAIX,IAAI,GAAG,CAAhB,EAAmB;YACjBS,WAAW,IAAIT,IAAI,GAAGW,CAAtB;UACD,CAFD,MAEO,IAAIxC,IAAI,CAAC0C,GAAL,CAASF,CAAT,IAAcX,IAAlB,EAAwB;YAC7BS,WAAW,IAAIE,CAAf;UACD;QACF;;QACD,IAAMG,kBAAkB,GAAG/C,MAAM,CAAC0C,WAAW,CAACM,OAAZ,CAAoBd,gBAApB,CAAD,CAAjC;;QACA,OAAKO,QAAL,CAAc3C,KAAd,CAAoBmD,MAAM,CAACF,kBAAD,CAA1B,EAAgDlC,CAAhD;MACD;IACF,C;;;;;;WAhCD,6BAAoB;MAClB,OAAO;QACLf,KAAK,EAAE;MADF,CAAP;IAGD;;;WAED,wBAAeA,KAAf,EAAsBmC,IAAtB,EAA4B;MAC1B,IAAMiB,aAAa,GAAG9C,IAAI,CAAC+C,KAAL,CAAWlB,IAAX,MAAqBA,IAArB,GAA4B,CAA5B,GAAgCA,IAAI,CAACE,QAAL,GAAgBC,KAAhB,CAAsB,GAAtB,EAA2B,CAA3B,EAA8BC,MAA9B,IAAwC,CAA9F;MACA,OAAOa,aAAa,KAAK,CAAlB,GACHlD,MAAM,CAAC2C,UAAP,CAAkB7C,KAAlB,CADG,GAEHE,MAAM,CAAC2C,UAAP,CAAkB7C,KAAlB,EAAyBsD,WAAzB,CAAqCF,aAArC,CAFJ;IAGD;;;WAuBD,kBAAS;MAAA;MAAA;;MACP,IAAMG,MAAM,GAUEzB,iBAAA,CAAMI,KAVpB;MACA,IAAMsB,YAAY,GAAG,KAArB;MACA,oBAAoD,KAAKhC,OAAzD;MAAA,IAAQiC,MAAR,iBAAQA,MAAR;MAAA,IAAgBnC,cAAhB,iBAAgBA,cAAhB;MAAA,IAAgCtB,KAAhC,iBAAgCA,KAAhC;MAAA,IAAuCC,GAAvC,iBAAuCA,GAAvC;MAAA,IAA4CG,GAA5C,iBAA4CA,GAA5C,CAHO,CAKP;;MACAkB,cAAc,CAACL,OAAf,GAAyB,KAAK0B,QAA9B;MAEA,eAAO,IAAAZ,aAAA,EAAQ0B,MAAR,CAAP,eACE,+EACE,gCAAC,MAAD;QAAA,QAEO,QAFP;QAAA,gBAGe,KAHf;QAAA,UAIU,KAAKC,gBAJf;QAAA,aAKa,KAAKA,gBALlB;QAAA,iBAMiB1D,KANjB;QAAA,iBAOiBC,GAPjB;QAAA,iBAQiBG;MARjB,YADF,eAcE,gCAAC,YAAD;QAAA,aAAwB,QAAxB;QAAA,eAA8C;MAA9C,IACGJ,KADH,CAdF,CADF;IAoBD;;;EApEiBiC,e;;iCAAdC,K,kBACkB;EACpByB,YAAY,EAAE,EADM;EAEpBxB,IAAI,EAAE;AAFc,C;;AAsExB,SAASyB,QAAT,CAAkBC,KAAlB,EAAyB;EAAA;EAAA;;EACvB,IAAQC,QAAR,GAA6CD,KAA7C,CAAQC,QAAR;EAAA,IAAkBrC,GAAlB,GAA6CoC,KAA7C,CAAkBpC,GAAlB;EAAA,IAAuBE,GAAvB,GAA6CkC,KAA7C,CAAuBlC,GAAvB;EAAA,IAA4BJ,IAA5B,GAA6CsC,KAA7C,CAA4BtC,IAA5B;EAAA,IAAkCkC,MAAlC,GAA6CI,KAA7C,CAAkCJ,MAAlC;EACA,IAAMM,SAAS,GAKMjC,iBAAA,CAAMkC,KAL3B;EACA,IAAMC,GAAG,GAAG,QAAZ;EACA,IAAMC,KAAK,GAAG,QAAd;EAEA,eAAO,IAAAnC,aAAA,EAAQ0B,MAAR,CAAP,eACE,gCAAC,SAAD,4FACE,gCAAC,GAAD;IAAA,WAAchC,GAAd;IAAA,YAA6B,CAAC,CAA9B;IAAA,QAAsC,QAAtC;IAAA,QAAqDF,IAArD;IAAA,cAAsE;EAAtE,iBACE,gCAAC,MAAD,yBADF,CADF,eAIE,gCAAC,KAAD;IAAA,WAAgBI,GAAhB;IAAA,YAA+B,CAAC,CAAhC;IAAA,QAAwC,QAAxC;IAAA,QAAuDJ,IAAvD;IAAA,cAAwE;EAAxE,iBACE,gCAAC,QAAD,2BADF,CAJF,eAOE,gCAAC,QAAD,2BAPF,CADF;AAWD;;eAEc,IAAA4C,gBAAA,EAAgBvD,WAAhB,EAA6B;EAC1CsB,KAAK,EAALA,KAD0C;EAE1C0B,QAAQ,EAARA,QAF0C;EAG1CI,KAAK,EAAElC,iBAAA,CAAMkC;AAH6B,CAA7B,C"}
1
+ {"version":3,"file":"InputNumber.js","names":["parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","IconUp","BUTTONS","up","IconDown","down","InputNumber","React","createRef","e","inputRef","current","stepUp","inputHandlersRef","stepDown","ref","$inputHandlers","asProps","size","getI18nText","inc","handlerInc","dec","handlerDec","SInputNumber","Input","sstyled","style","Component","i18nEnhance","localizedMessages","i18n","locale","Value","step","roundCoefficient","toString","split","length","isNaN","currentTarget","valueAsNumber","handlers","numberValue","parseFloat","r","roundRemainder","abs","numberValueRounded","toFixed","String","countDecimals","floor","toPrecision","SValue","SValueHidden","styles","handleValidation","defaultValue","Controls","props","Children","SControls","Addon","SUp","SDown","createComponent"],"sources":["../../src/InputNumber.jsx"],"sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Input from '@semcore/input';\nimport BUTTONS from './buttons';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\nimport i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';\n\nimport style from './style/input-number.shadow.css';\n\nfunction parseValueWithMinMax(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(max, value));\n}\n\nconst IconUp = () => BUTTONS.up;\nconst IconDown = () => BUTTONS.down;\n\nclass InputNumber extends Component {\n static displayName = 'InputNumber';\n static style = style;\n static enhance = [i18nEnhance(localizedMessages)];\n static defaultProps = {\n size: 'm',\n i18n: localizedMessages,\n locale: 'en',\n };\n\n inputRef = React.createRef();\n inputHandlersRef = React.createRef();\n\n handlerInc = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepUp && this.inputRef.current?.stepUp();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n handlerDec = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepDown && this.inputRef.current?.stepDown();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n getValueProps() {\n return {\n ref: this.inputRef,\n $inputHandlers: this.inputHandlersRef,\n };\n }\n\n getControlsProps() {\n const { size, getI18nText } = this.asProps;\n return {\n size,\n inc: this.handlerInc,\n dec: this.handlerDec,\n getI18nText,\n };\n }\n\n render() {\n const SInputNumber = Root;\n return sstyled(this.asProps.style)(<SInputNumber render={Input} />);\n }\n}\n\nclass Value extends Component {\n static defaultProps = {\n defaultValue: '',\n step: 1,\n };\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n roundRemainder(value, step) {\n const countDecimals = Math.floor(step) === step ? 0 : step.toString().split('.')[1].length || 0;\n return countDecimals === 0\n ? Number.parseFloat(value)\n : Number.parseFloat(value).toPrecision(countDecimals);\n }\n\n handleValidation = (e) => {\n const { value, min, max, step } = this.asProps;\n const roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;\n if (Number.isNaN(e.currentTarget.valueAsNumber)) {\n e.currentTarget.value = '';\n this.handlers.value('', e);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(value), min, max);\n const r = this.roundRemainder(numberValue % step, step);\n if (r !== 0) {\n if (r >= step / 2) {\n numberValue += step - r;\n } else if (Math.abs(r) < step) {\n numberValue -= r;\n }\n }\n const numberValueRounded = Number(numberValue.toFixed(roundCoefficient));\n this.handlers.value(String(numberValueRounded), e);\n }\n };\n\n render() {\n const SValue = Root;\n const SValueHidden = 'div';\n const { styles, $inputHandlers, value, min, max } = this.asProps;\n\n // 🐒 не делайте так\n $inputHandlers.current = this.handlers;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n type=\"number\"\n autoComplete=\"off\"\n onBlur={this.handleValidation}\n onInvalid={this.handleValidation}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n />\n {/* the next hidden div is necessary for the screen reader to report the value \n in the input, because after validation the value can change to the `min` or `max` \n if entered less than `min` or more than `max` */}\n <SValueHidden aria-live=\"polite\" aria-atomic={true}>\n {value}\n </SValueHidden>\n </>,\n );\n }\n}\n\nfunction Controls(props) {\n const { Children, inc, dec, size, styles, getI18nText } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon}>\n <SUp\n onClick={inc}\n tabIndex={-1}\n type=\"button\"\n size={size}\n aria-label={getI18nText('increment')}\n >\n <IconUp />\n </SUp>\n <SDown\n onClick={dec}\n tabIndex={-1}\n type=\"button\"\n size={size}\n aria-label={getI18nText('decrement')}\n >\n <IconDown />\n </SDown>\n <Children />\n </SControls>,\n );\n}\n\nexport default createComponent(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React from 'react';\nimport { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport { IInputAddonProps, IInputProps, IInputValueProps } from '@semcore/input';\n\nexport type InputNumberValue = string;\nexport type InputNumberSize = 'm' | 'l';\n\nexport interface IInputNumberProps extends IInputProps {\n /** Input size\n * @default m\n * */\n size?: InputNumberSize;\n}\n\nexport interface IInputNumberValueProps extends IInputValueProps {\n /** Minimum value\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** Maximum value\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** Value change step\n * @default 1\n */\n step?: number;\n /** Numeric value */\n value?: InputNumberValue;\n /** Called when the input value changes, it returns its current value in numeric format */\n onChange?: (value: InputNumberValue, event?: React.SyntheticEvent<HTMLInputElement>) => void;\n}\n\nexport interface IInputNumberControlsProps extends IInputAddonProps {\n /** Always displays controls (steppers)\n * @default false\n */\n showControls?: boolean;\n}\n\nexport interface IInputNumberCtx {\n getValueProps: PropGetterFn;\n getControlsProps: PropGetterFn;\n getAddonProps: PropGetterFn;\n}\n\ndeclare const InputNumber: (<T>(\n props: CProps<IInputNumberProps & T, IInputNumberCtx>,\n) => ReturnEl) & {\n Value: <T>(props: IInputNumberValueProps & T) => ReturnEl;\n Controls: <T>(props: IInputNumberControlsProps & T) => ReturnEl;\n Addon: <T>(props: IInputAddonProps & T) => ReturnEl;\n};\n\nexport default InputNumber;\n"],"mappings":""}
1
+ {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React from 'react';\nimport { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport { IInputAddonProps, IInputProps, IInputValueProps } from '@semcore/input';\n\nexport type InputNumberValue = string;\nexport type InputNumberSize = 'm' | 'l';\n\nexport interface IInputNumberProps extends IInputProps {\n /** Input size\n * @default m\n * */\n size?: InputNumberSize;\n}\n\nexport interface IInputNumberValueProps extends IInputValueProps {\n /** Minimum value\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** Maximum value\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** Value change step\n * @default 1\n */\n step?: number;\n /** Numeric value */\n value?: InputNumberValue;\n /** Called when the input value changes, it returns its current value in numeric format */\n onChange?: (value: InputNumberValue, event?: React.SyntheticEvent<HTMLInputElement>) => void;\n locale?: string;\n}\n\nexport interface IInputNumberControlsProps extends IInputAddonProps {\n /** Always displays controls (steppers)\n * @default false\n */\n showControls?: boolean;\n}\n\nexport interface IInputNumberCtx {\n getValueProps: PropGetterFn;\n getControlsProps: PropGetterFn;\n getAddonProps: PropGetterFn;\n}\n\ndeclare const InputNumber: (<T>(\n props: CProps<IInputNumberProps & T, IInputNumberCtx>,\n) => ReturnEl) & {\n Value: <T>(props: IInputNumberValueProps & T) => ReturnEl;\n Controls: <T>(props: IInputNumberControlsProps & T) => ReturnEl;\n Addon: <T>(props: IInputAddonProps & T) => ReturnEl;\n};\n\nexport default InputNumber;\n"],"mappings":""}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.localizedMessages = void 0;
9
+
10
+ var _de = _interopRequireDefault(require("./de.json"));
11
+
12
+ var _en = _interopRequireDefault(require("./en.json"));
13
+
14
+ var _es = _interopRequireDefault(require("./es.json"));
15
+
16
+ var _fr = _interopRequireDefault(require("./fr.json"));
17
+
18
+ var _it = _interopRequireDefault(require("./it.json"));
19
+
20
+ var _ja = _interopRequireDefault(require("./ja.json"));
21
+
22
+ var _ko = _interopRequireDefault(require("./ko.json"));
23
+
24
+ var _pt = _interopRequireDefault(require("./pt.json"));
25
+
26
+ var _tr = _interopRequireDefault(require("./tr.json"));
27
+
28
+ var _vi = _interopRequireDefault(require("./vi.json"));
29
+
30
+ var _zh = _interopRequireDefault(require("./zh.json"));
31
+
32
+ var localizedMessages = {
33
+ de: _de["default"],
34
+ en: _en["default"],
35
+ es: _es["default"],
36
+ fr: _fr["default"],
37
+ it: _it["default"],
38
+ ja: _ja["default"],
39
+ ko: _ko["default"],
40
+ pt: _pt["default"],
41
+ tr: _tr["default"],
42
+ vi: _vi["default"],
43
+ zh: _zh["default"]
44
+ };
45
+ exports.localizedMessages = localizedMessages;
46
+ //# sourceMappingURL=__intergalactic-dynamic-locales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__intergalactic-dynamic-locales.js","names":["localizedMessages","de","en","es","fr","it","ja","ko","pt","tr","vi","zh"],"sources":["../../../src/translations/__intergalactic-dynamic-locales.ts"],"sourcesContent":["import de from './de.json';\nimport en from './en.json';\nimport es from './es.json';\nimport fr from './fr.json';\nimport it from './it.json';\nimport ja from './ja.json';\nimport ko from './ko.json';\nimport pt from './pt.json';\nimport tr from './tr.json';\nimport vi from './vi.json';\nimport zh from './zh.json';\n\nexport const localizedMessages = {\n de,\n en,\n es,\n fr,\n it,\n ja,\n ko,\n pt,\n tr,\n vi,\n zh,\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEO,IAAMA,iBAAiB,GAAG;EAC/BC,EAAE,EAAFA,cAD+B;EAE/BC,EAAE,EAAFA,cAF+B;EAG/BC,EAAE,EAAFA,cAH+B;EAI/BC,EAAE,EAAFA,cAJ+B;EAK/BC,EAAE,EAAFA,cAL+B;EAM/BC,EAAE,EAAFA,cAN+B;EAO/BC,EAAE,EAAFA,cAP+B;EAQ/BC,EAAE,EAAFA,cAR+B;EAS/BC,EAAE,EAAFA,cAT+B;EAU/BC,EAAE,EAAFA,cAV+B;EAW/BC,EAAE,EAAFA;AAX+B,CAA1B"}
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Zahl erhöhen",
3
+ "decrement": "Zahl verringern"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Increment number",
3
+ "decrement": "Decrement number"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Incrementar número",
3
+ "decrement": "Descenso de número"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Incrémenter le nombre",
3
+ "decrement": "Décrémenter le nombre"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Aumenta il numero",
3
+ "decrement": "Riduci il numero"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "上昇番号",
3
+ "decrement": "下降番号"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Increment number",
3
+ "decrement": "Decrement number"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Aumentar número",
3
+ "decrement": "Diminuir número"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Sayıyı artır",
3
+ "decrement": "Sayıyı azalt"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Tăng số",
3
+ "decrement": "Giảm số"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "增量",
3
+ "decrement": "减量"
4
+ }
@@ -22,26 +22,28 @@ import React from 'react';
22
22
  import createComponent, { Component, sstyled, Root } from '@semcore/core';
23
23
  import Input from '@semcore/input';
24
24
  import BUTTONS from './buttons';
25
+ import { localizedMessages } from './translations/__intergalactic-dynamic-locales';
26
+ import i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';
25
27
 
26
28
  /*__reshadow-styles__:"./style/input-number.shadow.css"*/
27
29
  var style = (
28
30
  /*__reshadow_css_start__*/
29
31
  _sstyled.insert(
30
32
  /*__inner_css_start__*/
31
- ".___SInputNumber_109sv_gg_:hover .___SValue_109sv_gg_:not(.__disabled_109sv_gg_)~.___SControls_109sv_gg_{visibility:visible}.___SValue_109sv_gg_:focus~.___SControls_109sv_gg_{visibility:visible}.___SControls_109sv_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_109sv_gg_.__showControls_109sv_gg_{visibility:visible}.___SDown_109sv_gg_,.___SUp_109sv_gg_{padding:0;width:16px;color:var(--intergalactic-icon-secondary-neutral,#a9abb6);box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_109sv_gg_:focus,.___SUp_109sv_gg_:focus{outline:none}.___SDown_109sv_gg_:hover,.___SUp_109sv_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,#8a8e9b)}.___SUp_109sv_gg_{padding-bottom:1px}.___SDown_109sv_gg_{padding-top:1px}.___SValue_109sv_gg_::-webkit-inner-spin-button,.___SValue_109sv_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_109sv_gg_._type_number_109sv_gg_{-moz-appearance:textfield}.___SValue_109sv_gg_.__disabled_109sv_gg_~.___SControls_109sv_gg_{opacity:var(--intergalactic-disabled-opacity,.3);cursor:default;pointer-events:none}.___SValueHidden_109sv_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}"
33
+ ".___SInputNumber_e3dxg_gg_:hover .___SValue_e3dxg_gg_:not(.__disabled_e3dxg_gg_)~.___SControls_e3dxg_gg_{visibility:visible}.___SValue_e3dxg_gg_:focus~.___SControls_e3dxg_gg_{visibility:visible}.___SControls_e3dxg_gg_{display:flex;flex-flow:column;justify-content:center;height:100%;visibility:hidden;box-sizing:border-box}.___SControls_e3dxg_gg_.__showControls_e3dxg_gg_{visibility:visible}.___SDown_e3dxg_gg_,.___SUp_e3dxg_gg_{padding:0;width:16px;color:var(--intergalactic-icon-secondary-neutral,#a9abb6);box-sizing:border-box;display:inline-flex;justify-content:center;border:none;background:none;cursor:pointer}.___SDown_e3dxg_gg_:focus,.___SUp_e3dxg_gg_:focus{outline:none}.___SDown_e3dxg_gg_:hover,.___SUp_e3dxg_gg_:hover{color:var(--intergalactic-icon-secondary-neutral-hover-active,#8a8e9b)}.___SUp_e3dxg_gg_{padding-bottom:1px}.___SDown_e3dxg_gg_{padding-top:1px}.___SValue_e3dxg_gg_::-webkit-inner-spin-button,.___SValue_e3dxg_gg_::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.___SValue_e3dxg_gg_._type_number_e3dxg_gg_{-moz-appearance:textfield}.___SValue_e3dxg_gg_.__disabled_e3dxg_gg_~.___SControls_e3dxg_gg_{opacity:var(--intergalactic-disabled-opacity,.3);cursor:default;pointer-events:none}.___SValueHidden_e3dxg_gg_{position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden}"
32
34
  /*__inner_css_end__*/
33
- , "109sv_gg_")
35
+ , "e3dxg_gg_")
34
36
  /*__reshadow_css_end__*/
35
37
  , {
36
- "__SInputNumber": "___SInputNumber_109sv_gg_",
37
- "__SValue": "___SValue_109sv_gg_",
38
- "_disabled": "__disabled_109sv_gg_",
39
- "__SControls": "___SControls_109sv_gg_",
40
- "_showControls": "__showControls_109sv_gg_",
41
- "__SDown": "___SDown_109sv_gg_",
42
- "__SUp": "___SUp_109sv_gg_",
43
- "_type_number": "_type_number_109sv_gg_",
44
- "__SValueHidden": "___SValueHidden_109sv_gg_"
38
+ "__SInputNumber": "___SInputNumber_e3dxg_gg_",
39
+ "__SValue": "___SValue_e3dxg_gg_",
40
+ "_disabled": "__disabled_e3dxg_gg_",
41
+ "__SControls": "___SControls_e3dxg_gg_",
42
+ "_showControls": "__showControls_e3dxg_gg_",
43
+ "__SDown": "___SDown_e3dxg_gg_",
44
+ "__SUp": "___SUp_e3dxg_gg_",
45
+ "_type_number": "_type_number_e3dxg_gg_",
46
+ "__SValueHidden": "___SValueHidden_e3dxg_gg_"
45
47
  });
46
48
 
47
49
  function parseValueWithMinMax(value) {
@@ -108,11 +110,14 @@ var InputNumber = /*#__PURE__*/function (_Component) {
108
110
  }, {
109
111
  key: "getControlsProps",
110
112
  value: function getControlsProps() {
111
- var size = this.asProps.size;
113
+ var _this$asProps = this.asProps,
114
+ size = _this$asProps.size,
115
+ getI18nText = _this$asProps.getI18nText;
112
116
  return {
113
117
  size: size,
114
118
  inc: this.handlerInc,
115
- dec: this.handlerDec
119
+ dec: this.handlerDec,
120
+ getI18nText: getI18nText
116
121
  };
117
122
  }
118
123
  }, {
@@ -133,8 +138,12 @@ _defineProperty(InputNumber, "displayName", 'InputNumber');
133
138
 
134
139
  _defineProperty(InputNumber, "style", style);
135
140
 
141
+ _defineProperty(InputNumber, "enhance", [i18nEnhance(localizedMessages)]);
142
+
136
143
  _defineProperty(InputNumber, "defaultProps", {
137
- size: 'm'
144
+ size: 'm',
145
+ i18n: localizedMessages,
146
+ locale: 'en'
138
147
  });
139
148
 
140
149
  var Value = /*#__PURE__*/function (_Component2) {
@@ -208,12 +217,12 @@ var Value = /*#__PURE__*/function (_Component2) {
208
217
 
209
218
  var SValue = Input.Value;
210
219
  var SValueHidden = 'div';
211
- var _this$asProps = this.asProps,
212
- styles = _this$asProps.styles,
213
- $inputHandlers = _this$asProps.$inputHandlers,
214
- value = _this$asProps.value,
215
- min = _this$asProps.min,
216
- max = _this$asProps.max; // 🐒 не делайте так
220
+ var _this$asProps2 = this.asProps,
221
+ styles = _this$asProps2.styles,
222
+ $inputHandlers = _this$asProps2.$inputHandlers,
223
+ value = _this$asProps2.value,
224
+ min = _this$asProps2.min,
225
+ max = _this$asProps2.max; // 🐒 не делайте так
217
226
 
218
227
  $inputHandlers.current = this.handlers;
219
228
  return _ref5 = sstyled(styles), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SValue, _ref5.cn("SValue", _objectSpread({}, _assignProps2({
@@ -247,7 +256,8 @@ function Controls(props) {
247
256
  inc = props.inc,
248
257
  dec = props.dec,
249
258
  size = props.size,
250
- styles = props.styles;
259
+ styles = props.styles,
260
+ getI18nText = props.getI18nText;
251
261
  var SControls = Input.Addon;
252
262
  var SUp = 'button';
253
263
  var SDown = 'button';
@@ -256,13 +266,13 @@ function Controls(props) {
256
266
  "tabIndex": -1,
257
267
  "type": "button",
258
268
  "size": size,
259
- "aria-label": "Increment number"
269
+ "aria-label": getI18nText('increment')
260
270
  }), /*#__PURE__*/React.createElement(IconUp, _ref6.cn("IconUp", {}))), /*#__PURE__*/React.createElement(SDown, _ref6.cn("SDown", {
261
271
  "onClick": dec,
262
272
  "tabIndex": -1,
263
273
  "type": "button",
264
274
  "size": size,
265
- "aria-label": "Decrement number"
275
+ "aria-label": getI18nText('decrement')
266
276
  }), /*#__PURE__*/React.createElement(IconDown, _ref6.cn("IconDown", {}))), /*#__PURE__*/React.createElement(Children, _ref6.cn("Children", {})));
267
277
  }
268
278
 
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.js","names":["React","createComponent","Component","sstyled","Root","Input","BUTTONS","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","IconUp","up","IconDown","down","InputNumber","createRef","e","inputRef","current","stepUp","inputHandlersRef","stepDown","ref","$inputHandlers","size","asProps","inc","handlerInc","dec","handlerDec","SInputNumber","style","Value","step","roundCoefficient","toString","split","length","isNaN","currentTarget","valueAsNumber","handlers","numberValue","parseFloat","r","roundRemainder","abs","numberValueRounded","toFixed","String","countDecimals","floor","toPrecision","SValue","SValueHidden","styles","handleValidation","defaultValue","Controls","props","Children","SControls","Addon","SUp","SDown"],"sources":["../../src/InputNumber.jsx"],"sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Input from '@semcore/input';\nimport BUTTONS from './buttons';\n\nimport style from './style/input-number.shadow.css';\n\nfunction parseValueWithMinMax(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(max, value));\n}\n\nconst IconUp = () => BUTTONS.up;\nconst IconDown = () => BUTTONS.down;\n\nclass InputNumber extends Component {\n static displayName = 'InputNumber';\n static style = style;\n static defaultProps = {\n size: 'm',\n };\n\n inputRef = React.createRef();\n inputHandlersRef = React.createRef();\n\n handlerInc = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepUp && this.inputRef.current?.stepUp();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n handlerDec = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepDown && this.inputRef.current?.stepDown();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n getValueProps() {\n return {\n ref: this.inputRef,\n $inputHandlers: this.inputHandlersRef,\n };\n }\n\n getControlsProps() {\n const { size } = this.asProps;\n return {\n size,\n inc: this.handlerInc,\n dec: this.handlerDec,\n };\n }\n\n render() {\n const SInputNumber = Root;\n return sstyled(this.asProps.style)(<SInputNumber render={Input} />);\n }\n}\n\nclass Value extends Component {\n static defaultProps = {\n defaultValue: '',\n step: 1,\n };\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n roundRemainder(value, step) {\n const countDecimals = Math.floor(step) === step ? 0 : step.toString().split('.')[1].length || 0;\n return countDecimals === 0\n ? Number.parseFloat(value)\n : Number.parseFloat(value).toPrecision(countDecimals);\n }\n\n handleValidation = (e) => {\n const { value, min, max, step } = this.asProps;\n const roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;\n if (Number.isNaN(e.currentTarget.valueAsNumber)) {\n e.currentTarget.value = '';\n this.handlers.value('', e);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(value), min, max);\n const r = this.roundRemainder(numberValue % step, step);\n if (r !== 0) {\n if (r >= step / 2) {\n numberValue += step - r;\n } else if (Math.abs(r) < step) {\n numberValue -= r;\n }\n }\n const numberValueRounded = Number(numberValue.toFixed(roundCoefficient));\n this.handlers.value(String(numberValueRounded), e);\n }\n };\n\n render() {\n const SValue = Root;\n const SValueHidden = 'div';\n const { styles, $inputHandlers, value, min, max } = this.asProps;\n\n // 🐒 не делайте так\n $inputHandlers.current = this.handlers;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n type=\"number\"\n autoComplete=\"off\"\n onBlur={this.handleValidation}\n onInvalid={this.handleValidation}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n />\n {/* the next hidden div is necessary for the screen reader to report the value \n in the input, because after validation the value can change to the `min` or `max` \n if entered less than `min` or more than `max` */}\n <SValueHidden aria-live=\"polite\" aria-atomic={true}>\n {value}\n </SValueHidden>\n </>,\n );\n }\n}\n\nfunction Controls(props) {\n const { Children, inc, dec, size, styles } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon}>\n <SUp onClick={inc} tabIndex={-1} type=\"button\" size={size} aria-label=\"Increment number\">\n <IconUp />\n </SUp>\n <SDown onClick={dec} tabIndex={-1} type=\"button\" size={size} aria-label=\"Decrement number\">\n <IconDown />\n </SDown>\n <Children />\n </SControls>,\n );\n}\n\nexport default createComponent(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"InputNumber.js","names":["React","createComponent","Component","sstyled","Root","Input","BUTTONS","localizedMessages","i18nEnhance","parseValueWithMinMax","value","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","Math","IconUp","up","IconDown","down","InputNumber","createRef","e","inputRef","current","stepUp","inputHandlersRef","stepDown","ref","$inputHandlers","asProps","size","getI18nText","inc","handlerInc","dec","handlerDec","SInputNumber","style","i18n","locale","Value","step","roundCoefficient","toString","split","length","isNaN","currentTarget","valueAsNumber","handlers","numberValue","parseFloat","r","roundRemainder","abs","numberValueRounded","toFixed","String","countDecimals","floor","toPrecision","SValue","SValueHidden","styles","handleValidation","defaultValue","Controls","props","Children","SControls","Addon","SUp","SDown"],"sources":["../../src/InputNumber.jsx"],"sourcesContent":["import React from 'react';\nimport createComponent, { Component, sstyled, Root } from '@semcore/core';\nimport Input from '@semcore/input';\nimport BUTTONS from './buttons';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\nimport i18nEnhance from '@semcore/utils/lib/enhances/i18nEnhance';\n\nimport style from './style/input-number.shadow.css';\n\nfunction parseValueWithMinMax(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(max, value));\n}\n\nconst IconUp = () => BUTTONS.up;\nconst IconDown = () => BUTTONS.down;\n\nclass InputNumber extends Component {\n static displayName = 'InputNumber';\n static style = style;\n static enhance = [i18nEnhance(localizedMessages)];\n static defaultProps = {\n size: 'm',\n i18n: localizedMessages,\n locale: 'en',\n };\n\n inputRef = React.createRef();\n inputHandlersRef = React.createRef();\n\n handlerInc = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepUp && this.inputRef.current?.stepUp();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n handlerDec = (e) => {\n // TODO: IE11 dont work\n this.inputRef.current?.stepDown && this.inputRef.current?.stepDown();\n this.inputHandlersRef.current?.value(this.inputRef.current.value, e);\n };\n\n getValueProps() {\n return {\n ref: this.inputRef,\n $inputHandlers: this.inputHandlersRef,\n };\n }\n\n getControlsProps() {\n const { size, getI18nText } = this.asProps;\n return {\n size,\n inc: this.handlerInc,\n dec: this.handlerDec,\n getI18nText,\n };\n }\n\n render() {\n const SInputNumber = Root;\n return sstyled(this.asProps.style)(<SInputNumber render={Input} />);\n }\n}\n\nclass Value extends Component {\n static defaultProps = {\n defaultValue: '',\n step: 1,\n };\n\n uncontrolledProps() {\n return {\n value: null,\n };\n }\n\n roundRemainder(value, step) {\n const countDecimals = Math.floor(step) === step ? 0 : step.toString().split('.')[1].length || 0;\n return countDecimals === 0\n ? Number.parseFloat(value)\n : Number.parseFloat(value).toPrecision(countDecimals);\n }\n\n handleValidation = (e) => {\n const { value, min, max, step } = this.asProps;\n const roundCoefficient = step < 1 ? step.toString().split('.')[1].length : 1;\n if (Number.isNaN(e.currentTarget.valueAsNumber)) {\n e.currentTarget.value = '';\n this.handlers.value('', e);\n } else {\n let numberValue = parseValueWithMinMax(Number.parseFloat(value), min, max);\n const r = this.roundRemainder(numberValue % step, step);\n if (r !== 0) {\n if (r >= step / 2) {\n numberValue += step - r;\n } else if (Math.abs(r) < step) {\n numberValue -= r;\n }\n }\n const numberValueRounded = Number(numberValue.toFixed(roundCoefficient));\n this.handlers.value(String(numberValueRounded), e);\n }\n };\n\n render() {\n const SValue = Root;\n const SValueHidden = 'div';\n const { styles, $inputHandlers, value, min, max } = this.asProps;\n\n // 🐒 не делайте так\n $inputHandlers.current = this.handlers;\n\n return sstyled(styles)(\n <>\n <SValue\n render={Input.Value}\n type=\"number\"\n autoComplete=\"off\"\n onBlur={this.handleValidation}\n onInvalid={this.handleValidation}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n />\n {/* the next hidden div is necessary for the screen reader to report the value \n in the input, because after validation the value can change to the `min` or `max` \n if entered less than `min` or more than `max` */}\n <SValueHidden aria-live=\"polite\" aria-atomic={true}>\n {value}\n </SValueHidden>\n </>,\n );\n }\n}\n\nfunction Controls(props) {\n const { Children, inc, dec, size, styles, getI18nText } = props;\n const SControls = Root;\n const SUp = 'button';\n const SDown = 'button';\n\n return sstyled(styles)(\n <SControls render={Input.Addon}>\n <SUp\n onClick={inc}\n tabIndex={-1}\n type=\"button\"\n size={size}\n aria-label={getI18nText('increment')}\n >\n <IconUp />\n </SUp>\n <SDown\n onClick={dec}\n tabIndex={-1}\n type=\"button\"\n size={size}\n aria-label={getI18nText('decrement')}\n >\n <IconDown />\n </SDown>\n <Children />\n </SControls>,\n );\n}\n\nexport default createComponent(InputNumber, {\n Value,\n Controls,\n Addon: Input.Addon,\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React from 'react';\nimport { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport { IInputAddonProps, IInputProps, IInputValueProps } from '@semcore/input';\n\nexport type InputNumberValue = string;\nexport type InputNumberSize = 'm' | 'l';\n\nexport interface IInputNumberProps extends IInputProps {\n /** Input size\n * @default m\n * */\n size?: InputNumberSize;\n}\n\nexport interface IInputNumberValueProps extends IInputValueProps {\n /** Minimum value\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** Maximum value\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** Value change step\n * @default 1\n */\n step?: number;\n /** Numeric value */\n value?: InputNumberValue;\n /** Called when the input value changes, it returns its current value in numeric format */\n onChange?: (value: InputNumberValue, event?: React.SyntheticEvent<HTMLInputElement>) => void;\n}\n\nexport interface IInputNumberControlsProps extends IInputAddonProps {\n /** Always displays controls (steppers)\n * @default false\n */\n showControls?: boolean;\n}\n\nexport interface IInputNumberCtx {\n getValueProps: PropGetterFn;\n getControlsProps: PropGetterFn;\n getAddonProps: PropGetterFn;\n}\n\ndeclare const InputNumber: (<T>(\n props: CProps<IInputNumberProps & T, IInputNumberCtx>,\n) => ReturnEl) & {\n Value: <T>(props: IInputNumberValueProps & T) => ReturnEl;\n Controls: <T>(props: IInputNumberControlsProps & T) => ReturnEl;\n Addon: <T>(props: IInputAddonProps & T) => ReturnEl;\n};\n\nexport default InputNumber;\n"],"mappings":""}
1
+ {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import React from 'react';\nimport { CProps, PropGetterFn, ReturnEl } from '@semcore/core';\nimport { IInputAddonProps, IInputProps, IInputValueProps } from '@semcore/input';\n\nexport type InputNumberValue = string;\nexport type InputNumberSize = 'm' | 'l';\n\nexport interface IInputNumberProps extends IInputProps {\n /** Input size\n * @default m\n * */\n size?: InputNumberSize;\n}\n\nexport interface IInputNumberValueProps extends IInputValueProps {\n /** Minimum value\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** Maximum value\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** Value change step\n * @default 1\n */\n step?: number;\n /** Numeric value */\n value?: InputNumberValue;\n /** Called when the input value changes, it returns its current value in numeric format */\n onChange?: (value: InputNumberValue, event?: React.SyntheticEvent<HTMLInputElement>) => void;\n locale?: string;\n}\n\nexport interface IInputNumberControlsProps extends IInputAddonProps {\n /** Always displays controls (steppers)\n * @default false\n */\n showControls?: boolean;\n}\n\nexport interface IInputNumberCtx {\n getValueProps: PropGetterFn;\n getControlsProps: PropGetterFn;\n getAddonProps: PropGetterFn;\n}\n\ndeclare const InputNumber: (<T>(\n props: CProps<IInputNumberProps & T, IInputNumberCtx>,\n) => ReturnEl) & {\n Value: <T>(props: IInputNumberValueProps & T) => ReturnEl;\n Controls: <T>(props: IInputNumberControlsProps & T) => ReturnEl;\n Addon: <T>(props: IInputAddonProps & T) => ReturnEl;\n};\n\nexport default InputNumber;\n"],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import de from './de.json';
2
+ import en from './en.json';
3
+ import es from './es.json';
4
+ import fr from './fr.json';
5
+ import it from './it.json';
6
+ import ja from './ja.json';
7
+ import ko from './ko.json';
8
+ import pt from './pt.json';
9
+ import tr from './tr.json';
10
+ import vi from './vi.json';
11
+ import zh from './zh.json';
12
+ export var localizedMessages = {
13
+ de: de,
14
+ en: en,
15
+ es: es,
16
+ fr: fr,
17
+ it: it,
18
+ ja: ja,
19
+ ko: ko,
20
+ pt: pt,
21
+ tr: tr,
22
+ vi: vi,
23
+ zh: zh
24
+ };
25
+ //# sourceMappingURL=__intergalactic-dynamic-locales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__intergalactic-dynamic-locales.js","names":["de","en","es","fr","it","ja","ko","pt","tr","vi","zh","localizedMessages"],"sources":["../../../src/translations/__intergalactic-dynamic-locales.ts"],"sourcesContent":["import de from './de.json';\nimport en from './en.json';\nimport es from './es.json';\nimport fr from './fr.json';\nimport it from './it.json';\nimport ja from './ja.json';\nimport ko from './ko.json';\nimport pt from './pt.json';\nimport tr from './tr.json';\nimport vi from './vi.json';\nimport zh from './zh.json';\n\nexport const localizedMessages = {\n de,\n en,\n es,\n fr,\n it,\n ja,\n ko,\n pt,\n tr,\n vi,\n zh,\n};\n"],"mappings":"AAAA,OAAOA,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AACA,OAAOC,EAAP,MAAe,WAAf;AAEA,OAAO,IAAMC,iBAAiB,GAAG;EAC/BX,EAAE,EAAFA,EAD+B;EAE/BC,EAAE,EAAFA,EAF+B;EAG/BC,EAAE,EAAFA,EAH+B;EAI/BC,EAAE,EAAFA,EAJ+B;EAK/BC,EAAE,EAAFA,EAL+B;EAM/BC,EAAE,EAAFA,EAN+B;EAO/BC,EAAE,EAAFA,EAP+B;EAQ/BC,EAAE,EAAFA,EAR+B;EAS/BC,EAAE,EAAFA,EAT+B;EAU/BC,EAAE,EAAFA,EAV+B;EAW/BC,EAAE,EAAFA;AAX+B,CAA1B"}
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Zahl erhöhen",
3
+ "decrement": "Zahl verringern"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Increment number",
3
+ "decrement": "Decrement number"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Incrementar número",
3
+ "decrement": "Descenso de número"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Incrémenter le nombre",
3
+ "decrement": "Décrémenter le nombre"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Aumenta il numero",
3
+ "decrement": "Riduci il numero"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "上昇番号",
3
+ "decrement": "下降番号"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Increment number",
3
+ "decrement": "Decrement number"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Aumentar número",
3
+ "decrement": "Diminuir número"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Sayıyı artır",
3
+ "decrement": "Sayıyı azalt"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "Tăng số",
3
+ "decrement": "Giảm số"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "increment": "增量",
3
+ "decrement": "减量"
4
+ }
@@ -29,6 +29,7 @@ export interface IInputNumberValueProps extends IInputValueProps {
29
29
  value?: InputNumberValue;
30
30
  /** Called when the input value changes, it returns its current value in numeric format */
31
31
  onChange?: (value: InputNumberValue, event?: React.SyntheticEvent<HTMLInputElement>) => void;
32
+ locale?: string;
32
33
  }
33
34
 
34
35
  export interface IInputNumberControlsProps extends IInputAddonProps {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/input-number",
3
3
  "description": "Semrush InputNumber Component",
4
- "version": "4.2.1",
4
+ "version": "4.3.0",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",