sense-react-timeline-editor 1.1.28 → 1.1.30
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.
- package/dist/index.esm.js +72 -19
- package/dist/index.js +70 -17
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React, { useRef, useEffect, cloneElement, useImperativeHandle, useState, useLayoutEffect, useCallback, useMemo, memo, forwardRef } from 'react';
|
|
2
2
|
import { AutoSizer, Grid, ScrollSync } from 'react-virtualized';
|
|
3
|
-
import { useThrottleEffect } from 'ahooks';
|
|
3
|
+
import { useThrottleEffect, useThrottleFn } from 'ahooks';
|
|
4
4
|
import { prefixNames } from 'framework-utils';
|
|
5
5
|
import interact from 'interactjs';
|
|
6
6
|
import { useSelectionContainer } from '@air/react-drag-to-select';
|
|
7
7
|
import { message } from 'antd/es';
|
|
8
8
|
import { Howl } from 'howler';
|
|
9
|
-
import { groupBy } from 'lodash-es';
|
|
9
|
+
import { groupBy, throttle } from 'lodash-es';
|
|
10
10
|
import useSize from 'ahooks/es/useSize';
|
|
11
11
|
|
|
12
12
|
function _arrayLikeToArray(r, a) {
|
|
@@ -4237,7 +4237,7 @@ var EditAreaO = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
4237
4237
|
var index = _ref5.index;
|
|
4238
4238
|
return heights[index] || _rowHeight || 0;
|
|
4239
4239
|
},
|
|
4240
|
-
overscanRowCount:
|
|
4240
|
+
overscanRowCount: 100,
|
|
4241
4241
|
overscanColumnCount: 0,
|
|
4242
4242
|
onScroll: function onScroll(param) {
|
|
4243
4243
|
_onScroll(param);
|
|
@@ -4322,7 +4322,7 @@ var TimeArea = function TimeArea(_ref) {
|
|
|
4322
4322
|
var gridRef = useRef();
|
|
4323
4323
|
/** 是否显示细分刻度 */
|
|
4324
4324
|
var showUnit = scaleSplitCount > 0;
|
|
4325
|
-
var visibleWidth =
|
|
4325
|
+
var visibleWidth = document.documentElement.clientWidth;
|
|
4326
4326
|
/** 获取每个 cell 渲染内容 */
|
|
4327
4327
|
var cellRenderer = function cellRenderer(_ref2) {
|
|
4328
4328
|
var columnIndex = _ref2.columnIndex,
|
|
@@ -4362,6 +4362,7 @@ var TimeArea = function TimeArea(_ref) {
|
|
|
4362
4362
|
var estColumnWidth = getColumnWidth({
|
|
4363
4363
|
index: 1
|
|
4364
4364
|
});
|
|
4365
|
+
console.log('estColumnWidth', estColumnWidth, ', scrollLeft = ', scrollLeft);
|
|
4365
4366
|
return /*#__PURE__*/React.createElement("div", {
|
|
4366
4367
|
className: prefix('time-area')
|
|
4367
4368
|
}, /*#__PURE__*/React.createElement(AutoSizer, null, function (_ref3) {
|
|
@@ -4394,7 +4395,7 @@ var TimeArea = function TimeArea(_ref) {
|
|
|
4394
4395
|
if (hideCursor) return;
|
|
4395
4396
|
var rect = e.currentTarget.getBoundingClientRect();
|
|
4396
4397
|
var position = e.clientX - rect.x;
|
|
4397
|
-
var left = Math.max(position
|
|
4398
|
+
var left = Math.max(position, startLeft);
|
|
4398
4399
|
if (left > maxScaleCount * scaleWidth + startLeft) return;
|
|
4399
4400
|
var time = parserPixelToTime(left, {
|
|
4400
4401
|
startLeft: startLeft,
|
|
@@ -4729,9 +4730,8 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4729
4730
|
var data = scrollSync.current.state.scrollLeft + delta;
|
|
4730
4731
|
var maxScrollLeft = getMaxScrollLeft();
|
|
4731
4732
|
if (data > maxScrollLeft) return;
|
|
4732
|
-
var nextScrollLeft = Math.max(scrollSync.current.state.scrollLeft + delta, 0);
|
|
4733
4733
|
scrollSync.current && scrollSync.current.setState({
|
|
4734
|
-
scrollLeft:
|
|
4734
|
+
scrollLeft: Math.max(scrollSync.current.state.scrollLeft + delta, 0)
|
|
4735
4735
|
});
|
|
4736
4736
|
}, [getMaxScrollLeft]);
|
|
4737
4737
|
useLayoutEffect(function () {
|
|
@@ -4739,6 +4739,10 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4739
4739
|
var maxScrollLeft = getMaxScrollLeft();
|
|
4740
4740
|
var currentScrollLeft = (_scrollSync$current$s = (_scrollSync$current = scrollSync.current) === null || _scrollSync$current === void 0 ? void 0 : _scrollSync$current.state.scrollLeft) !== null && _scrollSync$current$s !== void 0 ? _scrollSync$current$s : 0;
|
|
4741
4741
|
var nextScrollLeft = Math.min(Math.max(currentScrollLeft, 0), maxScrollLeft);
|
|
4742
|
+
var timelineEl = document.querySelector('.timeline-editor');
|
|
4743
|
+
if (timelineEl && Math.abs(timelineEl.scrollLeft - nextScrollLeft) > 1) {
|
|
4744
|
+
timelineEl.scrollLeft = nextScrollLeft;
|
|
4745
|
+
}
|
|
4742
4746
|
if (scrollSync.current && Math.abs(currentScrollLeft - nextScrollLeft) > 1) {
|
|
4743
4747
|
scrollSync.current.setState({
|
|
4744
4748
|
scrollLeft: nextScrollLeft
|
|
@@ -4795,6 +4799,12 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4795
4799
|
target: target,
|
|
4796
4800
|
evt: e
|
|
4797
4801
|
});
|
|
4802
|
+
if (target.closest('#time-editor-container')) {
|
|
4803
|
+
// @ts-expect-error 类型断言
|
|
4804
|
+
var event = e;
|
|
4805
|
+
throttledOnClickTimeline(event);
|
|
4806
|
+
return;
|
|
4807
|
+
}
|
|
4798
4808
|
};
|
|
4799
4809
|
document.addEventListener('mousedown', handleClickOutside);
|
|
4800
4810
|
return function () {
|
|
@@ -4836,8 +4846,11 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4836
4846
|
});
|
|
4837
4847
|
},
|
|
4838
4848
|
setScrollLeftFromTime: function setScrollLeftFromTime(val) {
|
|
4849
|
+
var containerEl = document.querySelector('.timeline-editor');
|
|
4850
|
+
if (!containerEl) return;
|
|
4839
4851
|
var left = startLeft + scaleWidth / scale * val;
|
|
4840
4852
|
var nextScrollLeft = Math.min(Math.max(left, 0), getMaxScrollLeft());
|
|
4853
|
+
containerEl.scrollLeft = nextScrollLeft;
|
|
4841
4854
|
scrollSync.current && scrollSync.current.setState({
|
|
4842
4855
|
scrollLeft: nextScrollLeft
|
|
4843
4856
|
});
|
|
@@ -4850,11 +4863,12 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4850
4863
|
};
|
|
4851
4864
|
});
|
|
4852
4865
|
var onClickTimeline = useCallback(function (e) {
|
|
4853
|
-
var
|
|
4866
|
+
var _ref2, _timelineEditorEl$scr, _scrollSync$current2, _e$target;
|
|
4854
4867
|
if (!domRef.current) return;
|
|
4868
|
+
var timelineEditorEl = document.querySelector('.timeline-editor');
|
|
4855
4869
|
var rect = domRef.current.getBoundingClientRect();
|
|
4856
4870
|
var position = e.clientX - rect.x;
|
|
4857
|
-
var scrollLeft = (
|
|
4871
|
+
var scrollLeft = (_ref2 = (_timelineEditorEl$scr = timelineEditorEl === null || timelineEditorEl === void 0 ? void 0 : timelineEditorEl.scrollLeft) !== null && _timelineEditorEl$scr !== void 0 ? _timelineEditorEl$scr : (_scrollSync$current2 = scrollSync.current) === null || _scrollSync$current2 === void 0 ? void 0 : _scrollSync$current2.state.scrollLeft) !== null && _ref2 !== void 0 ? _ref2 : 0;
|
|
4858
4872
|
var left = position + scrollLeft;
|
|
4859
4873
|
var time = parserPixelToTime(left, {
|
|
4860
4874
|
startLeft: startLeft,
|
|
@@ -4869,6 +4883,10 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4869
4883
|
updateTime: true
|
|
4870
4884
|
});
|
|
4871
4885
|
}, [startLeft, scale, scaleWidth, hideCursor, handleSetCursor]);
|
|
4886
|
+
var _useThrottleFn = useThrottleFn(onClickTimeline, {
|
|
4887
|
+
wait: 50
|
|
4888
|
+
}),
|
|
4889
|
+
throttledOnClickTimeline = _useThrottleFn.run;
|
|
4872
4890
|
// 监听timeline区域宽度变化
|
|
4873
4891
|
useEffect(function () {
|
|
4874
4892
|
if (areaRef.current) {
|
|
@@ -4882,6 +4900,42 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4882
4900
|
};
|
|
4883
4901
|
}
|
|
4884
4902
|
}, []);
|
|
4903
|
+
var containerEl = document.querySelector('.timeline-editor');
|
|
4904
|
+
useEffect(function () {
|
|
4905
|
+
var containerEl = document.querySelector('.timeline-editor');
|
|
4906
|
+
var handleScroll = throttle(function (e) {
|
|
4907
|
+
console.log('handleScroll', e);
|
|
4908
|
+
var scrollLeft = e.target.scrollLeft || 0;
|
|
4909
|
+
scrollSync.current && scrollSync.current.setState({
|
|
4910
|
+
scrollLeft: scrollLeft
|
|
4911
|
+
});
|
|
4912
|
+
var clientWidth = document.documentElement.clientWidth;
|
|
4913
|
+
var timeStart = parserPixelToTime(scrollLeft, {
|
|
4914
|
+
startLeft: startLeft,
|
|
4915
|
+
scale: scale,
|
|
4916
|
+
scaleWidth: scaleWidth
|
|
4917
|
+
});
|
|
4918
|
+
var timeEnd = parserPixelToTime(scrollLeft + clientWidth, {
|
|
4919
|
+
startLeft: startLeft,
|
|
4920
|
+
scale: scale,
|
|
4921
|
+
scaleWidth: scaleWidth
|
|
4922
|
+
});
|
|
4923
|
+
window.dispatchEvent(new CustomEvent('container-scroll', {
|
|
4924
|
+
detail: {
|
|
4925
|
+
scrollLeft: scrollLeft,
|
|
4926
|
+
scrollWidth: containerEl.scrollWidth,
|
|
4927
|
+
clientWidth: clientWidth,
|
|
4928
|
+
timeStart: timeStart,
|
|
4929
|
+
timeEnd: timeEnd
|
|
4930
|
+
}
|
|
4931
|
+
}));
|
|
4932
|
+
}, 100);
|
|
4933
|
+
containerEl.addEventListener('scroll', handleScroll);
|
|
4934
|
+
return function () {
|
|
4935
|
+
containerEl.removeEventListener('scroll', handleScroll);
|
|
4936
|
+
handleScroll.cancel();
|
|
4937
|
+
};
|
|
4938
|
+
}, [startLeft, scale, scaleWidth]);
|
|
4885
4939
|
console.log('Timeline cursorTime = ', cursorTime);
|
|
4886
4940
|
return /*#__PURE__*/React.createElement("div", {
|
|
4887
4941
|
ref: domRef,
|
|
@@ -4889,11 +4943,10 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4889
4943
|
className: "".concat(className || '', " ").concat(theme || '', " ").concat(PREFIX, " ").concat(disableDrag ? PREFIX + '-disable' : '')
|
|
4890
4944
|
}, /*#__PURE__*/React.createElement(ScrollSync, {
|
|
4891
4945
|
ref: scrollSync
|
|
4892
|
-
}, function (
|
|
4893
|
-
var scrollTop =
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
_onScroll = _ref2.onScroll;
|
|
4946
|
+
}, function (_ref3) {
|
|
4947
|
+
var scrollTop = _ref3.scrollTop,
|
|
4948
|
+
_onScroll = _ref3.onScroll;
|
|
4949
|
+
var scrollLeft = (containerEl === null || containerEl === void 0 ? void 0 : containerEl.scrollLeft) || 0;
|
|
4897
4950
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TimeArea, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
4898
4951
|
timelineWidth: width,
|
|
4899
4952
|
disableDrag: disableDrag || isPlaying,
|
|
@@ -4907,8 +4960,8 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4907
4960
|
cursorRef: cursorRef
|
|
4908
4961
|
})), areaCount === 1 ? (/*#__PURE__*/React.createElement(EditArea, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
4909
4962
|
timelineWidth: width,
|
|
4910
|
-
ref: function ref(
|
|
4911
|
-
return areaRef.current =
|
|
4963
|
+
ref: function ref(_ref4) {
|
|
4964
|
+
return areaRef.current = _ref4 === null || _ref4 === void 0 ? void 0 : _ref4.domRef.current;
|
|
4912
4965
|
},
|
|
4913
4966
|
disableDrag: disableDrag || isPlaying,
|
|
4914
4967
|
editorData: editorData,
|
|
@@ -4940,7 +4993,7 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4940
4993
|
height: '100%',
|
|
4941
4994
|
background: '#fff'
|
|
4942
4995
|
},
|
|
4943
|
-
onClick:
|
|
4996
|
+
onClick: throttledOnClickTimeline
|
|
4944
4997
|
}, Object.keys(groupedData).map(function (key, index) {
|
|
4945
4998
|
var handleGroupDataChange = function handleGroupDataChange(updatedData) {
|
|
4946
4999
|
var mergedData = editorData.filter(function (item) {
|
|
@@ -4969,8 +5022,8 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4969
5022
|
}, checkedProps), {}, {
|
|
4970
5023
|
className: index !== 0 ? "no-flex ".concat(key, " ").concat(index, " overflow-hidden") : "overflow-hidden ".concat(key, " ").concat(index),
|
|
4971
5024
|
timelineWidth: width,
|
|
4972
|
-
ref: function ref(
|
|
4973
|
-
return areaRef.current =
|
|
5025
|
+
ref: function ref(_ref5) {
|
|
5026
|
+
return areaRef.current = _ref5 === null || _ref5 === void 0 ? void 0 : _ref5.domRef.current;
|
|
4974
5027
|
},
|
|
4975
5028
|
disableDrag: disableDrag || isPlaying,
|
|
4976
5029
|
editorData: groupedData[key],
|
package/dist/index.js
CHANGED
|
@@ -4247,7 +4247,7 @@ var EditAreaO = /*#__PURE__*/React__default['default'].forwardRef(function (prop
|
|
|
4247
4247
|
var index = _ref5.index;
|
|
4248
4248
|
return heights[index] || _rowHeight || 0;
|
|
4249
4249
|
},
|
|
4250
|
-
overscanRowCount:
|
|
4250
|
+
overscanRowCount: 100,
|
|
4251
4251
|
overscanColumnCount: 0,
|
|
4252
4252
|
onScroll: function onScroll(param) {
|
|
4253
4253
|
_onScroll(param);
|
|
@@ -4332,7 +4332,7 @@ var TimeArea = function TimeArea(_ref) {
|
|
|
4332
4332
|
var gridRef = React.useRef();
|
|
4333
4333
|
/** 是否显示细分刻度 */
|
|
4334
4334
|
var showUnit = scaleSplitCount > 0;
|
|
4335
|
-
var visibleWidth =
|
|
4335
|
+
var visibleWidth = document.documentElement.clientWidth;
|
|
4336
4336
|
/** 获取每个 cell 渲染内容 */
|
|
4337
4337
|
var cellRenderer = function cellRenderer(_ref2) {
|
|
4338
4338
|
var columnIndex = _ref2.columnIndex,
|
|
@@ -4372,6 +4372,7 @@ var TimeArea = function TimeArea(_ref) {
|
|
|
4372
4372
|
var estColumnWidth = getColumnWidth({
|
|
4373
4373
|
index: 1
|
|
4374
4374
|
});
|
|
4375
|
+
console.log('estColumnWidth', estColumnWidth, ', scrollLeft = ', scrollLeft);
|
|
4375
4376
|
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
4376
4377
|
className: prefix('time-area')
|
|
4377
4378
|
}, /*#__PURE__*/React__default['default'].createElement(reactVirtualized.AutoSizer, null, function (_ref3) {
|
|
@@ -4404,7 +4405,7 @@ var TimeArea = function TimeArea(_ref) {
|
|
|
4404
4405
|
if (hideCursor) return;
|
|
4405
4406
|
var rect = e.currentTarget.getBoundingClientRect();
|
|
4406
4407
|
var position = e.clientX - rect.x;
|
|
4407
|
-
var left = Math.max(position
|
|
4408
|
+
var left = Math.max(position, startLeft);
|
|
4408
4409
|
if (left > maxScaleCount * scaleWidth + startLeft) return;
|
|
4409
4410
|
var time = parserPixelToTime(left, {
|
|
4410
4411
|
startLeft: startLeft,
|
|
@@ -4739,9 +4740,8 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4739
4740
|
var data = scrollSync.current.state.scrollLeft + delta;
|
|
4740
4741
|
var maxScrollLeft = getMaxScrollLeft();
|
|
4741
4742
|
if (data > maxScrollLeft) return;
|
|
4742
|
-
var nextScrollLeft = Math.max(scrollSync.current.state.scrollLeft + delta, 0);
|
|
4743
4743
|
scrollSync.current && scrollSync.current.setState({
|
|
4744
|
-
scrollLeft:
|
|
4744
|
+
scrollLeft: Math.max(scrollSync.current.state.scrollLeft + delta, 0)
|
|
4745
4745
|
});
|
|
4746
4746
|
}, [getMaxScrollLeft]);
|
|
4747
4747
|
React.useLayoutEffect(function () {
|
|
@@ -4749,6 +4749,10 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4749
4749
|
var maxScrollLeft = getMaxScrollLeft();
|
|
4750
4750
|
var currentScrollLeft = (_scrollSync$current$s = (_scrollSync$current = scrollSync.current) === null || _scrollSync$current === void 0 ? void 0 : _scrollSync$current.state.scrollLeft) !== null && _scrollSync$current$s !== void 0 ? _scrollSync$current$s : 0;
|
|
4751
4751
|
var nextScrollLeft = Math.min(Math.max(currentScrollLeft, 0), maxScrollLeft);
|
|
4752
|
+
var timelineEl = document.querySelector('.timeline-editor');
|
|
4753
|
+
if (timelineEl && Math.abs(timelineEl.scrollLeft - nextScrollLeft) > 1) {
|
|
4754
|
+
timelineEl.scrollLeft = nextScrollLeft;
|
|
4755
|
+
}
|
|
4752
4756
|
if (scrollSync.current && Math.abs(currentScrollLeft - nextScrollLeft) > 1) {
|
|
4753
4757
|
scrollSync.current.setState({
|
|
4754
4758
|
scrollLeft: nextScrollLeft
|
|
@@ -4805,6 +4809,12 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4805
4809
|
target: target,
|
|
4806
4810
|
evt: e
|
|
4807
4811
|
});
|
|
4812
|
+
if (target.closest('#time-editor-container')) {
|
|
4813
|
+
// @ts-expect-error 类型断言
|
|
4814
|
+
var event = e;
|
|
4815
|
+
throttledOnClickTimeline(event);
|
|
4816
|
+
return;
|
|
4817
|
+
}
|
|
4808
4818
|
};
|
|
4809
4819
|
document.addEventListener('mousedown', handleClickOutside);
|
|
4810
4820
|
return function () {
|
|
@@ -4846,8 +4856,11 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4846
4856
|
});
|
|
4847
4857
|
},
|
|
4848
4858
|
setScrollLeftFromTime: function setScrollLeftFromTime(val) {
|
|
4859
|
+
var containerEl = document.querySelector('.timeline-editor');
|
|
4860
|
+
if (!containerEl) return;
|
|
4849
4861
|
var left = startLeft + scaleWidth / scale * val;
|
|
4850
4862
|
var nextScrollLeft = Math.min(Math.max(left, 0), getMaxScrollLeft());
|
|
4863
|
+
containerEl.scrollLeft = nextScrollLeft;
|
|
4851
4864
|
scrollSync.current && scrollSync.current.setState({
|
|
4852
4865
|
scrollLeft: nextScrollLeft
|
|
4853
4866
|
});
|
|
@@ -4860,11 +4873,12 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4860
4873
|
};
|
|
4861
4874
|
});
|
|
4862
4875
|
var onClickTimeline = React.useCallback(function (e) {
|
|
4863
|
-
var
|
|
4876
|
+
var _ref2, _timelineEditorEl$scr, _scrollSync$current2, _e$target;
|
|
4864
4877
|
if (!domRef.current) return;
|
|
4878
|
+
var timelineEditorEl = document.querySelector('.timeline-editor');
|
|
4865
4879
|
var rect = domRef.current.getBoundingClientRect();
|
|
4866
4880
|
var position = e.clientX - rect.x;
|
|
4867
|
-
var scrollLeft = (
|
|
4881
|
+
var scrollLeft = (_ref2 = (_timelineEditorEl$scr = timelineEditorEl === null || timelineEditorEl === void 0 ? void 0 : timelineEditorEl.scrollLeft) !== null && _timelineEditorEl$scr !== void 0 ? _timelineEditorEl$scr : (_scrollSync$current2 = scrollSync.current) === null || _scrollSync$current2 === void 0 ? void 0 : _scrollSync$current2.state.scrollLeft) !== null && _ref2 !== void 0 ? _ref2 : 0;
|
|
4868
4882
|
var left = position + scrollLeft;
|
|
4869
4883
|
var time = parserPixelToTime(left, {
|
|
4870
4884
|
startLeft: startLeft,
|
|
@@ -4879,6 +4893,10 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4879
4893
|
updateTime: true
|
|
4880
4894
|
});
|
|
4881
4895
|
}, [startLeft, scale, scaleWidth, hideCursor, handleSetCursor]);
|
|
4896
|
+
var _useThrottleFn = ahooks.useThrottleFn(onClickTimeline, {
|
|
4897
|
+
wait: 50
|
|
4898
|
+
}),
|
|
4899
|
+
throttledOnClickTimeline = _useThrottleFn.run;
|
|
4882
4900
|
// 监听timeline区域宽度变化
|
|
4883
4901
|
React.useEffect(function () {
|
|
4884
4902
|
if (areaRef.current) {
|
|
@@ -4892,6 +4910,42 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4892
4910
|
};
|
|
4893
4911
|
}
|
|
4894
4912
|
}, []);
|
|
4913
|
+
var containerEl = document.querySelector('.timeline-editor');
|
|
4914
|
+
React.useEffect(function () {
|
|
4915
|
+
var containerEl = document.querySelector('.timeline-editor');
|
|
4916
|
+
var handleScroll = lodashEs.throttle(function (e) {
|
|
4917
|
+
console.log('handleScroll', e);
|
|
4918
|
+
var scrollLeft = e.target.scrollLeft || 0;
|
|
4919
|
+
scrollSync.current && scrollSync.current.setState({
|
|
4920
|
+
scrollLeft: scrollLeft
|
|
4921
|
+
});
|
|
4922
|
+
var clientWidth = document.documentElement.clientWidth;
|
|
4923
|
+
var timeStart = parserPixelToTime(scrollLeft, {
|
|
4924
|
+
startLeft: startLeft,
|
|
4925
|
+
scale: scale,
|
|
4926
|
+
scaleWidth: scaleWidth
|
|
4927
|
+
});
|
|
4928
|
+
var timeEnd = parserPixelToTime(scrollLeft + clientWidth, {
|
|
4929
|
+
startLeft: startLeft,
|
|
4930
|
+
scale: scale,
|
|
4931
|
+
scaleWidth: scaleWidth
|
|
4932
|
+
});
|
|
4933
|
+
window.dispatchEvent(new CustomEvent('container-scroll', {
|
|
4934
|
+
detail: {
|
|
4935
|
+
scrollLeft: scrollLeft,
|
|
4936
|
+
scrollWidth: containerEl.scrollWidth,
|
|
4937
|
+
clientWidth: clientWidth,
|
|
4938
|
+
timeStart: timeStart,
|
|
4939
|
+
timeEnd: timeEnd
|
|
4940
|
+
}
|
|
4941
|
+
}));
|
|
4942
|
+
}, 100);
|
|
4943
|
+
containerEl.addEventListener('scroll', handleScroll);
|
|
4944
|
+
return function () {
|
|
4945
|
+
containerEl.removeEventListener('scroll', handleScroll);
|
|
4946
|
+
handleScroll.cancel();
|
|
4947
|
+
};
|
|
4948
|
+
}, [startLeft, scale, scaleWidth]);
|
|
4895
4949
|
console.log('Timeline cursorTime = ', cursorTime);
|
|
4896
4950
|
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
4897
4951
|
ref: domRef,
|
|
@@ -4899,11 +4953,10 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4899
4953
|
className: "".concat(className || '', " ").concat(theme || '', " ").concat(PREFIX, " ").concat(disableDrag ? PREFIX + '-disable' : '')
|
|
4900
4954
|
}, /*#__PURE__*/React__default['default'].createElement(reactVirtualized.ScrollSync, {
|
|
4901
4955
|
ref: scrollSync
|
|
4902
|
-
}, function (
|
|
4903
|
-
var scrollTop =
|
|
4904
|
-
|
|
4905
|
-
|
|
4906
|
-
_onScroll = _ref2.onScroll;
|
|
4956
|
+
}, function (_ref3) {
|
|
4957
|
+
var scrollTop = _ref3.scrollTop,
|
|
4958
|
+
_onScroll = _ref3.onScroll;
|
|
4959
|
+
var scrollLeft = (containerEl === null || containerEl === void 0 ? void 0 : containerEl.scrollLeft) || 0;
|
|
4907
4960
|
return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(TimeArea, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
4908
4961
|
timelineWidth: width,
|
|
4909
4962
|
disableDrag: disableDrag || isPlaying,
|
|
@@ -4917,8 +4970,8 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4917
4970
|
cursorRef: cursorRef
|
|
4918
4971
|
})), areaCount === 1 ? (/*#__PURE__*/React__default['default'].createElement(EditArea, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
4919
4972
|
timelineWidth: width,
|
|
4920
|
-
ref: function ref(
|
|
4921
|
-
return areaRef.current =
|
|
4973
|
+
ref: function ref(_ref4) {
|
|
4974
|
+
return areaRef.current = _ref4 === null || _ref4 === void 0 ? void 0 : _ref4.domRef.current;
|
|
4922
4975
|
},
|
|
4923
4976
|
disableDrag: disableDrag || isPlaying,
|
|
4924
4977
|
editorData: editorData,
|
|
@@ -4950,7 +5003,7 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4950
5003
|
height: '100%',
|
|
4951
5004
|
background: '#fff'
|
|
4952
5005
|
},
|
|
4953
|
-
onClick:
|
|
5006
|
+
onClick: throttledOnClickTimeline
|
|
4954
5007
|
}, Object.keys(groupedData).map(function (key, index) {
|
|
4955
5008
|
var handleGroupDataChange = function handleGroupDataChange(updatedData) {
|
|
4956
5009
|
var mergedData = editorData.filter(function (item) {
|
|
@@ -4979,8 +5032,8 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4979
5032
|
}, checkedProps), {}, {
|
|
4980
5033
|
className: index !== 0 ? "no-flex ".concat(key, " ").concat(index, " overflow-hidden") : "overflow-hidden ".concat(key, " ").concat(index),
|
|
4981
5034
|
timelineWidth: width,
|
|
4982
|
-
ref: function ref(
|
|
4983
|
-
return areaRef.current =
|
|
5035
|
+
ref: function ref(_ref5) {
|
|
5036
|
+
return areaRef.current = _ref5 === null || _ref5 === void 0 ? void 0 : _ref5.domRef.current;
|
|
4984
5037
|
},
|
|
4985
5038
|
disableDrag: disableDrag || isPlaying,
|
|
4986
5039
|
editorData: groupedData[key],
|