sense-react-timeline-editor 1.1.22 → 1.1.24
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 +200 -123
- package/dist/index.js +200 -123
- 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;
|
|
@@ -4311,13 +4363,14 @@ var TimeArea = function TimeArea(_ref) {
|
|
|
4311
4363
|
height: height
|
|
4312
4364
|
},
|
|
4313
4365
|
onClick: function onClick(e) {
|
|
4366
|
+
var _timelineEditorEl$scr;
|
|
4314
4367
|
if (hideCursor) return;
|
|
4368
|
+
var timelineEditorEl = document.querySelector('.timeline-editor');
|
|
4315
4369
|
var rect = e.currentTarget.getBoundingClientRect();
|
|
4316
4370
|
var position = e.clientX - rect.x;
|
|
4317
|
-
var
|
|
4318
|
-
|
|
4371
|
+
var actualScrollLeft = (_timelineEditorEl$scr = timelineEditorEl === null || timelineEditorEl === void 0 ? void 0 : timelineEditorEl.scrollLeft) !== null && _timelineEditorEl$scr !== void 0 ? _timelineEditorEl$scr : scrollLeft;
|
|
4372
|
+
var left = Math.max(position + actualScrollLeft, startLeft);
|
|
4319
4373
|
if (left > maxScaleCount * scaleWidth + startLeft) return;
|
|
4320
|
-
// if (left > maxScaleCount * scaleWidth + startLeft - scrollLeft) return;
|
|
4321
4374
|
var time = parserPixelToTime(left, {
|
|
4322
4375
|
startLeft: startLeft,
|
|
4323
4376
|
scale: scale,
|
|
@@ -4642,14 +4695,34 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4642
4695
|
return result;
|
|
4643
4696
|
}, [startLeft, scale, scaleWidth, autoReRender]);
|
|
4644
4697
|
/** 设置 scrollLeft */
|
|
4698
|
+
var getMaxScrollLeft = useCallback(function () {
|
|
4699
|
+
if (!Number.isFinite(width) || width <= 0) return 0;
|
|
4700
|
+
return Math.max(scaleCount * scaleWidth + startLeft - width, 0);
|
|
4701
|
+
}, [scaleCount, scaleWidth, startLeft, width]);
|
|
4645
4702
|
var handleDeltaScrollLeft = useCallback(function (delta) {
|
|
4646
4703
|
// 当超过最大距离时,禁止自动滚动
|
|
4647
4704
|
var data = scrollSync.current.state.scrollLeft + delta;
|
|
4648
|
-
|
|
4705
|
+
var maxScrollLeft = getMaxScrollLeft();
|
|
4706
|
+
if (data > maxScrollLeft) return;
|
|
4649
4707
|
scrollSync.current && scrollSync.current.setState({
|
|
4650
4708
|
scrollLeft: Math.max(scrollSync.current.state.scrollLeft + delta, 0)
|
|
4651
4709
|
});
|
|
4652
|
-
}, [
|
|
4710
|
+
}, [getMaxScrollLeft]);
|
|
4711
|
+
useLayoutEffect(function () {
|
|
4712
|
+
var _scrollSync$current$s, _scrollSync$current;
|
|
4713
|
+
var maxScrollLeft = getMaxScrollLeft();
|
|
4714
|
+
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;
|
|
4715
|
+
var nextScrollLeft = Math.min(Math.max(currentScrollLeft, 0), maxScrollLeft);
|
|
4716
|
+
var timelineEl = document.querySelector('.timeline-editor');
|
|
4717
|
+
if (timelineEl && Math.abs(timelineEl.scrollLeft - nextScrollLeft) > 1) {
|
|
4718
|
+
timelineEl.scrollLeft = nextScrollLeft;
|
|
4719
|
+
}
|
|
4720
|
+
if (scrollSync.current && Math.abs(currentScrollLeft - nextScrollLeft) > 1) {
|
|
4721
|
+
scrollSync.current.setState({
|
|
4722
|
+
scrollLeft: nextScrollLeft
|
|
4723
|
+
});
|
|
4724
|
+
}
|
|
4725
|
+
}, [getMaxScrollLeft, scale, scaleWidth, scaleCount, width]);
|
|
4653
4726
|
var handleInitDragLine = useCallback(function (data) {
|
|
4654
4727
|
var _checkedProps$onActio, _checkedProps$onActio2, _dragLineControllerRe;
|
|
4655
4728
|
(_checkedProps$onActio = checkedProps.onActionMoveStart) === null || _checkedProps$onActio === void 0 ? void 0 : _checkedProps$onActio.call(checkedProps, data);
|
|
@@ -4735,17 +4808,19 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4735
4808
|
},
|
|
4736
4809
|
pause: engineRef.current.pause.bind(engineRef.current),
|
|
4737
4810
|
setScrollLeft: function setScrollLeft(val) {
|
|
4811
|
+
var nextScrollLeft = Math.min(Math.max(val, 0), getMaxScrollLeft());
|
|
4738
4812
|
scrollSync.current && scrollSync.current.setState({
|
|
4739
|
-
scrollLeft:
|
|
4813
|
+
scrollLeft: nextScrollLeft
|
|
4740
4814
|
});
|
|
4741
4815
|
},
|
|
4742
4816
|
setScrollLeftFromTime: function setScrollLeftFromTime(val) {
|
|
4743
4817
|
var containerEl = document.querySelector('.timeline-editor');
|
|
4744
4818
|
if (!containerEl) return;
|
|
4745
4819
|
var left = startLeft + scaleWidth / scale * val;
|
|
4746
|
-
|
|
4820
|
+
var nextScrollLeft = Math.min(Math.max(left, 0), getMaxScrollLeft());
|
|
4821
|
+
containerEl.scrollLeft = nextScrollLeft;
|
|
4747
4822
|
scrollSync.current && scrollSync.current.setState({
|
|
4748
|
-
scrollLeft:
|
|
4823
|
+
scrollLeft: nextScrollLeft
|
|
4749
4824
|
});
|
|
4750
4825
|
},
|
|
4751
4826
|
setScrollTop: function setScrollTop(val) {
|
|
@@ -4756,11 +4831,13 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4756
4831
|
};
|
|
4757
4832
|
});
|
|
4758
4833
|
var onClickTimeline = useCallback(function (e) {
|
|
4759
|
-
var _e$target;
|
|
4834
|
+
var _ref2, _timelineEditorEl$scr, _scrollSync$current2, _e$target;
|
|
4760
4835
|
if (!domRef.current) return;
|
|
4836
|
+
var timelineEditorEl = document.querySelector('.timeline-editor');
|
|
4761
4837
|
var rect = domRef.current.getBoundingClientRect();
|
|
4762
4838
|
var position = e.clientX - rect.x;
|
|
4763
|
-
var
|
|
4839
|
+
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;
|
|
4840
|
+
var left = position + scrollLeft;
|
|
4764
4841
|
var time = parserPixelToTime(left, {
|
|
4765
4842
|
startLeft: startLeft,
|
|
4766
4843
|
scale: scale,
|
|
@@ -4830,9 +4907,9 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4830
4907
|
className: "".concat(className || '', " ").concat(theme || '', " ").concat(PREFIX, " ").concat(disableDrag ? PREFIX + '-disable' : '')
|
|
4831
4908
|
}, /*#__PURE__*/React.createElement(ScrollSync, {
|
|
4832
4909
|
ref: scrollSync
|
|
4833
|
-
}, function (
|
|
4834
|
-
var scrollTop =
|
|
4835
|
-
_onScroll =
|
|
4910
|
+
}, function (_ref3) {
|
|
4911
|
+
var scrollTop = _ref3.scrollTop,
|
|
4912
|
+
_onScroll = _ref3.onScroll;
|
|
4836
4913
|
var scrollLeft = (containerEl === null || containerEl === void 0 ? void 0 : containerEl.scrollLeft) || 0;
|
|
4837
4914
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TimeArea, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
4838
4915
|
timelineWidth: width,
|
|
@@ -4847,8 +4924,8 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4847
4924
|
cursorRef: cursorRef
|
|
4848
4925
|
})), areaCount === 1 ? (/*#__PURE__*/React.createElement(EditArea, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
4849
4926
|
timelineWidth: width,
|
|
4850
|
-
ref: function ref(
|
|
4851
|
-
return areaRef.current =
|
|
4927
|
+
ref: function ref(_ref4) {
|
|
4928
|
+
return areaRef.current = _ref4 === null || _ref4 === void 0 ? void 0 : _ref4.domRef.current;
|
|
4852
4929
|
},
|
|
4853
4930
|
disableDrag: disableDrag || isPlaying,
|
|
4854
4931
|
editorData: editorData,
|
|
@@ -4909,8 +4986,8 @@ var Timeline = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (p
|
|
|
4909
4986
|
}, checkedProps), {}, {
|
|
4910
4987
|
className: index !== 0 ? "no-flex ".concat(key, " ").concat(index, " overflow-hidden") : "overflow-hidden ".concat(key, " ").concat(index),
|
|
4911
4988
|
timelineWidth: width,
|
|
4912
|
-
ref: function ref(
|
|
4913
|
-
return areaRef.current =
|
|
4989
|
+
ref: function ref(_ref5) {
|
|
4990
|
+
return areaRef.current = _ref5 === null || _ref5 === void 0 ? void 0 : _ref5.domRef.current;
|
|
4914
4991
|
},
|
|
4915
4992
|
disableDrag: disableDrag || isPlaying,
|
|
4916
4993
|
editorData: groupedData[key],
|
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;
|
|
@@ -4321,13 +4373,14 @@ var TimeArea = function TimeArea(_ref) {
|
|
|
4321
4373
|
height: height
|
|
4322
4374
|
},
|
|
4323
4375
|
onClick: function onClick(e) {
|
|
4376
|
+
var _timelineEditorEl$scr;
|
|
4324
4377
|
if (hideCursor) return;
|
|
4378
|
+
var timelineEditorEl = document.querySelector('.timeline-editor');
|
|
4325
4379
|
var rect = e.currentTarget.getBoundingClientRect();
|
|
4326
4380
|
var position = e.clientX - rect.x;
|
|
4327
|
-
var
|
|
4328
|
-
|
|
4381
|
+
var actualScrollLeft = (_timelineEditorEl$scr = timelineEditorEl === null || timelineEditorEl === void 0 ? void 0 : timelineEditorEl.scrollLeft) !== null && _timelineEditorEl$scr !== void 0 ? _timelineEditorEl$scr : scrollLeft;
|
|
4382
|
+
var left = Math.max(position + actualScrollLeft, startLeft);
|
|
4329
4383
|
if (left > maxScaleCount * scaleWidth + startLeft) return;
|
|
4330
|
-
// if (left > maxScaleCount * scaleWidth + startLeft - scrollLeft) return;
|
|
4331
4384
|
var time = parserPixelToTime(left, {
|
|
4332
4385
|
startLeft: startLeft,
|
|
4333
4386
|
scale: scale,
|
|
@@ -4652,14 +4705,34 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4652
4705
|
return result;
|
|
4653
4706
|
}, [startLeft, scale, scaleWidth, autoReRender]);
|
|
4654
4707
|
/** 设置 scrollLeft */
|
|
4708
|
+
var getMaxScrollLeft = React.useCallback(function () {
|
|
4709
|
+
if (!Number.isFinite(width) || width <= 0) return 0;
|
|
4710
|
+
return Math.max(scaleCount * scaleWidth + startLeft - width, 0);
|
|
4711
|
+
}, [scaleCount, scaleWidth, startLeft, width]);
|
|
4655
4712
|
var handleDeltaScrollLeft = React.useCallback(function (delta) {
|
|
4656
4713
|
// 当超过最大距离时,禁止自动滚动
|
|
4657
4714
|
var data = scrollSync.current.state.scrollLeft + delta;
|
|
4658
|
-
|
|
4715
|
+
var maxScrollLeft = getMaxScrollLeft();
|
|
4716
|
+
if (data > maxScrollLeft) return;
|
|
4659
4717
|
scrollSync.current && scrollSync.current.setState({
|
|
4660
4718
|
scrollLeft: Math.max(scrollSync.current.state.scrollLeft + delta, 0)
|
|
4661
4719
|
});
|
|
4662
|
-
}, [
|
|
4720
|
+
}, [getMaxScrollLeft]);
|
|
4721
|
+
React.useLayoutEffect(function () {
|
|
4722
|
+
var _scrollSync$current$s, _scrollSync$current;
|
|
4723
|
+
var maxScrollLeft = getMaxScrollLeft();
|
|
4724
|
+
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;
|
|
4725
|
+
var nextScrollLeft = Math.min(Math.max(currentScrollLeft, 0), maxScrollLeft);
|
|
4726
|
+
var timelineEl = document.querySelector('.timeline-editor');
|
|
4727
|
+
if (timelineEl && Math.abs(timelineEl.scrollLeft - nextScrollLeft) > 1) {
|
|
4728
|
+
timelineEl.scrollLeft = nextScrollLeft;
|
|
4729
|
+
}
|
|
4730
|
+
if (scrollSync.current && Math.abs(currentScrollLeft - nextScrollLeft) > 1) {
|
|
4731
|
+
scrollSync.current.setState({
|
|
4732
|
+
scrollLeft: nextScrollLeft
|
|
4733
|
+
});
|
|
4734
|
+
}
|
|
4735
|
+
}, [getMaxScrollLeft, scale, scaleWidth, scaleCount, width]);
|
|
4663
4736
|
var handleInitDragLine = React.useCallback(function (data) {
|
|
4664
4737
|
var _checkedProps$onActio, _checkedProps$onActio2, _dragLineControllerRe;
|
|
4665
4738
|
(_checkedProps$onActio = checkedProps.onActionMoveStart) === null || _checkedProps$onActio === void 0 ? void 0 : _checkedProps$onActio.call(checkedProps, data);
|
|
@@ -4745,17 +4818,19 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4745
4818
|
},
|
|
4746
4819
|
pause: engineRef.current.pause.bind(engineRef.current),
|
|
4747
4820
|
setScrollLeft: function setScrollLeft(val) {
|
|
4821
|
+
var nextScrollLeft = Math.min(Math.max(val, 0), getMaxScrollLeft());
|
|
4748
4822
|
scrollSync.current && scrollSync.current.setState({
|
|
4749
|
-
scrollLeft:
|
|
4823
|
+
scrollLeft: nextScrollLeft
|
|
4750
4824
|
});
|
|
4751
4825
|
},
|
|
4752
4826
|
setScrollLeftFromTime: function setScrollLeftFromTime(val) {
|
|
4753
4827
|
var containerEl = document.querySelector('.timeline-editor');
|
|
4754
4828
|
if (!containerEl) return;
|
|
4755
4829
|
var left = startLeft + scaleWidth / scale * val;
|
|
4756
|
-
|
|
4830
|
+
var nextScrollLeft = Math.min(Math.max(left, 0), getMaxScrollLeft());
|
|
4831
|
+
containerEl.scrollLeft = nextScrollLeft;
|
|
4757
4832
|
scrollSync.current && scrollSync.current.setState({
|
|
4758
|
-
scrollLeft:
|
|
4833
|
+
scrollLeft: nextScrollLeft
|
|
4759
4834
|
});
|
|
4760
4835
|
},
|
|
4761
4836
|
setScrollTop: function setScrollTop(val) {
|
|
@@ -4766,11 +4841,13 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4766
4841
|
};
|
|
4767
4842
|
});
|
|
4768
4843
|
var onClickTimeline = React.useCallback(function (e) {
|
|
4769
|
-
var _e$target;
|
|
4844
|
+
var _ref2, _timelineEditorEl$scr, _scrollSync$current2, _e$target;
|
|
4770
4845
|
if (!domRef.current) return;
|
|
4846
|
+
var timelineEditorEl = document.querySelector('.timeline-editor');
|
|
4771
4847
|
var rect = domRef.current.getBoundingClientRect();
|
|
4772
4848
|
var position = e.clientX - rect.x;
|
|
4773
|
-
var
|
|
4849
|
+
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;
|
|
4850
|
+
var left = position + scrollLeft;
|
|
4774
4851
|
var time = parserPixelToTime(left, {
|
|
4775
4852
|
startLeft: startLeft,
|
|
4776
4853
|
scale: scale,
|
|
@@ -4840,9 +4917,9 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4840
4917
|
className: "".concat(className || '', " ").concat(theme || '', " ").concat(PREFIX, " ").concat(disableDrag ? PREFIX + '-disable' : '')
|
|
4841
4918
|
}, /*#__PURE__*/React__default['default'].createElement(reactVirtualized.ScrollSync, {
|
|
4842
4919
|
ref: scrollSync
|
|
4843
|
-
}, function (
|
|
4844
|
-
var scrollTop =
|
|
4845
|
-
_onScroll =
|
|
4920
|
+
}, function (_ref3) {
|
|
4921
|
+
var scrollTop = _ref3.scrollTop,
|
|
4922
|
+
_onScroll = _ref3.onScroll;
|
|
4846
4923
|
var scrollLeft = (containerEl === null || containerEl === void 0 ? void 0 : containerEl.scrollLeft) || 0;
|
|
4847
4924
|
return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(TimeArea, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
4848
4925
|
timelineWidth: width,
|
|
@@ -4857,8 +4934,8 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4857
4934
|
cursorRef: cursorRef
|
|
4858
4935
|
})), areaCount === 1 ? (/*#__PURE__*/React__default['default'].createElement(EditArea, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
4859
4936
|
timelineWidth: width,
|
|
4860
|
-
ref: function ref(
|
|
4861
|
-
return areaRef.current =
|
|
4937
|
+
ref: function ref(_ref4) {
|
|
4938
|
+
return areaRef.current = _ref4 === null || _ref4 === void 0 ? void 0 : _ref4.domRef.current;
|
|
4862
4939
|
},
|
|
4863
4940
|
disableDrag: disableDrag || isPlaying,
|
|
4864
4941
|
editorData: editorData,
|
|
@@ -4919,8 +4996,8 @@ var Timeline = /*#__PURE__*/React__default['default'].memo(/*#__PURE__*/React__d
|
|
|
4919
4996
|
}, checkedProps), {}, {
|
|
4920
4997
|
className: index !== 0 ? "no-flex ".concat(key, " ").concat(index, " overflow-hidden") : "overflow-hidden ".concat(key, " ").concat(index),
|
|
4921
4998
|
timelineWidth: width,
|
|
4922
|
-
ref: function ref(
|
|
4923
|
-
return areaRef.current =
|
|
4999
|
+
ref: function ref(_ref5) {
|
|
5000
|
+
return areaRef.current = _ref5 === null || _ref5 === void 0 ? void 0 : _ref5.domRef.current;
|
|
4924
5001
|
},
|
|
4925
5002
|
disableDrag: disableDrag || isPlaying,
|
|
4926
5003
|
editorData: groupedData[key],
|