sense-react-timeline-editor 1.1.10 → 1.1.12

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.
@@ -1,11 +1,12 @@
1
1
  import { DraggableOptions } from "@interactjs/actions/drag/plugin";
2
2
  import { ResizableOptions } from "@interactjs/actions/resize/plugin";
3
3
  import { Interactable } from "@interactjs/types";
4
- import { FC } from "react";
4
+ import { FC, ReactNode } from "react";
5
5
  export declare const InteractComp: FC<{
6
6
  interactRef?: React.MutableRefObject<Interactable>;
7
7
  draggable: boolean;
8
8
  draggableOptions: DraggableOptions;
9
9
  resizable: boolean;
10
10
  resizableOptions: ResizableOptions;
11
+ children: ReactNode;
11
12
  }>;
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import React, { useRef, useEffect, cloneElement, useImperativeHandle, useState, useLayoutEffect, useCallback, useMemo, memo, forwardRef } from 'react';
1
+ import React, { useRef, useEffect, cloneElement, useImperativeHandle, useState, useLayoutEffect, useCallback, useTransition, useMemo, memo, forwardRef } from 'react';
2
2
  import { AutoSizer, Grid, ScrollSync } from 'react-virtualized';
3
3
  import { useThrottleEffect, useThrottleFn } from 'ahooks';
4
4
  import { prefixNames } from 'framework-utils';
@@ -2002,7 +2002,7 @@ var Cursor = /*#__PURE__*/React.forwardRef(function (props, ref) {
2002
2002
  startLeft: startLeft,
2003
2003
  scaleWidth: scaleWidth,
2004
2004
  scale: scale
2005
- }) - scrollLeft);
2005
+ }));
2006
2006
  }
2007
2007
  };
2008
2008
  });
@@ -2013,12 +2013,12 @@ var Cursor = /*#__PURE__*/React.forwardRef(function (props, ref) {
2013
2013
  startLeft: startLeft,
2014
2014
  scaleWidth: scaleWidth,
2015
2015
  scale: scale
2016
- }) - scrollLeft);
2016
+ }));
2017
2017
  }
2018
- }, [cursorTime, startLeft, scaleWidth, scale, scrollLeft], {
2018
+ }, [cursorTime, startLeft, scaleWidth, scale], {
2019
2019
  wait: 10
2020
2020
  });
2021
- var clientHeight = ((_document$querySelect = document.querySelector('#time-editor-container')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.clientHeight) || 0;
2021
+ var clientHeight = ((_document$querySelect = document.querySelector('#time-editor-container')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.scrollHeight) || 0;
2022
2022
  return /*#__PURE__*/React.createElement(RowDnd, {
2023
2023
  top: theme === 'light' ? 26 : 0,
2024
2024
  start: startLeft,
@@ -2924,6 +2924,10 @@ var EditRow = function EditRow(props) {
2924
2924
  _useState2 = _slicedToArray(_useState, 2),
2925
2925
  visibleCount = _useState2[0],
2926
2926
  setVisibleCount = _useState2[1];
2927
+ var _useTransition = useTransition(),
2928
+ _useTransition2 = _slicedToArray(_useTransition, 2),
2929
+ isPending = _useTransition2[0],
2930
+ startTransition = _useTransition2[1];
2927
2931
  var classNames = ['edit-row'];
2928
2932
  if (rowData === null || rowData === void 0 ? void 0 : rowData.selected) classNames.push('selected');
2929
2933
  var clientWidth = document.documentElement.clientWidth;
@@ -2949,14 +2953,11 @@ var EditRow = function EditRow(props) {
2949
2953
  }, [visibleActions, visibleCount]);
2950
2954
  useEffect(function () {
2951
2955
  if (visibleCount < visibleActions.length) {
2952
- var timer = requestAnimationFrame(function () {
2956
+ startTransition(function () {
2953
2957
  setVisibleCount(function (prev) {
2954
2958
  return Math.min(prev + 20, visibleActions.length);
2955
2959
  });
2956
2960
  });
2957
- return function () {
2958
- return cancelAnimationFrame(timer);
2959
- };
2960
2961
  }
2961
2962
  }, [visibleCount, visibleActions.length]);
2962
2963
  useEffect(function () {
@@ -4065,7 +4066,8 @@ var EditAreaO = /*#__PURE__*/React.forwardRef(function (props, ref) {
4065
4066
  return prev + (cur.rowHeight || _rowHeight);
4066
4067
  }, 0) + ((className || '').indexOf('1') > -1 ? 12 : 32);
4067
4068
  if (minHeight) {
4068
- _totalHeight = "calc(100% - ".concat(minHeight + 16, "px)");
4069
+ var calcHeight = "calc(100% - ".concat(minHeight + 16, "px)");
4070
+ _totalHeight = "max(".concat(_totalHeight, "px, ").concat(calcHeight, ")");
4069
4071
  }
4070
4072
  return /*#__PURE__*/React.createElement("div", {
4071
4073
  ref: editAreaRef,
@@ -4196,6 +4198,7 @@ var TimeArea = function TimeArea(_ref) {
4196
4198
  var gridRef = useRef();
4197
4199
  /** 是否显示细分刻度 */
4198
4200
  var showUnit = scaleSplitCount > 0;
4201
+ console.log('TimeArea scrollLeft = ', scrollLeft);
4199
4202
  var clientWidth = document.documentElement.clientWidth;
4200
4203
  /** 获取每个 cell 渲染内容 */
4201
4204
  var cellRenderer = function cellRenderer(_ref2) {
@@ -4268,8 +4271,10 @@ var TimeArea = function TimeArea(_ref) {
4268
4271
  if (hideCursor) return;
4269
4272
  var rect = e.currentTarget.getBoundingClientRect();
4270
4273
  var position = e.clientX - rect.x;
4271
- var left = Math.max(position + scrollLeft, startLeft);
4272
- if (left > maxScaleCount * scaleWidth + startLeft - scrollLeft) return;
4274
+ var left = Math.max(position, startLeft);
4275
+ // const left = Math.max(position + scrollLeft, startLeft);
4276
+ if (left > maxScaleCount * scaleWidth + startLeft) return;
4277
+ // if (left > maxScaleCount * scaleWidth + startLeft - scrollLeft) return;
4273
4278
  var time = parserPixelToTime(left, {
4274
4279
  startLeft: startLeft,
4275
4280
  scale: scale,
@@ -4689,6 +4694,15 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
4689
4694
  scrollLeft: Math.max(val, 0)
4690
4695
  });
4691
4696
  },
4697
+ setScrollLeftFromTime: function setScrollLeftFromTime(val) {
4698
+ var containerEl = document.querySelector('.timeline-editor');
4699
+ if (!containerEl) return;
4700
+ var left = startLeft + scaleWidth / scale * val;
4701
+ containerEl.scrollLeft = Math.max(left, 0);
4702
+ scrollSync.current && scrollSync.current.setState({
4703
+ scrollLeft: Math.max(left, 0)
4704
+ });
4705
+ },
4692
4706
  setScrollTop: function setScrollTop(val) {
4693
4707
  scrollSync.current && scrollSync.current.setState({
4694
4708
  scrollTop: Math.max(val, 0)
@@ -4711,7 +4725,8 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
4711
4725
  if (action || hideCursor) return;
4712
4726
  console.log('onClickTimeline = ', time);
4713
4727
  handleSetCursor({
4714
- time: time
4728
+ time: time,
4729
+ updateTime: true
4715
4730
  });
4716
4731
  }, [startLeft, scale, scaleWidth, hideCursor, handleSetCursor]);
4717
4732
  // 监听timeline区域宽度变化
@@ -4730,17 +4745,37 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
4730
4745
  useEffect(function () {
4731
4746
  var containerEl = document.querySelector('.timeline-editor');
4732
4747
  var handleScroll = throttle(function (e) {
4733
- console.log('scroll', e);
4748
+ var scrollLeft = e.target.scrollLeft || 0;
4734
4749
  scrollSync.current && scrollSync.current.setState({
4735
- scrollLeft: e.target.scrollLeft || 0
4750
+ scrollLeft: scrollLeft
4736
4751
  });
4752
+ var clientWidth = document.documentElement.clientWidth;
4753
+ var timeStart = parserPixelToTime(scrollLeft, {
4754
+ startLeft: startLeft,
4755
+ scale: scale,
4756
+ scaleWidth: scaleWidth
4757
+ });
4758
+ var timeEnd = parserPixelToTime(scrollLeft + clientWidth, {
4759
+ startLeft: startLeft,
4760
+ scale: scale,
4761
+ scaleWidth: scaleWidth
4762
+ });
4763
+ window.dispatchEvent(new CustomEvent('container-scroll', {
4764
+ detail: {
4765
+ scrollLeft: scrollLeft,
4766
+ scrollWidth: containerEl.scrollWidth,
4767
+ clientWidth: clientWidth,
4768
+ timeStart: timeStart,
4769
+ timeEnd: timeEnd
4770
+ }
4771
+ }));
4737
4772
  }, 100);
4738
4773
  containerEl.addEventListener('scroll', handleScroll);
4739
4774
  return function () {
4740
4775
  containerEl.removeEventListener('scroll', handleScroll);
4741
4776
  handleScroll.cancel();
4742
4777
  };
4743
- }, []);
4778
+ }, [startLeft, scale, scaleWidth]);
4744
4779
  return /*#__PURE__*/React.createElement("div", {
4745
4780
  ref: domRef,
4746
4781
  style: style,
@@ -4839,7 +4874,7 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
4839
4874
  setCursor: handleSetCursor,
4840
4875
  deltaScrollLeft: autoScroll && handleDeltaScrollLeft,
4841
4876
  allowCreateTrack: allowCreateTrack,
4842
- minHeight: index === 0 ? undefined : _totalHeight,
4877
+ minHeight: index === 0 ? 122 : _totalHeight,
4843
4878
  containerRef: containerRef,
4844
4879
  onMutiSelectChange: props === null || props === void 0 ? void 0 : props.onMutiSelectChange,
4845
4880
  engineRef: engineRef,
package/dist/index.js CHANGED
@@ -2012,7 +2012,7 @@ var Cursor = /*#__PURE__*/React__default['default'].forwardRef(function (props,
2012
2012
  startLeft: startLeft,
2013
2013
  scaleWidth: scaleWidth,
2014
2014
  scale: scale
2015
- }) - scrollLeft);
2015
+ }));
2016
2016
  }
2017
2017
  };
2018
2018
  });
@@ -2023,12 +2023,12 @@ var Cursor = /*#__PURE__*/React__default['default'].forwardRef(function (props,
2023
2023
  startLeft: startLeft,
2024
2024
  scaleWidth: scaleWidth,
2025
2025
  scale: scale
2026
- }) - scrollLeft);
2026
+ }));
2027
2027
  }
2028
- }, [cursorTime, startLeft, scaleWidth, scale, scrollLeft], {
2028
+ }, [cursorTime, startLeft, scaleWidth, scale], {
2029
2029
  wait: 10
2030
2030
  });
2031
- var clientHeight = ((_document$querySelect = document.querySelector('#time-editor-container')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.clientHeight) || 0;
2031
+ var clientHeight = ((_document$querySelect = document.querySelector('#time-editor-container')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.scrollHeight) || 0;
2032
2032
  return /*#__PURE__*/React__default['default'].createElement(RowDnd, {
2033
2033
  top: theme === 'light' ? 26 : 0,
2034
2034
  start: startLeft,
@@ -2934,6 +2934,10 @@ var EditRow = function EditRow(props) {
2934
2934
  _useState2 = _slicedToArray(_useState, 2),
2935
2935
  visibleCount = _useState2[0],
2936
2936
  setVisibleCount = _useState2[1];
2937
+ var _useTransition = React.useTransition(),
2938
+ _useTransition2 = _slicedToArray(_useTransition, 2),
2939
+ isPending = _useTransition2[0],
2940
+ startTransition = _useTransition2[1];
2937
2941
  var classNames = ['edit-row'];
2938
2942
  if (rowData === null || rowData === void 0 ? void 0 : rowData.selected) classNames.push('selected');
2939
2943
  var clientWidth = document.documentElement.clientWidth;
@@ -2959,14 +2963,11 @@ var EditRow = function EditRow(props) {
2959
2963
  }, [visibleActions, visibleCount]);
2960
2964
  React.useEffect(function () {
2961
2965
  if (visibleCount < visibleActions.length) {
2962
- var timer = requestAnimationFrame(function () {
2966
+ startTransition(function () {
2963
2967
  setVisibleCount(function (prev) {
2964
2968
  return Math.min(prev + 20, visibleActions.length);
2965
2969
  });
2966
2970
  });
2967
- return function () {
2968
- return cancelAnimationFrame(timer);
2969
- };
2970
2971
  }
2971
2972
  }, [visibleCount, visibleActions.length]);
2972
2973
  React.useEffect(function () {
@@ -4075,7 +4076,8 @@ var EditAreaO = /*#__PURE__*/React__default['default'].forwardRef(function (prop
4075
4076
  return prev + (cur.rowHeight || _rowHeight);
4076
4077
  }, 0) + ((className || '').indexOf('1') > -1 ? 12 : 32);
4077
4078
  if (minHeight) {
4078
- _totalHeight = "calc(100% - ".concat(minHeight + 16, "px)");
4079
+ var calcHeight = "calc(100% - ".concat(minHeight + 16, "px)");
4080
+ _totalHeight = "max(".concat(_totalHeight, "px, ").concat(calcHeight, ")");
4079
4081
  }
4080
4082
  return /*#__PURE__*/React__default['default'].createElement("div", {
4081
4083
  ref: editAreaRef,
@@ -4206,6 +4208,7 @@ var TimeArea = function TimeArea(_ref) {
4206
4208
  var gridRef = React.useRef();
4207
4209
  /** 是否显示细分刻度 */
4208
4210
  var showUnit = scaleSplitCount > 0;
4211
+ console.log('TimeArea scrollLeft = ', scrollLeft);
4209
4212
  var clientWidth = document.documentElement.clientWidth;
4210
4213
  /** 获取每个 cell 渲染内容 */
4211
4214
  var cellRenderer = function cellRenderer(_ref2) {
@@ -4278,8 +4281,10 @@ var TimeArea = function TimeArea(_ref) {
4278
4281
  if (hideCursor) return;
4279
4282
  var rect = e.currentTarget.getBoundingClientRect();
4280
4283
  var position = e.clientX - rect.x;
4281
- var left = Math.max(position + scrollLeft, startLeft);
4282
- if (left > maxScaleCount * scaleWidth + startLeft - scrollLeft) return;
4284
+ var left = Math.max(position, startLeft);
4285
+ // const left = Math.max(position + scrollLeft, startLeft);
4286
+ if (left > maxScaleCount * scaleWidth + startLeft) return;
4287
+ // if (left > maxScaleCount * scaleWidth + startLeft - scrollLeft) return;
4283
4288
  var time = parserPixelToTime(left, {
4284
4289
  startLeft: startLeft,
4285
4290
  scale: scale,
@@ -4699,6 +4704,15 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
4699
4704
  scrollLeft: Math.max(val, 0)
4700
4705
  });
4701
4706
  },
4707
+ setScrollLeftFromTime: function setScrollLeftFromTime(val) {
4708
+ var containerEl = document.querySelector('.timeline-editor');
4709
+ if (!containerEl) return;
4710
+ var left = startLeft + scaleWidth / scale * val;
4711
+ containerEl.scrollLeft = Math.max(left, 0);
4712
+ scrollSync.current && scrollSync.current.setState({
4713
+ scrollLeft: Math.max(left, 0)
4714
+ });
4715
+ },
4702
4716
  setScrollTop: function setScrollTop(val) {
4703
4717
  scrollSync.current && scrollSync.current.setState({
4704
4718
  scrollTop: Math.max(val, 0)
@@ -4721,7 +4735,8 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
4721
4735
  if (action || hideCursor) return;
4722
4736
  console.log('onClickTimeline = ', time);
4723
4737
  handleSetCursor({
4724
- time: time
4738
+ time: time,
4739
+ updateTime: true
4725
4740
  });
4726
4741
  }, [startLeft, scale, scaleWidth, hideCursor, handleSetCursor]);
4727
4742
  // 监听timeline区域宽度变化
@@ -4740,17 +4755,37 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
4740
4755
  React.useEffect(function () {
4741
4756
  var containerEl = document.querySelector('.timeline-editor');
4742
4757
  var handleScroll = lodashEs.throttle(function (e) {
4743
- console.log('scroll', e);
4758
+ var scrollLeft = e.target.scrollLeft || 0;
4744
4759
  scrollSync.current && scrollSync.current.setState({
4745
- scrollLeft: e.target.scrollLeft || 0
4760
+ scrollLeft: scrollLeft
4746
4761
  });
4762
+ var clientWidth = document.documentElement.clientWidth;
4763
+ var timeStart = parserPixelToTime(scrollLeft, {
4764
+ startLeft: startLeft,
4765
+ scale: scale,
4766
+ scaleWidth: scaleWidth
4767
+ });
4768
+ var timeEnd = parserPixelToTime(scrollLeft + clientWidth, {
4769
+ startLeft: startLeft,
4770
+ scale: scale,
4771
+ scaleWidth: scaleWidth
4772
+ });
4773
+ window.dispatchEvent(new CustomEvent('container-scroll', {
4774
+ detail: {
4775
+ scrollLeft: scrollLeft,
4776
+ scrollWidth: containerEl.scrollWidth,
4777
+ clientWidth: clientWidth,
4778
+ timeStart: timeStart,
4779
+ timeEnd: timeEnd
4780
+ }
4781
+ }));
4747
4782
  }, 100);
4748
4783
  containerEl.addEventListener('scroll', handleScroll);
4749
4784
  return function () {
4750
4785
  containerEl.removeEventListener('scroll', handleScroll);
4751
4786
  handleScroll.cancel();
4752
4787
  };
4753
- }, []);
4788
+ }, [startLeft, scale, scaleWidth]);
4754
4789
  return /*#__PURE__*/React__default['default'].createElement("div", {
4755
4790
  ref: domRef,
4756
4791
  style: style,
@@ -4849,7 +4884,7 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
4849
4884
  setCursor: handleSetCursor,
4850
4885
  deltaScrollLeft: autoScroll && handleDeltaScrollLeft,
4851
4886
  allowCreateTrack: allowCreateTrack,
4852
- minHeight: index === 0 ? undefined : _totalHeight,
4887
+ minHeight: index === 0 ? 122 : _totalHeight,
4853
4888
  containerRef: containerRef,
4854
4889
  onMutiSelectChange: props === null || props === void 0 ? void 0 : props.onMutiSelectChange,
4855
4890
  engineRef: engineRef,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sense-react-timeline-editor",
3
- "version": "1.1.10",
3
+ "version": "1.1.12",
4
4
  "author": "xzdarcy",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -54,8 +54,8 @@
54
54
  "devDependencies": {
55
55
  "@types/howler": "^2.2.4",
56
56
  "@types/lodash": "^4.14.177",
57
- "@types/react": "^17.0.17",
58
- "@types/react-dom": "^17.0.17",
57
+ "@types/react": "^18.3.28",
58
+ "@types/react-dom": "^18.3.7",
59
59
  "@umijs/test": "^3.0.5",
60
60
  "dumi": "^1.0.17",
61
61
  "father-build": "^1.17.2",
@@ -64,8 +64,8 @@
64
64
  "lodash": "^4.17.21",
65
65
  "lottie-web": "^5.8.1",
66
66
  "prettier": "^2.2.1",
67
- "react": "^17.0.0",
68
- "react-dom": "^17.0.0",
67
+ "react": "^18.3.1",
68
+ "react-dom": "^18.3.1",
69
69
  "standard-version": "^9.5.0",
70
70
  "typescript": "^4.8.4",
71
71
  "yorkie": "^2.0.0"