@versa_ai/vmml-editor 1.0.55 → 1.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
 
2
- > @versa_ai/vmml-editor@1.0.55 build D:\code\work\vmml-player\packages\editor
2
+ > @versa_ai/vmml-editor@1.0.57 build D:\code\work\vmml-player\packages\editor
3
3
  > tsup
4
4
 
5
5
  CLI Building entry: src/index.tsx
@@ -9,6 +9,7 @@
9
9
  CLI Target: node16
10
10
  CJS Build start
11
11
  ESM Build start
12
+ DTS Build start
12
13
 
13
14
   WARN  ▲ [WARNING] Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.
14
15
 
@@ -66,7 +67,6 @@ More info and automated migrator: https://sass-lang.com/d/slash-div [35
66
67
 
67
68
 
68
69
 
69
- DTS Build start
70
70
 
71
71
   WARN  ▲ [WARNING] Using / 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 [35
124
124
 
125
125
 
126
126
 
127
- CJS dist\index.js 122.48 KB
128
- CJS dist\index.js.map 235.03 KB
129
- CJS ⚡️ Build success in 756ms
130
- ESM dist\index.mjs 120.61 KB
131
- ESM dist\index.mjs.map 234.73 KB
132
- ESM ⚡️ Build success in 757ms
133
- DTS ⚡️ Build success in 1764ms
127
+ CJS dist\index.js 123.55 KB
128
+ CJS dist\index.js.map 237.48 KB
129
+ CJS ⚡️ Build success in 779ms
130
+ ESM dist\index.mjs 121.66 KB
131
+ ESM dist\index.mjs.map 237.17 KB
132
+ ESM ⚡️ Build success in 780ms
133
+ DTS ⚡️ Build success in 1976ms
134
134
  DTS dist\index.d.ts 158.00 B
135
135
  DTS dist\index.d.mts 158.00 B
package/dist/index.js CHANGED
@@ -1033,7 +1033,7 @@ function usePeekControl(canvas, hideConfig) {
1033
1033
  return canvas;
1034
1034
  }
1035
1035
  var EditorCanvas = react.forwardRef(
1036
- ({ previewState, showCanvas, canvasSize, enterPreview, intoTextEdit, frame, vmml, dragState, initFcObjs, editClips = [], onVideoChange, isBatchModify, hideConfig, textWarapCenter, updateVmml }, ref) => {
1036
+ ({ lockInBounds, previewState, showCanvas, canvasSize, enterPreview, intoTextEdit, frame, vmml, dragState, initFcObjs, editClips = [], onVideoChange, isBatchModify, hideConfig, textWarapCenter, updateVmml }, ref) => {
1037
1037
  const [fc, setFc] = react.useState(null);
1038
1038
  const [history, setHistory] = react.useState(null);
1039
1039
  const [canvasReady, setCanvasReady] = react.useState(false);
@@ -1043,6 +1043,7 @@ var EditorCanvas = react.forwardRef(
1043
1043
  const heightScaleRef = react.useRef(1);
1044
1044
  const widthScaleRef = react.useRef(1);
1045
1045
  const fontCacheRef = react.useRef(/* @__PURE__ */ new Map());
1046
+ const lockInBoundsRef = react.useRef(lockInBounds);
1046
1047
  const initCanvas = () => {
1047
1048
  const canvas = new fabric.fabric.Canvas("canvas", {
1048
1049
  width: canvasSize.width,
@@ -1114,9 +1115,27 @@ var EditorCanvas = react.forwardRef(
1114
1115
  vmmlConverterRef.current.changeMute(clipData);
1115
1116
  });
1116
1117
  canvas.on("object:textEdit", (e) => {
1118
+ console.log("1111111111");
1117
1119
  const active = canvas.getActiveObject();
1118
1120
  handleIntoTextMenu(active, canvas);
1119
1121
  });
1122
+ canvas.on("object:moving", (e) => {
1123
+ if (!lockInBoundsRef.current) return;
1124
+ const obj = e.target;
1125
+ const canvasWidth = canvas.getWidth();
1126
+ const canvasHeight = canvas.getHeight();
1127
+ let left = obj.left;
1128
+ let top = obj.top;
1129
+ let w = obj.width;
1130
+ let h = obj.height;
1131
+ const paddingX = 15;
1132
+ const paddingY = 10;
1133
+ if (left <= w / 2 - paddingX) left = w / 2 - paddingX;
1134
+ if (left >= canvasWidth - (w / 2 - paddingX - 2.5)) left = canvasWidth - (w / 2 - paddingX - 2.5);
1135
+ if (top <= (h - paddingY) / 2) top = (h - paddingY) / 2;
1136
+ if (top >= canvasHeight - (h - paddingY) / 2) top = canvasHeight - (h - paddingY) / 2;
1137
+ obj.set({ left, top }).setCoords();
1138
+ });
1120
1139
  };
1121
1140
  const imitateDBclick = (active, canvas) => {
1122
1141
  active.isSelected++;
@@ -1278,7 +1297,9 @@ var EditorCanvas = react.forwardRef(
1278
1297
  top,
1279
1298
  angle: posParam.rotationZ,
1280
1299
  originX: "center",
1300
+ // 圆点:中心点
1281
1301
  originY: "center",
1302
+ // 圆点:中心点
1282
1303
  clipData: {
1283
1304
  id: clip.id,
1284
1305
  isMute: null,
@@ -1712,6 +1733,9 @@ var EditorCanvas = react.forwardRef(
1712
1733
  }
1713
1734
  }
1714
1735
  }, [fc]);
1736
+ react.useEffect(() => {
1737
+ lockInBoundsRef.current = lockInBounds;
1738
+ }, [lockInBounds]);
1715
1739
  const getCanvasCtx = () => {
1716
1740
  return fc;
1717
1741
  };
@@ -2500,6 +2524,7 @@ var EditorFn = ({
2500
2524
  maxText = 10,
2501
2525
  maxVideo = 5,
2502
2526
  videoMenus = [],
2527
+ controls = true,
2503
2528
  onMenuChange,
2504
2529
  showTextButtons = false,
2505
2530
  editableArray = [],
@@ -2511,6 +2536,7 @@ var EditorFn = ({
2511
2536
  textWarapCenter = false,
2512
2537
  backgroundColor = "#000",
2513
2538
  existenceBorderRadio = true,
2539
+ lockInBounds = false,
2514
2540
  hideConfig = { hideDelete: false, hideEdit: false, hideMute: false, hideVolume: false }
2515
2541
  // { hideDelete: false, hideEdit: false, hideMute: false, hideVolume: false }
2516
2542
  }, ref) => {
@@ -3005,6 +3031,7 @@ var EditorFn = ({
3005
3031
  /* @__PURE__ */ jsxRuntime.jsx(
3006
3032
  EditorCanvas_default,
3007
3033
  {
3034
+ lockInBounds,
3008
3035
  ref: canvasRef,
3009
3036
  previewState,
3010
3037
  showCanvas,
@@ -3025,7 +3052,7 @@ var EditorFn = ({
3025
3052
  ),
3026
3053
  /* @__PURE__ */ jsxRuntime.jsx(Loading_default, { show: loading })
3027
3054
  ] }) }),
3028
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "controls-box", children: /* @__PURE__ */ jsxRuntime.jsx(
3055
+ controls && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "controls-box", children: /* @__PURE__ */ jsxRuntime.jsx(
3029
3056
  Controls_default,
3030
3057
  {
3031
3058
  backgroundColor,