@netless/appliance-plugin 1.1.43-beta.0 → 1.1.43-beta.2
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/READMA.zh-CN.md +1 -1
- package/README.md +5 -1
- package/dist/appliance-plugin.js +1 -1
- package/dist/appliance-plugin.mjs +1 -1
- package/dist/{bridge-DcVN05tP.mjs → bridge-DzcPAEgn.mjs} +1 -1
- package/dist/{bridge-D68E09T9.js → bridge-iTPNL78o.js} +1 -1
- package/dist/bridge.js +1 -1
- package/dist/bridge.mjs +1 -1
- package/dist/core/enum.d.ts +3 -1
- package/dist/core/mainEngine.d.ts +8 -2
- package/dist/core/mainThread/subLocalThread.d.ts +6 -1
- package/dist/core/tools/pencilEraserBitMap.d.ts +6 -2
- package/dist/core/types.d.ts +2 -0
- package/dist/core/worker/fullWorkerLocal.d.ts +4 -1
- package/dist/fullWorker.js +89 -89
- package/dist/{index-BNHPCii1.mjs → index-14J65ewZ.mjs} +271 -241
- package/dist/index-B6nsfvHS.js +570 -0
- package/dist/index-B9E9m3wQ.js +1 -0
- package/dist/{index-B_vZ9d3x.mjs → index-BARnlEAY.mjs} +7772 -7621
- package/dist/{index-CWDWQZBs.mjs → index-BGKGGHj6.mjs} +271 -241
- package/dist/index-Bgw8Yl5s.js +570 -0
- package/dist/{index-DiLPVPwQ.js → index-Bp0tojzJ.js} +1 -1
- package/dist/{index-GZUDLXJC.js → index-C-LIZHUj.js} +1 -1
- package/dist/{index-K_0NX6pD.mjs → index-D2r_A0b8.mjs} +1 -1
- package/dist/index-DVTWLAHF.js +1 -0
- package/dist/{index-CV8YaU3F.mjs → index-DWS4kyH2.mjs} +1 -1
- package/dist/{index-NG5kKK1W.mjs → index-DkMJ7xR-.mjs} +9004 -8853
- package/dist/plugin/bitmapEraserOptions.d.ts +0 -2
- package/dist/plugin/types.d.ts +0 -4
- package/dist/subWorker.js +85 -85
- package/package.json +1 -1
- package/dist/index-C2AHqjj8.js +0 -570
- package/dist/index-DChI1--R.js +0 -1
- package/dist/index-DFo0Gmfx.js +0 -570
- package/dist/index-GBYM7kT5.js +0 -1
package/READMA.zh-CN.md
CHANGED
|
@@ -912,7 +912,7 @@ const plugin = await ApplianceSinglePlugin.getInstance(room, {
|
|
|
912
912
|
});
|
|
913
913
|
```
|
|
914
914
|
|
|
915
|
-
|
|
915
|
+
`fullLayerDoingMask` 已移除;旧调用方即使传入也会被忽略,所有 Bitmap Eraser 事务统一使用 FullLayer Doing Mask。`fullLayerDoingMaskMaxInputPoints` 默认 500,可由客户配置。`disableEraseImage` 不影响 Bitmap Eraser 对 Image 的直接擦除。
|
|
916
916
|
|
|
917
917
|
### 前端调试
|
|
918
918
|
|
package/README.md
CHANGED
|
@@ -959,7 +959,11 @@ const plugin = await ApplianceSinglePlugin.getInstance(room, {
|
|
|
959
959
|
});
|
|
960
960
|
```
|
|
961
961
|
|
|
962
|
-
Do not configure `fullLayerDoingMask
|
|
962
|
+
Do not configure `fullLayerDoingMask`; it has been removed and is ignored if supplied by a
|
|
963
|
+
legacy caller. All Bitmap Eraser transactions use the single FullLayer Doing Mask path.
|
|
964
|
+
`fullLayerDoingMaskMaxInputPoints` defaults to 500 and
|
|
965
|
+
can be configured per customer. `disableEraseImage` does not prevent the Bitmap Eraser from
|
|
966
|
+
directly erasing Image appliances.
|
|
963
967
|
|
|
964
968
|
### Front-end Debugging
|
|
965
969
|
During the integration process, if you want to understand and track the internal status of the plugin, you can view internal data through the following console commands.
|
package/dist/appliance-plugin.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-Bgw8Yl5s.js");exports.ActiveContainerType=e.ActiveContainerType;exports.ApplianceMultiPlugin=e.ApplianceMultiPlugin;exports.ApplianceNames=e.ApplianceNames;exports.AppliancePluginCursorNames=e.AppliancePluginCursorNames;exports.ApplianceSigleWrapper=e.ApplianceSigleWrapper;exports.ApplianceSinglePlugin=e.ApplianceSinglePlugin;exports.Camera_Ack_Slow_Timeout=e.Camera_Ack_Slow_Timeout;exports.Camera_Transport_Fallback_Timeout=e.Camera_Transport_Fallback_Timeout;exports.Camera_Update_Business_Timeout=e.Camera_Update_Business_Timeout;exports.Cursor_Hover_Id=e.Cursor_Hover_Id;exports.ECanvasShowType=e.ECanvasShowType;exports.EDataType=e.EDataType;exports.EForceStopReason=e.EForceStopReason;exports.EImageType=e.EImageType;exports.EMatrixrRelationType=e.EMatrixrRelationType;exports.EOperationType=e.EOperationType;exports.EPostMessageType=e.EPostMessageType;exports.ERenderFilterType=e.ERenderFilterType;exports.ESVGType=e.ESVGType;exports.EScaleType=e.EScaleType;exports.EStrokeType=e.EStrokeType;exports.EToolsKey=e.EToolsKey;exports.ElayerType=e.ElayerType;exports.EmitEventType=e.EmitEventType;exports.EventMessageType=e.EventMessageType;exports.EventWorkState=e.EventWorkState;exports.EvevtWorkState=e.EventWorkState;exports.FontFaceFallbackBlacklistLevel=e.FontFaceFallbackBlacklistLevel;exports.InternalMsgEmitterType=e.InternalMsgEmitterType;exports.Main_View_Id=e.Main_View_Id;exports.Plugin=e.Plugin;exports.Renderer_Business_Default_Timeout=e.Renderer_Business_Default_Timeout;exports.ShapeType=e.ShapeType;exports.Task_Time_Interval=e.Task_Time_Interval;exports.WorkerCanvasContextBlacklistLevel=e.WorkerCanvasContextBlacklistLevel;exports.WorkerMaskTextureFormatBlacklistLevel=e.WorkerMaskTextureFormatBlacklistLevel;exports.WorkerMaskTextureUploadBlacklistLevel=e.WorkerMaskTextureUploadBlacklistLevel;exports.WorkerRenderModeBlacklistLevel=e.WorkerRenderModeBlacklistLevel;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Y as s, Z as t, _ as r, $ as l, a0 as i, a1 as p, a2 as o, a3 as n, a4 as T, C as E, s as c, b as k, a5 as y, H as _, K as u, a6 as m, a as v, a7 as g, d as S, a8 as d, a9 as C, c as M, aa as A, E as B, ab as F, e as W, e as x, ac as I, ad as L, y as P, ae as R, af as b, ag as f, T as h, ah as w, ai as D, aj as H, ak as K } from "./index-
|
|
1
|
+
import { Y as s, Z as t, _ as r, $ as l, a0 as i, a1 as p, a2 as o, a3 as n, a4 as T, C as E, s as c, b as k, a5 as y, H as _, K as u, a6 as m, a as v, a7 as g, d as S, a8 as d, a9 as C, c as M, aa as A, E as B, ab as F, e as W, e as x, ac as I, ad as L, y as P, ae as R, af as b, ag as f, T as h, ah as w, ai as D, aj as H, ak as K } from "./index-DkMJ7xR-.mjs";
|
|
2
2
|
export {
|
|
3
3
|
s as ActiveContainerType,
|
|
4
4
|
t as ApplianceMultiPlugin,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var l=Object.defineProperty;var o=(i,e,t)=>e in i?l(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var n=(i,e,t)=>o(i,typeof e!="symbol"?e+"":e,t);let r;function c(i){r=i}function u(){if(!r)throw new Error("[@netless/appliance-plugin/bridge] white-web-sdk runtime has not been bound yet.");return r}class h{constructor(){n(this,"control");n(this,"_listeners",{})}_inject(e){this.control=e}_onEvent(e,t){this._listeners[e]&&this._listeners[e](...t)}callbacks(e,t){this._listeners[e]=t}removeCallback(e){delete this._listeners[e]}}class g{constructor(e){n(this,"control");n(this,"worker");n(this,"publicMsgEmitter");n(this,"plugins",new Map);const{control:t,publicMsgEmitter:s}=e;this.control=t,this.publicMsgEmitter=s,this.worker=t.worker}use(e){this.plugins.set(e.kind,e),e._inject(this.control),e.onCreate()}destroy(){this.plugins.forEach(e=>{this.plugins.delete(e.kind),e.onDestroy()})}dispatchPluginEvent(e,...t){this.plugins.forEach(s=>{s._onEvent(e,t)})}}async function a(i){return c(i),Promise.resolve().then(()=>require("./index-
|
|
1
|
+
"use strict";var l=Object.defineProperty;var o=(i,e,t)=>e in i?l(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var n=(i,e,t)=>o(i,typeof e!="symbol"?e+"":e,t);let r;function c(i){r=i}function u(){if(!r)throw new Error("[@netless/appliance-plugin/bridge] white-web-sdk runtime has not been bound yet.");return r}class h{constructor(){n(this,"control");n(this,"_listeners",{})}_inject(e){this.control=e}_onEvent(e,t){this._listeners[e]&&this._listeners[e](...t)}callbacks(e,t){this._listeners[e]=t}removeCallback(e){delete this._listeners[e]}}class g{constructor(e){n(this,"control");n(this,"worker");n(this,"publicMsgEmitter");n(this,"plugins",new Map);const{control:t,publicMsgEmitter:s}=e;this.control=t,this.publicMsgEmitter=s,this.worker=t.worker}use(e){this.plugins.set(e.kind,e),e._inject(this.control),e.onCreate()}destroy(){this.plugins.forEach(e=>{this.plugins.delete(e.kind),e.onDestroy()})}dispatchPluginEvent(e,...t){this.plugins.forEach(s=>{s._onEvent(e,t)})}}async function a(i){return c(i),Promise.resolve().then(()=>require("./index-B6nsfvHS.js")).then(e=>e.index)}exports.Plugin=h;exports.PluginManager=g;exports.getWhiteWebSdkBridgeRuntime=u;exports.loadAppliancePluginBridge=a;
|
package/dist/bridge.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./bridge-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./bridge-iTPNL78o.js");exports.Plugin=e.Plugin;exports.loadAppliancePluginBridge=e.loadAppliancePluginBridge;
|
package/dist/bridge.mjs
CHANGED
package/dist/core/enum.d.ts
CHANGED
|
@@ -144,7 +144,9 @@ export declare enum EPostMessageType {
|
|
|
144
144
|
/** 初始化 service snapshot 已完成 renderer 提交 */
|
|
145
145
|
ServiceSyncCommit = 39,
|
|
146
146
|
/** 取消尚未完成的字体加载请求,仅用于内部 Worker 协议 */
|
|
147
|
-
CancelFontFace = 40
|
|
147
|
+
CancelFontFace = 40,
|
|
148
|
+
/** 中断尚未完成的 Bitmap Eraser 事务,仅用于内部 Worker 协议 */
|
|
149
|
+
CancelBitmapEraser = 41
|
|
148
150
|
}
|
|
149
151
|
export type ECanvasContextType = "webgl2" | "webgl" | "2d";
|
|
150
152
|
export declare enum ECanvasShowType {
|
|
@@ -179,7 +179,6 @@ export declare class MasterControlForWorker extends MasterController {
|
|
|
179
179
|
viewId: string;
|
|
180
180
|
toolsType?: EToolsKey;
|
|
181
181
|
opt?: BaseShapeOptions & {
|
|
182
|
-
fullLayerDoingMask?: boolean;
|
|
183
182
|
fullLayerDoingMaskMaxInputPoints?: number;
|
|
184
183
|
};
|
|
185
184
|
undoTickerId?: number;
|
|
@@ -430,7 +429,6 @@ export declare class MasterControlForWorker extends MasterController {
|
|
|
430
429
|
viewId: string;
|
|
431
430
|
toolsType?: EToolsKey;
|
|
432
431
|
opt?: BaseShapeOptions & {
|
|
433
|
-
fullLayerDoingMask?: boolean;
|
|
434
432
|
fullLayerDoingMaskMaxInputPoints?: number;
|
|
435
433
|
};
|
|
436
434
|
undoTickerId?: number;
|
|
@@ -590,6 +588,14 @@ export declare class MasterControlForWorker extends MasterController {
|
|
|
590
588
|
checkDrawingWork(vId: string): Promise<number[]>;
|
|
591
589
|
cancelLocalWorks(viewId: string, syncStorage?: boolean, onlyWorkIds?: ReadonlySet<string>): void;
|
|
592
590
|
timeoutLocalWorks(viewId: string, scenePath: string, reason: string, onlyWorkIds?: ReadonlySet<string>, error?: unknown): void;
|
|
591
|
+
/**
|
|
592
|
+
* Bitmap Done mutates the worker VNode/display tree before its Collector
|
|
593
|
+
* apply marker arrives. On a commit deadline, replay the captured
|
|
594
|
+
* before-images to both renderer and storage, then let the normal cancel
|
|
595
|
+
* path close the dynamic Undo scope. Compensation messages deliberately do
|
|
596
|
+
* not carry eraseTxnId, so the late Done tombstone cannot discard recovery.
|
|
597
|
+
*/
|
|
598
|
+
private rollbackBitmapEraserTxn;
|
|
593
599
|
private logLocalWorkBarrierError;
|
|
594
600
|
removeDrawingWork(vId: string): void;
|
|
595
601
|
removeNodes(viewId: string, removeIds: string[]): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IActiveToolsDataType, IWorkerMessage, IMainMessage, IUpdateSelectorPropsType, IBatchMainMessage } from "../types";
|
|
1
|
+
import { IActiveToolsDataType, IWorkerMessage, IMainMessage, IUpdateSelectorPropsType, IBatchMainMessage, BaseNodeMapItem } from "../types";
|
|
2
2
|
import type { BaseShapeTool, BaseShapeOptions, SelectorShape, ImageShape, ShapeToolsClass } from "../tools";
|
|
3
3
|
import { MainThreadEngineImpl, ISubThreadInitOption } from "./base";
|
|
4
4
|
import { VNodeManager } from "../vNodeManager";
|
|
@@ -16,6 +16,8 @@ export interface SubLocalThread {
|
|
|
16
16
|
destroy(): void;
|
|
17
17
|
clearAll(): void;
|
|
18
18
|
clearWorkShapeNodeCache(workId: string): void;
|
|
19
|
+
abortBitmapEraser(workId: string): void;
|
|
20
|
+
publishBitmapEraserBeforeImages(workId: string, beforeImages: Map<string, BaseNodeMapItem>): void;
|
|
19
21
|
setToolsOpt(opt: IActiveToolsDataType): void;
|
|
20
22
|
getToolsOpt(): IActiveToolsDataType | undefined;
|
|
21
23
|
createWorkShapeNode(opt: IActiveToolsDataType & {
|
|
@@ -109,6 +111,9 @@ export declare class SubLocalMainThreadImpl implements SubLocalThread {
|
|
|
109
111
|
reRenderSelector(willSyncService?: boolean): Promise<void> | undefined;
|
|
110
112
|
blurSelector(data?: IWorkerMessage): Promise<void>;
|
|
111
113
|
clearWorkShapeNodeCache(workId: string): void;
|
|
114
|
+
/** Stop queued Bitmap Eraser work and restore Doing-time hidden nodes. */
|
|
115
|
+
abortBitmapEraser(workId: string): void;
|
|
116
|
+
publishBitmapEraserBeforeImages(workId: string, beforeImages: Map<string, BaseNodeMapItem>): void;
|
|
112
117
|
private drawBitMapEraserFull;
|
|
113
118
|
private drawPencilEraserFull;
|
|
114
119
|
private drawEraser;
|
|
@@ -13,8 +13,6 @@ export interface SerializerEraserItem {
|
|
|
13
13
|
export type SerializerEraserLines = Array<SerializerEraserItem>;
|
|
14
14
|
export interface BitMapEraserOptions extends BaseShapeOptions {
|
|
15
15
|
thickness: number;
|
|
16
|
-
/** @deprecated Bitmap Eraser now always uses the FullLayer Doing mask. */
|
|
17
|
-
fullLayerDoingMask?: boolean;
|
|
18
16
|
maxImageWidth?: number;
|
|
19
17
|
maxImageHeight?: number;
|
|
20
18
|
removeOnDone?: boolean;
|
|
@@ -44,6 +42,8 @@ export declare class BitMapEraserShape extends BaseShapeTool {
|
|
|
44
42
|
private readonly hiddenRenderNodes;
|
|
45
43
|
private fullLayerPreviewGroup?;
|
|
46
44
|
private disposeVNodeObserver?;
|
|
45
|
+
/** Transaction-scoped before-images survive until the Done ACK is applied. */
|
|
46
|
+
private readonly beforeImages;
|
|
47
47
|
constructor(props: BaseShapeToolProps);
|
|
48
48
|
/** Consume exactly one accepted input batch and publish one FullLayer preview. */
|
|
49
49
|
combineConsume(_props: {
|
|
@@ -72,6 +72,7 @@ export declare class BitMapEraserShape extends BaseShapeTool {
|
|
|
72
72
|
type: EPostMessageType;
|
|
73
73
|
} | {
|
|
74
74
|
rect: IRectType | undefined;
|
|
75
|
+
eraseTxnBeforeImages: Map<string, BaseNodeMapItem>;
|
|
75
76
|
eraseTxnCommitStatus: "applied";
|
|
76
77
|
workId: string;
|
|
77
78
|
toolsType: EToolsKey;
|
|
@@ -84,6 +85,7 @@ export declare class BitMapEraserShape extends BaseShapeTool {
|
|
|
84
85
|
ops: string;
|
|
85
86
|
willUpdateNodes: Map<string, BaseNodeMapItem>;
|
|
86
87
|
willDeleteNodes: Set<string>;
|
|
88
|
+
eraseTxnBeforeImages: Map<string, BaseNodeMapItem>;
|
|
87
89
|
eraseTxnCommitStatus: "applied";
|
|
88
90
|
workId: string;
|
|
89
91
|
toolsType: EToolsKey;
|
|
@@ -92,6 +94,7 @@ export declare class BitMapEraserShape extends BaseShapeTool {
|
|
|
92
94
|
rect: IRectType | undefined;
|
|
93
95
|
willUpdateNodes: Map<string, BaseNodeMapItem>;
|
|
94
96
|
willDeleteNodes: Set<string>;
|
|
97
|
+
eraseTxnBeforeImages: Map<string, BaseNodeMapItem>;
|
|
95
98
|
eraseTxnRecoveryRequired: boolean;
|
|
96
99
|
eraseTxnCommitStatus: "failed";
|
|
97
100
|
workId: string;
|
|
@@ -120,6 +123,7 @@ export declare class BitMapEraserShape extends BaseShapeTool {
|
|
|
120
123
|
private hideRenderNodesForId;
|
|
121
124
|
private restoreNoLongerClearablePendingDeletes;
|
|
122
125
|
private snapshotDoneCandidates;
|
|
126
|
+
private captureBeforeImage;
|
|
123
127
|
private collectDoneVectorChanges;
|
|
124
128
|
private normalizeClippedLine;
|
|
125
129
|
private commitDoingFaces;
|
package/dist/core/types.d.ts
CHANGED
|
@@ -252,6 +252,8 @@ export interface IMainMessage extends INormalPushMsg {
|
|
|
252
252
|
eraseTxnPhase?: "applied" | "failed";
|
|
253
253
|
/** Internal Done result used to choose the terminal transaction marker. */
|
|
254
254
|
eraseTxnCommitStatus?: "applied" | "failed";
|
|
255
|
+
/** Bitmap Eraser transaction before-images used for timeout compensation. */
|
|
256
|
+
eraseTxnBeforeImages?: Map<string, BaseNodeMapItem>;
|
|
255
257
|
/** Internal renderer request business used to settle Snapshot waiters. */
|
|
256
258
|
reportBusiness?: "snapshot" | "bounding-box";
|
|
257
259
|
/** Structured renderer failure stage for request-scoped diagnostics. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IWorkerMessage, IMainMessage, IRectType, EToolsKey, IBatchMainMessage, EventWorkState, IUpdateSelectorPropsType } from "..";
|
|
1
|
+
import { IWorkerMessage, IMainMessage, IRectType, EToolsKey, IBatchMainMessage, EventWorkState, IUpdateSelectorPropsType, BaseNodeMapItem } from "..";
|
|
2
2
|
import { BaseShapeOptions, SelectorShape } from "../tools";
|
|
3
3
|
import { ISubWorkerInitOption, LocalWork } from "./base";
|
|
4
4
|
import { ServiceWorkForFullWorker } from "./fullWorkerService";
|
|
@@ -15,6 +15,9 @@ export declare class LocalWorkForFullWorker extends LocalWork {
|
|
|
15
15
|
private disposeVNodeRevisionObserver?;
|
|
16
16
|
private bitmapEraserRenderQueue;
|
|
17
17
|
private bitmapEraserRevalidationQueued;
|
|
18
|
+
/** Stop queued Bitmap Eraser work and restore Doing-time hidden nodes. */
|
|
19
|
+
abortBitmapEraser(workId: string): void;
|
|
20
|
+
publishBitmapEraserBeforeImages(workId: string, beforeImages: Map<string, BaseNodeMapItem>): void;
|
|
18
21
|
protected drawWorkActiveId?: string;
|
|
19
22
|
protected effectSelectNodeData: Set<IWorkerMessage>;
|
|
20
23
|
constructor(opt: ISubWorkerInitOption);
|