@hi-ui/time-picker 4.0.0-alpha.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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/lib/cjs/@types/index.js +22 -0
  4. package/lib/cjs/@types/index.js.map +1 -0
  5. package/lib/cjs/Input.js +174 -0
  6. package/lib/cjs/Input.js.map +1 -0
  7. package/lib/cjs/Panel.js +144 -0
  8. package/lib/cjs/Panel.js.map +1 -0
  9. package/lib/cjs/PopContent.js +211 -0
  10. package/lib/cjs/PopContent.js.map +1 -0
  11. package/lib/cjs/Selector.js +128 -0
  12. package/lib/cjs/Selector.js.map +1 -0
  13. package/lib/cjs/TimePicker.js +310 -0
  14. package/lib/cjs/TimePicker.js.map +1 -0
  15. package/lib/cjs/hooks/useFilter.js +39 -0
  16. package/lib/cjs/hooks/useFilter.js.map +1 -0
  17. package/lib/cjs/index.js +34 -0
  18. package/lib/cjs/index.js.map +1 -0
  19. package/lib/cjs/styles/index.scss.js +22 -0
  20. package/lib/cjs/styles/index.scss.js.map +1 -0
  21. package/lib/cjs/utils/analysisFormat.js +42 -0
  22. package/lib/cjs/utils/analysisFormat.js.map +1 -0
  23. package/lib/cjs/utils/disposeInputValue.js +57 -0
  24. package/lib/cjs/utils/disposeInputValue.js.map +1 -0
  25. package/lib/cjs/utils/generateSelectorData.js +58 -0
  26. package/lib/cjs/utils/generateSelectorData.js.map +1 -0
  27. package/lib/cjs/utils/getFormatDefault.js +21 -0
  28. package/lib/cjs/utils/getFormatDefault.js.map +1 -0
  29. package/lib/cjs/utils/getNowString.js +32 -0
  30. package/lib/cjs/utils/getNowString.js.map +1 -0
  31. package/lib/cjs/utils/getRange.js +35 -0
  32. package/lib/cjs/utils/getRange.js.map +1 -0
  33. package/lib/cjs/utils/valueChecker.js +87 -0
  34. package/lib/cjs/utils/valueChecker.js.map +1 -0
  35. package/lib/esm/@types/index.js +19 -0
  36. package/lib/esm/@types/index.js.map +1 -0
  37. package/lib/esm/Input.js +154 -0
  38. package/lib/esm/Input.js.map +1 -0
  39. package/lib/esm/Panel.js +124 -0
  40. package/lib/esm/Panel.js.map +1 -0
  41. package/lib/esm/PopContent.js +188 -0
  42. package/lib/esm/PopContent.js.map +1 -0
  43. package/lib/esm/Selector.js +110 -0
  44. package/lib/esm/Selector.js.map +1 -0
  45. package/lib/esm/TimePicker.js +281 -0
  46. package/lib/esm/TimePicker.js.map +1 -0
  47. package/lib/esm/hooks/useFilter.js +33 -0
  48. package/lib/esm/hooks/useFilter.js.map +1 -0
  49. package/lib/esm/index.js +14 -0
  50. package/lib/esm/index.js.map +1 -0
  51. package/lib/esm/styles/index.scss.js +17 -0
  52. package/lib/esm/styles/index.scss.js.map +1 -0
  53. package/lib/esm/utils/analysisFormat.js +36 -0
  54. package/lib/esm/utils/analysisFormat.js.map +1 -0
  55. package/lib/esm/utils/disposeInputValue.js +51 -0
  56. package/lib/esm/utils/disposeInputValue.js.map +1 -0
  57. package/lib/esm/utils/generateSelectorData.js +52 -0
  58. package/lib/esm/utils/generateSelectorData.js.map +1 -0
  59. package/lib/esm/utils/getFormatDefault.js +15 -0
  60. package/lib/esm/utils/getFormatDefault.js.map +1 -0
  61. package/lib/esm/utils/getNowString.js +25 -0
  62. package/lib/esm/utils/getNowString.js.map +1 -0
  63. package/lib/esm/utils/getRange.js +29 -0
  64. package/lib/esm/utils/getRange.js.map +1 -0
  65. package/lib/esm/utils/valueChecker.js +80 -0
  66. package/lib/esm/utils/valueChecker.js.map +1 -0
  67. package/lib/types/@types/index.d.ts +62 -0
  68. package/lib/types/Input.d.ts +23 -0
  69. package/lib/types/Panel.d.ts +14 -0
  70. package/lib/types/PopContent.d.ts +15 -0
  71. package/lib/types/Selector.d.ts +23 -0
  72. package/lib/types/TimePicker.d.ts +61 -0
  73. package/lib/types/hooks/useFilter.d.ts +2 -0
  74. package/lib/types/index.d.ts +6 -0
  75. package/lib/types/utils/analysisFormat.d.ts +2 -0
  76. package/lib/types/utils/disposeInputValue.d.ts +2 -0
  77. package/lib/types/utils/generateSelectorData.d.ts +10 -0
  78. package/lib/types/utils/getFormatDefault.d.ts +2 -0
  79. package/lib/types/utils/getNowString.d.ts +2 -0
  80. package/lib/types/utils/getRange.d.ts +1 -0
  81. package/lib/types/utils/getSelectorTitle.d.ts +2 -0
  82. package/lib/types/utils/valueChecker.d.ts +8 -0
  83. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysisFormat.js","sources":["../../../src/utils/analysisFormat.ts"],"sourcesContent":[null],"names":["analysisFormat","format","searchList","identifier","type","TimePickerSelectorType","hour","minute","second","result","forEach","includes","push"],"mappings":";;;;;;;;;;;;;;;;;IAEaA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,MAAD;MACtBC,UAAU,GAAG,CACjB;AACEC,IAAAA,UAAU,EAAE,IADd;AAEEC,IAAAA,IAAI,EAAEC,4BAAAA,CAAuBC;AAF/B,GADiB,EAKjB;AACEH,IAAAA,UAAU,EAAE,IADd;AAEEC,IAAAA,IAAI,EAAEC,4BAAAA,CAAuBE;AAF/B,GALiB,EASjB;AACEJ,IAAAA,UAAU,EAAE,IADd;AAEEC,IAAAA,IAAI,EAAEC,4BAAAA,CAAuBG;AAF/B,GATiB;MAcbC,MAAM,GAA6B;AAEzCP,EAAAA,UAAU,CAACQ,OAAXR,CAAmB,cAAA;QAAGC,kBAAAA;QAAYC,YAAAA;;QAC5BH,MAAM,CAACU,QAAPV,CAAgBE,UAAhBF,GAA6B;AAC/BQ,MAAAA,MAAM,CAACG,IAAPH,CAAYL,IAAZK;;AAFJ,GAAAP;SAMOO;;;"}
@@ -0,0 +1,57 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var disposeInputValue = function disposeInputValue(format, original) {
17
+ var inputMaxLength = format.length; // 初步处理(去除前后空格,兼容中文:,去除无效字符,不允许超过长度)
18
+
19
+ var rough = original.trim().replace(/[\uff1a]/g, ':').replace(/[^0-9:]/g, '').slice(0, inputMaxLength); // 兼容直接在为空情况下输入 : 的情况
20
+
21
+ if (rough === ':') {
22
+ return '';
23
+ }
24
+
25
+ if (/:{2}$/.test(rough)) {
26
+ return rough.slice(0, rough.length - 1);
27
+ } // 已经输入两个数字了,现在新输入的一个字符不是 : 号
28
+
29
+
30
+ if (/[0-9]{2}[^:]$/.test(rough)) {
31
+ // 字符串已经到达最长长度,代表,此时,字符串是一个错乱的,直接忽略新输入的字符
32
+ if (rough.length === inputMaxLength) {
33
+ return rough.slice(0, rough.length - 1);
34
+ } // 字符串还有添加空间,则自动添加:在新字符前方
35
+ else {
36
+ return rough.slice(0, rough.length - 1) + ':' + rough.slice(rough.length - 1);
37
+ }
38
+ } // 在某个部分只输入了一个数字,然后输入 : 想要结束这个部分
39
+
40
+
41
+ if (/:[0-9]:$/.test(rough) || /^[0-9]:$/.test(rough)) {
42
+ // 已经达到最大输入了,则此时输入的 : 是无效的
43
+ // 自动转换,去除:,添加 0 在数字前
44
+ if (rough.length === inputMaxLength) {
45
+ return rough.slice(0, rough.length - 2) + '0' + rough.slice(rough.length - 2, rough.length - 1);
46
+ } // 输入没有达到最大,则,此时输入 : 是有效的
47
+ // 自动补充此章节,添加 0
48
+ else {
49
+ return rough.slice(0, rough.length - 2) + '0' + rough.slice(rough.length - 2, rough.length);
50
+ }
51
+ }
52
+
53
+ return rough;
54
+ };
55
+
56
+ exports.disposeInputValue = disposeInputValue;
57
+ //# sourceMappingURL=disposeInputValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposeInputValue.js","sources":["../../../src/utils/disposeInputValue.ts"],"sourcesContent":[null],"names":["disposeInputValue","format","original","inputMaxLength","length","rough","trim","replace","slice","test"],"mappings":";;;;;;;;;;;;;;;IAEaA,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,MAAD,EAA2BC,QAA3B;MACzBC,cAAc,GAAGF,MAAM,CAACG;;MAExBC,KAAK,GAAGH,QAAQ,CACnBI,IADWJ,GAEXK,OAFWL,CAEH,WAFGA,EAEU,GAFVA,EAGXK,OAHWL,CAGH,UAHGA,EAGS,EAHTA,EAIXM,KAJWN,CAIL,CAJKA,EAIFC,cAJED;;MAOVG,KAAK,KAAK,KAAK;WACV;;;MAGL,QAAQI,IAAR,CAAaJ,KAAb,GAAqB;WAChBA,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA;;;;MAIL,gBAAgBI,IAAhB,CAAqBJ,KAArB,GAA6B;;QAE3BA,KAAK,CAACD,MAANC,KAAiBF,gBAAgB;aAC5BE,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA;AADT;SAIK;eACIA,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA,IAAmC,GAAnCA,GAAyCA,KAAK,CAACG,KAANH,CAAYA,KAAK,CAACD,MAANC,GAAe,CAA3BA;;;;;MAKhD,WAAWI,IAAX,CAAgBJ,KAAhB,KAA0B,WAAWI,IAAX,CAAgBJ,KAAhB,GAAwB;;;QAGhDA,KAAK,CAACD,MAANC,KAAiBF,gBAAgB;aAEjCE,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA,IAAmC,GAAnCA,GAAyCA,KAAK,CAACG,KAANH,CAAYA,KAAK,CAACD,MAANC,GAAe,CAA3BA,EAA8BA,KAAK,CAACD,MAANC,GAAe,CAA7CA;AAF7C;;SAOK;eACIA,KAAK,CAACG,KAANH,CAAY,CAAZA,EAAeA,KAAK,CAACD,MAANC,GAAe,CAA9BA,IAAmC,GAAnCA,GAAyCA,KAAK,CAACG,KAANH,CAAYA,KAAK,CAACD,MAANC,GAAe,CAA3BA,EAA8BA,KAAK,CAACD,MAApCC;;;;SAI7CA;;;"}
@@ -0,0 +1,58 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var index = require('../@types/index.js');
17
+
18
+ var generateSelectorData = function generateSelectorData(info) {
19
+ var _disabledMap, _rangeMap, _stepMap;
20
+
21
+ var type = info.type,
22
+ filter = info.filter,
23
+ step = info.step,
24
+ separateValue = info.separateValue,
25
+ panelType = info.panelType,
26
+ selectorTypes = info.selectorTypes;
27
+ var result = [];
28
+
29
+ var getMatchTypeValue = function getMatchTypeValue(selectorType) {
30
+ var matchIndex = selectorTypes.indexOf(selectorType);
31
+ return matchIndex >= 0 ? separateValue[matchIndex] : -1;
32
+ };
33
+
34
+ var disabledMap = (_disabledMap = {}, _disabledMap[index.TimePickerSelectorType.hour] = function () {
35
+ return filter.disabledHours(panelType);
36
+ }, _disabledMap[index.TimePickerSelectorType.minute] = function () {
37
+ return filter.disabledMinutes(getMatchTypeValue(index.TimePickerSelectorType.hour), panelType);
38
+ }, _disabledMap[index.TimePickerSelectorType.second] = function () {
39
+ return filter.disabledSeconds(getMatchTypeValue(index.TimePickerSelectorType.hour), getMatchTypeValue(index.TimePickerSelectorType.minute), panelType);
40
+ }, _disabledMap);
41
+ var disabledNumbers = disabledMap[type]();
42
+ var rangeMap = (_rangeMap = {}, _rangeMap[index.TimePickerSelectorType.hour] = [0, 23], _rangeMap[index.TimePickerSelectorType.minute] = [0, 59], _rangeMap[index.TimePickerSelectorType.second] = [0, 59], _rangeMap);
43
+ var range = rangeMap[type];
44
+ var stepMap = (_stepMap = {}, _stepMap[index.TimePickerSelectorType.hour] = step.hourStep, _stepMap[index.TimePickerSelectorType.minute] = step.minuteStep, _stepMap[index.TimePickerSelectorType.second] = step.secondStep, _stepMap);
45
+
46
+ for (var index$1 = range[0]; index$1 <= range[1]; index$1 += stepMap[type]) {
47
+ result.push({
48
+ title: String(index$1).padStart(2, '0'),
49
+ disabled: disabledNumbers.includes(index$1),
50
+ id: String(index$1)
51
+ });
52
+ }
53
+
54
+ return result;
55
+ };
56
+
57
+ exports.generateSelectorData = generateSelectorData;
58
+ //# sourceMappingURL=generateSelectorData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateSelectorData.js","sources":["../../../src/utils/generateSelectorData.ts"],"sourcesContent":[null],"names":["generateSelectorData","info","type","filter","step","separateValue","panelType","selectorTypes","result","getMatchTypeValue","selectorType","matchIndex","indexOf","disabledMap","TimePickerSelectorType","hour","disabledHours","minute","disabledMinutes","second","disabledSeconds","disabledNumbers","rangeMap","range","stepMap","hourStep","minuteStep","secondStep","index","push","title","String","padStart","disabled","includes","id"],"mappings":";;;;;;;;;;;;;;;;;IAQaA,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,IAAD;;;MAQ1BC,IAAR,GAAwED,IAAxE,CAAQC;MAAMC,MAAd,GAAwEF,IAAxE,CAAcE;MAAQC,IAAtB,GAAwEH,IAAxE,CAAsBG;MAAMC,aAA5B,GAAwEJ,IAAxE,CAA4BI;MAAeC,SAA3C,GAAwEL,IAAxE,CAA2CK;MAAWC,aAAtD,GAAwEN,IAAxE,CAAsDM;MAChDC,MAAM,GAAmB;;MAEzBC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,YAAD;QAClBC,UAAU,GAAGJ,aAAa,CAACK,OAAdL,CAAsBG,YAAtBH;WACZI,UAAU,IAAI,CAAdA,GAAkBN,aAAa,CAACM,UAAD,CAA/BA,GAA8C,CAAC;AAFxD;;MAKME,WAAW,oCACdC,4BAAAA,CAAuBC,QAAO;WAAMZ,MAAM,CAACa,aAAPb,CAAqBG,SAArBH;AADtB,kBAEdW,4BAAAA,CAAuBG,UAAS;WAC/Bd,MAAM,CAACe,eAAPf,CAAuBM,iBAAiB,CAACK,4BAAAA,CAAuBC,IAAxB,CAAxCZ,EAAuEG,SAAvEH;AAHa,kBAIdW,4BAAAA,CAAuBK,UAAS;WAC/BhB,MAAM,CAACiB,eAAPjB,CACEM,iBAAiB,CAACK,4BAAAA,CAAuBC,IAAxB,CADnBZ,EAEEM,iBAAiB,CAACK,4BAAAA,CAAuBG,MAAxB,CAFnBd,EAGEG,SAHFH;AALa,iBAAA;MAWXkB,eAAe,GAAGR,WAAW,CAACX,IAAD,CAAXW;MAElBS,QAAQ,8BACXR,4BAAAA,CAAuBC,QAAO,CAAC,CAAD,EAAI,EAAJ,aAC9BD,4BAAAA,CAAuBG,UAAS,CAAC,CAAD,EAAI,EAAJ,aAChCH,4BAAAA,CAAuBK,UAAS,CAAC,CAAD,EAAI,EAAJ,YAHrB;MAKRI,KAAK,GAAGD,QAAQ,CAACpB,IAAD;MAEhBsB,OAAO,4BACVV,4BAAAA,CAAuBC,QAAOX,IAAI,CAACqB,mBACnCX,4BAAAA,CAAuBG,UAASb,IAAI,CAACsB,qBACrCZ,4BAAAA,CAAuBK,UAASf,IAAI,CAACuB,oBAH3B;;OAMR,IAAIC,OAAK,GAAGL,KAAK,CAAC,CAAD,GAAKK,OAAK,IAAIL,KAAK,CAAC,CAAD,GAAKK,OAAK,IAAIJ,OAAO,CAACtB,IAAD,GAAQ;AACpEM,IAAAA,MAAM,CAACqB,IAAPrB,CAAY;AACVsB,MAAAA,KAAK,EAAEC,MAAM,CAACH,OAAD,CAANG,CAAcC,QAAdD,CAAuB,CAAvBA,EAA0B,GAA1BA,CADG;AAEVE,MAAAA,QAAQ,EAAEZ,eAAe,CAACa,QAAhBb,CAAyBO,OAAzBP,CAFA;AAGVc,MAAAA,EAAE,EAAEJ,MAAM,CAACH,OAAD;AAHA,KAAZpB;;;SAOKA;;;"}
@@ -0,0 +1,21 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var getFormatDefault = function getFormatDefault(format) {
17
+ return format.replace(/[Hms]/g, '0');
18
+ };
19
+
20
+ exports.getFormatDefault = getFormatDefault;
21
+ //# sourceMappingURL=getFormatDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFormatDefault.js","sources":["../../../src/utils/getFormatDefault.ts"],"sourcesContent":[null],"names":["getFormatDefault","format","replace"],"mappings":";;;;;;;;;;;;;;;IAEaA,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,MAAD;SACvBA,MAAM,CAACC,OAAPD,CAAe,QAAfA,EAAyB,GAAzBA;;;"}
@@ -0,0 +1,32 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var index = require('../@types/index.js');
17
+
18
+ var analysisFormat = require('./analysisFormat.js');
19
+
20
+ var getNowString = function getNowString(formatString) {
21
+ var _timeMap;
22
+
23
+ var format = analysisFormat.analysisFormat(formatString);
24
+ var now = new Date();
25
+ var timeMap = (_timeMap = {}, _timeMap[index.TimePickerSelectorType.hour] = String(now.getHours()).padStart(2, '0'), _timeMap[index.TimePickerSelectorType.minute] = String(now.getMinutes()).padStart(2, '0'), _timeMap[index.TimePickerSelectorType.second] = String(now.getSeconds()).padStart(2, '0'), _timeMap);
26
+ return format.map(function (item) {
27
+ return timeMap[item];
28
+ }).join(':');
29
+ };
30
+
31
+ exports.getNowString = getNowString;
32
+ //# sourceMappingURL=getNowString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNowString.js","sources":["../../../src/utils/getNowString.ts"],"sourcesContent":[null],"names":["getNowString","formatString","format","analysisFormat","now","Date","timeMap","TimePickerSelectorType","hour","String","getHours","padStart","minute","getMinutes","second","getSeconds","map","item","join"],"mappings":";;;;;;;;;;;;;;;;;;;IAGaA,YAAY,GAAG,SAAfA,YAAe,CAACC,YAAD;;;MACpBC,MAAM,GAAGC,6BAAAA,CAAeF,YAAfE;MAETC,GAAG,GAAG,IAAIC,IAAJ;MACNC,OAAO,4BACVC,4BAAAA,CAAuBC,QAAOC,MAAM,CAACL,GAAG,CAACM,QAAJN,EAAD,CAANK,CAAuBE,QAAvBF,CAAgC,CAAhCA,EAAmC,GAAnCA,YAC9BF,4BAAAA,CAAuBK,UAASH,MAAM,CAACL,GAAG,CAACS,UAAJT,EAAD,CAANK,CAAyBE,QAAzBF,CAAkC,CAAlCA,EAAqC,GAArCA,YAChCF,4BAAAA,CAAuBO,UAASL,MAAM,CAACL,GAAG,CAACW,UAAJX,EAAD,CAANK,CAAyBE,QAAzBF,CAAkC,CAAlCA,EAAqC,GAArCA,WAHtB;SAKNP,MAAM,CAACc,GAAPd,CAAW,UAACe,IAAD;WAAUX,OAAO,CAACW,IAAD;AAA5B,GAAAf,EAAoCgB,IAApChB,CAAyC,GAAzCA;;;"}
@@ -0,0 +1,35 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var getRange = function getRange(min, max) {
17
+ var result = [];
18
+
19
+ if (min > max) {
20
+ return [];
21
+ }
22
+
23
+ if (min < 0 || max < 0) {
24
+ return [];
25
+ }
26
+
27
+ for (var counter = min; counter <= max; counter++) {
28
+ result.push(counter);
29
+ }
30
+
31
+ return result;
32
+ };
33
+
34
+ exports.getRange = getRange;
35
+ //# sourceMappingURL=getRange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRange.js","sources":["../../../src/utils/getRange.ts"],"sourcesContent":[null],"names":["getRange","min","max","result","counter","push"],"mappings":";;;;;;;;;;;;;;;IAAaA,QAAQ,GAAG,SAAXA,QAAW,CAACC,GAAD,EAAcC,GAAd;MAChBC,MAAM,GAAG;;MAEXF,GAAG,GAAGC,KAAK;WACN;;;MAGLD,GAAG,GAAG,CAANA,IAAWC,GAAG,GAAG,GAAG;WACf;;;OAGJ,IAAIE,OAAO,GAAGH,KAAKG,OAAO,IAAIF,KAAKE,OAAO,IAAI;AACjDD,IAAAA,MAAM,CAACE,IAAPF,CAAYC,OAAZD;;;SAGKA;;;"}
@@ -0,0 +1,87 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var index = require('../@types/index.js');
17
+
18
+ var analysisFormat = require('./analysisFormat.js');
19
+
20
+ var valueChecker = function valueChecker(info) {
21
+ var _checkerMap, _disabledMap, _stepMap;
22
+
23
+ var value = info.value,
24
+ format = info.format,
25
+ filter = info.filter,
26
+ panelType = info.panelType,
27
+ step = info.step;
28
+ var selectorTypes = analysisFormat.analysisFormat(format);
29
+ var checkerMap = (_checkerMap = {}, _checkerMap[index.TimePickerSelectorType.hour] = function (e) {
30
+ return e >= 0 && e <= 23;
31
+ }, _checkerMap[index.TimePickerSelectorType.minute] = function (e) {
32
+ return e >= 0 && e <= 59;
33
+ }, _checkerMap[index.TimePickerSelectorType.second] = function (e) {
34
+ return e >= 0 && e <= 59;
35
+ }, _checkerMap); // 允许为空的情况
36
+
37
+ if (value === '') {
38
+ return true;
39
+ }
40
+
41
+ if (!value) {
42
+ return false;
43
+ }
44
+
45
+ var separateParts = value.split(':').filter(function (item) {
46
+ return !!item && item.length === 2;
47
+ }).map(function (item) {
48
+ return Number(item);
49
+ });
50
+
51
+ if (separateParts.length !== selectorTypes.length) {
52
+ return false;
53
+ }
54
+
55
+ var getMatchTypeValue = function getMatchTypeValue(selectorType) {
56
+ var matchIndex = selectorTypes.indexOf(selectorType);
57
+ return matchIndex >= 0 ? separateParts[matchIndex] : -1;
58
+ };
59
+
60
+ var disabledMap = (_disabledMap = {}, _disabledMap[index.TimePickerSelectorType.hour] = function () {
61
+ return filter.disabledHours(panelType);
62
+ }, _disabledMap[index.TimePickerSelectorType.minute] = function () {
63
+ return filter.disabledMinutes(getMatchTypeValue(index.TimePickerSelectorType.hour), panelType);
64
+ }, _disabledMap[index.TimePickerSelectorType.second] = function () {
65
+ return filter.disabledSeconds(getMatchTypeValue(index.TimePickerSelectorType.hour), getMatchTypeValue(index.TimePickerSelectorType.minute), panelType);
66
+ }, _disabledMap);
67
+ var stepMap = (_stepMap = {}, _stepMap[index.TimePickerSelectorType.hour] = step.hourStep, _stepMap[index.TimePickerSelectorType.minute] = step.minuteStep, _stepMap[index.TimePickerSelectorType.second] = step.secondStep, _stepMap);
68
+
69
+ for (var counter = 0; counter < separateParts.length; counter++) {
70
+ var type = selectorTypes[counter];
71
+ var stepNumber = stepMap[type];
72
+ var disabledNumbers = disabledMap[type]();
73
+ var checker = checkerMap[type];
74
+ var checkNumber = separateParts[counter]; // 不符合要求的数字
75
+ // 被禁用的数字
76
+ // 不符合 step 的数字
77
+
78
+ if (!checker(checkNumber) || disabledNumbers.includes(checkNumber) || checkNumber % stepNumber !== 0) {
79
+ return false;
80
+ }
81
+ }
82
+
83
+ return true;
84
+ };
85
+
86
+ exports.valueChecker = valueChecker;
87
+ //# sourceMappingURL=valueChecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valueChecker.js","sources":["../../../src/utils/valueChecker.ts"],"sourcesContent":[null],"names":["valueChecker","info","value","format","filter","panelType","step","selectorTypes","analysisFormat","checkerMap","TimePickerSelectorType","hour","e","minute","second","separateParts","split","item","length","map","Number","getMatchTypeValue","selectorType","matchIndex","indexOf","disabledMap","disabledHours","disabledMinutes","disabledSeconds","stepMap","hourStep","minuteStep","secondStep","counter","type","stepNumber","disabledNumbers","checker","checkNumber","includes"],"mappings":";;;;;;;;;;;;;;;;;;;IASaA,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD;;;MAOlBC,KAAR,GAAmDD,IAAnD,CAAQC;MAAOC,MAAf,GAAmDF,IAAnD,CAAeE;MAAQC,MAAvB,GAAmDH,IAAnD,CAAuBG;MAAQC,SAA/B,GAAmDJ,IAAnD,CAA+BI;MAAWC,IAA1C,GAAmDL,IAAnD,CAA0CK;MACpCC,aAAa,GAAGC,6BAAAA,CAAeL,MAAfK;MAChBC,UAAU,kCACbC,4BAAAA,CAAuBC,QAAO,UAACC,CAAD;WAAeA,CAAC,IAAI,CAALA,IAAUA,CAAC,IAAI;AAD/C,iBAEbF,4BAAAA,CAAuBG,UAAS,UAACD,CAAD;WAAeA,CAAC,IAAI,CAALA,IAAUA,CAAC,IAAI;AAFjD,iBAGbF,4BAAAA,CAAuBI,UAAS,UAACF,CAAD;WAAeA,CAAC,IAAI,CAALA,IAAUA,CAAC,IAAI;AAHjD,gBAAA;;MAMZV,KAAK,KAAK,IAAI;WACT;;;MAEL,CAACA,OAAO;WACH;;;MAGHa,aAAa,GAAGb,KAAK,CACxBc,KADmBd,CACb,GADaA,EAEnBE,MAFmBF,CAEZ,UAACe,IAAD;WAAU,CAAC,CAACA,IAAF,IAAUA,IAAI,CAACC,MAALD,KAAgB;AAFxB,GAAAf,EAGnBiB,GAHmBjB,CAGf,UAACe,IAAD;WAAUG,MAAM,CAACH,IAAD;AAHD,GAAAf;;MAKlBa,aAAa,CAACG,MAAdH,KAAyBR,aAAa,CAACW,QAAQ;WAC1C;;;MAGHG,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,YAAD;QAClBC,UAAU,GAAGhB,aAAa,CAACiB,OAAdjB,CAAsBe,YAAtBf;WACZgB,UAAU,IAAI,CAAdA,GAAkBR,aAAa,CAACQ,UAAD,CAA/BA,GAA8C,CAAC;AAFxD;;MAKME,WAAW,oCACdf,4BAAAA,CAAuBC,QAAO;WAAMP,MAAM,CAACsB,aAAPtB,CAAqBC,SAArBD;AADtB,kBAEdM,4BAAAA,CAAuBG,UAAS;WAC/BT,MAAM,CAACuB,eAAPvB,CAAuBiB,iBAAiB,CAACX,4BAAAA,CAAuBC,IAAxB,CAAxCP,EAAuEC,SAAvED;AAHa,kBAIdM,4BAAAA,CAAuBI,UAAS;WAC/BV,MAAM,CAACwB,eAAPxB,CACEiB,iBAAiB,CAACX,4BAAAA,CAAuBC,IAAxB,CADnBP,EAEEiB,iBAAiB,CAACX,4BAAAA,CAAuBG,MAAxB,CAFnBT,EAGEC,SAHFD;AALa,iBAAA;MAYXyB,OAAO,4BACVnB,4BAAAA,CAAuBC,QAAOL,IAAI,CAACwB,mBACnCpB,4BAAAA,CAAuBG,UAASP,IAAI,CAACyB,qBACrCrB,4BAAAA,CAAuBI,UAASR,IAAI,CAAC0B,oBAH3B;;OAMR,IAAIC,OAAO,GAAG,GAAGA,OAAO,GAAGlB,aAAa,CAACG,QAAQe,OAAO,IAAI;QACzDC,IAAI,GAAG3B,aAAa,CAAC0B,OAAD;QACpBE,UAAU,GAAGN,OAAO,CAACK,IAAD;QACpBE,eAAe,GAAGX,WAAW,CAACS,IAAD,CAAXT;QAClBY,OAAO,GAAG5B,UAAU,CAACyB,IAAD;QACpBI,WAAW,GAAGvB,aAAa,CAACkB,OAAD,EAL8B;;;;QAU7D,CAACI,OAAO,CAACC,WAAD,CAAR,IACAF,eAAe,CAACG,QAAhBH,CAAyBE,WAAzBF,CADA,IAEAE,WAAW,GAAGH,UAAdG,KAA6B,GAC7B;aACO;;;;SAIJ;;;"}
@@ -0,0 +1,19 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ var TimePickerSelectorType;
11
+
12
+ (function (TimePickerSelectorType) {
13
+ TimePickerSelectorType[TimePickerSelectorType["hour"] = 1] = "hour";
14
+ TimePickerSelectorType[TimePickerSelectorType["minute"] = 2] = "minute";
15
+ TimePickerSelectorType[TimePickerSelectorType["second"] = 3] = "second";
16
+ })(TimePickerSelectorType || (TimePickerSelectorType = {}));
17
+
18
+ export { TimePickerSelectorType };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/@types/index.ts"],"sourcesContent":[null],"names":["TimePickerSelectorType"],"mappings":";;;;;;;;;IAMYA;;AAAZ,WAAYA;AACVA,EAAAA,0DAAAA,SAAAA;AACAA,EAAAA,4DAAAA,WAAAA;AACAA,EAAAA,4DAAAA,WAAAA;AAHF,CAAA,EAAYA,sBAAsB,KAAtBA,sBAAsB,KAAA,CAAlC;;"}
@@ -0,0 +1,154 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ import React, { forwardRef, useMemo, useState, useCallback, useEffect, useImperativeHandle } from 'react';
11
+ import { cx } from '@hi-ui/classname';
12
+ import { valueChecker } from './utils/valueChecker.js';
13
+ import { disposeInputValue } from './utils/disposeInputValue.js';
14
+ var Input = /*#__PURE__*/forwardRef(function (props, ref) {
15
+ var _cx;
16
+
17
+ var prefix = props.prefix,
18
+ value = props.value,
19
+ format = props.format,
20
+ hourStep = props.hourStep,
21
+ minuteStep = props.minuteStep,
22
+ secondStep = props.secondStep,
23
+ disabledHours = props.disabledHours,
24
+ disabledMinutes = props.disabledMinutes,
25
+ disabledSeconds = props.disabledSeconds,
26
+ type = props.type,
27
+ placeholders = props.placeholders,
28
+ _onChange = props.onChange,
29
+ _onFocus = props.onFocus,
30
+ disabled = props.disabled,
31
+ onValidChange = props.onValidChange;
32
+ var componentClass = useMemo(function () {
33
+ return prefix + "__input";
34
+ }, [prefix]);
35
+
36
+ var _useState = useState(value),
37
+ cacheValue = _useState[0],
38
+ setCacheValue = _useState[1];
39
+
40
+ var getPanelType = useCallback(function (index) {
41
+ if (type === 'single') {
42
+ return 'single';
43
+ } else {
44
+ return index === 0 ? 'range-start' : 'range-end';
45
+ }
46
+ }, [type]); // 检查值是否合规
47
+
48
+ var validChecker = useCallback(function (checkValue, panelType) {
49
+ return valueChecker({
50
+ value: checkValue,
51
+ format: format,
52
+ filter: {
53
+ disabledSeconds: disabledSeconds,
54
+ disabledMinutes: disabledMinutes,
55
+ disabledHours: disabledHours
56
+ },
57
+ step: {
58
+ hourStep: hourStep,
59
+ minuteStep: minuteStep,
60
+ secondStep: secondStep
61
+ },
62
+ panelType: panelType
63
+ });
64
+ }, [hourStep, minuteStep, secondStep, disabledHours, disabledMinutes, disabledSeconds, format]); // 缓存同步外部
65
+
66
+ useEffect(function () {
67
+ setCacheValue(function (pre) {
68
+ var result = value.slice(0, type === 'single' ? 1 : 2);
69
+
70
+ if (result.join('') !== pre.join('')) {
71
+ return result;
72
+ }
73
+
74
+ return pre;
75
+ });
76
+ }, [value, type]);
77
+ var judgeIsValid = useCallback(function (disposeValue) {
78
+ var valueValid = disposeValue.every(function (item, index) {
79
+ return validChecker(item, getPanelType(index));
80
+ });
81
+
82
+ if (type === 'range' && valueValid) {
83
+ // 数据格式正确,检查范围数据
84
+ // 全为空字符串,则认为是合法的(还未选择)
85
+ if (disposeValue.every(function (item) {
86
+ return item === '';
87
+ })) {
88
+ return true;
89
+ } // 结束时间要>开始时间
90
+
91
+
92
+ return disposeValue[1] > disposeValue[0];
93
+ } else {
94
+ return valueValid;
95
+ }
96
+ }, [validChecker, getPanelType, type]);
97
+ var renderInput = useCallback(function (matchValue, index) {
98
+ var dispose = function dispose(disposeValue, needValid) {
99
+ if (needValid === void 0) {
100
+ needValid = true;
101
+ }
102
+
103
+ var newValue = disposeInputValue(format, disposeValue);
104
+ var result = [].concat(cacheValue);
105
+ result[index] = newValue;
106
+ setCacheValue(result); // 合法,则通知外部
107
+
108
+ if (!needValid || validChecker(newValue, getPanelType(index))) {
109
+ return [].concat(result);
110
+ }
111
+
112
+ return undefined;
113
+ };
114
+
115
+ return /*#__PURE__*/React.createElement("div", {
116
+ className: componentClass + "__wrapper"
117
+ }, /*#__PURE__*/React.createElement("input", {
118
+ className: componentClass + "__interact-area",
119
+ onChange: function onChange(e) {
120
+ var result = dispose(e.target.value);
121
+
122
+ if (result) {
123
+ _onChange(result);
124
+ }
125
+ },
126
+ disabled: disabled,
127
+ onFocus: function onFocus() {
128
+ _onFocus();
129
+ },
130
+ value: matchValue,
131
+ placeholder: placeholders[index]
132
+ }));
133
+ }, [placeholders, format, _onFocus, _onChange, cacheValue, getPanelType, // onBlur,
134
+ validChecker, componentClass, disabled, type]); // 通知外部,输入框内容合法性变更
135
+
136
+ useEffect(function () {
137
+ onValidChange(judgeIsValid(cacheValue));
138
+ }, [judgeIsValid, cacheValue, onValidChange]);
139
+ useImperativeHandle(ref, function () {
140
+ return {
141
+ refresh: function refresh() {
142
+ return setCacheValue([].concat(value));
143
+ }
144
+ };
145
+ }, [value]);
146
+ return /*#__PURE__*/React.createElement("div", {
147
+ className: cx(componentClass, (_cx = {}, _cx[componentClass + "--not-valid"] = !judgeIsValid(cacheValue), _cx[componentClass + "--range"] = type === 'range', _cx[componentClass + "--disabled"] = disabled, _cx))
148
+ }, renderInput(cacheValue[0], 0), type === 'range' && /*#__PURE__*/React.createElement("div", {
149
+ className: componentClass + "__range-separator"
150
+ }, "\u81F3"), type === 'range' && renderInput(cacheValue[1], 1));
151
+ });
152
+ Input.displayName = 'Input';
153
+ export { Input };
154
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.js","sources":["../../src/Input.tsx"],"sourcesContent":[null],"names":["Input","forwardRef","props","ref","prefix","value","format","hourStep","minuteStep","secondStep","disabledHours","disabledMinutes","disabledSeconds","type","placeholders","onChange","onFocus","disabled","onValidChange","componentClass","useMemo","useState","cacheValue","setCacheValue","getPanelType","useCallback","index","validChecker","checkValue","panelType","valueChecker","filter","step","useEffect","pre","result","slice","join","judgeIsValid","disposeValue","valueValid","every","item","renderInput","matchValue","dispose","needValid","newValue","disposeInputValue","undefined","React","className","e","target","placeholder","useImperativeHandle","refresh","cx","displayName"],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /** @LICENSE
2
+ * @hi-ui/time-picker
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/time-picker#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ import React, { useMemo, useCallback } from 'react';
11
+ import { analysisFormat } from './utils/analysisFormat.js';
12
+ import { generateSelectorData } from './utils/generateSelectorData.js';
13
+ import { cx } from '@hi-ui/classname';
14
+ import { Selector, SelectorPosition } from './Selector.js';
15
+
16
+ var Panel = function Panel(props) {
17
+ var hourStep = props.hourStep,
18
+ secondStep = props.secondStep,
19
+ minuteStep = props.minuteStep,
20
+ disabledHours = props.disabledHours,
21
+ disabledMinutes = props.disabledMinutes,
22
+ disabledSeconds = props.disabledSeconds,
23
+ prefix = props.prefix,
24
+ format = props.format,
25
+ value = props.value,
26
+ panel = props.panel,
27
+ _onChange = props.onChange,
28
+ itemHeight = props.itemHeight,
29
+ fullDisplayItemNumber = props.fullDisplayItemNumber;
30
+ var componentPrefix = useMemo(function () {
31
+ return prefix + "__panel";
32
+ }, [prefix]);
33
+ var selectorTypes = useMemo(function () {
34
+ return analysisFormat(format);
35
+ }, [format]);
36
+ var separateValue = useMemo(function () {
37
+ return value.split(':').filter(function (item) {
38
+ return item;
39
+ }).map(function (item) {
40
+ return Number(item);
41
+ });
42
+ }, [value]);
43
+ var getSelectorData = useCallback(function (type) {
44
+ return generateSelectorData({
45
+ panelType: panel,
46
+ type: type,
47
+ filter: {
48
+ disabledHours: disabledHours,
49
+ disabledMinutes: disabledMinutes,
50
+ disabledSeconds: disabledSeconds
51
+ },
52
+ step: {
53
+ secondStep: secondStep,
54
+ hourStep: hourStep,
55
+ minuteStep: minuteStep
56
+ },
57
+ selectorTypes: selectorTypes,
58
+ separateValue: separateValue
59
+ });
60
+ }, [disabledHours, disabledMinutes, disabledSeconds, secondStep, hourStep, minuteStep, panel, selectorTypes, separateValue]); // const renderHeader = useCallback(() => {
61
+ // return (
62
+ // <div className={`${componentPrefix}__header`}>
63
+ // {selectorTypes.map((item) => (
64
+ // <div className={`${componentPrefix}__header-title`} key={item}>
65
+ // {getSelectorTitle(item)}
66
+ // </div>
67
+ // ))}
68
+ // </div>
69
+ // )
70
+ // }, [selectorTypes, componentPrefix])
71
+
72
+ var renderSelectors = useCallback(function () {
73
+ return /*#__PURE__*/React.createElement("div", {
74
+ className: componentPrefix + "__selector-container"
75
+ }, selectorTypes.map(function (type, index) {
76
+ var _cx;
77
+
78
+ var position = selectorTypes.length === 1 ? SelectorPosition.single : SelectorPosition.middle;
79
+
80
+ if (selectorTypes.length > 1 && index === 0) {
81
+ position = SelectorPosition.left;
82
+ } else if (selectorTypes.length > 1 && index === selectorTypes.length - 1) {
83
+ position = SelectorPosition.right;
84
+ }
85
+
86
+ return /*#__PURE__*/React.createElement("div", {
87
+ className: componentPrefix + "__selector-content",
88
+ key: type
89
+ }, /*#__PURE__*/React.createElement(Selector, {
90
+ value: String(separateValue[index]),
91
+ prefix: prefix,
92
+ position: position,
93
+ itemHeight: itemHeight,
94
+ fullDisplayItemNumber: fullDisplayItemNumber,
95
+ onChange: function onChange(e) {
96
+ var result = [].concat(separateValue).slice(0, selectorTypes.length); // 如果 value = '',则代表为空值
97
+ // 此时选择任意项,其他项直接视作 0
98
+
99
+ if (value === '') {
100
+ result = [0, 0, 0].slice(0, selectorTypes.length);
101
+ }
102
+
103
+ result[index] = Number(e.id);
104
+
105
+ _onChange(result.map(function (item) {
106
+ return String(item).padStart(2, '0');
107
+ }).join(':'));
108
+ },
109
+ data: getSelectorData(type)
110
+ }), /*#__PURE__*/React.createElement("div", {
111
+ className: cx(componentPrefix + "__indicator", (_cx = {}, _cx[componentPrefix + "__indicator--left"] = index === 0, _cx[componentPrefix + "__indicator--right"] = index === selectorTypes.length - 1, _cx)),
112
+ style: {
113
+ height: itemHeight + "px"
114
+ }
115
+ }));
116
+ }));
117
+ }, [selectorTypes, componentPrefix, prefix, getSelectorData, _onChange, separateValue, itemHeight, fullDisplayItemNumber, value]);
118
+ return /*#__PURE__*/React.createElement("div", {
119
+ className: componentPrefix
120
+ }, renderSelectors());
121
+ };
122
+
123
+ export { Panel };
124
+ //# sourceMappingURL=Panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Panel.js","sources":["../../src/Panel.tsx"],"sourcesContent":[null],"names":["Panel","props","hourStep","secondStep","minuteStep","disabledHours","disabledMinutes","disabledSeconds","prefix","format","value","panel","onChange","itemHeight","fullDisplayItemNumber","componentPrefix","useMemo","selectorTypes","analysisFormat","separateValue","split","filter","item","map","Number","getSelectorData","useCallback","type","generateSelectorData","panelType","step","renderSelectors","React","className","index","position","length","SelectorPosition","single","middle","left","right","key","Selector","String","e","result","slice","id","padStart","join","data","cx","style","height"],"mappings":"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"}