@versa_ai/vmml-editor 1.0.15 → 1.0.17
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/.turbo/turbo-build.log +9 -9
- package/dist/index.js +118 -50
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +118 -50
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/EditorCanvas.tsx +142 -98
- package/src/index.tsx +75 -46
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @versa_ai/vmml-editor@1.0.
|
|
2
|
+
> @versa_ai/vmml-editor@1.0.17 build D:\code\work\vmml-player\packages\editor
|
|
3
3
|
> tsup
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.tsx
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
[34mCLI[39m Target: node16
|
|
10
10
|
[34mCJS[39m Build start
|
|
11
11
|
[34mESM[39m Build start
|
|
12
|
-
[34mDTS[39m Build start
|
|
13
12
|
|
|
14
13
|
[43m[30m WARN [39m[49m [33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mUsing / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.
|
|
15
14
|
|
|
@@ -67,6 +66,7 @@ More info and automated migrator: https://sass-lang.com/d/slash-div[0m [1m[35
|
|
|
67
66
|
|
|
68
67
|
|
|
69
68
|
|
|
69
|
+
[34mDTS[39m Build start
|
|
70
70
|
|
|
71
71
|
[43m[30m WARN [39m[49m [33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mUsing / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.
|
|
72
72
|
|
|
@@ -124,12 +124,12 @@ More info and automated migrator: https://sass-lang.com/d/slash-div[0m [1m[35
|
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
|
|
127
|
-
[
|
|
128
|
-
[
|
|
129
|
-
[
|
|
130
|
-
[
|
|
131
|
-
[
|
|
132
|
-
[
|
|
133
|
-
[32mDTS[39m ⚡️ Build success in
|
|
127
|
+
[32mESM[39m [1mdist\index.mjs [22m[32m110.95 KB[39m
|
|
128
|
+
[32mESM[39m [1mdist\index.mjs.map [22m[32m213.03 KB[39m
|
|
129
|
+
[32mESM[39m ⚡️ Build success in 1002ms
|
|
130
|
+
[32mCJS[39m [1mdist\index.js [22m[32m112.57 KB[39m
|
|
131
|
+
[32mCJS[39m [1mdist\index.js.map [22m[32m213.32 KB[39m
|
|
132
|
+
[32mCJS[39m ⚡️ Build success in 1002ms
|
|
133
|
+
[32mDTS[39m ⚡️ Build success in 2326ms
|
|
134
134
|
[32mDTS[39m [1mdist\index.d.ts [22m[32m158.00 B[39m
|
|
135
135
|
[32mDTS[39m [1mdist\index.d.mts [22m[32m158.00 B[39m
|
package/dist/index.js
CHANGED
|
@@ -1000,9 +1000,11 @@ function usePeekControl(canvas, hideConfig) {
|
|
|
1000
1000
|
return canvas;
|
|
1001
1001
|
}
|
|
1002
1002
|
var EditorCanvas = react.forwardRef(
|
|
1003
|
-
({ previewState, showCanvas, canvasSize, enterPreview, intoTextEdit, frame, vmml, dragState, initFcObjs, onVideoChange, isBatchModify, hideConfig }, ref) => {
|
|
1003
|
+
({ previewState, showCanvas, canvasSize, enterPreview, intoTextEdit, frame, vmml, dragState, initFcObjs, editClips = [], onVideoChange, isBatchModify, hideConfig }, ref) => {
|
|
1004
1004
|
const [fc, setFc] = react.useState(null);
|
|
1005
1005
|
const [history, setHistory] = react.useState(null);
|
|
1006
|
+
const [canvasReady, setCanvasReady] = react.useState(false);
|
|
1007
|
+
const editRenderTime = react.useRef(0);
|
|
1006
1008
|
const waitFcTasks = react.useRef([]);
|
|
1007
1009
|
const vmmlConverterRef = react.useRef(null);
|
|
1008
1010
|
const heightScaleRef = react.useRef(1);
|
|
@@ -1022,6 +1024,7 @@ var EditorCanvas = react.forwardRef(
|
|
|
1022
1024
|
setFc(canvas);
|
|
1023
1025
|
initCanvasEvent(canvas);
|
|
1024
1026
|
usePeekControl(canvas, hideConfig);
|
|
1027
|
+
setCanvasReady(true);
|
|
1025
1028
|
};
|
|
1026
1029
|
const createFcObjs = (canvas) => {
|
|
1027
1030
|
const ns = Math.floor(frame / 30 * 1e6);
|
|
@@ -1193,9 +1196,33 @@ var EditorCanvas = react.forwardRef(
|
|
|
1193
1196
|
waitFcTasks.current.push(updateImage.bind(void 0, id, base64));
|
|
1194
1197
|
}
|
|
1195
1198
|
};
|
|
1199
|
+
const createEditObjes = async (canvas, time) => {
|
|
1200
|
+
const promises = editClips.map((clip) => {
|
|
1201
|
+
if (clip.videoClip) {
|
|
1202
|
+
return createImageFromClip(clip);
|
|
1203
|
+
}
|
|
1204
|
+
if (clip.textClip && !clip.audioClip) {
|
|
1205
|
+
return createTextFromClip(clip);
|
|
1206
|
+
}
|
|
1207
|
+
});
|
|
1208
|
+
const res = await Promise.allSettled(promises);
|
|
1209
|
+
const objects = [];
|
|
1210
|
+
res.forEach((item) => {
|
|
1211
|
+
if (item.status === "fulfilled" && item.value) {
|
|
1212
|
+
objects.push(item.value);
|
|
1213
|
+
}
|
|
1214
|
+
});
|
|
1215
|
+
if (editRenderTime.current === time) {
|
|
1216
|
+
canvas.add(...objects).renderAll();
|
|
1217
|
+
}
|
|
1218
|
+
};
|
|
1196
1219
|
const createImageFromClip = (clip, fc2) => {
|
|
1197
|
-
|
|
1198
|
-
|
|
1220
|
+
return new Promise((resolve) => {
|
|
1221
|
+
const canvas = fc || fc2;
|
|
1222
|
+
if (!canvas || !canvasSize.width) {
|
|
1223
|
+
resolve(null);
|
|
1224
|
+
return;
|
|
1225
|
+
}
|
|
1199
1226
|
const url = /video/g.test(clip.videoClip.mimeType) ? "" : clip.videoClip.sourceUrl;
|
|
1200
1227
|
fabric.fabric.Image.fromURL(url, (img) => {
|
|
1201
1228
|
const { dimension, posParam } = clip.videoClip;
|
|
@@ -1229,16 +1256,14 @@ var EditorCanvas = react.forwardRef(
|
|
|
1229
1256
|
},
|
|
1230
1257
|
visible: frame >= inFrame && frame < inFrame + durationFrame
|
|
1231
1258
|
});
|
|
1232
|
-
canvas.add(img);
|
|
1233
1259
|
img.on("modified", () => {
|
|
1234
1260
|
const fObj = convertToJSON(img);
|
|
1235
1261
|
fObj.src = "";
|
|
1236
1262
|
vmmlConverterRef.current.updateClip(fObj);
|
|
1237
1263
|
});
|
|
1264
|
+
resolve(img);
|
|
1238
1265
|
});
|
|
1239
|
-
}
|
|
1240
|
-
waitFcTasks.current.push(createImageFromClip.bind(void 0, clip));
|
|
1241
|
-
}
|
|
1266
|
+
});
|
|
1242
1267
|
};
|
|
1243
1268
|
const handleRedo = () => {
|
|
1244
1269
|
history.redo();
|
|
@@ -1247,11 +1272,11 @@ var EditorCanvas = react.forwardRef(
|
|
|
1247
1272
|
history.undo();
|
|
1248
1273
|
};
|
|
1249
1274
|
const onBatchModify = (fObj, canvas) => {
|
|
1250
|
-
|
|
1275
|
+
var _a;
|
|
1251
1276
|
if (!canvas) return;
|
|
1252
1277
|
const textObjects = canvas.getObjects().filter((item) => {
|
|
1253
|
-
var
|
|
1254
|
-
return ((
|
|
1278
|
+
var _a2;
|
|
1279
|
+
return ((_a2 = item == null ? void 0 : item.clipData) == null ? void 0 : _a2.type) === "\u6587\u5B57";
|
|
1255
1280
|
});
|
|
1256
1281
|
const { left, top, scaleX, scaleY, angle } = fObj;
|
|
1257
1282
|
textObjects.forEach((textObj) => {
|
|
@@ -1267,10 +1292,20 @@ var EditorCanvas = react.forwardRef(
|
|
|
1267
1292
|
vmmlConverterRef.current.updateClip(updatedFObj);
|
|
1268
1293
|
});
|
|
1269
1294
|
canvas.renderAll();
|
|
1295
|
+
const event = new CustomEvent("editor-vmml-batch-change", {
|
|
1296
|
+
detail: {
|
|
1297
|
+
vmml: ((_a = vmmlConverterRef.current) == null ? void 0 : _a.vmml) ?? null
|
|
1298
|
+
}
|
|
1299
|
+
});
|
|
1300
|
+
window.dispatchEvent(event);
|
|
1270
1301
|
};
|
|
1271
1302
|
const createTextFromClip = async (clip, fc2) => {
|
|
1272
|
-
|
|
1273
|
-
|
|
1303
|
+
return new Promise(async (resolve) => {
|
|
1304
|
+
const canvas = fc || fc2;
|
|
1305
|
+
if (!canvas) {
|
|
1306
|
+
resolve(null);
|
|
1307
|
+
return;
|
|
1308
|
+
}
|
|
1274
1309
|
const { width, height } = vmml.template.dimension;
|
|
1275
1310
|
const fontSize = vmmlUtils.getFontSize(width, height);
|
|
1276
1311
|
const { textContent, backgroundColor, textColor, posParam, fontAssetUrl, alignType } = clip.textClip;
|
|
@@ -1308,7 +1343,7 @@ var EditorCanvas = react.forwardRef(
|
|
|
1308
1343
|
originX: "center",
|
|
1309
1344
|
originY: "center",
|
|
1310
1345
|
clipData: {
|
|
1311
|
-
id:
|
|
1346
|
+
id: clip.id,
|
|
1312
1347
|
inPoint: clip.inPoint,
|
|
1313
1348
|
inFrame: vmmlUtils.getFrames(clip.inPoint, 30),
|
|
1314
1349
|
type: "\u6587\u5B57",
|
|
@@ -1340,11 +1375,9 @@ var EditorCanvas = react.forwardRef(
|
|
|
1340
1375
|
vmmlConverterRef.current.updateClip(fObj);
|
|
1341
1376
|
}
|
|
1342
1377
|
});
|
|
1343
|
-
|
|
1378
|
+
resolve(imgData);
|
|
1344
1379
|
});
|
|
1345
|
-
}
|
|
1346
|
-
waitFcTasks.current.push(createTextFromClip.bind(void 0, clip));
|
|
1347
|
-
}
|
|
1380
|
+
});
|
|
1348
1381
|
};
|
|
1349
1382
|
const getFontFamilyName = (url) => {
|
|
1350
1383
|
const filename = url.split("/").pop() || "";
|
|
@@ -1523,6 +1556,12 @@ var EditorCanvas = react.forwardRef(
|
|
|
1523
1556
|
vmmlConverterRef.current = new VmmlConverter_default({ vmml, canvasSize });
|
|
1524
1557
|
}
|
|
1525
1558
|
}, [canvasSize, vmml]);
|
|
1559
|
+
react.useEffect(() => {
|
|
1560
|
+
if (editClips.length && canvasReady && fc) {
|
|
1561
|
+
editRenderTime.current = Date.now();
|
|
1562
|
+
createEditObjes(fc, editRenderTime.current);
|
|
1563
|
+
}
|
|
1564
|
+
}, [editClips, canvasReady]);
|
|
1526
1565
|
react.useEffect(() => {
|
|
1527
1566
|
if (fc) {
|
|
1528
1567
|
const historyClass2 = new HistoryClass(fc);
|
|
@@ -1533,6 +1572,9 @@ var EditorCanvas = react.forwardRef(
|
|
|
1533
1572
|
}
|
|
1534
1573
|
}
|
|
1535
1574
|
}, [fc]);
|
|
1575
|
+
const getCanvasCtx = () => {
|
|
1576
|
+
return fc;
|
|
1577
|
+
};
|
|
1536
1578
|
react.useImperativeHandle(ref, () => ({
|
|
1537
1579
|
createImage,
|
|
1538
1580
|
createText,
|
|
@@ -1546,8 +1588,9 @@ var EditorCanvas = react.forwardRef(
|
|
|
1546
1588
|
checkObjectInPoint,
|
|
1547
1589
|
createImageFromClip,
|
|
1548
1590
|
createTextFromClip,
|
|
1549
|
-
changeObjectVisible
|
|
1550
|
-
|
|
1591
|
+
changeObjectVisible,
|
|
1592
|
+
getCanvasCtx
|
|
1593
|
+
}), [fc]);
|
|
1551
1594
|
const getActions = () => {
|
|
1552
1595
|
if (history) {
|
|
1553
1596
|
return history.getActionType();
|
|
@@ -2313,7 +2356,7 @@ var VideoMenu = ({ createImage, videoMenus, menuState }) => {
|
|
|
2313
2356
|
var VideoMenu_default = VideoMenu;
|
|
2314
2357
|
var historyClass = new HistoryClass();
|
|
2315
2358
|
var EditorFn = ({
|
|
2316
|
-
vmml,
|
|
2359
|
+
vmml: propVmml,
|
|
2317
2360
|
pauseFrame = 0,
|
|
2318
2361
|
maxText = 10,
|
|
2319
2362
|
maxVideo = 5,
|
|
@@ -2330,7 +2373,7 @@ var EditorFn = ({
|
|
|
2330
2373
|
// { hideDelete: false, hideEdit: false, hideMute: false, hideVolume: false }
|
|
2331
2374
|
}, ref) => {
|
|
2332
2375
|
var _a;
|
|
2333
|
-
|
|
2376
|
+
const [vmmlState, setVmmlState] = react.useState(() => vmmlUtils.convertVmmlTextScaleByForbidden(propVmml));
|
|
2334
2377
|
const textMenuRef = react.useRef(null);
|
|
2335
2378
|
const vmmlPlayerRef = react.useRef();
|
|
2336
2379
|
const canvasRef = react.useRef();
|
|
@@ -2342,7 +2385,7 @@ var EditorFn = ({
|
|
|
2342
2385
|
const [isPlaying, setIsPlaying] = react.useState(false);
|
|
2343
2386
|
const [showCanvas, setShowCanvas] = react.useState(false);
|
|
2344
2387
|
const [filterIds, setFilterIds] = react.useState([]);
|
|
2345
|
-
const [durationInFrames, setDurationInFrames] = react.useState(vmmlUtils.getFrames(((_a =
|
|
2388
|
+
const [durationInFrames, setDurationInFrames] = react.useState(vmmlUtils.getFrames(((_a = vmmlState == null ? void 0 : vmmlState.template) == null ? void 0 : _a.duration) || 1, fps));
|
|
2346
2389
|
const [previewState, setPreviewState] = react.useState(true);
|
|
2347
2390
|
const [menuState, setMenuState] = react.useState("");
|
|
2348
2391
|
const [canvasSize, setCanvasSize] = react.useState({ width: 0, height: 0, top: 0 });
|
|
@@ -2355,15 +2398,17 @@ var EditorFn = ({
|
|
|
2355
2398
|
const [dragState, setDragState] = react.useState(0);
|
|
2356
2399
|
const vmmlConverterRef = react.useRef(null);
|
|
2357
2400
|
const [initFcObjs, setInitFcObjs] = react.useState([]);
|
|
2401
|
+
const [editClips, setEditClips] = react.useState([]);
|
|
2402
|
+
const [refreshEdit, setRefreshEdit] = react.useState(0);
|
|
2358
2403
|
const vmmlFlag = react.useRef(false);
|
|
2359
2404
|
const needPlay = react.useRef(true);
|
|
2360
2405
|
const setVmml = () => {
|
|
2361
2406
|
const { current } = vmmlPlayerRef;
|
|
2362
2407
|
if (!current) return;
|
|
2363
2408
|
if (!once.current) {
|
|
2364
|
-
current.setVmml(
|
|
2409
|
+
current.setVmml(vmmlState, pauseFrame);
|
|
2365
2410
|
} else {
|
|
2366
|
-
current.setVmml(
|
|
2411
|
+
current.setVmml(vmmlState, frame);
|
|
2367
2412
|
}
|
|
2368
2413
|
};
|
|
2369
2414
|
const onPlayerReady = () => {
|
|
@@ -2537,18 +2582,9 @@ var EditorFn = ({
|
|
|
2537
2582
|
setBuffering(false);
|
|
2538
2583
|
};
|
|
2539
2584
|
const initCanEditClips = (tracks = []) => {
|
|
2540
|
-
if (editableArray.length) {
|
|
2585
|
+
if (editableArray.length && tracks.length) {
|
|
2541
2586
|
const list = findEditClips(tracks);
|
|
2542
|
-
|
|
2543
|
-
const { current } = canvasRef;
|
|
2544
|
-
list.forEach((clip) => {
|
|
2545
|
-
if (clip.videoClip) {
|
|
2546
|
-
current.createImageFromClip(clip);
|
|
2547
|
-
} else {
|
|
2548
|
-
if (!clip.audioClip) current.createTextFromClip(clip);
|
|
2549
|
-
}
|
|
2550
|
-
});
|
|
2551
|
-
}
|
|
2587
|
+
setEditClips(list);
|
|
2552
2588
|
}
|
|
2553
2589
|
};
|
|
2554
2590
|
const findEditClips = (tracks = []) => {
|
|
@@ -2576,7 +2612,7 @@ var EditorFn = ({
|
|
|
2576
2612
|
};
|
|
2577
2613
|
const getVmml = () => {
|
|
2578
2614
|
try {
|
|
2579
|
-
const tracks =
|
|
2615
|
+
const tracks = vmmlState.template.tracks.filter((item) => item.editorType === "\u6587\u5B57");
|
|
2580
2616
|
tracks.forEach((track) => {
|
|
2581
2617
|
track.clips.forEach((clip) => {
|
|
2582
2618
|
clip.fObj.src = "";
|
|
@@ -2585,7 +2621,7 @@ var EditorFn = ({
|
|
|
2585
2621
|
} catch {
|
|
2586
2622
|
console.log("\u51FA\u9519\u4E86");
|
|
2587
2623
|
}
|
|
2588
|
-
return
|
|
2624
|
+
return vmmlState;
|
|
2589
2625
|
};
|
|
2590
2626
|
const getPlayer = () => {
|
|
2591
2627
|
return player;
|
|
@@ -2602,18 +2638,33 @@ var EditorFn = ({
|
|
|
2602
2638
|
}
|
|
2603
2639
|
}, [previewState]);
|
|
2604
2640
|
react.useEffect(() => {
|
|
2605
|
-
if (canvasSize.width && canvasSize.height &&
|
|
2606
|
-
vmmlConverterRef.current
|
|
2641
|
+
if (canvasSize.width && canvasSize.height && vmmlState) {
|
|
2642
|
+
if (!vmmlConverterRef.current) {
|
|
2643
|
+
vmmlConverterRef.current = new VmmlConverter_default({ vmml: vmmlState, canvasSize });
|
|
2644
|
+
} else {
|
|
2645
|
+
vmmlConverterRef.current.vmml = vmmlState;
|
|
2646
|
+
}
|
|
2607
2647
|
}
|
|
2608
|
-
|
|
2609
|
-
|
|
2648
|
+
}, [canvasSize, vmmlState]);
|
|
2649
|
+
react.useEffect(() => {
|
|
2650
|
+
if (editableArray.length && (vmmlState == null ? void 0 : vmmlState.template)) {
|
|
2651
|
+
initCanEditClips(vmmlState.template.tracks);
|
|
2610
2652
|
}
|
|
2611
|
-
}, [
|
|
2653
|
+
}, [editableArray, refreshEdit]);
|
|
2654
|
+
react.useEffect(() => {
|
|
2655
|
+
var _a2;
|
|
2656
|
+
if (propVmml) {
|
|
2657
|
+
const convertedVmml = vmmlUtils.convertVmmlTextScaleByForbidden(propVmml);
|
|
2658
|
+
setVmmlState(convertedVmml);
|
|
2659
|
+
setDurationInFrames(vmmlUtils.getFrames(((_a2 = propVmml == null ? void 0 : propVmml.template) == null ? void 0 : _a2.duration) || 1, fps));
|
|
2660
|
+
setRefreshEdit(Date.now());
|
|
2661
|
+
}
|
|
2662
|
+
}, [propVmml]);
|
|
2612
2663
|
react.useEffect(() => {
|
|
2613
|
-
if (
|
|
2614
|
-
initFcObjects(
|
|
2664
|
+
if (vmmlState) {
|
|
2665
|
+
initFcObjects(vmmlState.template.tracks);
|
|
2615
2666
|
}
|
|
2616
|
-
}, [
|
|
2667
|
+
}, [vmmlState]);
|
|
2617
2668
|
react.useEffect(() => {
|
|
2618
2669
|
if (player) {
|
|
2619
2670
|
const parent = player.getContainerNode();
|
|
@@ -2648,7 +2699,7 @@ var EditorFn = ({
|
|
|
2648
2699
|
if (dragState === 2) {
|
|
2649
2700
|
needPlay.current = false;
|
|
2650
2701
|
const { current } = vmmlPlayerRef;
|
|
2651
|
-
current.setVmml(
|
|
2702
|
+
current.setVmml(vmmlState, frame, false);
|
|
2652
2703
|
setShowCanvas(false);
|
|
2653
2704
|
}
|
|
2654
2705
|
if (dragState === 3 || dragState === 4) {
|
|
@@ -2656,6 +2707,21 @@ var EditorFn = ({
|
|
|
2656
2707
|
setPreviewState(false);
|
|
2657
2708
|
}
|
|
2658
2709
|
}, [dragState]);
|
|
2710
|
+
const updateVmml = (v) => {
|
|
2711
|
+
var _a2, _b, _c;
|
|
2712
|
+
const { current: playerCurrent } = vmmlPlayerRef;
|
|
2713
|
+
const { current: canvasCurrent } = canvasRef;
|
|
2714
|
+
if (!playerCurrent) return;
|
|
2715
|
+
(_b = (_a2 = canvasCurrent == null ? void 0 : canvasCurrent.getCanvasCtx()) == null ? void 0 : _a2.clear) == null ? void 0 : _b.call(_a2);
|
|
2716
|
+
const convertedVmml = vmmlUtils.convertVmmlTextScaleByForbidden(v);
|
|
2717
|
+
setVmmlState(convertedVmml);
|
|
2718
|
+
setDurationInFrames(vmmlUtils.getFrames(((_c = v == null ? void 0 : v.template) == null ? void 0 : _c.duration) || 1, fps));
|
|
2719
|
+
playerCurrent.setVmml(convertedVmml, pauseFrame);
|
|
2720
|
+
setRefreshEdit(Date.now());
|
|
2721
|
+
if (canvasCurrent) {
|
|
2722
|
+
canvasCurrent.checkObjectInPoint(pauseFrame);
|
|
2723
|
+
}
|
|
2724
|
+
};
|
|
2659
2725
|
react.useImperativeHandle(
|
|
2660
2726
|
ref,
|
|
2661
2727
|
() => ({
|
|
@@ -2664,9 +2730,10 @@ var EditorFn = ({
|
|
|
2664
2730
|
getVmml,
|
|
2665
2731
|
getPlayer,
|
|
2666
2732
|
texteditClose,
|
|
2667
|
-
textFinish
|
|
2733
|
+
textFinish,
|
|
2734
|
+
updateVmml
|
|
2668
2735
|
}),
|
|
2669
|
-
[
|
|
2736
|
+
[vmmlState, player]
|
|
2670
2737
|
);
|
|
2671
2738
|
const texteditClose = () => {
|
|
2672
2739
|
if (textMenuRef) {
|
|
@@ -2696,7 +2763,7 @@ var EditorFn = ({
|
|
|
2696
2763
|
vmmlPlayer.VmmlPlayer,
|
|
2697
2764
|
{
|
|
2698
2765
|
ref: vmmlPlayerRef,
|
|
2699
|
-
vmml,
|
|
2766
|
+
vmml: vmmlState,
|
|
2700
2767
|
existenceBorderRadio: true,
|
|
2701
2768
|
moveToBeginningWhenEnded: true,
|
|
2702
2769
|
muted: true,
|
|
@@ -2717,9 +2784,10 @@ var EditorFn = ({
|
|
|
2717
2784
|
enterPreview,
|
|
2718
2785
|
intoTextEdit,
|
|
2719
2786
|
frame,
|
|
2720
|
-
vmml,
|
|
2787
|
+
vmml: vmmlState,
|
|
2721
2788
|
dragState,
|
|
2722
2789
|
initFcObjs,
|
|
2790
|
+
editClips,
|
|
2723
2791
|
onVideoChange,
|
|
2724
2792
|
isBatchModify,
|
|
2725
2793
|
hideConfig
|