sense-react-timeline-editor 1.1.21 → 1.1.23
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 +189 -112
- package/dist/index.js +189 -112
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -2180,6 +2180,36 @@ var resolveSmartRow = function resolveSmartRow(_ref2) {
|
|
|
2180
2180
|
needCreateNewRow: false
|
|
2181
2181
|
};
|
|
2182
2182
|
};
|
|
2183
|
+
var hasMultiDragConflict = function hasMultiDragConflict(_ref3) {
|
|
2184
|
+
var editorData = _ref3.editorData,
|
|
2185
|
+
selectedActionIds = _ref3.selectedActionIds,
|
|
2186
|
+
primaryAction = _ref3.primaryAction,
|
|
2187
|
+
timeOffset = _ref3.timeOffset,
|
|
2188
|
+
rowDelta = _ref3.rowDelta;
|
|
2189
|
+
var selectedSet = new Set(selectedActionIds);
|
|
2190
|
+
return selectedActionIds.some(function (selectedId) {
|
|
2191
|
+
var sourceRowIndex = -1;
|
|
2192
|
+
var sourceAction;
|
|
2193
|
+
editorData.some(function (candidateRow, rowIndex) {
|
|
2194
|
+
var action = candidateRow.actions.find(function (item) {
|
|
2195
|
+
return item.id === selectedId;
|
|
2196
|
+
});
|
|
2197
|
+
if (!action) return false;
|
|
2198
|
+
sourceRowIndex = rowIndex;
|
|
2199
|
+
sourceAction = action;
|
|
2200
|
+
return true;
|
|
2201
|
+
});
|
|
2202
|
+
var initialAction = sourceAction || (selectedId === primaryAction.id ? primaryAction : undefined);
|
|
2203
|
+
if (!initialAction || sourceRowIndex < 0) return true;
|
|
2204
|
+
var targetRow = editorData[sourceRowIndex + rowDelta];
|
|
2205
|
+
if (!targetRow) return true;
|
|
2206
|
+
var nextStart = initialAction.start + timeOffset;
|
|
2207
|
+
var nextEnd = initialAction.end + timeOffset;
|
|
2208
|
+
return targetRow.actions.some(function (item) {
|
|
2209
|
+
return !selectedSet.has(item.id) && item.start < nextEnd && item.end > nextStart;
|
|
2210
|
+
});
|
|
2211
|
+
});
|
|
2212
|
+
};
|
|
2183
2213
|
var clearRipplePreview = function clearRipplePreview(container) {
|
|
2184
2214
|
if (!container) return;
|
|
2185
2215
|
var previewNodes = container.querySelectorAll('[data-ripple-preview="true"]');
|
|
@@ -2190,45 +2220,45 @@ var clearRipplePreview = function clearRipplePreview(container) {
|
|
|
2190
2220
|
node.removeAttribute('data-ripple-preview');
|
|
2191
2221
|
});
|
|
2192
2222
|
};
|
|
2193
|
-
var EditActionO = function EditActionO(
|
|
2194
|
-
var editorData =
|
|
2195
|
-
row =
|
|
2196
|
-
action =
|
|
2197
|
-
effects =
|
|
2198
|
-
rowHeight =
|
|
2199
|
-
scale =
|
|
2200
|
-
scaleWidth =
|
|
2201
|
-
scaleSplitCount =
|
|
2202
|
-
startLeft =
|
|
2203
|
-
gridSnap =
|
|
2204
|
-
disableDrag =
|
|
2205
|
-
scaleCount =
|
|
2206
|
-
maxScaleCount =
|
|
2207
|
-
setScaleCount =
|
|
2208
|
-
onActionMoveStart =
|
|
2209
|
-
onActionMoving =
|
|
2210
|
-
onActionMoveEnd =
|
|
2211
|
-
onActionResizeStart =
|
|
2212
|
-
onActionResizeEnd =
|
|
2213
|
-
onActionResizing =
|
|
2214
|
-
dragLineData =
|
|
2215
|
-
setEditorData =
|
|
2216
|
-
onClickAction =
|
|
2217
|
-
onClickActionOnly =
|
|
2218
|
-
onDoubleClickAction =
|
|
2219
|
-
onContextMenuAction =
|
|
2220
|
-
getActionRender =
|
|
2221
|
-
handleTime =
|
|
2222
|
-
areaRef =
|
|
2223
|
-
deltaScrollLeft =
|
|
2224
|
-
|
|
2225
|
-
allowCreateTrack =
|
|
2226
|
-
insertPreview =
|
|
2227
|
-
setInsertPreview =
|
|
2228
|
-
trackPreview =
|
|
2229
|
-
setTrackPreview =
|
|
2230
|
-
containerRef =
|
|
2231
|
-
selectedActionIds =
|
|
2223
|
+
var EditActionO = function EditActionO(_ref8) {
|
|
2224
|
+
var editorData = _ref8.editorData,
|
|
2225
|
+
row = _ref8.row,
|
|
2226
|
+
action = _ref8.action,
|
|
2227
|
+
effects = _ref8.effects,
|
|
2228
|
+
rowHeight = _ref8.rowHeight,
|
|
2229
|
+
scale = _ref8.scale,
|
|
2230
|
+
scaleWidth = _ref8.scaleWidth,
|
|
2231
|
+
scaleSplitCount = _ref8.scaleSplitCount,
|
|
2232
|
+
startLeft = _ref8.startLeft,
|
|
2233
|
+
gridSnap = _ref8.gridSnap,
|
|
2234
|
+
disableDrag = _ref8.disableDrag,
|
|
2235
|
+
scaleCount = _ref8.scaleCount,
|
|
2236
|
+
maxScaleCount = _ref8.maxScaleCount,
|
|
2237
|
+
setScaleCount = _ref8.setScaleCount,
|
|
2238
|
+
onActionMoveStart = _ref8.onActionMoveStart,
|
|
2239
|
+
onActionMoving = _ref8.onActionMoving,
|
|
2240
|
+
onActionMoveEnd = _ref8.onActionMoveEnd,
|
|
2241
|
+
onActionResizeStart = _ref8.onActionResizeStart,
|
|
2242
|
+
onActionResizeEnd = _ref8.onActionResizeEnd,
|
|
2243
|
+
onActionResizing = _ref8.onActionResizing,
|
|
2244
|
+
dragLineData = _ref8.dragLineData,
|
|
2245
|
+
setEditorData = _ref8.setEditorData,
|
|
2246
|
+
onClickAction = _ref8.onClickAction,
|
|
2247
|
+
onClickActionOnly = _ref8.onClickActionOnly,
|
|
2248
|
+
onDoubleClickAction = _ref8.onDoubleClickAction,
|
|
2249
|
+
onContextMenuAction = _ref8.onContextMenuAction,
|
|
2250
|
+
getActionRender = _ref8.getActionRender,
|
|
2251
|
+
handleTime = _ref8.handleTime,
|
|
2252
|
+
areaRef = _ref8.areaRef,
|
|
2253
|
+
deltaScrollLeft = _ref8.deltaScrollLeft,
|
|
2254
|
+
_ref8$allowCreateTrac = _ref8.allowCreateTrack,
|
|
2255
|
+
allowCreateTrack = _ref8$allowCreateTrac === void 0 ? true : _ref8$allowCreateTrac,
|
|
2256
|
+
insertPreview = _ref8.insertPreview,
|
|
2257
|
+
setInsertPreview = _ref8.setInsertPreview,
|
|
2258
|
+
trackPreview = _ref8.trackPreview,
|
|
2259
|
+
setTrackPreview = _ref8.setTrackPreview,
|
|
2260
|
+
containerRef = _ref8.containerRef,
|
|
2261
|
+
selectedActionIds = _ref8.selectedActionIds;
|
|
2232
2262
|
var rowRnd = useRef();
|
|
2233
2263
|
var isDragWhenClick = useRef(false);
|
|
2234
2264
|
var originalPosition = useRef({
|
|
@@ -2374,11 +2404,11 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2374
2404
|
row: row
|
|
2375
2405
|
});
|
|
2376
2406
|
};
|
|
2377
|
-
var handleDrag = function handleDrag(
|
|
2378
|
-
var left =
|
|
2379
|
-
width =
|
|
2380
|
-
top =
|
|
2381
|
-
args = _objectWithoutProperties(
|
|
2407
|
+
var handleDrag = function handleDrag(_ref9) {
|
|
2408
|
+
var left = _ref9.left,
|
|
2409
|
+
width = _ref9.width,
|
|
2410
|
+
top = _ref9.top,
|
|
2411
|
+
args = _objectWithoutProperties(_ref9, _excluded);
|
|
2382
2412
|
isDragWhenClick.current = true;
|
|
2383
2413
|
var currentRange = parserTransformToTime({
|
|
2384
2414
|
left: left,
|
|
@@ -2388,59 +2418,81 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2388
2418
|
scale: scale,
|
|
2389
2419
|
startLeft: startLeft
|
|
2390
2420
|
});
|
|
2391
|
-
var
|
|
2421
|
+
var isSelectionMultiDrag = ((selectedActionIds === null || selectedActionIds === void 0 ? void 0 : selectedActionIds.length) || 0) > 1 && (selectedActionIds === null || selectedActionIds === void 0 ? void 0 : selectedActionIds.includes(action.id));
|
|
2422
|
+
var multiDragConflict = isSelectionMultiDrag ? hasMultiDragConflict({
|
|
2392
2423
|
editorData: editorData,
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
});
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
kind: 'new-row',
|
|
2406
|
-
insertIndex: placement.targetRowIndex,
|
|
2407
|
-
sourceRow: row
|
|
2424
|
+
selectedActionIds: selectedActionIds || [],
|
|
2425
|
+
primaryAction: action,
|
|
2426
|
+
timeOffset: currentRange.start - action.start,
|
|
2427
|
+
rowDelta: Math.round((top || 0) / rowHeight)
|
|
2428
|
+
}) : false;
|
|
2429
|
+
if (multiDragConflict) {
|
|
2430
|
+
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview({
|
|
2431
|
+
actionId: action.id,
|
|
2432
|
+
rowId: row.id,
|
|
2433
|
+
start: action.start,
|
|
2434
|
+
end: action.end,
|
|
2435
|
+
shiftByActionId: {}
|
|
2408
2436
|
});
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2437
|
+
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview(null);
|
|
2438
|
+
} else if (isSelectionMultiDrag) {
|
|
2439
|
+
clearRipplePreview(areaRef.current);
|
|
2440
|
+
}
|
|
2441
|
+
if (!multiDragConflict) {
|
|
2442
|
+
var placement = resolveTargetRowPlacement({
|
|
2412
2443
|
editorData: editorData,
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
end: currentRange.end,
|
|
2444
|
+
row: row,
|
|
2445
|
+
top: top,
|
|
2446
|
+
rowHeight: rowHeight,
|
|
2417
2447
|
allowCreateTrack: allowCreateTrack
|
|
2418
2448
|
});
|
|
2419
|
-
|
|
2449
|
+
var _currentRowIndex = editorData.findIndex(function (item) {
|
|
2450
|
+
return item.id === row.id;
|
|
2451
|
+
});
|
|
2452
|
+
if (placement.needCreateNewRow) {
|
|
2453
|
+
// 鼠标已拖到所有轨道的边界外,直接显示新轨道插入线
|
|
2420
2454
|
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview(null);
|
|
2421
2455
|
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview({
|
|
2422
2456
|
kind: 'new-row',
|
|
2423
|
-
insertIndex:
|
|
2457
|
+
insertIndex: placement.targetRowIndex,
|
|
2424
2458
|
sourceRow: row
|
|
2425
2459
|
});
|
|
2426
2460
|
} else {
|
|
2427
|
-
|
|
2428
|
-
var
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2461
|
+
// 用 smart row 找真实可用行(冲突则往下级联)
|
|
2462
|
+
var smart = resolveSmartRow({
|
|
2463
|
+
editorData: editorData,
|
|
2464
|
+
initialTargetRowIndex: placement.targetRowIndex,
|
|
2465
|
+
actionId: action.id,
|
|
2466
|
+
start: currentRange.start,
|
|
2467
|
+
end: currentRange.end,
|
|
2468
|
+
allowCreateTrack: allowCreateTrack
|
|
2469
|
+
});
|
|
2470
|
+
if (smart.needCreateNewRow) {
|
|
2471
|
+
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview(null);
|
|
2472
|
+
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview({
|
|
2473
|
+
kind: 'new-row',
|
|
2474
|
+
insertIndex: smart.targetRowIndex,
|
|
2475
|
+
sourceRow: row
|
|
2440
2476
|
});
|
|
2441
2477
|
} else {
|
|
2442
|
-
|
|
2443
|
-
|
|
2478
|
+
var targetRow = editorData[smart.targetRowIndex];
|
|
2479
|
+
var isSameRow = smart.targetRowIndex === _currentRowIndex;
|
|
2480
|
+
if (targetRow) {
|
|
2481
|
+
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview({
|
|
2482
|
+
actionId: action.id,
|
|
2483
|
+
rowId: targetRow.id,
|
|
2484
|
+
start: currentRange.start,
|
|
2485
|
+
end: currentRange.end,
|
|
2486
|
+
shiftByActionId: {}
|
|
2487
|
+
});
|
|
2488
|
+
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview(isSameRow ? null : {
|
|
2489
|
+
kind: 'row',
|
|
2490
|
+
rowId: targetRow.id
|
|
2491
|
+
});
|
|
2492
|
+
} else {
|
|
2493
|
+
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview(null);
|
|
2494
|
+
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview(null);
|
|
2495
|
+
}
|
|
2444
2496
|
}
|
|
2445
2497
|
}
|
|
2446
2498
|
}
|
|
@@ -2476,14 +2528,14 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2476
2528
|
}
|
|
2477
2529
|
handleScaleCount(left, width);
|
|
2478
2530
|
};
|
|
2479
|
-
var handleDragEndBase = useCallback(function (
|
|
2531
|
+
var handleDragEndBase = useCallback(function (_ref0) {
|
|
2480
2532
|
var _areaRef$current2;
|
|
2481
|
-
var left =
|
|
2482
|
-
width =
|
|
2483
|
-
top =
|
|
2484
|
-
height =
|
|
2485
|
-
isMultiDrag =
|
|
2486
|
-
fnCallback =
|
|
2533
|
+
var left = _ref0.left,
|
|
2534
|
+
width = _ref0.width,
|
|
2535
|
+
top = _ref0.top,
|
|
2536
|
+
height = _ref0.height,
|
|
2537
|
+
isMultiDrag = _ref0.isMultiDrag,
|
|
2538
|
+
fnCallback = _ref0.fn;
|
|
2487
2539
|
window.dispatchEvent(new CustomEvent('timeline-action-dragging-change', {
|
|
2488
2540
|
detail: false
|
|
2489
2541
|
}));
|
|
@@ -2677,9 +2729,9 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2677
2729
|
dir: dir
|
|
2678
2730
|
});
|
|
2679
2731
|
};
|
|
2680
|
-
var handleResizing = function handleResizing(dir,
|
|
2681
|
-
var left =
|
|
2682
|
-
width =
|
|
2732
|
+
var handleResizing = function handleResizing(dir, _ref1) {
|
|
2733
|
+
var left = _ref1.left,
|
|
2734
|
+
width = _ref1.width;
|
|
2683
2735
|
isDragWhenClick.current = true;
|
|
2684
2736
|
if (onActionResizing) {
|
|
2685
2737
|
var _parserTransformToTim2 = parserTransformToTime({
|
|
@@ -2708,9 +2760,9 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2708
2760
|
});
|
|
2709
2761
|
handleScaleCount(left, width);
|
|
2710
2762
|
};
|
|
2711
|
-
var handleResizeEnd = function handleResizeEnd(dir,
|
|
2712
|
-
var left =
|
|
2713
|
-
width =
|
|
2763
|
+
var handleResizeEnd = function handleResizeEnd(dir, _ref10) {
|
|
2764
|
+
var left = _ref10.left,
|
|
2765
|
+
width = _ref10.width;
|
|
2714
2766
|
// 计算时间
|
|
2715
2767
|
var _parserTransformToTim3 = parserTransformToTime({
|
|
2716
2768
|
left: left,
|
|
@@ -2765,13 +2817,13 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2765
2817
|
});
|
|
2766
2818
|
useEffect(function () {
|
|
2767
2819
|
var handleActionMoveEnd = function handleActionMoveEnd(e) {
|
|
2768
|
-
var
|
|
2769
|
-
left =
|
|
2770
|
-
width =
|
|
2771
|
-
top =
|
|
2772
|
-
height =
|
|
2773
|
-
id =
|
|
2774
|
-
fn =
|
|
2820
|
+
var _ref11 = e.detail || {},
|
|
2821
|
+
left = _ref11.left,
|
|
2822
|
+
width = _ref11.width,
|
|
2823
|
+
top = _ref11.top,
|
|
2824
|
+
height = _ref11.height,
|
|
2825
|
+
id = _ref11.id,
|
|
2826
|
+
fn = _ref11.fn;
|
|
2775
2827
|
if (id === action.id) {
|
|
2776
2828
|
handleDragEnd({
|
|
2777
2829
|
left: left,
|
|
@@ -3155,7 +3207,7 @@ var useRowSelection = function useRowSelection(options) {
|
|
|
3155
3207
|
var handleClickOutside = useCallback(function (target) {
|
|
3156
3208
|
if (disabled) return;
|
|
3157
3209
|
// 如果点击的不是选中的 action 或框选框,清除选择
|
|
3158
|
-
if (!target.closest('.timeline-editor-selection-box') && !target.closest('.timeline-editor-action') && !target.closest('[data-draggable="true"]') && !target.closest('.voice-studio-right-config-panel') && !target.closest('.voice-studio-main-content-panel') && !target.closest('.ant-modal')) {
|
|
3210
|
+
if (!target.closest('.timeline-editor-selection-box') && !target.closest('.timeline-editor-action') && !target.closest('.timeline-editor-cursor') && !target.closest('.timeline-editor-cursor-area') && !target.closest('.timeline-editor-time-area') && !target.closest('[data-draggable="true"]') && !target.closest('.voice-studio-right-config-panel') && !target.closest('.voice-studio-main-content-panel') && !target.closest('.ant-modal')) {
|
|
3159
3211
|
clearSelection();
|
|
3160
3212
|
}
|
|
3161
3213
|
}, [disabled, clearSelection]);
|
|
@@ -4151,7 +4203,7 @@ var EditAreaO = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
4151
4203
|
ref: gridRef,
|
|
4152
4204
|
cellRenderer: cellRenderer,
|
|
4153
4205
|
columnWidth: Math.max(scaleCount * scaleWidth + startLeft, width),
|
|
4154
|
-
width: width,
|
|
4206
|
+
width: Math.max(scaleCount * scaleWidth + startLeft, width),
|
|
4155
4207
|
height: height,
|
|
4156
4208
|
rowHeight: function rowHeight(_ref5) {
|
|
4157
4209
|
var index = _ref5.index;
|
|
@@ -4642,14 +4694,34 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4642
4694
|
return result;
|
|
4643
4695
|
}, [startLeft, scale, scaleWidth, autoReRender]);
|
|
4644
4696
|
/** 设置 scrollLeft */
|
|
4697
|
+
var getMaxScrollLeft = useCallback(function () {
|
|
4698
|
+
if (!Number.isFinite(width) || width <= 0) return 0;
|
|
4699
|
+
return Math.max(scaleCount * scaleWidth + startLeft - width, 0);
|
|
4700
|
+
}, [scaleCount, scaleWidth, startLeft, width]);
|
|
4645
4701
|
var handleDeltaScrollLeft = useCallback(function (delta) {
|
|
4646
4702
|
// 当超过最大距离时,禁止自动滚动
|
|
4647
4703
|
var data = scrollSync.current.state.scrollLeft + delta;
|
|
4648
|
-
|
|
4704
|
+
var maxScrollLeft = getMaxScrollLeft();
|
|
4705
|
+
if (data > maxScrollLeft) return;
|
|
4649
4706
|
scrollSync.current && scrollSync.current.setState({
|
|
4650
4707
|
scrollLeft: Math.max(scrollSync.current.state.scrollLeft + delta, 0)
|
|
4651
4708
|
});
|
|
4652
|
-
}, [
|
|
4709
|
+
}, [getMaxScrollLeft]);
|
|
4710
|
+
useLayoutEffect(function () {
|
|
4711
|
+
var _scrollSync$current$s, _scrollSync$current;
|
|
4712
|
+
var maxScrollLeft = getMaxScrollLeft();
|
|
4713
|
+
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;
|
|
4714
|
+
var nextScrollLeft = Math.min(Math.max(currentScrollLeft, 0), maxScrollLeft);
|
|
4715
|
+
var timelineEl = document.querySelector('.timeline-editor');
|
|
4716
|
+
if (timelineEl && Math.abs(timelineEl.scrollLeft - nextScrollLeft) > 1) {
|
|
4717
|
+
timelineEl.scrollLeft = nextScrollLeft;
|
|
4718
|
+
}
|
|
4719
|
+
if (scrollSync.current && Math.abs(currentScrollLeft - nextScrollLeft) > 1) {
|
|
4720
|
+
scrollSync.current.setState({
|
|
4721
|
+
scrollLeft: nextScrollLeft
|
|
4722
|
+
});
|
|
4723
|
+
}
|
|
4724
|
+
}, [getMaxScrollLeft, scale, scaleWidth, scaleCount, width]);
|
|
4653
4725
|
var handleInitDragLine = useCallback(function (data) {
|
|
4654
4726
|
var _checkedProps$onActio, _checkedProps$onActio2, _dragLineControllerRe;
|
|
4655
4727
|
(_checkedProps$onActio = checkedProps.onActionMoveStart) === null || _checkedProps$onActio === void 0 ? void 0 : _checkedProps$onActio.call(checkedProps, data);
|
|
@@ -4694,6 +4766,8 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4694
4766
|
useEffect(function () {
|
|
4695
4767
|
var handleClickOutside = function handleClickOutside(e) {
|
|
4696
4768
|
var target = e.target;
|
|
4769
|
+
var actionEl = target.closest('.timeline-editor-time-area');
|
|
4770
|
+
if (actionEl) return;
|
|
4697
4771
|
engineRef.current.trigger('mousedown', {
|
|
4698
4772
|
target: target,
|
|
4699
4773
|
evt: e
|
|
@@ -4733,17 +4807,19 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4733
4807
|
},
|
|
4734
4808
|
pause: engineRef.current.pause.bind(engineRef.current),
|
|
4735
4809
|
setScrollLeft: function setScrollLeft(val) {
|
|
4810
|
+
var nextScrollLeft = Math.min(Math.max(val, 0), getMaxScrollLeft());
|
|
4736
4811
|
scrollSync.current && scrollSync.current.setState({
|
|
4737
|
-
scrollLeft:
|
|
4812
|
+
scrollLeft: nextScrollLeft
|
|
4738
4813
|
});
|
|
4739
4814
|
},
|
|
4740
4815
|
setScrollLeftFromTime: function setScrollLeftFromTime(val) {
|
|
4741
4816
|
var containerEl = document.querySelector('.timeline-editor');
|
|
4742
4817
|
if (!containerEl) return;
|
|
4743
4818
|
var left = startLeft + scaleWidth / scale * val;
|
|
4744
|
-
|
|
4819
|
+
var nextScrollLeft = Math.min(Math.max(left, 0), getMaxScrollLeft());
|
|
4820
|
+
containerEl.scrollLeft = nextScrollLeft;
|
|
4745
4821
|
scrollSync.current && scrollSync.current.setState({
|
|
4746
|
-
scrollLeft:
|
|
4822
|
+
scrollLeft: nextScrollLeft
|
|
4747
4823
|
});
|
|
4748
4824
|
},
|
|
4749
4825
|
setScrollTop: function setScrollTop(val) {
|
|
@@ -4875,7 +4951,8 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4875
4951
|
id: "time-editor-container",
|
|
4876
4952
|
ref: containerRef,
|
|
4877
4953
|
style: {
|
|
4878
|
-
height: '100%'
|
|
4954
|
+
height: '100%',
|
|
4955
|
+
background: '#fff'
|
|
4879
4956
|
},
|
|
4880
4957
|
onClick: onClickTimeline
|
|
4881
4958
|
}, Object.keys(groupedData).map(function (key, index) {
|
package/dist/index.js
CHANGED
|
@@ -2190,6 +2190,36 @@ var resolveSmartRow = function resolveSmartRow(_ref2) {
|
|
|
2190
2190
|
needCreateNewRow: false
|
|
2191
2191
|
};
|
|
2192
2192
|
};
|
|
2193
|
+
var hasMultiDragConflict = function hasMultiDragConflict(_ref3) {
|
|
2194
|
+
var editorData = _ref3.editorData,
|
|
2195
|
+
selectedActionIds = _ref3.selectedActionIds,
|
|
2196
|
+
primaryAction = _ref3.primaryAction,
|
|
2197
|
+
timeOffset = _ref3.timeOffset,
|
|
2198
|
+
rowDelta = _ref3.rowDelta;
|
|
2199
|
+
var selectedSet = new Set(selectedActionIds);
|
|
2200
|
+
return selectedActionIds.some(function (selectedId) {
|
|
2201
|
+
var sourceRowIndex = -1;
|
|
2202
|
+
var sourceAction;
|
|
2203
|
+
editorData.some(function (candidateRow, rowIndex) {
|
|
2204
|
+
var action = candidateRow.actions.find(function (item) {
|
|
2205
|
+
return item.id === selectedId;
|
|
2206
|
+
});
|
|
2207
|
+
if (!action) return false;
|
|
2208
|
+
sourceRowIndex = rowIndex;
|
|
2209
|
+
sourceAction = action;
|
|
2210
|
+
return true;
|
|
2211
|
+
});
|
|
2212
|
+
var initialAction = sourceAction || (selectedId === primaryAction.id ? primaryAction : undefined);
|
|
2213
|
+
if (!initialAction || sourceRowIndex < 0) return true;
|
|
2214
|
+
var targetRow = editorData[sourceRowIndex + rowDelta];
|
|
2215
|
+
if (!targetRow) return true;
|
|
2216
|
+
var nextStart = initialAction.start + timeOffset;
|
|
2217
|
+
var nextEnd = initialAction.end + timeOffset;
|
|
2218
|
+
return targetRow.actions.some(function (item) {
|
|
2219
|
+
return !selectedSet.has(item.id) && item.start < nextEnd && item.end > nextStart;
|
|
2220
|
+
});
|
|
2221
|
+
});
|
|
2222
|
+
};
|
|
2193
2223
|
var clearRipplePreview = function clearRipplePreview(container) {
|
|
2194
2224
|
if (!container) return;
|
|
2195
2225
|
var previewNodes = container.querySelectorAll('[data-ripple-preview="true"]');
|
|
@@ -2200,45 +2230,45 @@ var clearRipplePreview = function clearRipplePreview(container) {
|
|
|
2200
2230
|
node.removeAttribute('data-ripple-preview');
|
|
2201
2231
|
});
|
|
2202
2232
|
};
|
|
2203
|
-
var EditActionO = function EditActionO(
|
|
2204
|
-
var editorData =
|
|
2205
|
-
row =
|
|
2206
|
-
action =
|
|
2207
|
-
effects =
|
|
2208
|
-
rowHeight =
|
|
2209
|
-
scale =
|
|
2210
|
-
scaleWidth =
|
|
2211
|
-
scaleSplitCount =
|
|
2212
|
-
startLeft =
|
|
2213
|
-
gridSnap =
|
|
2214
|
-
disableDrag =
|
|
2215
|
-
scaleCount =
|
|
2216
|
-
maxScaleCount =
|
|
2217
|
-
setScaleCount =
|
|
2218
|
-
onActionMoveStart =
|
|
2219
|
-
onActionMoving =
|
|
2220
|
-
onActionMoveEnd =
|
|
2221
|
-
onActionResizeStart =
|
|
2222
|
-
onActionResizeEnd =
|
|
2223
|
-
onActionResizing =
|
|
2224
|
-
dragLineData =
|
|
2225
|
-
setEditorData =
|
|
2226
|
-
onClickAction =
|
|
2227
|
-
onClickActionOnly =
|
|
2228
|
-
onDoubleClickAction =
|
|
2229
|
-
onContextMenuAction =
|
|
2230
|
-
getActionRender =
|
|
2231
|
-
handleTime =
|
|
2232
|
-
areaRef =
|
|
2233
|
-
deltaScrollLeft =
|
|
2234
|
-
|
|
2235
|
-
allowCreateTrack =
|
|
2236
|
-
insertPreview =
|
|
2237
|
-
setInsertPreview =
|
|
2238
|
-
trackPreview =
|
|
2239
|
-
setTrackPreview =
|
|
2240
|
-
containerRef =
|
|
2241
|
-
selectedActionIds =
|
|
2233
|
+
var EditActionO = function EditActionO(_ref8) {
|
|
2234
|
+
var editorData = _ref8.editorData,
|
|
2235
|
+
row = _ref8.row,
|
|
2236
|
+
action = _ref8.action,
|
|
2237
|
+
effects = _ref8.effects,
|
|
2238
|
+
rowHeight = _ref8.rowHeight,
|
|
2239
|
+
scale = _ref8.scale,
|
|
2240
|
+
scaleWidth = _ref8.scaleWidth,
|
|
2241
|
+
scaleSplitCount = _ref8.scaleSplitCount,
|
|
2242
|
+
startLeft = _ref8.startLeft,
|
|
2243
|
+
gridSnap = _ref8.gridSnap,
|
|
2244
|
+
disableDrag = _ref8.disableDrag,
|
|
2245
|
+
scaleCount = _ref8.scaleCount,
|
|
2246
|
+
maxScaleCount = _ref8.maxScaleCount,
|
|
2247
|
+
setScaleCount = _ref8.setScaleCount,
|
|
2248
|
+
onActionMoveStart = _ref8.onActionMoveStart,
|
|
2249
|
+
onActionMoving = _ref8.onActionMoving,
|
|
2250
|
+
onActionMoveEnd = _ref8.onActionMoveEnd,
|
|
2251
|
+
onActionResizeStart = _ref8.onActionResizeStart,
|
|
2252
|
+
onActionResizeEnd = _ref8.onActionResizeEnd,
|
|
2253
|
+
onActionResizing = _ref8.onActionResizing,
|
|
2254
|
+
dragLineData = _ref8.dragLineData,
|
|
2255
|
+
setEditorData = _ref8.setEditorData,
|
|
2256
|
+
onClickAction = _ref8.onClickAction,
|
|
2257
|
+
onClickActionOnly = _ref8.onClickActionOnly,
|
|
2258
|
+
onDoubleClickAction = _ref8.onDoubleClickAction,
|
|
2259
|
+
onContextMenuAction = _ref8.onContextMenuAction,
|
|
2260
|
+
getActionRender = _ref8.getActionRender,
|
|
2261
|
+
handleTime = _ref8.handleTime,
|
|
2262
|
+
areaRef = _ref8.areaRef,
|
|
2263
|
+
deltaScrollLeft = _ref8.deltaScrollLeft,
|
|
2264
|
+
_ref8$allowCreateTrac = _ref8.allowCreateTrack,
|
|
2265
|
+
allowCreateTrack = _ref8$allowCreateTrac === void 0 ? true : _ref8$allowCreateTrac,
|
|
2266
|
+
insertPreview = _ref8.insertPreview,
|
|
2267
|
+
setInsertPreview = _ref8.setInsertPreview,
|
|
2268
|
+
trackPreview = _ref8.trackPreview,
|
|
2269
|
+
setTrackPreview = _ref8.setTrackPreview,
|
|
2270
|
+
containerRef = _ref8.containerRef,
|
|
2271
|
+
selectedActionIds = _ref8.selectedActionIds;
|
|
2242
2272
|
var rowRnd = React.useRef();
|
|
2243
2273
|
var isDragWhenClick = React.useRef(false);
|
|
2244
2274
|
var originalPosition = React.useRef({
|
|
@@ -2384,11 +2414,11 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2384
2414
|
row: row
|
|
2385
2415
|
});
|
|
2386
2416
|
};
|
|
2387
|
-
var handleDrag = function handleDrag(
|
|
2388
|
-
var left =
|
|
2389
|
-
width =
|
|
2390
|
-
top =
|
|
2391
|
-
args = _objectWithoutProperties(
|
|
2417
|
+
var handleDrag = function handleDrag(_ref9) {
|
|
2418
|
+
var left = _ref9.left,
|
|
2419
|
+
width = _ref9.width,
|
|
2420
|
+
top = _ref9.top,
|
|
2421
|
+
args = _objectWithoutProperties(_ref9, _excluded);
|
|
2392
2422
|
isDragWhenClick.current = true;
|
|
2393
2423
|
var currentRange = parserTransformToTime({
|
|
2394
2424
|
left: left,
|
|
@@ -2398,59 +2428,81 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2398
2428
|
scale: scale,
|
|
2399
2429
|
startLeft: startLeft
|
|
2400
2430
|
});
|
|
2401
|
-
var
|
|
2431
|
+
var isSelectionMultiDrag = ((selectedActionIds === null || selectedActionIds === void 0 ? void 0 : selectedActionIds.length) || 0) > 1 && (selectedActionIds === null || selectedActionIds === void 0 ? void 0 : selectedActionIds.includes(action.id));
|
|
2432
|
+
var multiDragConflict = isSelectionMultiDrag ? hasMultiDragConflict({
|
|
2402
2433
|
editorData: editorData,
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
});
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
kind: 'new-row',
|
|
2416
|
-
insertIndex: placement.targetRowIndex,
|
|
2417
|
-
sourceRow: row
|
|
2434
|
+
selectedActionIds: selectedActionIds || [],
|
|
2435
|
+
primaryAction: action,
|
|
2436
|
+
timeOffset: currentRange.start - action.start,
|
|
2437
|
+
rowDelta: Math.round((top || 0) / rowHeight)
|
|
2438
|
+
}) : false;
|
|
2439
|
+
if (multiDragConflict) {
|
|
2440
|
+
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview({
|
|
2441
|
+
actionId: action.id,
|
|
2442
|
+
rowId: row.id,
|
|
2443
|
+
start: action.start,
|
|
2444
|
+
end: action.end,
|
|
2445
|
+
shiftByActionId: {}
|
|
2418
2446
|
});
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2447
|
+
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview(null);
|
|
2448
|
+
} else if (isSelectionMultiDrag) {
|
|
2449
|
+
clearRipplePreview(areaRef.current);
|
|
2450
|
+
}
|
|
2451
|
+
if (!multiDragConflict) {
|
|
2452
|
+
var placement = resolveTargetRowPlacement({
|
|
2422
2453
|
editorData: editorData,
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
end: currentRange.end,
|
|
2454
|
+
row: row,
|
|
2455
|
+
top: top,
|
|
2456
|
+
rowHeight: rowHeight,
|
|
2427
2457
|
allowCreateTrack: allowCreateTrack
|
|
2428
2458
|
});
|
|
2429
|
-
|
|
2459
|
+
var _currentRowIndex = editorData.findIndex(function (item) {
|
|
2460
|
+
return item.id === row.id;
|
|
2461
|
+
});
|
|
2462
|
+
if (placement.needCreateNewRow) {
|
|
2463
|
+
// 鼠标已拖到所有轨道的边界外,直接显示新轨道插入线
|
|
2430
2464
|
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview(null);
|
|
2431
2465
|
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview({
|
|
2432
2466
|
kind: 'new-row',
|
|
2433
|
-
insertIndex:
|
|
2467
|
+
insertIndex: placement.targetRowIndex,
|
|
2434
2468
|
sourceRow: row
|
|
2435
2469
|
});
|
|
2436
2470
|
} else {
|
|
2437
|
-
|
|
2438
|
-
var
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2471
|
+
// 用 smart row 找真实可用行(冲突则往下级联)
|
|
2472
|
+
var smart = resolveSmartRow({
|
|
2473
|
+
editorData: editorData,
|
|
2474
|
+
initialTargetRowIndex: placement.targetRowIndex,
|
|
2475
|
+
actionId: action.id,
|
|
2476
|
+
start: currentRange.start,
|
|
2477
|
+
end: currentRange.end,
|
|
2478
|
+
allowCreateTrack: allowCreateTrack
|
|
2479
|
+
});
|
|
2480
|
+
if (smart.needCreateNewRow) {
|
|
2481
|
+
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview(null);
|
|
2482
|
+
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview({
|
|
2483
|
+
kind: 'new-row',
|
|
2484
|
+
insertIndex: smart.targetRowIndex,
|
|
2485
|
+
sourceRow: row
|
|
2450
2486
|
});
|
|
2451
2487
|
} else {
|
|
2452
|
-
|
|
2453
|
-
|
|
2488
|
+
var targetRow = editorData[smart.targetRowIndex];
|
|
2489
|
+
var isSameRow = smart.targetRowIndex === _currentRowIndex;
|
|
2490
|
+
if (targetRow) {
|
|
2491
|
+
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview({
|
|
2492
|
+
actionId: action.id,
|
|
2493
|
+
rowId: targetRow.id,
|
|
2494
|
+
start: currentRange.start,
|
|
2495
|
+
end: currentRange.end,
|
|
2496
|
+
shiftByActionId: {}
|
|
2497
|
+
});
|
|
2498
|
+
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview(isSameRow ? null : {
|
|
2499
|
+
kind: 'row',
|
|
2500
|
+
rowId: targetRow.id
|
|
2501
|
+
});
|
|
2502
|
+
} else {
|
|
2503
|
+
setInsertPreview === null || setInsertPreview === void 0 ? void 0 : setInsertPreview(null);
|
|
2504
|
+
setTrackPreview === null || setTrackPreview === void 0 ? void 0 : setTrackPreview(null);
|
|
2505
|
+
}
|
|
2454
2506
|
}
|
|
2455
2507
|
}
|
|
2456
2508
|
}
|
|
@@ -2486,14 +2538,14 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2486
2538
|
}
|
|
2487
2539
|
handleScaleCount(left, width);
|
|
2488
2540
|
};
|
|
2489
|
-
var handleDragEndBase = React.useCallback(function (
|
|
2541
|
+
var handleDragEndBase = React.useCallback(function (_ref0) {
|
|
2490
2542
|
var _areaRef$current2;
|
|
2491
|
-
var left =
|
|
2492
|
-
width =
|
|
2493
|
-
top =
|
|
2494
|
-
height =
|
|
2495
|
-
isMultiDrag =
|
|
2496
|
-
fnCallback =
|
|
2543
|
+
var left = _ref0.left,
|
|
2544
|
+
width = _ref0.width,
|
|
2545
|
+
top = _ref0.top,
|
|
2546
|
+
height = _ref0.height,
|
|
2547
|
+
isMultiDrag = _ref0.isMultiDrag,
|
|
2548
|
+
fnCallback = _ref0.fn;
|
|
2497
2549
|
window.dispatchEvent(new CustomEvent('timeline-action-dragging-change', {
|
|
2498
2550
|
detail: false
|
|
2499
2551
|
}));
|
|
@@ -2687,9 +2739,9 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2687
2739
|
dir: dir
|
|
2688
2740
|
});
|
|
2689
2741
|
};
|
|
2690
|
-
var handleResizing = function handleResizing(dir,
|
|
2691
|
-
var left =
|
|
2692
|
-
width =
|
|
2742
|
+
var handleResizing = function handleResizing(dir, _ref1) {
|
|
2743
|
+
var left = _ref1.left,
|
|
2744
|
+
width = _ref1.width;
|
|
2693
2745
|
isDragWhenClick.current = true;
|
|
2694
2746
|
if (onActionResizing) {
|
|
2695
2747
|
var _parserTransformToTim2 = parserTransformToTime({
|
|
@@ -2718,9 +2770,9 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2718
2770
|
});
|
|
2719
2771
|
handleScaleCount(left, width);
|
|
2720
2772
|
};
|
|
2721
|
-
var handleResizeEnd = function handleResizeEnd(dir,
|
|
2722
|
-
var left =
|
|
2723
|
-
width =
|
|
2773
|
+
var handleResizeEnd = function handleResizeEnd(dir, _ref10) {
|
|
2774
|
+
var left = _ref10.left,
|
|
2775
|
+
width = _ref10.width;
|
|
2724
2776
|
// 计算时间
|
|
2725
2777
|
var _parserTransformToTim3 = parserTransformToTime({
|
|
2726
2778
|
left: left,
|
|
@@ -2775,13 +2827,13 @@ var EditActionO = function EditActionO(_ref7) {
|
|
|
2775
2827
|
});
|
|
2776
2828
|
React.useEffect(function () {
|
|
2777
2829
|
var handleActionMoveEnd = function handleActionMoveEnd(e) {
|
|
2778
|
-
var
|
|
2779
|
-
left =
|
|
2780
|
-
width =
|
|
2781
|
-
top =
|
|
2782
|
-
height =
|
|
2783
|
-
id =
|
|
2784
|
-
fn =
|
|
2830
|
+
var _ref11 = e.detail || {},
|
|
2831
|
+
left = _ref11.left,
|
|
2832
|
+
width = _ref11.width,
|
|
2833
|
+
top = _ref11.top,
|
|
2834
|
+
height = _ref11.height,
|
|
2835
|
+
id = _ref11.id,
|
|
2836
|
+
fn = _ref11.fn;
|
|
2785
2837
|
if (id === action.id) {
|
|
2786
2838
|
handleDragEnd({
|
|
2787
2839
|
left: left,
|
|
@@ -3165,7 +3217,7 @@ var useRowSelection = function useRowSelection(options) {
|
|
|
3165
3217
|
var handleClickOutside = React.useCallback(function (target) {
|
|
3166
3218
|
if (disabled) return;
|
|
3167
3219
|
// 如果点击的不是选中的 action 或框选框,清除选择
|
|
3168
|
-
if (!target.closest('.timeline-editor-selection-box') && !target.closest('.timeline-editor-action') && !target.closest('[data-draggable="true"]') && !target.closest('.voice-studio-right-config-panel') && !target.closest('.voice-studio-main-content-panel') && !target.closest('.ant-modal')) {
|
|
3220
|
+
if (!target.closest('.timeline-editor-selection-box') && !target.closest('.timeline-editor-action') && !target.closest('.timeline-editor-cursor') && !target.closest('.timeline-editor-cursor-area') && !target.closest('.timeline-editor-time-area') && !target.closest('[data-draggable="true"]') && !target.closest('.voice-studio-right-config-panel') && !target.closest('.voice-studio-main-content-panel') && !target.closest('.ant-modal')) {
|
|
3169
3221
|
clearSelection();
|
|
3170
3222
|
}
|
|
3171
3223
|
}, [disabled, clearSelection]);
|
|
@@ -4161,7 +4213,7 @@ var EditAreaO = /*#__PURE__*/React__default['default'].forwardRef(function (prop
|
|
|
4161
4213
|
ref: gridRef,
|
|
4162
4214
|
cellRenderer: cellRenderer,
|
|
4163
4215
|
columnWidth: Math.max(scaleCount * scaleWidth + startLeft, width),
|
|
4164
|
-
width: width,
|
|
4216
|
+
width: Math.max(scaleCount * scaleWidth + startLeft, width),
|
|
4165
4217
|
height: height,
|
|
4166
4218
|
rowHeight: function rowHeight(_ref5) {
|
|
4167
4219
|
var index = _ref5.index;
|
|
@@ -4652,14 +4704,34 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4652
4704
|
return result;
|
|
4653
4705
|
}, [startLeft, scale, scaleWidth, autoReRender]);
|
|
4654
4706
|
/** 设置 scrollLeft */
|
|
4707
|
+
var getMaxScrollLeft = React.useCallback(function () {
|
|
4708
|
+
if (!Number.isFinite(width) || width <= 0) return 0;
|
|
4709
|
+
return Math.max(scaleCount * scaleWidth + startLeft - width, 0);
|
|
4710
|
+
}, [scaleCount, scaleWidth, startLeft, width]);
|
|
4655
4711
|
var handleDeltaScrollLeft = React.useCallback(function (delta) {
|
|
4656
4712
|
// 当超过最大距离时,禁止自动滚动
|
|
4657
4713
|
var data = scrollSync.current.state.scrollLeft + delta;
|
|
4658
|
-
|
|
4714
|
+
var maxScrollLeft = getMaxScrollLeft();
|
|
4715
|
+
if (data > maxScrollLeft) return;
|
|
4659
4716
|
scrollSync.current && scrollSync.current.setState({
|
|
4660
4717
|
scrollLeft: Math.max(scrollSync.current.state.scrollLeft + delta, 0)
|
|
4661
4718
|
});
|
|
4662
|
-
}, [
|
|
4719
|
+
}, [getMaxScrollLeft]);
|
|
4720
|
+
React.useLayoutEffect(function () {
|
|
4721
|
+
var _scrollSync$current$s, _scrollSync$current;
|
|
4722
|
+
var maxScrollLeft = getMaxScrollLeft();
|
|
4723
|
+
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;
|
|
4724
|
+
var nextScrollLeft = Math.min(Math.max(currentScrollLeft, 0), maxScrollLeft);
|
|
4725
|
+
var timelineEl = document.querySelector('.timeline-editor');
|
|
4726
|
+
if (timelineEl && Math.abs(timelineEl.scrollLeft - nextScrollLeft) > 1) {
|
|
4727
|
+
timelineEl.scrollLeft = nextScrollLeft;
|
|
4728
|
+
}
|
|
4729
|
+
if (scrollSync.current && Math.abs(currentScrollLeft - nextScrollLeft) > 1) {
|
|
4730
|
+
scrollSync.current.setState({
|
|
4731
|
+
scrollLeft: nextScrollLeft
|
|
4732
|
+
});
|
|
4733
|
+
}
|
|
4734
|
+
}, [getMaxScrollLeft, scale, scaleWidth, scaleCount, width]);
|
|
4663
4735
|
var handleInitDragLine = React.useCallback(function (data) {
|
|
4664
4736
|
var _checkedProps$onActio, _checkedProps$onActio2, _dragLineControllerRe;
|
|
4665
4737
|
(_checkedProps$onActio = checkedProps.onActionMoveStart) === null || _checkedProps$onActio === void 0 ? void 0 : _checkedProps$onActio.call(checkedProps, data);
|
|
@@ -4704,6 +4776,8 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4704
4776
|
React.useEffect(function () {
|
|
4705
4777
|
var handleClickOutside = function handleClickOutside(e) {
|
|
4706
4778
|
var target = e.target;
|
|
4779
|
+
var actionEl = target.closest('.timeline-editor-time-area');
|
|
4780
|
+
if (actionEl) return;
|
|
4707
4781
|
engineRef.current.trigger('mousedown', {
|
|
4708
4782
|
target: target,
|
|
4709
4783
|
evt: e
|
|
@@ -4743,17 +4817,19 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4743
4817
|
},
|
|
4744
4818
|
pause: engineRef.current.pause.bind(engineRef.current),
|
|
4745
4819
|
setScrollLeft: function setScrollLeft(val) {
|
|
4820
|
+
var nextScrollLeft = Math.min(Math.max(val, 0), getMaxScrollLeft());
|
|
4746
4821
|
scrollSync.current && scrollSync.current.setState({
|
|
4747
|
-
scrollLeft:
|
|
4822
|
+
scrollLeft: nextScrollLeft
|
|
4748
4823
|
});
|
|
4749
4824
|
},
|
|
4750
4825
|
setScrollLeftFromTime: function setScrollLeftFromTime(val) {
|
|
4751
4826
|
var containerEl = document.querySelector('.timeline-editor');
|
|
4752
4827
|
if (!containerEl) return;
|
|
4753
4828
|
var left = startLeft + scaleWidth / scale * val;
|
|
4754
|
-
|
|
4829
|
+
var nextScrollLeft = Math.min(Math.max(left, 0), getMaxScrollLeft());
|
|
4830
|
+
containerEl.scrollLeft = nextScrollLeft;
|
|
4755
4831
|
scrollSync.current && scrollSync.current.setState({
|
|
4756
|
-
scrollLeft:
|
|
4832
|
+
scrollLeft: nextScrollLeft
|
|
4757
4833
|
});
|
|
4758
4834
|
},
|
|
4759
4835
|
setScrollTop: function setScrollTop(val) {
|
|
@@ -4885,7 +4961,8 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4885
4961
|
id: "time-editor-container",
|
|
4886
4962
|
ref: containerRef,
|
|
4887
4963
|
style: {
|
|
4888
|
-
height: '100%'
|
|
4964
|
+
height: '100%',
|
|
4965
|
+
background: '#fff'
|
|
4889
4966
|
},
|
|
4890
4967
|
onClick: onClickTimeline
|
|
4891
4968
|
}, Object.keys(groupedData).map(function (key, index) {
|