@versa_ai/vmml-editor 1.0.20 → 1.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +8 -8
- package/dist/index.js +40 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +40 -9
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/components/EditorCanvas.tsx +72 -38
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.23 build D:\code\work\vmml-player\packages\editor
|
|
3
3
|
> tsup
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.tsx
|
|
@@ -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[32m113.36 KB[39m
|
|
128
|
+
[32mESM[39m [1mdist\index.mjs.map [22m[32m217.80 KB[39m
|
|
129
|
+
[32mESM[39m ⚡️ Build success in 820ms
|
|
130
|
+
[32mCJS[39m [1mdist\index.js [22m[32m115.00 KB[39m
|
|
131
|
+
[32mCJS[39m [1mdist\index.js.map [22m[32m218.10 KB[39m
|
|
132
|
+
[32mCJS[39m ⚡️ Build success in 821ms
|
|
133
|
+
[32mDTS[39m ⚡️ Build success in 2291ms
|
|
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
|
@@ -1323,7 +1323,7 @@ var EditorCanvas = react.forwardRef(
|
|
|
1323
1323
|
const { textContent, backgroundColor, textColor, posParam, fontAssetUrl, alignType, strokeColor, strokeWidth } = clip.textClip;
|
|
1324
1324
|
const scaleX = posParam.scaleX * fontSize / 22 / widthScaleRef.current;
|
|
1325
1325
|
const scaleY = posParam.scaleY * fontSize / 22 / heightScaleRef.current;
|
|
1326
|
-
const strokeW = strokeWidth
|
|
1326
|
+
const strokeW = strokeWidth * 26 * 1.5 / fontSize;
|
|
1327
1327
|
const left = canvasSize.width * posParam.centerX;
|
|
1328
1328
|
const top = canvasSize.height * posParam.centerY;
|
|
1329
1329
|
const bgColor = backgroundColor ? vmmlUtils.argbToRgba(backgroundColor) : "transparent";
|
|
@@ -1356,6 +1356,7 @@ var EditorCanvas = react.forwardRef(
|
|
|
1356
1356
|
angle: posParam.rotationZ,
|
|
1357
1357
|
originX: "center",
|
|
1358
1358
|
originY: "center",
|
|
1359
|
+
objectCaching: false,
|
|
1359
1360
|
clipData: {
|
|
1360
1361
|
id: clip.id,
|
|
1361
1362
|
inPoint: clip.inPoint,
|
|
@@ -1406,9 +1407,10 @@ var EditorCanvas = react.forwardRef(
|
|
|
1406
1407
|
if (lower.includes(".ttf")) return "truetype";
|
|
1407
1408
|
return null;
|
|
1408
1409
|
};
|
|
1409
|
-
const embedFontInSVG = async (svgString, url) => {
|
|
1410
|
+
const embedFontInSVG = async (svgString, url, fontBase64) => {
|
|
1410
1411
|
if (url) {
|
|
1411
|
-
|
|
1412
|
+
let res = fontBase64;
|
|
1413
|
+
if (!res) await vmmlUtils.urlToBlob({ url });
|
|
1412
1414
|
const format = detectFontFormat(url);
|
|
1413
1415
|
const fontFamilyName = getFontFamilyName(url);
|
|
1414
1416
|
const srcValue = format ? `url('${res}') format('${format}')` : `url('${res}')`;
|
|
@@ -1424,7 +1426,22 @@ var EditorCanvas = react.forwardRef(
|
|
|
1424
1426
|
}
|
|
1425
1427
|
return svgString;
|
|
1426
1428
|
};
|
|
1429
|
+
const loadFont = async (url) => {
|
|
1430
|
+
if (!url) return null;
|
|
1431
|
+
try {
|
|
1432
|
+
const base64 = await vmmlUtils.urlToBlob({ url });
|
|
1433
|
+
const fontFamilyName = getFontFamilyName(url);
|
|
1434
|
+
const format = detectFontFormat(url);
|
|
1435
|
+
const fontFace = new FontFace(fontFamilyName, `url(${base64})${format ? ` format('${format}')` : ""}`);
|
|
1436
|
+
await fontFace.load();
|
|
1437
|
+
document.fonts.add(fontFace);
|
|
1438
|
+
return base64;
|
|
1439
|
+
} catch (e) {
|
|
1440
|
+
return null;
|
|
1441
|
+
}
|
|
1442
|
+
};
|
|
1427
1443
|
const createTextImg = async ({ textContent, bgColor, textColor, stColor, strokeW, fontAssetUrl = null, textBasicInfo }) => {
|
|
1444
|
+
const fontBase64 = await loadFont(fontAssetUrl);
|
|
1428
1445
|
const container = document.createElement("div");
|
|
1429
1446
|
container.style.backgroundColor = bgColor;
|
|
1430
1447
|
container.style.boxSizing = "content-box";
|
|
@@ -1434,16 +1451,30 @@ var EditorCanvas = react.forwardRef(
|
|
|
1434
1451
|
const fontFamily = fontAssetUrl ? getFontFamilyName(fontAssetUrl) : "sansMedium";
|
|
1435
1452
|
lines.forEach((line) => {
|
|
1436
1453
|
const p = document.createElement("p");
|
|
1437
|
-
p.style.
|
|
1454
|
+
p.style.position = "relative";
|
|
1438
1455
|
p.style.fontSize = "22px";
|
|
1439
1456
|
p.style.lineHeight = "22px";
|
|
1440
1457
|
p.style.fontFamily = fontFamily;
|
|
1441
1458
|
p.style.whiteSpace = "nowrap";
|
|
1442
|
-
p.style.padding = "0";
|
|
1443
1459
|
p.style.margin = "0";
|
|
1444
|
-
p.style.
|
|
1445
|
-
p.style.
|
|
1446
|
-
|
|
1460
|
+
p.style.padding = "0";
|
|
1461
|
+
p.style.zIndex = "2";
|
|
1462
|
+
const fill = document.createElement("span");
|
|
1463
|
+
fill.textContent = line || " ";
|
|
1464
|
+
fill.style.color = textColor;
|
|
1465
|
+
fill.style.position = "relative";
|
|
1466
|
+
fill.style.zIndex = "1";
|
|
1467
|
+
const stroke = document.createElement("span");
|
|
1468
|
+
stroke.textContent = line || " ";
|
|
1469
|
+
stroke.style.position = "absolute";
|
|
1470
|
+
stroke.style.left = "0";
|
|
1471
|
+
stroke.style.top = "0";
|
|
1472
|
+
stroke.style.color = "transparent";
|
|
1473
|
+
stroke.style.webkitTextStrokeWidth = `${strokeW}px`;
|
|
1474
|
+
stroke.style.webkitTextStrokeColor = stColor;
|
|
1475
|
+
stroke.style.zIndex = "-1";
|
|
1476
|
+
p.appendChild(fill);
|
|
1477
|
+
p.appendChild(stroke);
|
|
1447
1478
|
container.appendChild(p);
|
|
1448
1479
|
});
|
|
1449
1480
|
container.style.padding = "6.5px 7px 6.5px 7px";
|
|
@@ -1452,7 +1483,7 @@ var EditorCanvas = react.forwardRef(
|
|
|
1452
1483
|
const { width, height } = container == null ? void 0 : container.getBoundingClientRect();
|
|
1453
1484
|
const dataurl = await domToImage.toSvg(container);
|
|
1454
1485
|
document.body.removeChild(container);
|
|
1455
|
-
const base64Image = await embedFontInSVG(dataurl, fontAssetUrl);
|
|
1486
|
+
const base64Image = await embedFontInSVG(dataurl, fontAssetUrl, fontBase64);
|
|
1456
1487
|
return { base64Image, height, width };
|
|
1457
1488
|
};
|
|
1458
1489
|
const createText = async ({ textContent, bgColor, textColor, position, textBasicInfo, id }, fc2) => {
|