@netless/forge-whiteboard 1.3.0-beta.1 → 1.3.1
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/changelog.md +5 -3
- package/dist/model/renderable/ImageModel.d.ts +3 -0
- package/dist/model/renderable/ImageModel.d.ts.map +1 -1
- package/dist/whiteboard.esm.js +30 -4
- package/dist/whiteboard.esm.js.map +2 -2
- package/dist/whiteboard.js +30 -4
- package/dist/whiteboard.js.map +2 -2
- package/package.json +2 -2
package/changelog.md
CHANGED
|
@@ -76,7 +76,9 @@
|
|
|
76
76
|
### 1.2.0
|
|
77
77
|
|
|
78
78
|
- 修复 Apple Pencil 手掌误触导致笔迹中断的问题
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
79
|
+
- 优化曲线笔迹质量与缩放场景下的书写一致性,减少缩放后笔迹表现失真
|
|
80
|
+
- WhiteboardTool 基类增加拖拽事件节流,降低高频拖拽带来的卡顿
|
|
81
|
+
- 插入图片时自动按当前视口居中并按比例适配展示
|
|
82
|
+
- 点文本初始化流程优化,避免首次创建时 points 重复设置
|
|
83
|
+
- 图片渲染与截图流程增加跨域处理和错误兜底,提升导出稳定性
|
|
82
84
|
- FPS 指标改为每 60 秒上报,增加 P90 百分位
|
|
@@ -5,12 +5,15 @@ import { LiveCursor } from '../../LiveCursor';
|
|
|
5
5
|
export declare class ImageModel extends ElementModel {
|
|
6
6
|
item: paper.Raster | null;
|
|
7
7
|
private imageSets;
|
|
8
|
+
private imageElement;
|
|
9
|
+
private imageLoadVersion;
|
|
8
10
|
protected clearLocalPointsWhenYPointsChange: boolean;
|
|
9
11
|
protected shouldUseLocalPoints: boolean;
|
|
10
12
|
protected localPointsPick: number;
|
|
11
13
|
private get src();
|
|
12
14
|
constructor(root: Y.Map<any>, scope: paper.PaperScope, imageSets: HTMLDivElement, liveCursor: LiveCursor, isPerformanceMode: () => boolean);
|
|
13
15
|
protected subDispose(): void;
|
|
16
|
+
private bindImageLoad;
|
|
14
17
|
protected createPaperItem(): void;
|
|
15
18
|
protected onVectorUpdate(): void;
|
|
16
19
|
vectorKeys(): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageModel.d.ts","sourceRoot":"","sources":["../../../src/model/renderable/ImageModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,qBAAa,UAAW,SAAQ,YAAY;IAEnC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAQ;IAExC,OAAO,CAAC,SAAS,CAAiB;IAClC,SAAS,CAAC,iCAAiC,UAAQ;IACnD,SAAS,CAAC,oBAAoB,UAAQ;IACtC,SAAS,CAAC,eAAe,SAAK;IAE9B,OAAO,KAAK,GAAG,GAEd;gBAEkB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,OAAO;IASjJ,SAAS,CAAC,UAAU;
|
|
1
|
+
{"version":3,"file":"ImageModel.d.ts","sourceRoot":"","sources":["../../../src/model/renderable/ImageModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,qBAAa,UAAW,SAAQ,YAAY;IAEnC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAQ;IAExC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,SAAS,CAAC,iCAAiC,UAAQ;IACnD,SAAS,CAAC,oBAAoB,UAAQ;IACtC,SAAS,CAAC,eAAe,SAAK;IAE9B,OAAO,KAAK,GAAG,GAEd;gBAEkB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,OAAO;IASjJ,SAAS,CAAC,UAAU;IAiBpB,OAAO,CAAC,aAAa;IAarB,SAAS,CAAC,eAAe,IAAI,IAAI;IAoBjC,SAAS,CAAC,cAAc,IAAI,IAAI;IAOzB,UAAU,IAAI,MAAM,EAAE;IAI7B,SAAS,CAAC,SAAS,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAO/D,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAW/B,YAAY,IAAI,YAAY;IAQnC,SAAS,CAAC,cAAc,IAAI,GAAG;IAI/B,SAAS,CAAC,eAAe,IAAI,IAAI;CAGlC"}
|
package/dist/whiteboard.esm.js
CHANGED
|
@@ -28041,6 +28041,8 @@ var ImageModel = class extends ElementModel {
|
|
|
28041
28041
|
super(root, scope, liveCursor, isPerformanceMode);
|
|
28042
28042
|
_defineProperty16(this, "item", null);
|
|
28043
28043
|
_defineProperty16(this, "imageSets", void 0);
|
|
28044
|
+
_defineProperty16(this, "imageElement", null);
|
|
28045
|
+
_defineProperty16(this, "imageLoadVersion", 0);
|
|
28044
28046
|
_defineProperty16(this, "clearLocalPointsWhenYPointsChange", true);
|
|
28045
28047
|
_defineProperty16(this, "shouldUseLocalPoints", true);
|
|
28046
28048
|
_defineProperty16(this, "localPointsPick", 4);
|
|
@@ -28051,22 +28053,44 @@ var ImageModel = class extends ElementModel {
|
|
|
28051
28053
|
this.root.set(ElementModel.KEYS.shadow, "");
|
|
28052
28054
|
}
|
|
28053
28055
|
subDispose() {
|
|
28056
|
+
this.imageLoadVersion++;
|
|
28057
|
+
if (this.imageElement) {
|
|
28058
|
+
this.imageElement.onload = null;
|
|
28059
|
+
this.imageElement.onerror = null;
|
|
28060
|
+
this.imageElement.remove();
|
|
28061
|
+
this.imageElement = null;
|
|
28062
|
+
return;
|
|
28063
|
+
}
|
|
28054
28064
|
const img = this.imageSets.querySelector(`[id='${this.uuid}']`);
|
|
28055
28065
|
if (img) {
|
|
28066
|
+
img.onload = null;
|
|
28067
|
+
img.onerror = null;
|
|
28056
28068
|
img.remove();
|
|
28057
28069
|
}
|
|
28058
28070
|
}
|
|
28071
|
+
bindImageLoad(img) {
|
|
28072
|
+
const loadVersion = ++this.imageLoadVersion;
|
|
28073
|
+
img.onload = () => {
|
|
28074
|
+
if (this.imageLoadVersion !== loadVersion || !this.item) {
|
|
28075
|
+
return;
|
|
28076
|
+
}
|
|
28077
|
+
};
|
|
28078
|
+
img.onerror = null;
|
|
28079
|
+
}
|
|
28059
28080
|
createPaperItem() {
|
|
28060
28081
|
if (this.item) {
|
|
28061
28082
|
return;
|
|
28062
28083
|
}
|
|
28063
|
-
|
|
28064
|
-
|
|
28084
|
+
let img = this.imageSets.querySelector(`[id='${this.uuid}']`);
|
|
28085
|
+
if (!img) {
|
|
28086
|
+
img = document.createElement("img");
|
|
28065
28087
|
img.crossOrigin = "anonymous";
|
|
28066
|
-
img.src = this.src;
|
|
28067
28088
|
img.id = this.uuid;
|
|
28068
28089
|
this.imageSets.appendChild(img);
|
|
28069
28090
|
}
|
|
28091
|
+
this.imageElement = img;
|
|
28092
|
+
this.bindImageLoad(img);
|
|
28093
|
+
img.src = this.src;
|
|
28070
28094
|
this.item = new this.scope.Raster(this.uuid);
|
|
28071
28095
|
const matrix = new this.scope.Matrix(this.pointsMatrix);
|
|
28072
28096
|
this.item.matrix = matrix;
|
|
@@ -28089,8 +28113,10 @@ var ImageModel = class extends ElementModel {
|
|
|
28089
28113
|
}
|
|
28090
28114
|
onStyleKeyUpdate(key) {
|
|
28091
28115
|
if (key === "src") {
|
|
28092
|
-
const imgElement = this.imageSets.querySelector(`[id='${this.uuid}']`);
|
|
28116
|
+
const imgElement = this.imageElement ?? this.imageSets.querySelector(`[id='${this.uuid}']`);
|
|
28093
28117
|
if (imgElement) {
|
|
28118
|
+
this.imageElement = imgElement;
|
|
28119
|
+
this.bindImageLoad(imgElement);
|
|
28094
28120
|
imgElement.src = this.src;
|
|
28095
28121
|
}
|
|
28096
28122
|
}
|