@netless/appliance-plugin 1.1.28 → 1.1.30-beta.0
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/cdn/cdn.js +1 -1
- package/cdn/fullWorker-CWzLC1.js +486 -0
- package/cdn/subWorker-Bb5WAj.js +486 -0
- package/dist/ObserverMap-BudneEfB.mjs +58 -0
- package/dist/ObserverMap-DTz9zucn.js +1 -0
- package/dist/appliance-plugin.js +1 -1
- package/dist/appliance-plugin.mjs +19 -18
- package/dist/collector/collector.d.ts +6 -0
- package/dist/component/svg/base.d.ts +30 -0
- package/dist/component/svg/manager.d.ts +44 -0
- package/dist/component/svg/markmap.d.ts +41 -0
- package/dist/component/svg/mermaid-check.d.ts +18 -0
- package/dist/component/svg/mermaid-loader.d.ts +29 -0
- package/dist/component/svg/mermaid.d.ts +109 -0
- package/dist/component/svg/snapshot.d.ts +31 -0
- package/dist/component/svg/svgElemt.d.ts +43 -0
- package/dist/component/svg/svgToImageLoader.d.ts +25 -0
- package/dist/component/svg/types.d.ts +10 -0
- package/dist/component/svg/utils.d.ts +9 -0
- package/dist/component/svg/vNodeManager.d.ts +28 -0
- package/dist/core/backGroundThread/index.d.ts +35 -0
- package/dist/core/backGroundThread/types.d.ts +12 -0
- package/dist/core/enum.d.ts +12 -2
- package/dist/core/mainEngine.d.ts +11 -3
- package/dist/core/mainThread/snapshotThread.d.ts +2 -1
- package/dist/core/mainThread/subLocalThread.d.ts +1 -2
- package/dist/core/mainThread/subTopThread.d.ts +2 -2
- package/dist/core/msgEvent/baseForBackgroundThread.d.ts +9 -0
- package/dist/core/msgEvent/copyNode/forBackgroundThread.d.ts +8 -0
- package/dist/core/msgEvent/forBackgroundThread.d.ts +12 -0
- package/dist/core/msgEvent/setZIndex/forMain.d.ts +7 -0
- package/dist/core/tools/base.d.ts +5 -1
- package/dist/core/tools/shadowSvg.d.ts +36 -0
- package/dist/core/tools/svg.d.ts +0 -0
- package/dist/core/tools/utils.d.ts +9 -8
- package/dist/core/types.d.ts +36 -1
- package/dist/core/utils/ObserverMap.d.ts +19 -0
- package/dist/core/utils/index.d.ts +1 -0
- package/dist/core/vNodeManager.d.ts +6 -5
- package/dist/core/worker/base.d.ts +1 -1
- package/dist/core/worker/fullWorkerLocal.d.ts +1 -7
- package/dist/core/worker/simpleWorker.d.ts +2 -1
- package/dist/core/worker/subWorkerTopLayer.d.ts +2 -2
- package/dist/fullWorker.js +127 -158
- package/dist/index-CaGxVP6U.mjs +1256 -0
- package/dist/{index-dNUi36ql.mjs → index-Cp4iDsa1.mjs} +1253 -1097
- package/dist/index-DIJe5ta7.js +1 -0
- package/dist/index-ELCL_4SK.js +3 -0
- package/dist/index-GdF83s93.js +1 -0
- package/dist/{index-Be0GtbHC.mjs → index-OkrVupZ5.mjs} +6767 -6315
- package/dist/plugin/baseApplianceManager.d.ts +7 -2
- package/dist/plugin/baseViewContainerManager.d.ts +2 -0
- package/dist/plugin/displayerView.d.ts +2 -0
- package/dist/plugin/multi/displayer/appViewDisplayerManager.d.ts +1 -0
- package/dist/plugin/multi/displayer/mainViewDisplayerManager.d.ts +2 -0
- package/dist/plugin/single/displayer/mainViewDisplayerManager.d.ts +2 -0
- package/dist/plugin/types.d.ts +70 -2
- package/dist/style.css +1 -1
- package/dist/subWorker.js +127 -158
- package/dist/svgToImageLoader-DPRAAhwW.js +1 -0
- package/dist/svgToImageLoader-mXH53h-l.mjs +18 -0
- package/package.json +7 -2
- package/cdn/fullWorker-CWXCEL.js +0 -517
- package/cdn/subWorker-CHwEVk.js +0 -517
- package/dist/core/msgEvent/deleteNode/forMainThread.d.ts +0 -6
- package/dist/core/msgEvent/deleteNode/forWorker.d.ts +0 -6
- package/dist/index-D6tJMnFK.js +0 -1
- package/dist/index-DBSetQlP.js +0 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
var o = Object.defineProperty;
|
|
2
|
+
var h = (r, e, s) => e in r ? o(r, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : r[e] = s;
|
|
3
|
+
var a = (r, e, s) => h(r, typeof e != "symbol" ? e + "" : e, s);
|
|
4
|
+
class p {
|
|
5
|
+
constructor(e) {
|
|
6
|
+
a(this, "_map");
|
|
7
|
+
a(this, "_observers", /* @__PURE__ */ new Set());
|
|
8
|
+
this._map = new Map(e);
|
|
9
|
+
}
|
|
10
|
+
notifyObservers(e, s, t) {
|
|
11
|
+
for (const i of this._observers)
|
|
12
|
+
i(e, s, t);
|
|
13
|
+
}
|
|
14
|
+
observe(e) {
|
|
15
|
+
this._observers.add(e);
|
|
16
|
+
}
|
|
17
|
+
unobserve(e) {
|
|
18
|
+
this._observers.delete(e);
|
|
19
|
+
}
|
|
20
|
+
get(e) {
|
|
21
|
+
return this._map.get(e);
|
|
22
|
+
}
|
|
23
|
+
set(e, s, t = !0) {
|
|
24
|
+
const i = this._map.has(e) ? "update" : "add";
|
|
25
|
+
return this._map.set(e, s), t && this.notifyObservers(i, e, s), this;
|
|
26
|
+
}
|
|
27
|
+
has(e) {
|
|
28
|
+
return this._map.has(e);
|
|
29
|
+
}
|
|
30
|
+
delete(e, s = !0) {
|
|
31
|
+
const t = this._map.get(e), i = this._map.delete(e);
|
|
32
|
+
return s && t && this.notifyObservers("delete", e, t), i;
|
|
33
|
+
}
|
|
34
|
+
clear(e = !0) {
|
|
35
|
+
const s = this._map.keys();
|
|
36
|
+
if (this._map.clear(), e)
|
|
37
|
+
for (const t of s)
|
|
38
|
+
this.notifyObservers("clear", t, void 0);
|
|
39
|
+
}
|
|
40
|
+
get size() {
|
|
41
|
+
return this._map.size;
|
|
42
|
+
}
|
|
43
|
+
keys() {
|
|
44
|
+
return this._map.keys();
|
|
45
|
+
}
|
|
46
|
+
values() {
|
|
47
|
+
return this._map.values();
|
|
48
|
+
}
|
|
49
|
+
entries() {
|
|
50
|
+
return this._map.entries();
|
|
51
|
+
}
|
|
52
|
+
forEach(e, s) {
|
|
53
|
+
this._map.forEach(e, s);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
p as O
|
|
58
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var h=(r,e,s)=>e in r?o(r,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[e]=s;var a=(r,e,s)=>h(r,typeof e!="symbol"?e+"":e,s);class n{constructor(e){a(this,"_map");a(this,"_observers",new Set);this._map=new Map(e)}notifyObservers(e,s,t){for(const i of this._observers)i(e,s,t)}observe(e){this._observers.add(e)}unobserve(e){this._observers.delete(e)}get(e){return this._map.get(e)}set(e,s,t=!0){const i=this._map.has(e)?"update":"add";return this._map.set(e,s),t&&this.notifyObservers(i,e,s),this}has(e){return this._map.has(e)}delete(e,s=!0){const t=this._map.get(e),i=this._map.delete(e);return s&&t&&this.notifyObservers("delete",e,t),i}clear(e=!0){const s=this._map.keys();if(this._map.clear(),e)for(const t of s)this.notifyObservers("clear",t,void 0)}get size(){return this._map.size}keys(){return this._map.keys()}values(){return this._map.values()}entries(){return this._map.entries()}forEach(e,s){this._map.forEach(e,s)}}exports.ObserverMap=n;
|
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-GdF83s93.js");exports.ActiveContainerType=e.ActiveContainerType;exports.ApplianceMultiPlugin=e.ApplianceMultiPlugin;exports.ApplianceNames=e.ApplianceNames;exports.ApplianceSigleWrapper=e.ApplianceSigleWrapper;exports.ApplianceSinglePlugin=e.ApplianceSinglePlugin;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.EvevtWorkState=e.EvevtWorkState;exports.EvevtWorkType=e.EvevtWorkType;exports.InternalMsgEmitterType=e.InternalMsgEmitterType;exports.Main_View_Id=e.Main_View_Id;exports.Plugin=e.Plugin;exports.ShapeType=e.ShapeType;exports.Task_Time_Interval=e.Task_Time_Interval;exports.fullWorkerUrl=e.fullWorker;exports.subWorkerUrl=e.subWorker;
|
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { af as s, a9 as p, ac as r, ab as t, aa as i, a4 as l, Z as n, b as E, ag as T, t as o, j as y, ak as v, a as g, al as c, d as S, u, w as k, c as m, ai as M, E as _, ah as d, v as A, aj as I, ae as W, Y as P, am as b, ad as f, a6 as h, a7 as w, a8 as C } from "./index-OkrVupZ5.mjs";
|
|
2
2
|
export {
|
|
3
3
|
s as ActiveContainerType,
|
|
4
4
|
p as ApplianceMultiPlugin,
|
|
5
5
|
r as ApplianceNames,
|
|
6
6
|
t as ApplianceSigleWrapper,
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
i as ApplianceSinglePlugin,
|
|
8
|
+
l as Cursor_Hover_Id,
|
|
9
9
|
n as ECanvasShowType,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
E as EDataType,
|
|
11
|
+
T as EForceStopReason,
|
|
12
|
+
o as EImageType,
|
|
13
13
|
y as EMatrixrRelationType,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
v as EOperationType,
|
|
15
|
+
g as EPostMessageType,
|
|
16
16
|
c as ERenderFilterType,
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
S as ESVGType,
|
|
18
|
+
u as EScaleType,
|
|
19
|
+
k as EStrokeType,
|
|
19
20
|
m as EToolsKey,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
M as ElayerType,
|
|
22
|
+
_ as EmitEventType,
|
|
23
|
+
d as EventMessageType,
|
|
23
24
|
A as EvevtWorkState,
|
|
24
25
|
I as EvevtWorkType,
|
|
25
26
|
W as InternalMsgEmitterType,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
P as Main_View_Id,
|
|
28
|
+
b as Plugin,
|
|
29
|
+
f as ShapeType,
|
|
30
|
+
h as Task_Time_Interval,
|
|
31
|
+
w as fullWorkerUrl,
|
|
31
32
|
C as subWorkerUrl
|
|
32
33
|
};
|
|
@@ -26,10 +26,16 @@ export declare class Collector extends BaseCollector<ISerializableStorageViewDat
|
|
|
26
26
|
private limitNums;
|
|
27
27
|
private syncInterval;
|
|
28
28
|
constructor(control: BaseApplianceManager, plugin: AppliancePluginLike, syncInterval: number);
|
|
29
|
+
hasId(viewId: string, scenePath: string, key: string): boolean;
|
|
29
30
|
private getLimitNum;
|
|
30
31
|
private getLimitNums;
|
|
31
32
|
getViewIdBySecenPath(scenePath: string): string | undefined;
|
|
32
33
|
getScenePathData(scenePath: string): ISerializableStorageData | undefined;
|
|
34
|
+
hasTargetDataByViewId(viewId: string, key: string): true | undefined;
|
|
35
|
+
getTargetDataByViewId(viewId: string, key: string): {
|
|
36
|
+
data: BaseCollectorReducerAction | undefined;
|
|
37
|
+
scenePath: string | undefined;
|
|
38
|
+
};
|
|
33
39
|
getStorageData(viewId: string, scenePath: string): ISerializableStorageData | undefined;
|
|
34
40
|
hasSelector(viewId: string, scenePath: string): boolean;
|
|
35
41
|
hasIncludeSelector(targetKey: string, targetViewId?: string, targetScenePath?: string): boolean;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EToolsKey } from "../../core/enum";
|
|
2
|
+
import { BaseShapeToolProps } from "../../core/tools";
|
|
3
|
+
import { ISVGOptions } from "../../core/types";
|
|
4
|
+
import { VNodeManager } from "../../core/vNodeManager";
|
|
5
|
+
import { VBackgroundNodeManager } from "./vNodeManager";
|
|
6
|
+
import { ISvgElement } from "./svgElemt";
|
|
7
|
+
import { BackgroundThreadEngineImpl } from "./manager";
|
|
8
|
+
import { BackgroundSnapshotThreadImpl } from "./snapshot";
|
|
9
|
+
export interface IActiveBackgroundToolsDataType {
|
|
10
|
+
toolsType: EToolsKey.BackgroundSVG;
|
|
11
|
+
toolsOpt: ISVGOptions;
|
|
12
|
+
combineUnitTime?: number;
|
|
13
|
+
maxCombineEraserTime?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ISVGShapeToolProps extends Omit<BaseShapeToolProps, "vNodes"> {
|
|
16
|
+
vNodes: VBackgroundNodeManager;
|
|
17
|
+
toolsOpt: ISVGOptions;
|
|
18
|
+
}
|
|
19
|
+
export interface ISVGShadowShapeToolProps extends BaseShapeToolProps {
|
|
20
|
+
vNodes?: VNodeManager;
|
|
21
|
+
toolsOpt: ISVGOptions;
|
|
22
|
+
}
|
|
23
|
+
export declare function getShapeToolsForBackgroundThread(toolsType: EToolsKey): typeof ISvgElement | undefined;
|
|
24
|
+
export declare function getShapeInstanceForBackgroundThread(param: {
|
|
25
|
+
workId: string;
|
|
26
|
+
toolsType: EToolsKey;
|
|
27
|
+
toolsOpt: ISVGOptions;
|
|
28
|
+
vNodes: VBackgroundNodeManager;
|
|
29
|
+
manager: BackgroundThreadEngineImpl | BackgroundSnapshotThreadImpl;
|
|
30
|
+
}): ISvgElement | undefined;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { IMarkmapOptions } from "markmap-view";
|
|
2
|
+
import { ICameraOpt, IWorkerMessage } from "../../core";
|
|
3
|
+
import { IBackgroundThreadInitOption } from "../../core/backGroundThread";
|
|
4
|
+
import { MasterControlForWorker } from "../../core/mainEngine";
|
|
5
|
+
import { View } from "../../plugin";
|
|
6
|
+
import { VBackgroundNodeManager } from "./vNodeManager";
|
|
7
|
+
export interface BackgroundThreadEngine {
|
|
8
|
+
readonly viewId: string;
|
|
9
|
+
readonly fullLayer: HTMLDivElement;
|
|
10
|
+
readonly vNodes: VBackgroundNodeManager;
|
|
11
|
+
readonly master: MasterControlForWorker;
|
|
12
|
+
setCameraOpt(cameraOpt: ICameraOpt): Promise<void>;
|
|
13
|
+
on(msg: IWorkerMessage): Promise<void>;
|
|
14
|
+
destroy(): void;
|
|
15
|
+
}
|
|
16
|
+
export declare class BackgroundThreadEngineImpl implements BackgroundThreadEngine {
|
|
17
|
+
opt: IBackgroundThreadInitOption;
|
|
18
|
+
viewId: string;
|
|
19
|
+
fullLayer: HTMLDivElement;
|
|
20
|
+
vNodes: VBackgroundNodeManager;
|
|
21
|
+
master: MasterControlForWorker;
|
|
22
|
+
private cameraOpt?;
|
|
23
|
+
private methodBuilder;
|
|
24
|
+
constructor(viewId: string, opt: IBackgroundThreadInitOption);
|
|
25
|
+
get camera(): ICameraOpt;
|
|
26
|
+
get view(): View | undefined;
|
|
27
|
+
get markmapOptions(): Partial<IMarkmapOptions> | undefined;
|
|
28
|
+
getPagePoint(x: number, y: number): {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
};
|
|
32
|
+
setCameraOpt(cameraOpt: ICameraOpt): Promise<void>;
|
|
33
|
+
private clearAll;
|
|
34
|
+
private canUseFullLayer;
|
|
35
|
+
consumeFull(msg: IWorkerMessage): Promise<void>;
|
|
36
|
+
private setFullWork;
|
|
37
|
+
private createWorkShapeNode;
|
|
38
|
+
private removeWork;
|
|
39
|
+
private removeNode;
|
|
40
|
+
on(msg: IWorkerMessage): Promise<void>;
|
|
41
|
+
private toggleFullLayer;
|
|
42
|
+
private updateCamera;
|
|
43
|
+
destroy(): void;
|
|
44
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as markmap from "markmap-view";
|
|
2
|
+
import type { IMarkmapOptions } from "markmap-view";
|
|
3
|
+
import { type ITransformPlugin, Transformer } from "markmap-lib";
|
|
4
|
+
export interface IMermaidTransformerOptions extends Array<ITransformPlugin | (() => ITransformPlugin)> {
|
|
5
|
+
}
|
|
6
|
+
declare class MermaidTransformer extends Transformer {
|
|
7
|
+
private currentWorkId;
|
|
8
|
+
constructor(options?: IMermaidTransformerOptions);
|
|
9
|
+
/**
|
|
10
|
+
* 设置当前工作 ID(用于命名空间隔离)
|
|
11
|
+
* @param workId 工作 ID
|
|
12
|
+
*/
|
|
13
|
+
setWorkId(workId: string): void;
|
|
14
|
+
transform(content: string, fallbackParserOptions?: any): import("markmap-lib").ITransformResult;
|
|
15
|
+
/**
|
|
16
|
+
* 将 markdown 内容中的 katex 公式转换为普通文本
|
|
17
|
+
* 处理 $...$ 和 $$...$$ 格式的公式
|
|
18
|
+
* 由于 Safari 对 katex 的兼容性问题,将公式转换为普通文本显示
|
|
19
|
+
* @param content markdown 内容
|
|
20
|
+
* @returns 处理后的内容
|
|
21
|
+
*/
|
|
22
|
+
private convertKatexToText;
|
|
23
|
+
/**
|
|
24
|
+
* 处理转换结果中的 katex HTML,将其转换为普通文本
|
|
25
|
+
* 递归处理节点树,查找包含 katex 的内容并转换
|
|
26
|
+
* 由于 Safari 对 katex 的兼容性问题,将 katex HTML 转换为普通文本显示
|
|
27
|
+
* @param node markmap 节点
|
|
28
|
+
*/
|
|
29
|
+
private processKatexInRoot;
|
|
30
|
+
/**
|
|
31
|
+
* 等待 markmap foreignObject 内所有图片加载完成
|
|
32
|
+
* 用于在调用 fit() 之前确保所有图片都已加载,以便正确计算尺寸
|
|
33
|
+
* @param svgElement SVG 元素
|
|
34
|
+
* @param timeout 超时时间(毫秒),默认 10 秒
|
|
35
|
+
* @returns Promise<void> 当所有图片加载完成时 resolve
|
|
36
|
+
*/
|
|
37
|
+
static waitForImagesInForeignObjects(svgElement: SVGSVGElement, timeout?: number): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export declare const transformer: MermaidTransformer;
|
|
40
|
+
declare const Markmap: typeof markmap.Markmap;
|
|
41
|
+
export { IMarkmapOptions, markmap, Transformer, Markmap, MermaidTransformer };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mermaid 检查和验证工具
|
|
3
|
+
* 用于验证 mermaid.js 是否正确引入和加载
|
|
4
|
+
*
|
|
5
|
+
* 注意:此文件已废弃,请使用 mermaid-loader.ts 中的按需加载功能
|
|
6
|
+
*/
|
|
7
|
+
export declare function checkMermaidAvailability(): Promise<{
|
|
8
|
+
available: boolean;
|
|
9
|
+
version?: string;
|
|
10
|
+
hasInitialize?: boolean;
|
|
11
|
+
hasRender?: boolean;
|
|
12
|
+
error?: string;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function testMermaidRender(): Promise<{
|
|
15
|
+
success: boolean;
|
|
16
|
+
svg?: string;
|
|
17
|
+
error?: string;
|
|
18
|
+
}>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mermaid.js 按需加载管理器
|
|
3
|
+
* 只在检测到 markdown 中有 mermaid 代码块时才加载 mermaid.js
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 检查 markdown 中是否包含 mermaid 代码块
|
|
7
|
+
*/
|
|
8
|
+
export declare function hasMermaidCodeBlock(markdown: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* 动态加载 mermaid.js
|
|
11
|
+
* @returns Promise<mermaid 模块>
|
|
12
|
+
*/
|
|
13
|
+
export declare function loadMermaid(): Promise<typeof import("mermaid")>;
|
|
14
|
+
/**
|
|
15
|
+
* 初始化 mermaid(如果还未初始化)
|
|
16
|
+
*/
|
|
17
|
+
export declare function ensureMermaidInitialized(): Promise<typeof import("mermaid")>;
|
|
18
|
+
/**
|
|
19
|
+
* 获取 mermaid 实例(需要先调用 ensureMermaidInitialized)
|
|
20
|
+
*/
|
|
21
|
+
export declare function getMermaid(): (typeof import("mermaid"))["default"] | null;
|
|
22
|
+
/**
|
|
23
|
+
* 检查 mermaid 是否已加载
|
|
24
|
+
*/
|
|
25
|
+
export declare function isMermaidLoaded(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* 重置状态(主要用于测试)
|
|
28
|
+
*/
|
|
29
|
+
export declare function resetMermaidLoader(): void;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Transformer } from "./markmap";
|
|
2
|
+
/**
|
|
3
|
+
* Mermaid 管理器(单例模式)
|
|
4
|
+
* 统一管理 mermaid 代码块的存储、HTML 生成和 markdown 扩展
|
|
5
|
+
* 使用 workId 作为命名空间,避免多个 ISvgElement 实例互相影响
|
|
6
|
+
*/
|
|
7
|
+
export declare class MermaidManager {
|
|
8
|
+
private static instance;
|
|
9
|
+
private mermaidCodeBlocksByWorkId;
|
|
10
|
+
private constructor();
|
|
11
|
+
/**
|
|
12
|
+
* 获取 MermaidManager 单例实例
|
|
13
|
+
*/
|
|
14
|
+
static getInstance(): MermaidManager;
|
|
15
|
+
/**
|
|
16
|
+
* 生成唯一的 mermaid ID
|
|
17
|
+
*/
|
|
18
|
+
generateId(): string;
|
|
19
|
+
/**
|
|
20
|
+
* 生成 mermaid HTML 容器
|
|
21
|
+
* @param id mermaid ID
|
|
22
|
+
* @param mermaidCode mermaid 代码(可选,如果提供则存储)
|
|
23
|
+
* @param workId 工作 ID(用于命名空间隔离)
|
|
24
|
+
* @returns HTML 字符串
|
|
25
|
+
*/
|
|
26
|
+
createContainer(id: string, mermaidCode?: string, workId?: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* 获取 mermaid 代码块
|
|
29
|
+
* @param id mermaid ID
|
|
30
|
+
* @param workId 工作 ID(用于命名空间隔离)
|
|
31
|
+
* @returns mermaid 代码或 undefined
|
|
32
|
+
*/
|
|
33
|
+
getCode(id: string, workId: string): string | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* 清空指定 workId 的 mermaid 代码块
|
|
36
|
+
* @param workId 工作 ID(如果未提供,清空所有)
|
|
37
|
+
*/
|
|
38
|
+
clear(workId?: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* 扩展 markdown-it 的渲染规则,处理 mermaid 代码块
|
|
41
|
+
* @param transformer Transformer 实例
|
|
42
|
+
* @param workId 工作 ID(用于命名空间隔离)
|
|
43
|
+
*/
|
|
44
|
+
extendMarkdown(transformer: Transformer, workId: string): void;
|
|
45
|
+
static generateId(): string;
|
|
46
|
+
static createContainer(id: string, mermaidCode?: string, workId?: string): string;
|
|
47
|
+
static getCode(id: string, workId: string): string | undefined;
|
|
48
|
+
static clear(workId?: string): void;
|
|
49
|
+
static extendMarkdown(transformer: Transformer, workId: string): void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Mermaid 渲染器工具类
|
|
53
|
+
* 负责处理 markmap 中的 mermaid 图表渲染相关逻辑
|
|
54
|
+
*/
|
|
55
|
+
export declare class MermaidRenderer {
|
|
56
|
+
/**
|
|
57
|
+
* 检查 markmap 节点及其子节点是否包含 mermaid 代码块
|
|
58
|
+
* @param node markmap 节点数据
|
|
59
|
+
* @returns 如果节点或其子节点包含 mermaid 代码块,返回 true
|
|
60
|
+
*/
|
|
61
|
+
static checkNodeHasMermaid(node: any): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* 等待 DOM 更新后渲染 Mermaid 图表
|
|
64
|
+
* @param svgElement SVG 元素
|
|
65
|
+
* @param workId 工作 ID
|
|
66
|
+
* @returns Promise<void>
|
|
67
|
+
*/
|
|
68
|
+
static renderMermaidAfterDOMUpdate(svgElement: SVGSVGElement, workId: string): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* 渲染所有 mermaid 容器中的图表
|
|
71
|
+
* @param svgElement SVG 元素
|
|
72
|
+
* @param workId 工作 ID
|
|
73
|
+
* @returns Promise<void>
|
|
74
|
+
*/
|
|
75
|
+
static renderMermaidBlocks(svgElement: SVGSVGElement, workId: string): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* 检测是否是 Safari 浏览器
|
|
78
|
+
* @returns 如果是 Safari 返回 true,否则返回 false
|
|
79
|
+
*/
|
|
80
|
+
static isSafari(): boolean;
|
|
81
|
+
/**
|
|
82
|
+
* 将 mermaid SVG 从 foreignObject 移出,直接添加到 markmap SVG 中(Safari 兼容性处理)
|
|
83
|
+
* 克隆 mermaid SVG 元素,设置正确的尺寸和位置,然后将 foreignObject 中的 mermaid-container 透明度设为 0
|
|
84
|
+
* @param svgElement markmap SVG 元素
|
|
85
|
+
* @returns Promise<void>
|
|
86
|
+
*/
|
|
87
|
+
static transformMermaidSvgToMarkmapSvg(svgElement: SVGSVGElement): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* 在 root 数据中注入 mermaid HTML
|
|
90
|
+
* 找到包含 mermaid 代码块的节点,将 HTML 添加到其 content 中
|
|
91
|
+
* @param root markmap root 数据
|
|
92
|
+
* @param markdown markdown 文本
|
|
93
|
+
* @param workId 工作 ID(用于命名空间隔离)
|
|
94
|
+
* @returns 修改后的 root 数据
|
|
95
|
+
*/
|
|
96
|
+
static injectMermaidHtml(root: any, markdown: string, workId: string): any;
|
|
97
|
+
/**
|
|
98
|
+
* 解码 HTML 实体
|
|
99
|
+
* @param str HTML 字符串
|
|
100
|
+
* @returns 解码后的字符串
|
|
101
|
+
*/
|
|
102
|
+
private static decodeHtmlEntities;
|
|
103
|
+
/**
|
|
104
|
+
* 检查 divElement 中是否包含 mermaid SVG 元素
|
|
105
|
+
* @param divElement HTMLDivElement 或 SVGSVGElement 元素
|
|
106
|
+
* @returns 如果包含 mermaid SVG 元素,返回 true,否则返回 false
|
|
107
|
+
*/
|
|
108
|
+
static hasMermaidSvg(divElement: HTMLDivElement | SVGSVGElement): boolean;
|
|
109
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IBackgroundThreadInitOption } from "../../core/backGroundThread";
|
|
2
|
+
import { MasterControlForWorker } from "../../core/mainEngine";
|
|
3
|
+
import { BaseShapeTool } from "../../core/tools";
|
|
4
|
+
import { ICameraOpt, IWorkerMessage } from "../../core/types";
|
|
5
|
+
import { VBackgroundNodeManager } from "./vNodeManager";
|
|
6
|
+
import { View } from "../../plugin/types";
|
|
7
|
+
import { IMarkmapOptions } from "./markmap";
|
|
8
|
+
export declare class BackgroundSnapshotThreadImpl {
|
|
9
|
+
viewId: string;
|
|
10
|
+
fullLayer: HTMLDivElement;
|
|
11
|
+
master: MasterControlForWorker;
|
|
12
|
+
vNodes: VBackgroundNodeManager;
|
|
13
|
+
private cameraOpt?;
|
|
14
|
+
readonly opt: IBackgroundThreadInitOption;
|
|
15
|
+
workShapes: Map<string, BaseShapeTool>;
|
|
16
|
+
get camera(): ICameraOpt;
|
|
17
|
+
get view(): View | undefined;
|
|
18
|
+
get markmapOptions(): Partial<IMarkmapOptions> | undefined;
|
|
19
|
+
constructor(viewId: string, opt: IBackgroundThreadInitOption);
|
|
20
|
+
createOffscreenCanvas(opt: IBackgroundThreadInitOption): void;
|
|
21
|
+
setCameraOpt(cameraOpt: ICameraOpt): Promise<void>;
|
|
22
|
+
getPagePoint(x: number, y: number): {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
};
|
|
26
|
+
getSnapshot(data: IWorkerMessage): Promise<void>;
|
|
27
|
+
private createWorkShapeNode;
|
|
28
|
+
private setFullWork;
|
|
29
|
+
runFullWork(data: IWorkerMessage): Promise<void>;
|
|
30
|
+
destroy(): void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { EToolsKey, ISVGOptions } from "../../core";
|
|
2
|
+
import { ISVGElementToolProps } from "./types";
|
|
3
|
+
import { VBackgroundNodeManager } from "./vNodeManager";
|
|
4
|
+
import type { BackgroundThreadEngineImpl } from "./manager";
|
|
5
|
+
import { Markmap } from "./markmap";
|
|
6
|
+
import type { Collector } from "../../collector";
|
|
7
|
+
import type { BackgroundSnapshotThreadImpl } from "./snapshot";
|
|
8
|
+
export declare class ISvgElement {
|
|
9
|
+
readonly toolsType: EToolsKey;
|
|
10
|
+
readonly vNodes: VBackgroundNodeManager;
|
|
11
|
+
private workOptions;
|
|
12
|
+
readonly workId: string;
|
|
13
|
+
markmapInstance: ReturnType<typeof Markmap.create> | null;
|
|
14
|
+
private isDestroyed;
|
|
15
|
+
private element;
|
|
16
|
+
readonly manager: BackgroundThreadEngineImpl | BackgroundSnapshotThreadImpl;
|
|
17
|
+
get fullLayer(): HTMLDivElement;
|
|
18
|
+
get collector(): Collector | undefined;
|
|
19
|
+
get scenePath(): string | undefined;
|
|
20
|
+
constructor(props: ISVGElementToolProps);
|
|
21
|
+
init(): Promise<void>;
|
|
22
|
+
private createElement;
|
|
23
|
+
private render;
|
|
24
|
+
private isSameSize;
|
|
25
|
+
private isSamePosition;
|
|
26
|
+
private isSameZIndex;
|
|
27
|
+
private isSameState;
|
|
28
|
+
private isSameData;
|
|
29
|
+
private updateElementPosition;
|
|
30
|
+
private updateSvg;
|
|
31
|
+
private fit;
|
|
32
|
+
private serializeData;
|
|
33
|
+
private transformState;
|
|
34
|
+
updateCamera(): Promise<void>;
|
|
35
|
+
setWorkOptions(toolsOpt: ISVGOptions, forceRender?: boolean): Promise<void>;
|
|
36
|
+
destroy(): void;
|
|
37
|
+
getRectFromLayer(): {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
w: number;
|
|
41
|
+
h: number;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SVG to Image 库的按需加载工具
|
|
3
|
+
* 使用 dom-to-image 库,用于将包含 SVG foreignObject 的 DOM 转换为图片
|
|
4
|
+
* dom-to-image 支持 SVG foreignObject,可以可靠地将 DOM 节点转换为图片
|
|
5
|
+
*/
|
|
6
|
+
type DomToImageLib = {
|
|
7
|
+
toPng: (node: Node, options?: any) => Promise<string>;
|
|
8
|
+
toBlob: (node: Node, options?: any) => Promise<Blob>;
|
|
9
|
+
toJpeg: (node: Node, options?: any) => Promise<string>;
|
|
10
|
+
toSvg: (node: Node, options?: any) => Promise<string>;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* 按需加载 svg-to-image 库(使用 dom-to-image)
|
|
14
|
+
* @returns Promise<DomToImageLib> 返回加载的库对象
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadSvgToImageLib(): Promise<DomToImageLib>;
|
|
17
|
+
/**
|
|
18
|
+
* 检查库是否已加载
|
|
19
|
+
*/
|
|
20
|
+
export declare function isSvgToImageLibLoaded(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* 获取已加载的库(如果未加载则返回 null)
|
|
23
|
+
*/
|
|
24
|
+
export declare function getSvgToImageLib(): DomToImageLib | null;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ISVGOptions } from "../../core";
|
|
2
|
+
import { BackgroundThreadEngineImpl } from "./manager";
|
|
3
|
+
import { BackgroundSnapshotThreadImpl } from "./snapshot";
|
|
4
|
+
import { VBackgroundNodeManager } from "./vNodeManager";
|
|
5
|
+
export interface ISVGElementToolProps {
|
|
6
|
+
workId: string;
|
|
7
|
+
toolsOpt: ISVGOptions;
|
|
8
|
+
vNodes: VBackgroundNodeManager;
|
|
9
|
+
manager: BackgroundThreadEngineImpl | BackgroundSnapshotThreadImpl;
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function loadAllImages(element: HTMLDivElement): Promise<unknown[]>;
|
|
2
|
+
export declare function loadSvg(svg: SVGSVGElement): Promise<void>;
|
|
3
|
+
export declare function loadAllSvgs(divElement: HTMLDivElement): Promise<void>;
|
|
4
|
+
export declare function loadMermaidSvg(divElement: HTMLDivElement | SVGSVGElement): Promise<void>;
|
|
5
|
+
export declare function divToImageElement(container: HTMLDivElement, options?: {
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
scale?: number;
|
|
9
|
+
}): Promise<HTMLImageElement | null>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ObserverMap } from "../../core/utils/ObserverMap";
|
|
2
|
+
import { ISvgElement } from "./svgElemt";
|
|
3
|
+
export interface IBackgroundNodeMapItem {
|
|
4
|
+
name: string;
|
|
5
|
+
workShape: ISvgElement;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 背景节点管理器
|
|
9
|
+
* 覆盖父类的 curNodeMap 类型,使用 IBackgroundNodeMapItem 作为节点项类型
|
|
10
|
+
* IBackgroundNodeMapItem 是 BaseNodeMapItem 的简化版本,专门用于背景节点管理
|
|
11
|
+
*/
|
|
12
|
+
export declare class VBackgroundNodeManager {
|
|
13
|
+
viewId: string;
|
|
14
|
+
fullLayer?: HTMLDivElement;
|
|
15
|
+
curNodeMap: ObserverMap<string, IBackgroundNodeMapItem>;
|
|
16
|
+
constructor(viewId: string);
|
|
17
|
+
init(fullLayer: HTMLDivElement): void;
|
|
18
|
+
get(name: string): IBackgroundNodeMapItem | undefined;
|
|
19
|
+
setInfo(name: string, info: Partial<IBackgroundNodeMapItem>): void;
|
|
20
|
+
getNodeRectFormShape(key: string): {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
w: number;
|
|
24
|
+
h: number;
|
|
25
|
+
} | undefined;
|
|
26
|
+
delete(name: string): void;
|
|
27
|
+
clear(): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { MasterControlForWorker } from "../mainEngine";
|
|
2
|
+
import { IBatchMainMessage, ILayerOptionType, IWorkerMessage } from "../types";
|
|
3
|
+
import { AppViewDisplayerManager, MainViewDisplayerManager } from "../../plugin/baseViewContainerManager";
|
|
4
|
+
import { BackgroundThreadEngineImpl } from "../../component/svg/manager";
|
|
5
|
+
import { ICanvasOptionType } from "./types";
|
|
6
|
+
import { BackgroundSnapshotThreadImpl } from "../../component/svg/snapshot";
|
|
7
|
+
export interface IBackgroundThreadInitOption {
|
|
8
|
+
master: MasterControlForWorker;
|
|
9
|
+
container: HTMLDivElement;
|
|
10
|
+
canvasOpt: ICanvasOptionType;
|
|
11
|
+
layerOpt: ILayerOptionType;
|
|
12
|
+
displayer: MainViewDisplayerManager | AppViewDisplayerManager;
|
|
13
|
+
post(sp: Omit<IBatchMainMessage, "render">): void;
|
|
14
|
+
}
|
|
15
|
+
export interface BackgroundThreadManager {
|
|
16
|
+
master: MasterControlForWorker;
|
|
17
|
+
backgroundThreadMap: Map<string, BackgroundThreadEngineImpl>;
|
|
18
|
+
createBackgroundThread(viewId: string, opt: IBackgroundThreadInitOption): BackgroundThreadEngineImpl;
|
|
19
|
+
createSnapshotThread(viewId: string, opt: IBackgroundThreadInitOption): BackgroundSnapshotThreadImpl;
|
|
20
|
+
consume(msg: Set<IWorkerMessage>): Promise<void>;
|
|
21
|
+
post(sp: Omit<IBatchMainMessage, "render">): void;
|
|
22
|
+
destroy(): void;
|
|
23
|
+
}
|
|
24
|
+
export declare class BackgroundThreadManagerImpl implements BackgroundThreadManager {
|
|
25
|
+
backgroundThreadMap: Map<string, BackgroundThreadEngineImpl>;
|
|
26
|
+
private snapshotThread?;
|
|
27
|
+
master: MasterControlForWorker;
|
|
28
|
+
constructor(master: MasterControlForWorker);
|
|
29
|
+
createBackgroundThread(viewId: string, opt: IBackgroundThreadInitOption): BackgroundThreadEngineImpl;
|
|
30
|
+
createSnapshotThread(viewId: string, opt: IBackgroundThreadInitOption): BackgroundSnapshotThreadImpl;
|
|
31
|
+
consume(msg: Set<IWorkerMessage>): Promise<void>;
|
|
32
|
+
consumeTargetOne(viewId: string, msg: IWorkerMessage): Promise<void>;
|
|
33
|
+
post: (msg: Omit<IBatchMainMessage, "render">) => void;
|
|
34
|
+
destroy(): void;
|
|
35
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IOffscreenCanvasOptionType, ILayerOptionType, IBatchMainMessage } from "..";
|
|
2
|
+
import { MainViewDisplayerManager, AppViewDisplayerManager } from "../../plugin/baseViewContainerManager";
|
|
3
|
+
import { MasterControlForWorker } from "../mainEngine";
|
|
4
|
+
export type ICanvasOptionType = IOffscreenCanvasOptionType;
|
|
5
|
+
export interface IMainThreadInitOption {
|
|
6
|
+
container: HTMLDivElement;
|
|
7
|
+
canvasOpt: ICanvasOptionType;
|
|
8
|
+
layerOpt: ILayerOptionType;
|
|
9
|
+
master: MasterControlForWorker;
|
|
10
|
+
displayer: MainViewDisplayerManager | AppViewDisplayerManager;
|
|
11
|
+
post(sp: Omit<IBatchMainMessage, "render">): void;
|
|
12
|
+
}
|
package/dist/core/enum.d.ts
CHANGED
|
@@ -36,7 +36,9 @@ export declare enum EToolsKey {
|
|
|
36
36
|
/** 聊天泡泡框 */
|
|
37
37
|
SpeechBalloon = 18,
|
|
38
38
|
/** 图片 */
|
|
39
|
-
Image = 19
|
|
39
|
+
Image = 19,
|
|
40
|
+
/** background svg工具 */
|
|
41
|
+
BackgroundSVG = 20
|
|
40
42
|
}
|
|
41
43
|
export declare enum EDataType {
|
|
42
44
|
/** 本地数据 */
|
|
@@ -125,7 +127,11 @@ export declare enum EPostMessageType {
|
|
|
125
127
|
/** 上报错误 */
|
|
126
128
|
ReportError = 31,
|
|
127
129
|
/** 上报日志 */
|
|
128
|
-
ReportLog = 32
|
|
130
|
+
ReportLog = 32,
|
|
131
|
+
/** 更新 background svg */
|
|
132
|
+
BackgroundSVGUpdate = 33,
|
|
133
|
+
/** delete background svg */
|
|
134
|
+
BackgroundSVGDelete = 34
|
|
129
135
|
}
|
|
130
136
|
export type ECanvasContextType = "webgl2" | "webgl" | "2d";
|
|
131
137
|
export declare enum ECanvasShowType {
|
|
@@ -218,3 +224,7 @@ export declare enum EImageType {
|
|
|
218
224
|
Image = "image",
|
|
219
225
|
Iconify = "iconify"
|
|
220
226
|
}
|
|
227
|
+
export declare enum ESVGType {
|
|
228
|
+
url = "url",
|
|
229
|
+
markmap = "markmap"
|
|
230
|
+
}
|