sense-react-timeline-editor 1.0.3 → 1.0.6
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/components/edit_area/edit_action.d.ts +9 -0
- package/dist/components/edit_area/edit_area.d.ts +17 -0
- package/dist/components/edit_area/edit_row.d.ts +9 -0
- package/dist/components/row_rnd/hooks/useAutoScroll.d.ts +2 -2
- package/dist/components/row_rnd/row_rnd_interface.d.ts +2 -0
- package/dist/index.esm.js +648 -91
- package/dist/index.js +648 -91
- package/dist/interface/action.d.ts +5 -0
- package/dist/interface/timeline.d.ts +11 -0
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -6,6 +6,8 @@ var React = require('react');
|
|
|
6
6
|
var reactVirtualized = require('react-virtualized');
|
|
7
7
|
var frameworkUtils = require('framework-utils');
|
|
8
8
|
var interact = require('interactjs');
|
|
9
|
+
var es = require('antd/es');
|
|
10
|
+
var howler = require('howler');
|
|
9
11
|
var lodashEs = require('lodash-es');
|
|
10
12
|
|
|
11
13
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -28,6 +30,31 @@ function _assertThisInitialized(e) {
|
|
|
28
30
|
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
29
31
|
return e;
|
|
30
32
|
}
|
|
33
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) {
|
|
34
|
+
try {
|
|
35
|
+
var i = n[a](c),
|
|
36
|
+
u = i.value;
|
|
37
|
+
} catch (n) {
|
|
38
|
+
return void e(n);
|
|
39
|
+
}
|
|
40
|
+
i.done ? t(u) : Promise.resolve(u).then(r, o);
|
|
41
|
+
}
|
|
42
|
+
function _asyncToGenerator(n) {
|
|
43
|
+
return function () {
|
|
44
|
+
var t = this,
|
|
45
|
+
e = arguments;
|
|
46
|
+
return new Promise(function (r, o) {
|
|
47
|
+
var a = n.apply(t, e);
|
|
48
|
+
function _next(n) {
|
|
49
|
+
asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
|
|
50
|
+
}
|
|
51
|
+
function _throw(n) {
|
|
52
|
+
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
|
|
53
|
+
}
|
|
54
|
+
_next(void 0);
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
}
|
|
31
58
|
function _callSuper(t, o, e) {
|
|
32
59
|
return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));
|
|
33
60
|
}
|
|
@@ -140,6 +167,114 @@ function _possibleConstructorReturn(t, e) {
|
|
|
140
167
|
if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
|
|
141
168
|
return _assertThisInitialized(t);
|
|
142
169
|
}
|
|
170
|
+
function _regenerator() {
|
|
171
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
172
|
+
var e,
|
|
173
|
+
t,
|
|
174
|
+
r = "function" == typeof Symbol ? Symbol : {},
|
|
175
|
+
n = r.iterator || "@@iterator",
|
|
176
|
+
o = r.toStringTag || "@@toStringTag";
|
|
177
|
+
function i(r, n, o, i) {
|
|
178
|
+
var c = n && n.prototype instanceof Generator ? n : Generator,
|
|
179
|
+
u = Object.create(c.prototype);
|
|
180
|
+
return _regeneratorDefine(u, "_invoke", function (r, n, o) {
|
|
181
|
+
var i,
|
|
182
|
+
c,
|
|
183
|
+
u,
|
|
184
|
+
f = 0,
|
|
185
|
+
p = o || [],
|
|
186
|
+
y = !1,
|
|
187
|
+
G = {
|
|
188
|
+
p: 0,
|
|
189
|
+
n: 0,
|
|
190
|
+
v: e,
|
|
191
|
+
a: d,
|
|
192
|
+
f: d.bind(e, 4),
|
|
193
|
+
d: function (t, r) {
|
|
194
|
+
return i = t, c = 0, u = e, G.n = r, a;
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
function d(r, n) {
|
|
198
|
+
for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
|
|
199
|
+
var o,
|
|
200
|
+
i = p[t],
|
|
201
|
+
d = G.p,
|
|
202
|
+
l = i[2];
|
|
203
|
+
r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
|
|
204
|
+
}
|
|
205
|
+
if (o || r > 1) return a;
|
|
206
|
+
throw y = !0, n;
|
|
207
|
+
}
|
|
208
|
+
return function (o, p, l) {
|
|
209
|
+
if (f > 1) throw TypeError("Generator is already running");
|
|
210
|
+
for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
|
|
211
|
+
i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
|
|
212
|
+
try {
|
|
213
|
+
if (f = 2, i) {
|
|
214
|
+
if (c || (o = "next"), t = i[o]) {
|
|
215
|
+
if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
|
|
216
|
+
if (!t.done) return t;
|
|
217
|
+
u = t.value, c < 2 && (c = 0);
|
|
218
|
+
} else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
|
|
219
|
+
i = e;
|
|
220
|
+
} else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
|
|
221
|
+
} catch (t) {
|
|
222
|
+
i = e, c = 1, u = t;
|
|
223
|
+
} finally {
|
|
224
|
+
f = 1;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
value: t,
|
|
229
|
+
done: y
|
|
230
|
+
};
|
|
231
|
+
};
|
|
232
|
+
}(r, o, i), !0), u;
|
|
233
|
+
}
|
|
234
|
+
var a = {};
|
|
235
|
+
function Generator() {}
|
|
236
|
+
function GeneratorFunction() {}
|
|
237
|
+
function GeneratorFunctionPrototype() {}
|
|
238
|
+
t = Object.getPrototypeOf;
|
|
239
|
+
var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () {
|
|
240
|
+
return this;
|
|
241
|
+
}), t),
|
|
242
|
+
u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
|
|
243
|
+
function f(e) {
|
|
244
|
+
return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
|
|
245
|
+
}
|
|
246
|
+
return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () {
|
|
247
|
+
return this;
|
|
248
|
+
}), _regeneratorDefine(u, "toString", function () {
|
|
249
|
+
return "[object Generator]";
|
|
250
|
+
}), (_regenerator = function () {
|
|
251
|
+
return {
|
|
252
|
+
w: i,
|
|
253
|
+
m: f
|
|
254
|
+
};
|
|
255
|
+
})();
|
|
256
|
+
}
|
|
257
|
+
function _regeneratorDefine(e, r, n, t) {
|
|
258
|
+
var i = Object.defineProperty;
|
|
259
|
+
try {
|
|
260
|
+
i({}, "", {});
|
|
261
|
+
} catch (e) {
|
|
262
|
+
i = 0;
|
|
263
|
+
}
|
|
264
|
+
_regeneratorDefine = function (e, r, n, t) {
|
|
265
|
+
function o(r, n) {
|
|
266
|
+
_regeneratorDefine(e, r, function (e) {
|
|
267
|
+
return this._invoke(r, n, e);
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
r ? i ? i(e, r, {
|
|
271
|
+
value: n,
|
|
272
|
+
enumerable: !t,
|
|
273
|
+
configurable: !t,
|
|
274
|
+
writable: !t
|
|
275
|
+
}) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
|
|
276
|
+
}, _regeneratorDefine(e, r, n, t);
|
|
277
|
+
}
|
|
143
278
|
function _setPrototypeOf(t, e) {
|
|
144
279
|
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
|
|
145
280
|
return t.__proto__ = e, t;
|
|
@@ -1111,54 +1246,140 @@ function prefix() {
|
|
|
1111
1246
|
return frameworkUtils.prefixNames.apply(void 0, ["".concat(PREFIX, "-")].concat(classNames));
|
|
1112
1247
|
}
|
|
1113
1248
|
|
|
1114
|
-
var DEFAULT_SPEED =
|
|
1115
|
-
var MAX_SPEED =
|
|
1116
|
-
var CRITICAL_SIZE =
|
|
1117
|
-
|
|
1249
|
+
var DEFAULT_SPEED = 2;
|
|
1250
|
+
var MAX_SPEED = 8;
|
|
1251
|
+
var CRITICAL_SIZE = 5;
|
|
1252
|
+
var EDGE_THRESHOLD = 20; // 距离边缘多少像素开始触发滚动
|
|
1253
|
+
function useAutoScroll(target, verticalScrollTarget) {
|
|
1118
1254
|
var leftBoundRef = React.useRef(Number.MIN_SAFE_INTEGER);
|
|
1119
1255
|
var rightBoundRef = React.useRef(Number.MAX_SAFE_INTEGER);
|
|
1256
|
+
var topBoundRef = React.useRef(Number.MIN_SAFE_INTEGER);
|
|
1257
|
+
var bottomBoundRef = React.useRef(Number.MAX_SAFE_INTEGER);
|
|
1120
1258
|
var speed = React.useRef(DEFAULT_SPEED);
|
|
1121
1259
|
var frame = React.useRef();
|
|
1122
1260
|
var initAutoScroll = function initAutoScroll() {
|
|
1123
1261
|
if (target === null || target === void 0 ? void 0 : target.current) {
|
|
1124
1262
|
var _target$current$getBo = target.current.getBoundingClientRect(),
|
|
1125
1263
|
left = _target$current$getBo.left,
|
|
1126
|
-
width = _target$current$getBo.width
|
|
1264
|
+
width = _target$current$getBo.width,
|
|
1265
|
+
top = _target$current$getBo.top,
|
|
1266
|
+
height = _target$current$getBo.height;
|
|
1127
1267
|
leftBoundRef.current = left;
|
|
1128
1268
|
rightBoundRef.current = left + width;
|
|
1269
|
+
// Use verticalScrollTarget for Y-axis bounds if provided
|
|
1270
|
+
if (verticalScrollTarget === null || verticalScrollTarget === void 0 ? void 0 : verticalScrollTarget.current) {
|
|
1271
|
+
var verticalRect = verticalScrollTarget.current.getBoundingClientRect();
|
|
1272
|
+
topBoundRef.current = verticalRect.top;
|
|
1273
|
+
bottomBoundRef.current = verticalRect.top + verticalRect.height;
|
|
1274
|
+
} else {
|
|
1275
|
+
topBoundRef.current = top;
|
|
1276
|
+
bottomBoundRef.current = top + height;
|
|
1277
|
+
}
|
|
1129
1278
|
}
|
|
1130
1279
|
};
|
|
1131
|
-
var dealDragAutoScroll = function dealDragAutoScroll(e, deltaScroll) {
|
|
1132
|
-
//
|
|
1133
|
-
|
|
1280
|
+
var dealDragAutoScroll = function dealDragAutoScroll(e, deltaScroll, deltaScrollTop) {
|
|
1281
|
+
// X轴滚动 - 在边缘附近就开始触发
|
|
1282
|
+
var distanceToRightEdge = rightBoundRef.current - e.clientX;
|
|
1283
|
+
var distanceToLeftEdge = e.clientX - leftBoundRef.current;
|
|
1284
|
+
if (distanceToRightEdge < EDGE_THRESHOLD && distanceToRightEdge > 0) {
|
|
1285
|
+
// 接近右边缘
|
|
1134
1286
|
cancelAnimationFrame(frame.current);
|
|
1135
|
-
var
|
|
1136
|
-
speed.current = Math.min(Number((
|
|
1137
|
-
var
|
|
1138
|
-
var delta = dir * speed.current;
|
|
1287
|
+
var proximity = EDGE_THRESHOLD - distanceToRightEdge;
|
|
1288
|
+
speed.current = Math.min(Math.max(1, Number((proximity / CRITICAL_SIZE).toFixed(0)) * DEFAULT_SPEED), MAX_SPEED);
|
|
1289
|
+
var delta = speed.current;
|
|
1139
1290
|
var _loop = function loop() {
|
|
1140
1291
|
deltaScroll && deltaScroll(delta);
|
|
1141
1292
|
frame.current = requestAnimationFrame(_loop);
|
|
1142
1293
|
};
|
|
1143
1294
|
frame.current = requestAnimationFrame(_loop);
|
|
1144
1295
|
return false;
|
|
1296
|
+
} else if (distanceToLeftEdge < EDGE_THRESHOLD && distanceToLeftEdge > 0) {
|
|
1297
|
+
// 接近左边缘
|
|
1298
|
+
cancelAnimationFrame(frame.current);
|
|
1299
|
+
var _proximity = EDGE_THRESHOLD - distanceToLeftEdge;
|
|
1300
|
+
speed.current = Math.min(Math.max(1, Number((_proximity / CRITICAL_SIZE).toFixed(0)) * DEFAULT_SPEED), MAX_SPEED);
|
|
1301
|
+
var _delta = -speed.current;
|
|
1302
|
+
var _loop2 = function loop() {
|
|
1303
|
+
deltaScroll && deltaScroll(_delta);
|
|
1304
|
+
frame.current = requestAnimationFrame(_loop2);
|
|
1305
|
+
};
|
|
1306
|
+
frame.current = requestAnimationFrame(_loop2);
|
|
1307
|
+
return false;
|
|
1308
|
+
}
|
|
1309
|
+
// Y轴滚动 - 根据拖拽方向判断
|
|
1310
|
+
else if (deltaScrollTop) {
|
|
1311
|
+
var distanceToBottomEdge = bottomBoundRef.current - e.clientY;
|
|
1312
|
+
var distanceToTopEdge = e.clientY - topBoundRef.current;
|
|
1313
|
+
// console.log('Y-axis check:', {
|
|
1314
|
+
// clientY: e.clientY,
|
|
1315
|
+
// dy: e.dy,
|
|
1316
|
+
// topBound: topBoundRef.current,
|
|
1317
|
+
// bottomBound: bottomBoundRef.current,
|
|
1318
|
+
// distanceToTop: distanceToTopEdge,
|
|
1319
|
+
// distanceToBottom: distanceToBottomEdge,
|
|
1320
|
+
// });
|
|
1321
|
+
// 向下拖拽且接近底部边缘
|
|
1322
|
+
if (e.dy > 0 && distanceToBottomEdge < EDGE_THRESHOLD && distanceToBottomEdge > 0) {
|
|
1323
|
+
// console.log('Triggering BOTTOM scroll (dragging DOWN), delta will be POSITIVE');
|
|
1324
|
+
cancelAnimationFrame(frame.current);
|
|
1325
|
+
var _proximity2 = EDGE_THRESHOLD - distanceToBottomEdge;
|
|
1326
|
+
speed.current = Math.min(Math.max(1, Number((_proximity2 / CRITICAL_SIZE).toFixed(0)) * DEFAULT_SPEED), MAX_SPEED);
|
|
1327
|
+
var _delta2 = speed.current;
|
|
1328
|
+
var _loop3 = function loop() {
|
|
1329
|
+
deltaScrollTop && deltaScrollTop(_delta2);
|
|
1330
|
+
frame.current = requestAnimationFrame(_loop3);
|
|
1331
|
+
};
|
|
1332
|
+
frame.current = requestAnimationFrame(_loop3);
|
|
1333
|
+
return false;
|
|
1334
|
+
}
|
|
1335
|
+
// 向上拖拽且接近顶部边缘
|
|
1336
|
+
else if (e.dy < 0 && distanceToTopEdge < EDGE_THRESHOLD && distanceToTopEdge > 0) {
|
|
1337
|
+
// console.log('Triggering TOP scroll (dragging UP), delta will be NEGATIVE');
|
|
1338
|
+
cancelAnimationFrame(frame.current);
|
|
1339
|
+
var _proximity3 = EDGE_THRESHOLD - distanceToTopEdge;
|
|
1340
|
+
speed.current = Math.min(Math.max(1, Number((_proximity3 / CRITICAL_SIZE).toFixed(0)) * DEFAULT_SPEED), MAX_SPEED);
|
|
1341
|
+
var _delta3 = -speed.current;
|
|
1342
|
+
var _loop4 = function loop() {
|
|
1343
|
+
deltaScrollTop && deltaScrollTop(_delta3);
|
|
1344
|
+
frame.current = requestAnimationFrame(_loop4);
|
|
1345
|
+
};
|
|
1346
|
+
frame.current = requestAnimationFrame(_loop4);
|
|
1347
|
+
return false;
|
|
1348
|
+
} else {
|
|
1349
|
+
cancelAnimationFrame(frame.current);
|
|
1350
|
+
}
|
|
1145
1351
|
} else {
|
|
1146
1352
|
cancelAnimationFrame(frame.current);
|
|
1147
1353
|
}
|
|
1148
1354
|
return true;
|
|
1149
1355
|
};
|
|
1150
1356
|
var dealResizeAutoScroll = function dealResizeAutoScroll(e, dir, deltaScroll) {
|
|
1151
|
-
|
|
1357
|
+
// X轴滚动 - 在边缘附近就开始触发
|
|
1358
|
+
var distanceToRightEdge = rightBoundRef.current - e.clientX;
|
|
1359
|
+
var distanceToLeftEdge = e.clientX - leftBoundRef.current;
|
|
1360
|
+
if (distanceToRightEdge < EDGE_THRESHOLD && distanceToRightEdge > 0) {
|
|
1361
|
+
// 接近右边缘
|
|
1152
1362
|
cancelAnimationFrame(frame.current);
|
|
1153
|
-
var
|
|
1154
|
-
speed.current = Math.min(Number((
|
|
1155
|
-
var
|
|
1156
|
-
var
|
|
1157
|
-
var _loop2 = function loop() {
|
|
1363
|
+
var proximity = EDGE_THRESHOLD - distanceToRightEdge;
|
|
1364
|
+
speed.current = Math.min(Math.max(1, Number((proximity / CRITICAL_SIZE).toFixed(0)) * DEFAULT_SPEED), MAX_SPEED);
|
|
1365
|
+
var delta = speed.current;
|
|
1366
|
+
var _loop5 = function loop() {
|
|
1158
1367
|
deltaScroll && deltaScroll(delta);
|
|
1159
|
-
frame.current = requestAnimationFrame(
|
|
1368
|
+
frame.current = requestAnimationFrame(_loop5);
|
|
1160
1369
|
};
|
|
1161
|
-
frame.current = requestAnimationFrame(
|
|
1370
|
+
frame.current = requestAnimationFrame(_loop5);
|
|
1371
|
+
return false;
|
|
1372
|
+
} else if (distanceToLeftEdge < EDGE_THRESHOLD && distanceToLeftEdge > 0) {
|
|
1373
|
+
// 接近左边缘
|
|
1374
|
+
cancelAnimationFrame(frame.current);
|
|
1375
|
+
var _proximity4 = EDGE_THRESHOLD - distanceToLeftEdge;
|
|
1376
|
+
speed.current = Math.min(Math.max(1, Number((_proximity4 / CRITICAL_SIZE).toFixed(0)) * DEFAULT_SPEED), MAX_SPEED);
|
|
1377
|
+
var _delta4 = -speed.current;
|
|
1378
|
+
var _loop6 = function loop() {
|
|
1379
|
+
deltaScroll && deltaScroll(_delta4);
|
|
1380
|
+
frame.current = requestAnimationFrame(_loop6);
|
|
1381
|
+
};
|
|
1382
|
+
frame.current = requestAnimationFrame(_loop6);
|
|
1162
1383
|
return false;
|
|
1163
1384
|
} else {
|
|
1164
1385
|
cancelAnimationFrame(frame.current);
|
|
@@ -1261,12 +1482,14 @@ var RowDnd = /*#__PURE__*/React__default['default'].forwardRef(function (_ref, r
|
|
|
1261
1482
|
onDragEnd = _ref.onDragEnd,
|
|
1262
1483
|
onDrag = _ref.onDrag,
|
|
1263
1484
|
parentRef = _ref.parentRef,
|
|
1264
|
-
deltaScrollLeft = _ref.deltaScrollLeft
|
|
1485
|
+
deltaScrollLeft = _ref.deltaScrollLeft,
|
|
1486
|
+
deltaScrollTop = _ref.deltaScrollTop,
|
|
1487
|
+
verticalScrollRef = _ref.verticalScrollRef;
|
|
1265
1488
|
var interactable = React.useRef();
|
|
1266
1489
|
var deltaX = React.useRef(0);
|
|
1267
1490
|
var deltaY = React.useRef(0);
|
|
1268
1491
|
var isAdsorption = React.useRef(false);
|
|
1269
|
-
var _useAutoScroll = useAutoScroll(parentRef),
|
|
1492
|
+
var _useAutoScroll = useAutoScroll(parentRef, verticalScrollRef),
|
|
1270
1493
|
initAutoScroll = _useAutoScroll.initAutoScroll,
|
|
1271
1494
|
dealDragAutoScroll = _useAutoScroll.dealDragAutoScroll,
|
|
1272
1495
|
dealResizeAutoScroll = _useAutoScroll.dealResizeAutoScroll,
|
|
@@ -1467,14 +1690,33 @@ var RowDnd = /*#__PURE__*/React__default['default'].forwardRef(function (_ref, r
|
|
|
1467
1690
|
preHeight: preHeight,
|
|
1468
1691
|
scrollDelta: delta
|
|
1469
1692
|
});
|
|
1470
|
-
})
|
|
1693
|
+
}, deltaScrollTop ? function (delta) {
|
|
1694
|
+
deltaScrollTop(delta);
|
|
1695
|
+
// Y轴自动滚动时,需要累加到 deltaY.current 以保持元素与鼠标的相对位置
|
|
1696
|
+
var _target$dataset6 = target.dataset,
|
|
1697
|
+
left = _target$dataset6.left,
|
|
1698
|
+
width = _target$dataset6.width,
|
|
1699
|
+
top = _target$dataset6.top,
|
|
1700
|
+
height = _target$dataset6.height;
|
|
1701
|
+
var preLeft = parseFloat(left || '0');
|
|
1702
|
+
var preWidth = parseFloat(width || '0');
|
|
1703
|
+
var preTop = parseFloat(top || '0');
|
|
1704
|
+
var preHeight = parseFloat(height || '0');
|
|
1705
|
+
deltaY.current += delta;
|
|
1706
|
+
move({
|
|
1707
|
+
preLeft: preLeft,
|
|
1708
|
+
preWidth: preWidth,
|
|
1709
|
+
preTop: preTop,
|
|
1710
|
+
preHeight: preHeight
|
|
1711
|
+
});
|
|
1712
|
+
} : undefined);
|
|
1471
1713
|
if (!result) return;
|
|
1472
1714
|
}
|
|
1473
|
-
var _target$
|
|
1474
|
-
left = _target$
|
|
1475
|
-
width = _target$
|
|
1476
|
-
top = _target$
|
|
1477
|
-
height = _target$
|
|
1715
|
+
var _target$dataset7 = target.dataset,
|
|
1716
|
+
left = _target$dataset7.left,
|
|
1717
|
+
width = _target$dataset7.width,
|
|
1718
|
+
top = _target$dataset7.top,
|
|
1719
|
+
height = _target$dataset7.height;
|
|
1478
1720
|
var preLeft = parseFloat(left || '0');
|
|
1479
1721
|
var preWidth = parseFloat(width || '0');
|
|
1480
1722
|
var preTop = parseFloat(top || '0');
|
|
@@ -1494,11 +1736,11 @@ var RowDnd = /*#__PURE__*/React__default['default'].forwardRef(function (_ref, r
|
|
|
1494
1736
|
isAdsorption.current = false;
|
|
1495
1737
|
stopAutoScroll();
|
|
1496
1738
|
var target = e.target;
|
|
1497
|
-
var _target$
|
|
1498
|
-
left = _target$
|
|
1499
|
-
width = _target$
|
|
1500
|
-
top = _target$
|
|
1501
|
-
height = _target$
|
|
1739
|
+
var _target$dataset8 = target.dataset,
|
|
1740
|
+
left = _target$dataset8.left,
|
|
1741
|
+
width = _target$dataset8.width,
|
|
1742
|
+
top = _target$dataset8.top,
|
|
1743
|
+
height = _target$dataset8.height;
|
|
1502
1744
|
onDragEnd && onDragEnd({
|
|
1503
1745
|
left: parseFloat(left),
|
|
1504
1746
|
width: parseFloat(width),
|
|
@@ -1607,9 +1849,9 @@ var RowDnd = /*#__PURE__*/React__default['default'].forwardRef(function (_ref, r
|
|
|
1607
1849
|
if (deltaScrollLeft && (parentRef === null || parentRef === void 0 ? void 0 : parentRef.current)) {
|
|
1608
1850
|
var result = dealResizeAutoScroll(e, dir, function (delta) {
|
|
1609
1851
|
deltaScrollLeft(delta);
|
|
1610
|
-
var _target$
|
|
1611
|
-
left = _target$
|
|
1612
|
-
width = _target$
|
|
1852
|
+
var _target$dataset9 = target.dataset,
|
|
1853
|
+
left = _target$dataset9.left,
|
|
1854
|
+
width = _target$dataset9.width;
|
|
1613
1855
|
var preLeft = parseFloat(left || '0');
|
|
1614
1856
|
var preWidth = parseFloat(width || '0');
|
|
1615
1857
|
deltaX.current += delta;
|
|
@@ -1621,9 +1863,9 @@ var RowDnd = /*#__PURE__*/React__default['default'].forwardRef(function (_ref, r
|
|
|
1621
1863
|
});
|
|
1622
1864
|
if (!result) return;
|
|
1623
1865
|
}
|
|
1624
|
-
var _target$
|
|
1625
|
-
left = _target$
|
|
1626
|
-
width = _target$
|
|
1866
|
+
var _target$dataset0 = target.dataset,
|
|
1867
|
+
left = _target$dataset0.left,
|
|
1868
|
+
width = _target$dataset0.width;
|
|
1627
1869
|
var preLeft = parseFloat(left || '0');
|
|
1628
1870
|
var preWidth = parseFloat(width || '0');
|
|
1629
1871
|
deltaX.current += dir === 'left' ? e.deltaRect.left : e.deltaRect.right;
|
|
@@ -1639,9 +1881,9 @@ var RowDnd = /*#__PURE__*/React__default['default'].forwardRef(function (_ref, r
|
|
|
1639
1881
|
isAdsorption.current = false;
|
|
1640
1882
|
stopAutoScroll();
|
|
1641
1883
|
var target = e.target;
|
|
1642
|
-
var _target$
|
|
1643
|
-
left = _target$
|
|
1644
|
-
width = _target$
|
|
1884
|
+
var _target$dataset1 = target.dataset,
|
|
1885
|
+
left = _target$dataset1.left,
|
|
1886
|
+
width = _target$dataset1.width;
|
|
1645
1887
|
var dir = ((_e$edges3 = e.edges) === null || _e$edges3 === void 0 ? void 0 : _e$edges3.right) ? 'right' : 'left';
|
|
1646
1888
|
onResizeEnd && onResizeEnd(dir, {
|
|
1647
1889
|
left: parseFloat(left),
|
|
@@ -1744,7 +1986,7 @@ var Cursor = function Cursor(_ref) {
|
|
|
1744
1986
|
}
|
|
1745
1987
|
}, [cursorTime, startLeft, scaleWidth, scale, scrollLeft]);
|
|
1746
1988
|
return /*#__PURE__*/React__default['default'].createElement(RowDnd, {
|
|
1747
|
-
top: theme === 'light' ?
|
|
1989
|
+
top: theme === 'light' ? 16 : 0,
|
|
1748
1990
|
start: startLeft,
|
|
1749
1991
|
ref: rowRnd,
|
|
1750
1992
|
parentRef: areaRef,
|
|
@@ -1844,12 +2086,14 @@ var DragLines = function DragLines(_ref) {
|
|
|
1844
2086
|
}));
|
|
1845
2087
|
};
|
|
1846
2088
|
|
|
1847
|
-
var css_248z$2 = ".timeline-editor:hover .timeline-editor-edit-area .ReactVirtualized__Grid::-webkit-scrollbar {\n height: 4px;\n}\n.timeline-editor-edit-area {\n flex: 1 1 auto;\n margin-top: 10px;\n overflow: hidden;\n position: relative;\n}\n.timeline-editor-edit-area.no-flex {\n flex: 0 0 auto;\n}\n.timeline-editor-edit-area.overflow-hidden {\n overflow: hidden;\n}\n.timeline-editor-edit-area.overflow-hidden .ReactVirtualized__Grid {\n overflow: hidden !important;\n height: initial !important;\n}\n.timeline-editor-edit-area .ReactVirtualized__Grid {\n outline: none !important;\n overflow: overlay !important;\n}\n.timeline-editor-edit-area .ReactVirtualized__Grid::-webkit-scrollbar {\n width: 0;\n height: 0;\n}\n.timeline-editor-edit-area .ReactVirtualized__Grid::-webkit-scrollbar-track {\n background-color: transparent !important;\n}\n.timeline-editor-edit-area .ReactVirtualized__Grid::-webkit-scrollbar-thumb {\n background: #666;\n border-radius: 16px;\n}\n";
|
|
2089
|
+
var css_248z$2 = ".timeline-editor .ant-upload-wrapper .ant-upload-drag {\n border: none !important;\n background: none !important;\n}\n.timeline-editor:hover .timeline-editor-edit-area .ReactVirtualized__Grid::-webkit-scrollbar {\n height: 4px;\n}\n.timeline-editor-edit-area {\n flex: 1 1 auto;\n margin-top: 10px;\n overflow: hidden;\n position: relative;\n}\n.timeline-editor-edit-area.no-flex {\n flex: 0 0 auto;\n}\n.timeline-editor-edit-area.overflow-hidden {\n overflow: hidden;\n}\n.timeline-editor-edit-area.overflow-hidden .ReactVirtualized__Grid {\n overflow: hidden !important;\n height: initial !important;\n}\n.timeline-editor-edit-area .ReactVirtualized__Grid {\n outline: none !important;\n overflow: overlay !important;\n}\n.timeline-editor-edit-area .ReactVirtualized__Grid::-webkit-scrollbar {\n width: 0;\n height: 0;\n}\n.timeline-editor-edit-area .ReactVirtualized__Grid::-webkit-scrollbar-track {\n background-color: transparent !important;\n}\n.timeline-editor-edit-area .ReactVirtualized__Grid::-webkit-scrollbar-thumb {\n background: #666;\n border-radius: 16px;\n}\n";
|
|
1848
2090
|
styleInject(css_248z$2);
|
|
1849
2091
|
|
|
1850
|
-
var css_248z$3 = ".timeline-editor-action {\n position: absolute;\n left: 0;\n top: 0;\n background-color: #c6cbd2;\n
|
|
2092
|
+
var css_248z$3 = ".timeline-editor-action {\n position: absolute;\n left: 0;\n top: 0;\n background-color: #c6cbd2;\n display: flex;\n align-items: center;\n}\n.timeline-editor-action .timeline-editor-action-left-stretch,\n.timeline-editor-action .timeline-editor-action-right-stretch {\n position: absolute;\n}\n.timeline-editor-action .timeline-editor-action-left-stretch {\n left: -3px;\n}\n.timeline-editor-action .timeline-editor-action-right-stretch {\n right: -3px;\n transform: rotate(180deg);\n}\n";
|
|
1851
2093
|
styleInject(css_248z$3);
|
|
1852
2094
|
|
|
2095
|
+
var stretchIcon = "data:image/svg+xml,%3Csvg%20width%3D%227%22%20height%3D%2216%22%20viewBox%3D%220%200%207%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M7%2015C7%2015.5523%206.55228%2016%206%2016L1%2016C0.447715%2016%201.06779e-08%2015.5523%202.38498e-08%2015L3.57746e-07%201C3.70918e-07%200.447715%200.447716%20-1.5627e-07%201%20-1.43099e-07L6%209.29825e-07C6.55229%209.42996e-07%207%200.447716%207%201L7%2015Z%22%20fill%3D%22%23226EFF%22%2F%3E%3Cpath%20d%3D%22M2%204L2%2012%22%20stroke%3D%22white%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M4%2012.25L5.5%208L4%203.75%22%20fill%3D%22white%22%2F%3E%3Cpath%20d%3D%22M4%2012.25L5.5%208L4%203.75L4%2012.25Z%22%20stroke%3D%22white%22%20stroke-width%3D%220.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E";
|
|
2096
|
+
|
|
1853
2097
|
var EditAction = function EditAction(_ref) {
|
|
1854
2098
|
var editorData = _ref.editorData,
|
|
1855
2099
|
row = _ref.row,
|
|
@@ -1880,9 +2124,18 @@ var EditAction = function EditAction(_ref) {
|
|
|
1880
2124
|
getActionRender = _ref.getActionRender,
|
|
1881
2125
|
handleTime = _ref.handleTime,
|
|
1882
2126
|
areaRef = _ref.areaRef,
|
|
1883
|
-
deltaScrollLeft = _ref.deltaScrollLeft
|
|
2127
|
+
deltaScrollLeft = _ref.deltaScrollLeft,
|
|
2128
|
+
_ref$allowCreateTrack = _ref.allowCreateTrack,
|
|
2129
|
+
allowCreateTrack = _ref$allowCreateTrack === void 0 ? true : _ref$allowCreateTrack,
|
|
2130
|
+
setDropPreview = _ref.setDropPreview,
|
|
2131
|
+
containerRef = _ref.containerRef;
|
|
1884
2132
|
var rowRnd = React.useRef();
|
|
1885
2133
|
var isDragWhenClick = React.useRef(false);
|
|
2134
|
+
var originalPosition = React.useRef({
|
|
2135
|
+
start: 0,
|
|
2136
|
+
end: 0
|
|
2137
|
+
});
|
|
2138
|
+
var isMounted = React.useRef(true); // 组件挂载状态
|
|
1886
2139
|
var id = action.id,
|
|
1887
2140
|
maxEnd = action.maxEnd,
|
|
1888
2141
|
minStart = action.minStart,
|
|
@@ -1894,6 +2147,17 @@ var EditAction = function EditAction(_ref) {
|
|
|
1894
2147
|
_action$movable = action.movable,
|
|
1895
2148
|
movable = _action$movable === void 0 ? true : _action$movable,
|
|
1896
2149
|
effectId = action.effectId;
|
|
2150
|
+
var handleDeltaScrollTop = function handleDeltaScrollTop(delta) {
|
|
2151
|
+
if (containerRef === null || containerRef === void 0 ? void 0 : containerRef.current) {
|
|
2152
|
+
containerRef.current.scrollTop += delta * 2;
|
|
2153
|
+
}
|
|
2154
|
+
};
|
|
2155
|
+
// 组件卸载时清理
|
|
2156
|
+
React.useEffect(function () {
|
|
2157
|
+
return function () {
|
|
2158
|
+
isMounted.current = false;
|
|
2159
|
+
};
|
|
2160
|
+
}, []);
|
|
1897
2161
|
// 获取最大/最小 像素范围
|
|
1898
2162
|
var leftLimit = parserTimeToPixel(minStart || 0, {
|
|
1899
2163
|
startLeft: startLeft,
|
|
@@ -1954,6 +2218,11 @@ var EditAction = function EditAction(_ref) {
|
|
|
1954
2218
|
};
|
|
1955
2219
|
//#region [rgba(100,120,156,0.08)] 回调
|
|
1956
2220
|
var handleDragStart = function handleDragStart() {
|
|
2221
|
+
// 保存原始位置
|
|
2222
|
+
originalPosition.current = {
|
|
2223
|
+
start: action.start,
|
|
2224
|
+
end: action.end
|
|
2225
|
+
};
|
|
1957
2226
|
onActionMoveStart && onActionMoveStart({
|
|
1958
2227
|
action: action,
|
|
1959
2228
|
row: row
|
|
@@ -1964,6 +2233,34 @@ var EditAction = function EditAction(_ref) {
|
|
|
1964
2233
|
width = _ref2.width,
|
|
1965
2234
|
top = _ref2.top;
|
|
1966
2235
|
isDragWhenClick.current = true;
|
|
2236
|
+
// 检查是否需要显示预览指示器
|
|
2237
|
+
if (allowCreateTrack && setDropPreview && top !== undefined) {
|
|
2238
|
+
var _currentRowIndex = editorData.findIndex(function (item) {
|
|
2239
|
+
return item.id === row.id;
|
|
2240
|
+
});
|
|
2241
|
+
var rowHeightValue = rowHeight || 32;
|
|
2242
|
+
// 添加阈值,避免边界处频繁切换
|
|
2243
|
+
var threshold = 0.2; // 降低阈值,使预览指示器更灵敏
|
|
2244
|
+
var preciseOffset = top / rowHeightValue;
|
|
2245
|
+
var preciseIndex = _currentRowIndex + preciseOffset;
|
|
2246
|
+
// 判断是否需要显示预览指示器
|
|
2247
|
+
if (preciseIndex < -threshold) {
|
|
2248
|
+
// 拖拽到顶部之前
|
|
2249
|
+
setDropPreview({
|
|
2250
|
+
position: 'before',
|
|
2251
|
+
rowIndex: 0
|
|
2252
|
+
});
|
|
2253
|
+
} else if (preciseIndex >= editorData.length - 1 + threshold) {
|
|
2254
|
+
// 拖拽到底部之后
|
|
2255
|
+
setDropPreview({
|
|
2256
|
+
position: 'after',
|
|
2257
|
+
rowIndex: editorData.length - 1
|
|
2258
|
+
});
|
|
2259
|
+
} else {
|
|
2260
|
+
// 在现有轨道范围内,不显示预览
|
|
2261
|
+
setDropPreview(null);
|
|
2262
|
+
}
|
|
2263
|
+
}
|
|
1967
2264
|
if (onActionMoving) {
|
|
1968
2265
|
var _parserTransformToTim = parserTransformToTime({
|
|
1969
2266
|
left: left,
|
|
@@ -1983,11 +2280,13 @@ var EditAction = function EditAction(_ref) {
|
|
|
1983
2280
|
});
|
|
1984
2281
|
if (result === false) return false;
|
|
1985
2282
|
}
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
2283
|
+
if (isMounted.current) {
|
|
2284
|
+
setTransform({
|
|
2285
|
+
left: left,
|
|
2286
|
+
width: width,
|
|
2287
|
+
top: top || 0
|
|
2288
|
+
});
|
|
2289
|
+
}
|
|
1991
2290
|
handleScaleCount(left, width);
|
|
1992
2291
|
};
|
|
1993
2292
|
var handleDragEnd = function handleDragEnd(_ref3) {
|
|
@@ -1995,6 +2294,10 @@ var EditAction = function EditAction(_ref) {
|
|
|
1995
2294
|
width = _ref3.width,
|
|
1996
2295
|
top = _ref3.top,
|
|
1997
2296
|
height = _ref3.height;
|
|
2297
|
+
// 清理预览指示器
|
|
2298
|
+
if (setDropPreview) {
|
|
2299
|
+
setDropPreview(null);
|
|
2300
|
+
}
|
|
1998
2301
|
// 计算时间
|
|
1999
2302
|
var _parserTransformToTim2 = parserTransformToTime({
|
|
2000
2303
|
left: left,
|
|
@@ -2010,20 +2313,72 @@ var EditAction = function EditAction(_ref) {
|
|
|
2010
2313
|
var targetRowIndex = editorData.findIndex(function (item) {
|
|
2011
2314
|
return item.id === row.id;
|
|
2012
2315
|
});
|
|
2316
|
+
var needCreateNewRow = false;
|
|
2317
|
+
var newRowPosition = 'after';
|
|
2013
2318
|
if (top !== undefined && height !== undefined) {
|
|
2014
2319
|
// 通过Y轴位置计算目标row的索引
|
|
2015
|
-
var
|
|
2320
|
+
var _currentRowIndex2 = editorData.findIndex(function (item) {
|
|
2016
2321
|
return item.id === row.id;
|
|
2017
2322
|
});
|
|
2018
2323
|
var rowHeightValue = rowHeight || 32; // 使用默认行高或传入的行高
|
|
2019
|
-
|
|
2020
|
-
|
|
2324
|
+
// 使用与预览指示器相同的阈值逻辑
|
|
2325
|
+
var threshold = 0.2;
|
|
2326
|
+
var preciseOffset = top / rowHeightValue;
|
|
2327
|
+
var preciseIndex = _currentRowIndex2 + preciseOffset;
|
|
2328
|
+
// 检查是否需要创建新轨道
|
|
2329
|
+
if (allowCreateTrack) {
|
|
2330
|
+
if (preciseIndex < -threshold) {
|
|
2331
|
+
// 拖拽到第一个轨道之前,需要在前面创建新轨道
|
|
2332
|
+
needCreateNewRow = true;
|
|
2333
|
+
newRowPosition = 'before';
|
|
2334
|
+
targetRowIndex = 0;
|
|
2335
|
+
} else if (preciseIndex >= editorData.length - 1 + threshold) {
|
|
2336
|
+
// 拖拽到最后一个轨道之后,需要在后面创建新轨道
|
|
2337
|
+
needCreateNewRow = true;
|
|
2338
|
+
newRowPosition = 'after';
|
|
2339
|
+
targetRowIndex = editorData.length;
|
|
2340
|
+
} else {
|
|
2341
|
+
// 在现有轨道范围内,使用四舍五入找到最近的轨道
|
|
2342
|
+
var rowOffset = Math.round(preciseOffset);
|
|
2343
|
+
targetRowIndex = Math.max(0, Math.min(_currentRowIndex2 + rowOffset, editorData.length - 1));
|
|
2344
|
+
}
|
|
2345
|
+
} else {
|
|
2346
|
+
// 不允许创建新轨道时,限制在现有轨道范围内
|
|
2347
|
+
var _rowOffset = Math.round(preciseOffset);
|
|
2348
|
+
targetRowIndex = Math.max(0, Math.min(_currentRowIndex2 + _rowOffset, editorData.length - 1));
|
|
2349
|
+
}
|
|
2021
2350
|
}
|
|
2022
2351
|
// 设置数据
|
|
2023
2352
|
var sourceRowItem = editorData.find(function (item) {
|
|
2024
2353
|
return item.id === row.id;
|
|
2025
2354
|
});
|
|
2026
|
-
var targetRowItem
|
|
2355
|
+
var targetRowItem;
|
|
2356
|
+
// 如果需要创建新轨道
|
|
2357
|
+
if (needCreateNewRow) {
|
|
2358
|
+
var newRowId = "row_".concat(Date.now(), "_").concat(Math.random().toString(36).substr(2, 9));
|
|
2359
|
+
targetRowItem = {
|
|
2360
|
+
id: newRowId,
|
|
2361
|
+
actions: [],
|
|
2362
|
+
rowHeight: rowHeight,
|
|
2363
|
+
type: row.type,
|
|
2364
|
+
classNames: row.classNames,
|
|
2365
|
+
canUpload: row.canUpload // 继承源轨道的canUpload属性
|
|
2366
|
+
};
|
|
2367
|
+
console.log('Creating new row:', newRowId, 'with type:', row.type);
|
|
2368
|
+
// 将新轨道插入到正确的位置
|
|
2369
|
+
if (newRowPosition === 'before') {
|
|
2370
|
+
editorData.unshift(targetRowItem);
|
|
2371
|
+
targetRowIndex = 0;
|
|
2372
|
+
console.log('New row inserted at beginning, index:', targetRowIndex);
|
|
2373
|
+
} else {
|
|
2374
|
+
editorData.push(targetRowItem);
|
|
2375
|
+
targetRowIndex = editorData.length - 1;
|
|
2376
|
+
console.log('New row inserted at end, index:', targetRowIndex);
|
|
2377
|
+
}
|
|
2378
|
+
} else {
|
|
2379
|
+
targetRowItem = editorData[targetRowIndex];
|
|
2380
|
+
console.log('Using existing row:', targetRowItem.id, 'at index:', targetRowIndex);
|
|
2381
|
+
}
|
|
2027
2382
|
var actionItem = sourceRowItem.actions.find(function (item) {
|
|
2028
2383
|
return item.id === id;
|
|
2029
2384
|
});
|
|
@@ -2089,7 +2444,15 @@ var EditAction = function EditAction(_ref) {
|
|
|
2089
2444
|
var candidateStart = candidateEnd - duration;
|
|
2090
2445
|
var distance = Math.abs(candidateStart - start);
|
|
2091
2446
|
console.log('Candidate before first action:', candidateStart, '-', candidateEnd, 'distance:', distance);
|
|
2092
|
-
if (
|
|
2447
|
+
if (candidateStart < 0) {
|
|
2448
|
+
return {
|
|
2449
|
+
start: start,
|
|
2450
|
+
end: end,
|
|
2451
|
+
found: false
|
|
2452
|
+
};
|
|
2453
|
+
}
|
|
2454
|
+
// 检查候选位置的 start 是否小于 0
|
|
2455
|
+
if (candidateStart >= 0 && distance < minDistance) {
|
|
2093
2456
|
minDistance = distance;
|
|
2094
2457
|
bestPosition = {
|
|
2095
2458
|
start: candidateStart,
|
|
@@ -2163,8 +2526,17 @@ var EditAction = function EditAction(_ref) {
|
|
|
2163
2526
|
// 执行碰撞检测和调整
|
|
2164
2527
|
var adjustmentResult = checkAndAdjustCollision();
|
|
2165
2528
|
if (!adjustmentResult.found) {
|
|
2166
|
-
//
|
|
2167
|
-
console.warn('Cannot find suitable position,
|
|
2529
|
+
// 如果找不到合适位置,回到原始位置
|
|
2530
|
+
console.warn('Cannot find suitable position, reverting to original position');
|
|
2531
|
+
// 恢复原始位置的transform
|
|
2532
|
+
var originalTransform = parserTimeToTransform(originalPosition.current, {
|
|
2533
|
+
startLeft: startLeft,
|
|
2534
|
+
scale: scale,
|
|
2535
|
+
scaleWidth: scaleWidth
|
|
2536
|
+
});
|
|
2537
|
+
setTransform(_objectSpread2(_objectSpread2({}, originalTransform), {}, {
|
|
2538
|
+
top: 0
|
|
2539
|
+
}));
|
|
2168
2540
|
return;
|
|
2169
2541
|
}
|
|
2170
2542
|
// 使用调整后的时间
|
|
@@ -2176,12 +2548,29 @@ var EditAction = function EditAction(_ref) {
|
|
|
2176
2548
|
actionItem.end = end;
|
|
2177
2549
|
// 如果拖拽到了不同的row,需要移动action
|
|
2178
2550
|
if (targetRowItem.id !== row.id) {
|
|
2551
|
+
console.log('Moving action to different row');
|
|
2552
|
+
console.log('Source row:', row.id, 'Target row:', targetRowItem.id);
|
|
2553
|
+
console.log('Is new row:', needCreateNewRow);
|
|
2554
|
+
console.log('Target row actions before:', targetRowItem.actions.length);
|
|
2179
2555
|
// 从原row中移除
|
|
2180
2556
|
sourceRowItem.actions = sourceRowItem.actions.filter(function (item) {
|
|
2181
2557
|
return item.id !== id;
|
|
2182
2558
|
});
|
|
2183
2559
|
// 添加到目标row
|
|
2184
2560
|
targetRowItem.actions.push(actionItem);
|
|
2561
|
+
console.log('Target row actions after:', targetRowItem.actions.length);
|
|
2562
|
+
console.log('Action added:', actionItem.id);
|
|
2563
|
+
// 如果源轨道没有action了,删除源轨道
|
|
2564
|
+
if (sourceRowItem.actions.length === 0) {
|
|
2565
|
+
console.log('Source row is empty, removing it:', sourceRowItem.id);
|
|
2566
|
+
var sourceRowIndex = editorData.findIndex(function (item) {
|
|
2567
|
+
return item.id === sourceRowItem.id;
|
|
2568
|
+
});
|
|
2569
|
+
if (sourceRowIndex !== -1) {
|
|
2570
|
+
editorData.splice(sourceRowIndex, 1);
|
|
2571
|
+
console.log('Source row removed at index:', sourceRowIndex);
|
|
2572
|
+
}
|
|
2573
|
+
}
|
|
2185
2574
|
}
|
|
2186
2575
|
setEditorData(_toConsumableArray(editorData));
|
|
2187
2576
|
// 更新transform以反映新位置
|
|
@@ -2201,7 +2590,8 @@ var EditAction = function EditAction(_ref) {
|
|
|
2201
2590
|
action: actionItem,
|
|
2202
2591
|
row: targetRowItem,
|
|
2203
2592
|
start: start,
|
|
2204
|
-
end: end
|
|
2593
|
+
end: end,
|
|
2594
|
+
isNewRow: needCreateNewRow
|
|
2205
2595
|
});
|
|
2206
2596
|
};
|
|
2207
2597
|
var handleResizeStart = function handleResizeStart(dir) {
|
|
@@ -2290,9 +2680,13 @@ var EditAction = function EditAction(_ref) {
|
|
|
2290
2680
|
if (row.actions.includes(action)) {
|
|
2291
2681
|
nowRow.actions[row.actions.indexOf(action)] = nowAction;
|
|
2292
2682
|
}
|
|
2683
|
+
var currentRowIndex = editorData.findIndex(function (item) {
|
|
2684
|
+
return item.id === row.id;
|
|
2685
|
+
});
|
|
2293
2686
|
return /*#__PURE__*/React__default['default'].createElement(RowDnd, {
|
|
2294
2687
|
ref: rowRnd,
|
|
2295
2688
|
parentRef: areaRef,
|
|
2689
|
+
verticalScrollRef: containerRef,
|
|
2296
2690
|
start: startLeft,
|
|
2297
2691
|
left: transform.left,
|
|
2298
2692
|
width: transform.width,
|
|
@@ -2304,12 +2698,8 @@ var EditAction = function EditAction(_ref) {
|
|
|
2304
2698
|
bounds: {
|
|
2305
2699
|
left: leftLimit,
|
|
2306
2700
|
right: rightLimit,
|
|
2307
|
-
top: -
|
|
2308
|
-
|
|
2309
|
-
}) * rowHeight,
|
|
2310
|
-
bottom: (editorData.length - editorData.findIndex(function (item) {
|
|
2311
|
-
return item.id === row.id;
|
|
2312
|
-
})) * rowHeight
|
|
2701
|
+
top: -(currentRowIndex + 1) * rowHeight,
|
|
2702
|
+
bottom: (editorData.length - currentRowIndex + 1) * rowHeight
|
|
2313
2703
|
},
|
|
2314
2704
|
edges: {
|
|
2315
2705
|
left: !disableDrag && flexible && ".".concat(prefix('action-left-stretch')),
|
|
@@ -2323,7 +2713,8 @@ var EditAction = function EditAction(_ref) {
|
|
|
2323
2713
|
onResizeStart: handleResizeStart,
|
|
2324
2714
|
onResize: handleResizing,
|
|
2325
2715
|
onResizeEnd: handleResizeEnd,
|
|
2326
|
-
deltaScrollLeft: deltaScrollLeft
|
|
2716
|
+
deltaScrollLeft: deltaScrollLeft,
|
|
2717
|
+
deltaScrollTop: handleDeltaScrollTop
|
|
2327
2718
|
}, /*#__PURE__*/React__default['default'].createElement("div", {
|
|
2328
2719
|
onMouseDown: function onMouseDown() {
|
|
2329
2720
|
isDragWhenClick.current = false;
|
|
@@ -2373,12 +2764,18 @@ var EditAction = function EditAction(_ref) {
|
|
|
2373
2764
|
}
|
|
2374
2765
|
}, getActionRender && getActionRender(nowAction, nowRow), flexible && /*#__PURE__*/React__default['default'].createElement("div", {
|
|
2375
2766
|
className: prefix('action-left-stretch')
|
|
2376
|
-
}
|
|
2767
|
+
}, /*#__PURE__*/React__default['default'].createElement("img", {
|
|
2768
|
+
src: stretchIcon,
|
|
2769
|
+
alt: ""
|
|
2770
|
+
})), flexible && /*#__PURE__*/React__default['default'].createElement("div", {
|
|
2377
2771
|
className: prefix('action-right-stretch')
|
|
2378
|
-
}
|
|
2772
|
+
}, /*#__PURE__*/React__default['default'].createElement("img", {
|
|
2773
|
+
src: stretchIcon,
|
|
2774
|
+
alt: ""
|
|
2775
|
+
}))));
|
|
2379
2776
|
};
|
|
2380
2777
|
|
|
2381
|
-
var css_248z$4 = ".timeline-editor-edit-row {\n background-repeat: no-repeat, repeat;\n display: flex;\n flex-direction: row;\n box-sizing: border-box;\n}\n";
|
|
2778
|
+
var css_248z$4 = ".timeline-editor-edit-row {\n background-repeat: no-repeat, repeat;\n display: flex;\n flex-direction: row;\n box-sizing: border-box;\n}\n.timeline-editor-edit-row.preview-row {\n background-color: rgba(100, 150, 255, 0.15);\n border: 1px dashed rgba(100, 150, 255, 0.5);\n opacity: 0.8;\n transition: all 0.2s ease;\n}\n";
|
|
2382
2779
|
styleInject(css_248z$4);
|
|
2383
2780
|
|
|
2384
2781
|
var EditRow = function EditRow(props) {
|
|
@@ -2392,7 +2789,9 @@ var EditRow = function EditRow(props) {
|
|
|
2392
2789
|
scrollLeft = props.scrollLeft,
|
|
2393
2790
|
startLeft = props.startLeft,
|
|
2394
2791
|
scale = props.scale,
|
|
2395
|
-
scaleWidth = props.scaleWidth
|
|
2792
|
+
scaleWidth = props.scaleWidth,
|
|
2793
|
+
allowCreateTrack = props.allowCreateTrack,
|
|
2794
|
+
containerRef = props.containerRef;
|
|
2396
2795
|
var classNames = ['edit-row'];
|
|
2397
2796
|
if (rowData === null || rowData === void 0 ? void 0 : rowData.selected) classNames.push('edit-row-selected');
|
|
2398
2797
|
var handleTime = function handleTime(e) {
|
|
@@ -2443,7 +2842,10 @@ var EditRow = function EditRow(props) {
|
|
|
2443
2842
|
}, props), {}, {
|
|
2444
2843
|
handleTime: handleTime,
|
|
2445
2844
|
row: rowData,
|
|
2446
|
-
action: action
|
|
2845
|
+
action: action,
|
|
2846
|
+
allowCreateTrack: allowCreateTrack,
|
|
2847
|
+
setDropPreview: props.setDropPreview,
|
|
2848
|
+
containerRef: containerRef
|
|
2447
2849
|
}));
|
|
2448
2850
|
}));
|
|
2449
2851
|
};
|
|
@@ -2554,6 +2956,22 @@ function useDragLine() {
|
|
|
2554
2956
|
};
|
|
2555
2957
|
}
|
|
2556
2958
|
|
|
2959
|
+
// 获取音频时长
|
|
2960
|
+
var getAudioDuration = function getAudioDuration(url) {
|
|
2961
|
+
return new Promise(function (resolve) {
|
|
2962
|
+
var sound = new howler.Howl({
|
|
2963
|
+
src: [url]
|
|
2964
|
+
});
|
|
2965
|
+
sound.on('load', function () {
|
|
2966
|
+
resolve(sound.duration());
|
|
2967
|
+
sound.unload();
|
|
2968
|
+
});
|
|
2969
|
+
sound.on('loaderror', function () {
|
|
2970
|
+
resolve(2); // 加载失败时返回默认时长2秒
|
|
2971
|
+
sound.unload();
|
|
2972
|
+
});
|
|
2973
|
+
});
|
|
2974
|
+
};
|
|
2557
2975
|
var EditArea = /*#__PURE__*/React__default['default'].forwardRef(function (props, ref) {
|
|
2558
2976
|
var className = props.className,
|
|
2559
2977
|
_props$isMulti = props.isMulti,
|
|
@@ -2576,7 +2994,61 @@ var EditArea = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
2576
2994
|
_onActionMoving = props.onActionMoving,
|
|
2577
2995
|
_onActionResizeEnd = props.onActionResizeEnd,
|
|
2578
2996
|
_onActionResizeStart = props.onActionResizeStart,
|
|
2579
|
-
_onActionResizing = props.onActionResizing
|
|
2997
|
+
_onActionResizing = props.onActionResizing,
|
|
2998
|
+
onUpdateEditorData = props.onUpdateEditorData,
|
|
2999
|
+
_props$canUpload = props.canUpload,
|
|
3000
|
+
canUpload = _props$canUpload === void 0 ? false : _props$canUpload,
|
|
3001
|
+
customRequest = props.customRequest,
|
|
3002
|
+
setEditorData = props.setEditorData,
|
|
3003
|
+
_props$allowCreateTra = props.allowCreateTrack,
|
|
3004
|
+
allowCreateTrack = _props$allowCreateTra === void 0 ? true : _props$allowCreateTra,
|
|
3005
|
+
containerRef = props.containerRef;
|
|
3006
|
+
// 支持mp3\wav格式上传
|
|
3007
|
+
var onBeforeUpload = function onBeforeUpload(file) {
|
|
3008
|
+
if (file.type !== 'audio/mp3' && file.type !== 'audio/wav') {
|
|
3009
|
+
es.message.error('只能上传mp3wav格式的音频');
|
|
3010
|
+
return false;
|
|
3011
|
+
}
|
|
3012
|
+
return true;
|
|
3013
|
+
};
|
|
3014
|
+
var handleUploadChange = function handleUploadChange(row) {
|
|
3015
|
+
return /*#__PURE__*/function () {
|
|
3016
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(info) {
|
|
3017
|
+
var uid, duration, newAction;
|
|
3018
|
+
return _regenerator().w(function (_context) {
|
|
3019
|
+
while (1) switch (_context.n) {
|
|
3020
|
+
case 0:
|
|
3021
|
+
console.log('Upload info:', info);
|
|
3022
|
+
if (!(!info.file || !info.file.response)) {
|
|
3023
|
+
_context.n = 1;
|
|
3024
|
+
break;
|
|
3025
|
+
}
|
|
3026
|
+
return _context.a(2);
|
|
3027
|
+
case 1:
|
|
3028
|
+
uid = info.file.uid;
|
|
3029
|
+
_context.n = 2;
|
|
3030
|
+
return getAudioDuration(info.file.response.url);
|
|
3031
|
+
case 2:
|
|
3032
|
+
duration = _context.v;
|
|
3033
|
+
newAction = {
|
|
3034
|
+
id: uid,
|
|
3035
|
+
effectId: 'custom_video_effect',
|
|
3036
|
+
flexible: true,
|
|
3037
|
+
url: info.file.response.url,
|
|
3038
|
+
start: currentMouseTime,
|
|
3039
|
+
end: currentMouseTime + duration
|
|
3040
|
+
};
|
|
3041
|
+
onUpdateEditorData === null || onUpdateEditorData === void 0 ? void 0 : onUpdateEditorData(row, [newAction]);
|
|
3042
|
+
case 3:
|
|
3043
|
+
return _context.a(2);
|
|
3044
|
+
}
|
|
3045
|
+
}, _callee);
|
|
3046
|
+
}));
|
|
3047
|
+
return function (_x) {
|
|
3048
|
+
return _ref.apply(this, arguments);
|
|
3049
|
+
};
|
|
3050
|
+
}();
|
|
3051
|
+
};
|
|
2580
3052
|
var _useDragLine = useDragLine(),
|
|
2581
3053
|
dragLineData = _useDragLine.dragLineData,
|
|
2582
3054
|
initDragLine = _useDragLine.initDragLine,
|
|
@@ -2586,7 +3058,33 @@ var EditArea = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
2586
3058
|
defaultGetMovePosition = _useDragLine.defaultGetMovePosition;
|
|
2587
3059
|
var editAreaRef = React.useRef();
|
|
2588
3060
|
var gridRef = React.useRef();
|
|
3061
|
+
var _useState = React.useState(0),
|
|
3062
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3063
|
+
currentMouseTime = _useState2[0],
|
|
3064
|
+
setCurrentMouseTime = _useState2[1];
|
|
2589
3065
|
var heightRef = React.useRef(-1);
|
|
3066
|
+
var uploadRef = React.useRef();
|
|
3067
|
+
var _useState3 = React.useState(null),
|
|
3068
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
3069
|
+
dropPreview = _useState4[0],
|
|
3070
|
+
setDropPreview = _useState4[1];
|
|
3071
|
+
// 处理拖拽上传事件
|
|
3072
|
+
var handleDrop = function handleDrop(e) {
|
|
3073
|
+
e.preventDefault();
|
|
3074
|
+
e.stopPropagation();
|
|
3075
|
+
// 计算鼠标所在位置的时间
|
|
3076
|
+
if (!editAreaRef.current) return;
|
|
3077
|
+
var rect = editAreaRef.current.getBoundingClientRect();
|
|
3078
|
+
var position = e.clientX - rect.x;
|
|
3079
|
+
var left = position + scrollLeft;
|
|
3080
|
+
var time = parserPixelToTime(left, {
|
|
3081
|
+
startLeft: startLeft,
|
|
3082
|
+
scale: scale,
|
|
3083
|
+
scaleWidth: scaleWidth
|
|
3084
|
+
});
|
|
3085
|
+
setCurrentMouseTime(time);
|
|
3086
|
+
console.log('拖拽上传位置的时间:', time);
|
|
3087
|
+
};
|
|
2590
3088
|
// ref 数据
|
|
2591
3089
|
React.useImperativeHandle(ref, function () {
|
|
2592
3090
|
return {
|
|
@@ -2636,12 +3134,12 @@ var EditArea = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
2636
3134
|
}
|
|
2637
3135
|
};
|
|
2638
3136
|
/** 获取每个cell渲染内容 */
|
|
2639
|
-
var cellRenderer = function cellRenderer(
|
|
2640
|
-
var rowIndex =
|
|
2641
|
-
key =
|
|
2642
|
-
style =
|
|
3137
|
+
var cellRenderer = function cellRenderer(_ref2) {
|
|
3138
|
+
var rowIndex = _ref2.rowIndex,
|
|
3139
|
+
key = _ref2.key,
|
|
3140
|
+
style = _ref2.style;
|
|
2643
3141
|
var row = editorData[rowIndex]; // 行数据
|
|
2644
|
-
|
|
3142
|
+
var editRow = /*#__PURE__*/React__default['default'].createElement(EditRow, _objectSpread2(_objectSpread2({}, props), {}, {
|
|
2645
3143
|
style: _objectSpread2(_objectSpread2({}, style), {}, {
|
|
2646
3144
|
backgroundPositionX: "0, ".concat(startLeft, "px"),
|
|
2647
3145
|
backgroundSize: "".concat(startLeft, "px, ").concat(scaleWidth, "px")
|
|
@@ -2651,6 +3149,9 @@ var EditArea = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
2651
3149
|
rowHeight: (row === null || row === void 0 ? void 0 : row.rowHeight) || _rowHeight,
|
|
2652
3150
|
rowData: row,
|
|
2653
3151
|
dragLineData: dragLineData,
|
|
3152
|
+
allowCreateTrack: allowCreateTrack,
|
|
3153
|
+
setDropPreview: setDropPreview,
|
|
3154
|
+
containerRef: containerRef,
|
|
2654
3155
|
onActionMoveStart: function onActionMoveStart(data) {
|
|
2655
3156
|
handleInitDragLine(data);
|
|
2656
3157
|
return _onActionMoveStart && _onActionMoveStart(data);
|
|
@@ -2676,6 +3177,26 @@ var EditArea = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
2676
3177
|
return _onActionMoveEnd && _onActionMoveEnd(data);
|
|
2677
3178
|
}
|
|
2678
3179
|
}));
|
|
3180
|
+
if (canUpload || (row === null || row === void 0 ? void 0 : row.canUpload)) {
|
|
3181
|
+
return /*#__PURE__*/React__default['default'].createElement(es.Upload, {
|
|
3182
|
+
ref: uploadRef,
|
|
3183
|
+
key: key,
|
|
3184
|
+
style: _objectSpread2(_objectSpread2({
|
|
3185
|
+
width: '100%',
|
|
3186
|
+
display: 'block'
|
|
3187
|
+
}, style), {}, {
|
|
3188
|
+
top: 0
|
|
3189
|
+
}),
|
|
3190
|
+
beforeUpload: onBeforeUpload,
|
|
3191
|
+
onChange: handleUploadChange(row),
|
|
3192
|
+
showUploadList: false,
|
|
3193
|
+
openFileDialogOnClick: false,
|
|
3194
|
+
customRequest: customRequest,
|
|
3195
|
+
onDrop: handleDrop,
|
|
3196
|
+
type: "drag"
|
|
3197
|
+
}, editRow);
|
|
3198
|
+
}
|
|
3199
|
+
return editRow;
|
|
2679
3200
|
};
|
|
2680
3201
|
React.useLayoutEffect(function () {
|
|
2681
3202
|
var _gridRef$current;
|
|
@@ -2689,7 +3210,7 @@ var EditArea = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
2689
3210
|
}, [editorData]);
|
|
2690
3211
|
var _totalHeight = editorData.reduce(function (prev, cur) {
|
|
2691
3212
|
return prev + (cur.rowHeight || _rowHeight);
|
|
2692
|
-
}, 0) + 32;
|
|
3213
|
+
}, 0) + ((className || '').indexOf('1') > -1 ? 12 : 32);
|
|
2693
3214
|
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
2694
3215
|
ref: editAreaRef,
|
|
2695
3216
|
className: prefix('edit-area') + " ".concat((className || '').replace('timeline-editor', '') || ''),
|
|
@@ -2701,9 +3222,9 @@ var EditArea = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
2701
3222
|
style: {
|
|
2702
3223
|
height: isMulti ? _totalHeight : 'unset'
|
|
2703
3224
|
}
|
|
2704
|
-
}, function (
|
|
2705
|
-
var width =
|
|
2706
|
-
height =
|
|
3225
|
+
}, function (_ref3) {
|
|
3226
|
+
var width = _ref3.width,
|
|
3227
|
+
height = _ref3.height;
|
|
2707
3228
|
// 获取全部高度
|
|
2708
3229
|
var totalHeight = 0;
|
|
2709
3230
|
// 高度列表
|
|
@@ -2732,26 +3253,50 @@ var EditArea = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
2732
3253
|
columnWidth: Math.max(scaleCount * scaleWidth + startLeft, width),
|
|
2733
3254
|
width: width,
|
|
2734
3255
|
height: height,
|
|
2735
|
-
rowHeight: function rowHeight(
|
|
2736
|
-
var index =
|
|
3256
|
+
rowHeight: function rowHeight(_ref4) {
|
|
3257
|
+
var index = _ref4.index;
|
|
2737
3258
|
return heights[index] || _rowHeight;
|
|
2738
3259
|
},
|
|
2739
3260
|
overscanRowCount: 10,
|
|
2740
3261
|
overscanColumnCount: 0,
|
|
2741
3262
|
onScroll: function onScroll(param) {
|
|
2742
|
-
console.log(param, 'onScroll');
|
|
2743
3263
|
_onScroll(param);
|
|
2744
3264
|
}
|
|
2745
3265
|
});
|
|
2746
3266
|
}), dragLine && /*#__PURE__*/React__default['default'].createElement(DragLines, _objectSpread2({
|
|
2747
3267
|
scrollLeft: scrollLeft
|
|
2748
|
-
}, dragLineData)))
|
|
3268
|
+
}, dragLineData)), dropPreview && function () {
|
|
3269
|
+
// 计算预览指示器的位置
|
|
3270
|
+
var top = 0;
|
|
3271
|
+
for (var i = 0; i < editorData.length; i++) {
|
|
3272
|
+
if (dropPreview.position === 'before' && i === dropPreview.rowIndex) {
|
|
3273
|
+
break;
|
|
3274
|
+
}
|
|
3275
|
+
top += editorData[i].rowHeight || _rowHeight;
|
|
3276
|
+
if (dropPreview.position === 'after' && i === dropPreview.rowIndex) {
|
|
3277
|
+
break;
|
|
3278
|
+
}
|
|
3279
|
+
}
|
|
3280
|
+
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
3281
|
+
style: {
|
|
3282
|
+
position: 'absolute',
|
|
3283
|
+
left: 0,
|
|
3284
|
+
right: 0,
|
|
3285
|
+
top: top - scrollTop,
|
|
3286
|
+
height: '2px',
|
|
3287
|
+
backgroundColor: 'transparent',
|
|
3288
|
+
borderTop: '2px dashed #1890ff',
|
|
3289
|
+
zIndex: 1000,
|
|
3290
|
+
pointerEvents: 'none'
|
|
3291
|
+
}
|
|
3292
|
+
});
|
|
3293
|
+
}());
|
|
2749
3294
|
});
|
|
2750
3295
|
|
|
2751
3296
|
var css_248z$5 = ".timeline-editor {\n height: 600px;\n width: 600px;\n min-height: 32px;\n position: relative;\n font-size: 12px;\n font-family: \"PingFang SC\";\n background-color: #191b1d;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.timeline-editor.light {\n background-color: #fff;\n}\n";
|
|
2752
3297
|
styleInject(css_248z$5);
|
|
2753
3298
|
|
|
2754
|
-
var css_248z$6 = ".timeline-editor-time-area {\n position: relative;\n height: 32px;\n flex: 0 0 auto;\n}\n.timeline-editor-time-area .ReactVirtualized__Grid {\n outline: none;\n}\n.timeline-editor-time-area .ReactVirtualized__Grid::-webkit-scrollbar {\n display: none;\n}\n.timeline-editor-time-area-interact {\n position: absolute;\n cursor: pointer;\n left: 0;\n top: 0;\n}\n.timeline-editor-time-unit {\n border-right: 1px solid rgba(255, 255, 255, 0.2);\n position: relative;\n box-sizing: content-box;\n height: 4px !important;\n bottom: 0 !important;\n top: auto !important;\n}\n.timeline-editor-time-unit-big {\n height: 8px !important;\n}\n.timeline-editor-time-unit-scale {\n color: rgba(255, 255, 255, 0.6);\n position: absolute;\n right: 0;\n top: 0;\n transform: translate(50%, -100%);\n}\n.light.timeline-editor .timeline-editor-time-unit {\n border-color: #
|
|
3299
|
+
var css_248z$6 = ".timeline-editor-time-area {\n position: relative;\n height: 32px;\n flex: 0 0 auto;\n}\n.timeline-editor-time-area .ReactVirtualized__Grid {\n outline: none;\n}\n.timeline-editor-time-area .ReactVirtualized__Grid::-webkit-scrollbar {\n display: none;\n}\n.timeline-editor-time-area-interact {\n position: absolute;\n cursor: pointer;\n left: 0;\n top: 0;\n}\n.timeline-editor-time-unit {\n border-right: 1px solid rgba(255, 255, 255, 0.2);\n position: relative;\n box-sizing: content-box;\n height: 4px !important;\n bottom: 0 !important;\n top: auto !important;\n}\n.timeline-editor-time-unit-big {\n height: 8px !important;\n}\n.timeline-editor-time-unit-scale {\n color: rgba(255, 255, 255, 0.6);\n position: absolute;\n right: 0;\n top: 0;\n transform: translate(50%, -100%);\n}\n.light.timeline-editor .timeline-editor-time-unit {\n border-color: #111;\n}\n.light.timeline-editor .timeline-editor-time-unit-scale {\n color: #666;\n}\n";
|
|
2755
3300
|
styleInject(css_248z$6);
|
|
2756
3301
|
|
|
2757
3302
|
/** 动画时间轴组件 */
|
|
@@ -2868,11 +3413,14 @@ var Timeline = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
2868
3413
|
engine = checkedProps.engine,
|
|
2869
3414
|
_checkedProps$autoReR = checkedProps.autoReRender,
|
|
2870
3415
|
autoReRender = _checkedProps$autoReR === void 0 ? true : _checkedProps$autoReR,
|
|
2871
|
-
onScrollVertical = checkedProps.onScroll
|
|
3416
|
+
onScrollVertical = checkedProps.onScroll,
|
|
3417
|
+
_checkedProps$allowCr = checkedProps.allowCreateTrack,
|
|
3418
|
+
allowCreateTrack = _checkedProps$allowCr === void 0 ? true : _checkedProps$allowCr;
|
|
2872
3419
|
var engineRef = React.useRef(engine || new TimelineEngine());
|
|
2873
3420
|
var domRef = React.useRef();
|
|
2874
3421
|
var areaRef = React.useRef();
|
|
2875
3422
|
var scrollSync = React.useRef();
|
|
3423
|
+
var containerRef = React.useRef();
|
|
2876
3424
|
// 编辑器数据
|
|
2877
3425
|
var _useState = React.useState(data),
|
|
2878
3426
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -3079,11 +3627,18 @@ var Timeline = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
3079
3627
|
scrollLeft: scrollLeft,
|
|
3080
3628
|
setEditorData: handleEditorDataChange,
|
|
3081
3629
|
deltaScrollLeft: autoScroll && handleDeltaScrollLeft,
|
|
3630
|
+
allowCreateTrack: allowCreateTrack,
|
|
3082
3631
|
onScroll: function onScroll(params) {
|
|
3083
3632
|
_onScroll(params);
|
|
3084
3633
|
onScrollVertical && onScrollVertical(params);
|
|
3085
3634
|
}
|
|
3086
|
-
}))) : null, areaCount > 1 ?
|
|
3635
|
+
}))) : null, areaCount > 1 ? /*#__PURE__*/React__default['default'].createElement("div", {
|
|
3636
|
+
id: 'time-editor-container',
|
|
3637
|
+
ref: containerRef,
|
|
3638
|
+
style: {
|
|
3639
|
+
overflow: 'auto'
|
|
3640
|
+
}
|
|
3641
|
+
}, Object.keys(groupedData).map(function (key, index) {
|
|
3087
3642
|
var handleGroupDataChange = function handleGroupDataChange(updatedData) {
|
|
3088
3643
|
var mergedData = editorData.filter(function (item) {
|
|
3089
3644
|
return String(item.type) !== key;
|
|
@@ -3102,9 +3657,9 @@ var Timeline = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
3102
3657
|
};
|
|
3103
3658
|
return /*#__PURE__*/React__default['default'].createElement(EditArea, _objectSpread2(_objectSpread2({
|
|
3104
3659
|
key: key,
|
|
3105
|
-
isMulti: areaCount > 1
|
|
3106
|
-
className: index !== 0 ? "no-flex ".concat(key, " ").concat(index) : "overflow-hidden ".concat(key, " ").concat(index)
|
|
3660
|
+
isMulti: areaCount > 1
|
|
3107
3661
|
}, checkedProps), {}, {
|
|
3662
|
+
className: index !== 0 ? "no-flex ".concat(key, " ").concat(index) : "overflow-hidden ".concat(key, " ").concat(index),
|
|
3108
3663
|
timelineWidth: width,
|
|
3109
3664
|
ref: function ref(_ref4) {
|
|
3110
3665
|
return areaRef.current = _ref4 === null || _ref4 === void 0 ? void 0 : _ref4.domRef.current;
|
|
@@ -3118,12 +3673,14 @@ var Timeline = /*#__PURE__*/React__default['default'].forwardRef(function (props
|
|
|
3118
3673
|
scrollLeft: scrollLeft,
|
|
3119
3674
|
setEditorData: handleGroupDataChange,
|
|
3120
3675
|
deltaScrollLeft: autoScroll && handleDeltaScrollLeft,
|
|
3676
|
+
allowCreateTrack: allowCreateTrack,
|
|
3677
|
+
containerRef: containerRef,
|
|
3121
3678
|
onScroll: function onScroll(params) {
|
|
3122
3679
|
_onScroll(params);
|
|
3123
3680
|
onScrollVertical && onScrollVertical(params);
|
|
3124
3681
|
}
|
|
3125
3682
|
}));
|
|
3126
|
-
}) : null, !hideCursor && (/*#__PURE__*/React__default['default'].createElement(Cursor, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
3683
|
+
})) : null, !hideCursor && (/*#__PURE__*/React__default['default'].createElement(Cursor, _objectSpread2(_objectSpread2({}, checkedProps), {}, {
|
|
3127
3684
|
timelineWidth: width,
|
|
3128
3685
|
disableDrag: isPlaying,
|
|
3129
3686
|
scrollLeft: scrollLeft,
|