@pie-lib/config-ui 9.0.3-next.2 → 10.0.0-beta.1

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 (100) hide show
  1. package/CHANGELOG.json +605 -0
  2. package/CHANGELOG.md +976 -328
  3. package/lib/alert-dialog.js +44 -0
  4. package/lib/alert-dialog.js.map +1 -0
  5. package/lib/checkbox.js +5 -5
  6. package/lib/checkbox.js.map +1 -1
  7. package/lib/choice-configuration/feedback-menu.js +42 -54
  8. package/lib/choice-configuration/feedback-menu.js.map +1 -1
  9. package/lib/choice-configuration/index.js +102 -86
  10. package/lib/choice-configuration/index.js.map +1 -1
  11. package/lib/choice-utils.js +9 -7
  12. package/lib/choice-utils.js.map +1 -1
  13. package/lib/feedback-config/feedback-selector.js +45 -49
  14. package/lib/feedback-config/feedback-selector.js.map +1 -1
  15. package/lib/feedback-config/group.js +13 -13
  16. package/lib/feedback-config/group.js.map +1 -1
  17. package/lib/feedback-config/index.js +57 -56
  18. package/lib/feedback-config/index.js.map +1 -1
  19. package/lib/form-section.js +19 -15
  20. package/lib/form-section.js.map +1 -1
  21. package/lib/help.js +31 -38
  22. package/lib/help.js.map +1 -1
  23. package/lib/index.js +73 -52
  24. package/lib/index.js.map +1 -1
  25. package/lib/input.js +36 -41
  26. package/lib/input.js.map +1 -1
  27. package/lib/inputs.js +42 -29
  28. package/lib/inputs.js.map +1 -1
  29. package/lib/langs.js +38 -46
  30. package/lib/langs.js.map +1 -1
  31. package/lib/layout/config-layout.js +36 -42
  32. package/lib/layout/config-layout.js.map +1 -1
  33. package/lib/layout/index.js +3 -3
  34. package/lib/layout/index.js.map +1 -1
  35. package/lib/layout/layout-contents.js +35 -35
  36. package/lib/layout/layout-contents.js.map +1 -1
  37. package/lib/layout/settings-box.js +29 -40
  38. package/lib/layout/settings-box.js.map +1 -1
  39. package/lib/mui-box/index.js +4 -4
  40. package/lib/mui-box/index.js.map +1 -1
  41. package/lib/number-text-field-custom.js +364 -0
  42. package/lib/number-text-field-custom.js.map +1 -0
  43. package/lib/number-text-field.js +46 -46
  44. package/lib/number-text-field.js.map +1 -1
  45. package/lib/radio-with-label.js +5 -5
  46. package/lib/radio-with-label.js.map +1 -1
  47. package/lib/settings/display-size.js +12 -10
  48. package/lib/settings/display-size.js.map +1 -1
  49. package/lib/settings/index.js +81 -14
  50. package/lib/settings/index.js.map +1 -1
  51. package/lib/settings/panel.js +297 -79
  52. package/lib/settings/panel.js.map +1 -1
  53. package/lib/settings/settings-radio-label.js +43 -0
  54. package/lib/settings/settings-radio-label.js.map +1 -0
  55. package/lib/settings/toggle.js +9 -7
  56. package/lib/settings/toggle.js.map +1 -1
  57. package/lib/tabs/index.js +29 -36
  58. package/lib/tabs/index.js.map +1 -1
  59. package/lib/tags-input/index.js +33 -41
  60. package/lib/tags-input/index.js.map +1 -1
  61. package/lib/two-choice.js +46 -50
  62. package/lib/two-choice.js.map +1 -1
  63. package/lib/with-stateful-model.js +24 -31
  64. package/lib/with-stateful-model.js.map +1 -1
  65. package/package.json +9 -7
  66. package/src/alert-dialog.jsx +43 -0
  67. package/src/checkbox.jsx +63 -0
  68. package/src/choice-configuration/feedback-menu.jsx +103 -0
  69. package/src/choice-configuration/index.jsx +319 -0
  70. package/src/choice-utils.js +30 -0
  71. package/src/feedback-config/feedback-selector.jsx +116 -0
  72. package/src/feedback-config/group.jsx +54 -0
  73. package/src/feedback-config/index.jsx +98 -0
  74. package/src/form-section.jsx +23 -0
  75. package/src/help.jsx +88 -0
  76. package/src/index.js +58 -0
  77. package/src/input.jsx +72 -0
  78. package/src/inputs.jsx +96 -0
  79. package/src/langs.jsx +122 -0
  80. package/src/layout/config-layout.jsx +64 -0
  81. package/src/layout/index.js +4 -0
  82. package/src/layout/layout-contents.jsx +60 -0
  83. package/src/layout/settings-box.jsx +31 -0
  84. package/src/mui-box/index.jsx +64 -0
  85. package/src/number-text-field-custom.jsx +276 -0
  86. package/src/number-text-field.jsx +196 -0
  87. package/src/radio-with-label.jsx +18 -0
  88. package/src/settings/display-size.jsx +52 -0
  89. package/src/settings/index.js +75 -0
  90. package/src/settings/panel.jsx +297 -0
  91. package/src/settings/settings-radio-label.jsx +20 -0
  92. package/src/settings/toggle.jsx +31 -0
  93. package/src/tabs/index.jsx +51 -0
  94. package/src/tags-input/index.jsx +121 -0
  95. package/src/two-choice.jsx +94 -0
  96. package/src/with-stateful-model.jsx +36 -0
  97. package/NEXT.CHANGELOG.json +0 -1
  98. package/__mocks__/@pie-lib/editable-html.jsx +0 -3
  99. package/lib/input-container.js +0 -59
  100. package/lib/input-container.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mui-box/index.jsx"],"names":["log","MuiBox","theme","light","palette","type","bottomLineColor","primary","muiBox","paddingTop","spacing","unit","paddingBottom","position","left","right","bottom","height","content","transition","pointerEvents","backgroundColor","transform","focused","children","classes","names","propTypes","PropTypes","oneOfType","arrayOf","node","isRequired","bool"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,gCAAN,CAAZ;AAEA,IAAMC,MAAM,GAAG,wBAAW,UAAAC,KAAK,EAAI;AACjC,MAAMC,KAAK,GAAGD,KAAK,CAACE,OAAN,CAAcC,IAAd,KAAuB,OAArC;AACA,MAAMC,eAAe,GAAGH,KAAK,GAAG,qBAAH,GAA2B,0BAAxD;AAEAH,EAAAA,GAAG,CAACE,KAAK,CAACE,OAAN,CAAcG,OAAd,CAAsBL,KAAK,CAACE,OAAN,CAAcC,IAAd,IAAsB,OAA5C,CAAD,CAAH;AAEA,SAAO;AACLG,IAAAA,MAAM,EAAE;AACNC,MAAAA,UAAU,EAAEP,KAAK,CAACQ,OAAN,CAAcC,IADpB;AAENC,MAAAA,aAAa,EAAEV,KAAK,CAACQ,OAAN,CAAcC,IAFvB;AAGNE,MAAAA,QAAQ,EAAE,UAHJ;AAIN,kBAAY;AACVC,QAAAA,IAAI,EAAE,CADI;AAEVC,QAAAA,KAAK,EAAE,CAFG;AAGVC,QAAAA,MAAM,EAAE,CAHE;AAIVC,QAAAA,MAAM,EAAE,KAJE;AAKVC,QAAAA,OAAO,EAAE,IALC;AAMVL,QAAAA,QAAQ,EAAE,UANA;AAOVM,QAAAA,UAAU,EAAE,yDAPF;AAQVC,QAAAA,aAAa,EAAE,MARL;AASVC,QAAAA,eAAe,EAAEf;AATP,OAJN;AAeN,wBAAkB;AAChBW,QAAAA,MAAM,EAAE;AADQ,OAfZ;AAkBN,iBAAW;AACTH,QAAAA,IAAI,EAAE,CADG;AAETC,QAAAA,KAAK,EAAE,CAFE;AAGTC,QAAAA,MAAM,EAAE,CAHC;AAITC,QAAAA,MAAM,EAAE,KAJC;AAKTC,QAAAA,OAAO,EAAE,IALA;AAMTL,QAAAA,QAAQ,EAAE,UAND;AAOTS,QAAAA,SAAS,EAAE,WAPF;AAQTH,QAAAA,UAAU,EAAE,kDARH;AASTC,QAAAA,aAAa,EAAE,MATN;AAUTC,QAAAA,eAAe,EAAEnB,KAAK,CAACE,OAAN,CAAcG,OAAd,CAAsBL,KAAK,CAACE,OAAN,CAAcC,IAApC,CAVR,CAUkD;;AAVlD;AAlBL,KADH;AAgCLkB,IAAAA,OAAO,EAAE;AACP,iBAAW;AACTD,QAAAA,SAAS,EAAE;AADF;AADJ;AAhCJ,GAAP;AAsCD,CA5Cc,EA4CZ,gBAAoC;AAAA,MAAjCE,QAAiC,QAAjCA,QAAiC;AAAA,MAAvBC,OAAuB,QAAvBA,OAAuB;AAAA,MAAdF,OAAc,QAAdA,OAAc;AACrC,MAAMG,KAAK,GAAG,4BAAWD,OAAO,CAACjB,MAAnB,EAA2Be,OAAO,IAAIE,OAAO,CAACF,OAA9C,CAAd;AACA,SACE;AAAK,IAAA,SAAS,EAAEG;AAAhB,KACGF,QADH,CADF;AAKD,CAnDc,CAAf;AAqDAvB,MAAM,CAAC0B,SAAP,GAAmB;AACjBH,EAAAA,QAAQ,EAAEI,sBAAUC,SAAV,CAAoB,CAC5BD,sBAAUE,OAAV,CAAkBF,sBAAUG,IAA5B,CAD4B,EAE5BH,sBAAUG,IAFkB,CAApB,EAGPC,UAJc;AAKjBT,EAAAA,OAAO,EAAEK,sBAAUK,IAAV,CAAeD;AALP,CAAnB;eAQe/B,M","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport classNames from 'classnames';\n\nconst log = debug('pie-elements:config-ui:mui-box');\n\nconst MuiBox = withStyles(theme => {\n const light = theme.palette.type === 'light';\n const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n\n log(theme.palette.primary[theme.palette.type || 'light']);\n\n return {\n muiBox: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n position: 'relative',\n '&:before': {\n left: 0,\n right: 0,\n bottom: 0,\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transition: 'background-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n pointerEvents: 'none',\n backgroundColor: bottomLineColor\n },\n '&:hover:before': {\n height: '2px'\n },\n '&:after': {\n left: 0,\n right: 0,\n bottom: 0,\n height: '2px',\n content: '\"\"',\n position: 'absolute',\n transform: 'scaleX(0)',\n transition: 'transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms',\n pointerEvents: 'none',\n backgroundColor: theme.palette.primary[theme.palette.type] //'#304ffe'\n }\n },\n focused: {\n '&:after': {\n transform: 'scaleX(1)'\n }\n },\n }\n})(({ children, classes, focused }) => {\n const names = classNames(classes.muiBox, focused && classes.focused);\n return (\n <div className={names}>\n {children}\n </div>\n )\n});\n\nMuiBox.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n focused: PropTypes.bool.isRequired\n}\n\nexport default MuiBox;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["log","debug","MuiBox","withStyles","theme","light","palette","type","bottomLineColor","primary","muiBox","paddingTop","spacing","unit","paddingBottom","position","left","right","bottom","height","content","transition","pointerEvents","backgroundColor","transform","focused","children","classes","names","classNames","propTypes","PropTypes","oneOfType","arrayOf","node","isRequired","bool"],"sources":["../../src/mui-box/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport debug from 'debug';\nimport classNames from 'classnames';\n\nconst log = debug('pie-elements:config-ui:mui-box');\n\nconst MuiBox = withStyles(theme => {\n const light = theme.palette.type === 'light';\n const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n\n log(theme.palette.primary[theme.palette.type || 'light']);\n\n return {\n muiBox: {\n paddingTop: theme.spacing.unit,\n paddingBottom: theme.spacing.unit,\n position: 'relative',\n '&:before': {\n left: 0,\n right: 0,\n bottom: 0,\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transition: 'background-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n pointerEvents: 'none',\n backgroundColor: bottomLineColor\n },\n '&:hover:before': {\n height: '2px'\n },\n '&:after': {\n left: 0,\n right: 0,\n bottom: 0,\n height: '2px',\n content: '\"\"',\n position: 'absolute',\n transform: 'scaleX(0)',\n transition: 'transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms',\n pointerEvents: 'none',\n backgroundColor: theme.palette.primary[theme.palette.type] //'#304ffe'\n }\n },\n focused: {\n '&:after': {\n transform: 'scaleX(1)'\n }\n }\n };\n})(({ children, classes, focused }) => {\n const names = classNames(classes.muiBox, focused && classes.focused);\n\n return <div className={names}>{children}</div>;\n});\n\nMuiBox.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n focused: PropTypes.bool.isRequired\n};\n\nexport default MuiBox;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,GAAG,GAAG,IAAAC,iBAAA,EAAM,gCAAN,CAAZ;AAEA,IAAMC,MAAM,GAAG,IAAAC,kBAAA,EAAW,UAAAC,KAAK,EAAI;EACjC,IAAMC,KAAK,GAAGD,KAAK,CAACE,OAAN,CAAcC,IAAd,KAAuB,OAArC;EACA,IAAMC,eAAe,GAAGH,KAAK,GAAG,qBAAH,GAA2B,0BAAxD;EAEAL,GAAG,CAACI,KAAK,CAACE,OAAN,CAAcG,OAAd,CAAsBL,KAAK,CAACE,OAAN,CAAcC,IAAd,IAAsB,OAA5C,CAAD,CAAH;EAEA,OAAO;IACLG,MAAM,EAAE;MACNC,UAAU,EAAEP,KAAK,CAACQ,OAAN,CAAcC,IADpB;MAENC,aAAa,EAAEV,KAAK,CAACQ,OAAN,CAAcC,IAFvB;MAGNE,QAAQ,EAAE,UAHJ;MAIN,YAAY;QACVC,IAAI,EAAE,CADI;QAEVC,KAAK,EAAE,CAFG;QAGVC,MAAM,EAAE,CAHE;QAIVC,MAAM,EAAE,KAJE;QAKVC,OAAO,EAAE,IALC;QAMVL,QAAQ,EAAE,UANA;QAOVM,UAAU,EAAE,yDAPF;QAQVC,aAAa,EAAE,MARL;QASVC,eAAe,EAAEf;MATP,CAJN;MAeN,kBAAkB;QAChBW,MAAM,EAAE;MADQ,CAfZ;MAkBN,WAAW;QACTH,IAAI,EAAE,CADG;QAETC,KAAK,EAAE,CAFE;QAGTC,MAAM,EAAE,CAHC;QAITC,MAAM,EAAE,KAJC;QAKTC,OAAO,EAAE,IALA;QAMTL,QAAQ,EAAE,UAND;QAOTS,SAAS,EAAE,WAPF;QAQTH,UAAU,EAAE,kDARH;QASTC,aAAa,EAAE,MATN;QAUTC,eAAe,EAAEnB,KAAK,CAACE,OAAN,CAAcG,OAAd,CAAsBL,KAAK,CAACE,OAAN,CAAcC,IAApC,CAVR,CAUkD;;MAVlD;IAlBL,CADH;IAgCLkB,OAAO,EAAE;MACP,WAAW;QACTD,SAAS,EAAE;MADF;IADJ;EAhCJ,CAAP;AAsCD,CA5Cc,EA4CZ,gBAAoC;EAAA,IAAjCE,QAAiC,QAAjCA,QAAiC;EAAA,IAAvBC,OAAuB,QAAvBA,OAAuB;EAAA,IAAdF,OAAc,QAAdA,OAAc;EACrC,IAAMG,KAAK,GAAG,IAAAC,sBAAA,EAAWF,OAAO,CAACjB,MAAnB,EAA2Be,OAAO,IAAIE,OAAO,CAACF,OAA9C,CAAd;EAEA,oBAAO;IAAK,SAAS,EAAEG;EAAhB,GAAwBF,QAAxB,CAAP;AACD,CAhDc,CAAf;AAkDAxB,MAAM,CAAC4B,SAAP,GAAmB;EACjBJ,QAAQ,EAAEK,qBAAA,CAAUC,SAAV,CAAoB,CAACD,qBAAA,CAAUE,OAAV,CAAkBF,qBAAA,CAAUG,IAA5B,CAAD,EAAoCH,qBAAA,CAAUG,IAA9C,CAApB,EAAyEC,UADlE;EAEjBV,OAAO,EAAEM,qBAAA,CAAUK,IAAV,CAAeD;AAFP,CAAnB;eAKejC,M"}
@@ -0,0 +1,364 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.NumberTextFieldCustom = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _propTypes = _interopRequireDefault(require("prop-types"));
25
+
26
+ var _react = _interopRequireDefault(require("react"));
27
+
28
+ var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
29
+
30
+ var _classnames = _interopRequireDefault(require("classnames"));
31
+
32
+ var _styles = require("@material-ui/core/styles");
33
+
34
+ var _isFinite = _interopRequireDefault(require("lodash/isFinite"));
35
+
36
+ var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
37
+
38
+ var _InputAdornment = _interopRequireDefault(require("@material-ui/core/InputAdornment"));
39
+
40
+ var _Remove = _interopRequireDefault(require("@material-ui/icons/Remove"));
41
+
42
+ var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
43
+
44
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
45
+
46
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
47
+
48
+ var styles = function styles(theme) {
49
+ return {
50
+ input: {
51
+ '& input[type=number]': {
52
+ '-moz-appearance': 'textfield'
53
+ },
54
+ '& input[type=number]::-webkit-outer-spin-button': {
55
+ '-webkit-appearance': 'none',
56
+ margin: 0
57
+ },
58
+ '& input[type=number]::-webkit-inner-spin-button': {
59
+ '-webkit-appearance': 'none',
60
+ margin: 0
61
+ }
62
+ },
63
+ iconButton: {
64
+ padding: '2px'
65
+ }
66
+ };
67
+ };
68
+
69
+ var fallbackNumber = function fallbackNumber(min, max) {
70
+ if (!(0, _isFinite["default"])(min) && !(0, _isFinite["default"])(max)) {
71
+ return 0;
72
+ }
73
+
74
+ if (!(0, _isFinite["default"])(min) && (0, _isFinite["default"])(max)) {
75
+ return max;
76
+ }
77
+
78
+ if ((0, _isFinite["default"])(min)) {
79
+ return min;
80
+ }
81
+ };
82
+
83
+ var NumberTextFieldCustom = /*#__PURE__*/function (_React$Component) {
84
+ (0, _inherits2["default"])(NumberTextFieldCustom, _React$Component);
85
+
86
+ var _super = _createSuper(NumberTextFieldCustom);
87
+
88
+ function NumberTextFieldCustom(props) {
89
+ var _this;
90
+
91
+ (0, _classCallCheck2["default"])(this, NumberTextFieldCustom);
92
+ _this = _super.call(this, props);
93
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "normalizeValueAndIndex", function (customValues, number) {
94
+ var value = _this.clamp(number);
95
+
96
+ var currentIndex = (customValues || []).findIndex(function (val) {
97
+ return val === value;
98
+ });
99
+
100
+ if ((customValues || []).length > 0 && currentIndex === -1) {
101
+ var closestValue = _this.getClosestValue(customValues, value);
102
+
103
+ return {
104
+ value: closestValue.value,
105
+ currentIndex: closestValue.index
106
+ };
107
+ }
108
+
109
+ return {
110
+ value: value,
111
+ currentIndex: currentIndex
112
+ };
113
+ });
114
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getClosestValue", function (customValues, number) {
115
+ return customValues.reduce(function (closest, value, index) {
116
+ return Math.abs(value - number) < Math.abs(closest.value - number) ? {
117
+ value: value,
118
+ index: index
119
+ } : closest;
120
+ }, {
121
+ value: customValues[0],
122
+ index: 0
123
+ });
124
+ });
125
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onBlur", function (event) {
126
+ var _this$props = _this.props,
127
+ customValues = _this$props.customValues,
128
+ onlyIntegersAllowed = _this$props.onlyIntegersAllowed;
129
+ var value = event.target.value;
130
+ var rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);
131
+
132
+ var _this$normalizeValueA = _this.normalizeValueAndIndex(customValues, rawNumber),
133
+ number = _this$normalizeValueA.value,
134
+ currentIndex = _this$normalizeValueA.currentIndex;
135
+
136
+ if (number !== _this.state.value) {
137
+ _this.setState({
138
+ value: number.toString(),
139
+ currentIndex: currentIndex
140
+ }, function () {
141
+ return _this.props.onChange(event, number);
142
+ });
143
+ }
144
+ });
145
+
146
+ var _this$normalizeValueA2 = _this.normalizeValueAndIndex(props.customValues, props.value),
147
+ _value = _this$normalizeValueA2.value,
148
+ _currentIndex = _this$normalizeValueA2.currentIndex;
149
+
150
+ _this.state = {
151
+ value: _value,
152
+ currentIndex: _currentIndex
153
+ };
154
+
155
+ if (_value !== props.value) {
156
+ _this.props.onChange({}, _value);
157
+ }
158
+
159
+ _this.onChange = _this.onChange.bind((0, _assertThisInitialized2["default"])(_this));
160
+ return _this;
161
+ }
162
+
163
+ (0, _createClass2["default"])(NumberTextFieldCustom, [{
164
+ key: "UNSAFE_componentWillReceiveProps",
165
+ value: function UNSAFE_componentWillReceiveProps(props) {
166
+ var _this$normalizeValueA3 = this.normalizeValueAndIndex(props.customValues, props.value),
167
+ value = _this$normalizeValueA3.value,
168
+ currentIndex = _this$normalizeValueA3.currentIndex;
169
+
170
+ this.setState({
171
+ value: value,
172
+ currentIndex: currentIndex
173
+ });
174
+ }
175
+ }, {
176
+ key: "clamp",
177
+ value: function clamp(value) {
178
+ var _this$props2 = this.props,
179
+ min = _this$props2.min,
180
+ max = _this$props2.max,
181
+ customValues = _this$props2.customValues;
182
+
183
+ if ((customValues || []).length > 0) {
184
+ return value;
185
+ }
186
+
187
+ if (!(0, _isFinite["default"])(value)) {
188
+ return fallbackNumber(min, max);
189
+ }
190
+
191
+ if ((0, _isFinite["default"])(max)) {
192
+ value = Math.min(value, max);
193
+ }
194
+
195
+ if ((0, _isFinite["default"])(min)) {
196
+ value = Math.max(value, min);
197
+ }
198
+
199
+ return value;
200
+ }
201
+ }, {
202
+ key: "onChange",
203
+ value: function onChange(event) {
204
+ var value = event.target.value;
205
+ this.setState({
206
+ value: value
207
+ });
208
+ }
209
+ }, {
210
+ key: "changeValue",
211
+ value: function changeValue(event) {
212
+ var sign = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
213
+ var shouldUpdate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
214
+ event.preventDefault();
215
+ var _this$props3 = this.props,
216
+ customValues = _this$props3.customValues,
217
+ step = _this$props3.step,
218
+ onlyIntegersAllowed = _this$props3.onlyIntegersAllowed,
219
+ onChange = _this$props3.onChange;
220
+ var _this$state = this.state,
221
+ currentIndex = _this$state.currentIndex,
222
+ value = _this$state.value;
223
+ var updatedIndex = currentIndex + sign * 1;
224
+ var number;
225
+
226
+ if (customValues.length > 0) {
227
+ if (updatedIndex < 0 || updatedIndex >= customValues.length) {
228
+ return;
229
+ }
230
+
231
+ number = customValues[updatedIndex];
232
+ } else {
233
+ var rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);
234
+ var updatedValue = (rawNumber * 10000 + step * sign * 10000) / 10000;
235
+ number = this.clamp(updatedValue);
236
+ }
237
+
238
+ this.setState({
239
+ value: number.toString(),
240
+ currentIndex: updatedIndex
241
+ }, function () {
242
+ if (shouldUpdate) {
243
+ onChange(event, number);
244
+ }
245
+ });
246
+ }
247
+ }, {
248
+ key: "render",
249
+ value: function render() {
250
+ var _this2 = this;
251
+
252
+ var _this$props4 = this.props,
253
+ className = _this$props4.className,
254
+ classes = _this$props4.classes,
255
+ label = _this$props4.label,
256
+ disabled = _this$props4.disabled,
257
+ error = _this$props4.error,
258
+ min = _this$props4.min,
259
+ max = _this$props4.max,
260
+ inputClassName = _this$props4.inputClassName,
261
+ disableUnderline = _this$props4.disableUnderline,
262
+ helperText = _this$props4.helperText,
263
+ variant = _this$props4.variant,
264
+ textAlign = _this$props4.textAlign;
265
+ var value = this.state.value;
266
+ var names = (0, _classnames["default"])(className, classes.input);
267
+ return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
268
+ variant: variant,
269
+ inputRef: function inputRef(ref) {
270
+ return _this2.inputRef = ref;
271
+ },
272
+ disabled: disabled,
273
+ label: label,
274
+ value: value,
275
+ error: error,
276
+ helperText: helperText,
277
+ onChange: this.onChange,
278
+ onBlur: this.onBlur,
279
+ onKeyPress: function onKeyPress(e) {
280
+ // once the Enter key is pressed, we force input blur
281
+ if (e.key === 'Enter' && _this2.inputRef) {
282
+ _this2.inputRef.blur();
283
+ }
284
+ },
285
+ onKeyDown: function onKeyDown(e) {
286
+ if (e.key === 'ArrowUp') {
287
+ _this2.changeValue(e);
288
+ }
289
+
290
+ if (e.key === 'ArrowDown') {
291
+ _this2.changeValue(e, -1);
292
+ }
293
+ },
294
+ type: "number",
295
+ className: names,
296
+ InputProps: {
297
+ className: inputClassName,
298
+ disableUnderline: disableUnderline,
299
+ startAdornment: /*#__PURE__*/_react["default"].createElement(_InputAdornment["default"], {
300
+ position: "start"
301
+ }, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
302
+ className: classes.iconButton,
303
+ disabled: disabled,
304
+ onClick: function onClick(e) {
305
+ return _this2.changeValue(e, -1, true);
306
+ }
307
+ }, /*#__PURE__*/_react["default"].createElement(_Remove["default"], {
308
+ fontSize: "small"
309
+ }))),
310
+ endAdornment: /*#__PURE__*/_react["default"].createElement(_InputAdornment["default"], {
311
+ position: "end"
312
+ }, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
313
+ className: classes.iconButton,
314
+ disabled: disabled,
315
+ onClick: function onClick(e) {
316
+ return _this2.changeValue(e, 1, true);
317
+ }
318
+ }, /*#__PURE__*/_react["default"].createElement(_Add["default"], {
319
+ fontSize: "small"
320
+ })))
321
+ },
322
+ inputProps: {
323
+ style: {
324
+ textAlign: textAlign
325
+ },
326
+ min: min,
327
+ max: max
328
+ }
329
+ });
330
+ }
331
+ }]);
332
+ return NumberTextFieldCustom;
333
+ }(_react["default"].Component);
334
+
335
+ exports.NumberTextFieldCustom = NumberTextFieldCustom;
336
+ (0, _defineProperty2["default"])(NumberTextFieldCustom, "propTypes", {
337
+ classes: _propTypes["default"].object.isRequired,
338
+ className: _propTypes["default"].string,
339
+ customValues: _propTypes["default"].array,
340
+ disabled: _propTypes["default"].bool,
341
+ error: _propTypes["default"].bool,
342
+ inputClassName: _propTypes["default"].string,
343
+ onChange: _propTypes["default"].func.isRequired,
344
+ onlyIntegersAllowed: _propTypes["default"].bool,
345
+ value: _propTypes["default"].number,
346
+ min: _propTypes["default"].number,
347
+ max: _propTypes["default"].number,
348
+ step: _propTypes["default"].number,
349
+ label: _propTypes["default"].string,
350
+ disableUnderline: _propTypes["default"].bool,
351
+ variant: _propTypes["default"].string
352
+ });
353
+ (0, _defineProperty2["default"])(NumberTextFieldCustom, "defaultProps", {
354
+ step: 1,
355
+ customValues: [],
356
+ textAlign: 'center',
357
+ variant: 'standard',
358
+ onlyIntegersAllowed: false
359
+ });
360
+
361
+ var _default = (0, _styles.withStyles)(styles)(NumberTextFieldCustom);
362
+
363
+ exports["default"] = _default;
364
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZXMiLCJ0aGVtZSIsImlucHV0IiwibWFyZ2luIiwiaWNvbkJ1dHRvbiIsInBhZGRpbmciLCJmYWxsYmFja051bWJlciIsIm1pbiIsIm1heCIsImlzRmluaXRlIiwiTnVtYmVyVGV4dEZpZWxkQ3VzdG9tIiwicHJvcHMiLCJjdXN0b21WYWx1ZXMiLCJudW1iZXIiLCJ2YWx1ZSIsImNsYW1wIiwiY3VycmVudEluZGV4IiwiZmluZEluZGV4IiwidmFsIiwibGVuZ3RoIiwiY2xvc2VzdFZhbHVlIiwiZ2V0Q2xvc2VzdFZhbHVlIiwiaW5kZXgiLCJyZWR1Y2UiLCJjbG9zZXN0IiwiTWF0aCIsImFicyIsImV2ZW50Iiwib25seUludGVnZXJzQWxsb3dlZCIsInRhcmdldCIsInJhd051bWJlciIsInBhcnNlSW50IiwicGFyc2VGbG9hdCIsIm5vcm1hbGl6ZVZhbHVlQW5kSW5kZXgiLCJzdGF0ZSIsInNldFN0YXRlIiwidG9TdHJpbmciLCJvbkNoYW5nZSIsImJpbmQiLCJzaWduIiwic2hvdWxkVXBkYXRlIiwicHJldmVudERlZmF1bHQiLCJzdGVwIiwidXBkYXRlZEluZGV4IiwidXBkYXRlZFZhbHVlIiwiY2xhc3NOYW1lIiwiY2xhc3NlcyIsImxhYmVsIiwiZGlzYWJsZWQiLCJlcnJvciIsImlucHV0Q2xhc3NOYW1lIiwiZGlzYWJsZVVuZGVybGluZSIsImhlbHBlclRleHQiLCJ2YXJpYW50IiwidGV4dEFsaWduIiwibmFtZXMiLCJjbGFzc05hbWVzIiwicmVmIiwiaW5wdXRSZWYiLCJvbkJsdXIiLCJlIiwia2V5IiwiYmx1ciIsImNoYW5nZVZhbHVlIiwic3RhcnRBZG9ybm1lbnQiLCJlbmRBZG9ybm1lbnQiLCJzdHlsZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsInN0cmluZyIsImFycmF5IiwiYm9vbCIsImZ1bmMiLCJ3aXRoU3R5bGVzIl0sInNvdXJjZXMiOlsiLi4vc3JjL251bWJlci10ZXh0LWZpZWxkLWN1c3RvbS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVGV4dEZpZWxkIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1RleHRGaWVsZCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IGlzRmluaXRlIGZyb20gJ2xvZGFzaC9pc0Zpbml0ZSc7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9JY29uQnV0dG9uJztcbmltcG9ydCBJbnB1dEFkb3JubWVudCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9JbnB1dEFkb3JubWVudCc7XG5pbXBvcnQgUmVtb3ZlIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9SZW1vdmUnO1xuaW1wb3J0IEFkZCBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvQWRkJztcblxuY29uc3Qgc3R5bGVzID0gdGhlbWUgPT4gKHtcbiAgaW5wdXQ6IHtcbiAgICAnJiBpbnB1dFt0eXBlPW51bWJlcl0nOiB7XG4gICAgICAnLW1vei1hcHBlYXJhbmNlJzogJ3RleHRmaWVsZCdcbiAgICB9LFxuICAgICcmIGlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbic6IHtcbiAgICAgICctd2Via2l0LWFwcGVhcmFuY2UnOiAnbm9uZScsXG4gICAgICBtYXJnaW46IDBcbiAgICB9LFxuICAgICcmIGlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbic6IHtcbiAgICAgICctd2Via2l0LWFwcGVhcmFuY2UnOiAnbm9uZScsXG4gICAgICBtYXJnaW46IDBcbiAgICB9XG4gIH0sXG4gIGljb25CdXR0b246IHtcbiAgICBwYWRkaW5nOiAnMnB4J1xuICB9XG59KTtcblxuY29uc3QgZmFsbGJhY2tOdW1iZXIgPSAobWluLCBtYXgpID0+IHtcbiAgaWYgKCFpc0Zpbml0ZShtaW4pICYmICFpc0Zpbml0ZShtYXgpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBpZiAoIWlzRmluaXRlKG1pbikgJiYgaXNGaW5pdGUobWF4KSkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICBpZiAoaXNGaW5pdGUobWluKSkge1xuICAgIHJldHVybiBtaW47XG4gIH1cbn07XG5cbmV4cG9ydCBjbGFzcyBOdW1iZXJUZXh0RmllbGRDdXN0b20gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY3VzdG9tVmFsdWVzOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpbnB1dENsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbmx5SW50ZWdlcnNBbGxvd2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgICBtaW46IFByb3BUeXBlcy5udW1iZXIsXG4gICAgbWF4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0ZXA6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzYWJsZVVuZGVybGluZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgdmFyaWFudDogUHJvcFR5cGVzLnN0cmluZ1xuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgc3RlcDogMSxcbiAgICBjdXN0b21WYWx1ZXM6IFtdLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgdmFyaWFudDogJ3N0YW5kYXJkJyxcbiAgICBvbmx5SW50ZWdlcnNBbGxvd2VkOiBmYWxzZVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgY29uc3QgeyB2YWx1ZSwgY3VycmVudEluZGV4IH0gPSB0aGlzLm5vcm1hbGl6ZVZhbHVlQW5kSW5kZXgocHJvcHMuY3VzdG9tVmFsdWVzLCBwcm9wcy52YWx1ZSk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgdmFsdWUsXG4gICAgICBjdXJyZW50SW5kZXhcbiAgICB9O1xuXG4gICAgaWYgKHZhbHVlICE9PSBwcm9wcy52YWx1ZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh7fSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XG4gIH1cblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhwcm9wcykge1xuICAgIGNvbnN0IHsgdmFsdWUsIGN1cnJlbnRJbmRleCB9ID0gdGhpcy5ub3JtYWxpemVWYWx1ZUFuZEluZGV4KHByb3BzLmN1c3RvbVZhbHVlcywgcHJvcHMudmFsdWUpO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlLCBjdXJyZW50SW5kZXggfSk7XG4gIH1cblxuICBjbGFtcCh2YWx1ZSkge1xuICAgIGNvbnN0IHsgbWluLCBtYXgsIGN1c3RvbVZhbHVlcyB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICgoY3VzdG9tVmFsdWVzIHx8IFtdKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKCFpc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxsYmFja051bWJlcihtaW4sIG1heCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRmluaXRlKG1heCkpIHtcbiAgICAgIHZhbHVlID0gTWF0aC5taW4odmFsdWUsIG1heCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRmluaXRlKG1pbikpIHtcbiAgICAgIHZhbHVlID0gTWF0aC5tYXgodmFsdWUsIG1pbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbm9ybWFsaXplVmFsdWVBbmRJbmRleCA9IChjdXN0b21WYWx1ZXMsIG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jbGFtcChudW1iZXIpO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IChjdXN0b21WYWx1ZXMgfHwgW10pLmZpbmRJbmRleCh2YWwgPT4gdmFsID09PSB2YWx1ZSk7XG5cbiAgICBpZiAoKGN1c3RvbVZhbHVlcyB8fCBbXSkubGVuZ3RoID4gMCAmJiBjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICBjb25zdCBjbG9zZXN0VmFsdWUgPSB0aGlzLmdldENsb3Nlc3RWYWx1ZShjdXN0b21WYWx1ZXMsIHZhbHVlKTtcblxuICAgICAgcmV0dXJuIHsgdmFsdWU6IGNsb3Nlc3RWYWx1ZS52YWx1ZSwgY3VycmVudEluZGV4OiBjbG9zZXN0VmFsdWUuaW5kZXggfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyB2YWx1ZSwgY3VycmVudEluZGV4IH07XG4gIH07XG5cbiAgZ2V0Q2xvc2VzdFZhbHVlID0gKGN1c3RvbVZhbHVlcywgbnVtYmVyKSA9PlxuICAgIGN1c3RvbVZhbHVlcy5yZWR1Y2UoXG4gICAgICAoY2xvc2VzdCwgdmFsdWUsIGluZGV4KSA9PlxuICAgICAgICBNYXRoLmFicyh2YWx1ZSAtIG51bWJlcikgPCBNYXRoLmFicyhjbG9zZXN0LnZhbHVlIC0gbnVtYmVyKSA/IHsgdmFsdWUsIGluZGV4IH0gOiBjbG9zZXN0LFxuICAgICAgeyB2YWx1ZTogY3VzdG9tVmFsdWVzWzBdLCBpbmRleDogMCB9XG4gICAgKTtcblxuICBvbkJsdXIgPSBldmVudCA9PiB7XG4gICAgY29uc3QgeyBjdXN0b21WYWx1ZXMsIG9ubHlJbnRlZ2Vyc0FsbG93ZWQgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gZXZlbnQudGFyZ2V0O1xuICAgIGNvbnN0IHJhd051bWJlciA9IG9ubHlJbnRlZ2Vyc0FsbG93ZWQgPyBwYXJzZUludCh2YWx1ZSkgOiBwYXJzZUZsb2F0KHZhbHVlKTtcblxuICAgIGNvbnN0IHsgdmFsdWU6IG51bWJlciwgY3VycmVudEluZGV4IH0gPSB0aGlzLm5vcm1hbGl6ZVZhbHVlQW5kSW5kZXgoY3VzdG9tVmFsdWVzLCByYXdOdW1iZXIpO1xuXG4gICAgaWYgKG51bWJlciAhPT0gdGhpcy5zdGF0ZS52YWx1ZSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBudW1iZXIudG9TdHJpbmcoKSxcbiAgICAgICAgICBjdXJyZW50SW5kZXhcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gdGhpcy5wcm9wcy5vbkNoYW5nZShldmVudCwgbnVtYmVyKVxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgb25DaGFuZ2UoZXZlbnQpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBldmVudC50YXJnZXQ7XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWUgfSk7XG4gIH1cblxuICBjaGFuZ2VWYWx1ZShldmVudCwgc2lnbiA9IDEsIHNob3VsZFVwZGF0ZSA9IGZhbHNlKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IHsgY3VzdG9tVmFsdWVzLCBzdGVwLCBvbmx5SW50ZWdlcnNBbGxvd2VkLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IGN1cnJlbnRJbmRleCwgdmFsdWUgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgdXBkYXRlZEluZGV4ID0gY3VycmVudEluZGV4ICsgc2lnbiAqIDE7XG4gICAgbGV0IG51bWJlcjtcblxuICAgIGlmIChjdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHVwZGF0ZWRJbmRleCA8IDAgfHwgdXBkYXRlZEluZGV4ID49IGN1c3RvbVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBudW1iZXIgPSBjdXN0b21WYWx1ZXNbdXBkYXRlZEluZGV4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmF3TnVtYmVyID0gb25seUludGVnZXJzQWxsb3dlZCA/IHBhcnNlSW50KHZhbHVlKSA6IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gKHJhd051bWJlciAqIDEwMDAwICsgc3RlcCAqIHNpZ24gKiAxMDAwMCkgLyAxMDAwMDtcbiAgICAgIG51bWJlciA9IHRoaXMuY2xhbXAodXBkYXRlZFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICB2YWx1ZTogbnVtYmVyLnRvU3RyaW5nKCksXG4gICAgICAgIGN1cnJlbnRJbmRleDogdXBkYXRlZEluZGV4XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoc2hvdWxkVXBkYXRlKSB7XG4gICAgICAgICAgb25DaGFuZ2UoZXZlbnQsIG51bWJlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNsYXNzZXMsXG4gICAgICBsYWJlbCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZXJyb3IsXG4gICAgICBtaW4sXG4gICAgICBtYXgsXG4gICAgICBpbnB1dENsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVVbmRlcmxpbmUsXG4gICAgICBoZWxwZXJUZXh0LFxuICAgICAgdmFyaWFudCxcbiAgICAgIHRleHRBbGlnblxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgdmFsdWUgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgbmFtZXMgPSBjbGFzc05hbWVzKGNsYXNzTmFtZSwgY2xhc3Nlcy5pbnB1dCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICB2YXJpYW50PXt2YXJpYW50fVxuICAgICAgICBpbnB1dFJlZj17cmVmID0+ICh0aGlzLmlucHV0UmVmID0gcmVmKX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX1cbiAgICAgICAgb25CbHVyPXt0aGlzLm9uQmx1cn1cbiAgICAgICAgb25LZXlQcmVzcz17ZSA9PiB7XG4gICAgICAgICAgLy8gb25jZSB0aGUgRW50ZXIga2V5IGlzIHByZXNzZWQsIHdlIGZvcmNlIGlucHV0IGJsdXJcbiAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgdGhpcy5pbnB1dFJlZikge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5ibHVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBvbktleURvd249e2UgPT4ge1xuICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVZhbHVlKGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVmFsdWUoZSwgLTEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIGNsYXNzTmFtZT17bmFtZXN9XG4gICAgICAgIElucHV0UHJvcHM9e3tcbiAgICAgICAgICBjbGFzc05hbWU6IGlucHV0Q2xhc3NOYW1lLFxuICAgICAgICAgIGRpc2FibGVVbmRlcmxpbmU6IGRpc2FibGVVbmRlcmxpbmUsXG4gICAgICAgICAgc3RhcnRBZG9ybm1lbnQ6IChcbiAgICAgICAgICAgIDxJbnB1dEFkb3JubWVudCBwb3NpdGlvbj1cInN0YXJ0XCI+XG4gICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmljb25CdXR0b259XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gdGhpcy5jaGFuZ2VWYWx1ZShlLCAtMSwgdHJ1ZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UmVtb3ZlIGZvbnRTaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICA8L0lucHV0QWRvcm5tZW50PlxuICAgICAgICAgICksXG4gICAgICAgICAgZW5kQWRvcm5tZW50OiAoXG4gICAgICAgICAgICA8SW5wdXRBZG9ybm1lbnQgcG9zaXRpb249XCJlbmRcIj5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuaWNvbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB0aGlzLmNoYW5nZVZhbHVlKGUsIDEsIHRydWUpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEFkZCBmb250U2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgPC9JbnB1dEFkb3JubWVudD5cbiAgICAgICAgICApXG4gICAgICAgIH19XG4gICAgICAgIGlucHV0UHJvcHM9e3tcbiAgICAgICAgICBzdHlsZTogeyB0ZXh0QWxpZ24gfSxcbiAgICAgICAgICBtaW4sXG4gICAgICAgICAgbWF4XG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMpKE51bWJlclRleHRGaWVsZEN1c3RvbSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQUFDLEtBQUs7RUFBQSxPQUFLO0lBQ3ZCQyxLQUFLLEVBQUU7TUFDTCx3QkFBd0I7UUFDdEIsbUJBQW1CO01BREcsQ0FEbkI7TUFJTCxtREFBbUQ7UUFDakQsc0JBQXNCLE1BRDJCO1FBRWpEQyxNQUFNLEVBQUU7TUFGeUMsQ0FKOUM7TUFRTCxtREFBbUQ7UUFDakQsc0JBQXNCLE1BRDJCO1FBRWpEQSxNQUFNLEVBQUU7TUFGeUM7SUFSOUMsQ0FEZ0I7SUFjdkJDLFVBQVUsRUFBRTtNQUNWQyxPQUFPLEVBQUU7SUFEQztFQWRXLENBQUw7QUFBQSxDQUFwQjs7QUFtQkEsSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBYztFQUNuQyxJQUFJLENBQUMsSUFBQUMsb0JBQUEsRUFBU0YsR0FBVCxDQUFELElBQWtCLENBQUMsSUFBQUUsb0JBQUEsRUFBU0QsR0FBVCxDQUF2QixFQUFzQztJQUNwQyxPQUFPLENBQVA7RUFDRDs7RUFFRCxJQUFJLENBQUMsSUFBQUMsb0JBQUEsRUFBU0YsR0FBVCxDQUFELElBQWtCLElBQUFFLG9CQUFBLEVBQVNELEdBQVQsQ0FBdEIsRUFBcUM7SUFDbkMsT0FBT0EsR0FBUDtFQUNEOztFQUVELElBQUksSUFBQUMsb0JBQUEsRUFBU0YsR0FBVCxDQUFKLEVBQW1CO0lBQ2pCLE9BQU9BLEdBQVA7RUFDRDtBQUNGLENBWkQ7O0lBY2FHLHFCOzs7OztFQTJCWCwrQkFBWUMsS0FBWixFQUFtQjtJQUFBOztJQUFBO0lBQ2pCLDBCQUFN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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-text-field-custom.js","names":["styles","theme","input","margin","iconButton","padding","fallbackNumber","min","max","isFinite","NumberTextFieldCustom","props","customValues","number","value","clamp","currentIndex","findIndex","val","length","closestValue","getClosestValue","index","reduce","closest","Math","abs","event","onlyIntegersAllowed","target","rawNumber","parseInt","parseFloat","normalizeValueAndIndex","state","setState","toString","onChange","bind","sign","shouldUpdate","preventDefault","step","updatedIndex","updatedValue","className","classes","label","disabled","error","inputClassName","disableUnderline","helperText","variant","textAlign","names","classNames","ref","inputRef","onBlur","e","key","blur","changeValue","startAdornment","endAdornment","style","React","Component","PropTypes","object","isRequired","string","array","bool","func","withStyles"],"sources":["../src/number-text-field-custom.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport TextField from '@material-ui/core/TextField';\nimport classNames from 'classnames';\nimport { withStyles } from '@material-ui/core/styles';\nimport isFinite from 'lodash/isFinite';\nimport IconButton from '@material-ui/core/IconButton';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport Remove from '@material-ui/icons/Remove';\nimport Add from '@material-ui/icons/Add';\n\nconst styles = theme => ({\n input: {\n '& input[type=number]': {\n '-moz-appearance': 'textfield'\n },\n '& input[type=number]::-webkit-outer-spin-button': {\n '-webkit-appearance': 'none',\n margin: 0\n },\n '& input[type=number]::-webkit-inner-spin-button': {\n '-webkit-appearance': 'none',\n margin: 0\n }\n },\n iconButton: {\n padding: '2px'\n }\n});\n\nconst fallbackNumber = (min, max) => {\n if (!isFinite(min) && !isFinite(max)) {\n return 0;\n }\n\n if (!isFinite(min) && isFinite(max)) {\n return max;\n }\n\n if (isFinite(min)) {\n return min;\n }\n};\n\nexport class NumberTextFieldCustom extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n customValues: PropTypes.array,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n inputClassName: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n onlyIntegersAllowed: PropTypes.bool,\n value: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n label: PropTypes.string,\n disableUnderline: PropTypes.bool,\n variant: PropTypes.string\n };\n\n static defaultProps = {\n step: 1,\n customValues: [],\n textAlign: 'center',\n variant: 'standard',\n onlyIntegersAllowed: false\n };\n\n constructor(props) {\n super(props);\n\n const { value, currentIndex } = this.normalizeValueAndIndex(props.customValues, props.value);\n\n this.state = {\n value,\n currentIndex\n };\n\n if (value !== props.value) {\n this.props.onChange({}, value);\n }\n\n this.onChange = this.onChange.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n const { value, currentIndex } = this.normalizeValueAndIndex(props.customValues, props.value);\n\n this.setState({ value, currentIndex });\n }\n\n clamp(value) {\n const { min, max, customValues } = this.props;\n\n if ((customValues || []).length > 0) {\n return value;\n }\n\n if (!isFinite(value)) {\n return fallbackNumber(min, max);\n }\n\n if (isFinite(max)) {\n value = Math.min(value, max);\n }\n\n if (isFinite(min)) {\n value = Math.max(value, min);\n }\n\n return value;\n }\n\n normalizeValueAndIndex = (customValues, number) => {\n const value = this.clamp(number);\n const currentIndex = (customValues || []).findIndex(val => val === value);\n\n if ((customValues || []).length > 0 && currentIndex === -1) {\n const closestValue = this.getClosestValue(customValues, value);\n\n return { value: closestValue.value, currentIndex: closestValue.index };\n }\n\n return { value, currentIndex };\n };\n\n getClosestValue = (customValues, number) =>\n customValues.reduce(\n (closest, value, index) =>\n Math.abs(value - number) < Math.abs(closest.value - number) ? { value, index } : closest,\n { value: customValues[0], index: 0 }\n );\n\n onBlur = event => {\n const { customValues, onlyIntegersAllowed } = this.props;\n const { value } = event.target;\n const rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);\n\n const { value: number, currentIndex } = this.normalizeValueAndIndex(customValues, rawNumber);\n\n if (number !== this.state.value) {\n this.setState(\n {\n value: number.toString(),\n currentIndex\n },\n () => this.props.onChange(event, number)\n );\n }\n };\n\n onChange(event) {\n const { value } = event.target;\n\n this.setState({ value });\n }\n\n changeValue(event, sign = 1, shouldUpdate = false) {\n event.preventDefault();\n\n const { customValues, step, onlyIntegersAllowed, onChange } = this.props;\n const { currentIndex, value } = this.state;\n const updatedIndex = currentIndex + sign * 1;\n let number;\n\n if (customValues.length > 0) {\n if (updatedIndex < 0 || updatedIndex >= customValues.length) {\n return;\n }\n\n number = customValues[updatedIndex];\n } else {\n const rawNumber = onlyIntegersAllowed ? parseInt(value) : parseFloat(value);\n const updatedValue = (rawNumber * 10000 + step * sign * 10000) / 10000;\n number = this.clamp(updatedValue);\n }\n\n this.setState(\n {\n value: number.toString(),\n currentIndex: updatedIndex\n },\n () => {\n if (shouldUpdate) {\n onChange(event, number);\n }\n }\n );\n }\n\n render() {\n const {\n className,\n classes,\n label,\n disabled,\n error,\n min,\n max,\n inputClassName,\n disableUnderline,\n helperText,\n variant,\n textAlign\n } = this.props;\n const { value } = this.state;\n const names = classNames(className, classes.input);\n\n return (\n <TextField\n variant={variant}\n inputRef={ref => (this.inputRef = ref)}\n disabled={disabled}\n label={label}\n value={value}\n error={error}\n helperText={helperText}\n onChange={this.onChange}\n onBlur={this.onBlur}\n onKeyPress={e => {\n // once the Enter key is pressed, we force input blur\n if (e.key === 'Enter' && this.inputRef) {\n this.inputRef.blur();\n }\n }}\n onKeyDown={e => {\n if (e.key === 'ArrowUp') {\n this.changeValue(e);\n }\n\n if (e.key === 'ArrowDown') {\n this.changeValue(e, -1);\n }\n }}\n type=\"number\"\n className={names}\n InputProps={{\n className: inputClassName,\n disableUnderline: disableUnderline,\n startAdornment: (\n <InputAdornment position=\"start\">\n <IconButton\n className={classes.iconButton}\n disabled={disabled}\n onClick={e => this.changeValue(e, -1, true)}\n >\n <Remove fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n className={classes.iconButton}\n disabled={disabled}\n onClick={e => this.changeValue(e, 1, true)}\n >\n <Add fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n )\n }}\n inputProps={{\n style: { textAlign },\n min,\n max\n }}\n />\n );\n }\n}\n\nexport default withStyles(styles)(NumberTextFieldCustom);\n"],"mappings":"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"}