@chaoswise/ui 2.5.2 → 2.5.3

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 (68) hide show
  1. package/lib/Ace/ace.js +6 -7
  2. package/lib/Ace/diff.js +6 -7
  3. package/lib/Ace/split.js +6 -7
  4. package/lib/Antd4Form/FormItemChildren.js +5 -6
  5. package/lib/CWSelect/antd-select.js +6 -7
  6. package/lib/CWTable/util.js +1 -1
  7. package/lib/CWTree/index.js +65 -64
  8. package/lib/CWUpload/upload/Upload.js +5 -6
  9. package/lib/CWUpload/upload/UploadList.js +5 -6
  10. package/lib/Checkbox/Checkbox.js +6 -7
  11. package/lib/Checkbox/Group.js +6 -7
  12. package/lib/ErrorBoundary/index.js +6 -7
  13. package/lib/FilterDropDown/drag.svg +17 -0
  14. package/lib/Menu/menu/MenuItem.js +5 -6
  15. package/lib/Menu/menu/SubMenu.js +5 -6
  16. package/lib/Menu/menu/index.js +6 -8
  17. package/lib/Modal/Modal.js +6 -7
  18. package/lib/ModuleFederation/ErrorBoundary/index.js +5 -6
  19. package/lib/QuickTransfer/CheckList.js +53 -0
  20. package/lib/QuickTransfer/TopicList.js +152 -0
  21. package/lib/Radio/Group.js +6 -7
  22. package/lib/Radio/Radio.js +6 -7
  23. package/lib/SiderMenu/Item.js +5 -6
  24. package/lib/SingleSpa/hooks/useErrorHandle.js +65 -0
  25. package/lib/SingleSpa/hooks/useModel.js +31 -0
  26. package/lib/SingleSpa/import-html/utils.js +14 -11
  27. package/lib/SingleSpa/index.js +35 -13
  28. package/lib/SingleSpa/singleSpa/single-spa.dev.js +11 -6
  29. package/lib/SingleSpa/system/amd.js +1 -0
  30. package/lib/SingleSpa/system/system.js +23 -16
  31. package/lib/SingleSpa/utils.js +15 -2
  32. package/lib/Table/index.js +29 -2
  33. package/lib/Table/util.js +15 -0
  34. package/lib/TimeRangeSlider/Refresh/index.js +161 -0
  35. package/lib/TimeRangeSlider/Refresh/index.less +26 -0
  36. package/lib/TimeRangeSlider/TimeRangeSliderCmp/assets/LimitAreaSvg.js +110 -0
  37. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/BottomPlaceholder.js +70 -0
  38. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/BottomTimeDateProcess.js +36 -0
  39. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/index.js +38 -0
  40. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/BottomSlider/index.less +113 -0
  41. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/TopDateProcess.js +36 -0
  42. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/TopPlaceholder.js +36 -0
  43. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/index.js +31 -0
  44. package/lib/TimeRangeSlider/TimeRangeSliderCmp/components/TopSlider/index.less +79 -0
  45. package/lib/TimeRangeSlider/TimeRangeSliderCmp/hooks/useHover.js +31 -0
  46. package/lib/TimeRangeSlider/TimeRangeSliderCmp/hooks/useMouse.js +325 -0
  47. package/lib/TimeRangeSlider/TimeRangeSliderCmp/index.js +73 -0
  48. package/lib/TimeRangeSlider/TimeRangeSliderCmp/utils/index.js +227 -0
  49. package/lib/TimeRangeSlider/TimeSpan/index.js +81 -0
  50. package/lib/TimeRangeSlider/TimeSpan/index.less +12 -0
  51. package/lib/TimeRangeSlider/assets/Calendar.js +15 -0
  52. package/lib/TimeRangeSlider/assets/Calendar2.js +15 -0
  53. package/lib/TimeRangeSlider/assets/Recover.js +18 -0
  54. package/lib/TimeRangeSlider/assets/Refresh1.js +14 -0
  55. package/lib/TimeRangeSlider/assets/Refresh2.js +14 -0
  56. package/lib/TimeRangeSlider/assets/Refresh3.js +14 -0
  57. package/lib/TimeRangeSlider/assets/live.js +19 -0
  58. package/lib/TimeRangeSlider/assets/more.js +23 -0
  59. package/lib/TimeRangeSlider/index.js +480 -0
  60. package/lib/TimeRangeSlider/index.less +122 -0
  61. package/lib/TimeRangeSlider/locale/en_US.js +29 -0
  62. package/lib/TimeRangeSlider/locale/index.js +11 -0
  63. package/lib/TimeRangeSlider/locale/zh_CN.js +29 -0
  64. package/lib/TimeRangeSlider/locale/zh_TW.js +29 -0
  65. package/lib/TimeRangeSlider/utils/index.js +712 -0
  66. package/lib/TooltipText/ResizeObserverManager.js +56 -0
  67. package/lib/TooltipText/index.js +50 -60
  68. package/package.json +3 -2
@@ -0,0 +1,325 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+ import React, { useState, useEffect, useRef } from "react";
14
+ import { getCorrectValue } from "../../utils";
15
+ import { getPositionInfoByDateInfo, getDateInfoByPositionInfo, getPositionInfoByTimeDateInfo, getTimeDateInfoByPositionInfo, isSameOrAfter, getOffsetLeft, getBottomSliderHoverInfo } from "../utils";
16
+ import useHover from "./useHover";
17
+ import moment from "moment";
18
+ var useMouse = function useMouse(_ref) {
19
+ var timeBoundary = _ref.timeBoundary,
20
+ isHandleClickRef = _ref.isHandleClickRef,
21
+ onChange = _ref.onChange,
22
+ timeSliderWidth = _ref.timeSliderWidth,
23
+ visible = _ref.visible,
24
+ inputRef = _ref.inputRef,
25
+ TimeRangeSliderWrapperRef = _ref.TimeRangeSliderWrapperRef,
26
+ TimeRangeAreaLimitSlider = _ref.TimeRangeAreaLimitSlider,
27
+ TimeRangeAreaLimitBottomSlider = _ref.TimeRangeAreaLimitBottomSlider,
28
+ recordDate = _ref.recordDate,
29
+ TimeRangeSliderBottomWrapperRef = _ref.TimeRangeSliderBottomWrapperRef;
30
+ var min = timeBoundary.min,
31
+ max = timeBoundary.max,
32
+ days = timeBoundary.days;
33
+ var _useState = useState(false),
34
+ _useState2 = _slicedToArray(_useState, 2),
35
+ bottomSliderDragStatus = _useState2[0],
36
+ setBottomSliderDragStatus = _useState2[1]; // 下部分滑块拖拽状态
37
+ var _useState3 = useState({
38
+ left: 0,
39
+ date: []
40
+ }),
41
+ _useState4 = _slicedToArray(_useState3, 2),
42
+ topSliderInfo = _useState4[0],
43
+ setTopSliderInfo = _useState4[1];
44
+ var _useState5 = useState({
45
+ width: 0,
46
+ left: 0,
47
+ data: [],
48
+ canDrag: true
49
+ }),
50
+ _useState6 = _slicedToArray(_useState5, 2),
51
+ bottomSliderInfo = _useState6[0],
52
+ setBottomSliderInfo = _useState6[1];
53
+ var _useState7 = useState({
54
+ width: 0,
55
+ left: 0,
56
+ data: []
57
+ }),
58
+ _useState8 = _slicedToArray(_useState7, 2),
59
+ bottomSliderHoverInfo = _useState8[0],
60
+ setBottomSliderHoverInfo = _useState8[1];
61
+ var _useState9 = useState([]),
62
+ _useState10 = _slicedToArray(_useState9, 2),
63
+ recordTimeDateWrapper = _useState10[0],
64
+ setRecordTimeDateWrapper = _useState10[1]; // 记录时间日期用于时间滑块外层容器渲染
65
+ var currentMomentRef = useRef(moment()); // 保存当前时间,用于计算时间滑块位置(下部分滑块),每次打开弹窗时更新
66
+ var recordEndTimeDateWrapper = useRef([]); // 保存最后一次时间日期用于时间滑块外层容器渲染(拖拽结束后)(下部分滑块)
67
+ var dragableRef = useRef({
68
+ status: false,
69
+ // 记录拖拽状态
70
+ position: undefined,
71
+ // 记录拖拽位置
72
+ resizePosition: undefined,
73
+ // 记录左右拖拽信息
74
+ initialWidth: 0,
75
+ // 记录初始宽度
76
+ beginX: 0 // 记录鼠标按下时的位置
77
+ });
78
+ var bottomSliderInfoRef = useRef({
79
+ width: 0,
80
+ left: 0,
81
+ data: [],
82
+ canDrag: true
83
+ });
84
+ var isHoverBottomWrapper = useHover(TimeRangeSliderBottomWrapperRef);
85
+ var isHoverPlaceholderBottom = useHover(TimeRangeAreaLimitBottomSlider);
86
+ useEffect(function () {
87
+ document.addEventListener("mousemove", move);
88
+ document.addEventListener("mouseup", endMove);
89
+ return function () {
90
+ document.removeEventListener("mousemove", move);
91
+ document.removeEventListener("mouseup", endMove);
92
+ };
93
+ }, []);
94
+ useEffect(function () {
95
+ if (!visible) {
96
+ inputRef.current.blur();
97
+ return;
98
+ }
99
+ if (Array.isArray(recordDate) && recordDate.length) {
100
+ currentMomentRef.current = moment();
101
+ var endDate = recordDate[1].clone();
102
+ var startDate = recordDate[1].clone().subtract(1, "days");
103
+ var startLeft = getPositionInfoByDateInfo(startDate, timeSliderWidth, currentMomentRef.current, days);
104
+ var newRecordEndTimeDateWrapper = [startDate, endDate];
105
+ recordEndTimeDateWrapper.current = newRecordEndTimeDateWrapper;
106
+ setTopSliderInfo(function (pre) {
107
+ return _objectSpread(_objectSpread({}, pre), {}, {
108
+ left: startLeft,
109
+ date: newRecordEndTimeDateWrapper
110
+ });
111
+ });
112
+ setBottomSliderInfo(function (pre) {
113
+ return _objectSpread(_objectSpread({}, pre), {}, {
114
+ date: recordDate
115
+ });
116
+ });
117
+ setRecordTimeDateWrapper(newRecordEndTimeDateWrapper);
118
+ }
119
+ }, [visible]);
120
+ useEffect(function () {
121
+ bottomSliderInfoRef.current = bottomSliderInfo;
122
+ }, [bottomSliderInfo]);
123
+ // 下半部分滑块信息
124
+ useEffect(function () {
125
+ var positionInfo = getPositionInfoByTimeDateInfo(recordDate, timeSliderWidth, currentMomentRef.current, recordTimeDateWrapper, days);
126
+ var date = getTimeDateInfoByPositionInfo(positionInfo.left, positionInfo.width, timeSliderWidth, currentMomentRef.current, recordTimeDateWrapper, days);
127
+ setBottomSliderInfo(function (pre) {
128
+ return _objectSpread(_objectSpread(_objectSpread({}, pre), positionInfo), {}, {
129
+ date: [date.startDate, date.endDate]
130
+ });
131
+ });
132
+ }, [recordDate, recordTimeDateWrapper]);
133
+ var resStartLeftDate = currentMomentRef.current.clone().subtract(1, "days");
134
+ var resStartLeftDatePosition = getPositionInfoByDateInfo(resStartLeftDate, timeSliderWidth, currentMomentRef.current, days);
135
+ /**
136
+ * 拖拽中
137
+ * @param {*} e : 事件对象
138
+ * @returns
139
+ */
140
+ var move = function move(e) {
141
+ var left = getOffsetLeft(e, TimeRangeSliderBottomWrapperRef); // 计算鼠标位置距离目标元素左侧的距离
142
+ var _getBottomSliderHover = getBottomSliderHoverInfo(left, bottomSliderInfoRef, timeSliderWidth, currentMomentRef, recordEndTimeDateWrapper.current, days),
143
+ hoverTimeDate = _getBottomSliderHover.date,
144
+ hoverLeft = _getBottomSliderHover.left,
145
+ hoverWidth = _getBottomSliderHover.width;
146
+ setBottomSliderHoverInfo({
147
+ left: hoverLeft,
148
+ width: hoverWidth,
149
+ date: hoverTimeDate
150
+ });
151
+ isHandleClickRef.current = e.buttons !== 1; // e.buttons === 1 为鼠标左键按下
152
+ var _dragableRef$current = dragableRef.current,
153
+ status = _dragableRef$current.status,
154
+ position = _dragableRef$current.position,
155
+ resizePosition = _dragableRef$current.resizePosition,
156
+ initialWidth = _dragableRef$current.initialWidth,
157
+ beginX = _dragableRef$current.beginX;
158
+ if (!status) return;
159
+ var TimeRangeSliderWrapper = TimeRangeSliderWrapperRef.current;
160
+ var TimeRangeAreaLimitSliderDom = TimeRangeAreaLimitSlider.current;
161
+ // 计算当前偏移量
162
+ var newLeft = e.clientX - beginX;
163
+ if (position === "top") {
164
+ if (newLeft >= 0 && newLeft + TimeRangeAreaLimitSliderDom.offsetWidth <= TimeRangeSliderWrapper.offsetWidth) {
165
+ if (newLeft > resStartLeftDatePosition) {
166
+ newLeft = resStartLeftDatePosition;
167
+ }
168
+ var _getDateInfoByPositio = getDateInfoByPositionInfo(newLeft, timeSliderWidth, currentMomentRef.current, days),
169
+ startDate = _getDateInfoByPositio.startDate,
170
+ endDate = _getDateInfoByPositio.endDate;
171
+ var newRecordEndTimeDateWrapper = [startDate, endDate];
172
+ recordEndTimeDateWrapper.current = newRecordEndTimeDateWrapper;
173
+ setTopSliderInfo({
174
+ left: newLeft,
175
+ date: newRecordEndTimeDateWrapper
176
+ });
177
+ }
178
+ }
179
+ if (position === "bottom") {
180
+ var width = bottomSliderInfoRef.current.width;
181
+ var _left = bottomSliderInfoRef.current.left;
182
+ var millisecondsOfTheDay = moment.duration(1, "days").valueOf(); // 一天的毫秒数 86400000
183
+ var minWidth = min / millisecondsOfTheDay * timeSliderWidth;
184
+ var maxWidth = max / millisecondsOfTheDay * timeSliderWidth;
185
+ var canDrag = true;
186
+ if (!resizePosition) {
187
+ _left = newLeft;
188
+ } else if (resizePosition === "left") {
189
+ var diffLeft = _left - newLeft;
190
+ width = Number(width + diffLeft);
191
+ _left = newLeft;
192
+ if (width < minWidth) {
193
+ width = minWidth;
194
+ _left = Number(bottomSliderInfoRef.current.left + bottomSliderInfoRef.current.width - minWidth);
195
+ canDrag = false;
196
+ } else if (width > maxWidth) {
197
+ width = maxWidth;
198
+ _left = Number(bottomSliderInfoRef.current.left + bottomSliderInfoRef.current.width - maxWidth);
199
+ canDrag = false;
200
+ }
201
+ } else {
202
+ width = Number(initialWidth + newLeft);
203
+ if (width < minWidth) {
204
+ width = minWidth;
205
+ canDrag = false;
206
+ } else if (width > maxWidth) {
207
+ width = maxWidth;
208
+ canDrag = false;
209
+ }
210
+ }
211
+ var date = getTimeDateInfoByPositionInfo(_left, width, timeSliderWidth, currentMomentRef.current, recordEndTimeDateWrapper.current, days);
212
+ var _startDate = currentMomentRef.current.clone().subtract(days, "days");
213
+ var isSameOrAfterStart = isSameOrAfter(date.startDate, _startDate);
214
+ var isSameOrAfterEnd = isSameOrAfter(currentMomentRef.current, date.endDate);
215
+ if (!isSameOrAfterStart || !isSameOrAfterEnd) return;
216
+ var newTimeDate = [date.startDate, date.endDate];
217
+ setBottomSliderInfo(function (pre) {
218
+ return _objectSpread(_objectSpread({}, pre), {}, {
219
+ width: width,
220
+ left: _left,
221
+ date: newTimeDate,
222
+ canDrag: canDrag
223
+ });
224
+ });
225
+ }
226
+ };
227
+ /**
228
+ * 拖拽结束
229
+ * @param {*} e : 事件对象
230
+ */
231
+ var endMove = function endMove(e) {
232
+ var position = dragableRef.current.position;
233
+ if (position === "top") {
234
+ setRecordTimeDateWrapper(recordEndTimeDateWrapper.current);
235
+ }
236
+ if (position === "bottom") {
237
+ var returnValue = getCorrectValue({
238
+ value: bottomSliderInfoRef.current.date
239
+ });
240
+ onChange(returnValue);
241
+ }
242
+ var status = false;
243
+ setBottomSliderDragStatus(status);
244
+ dragableRef.current = _objectSpread(_objectSpread({}, dragableRef.current), {}, {
245
+ status: status,
246
+ position: undefined,
247
+ initialWidth: 0,
248
+ resizePosition: undefined,
249
+ beginX: 0
250
+ });
251
+ setBottomSliderInfo(function (pre) {
252
+ return _objectSpread(_objectSpread({}, pre), {}, {
253
+ canDrag: true
254
+ });
255
+ });
256
+ };
257
+ /**
258
+ * 拖拽开始、滑块按下机制触发: 记录拖拽信息
259
+ * @param {*} e : 事件对象
260
+ * @param {*} position : top 上部分滑块 bottom 下部分滑块
261
+ * @param {*} resizePosition : position = "bottom" 情况下 left 向左拖拽 right 向右拖拽
262
+ */
263
+ var beginMouseDown = function beginMouseDown(e, position, resizePosition) {
264
+ e.stopPropagation();
265
+ e.preventDefault();
266
+ var TimeRangeAreaLimitSliderDom = TimeRangeAreaLimitSlider.current;
267
+ var TimeRangeAreaLimitBottomSliderDom = TimeRangeAreaLimitBottomSlider.current;
268
+ var X = e.clientX;
269
+ if (position === "top") {
270
+ X = e.clientX - TimeRangeAreaLimitSliderDom.offsetLeft;
271
+ } else if (position === "bottom" && resizePosition !== "right") {
272
+ X = e.clientX - TimeRangeAreaLimitBottomSliderDom.offsetLeft;
273
+ }
274
+ var status = true;
275
+ setBottomSliderDragStatus(status);
276
+ dragableRef.current = _objectSpread(_objectSpread({}, dragableRef.current), {}, {
277
+ status: status,
278
+ position: position,
279
+ resizePosition: resizePosition,
280
+ // 左右拖拽
281
+ initialWidth: TimeRangeAreaLimitBottomSliderDom.offsetWidth,
282
+ // 左右拖拽
283
+ beginX: X
284
+ });
285
+ };
286
+ /**
287
+ * 点击下部分滑块
288
+ * @param {*} e : 事件对象
289
+ * @returns
290
+ */
291
+ var clickBottomWrapper = function clickBottomWrapper(e) {
292
+ e.stopPropagation();
293
+ if (!isHandleClickRef.current) {
294
+ isHandleClickRef.current = true;
295
+ return;
296
+ }
297
+ var left = getOffsetLeft(e, TimeRangeSliderBottomWrapperRef); // 计算鼠标位置距离目标元素左侧的距离
298
+ var _getBottomSliderHover2 = getBottomSliderHoverInfo(left, bottomSliderInfoRef, timeSliderWidth, currentMomentRef, recordTimeDateWrapper, days),
299
+ newTimeDate = _getBottomSliderHover2.date,
300
+ hoverLeft = _getBottomSliderHover2.left;
301
+ setBottomSliderInfo(function (pre) {
302
+ return _objectSpread(_objectSpread({}, pre), {}, {
303
+ left: hoverLeft,
304
+ date: newTimeDate
305
+ });
306
+ });
307
+ var returnValue = getCorrectValue({
308
+ value: newTimeDate
309
+ });
310
+ onChange(returnValue);
311
+ };
312
+ return {
313
+ topSliderInfo: topSliderInfo,
314
+ bottomSliderInfo: bottomSliderInfo,
315
+ recordTimeDateWrapper: recordTimeDateWrapper,
316
+ currentMomentRef: currentMomentRef,
317
+ beginMouseDown: beginMouseDown,
318
+ clickBottomWrapper: clickBottomWrapper,
319
+ bottomSliderHoverInfo: bottomSliderHoverInfo,
320
+ bottomSliderDragStatus: bottomSliderDragStatus,
321
+ isHoverBottomWrapper: isHoverBottomWrapper,
322
+ isHoverPlaceholderBottom: isHoverPlaceholderBottom
323
+ };
324
+ };
325
+ export default useMouse;
@@ -0,0 +1,73 @@
1
+ import React, { useRef, Fragment } from "react";
2
+ import TopSlider from "./components/TopSlider";
3
+ import BottomSlider from "./components/BottomSlider";
4
+ import useMouse from "./hooks/useMouse";
5
+ var TimeRangeSliderCmp = function TimeRangeSliderCmp(props) {
6
+ var visible = props.visible,
7
+ recordDate = props.value,
8
+ _props$timeBoundary = props.timeBoundary,
9
+ timeBoundary = _props$timeBoundary === void 0 ? {
10
+ min: 5 * 60 * 1000,
11
+ // 5分钟的毫秒数
12
+ max: 24 * 60 * 60 * 1000,
13
+ // 一天的毫秒数
14
+ days: 30 // 30天
15
+ } : _props$timeBoundary,
16
+ _props$onChange = props.onChange,
17
+ onChange = _props$onChange === void 0 ? function () {} : _props$onChange,
18
+ inputRef = props.inputRef,
19
+ isHandleClickRef = props.isHandleClickRef,
20
+ _props$timeSliderOpti = props.timeSliderOption,
21
+ timeSliderOption = _props$timeSliderOpti === void 0 ? {} : _props$timeSliderOpti;
22
+ var _timeSliderOption$tim = timeSliderOption.timeSliderWidth,
23
+ timeSliderWidth = _timeSliderOption$tim === void 0 ? 1152 : _timeSliderOption$tim;
24
+ var TimeRangeSliderWrapperRef = useRef(null); // 时间滑块外层容器dom(上部分滑块)
25
+ var TimeRangeAreaLimitSlider = useRef(null); // 时间滑块dom(上部分滑块)
26
+ var TimeRangeAreaLimitBottomSlider = useRef(null); // 时间滑块dom(下部分滑块)
27
+ var TimeRangeSliderBottomWrapperRef = useRef(null); // 时间滑块外层容器dom(下部分滑块)
28
+ var _useMouse = useMouse({
29
+ timeBoundary: timeBoundary,
30
+ isHandleClickRef: isHandleClickRef,
31
+ onChange: onChange,
32
+ timeSliderWidth: timeSliderWidth,
33
+ visible: visible,
34
+ inputRef: inputRef,
35
+ TimeRangeSliderWrapperRef: TimeRangeSliderWrapperRef,
36
+ TimeRangeAreaLimitSlider: TimeRangeAreaLimitSlider,
37
+ TimeRangeAreaLimitBottomSlider: TimeRangeAreaLimitBottomSlider,
38
+ recordDate: recordDate,
39
+ TimeRangeSliderBottomWrapperRef: TimeRangeSliderBottomWrapperRef
40
+ }),
41
+ topSliderInfo = _useMouse.topSliderInfo,
42
+ bottomSliderInfo = _useMouse.bottomSliderInfo,
43
+ recordTimeDateWrapper = _useMouse.recordTimeDateWrapper,
44
+ currentMomentRef = _useMouse.currentMomentRef,
45
+ beginMouseDown = _useMouse.beginMouseDown,
46
+ clickBottomWrapper = _useMouse.clickBottomWrapper,
47
+ bottomSliderHoverInfo = _useMouse.bottomSliderHoverInfo,
48
+ bottomSliderDragStatus = _useMouse.bottomSliderDragStatus,
49
+ isHoverBottomWrapper = _useMouse.isHoverBottomWrapper,
50
+ isHoverPlaceholderBottom = _useMouse.isHoverPlaceholderBottom;
51
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(TopSlider, {
52
+ TimeRangeSliderWrapperRef: TimeRangeSliderWrapperRef,
53
+ TimeRangeAreaLimitSlider: TimeRangeAreaLimitSlider,
54
+ currentMomentRef: currentMomentRef,
55
+ timeSliderWidth: timeSliderWidth,
56
+ timeBoundary: timeBoundary,
57
+ beginMouseDown: beginMouseDown,
58
+ topSliderInfo: topSliderInfo
59
+ }), /*#__PURE__*/React.createElement(BottomSlider, {
60
+ TimeRangeAreaLimitBottomSlider: TimeRangeAreaLimitBottomSlider,
61
+ timeSliderWidth: timeSliderWidth,
62
+ clickBottomWrapper: clickBottomWrapper,
63
+ beginMouseDown: beginMouseDown,
64
+ bottomSliderInfo: bottomSliderInfo,
65
+ recordTimeDateWrapper: recordTimeDateWrapper,
66
+ TimeRangeSliderBottomWrapperRef: TimeRangeSliderBottomWrapperRef,
67
+ bottomSliderHoverInfo: bottomSliderHoverInfo,
68
+ bottomSliderDragStatus: bottomSliderDragStatus,
69
+ isHoverBottomWrapper: isHoverBottomWrapper,
70
+ isHoverPlaceholderBottom: isHoverPlaceholderBottom
71
+ }));
72
+ };
73
+ export default TimeRangeSliderCmp;
@@ -0,0 +1,227 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ import moment from "moment";
8
+ import { round } from "@chaoswise/utils";
9
+ // 获取所有日期 最近30天: 年月日
10
+ // 第一天和最后一天合并成一天(上部分)
11
+ export var getAllDates = function getAllDates(date, days) {
12
+ var currentDate = date;
13
+ var allDates = [];
14
+ for (var i = 0; i <= days; i++) {
15
+ var _date = currentDate.clone().subtract(i, "days");
16
+ allDates.unshift(_date);
17
+ }
18
+ return allDates;
19
+ };
20
+
21
+ // 将日期数据转化为需要的格式(上部分)
22
+ export var getConvertedDateData = function getConvertedDateData(dates, singleWidth, days) {
23
+ var convertedDateData = [];
24
+ var recordYYYY = "";
25
+ var left = 0; // 上一次的总left
26
+ var lastWidth = 0; // 上一次的宽度
27
+ dates.forEach(function (date, index) {
28
+ var YYYY = date.format("YYYY");
29
+ var MM_DD = date.format("MM-DD");
30
+ var DD = date.format("DD");
31
+ var isStartYYYY = false;
32
+ if (recordYYYY !== YYYY) {
33
+ recordYYYY = YYYY;
34
+ isStartYYYY = true;
35
+ }
36
+ var _getDateInfo = getDateInfo(date, index, left, singleWidth, lastWidth, days),
37
+ resLeft = _getDateInfo.resLeft,
38
+ percentage = _getDateInfo.percentage,
39
+ width = _getDateInfo.width;
40
+ left = resLeft;
41
+ lastWidth = width;
42
+ convertedDateData.push({
43
+ YYYY: YYYY,
44
+ MM_DD: MM_DD,
45
+ DD: DD,
46
+ isStartYYYY: isStartYYYY,
47
+ date: date,
48
+ position: {
49
+ left: left,
50
+ percentage: percentage,
51
+ width: width
52
+ }
53
+ });
54
+ });
55
+ return convertedDateData;
56
+ };
57
+ // 获取传入日期的相关数据(上部分)
58
+ var getDateInfo = function getDateInfo(date, index, left, singleWidth, lastWidth, days) {
59
+ var millisecondsOfTheDay = moment.duration(1, "days").valueOf(); // 一天的毫秒数 86400000
60
+ var millisecondsOfTheDate = moment(date).valueOf(); // 传入日期的毫秒数
61
+ var millisecondsOfTheDateStart = moment(date).startOf("day").valueOf(); // 传入日期的开始时间的毫秒数
62
+ var millisecondsOfTheDateEnd = moment(date).endOf("day").valueOf(); // 传入日期的结束时间的毫秒数
63
+ var diffTime = millisecondsOfTheDay; // 时间差
64
+ var percentage = 1; // 所占比例
65
+ if (index === 0) {
66
+ // 时间轴开始位置
67
+ diffTime = millisecondsOfTheDateEnd - millisecondsOfTheDate;
68
+ } else if (index === days) {
69
+ // 时间轴结束位置
70
+ diffTime = millisecondsOfTheDate - millisecondsOfTheDateStart;
71
+ }
72
+ percentage = round(diffTime / millisecondsOfTheDay, 2); // 小数点后两位四舍五入
73
+ var width = round(percentage * singleWidth, 2);
74
+ var resLeft = round(Number(left + lastWidth), 2);
75
+ return {
76
+ percentage: percentage,
77
+ resLeft: resLeft,
78
+ width: width
79
+ };
80
+ };
81
+ // 根据left位置获取日期(上部分)
82
+ export var getDateInfoByPositionInfo = function getDateInfoByPositionInfo(left, allWidth, currentMoment, days) {
83
+ var millisecondsOfRecentlyMonth = moment.duration(days, "days").valueOf(); // 默认为30天的毫秒数 2592000000
84
+ var millisecondsOfRecentlyMonthStart = currentMoment.clone().subtract(days, "days").valueOf(); // 默认为最近30天的开始时间的毫秒数
85
+ var diffTime = round(left / allWidth * millisecondsOfRecentlyMonth);
86
+ var millisecondsOfTheDate = Number(diffTime);
87
+ var startDate = moment(Number(millisecondsOfTheDate + millisecondsOfRecentlyMonthStart));
88
+ var endDate = startDate.clone().add(1, "days");
89
+ return {
90
+ startDate: startDate,
91
+ endDate: endDate
92
+ };
93
+ };
94
+ // 根据日期获取left位置(上部分)
95
+ export var getPositionInfoByDateInfo = function getPositionInfoByDateInfo(date, allWidth, currentMoment, days) {
96
+ var millisecondsOfRecentlyMonth = moment.duration(days, "days").valueOf(); // 默认30天的毫秒数 2592000000
97
+ var millisecondsOfTheDate = moment(date).valueOf(); // 传入日期的毫秒数
98
+ var millisecondsOfRecentlyMonthStart = currentMoment.clone().subtract(days, "days").valueOf(); // 默认最近30天的开始时间的毫秒数
99
+ var diffTime = millisecondsOfTheDate - millisecondsOfRecentlyMonthStart;
100
+ var left = round(diffTime / millisecondsOfRecentlyMonth * allWidth, 2);
101
+ return left;
102
+ };
103
+
104
+ // 第一小时和最后一小时合并成一小时(下部分)
105
+ export var getAllTimeDates = function getAllTimeDates(date) {
106
+ var currentTimeDates = date.clone();
107
+ var allTimeDates = [];
108
+ for (var i = 0; i < 25; i++) {
109
+ var _date2 = currentTimeDates.clone().subtract(i, "hours");
110
+ allTimeDates.unshift(_date2);
111
+ }
112
+ return allTimeDates;
113
+ };
114
+ // 根据结束日期获取最近一天内的时间并转化为需要的格式(下部分)
115
+ export var getConvertedTimeDateDataByEndDate = function getConvertedTimeDateDataByEndDate(dates) {
116
+ var convertedDateData = [];
117
+ var recordNewDay = "";
118
+ dates.forEach(function (date, index) {
119
+ var YYYY = date.format("YYYY");
120
+ var MM_DD = date.format("MM-DD");
121
+ var DD = date.format("DD");
122
+ var HH_MM = date.format("HH:mm");
123
+ var isNewDay = false;
124
+ if (recordNewDay !== MM_DD) {
125
+ recordNewDay = MM_DD;
126
+ isNewDay = true;
127
+ }
128
+ convertedDateData.push({
129
+ YYYY: YYYY,
130
+ MM_DD: MM_DD,
131
+ DD: DD,
132
+ HH_MM: HH_MM,
133
+ isNewDay: isNewDay,
134
+ date: date
135
+ });
136
+ });
137
+ return convertedDateData;
138
+ };
139
+ var getValueOfDateByDate = function getValueOfDateByDate(date) {
140
+ return moment(date).valueOf();
141
+ };
142
+ // 根据日期时间获取相关位置(下部分)
143
+ export var getPositionInfoByTimeDateInfo = function getPositionInfoByTimeDateInfo(date, allWidth, currentMoment, recordTimeDateWrapper, days) {
144
+ var width = 0;
145
+ var left = 0;
146
+ if ((date === null || date === void 0 ? void 0 : date.length) !== 2 || (recordTimeDateWrapper === null || recordTimeDateWrapper === void 0 ? void 0 : recordTimeDateWrapper.length) !== 2) {
147
+ return {
148
+ left: left,
149
+ width: width
150
+ };
151
+ }
152
+ var millisecondsOfRecentlyMonth = moment.duration(days, "days").valueOf(); // 默认30天的毫秒数 2592000000
153
+ var millisecondsOfTheDateStart = getValueOfDateByDate(date[0]); // 传入日期的毫秒数开始值
154
+ var millisecondsOfTheDateEnd = getValueOfDateByDate(date[1]); // 传入日期的毫秒数结束值
155
+ var millisecondsOfTheDateRecordTimeDataStart = getValueOfDateByDate(recordTimeDateWrapper[0]); // 容器轴开始时间点的毫秒数
156
+ var millisecondsOfRecentlyMonthStart = currentMoment.clone().subtract(days, "days").valueOf(); // 默认最近30天的开始时间的毫秒数
157
+ var diffTimeStart = millisecondsOfTheDateStart - millisecondsOfRecentlyMonthStart; // 传入日期于默认最近30天开始时间的毫秒差
158
+ var diffTimeEnd = millisecondsOfTheDateEnd - millisecondsOfRecentlyMonthStart; // 传入日期于默认最近30天开始时间的毫秒差
159
+ var diffTimeRecordTimeStart = millisecondsOfTheDateRecordTimeDataStart - millisecondsOfRecentlyMonthStart; // 容器轴开始时间点于默认最近30天开始时间的毫秒差
160
+ var leftStart = round(diffTimeStart / millisecondsOfRecentlyMonth * allWidth * days, 2); // 传入日期的未处理数据left
161
+ var leftEnd = round(diffTimeEnd / millisecondsOfRecentlyMonth * allWidth * days, 2); // 传入日期的未处理数据left
162
+ var leftWrapperStart = round(diffTimeRecordTimeStart / millisecondsOfRecentlyMonth * allWidth * days, 2); // 容器轴开始时间未处理数据left
163
+ width = round(leftEnd - leftStart, 2);
164
+ left = round(leftStart - leftWrapperStart, 2);
165
+ return {
166
+ width: width,
167
+ left: left
168
+ };
169
+ };
170
+ // 传入left和width获取日期(下部分)
171
+ export var getTimeDateInfoByPositionInfo = function getTimeDateInfoByPositionInfo(left, width, allWidth, currentMoment, recordTimeDateWrapper, days) {
172
+ var millisecondsOfRecentlyMonth = moment.duration(days, "days").valueOf(); // 默认为30天的毫秒数 2592000000
173
+ var millisecondsOfRecentlyMonthStart = currentMoment.clone().subtract(days, "days").valueOf(); // 默认为最近30天的开始时间的毫秒数
174
+ var millisecondsOfTheDateRecordTimeDataStart = getValueOfDateByDate(recordTimeDateWrapper[0]); // 容器轴开始时间点的毫秒数
175
+ var diffTimeRecordTimeStart = millisecondsOfTheDateRecordTimeDataStart - millisecondsOfRecentlyMonthStart; // 容器轴开始时间点于默认最近30天开始时间的毫秒差
176
+ var leftWrapperStart = round(diffTimeRecordTimeStart / millisecondsOfRecentlyMonth * allWidth * days, 2); // 容器轴开始时间未处理数据left
177
+ var leftStart = round(left + leftWrapperStart, 2); // 传入日期的未处理数据left
178
+ var leftEnd = round(leftStart + width, 2); // 传入日期的未处理数据left
179
+ var millisecondsOfTheDateStart = round(leftStart / allWidth / days * millisecondsOfRecentlyMonth);
180
+ var millisecondsOfTheDateEnd = round(leftEnd / allWidth / days * millisecondsOfRecentlyMonth);
181
+ var startDate = moment(Number(millisecondsOfTheDateStart + millisecondsOfRecentlyMonthStart));
182
+ var endDate = moment(Number(millisecondsOfTheDateEnd + millisecondsOfRecentlyMonthStart));
183
+ return {
184
+ startDate: startDate,
185
+ endDate: endDate
186
+ };
187
+ };
188
+
189
+ // 检查一个 moment 是否在另一个 moment 之后或与之相同。
190
+ export var isSameOrAfter = function isSameOrAfter(date1, date2) {
191
+ return moment(date1).isSameOrAfter(date2);
192
+ };
193
+
194
+ // 获取鼠标位置距离目标元素左侧的距离
195
+ export var getOffsetLeft = function getOffsetLeft(e, currentTargetRef) {
196
+ var _currentTargetRef$cur;
197
+ var mouseX = e.clientX; // 获取鼠标距离浏览器窗口左侧的距离
198
+ var elemX = (_currentTargetRef$cur = currentTargetRef.current) === null || _currentTargetRef$cur === void 0 ? void 0 : _currentTargetRef$cur.getBoundingClientRect().left; // 获取元素距离浏览器窗口左侧的距离
199
+ var left = mouseX - elemX; // 计算鼠标位置距离元素左侧的距离
200
+ return left;
201
+ };
202
+ export var getBottomSliderHoverInfo = function getBottomSliderHoverInfo(left, bottomSliderInfoRef, timeSliderWidth, currentMomentRef, recordTimeDateWrapper, days) {
203
+ var width = bottomSliderInfoRef.current.width;
204
+ left = left - width / 2;
205
+ var date = getTimeDateInfoByPositionInfo(left, width, timeSliderWidth, currentMomentRef.current, recordTimeDateWrapper, days);
206
+ var resStartDate = date.startDate;
207
+ var resEndDate = date.endDate;
208
+ var startDate = currentMomentRef.current.clone().subtract(days, "days");
209
+ var isSameOrAfterStart = isSameOrAfter(resStartDate, startDate);
210
+ var isSameOrAfterEnd = isSameOrAfter(currentMomentRef.current, resEndDate);
211
+ var millisecondsOfTheStartDate = moment(date.startDate).valueOf(); // 开始日期的毫秒数
212
+ var millisecondsOfTheEndDate = moment(date.endDate).valueOf(); // 传入日期的毫秒数
213
+ var timeDiff = millisecondsOfTheEndDate - millisecondsOfTheStartDate; // 传入日期与开始日期的毫秒差
214
+ if (!isSameOrAfterStart) {
215
+ resStartDate = startDate;
216
+ resEndDate = resStartDate.clone().add(timeDiff, "milliseconds");
217
+ }
218
+ if (!isSameOrAfterEnd) {
219
+ resEndDate = currentMomentRef.current;
220
+ resStartDate = currentMomentRef.current.clone().subtract(timeDiff, "milliseconds");
221
+ }
222
+ var newTimeDate = [resStartDate, resEndDate];
223
+ var positionInfo = getPositionInfoByTimeDateInfo(newTimeDate, timeSliderWidth, currentMomentRef.current, recordTimeDateWrapper, days);
224
+ return _objectSpread(_objectSpread({}, positionInfo), {}, {
225
+ date: newTimeDate
226
+ });
227
+ };