@netless/forge-whiteboard 0.1.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.
Files changed (94) hide show
  1. package/README.md +216 -0
  2. package/dist/Camera.d.ts +42 -0
  3. package/dist/Camera.d.ts.map +1 -0
  4. package/dist/Gesture.d.ts +17 -0
  5. package/dist/Gesture.d.ts.map +1 -0
  6. package/dist/IndexedNavigation.d.ts +78 -0
  7. package/dist/IndexedNavigation.d.ts.map +1 -0
  8. package/dist/WhitePermissions.d.ts +96 -0
  9. package/dist/WhitePermissions.d.ts.map +1 -0
  10. package/dist/Whiteboard.d.ts +202 -0
  11. package/dist/Whiteboard.d.ts.map +1 -0
  12. package/dist/WhiteboardApplication.d.ts +71 -0
  13. package/dist/WhiteboardApplication.d.ts.map +1 -0
  14. package/dist/WhiteboardKeys.d.ts +8 -0
  15. package/dist/WhiteboardKeys.d.ts.map +1 -0
  16. package/dist/edit/Editor.d.ts +64 -0
  17. package/dist/edit/Editor.d.ts.map +1 -0
  18. package/dist/edit/EditorConfig.d.ts +12 -0
  19. package/dist/edit/EditorConfig.d.ts.map +1 -0
  20. package/dist/edit/TextEditor.d.ts +32 -0
  21. package/dist/edit/TextEditor.d.ts.map +1 -0
  22. package/dist/index.d.ts +7 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/model/PageModel.d.ts +39 -0
  25. package/dist/model/PageModel.d.ts.map +1 -0
  26. package/dist/model/RenderableModel.d.ts +63 -0
  27. package/dist/model/RenderableModel.d.ts.map +1 -0
  28. package/dist/model/SelectElementsModel.d.ts +27 -0
  29. package/dist/model/SelectElementsModel.d.ts.map +1 -0
  30. package/dist/model/ToolbarModel.d.ts +65 -0
  31. package/dist/model/ToolbarModel.d.ts.map +1 -0
  32. package/dist/model/TrashedElementsModel.d.ts +25 -0
  33. package/dist/model/TrashedElementsModel.d.ts.map +1 -0
  34. package/dist/model/renderable/CurveModel.d.ts +22 -0
  35. package/dist/model/renderable/CurveModel.d.ts.map +1 -0
  36. package/dist/model/renderable/ElementModel.d.ts +59 -0
  37. package/dist/model/renderable/ElementModel.d.ts.map +1 -0
  38. package/dist/model/renderable/EraserModel.d.ts +23 -0
  39. package/dist/model/renderable/EraserModel.d.ts.map +1 -0
  40. package/dist/model/renderable/LaserPointerModel.d.ts +27 -0
  41. package/dist/model/renderable/LaserPointerModel.d.ts.map +1 -0
  42. package/dist/model/renderable/LineModel.d.ts +25 -0
  43. package/dist/model/renderable/LineModel.d.ts.map +1 -0
  44. package/dist/model/renderable/PointTextModel.d.ts +32 -0
  45. package/dist/model/renderable/PointTextModel.d.ts.map +1 -0
  46. package/dist/model/renderable/RectangleModel.d.ts +19 -0
  47. package/dist/model/renderable/RectangleModel.d.ts.map +1 -0
  48. package/dist/model/renderable/SegmentsModel.d.ts +18 -0
  49. package/dist/model/renderable/SegmentsModel.d.ts.map +1 -0
  50. package/dist/model/renderable/SelectorModel.d.ts +18 -0
  51. package/dist/model/renderable/SelectorModel.d.ts.map +1 -0
  52. package/dist/model/renderable/StraightLineModel.d.ts +18 -0
  53. package/dist/model/renderable/StraightLineModel.d.ts.map +1 -0
  54. package/dist/model/renderable/TriangleModel.d.ts +17 -0
  55. package/dist/model/renderable/TriangleModel.d.ts.map +1 -0
  56. package/dist/tool/CurveTool.d.ts +13 -0
  57. package/dist/tool/CurveTool.d.ts.map +1 -0
  58. package/dist/tool/EllipseTool.d.ts +14 -0
  59. package/dist/tool/EllipseTool.d.ts.map +1 -0
  60. package/dist/tool/EraserTool.d.ts +14 -0
  61. package/dist/tool/EraserTool.d.ts.map +1 -0
  62. package/dist/tool/GrabTool.d.ts +13 -0
  63. package/dist/tool/GrabTool.d.ts.map +1 -0
  64. package/dist/tool/LaserPointerTool.d.ts +12 -0
  65. package/dist/tool/LaserPointerTool.d.ts.map +1 -0
  66. package/dist/tool/LineTool.d.ts +15 -0
  67. package/dist/tool/LineTool.d.ts.map +1 -0
  68. package/dist/tool/RectangleTool.d.ts +14 -0
  69. package/dist/tool/RectangleTool.d.ts.map +1 -0
  70. package/dist/tool/SelectorTool.d.ts +17 -0
  71. package/dist/tool/SelectorTool.d.ts.map +1 -0
  72. package/dist/tool/StraightLineTool.d.ts +14 -0
  73. package/dist/tool/StraightLineTool.d.ts.map +1 -0
  74. package/dist/tool/TextTool.d.ts +20 -0
  75. package/dist/tool/TextTool.d.ts.map +1 -0
  76. package/dist/tool/TriangleTool.d.ts +14 -0
  77. package/dist/tool/TriangleTool.d.ts.map +1 -0
  78. package/dist/tool/WhiteboardTool.d.ts +18 -0
  79. package/dist/tool/WhiteboardTool.d.ts.map +1 -0
  80. package/dist/utils/Recognizer.d.ts +12 -0
  81. package/dist/utils/Recognizer.d.ts.map +1 -0
  82. package/dist/utils/ShadowEmitter.d.ts +15 -0
  83. package/dist/utils/ShadowEmitter.d.ts.map +1 -0
  84. package/dist/utils/async.d.ts +3 -0
  85. package/dist/utils/async.d.ts.map +1 -0
  86. package/dist/utils/constant.d.ts +2 -0
  87. package/dist/utils/constant.d.ts.map +1 -0
  88. package/dist/utils/paperjs.d.ts +7 -0
  89. package/dist/utils/paperjs.d.ts.map +1 -0
  90. package/dist/whiteboard.esm.js +30752 -0
  91. package/dist/whiteboard.esm.js.map +7 -0
  92. package/dist/whiteboard.js +30756 -0
  93. package/dist/whiteboard.js.map +7 -0
  94. package/package.json +36 -0
@@ -0,0 +1,71 @@
1
+ import { AbstractApplication } from "@netless/forge-room";
2
+ import { ToolbarModel, ToolbarStyle } from "./model/ToolbarModel";
3
+ import { Whiteboard } from "./Whiteboard";
4
+ /**
5
+ * 白板启动配置, 同一个房间中不同客户端应使用一致的启动配置项, 推荐直接硬编码在代码中
6
+ */
7
+ export interface WhiteboardOption {
8
+ /**
9
+ * 白板可视区域宽度, 如果各客户端配置不一致则会导致可视区域不同步
10
+ */
11
+ width: number;
12
+ /**
13
+ * 白板可视区域高度, 如果各客户端配置不一致则会导致可视区域不同步
14
+ */
15
+ height: number;
16
+ /**
17
+ * 默认工具栏样式, 如果各客户端配置不一致则随机应用其中一个值
18
+ */
19
+ defaultToolbarStyle?: Partial<ToolbarStyle>;
20
+ }
21
+ export declare const WHITEBOARD_APP_NAME = "whiteboard";
22
+ export type WhiteboardToolType = "curve" | "rectangle" | "selector" | "line" | "arrow" | "text" | "ellipse" | "triangle" | "eraser" | "laser" | "grab";
23
+ export declare class WhiteboardApplication extends AbstractApplication<WhiteboardOption, Whiteboard> {
24
+ static applicationName: string;
25
+ readonly name: string;
26
+ emitter: Whiteboard;
27
+ toolbarModel: ToolbarModel;
28
+ private selectElementsModel;
29
+ private trashedElementsModel;
30
+ private pageModel;
31
+ private layers;
32
+ private undoManagers;
33
+ private rootElement;
34
+ private paperScope;
35
+ private canvasElement;
36
+ private shadowScope;
37
+ private shadowCanvasElement;
38
+ private shadowEmitter;
39
+ private tools;
40
+ private editors;
41
+ private camera;
42
+ private resizeObserver;
43
+ private option;
44
+ private permissions;
45
+ private inputType;
46
+ private isPenEvent;
47
+ private hasPenInput;
48
+ private get undoManager();
49
+ constructor();
50
+ private userMap;
51
+ private enableToolEvent;
52
+ initialize(option: WhiteboardOption): Promise<void>;
53
+ private handlePageSwitch;
54
+ private hasPermission;
55
+ private handleStackItemAdded;
56
+ private handleStackItemPopped;
57
+ private handleLayersChange;
58
+ private clearElements;
59
+ private getCurrentRenderableModel;
60
+ private handleElementClear;
61
+ private findElementIndex;
62
+ private handleElementInsert;
63
+ private insertElementToParent;
64
+ private handleElementRemove;
65
+ private handleRemoveTrashedElementForSelf;
66
+ private handleElementsTrash;
67
+ private handleElementsSelect;
68
+ rasterize(page: string | number | undefined): Promise<string | null>;
69
+ dispose(): Promise<void>;
70
+ }
71
+ //# sourceMappingURL=WhiteboardApplication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhiteboardApplication.d.ts","sourceRoot":"","sources":["../src/WhiteboardApplication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AASxD,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAUhE,OAAO,EAAyC,UAAU,EAAC,MAAM,cAAc,CAAC;AAchF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACL,WAAW,GACX,UAAU,GACV,MAAM,GACN,OAAO,GACP,MAAM,GACN,SAAS,GACT,UAAU,GACV,QAAQ,GACR,OAAO,GACP,MAAM,CAAC;AAEb,qBAAa,qBAAsB,SAAQ,mBAAmB,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAExF,MAAM,CAAC,eAAe,SAAuB;IAE7C,SAAgB,IAAI,EAAE,MAAM,CAAuB;IAC5C,OAAO,EAAE,UAAU,CAAC;IAEpB,YAAY,EAAG,YAAY,CAAC;IACnC,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,oBAAoB,CAAwB;IACpD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,YAAY,CAAyC;IAE7D,OAAO,CAAC,WAAW,CAAiD;IACpE,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,aAAa,CAAuD;IAC5E,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,mBAAmB,CAAuD;IAClF,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAwB;IAE3C,OAAO,KAAK,WAAW,GAMtB;;IA+MD,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,eAAe,CAErB;IAEW,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyNhE,OAAO,CAAC,gBAAgB,CA6CtB;IAEF,OAAO,CAAC,aAAa,CAEnB;IAEF,OAAO,CAAC,oBAAoB,CAI1B;IAEF,OAAO,CAAC,qBAAqB,CAG3B;IAEF,OAAO,CAAC,kBAAkB,CAmCxB;IAEF,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,yBAAyB,CAQhC;IAED,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,mBAAmB,CAazB;IAEF,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,mBAAmB,CAUzB;IAEF,OAAO,CAAC,iCAAiC,CAGvC;IAEF,OAAO,CAAC,mBAAmB,CAczB;IAEF,OAAO,CAAC,oBAAoB,CAqD1B;IAEK,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+C9D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAcxC"}
@@ -0,0 +1,8 @@
1
+ export declare const WhiteboardKeys: {
2
+ themeColor: string;
3
+ currentPage: string;
4
+ selectElements: string;
5
+ viewMatrix: string;
6
+ cameraMode: string;
7
+ };
8
+ //# sourceMappingURL=WhiteboardKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhiteboardKeys.d.ts","sourceRoot":"","sources":["../src/WhiteboardKeys.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;;;CAS1B,CAAC"}
@@ -0,0 +1,64 @@
1
+ import EventEmitter from "eventemitter3";
2
+ import * as Y from "yjs";
3
+ import { ElementModel } from "../model/renderable/ElementModel";
4
+ import { Camera } from "../Camera";
5
+ import { ShadowEmitter } from "../utils/ShadowEmitter";
6
+ export interface EditorEvents {
7
+ clear: () => void;
8
+ }
9
+ export declare class Editor extends EventEmitter<EditorEvents> {
10
+ rootView: HTMLDivElement;
11
+ private frame;
12
+ private rotator;
13
+ private scope;
14
+ private shadowScope;
15
+ private shadowContainer;
16
+ private ctrlUserMap;
17
+ private viewerId;
18
+ private ctrlId;
19
+ private ctrlNickName;
20
+ private editMode;
21
+ private editCtrlName;
22
+ private editAnchor;
23
+ private lastEditPoint;
24
+ private bounds;
25
+ private targets;
26
+ private editorConfig;
27
+ private aspectRatio;
28
+ private uniformScale;
29
+ private camera;
30
+ private canvasElement;
31
+ private resizeObserver;
32
+ private anchors;
33
+ private title;
34
+ private shadowEmitter;
35
+ constructor(scope: paper.PaperScope, shadowScope: paper.PaperScope, shadowEmitter: ShadowEmitter, canvasElement: HTMLCanvasElement, camera: Camera, initConfig: {
36
+ viewerId: string;
37
+ ctrlId: string;
38
+ ctrlUserMap: Y.Map<any>;
39
+ ctrlNickName: string;
40
+ });
41
+ private alignRootView;
42
+ private handleMatrix;
43
+ private handlePointerDown;
44
+ private handlePointerMove;
45
+ private hiddenCtrlPoints;
46
+ private handlePointerUp;
47
+ private handleFrameDBClick;
48
+ private createTextEditor;
49
+ private createAnchor;
50
+ private setAnchorsVisiblity;
51
+ private updateControlPointsPosition;
52
+ private createControlPoint;
53
+ private removeAllControlPoints;
54
+ private applyConfig;
55
+ setTargets(models: ElementModel[]): void;
56
+ updateBoundsByShadow(): void;
57
+ updateBounds: () => void;
58
+ private translateShadow;
59
+ private resetShadow;
60
+ hidden(): void;
61
+ show(): void;
62
+ dispose(): void;
63
+ }
64
+ //# sourceMappingURL=Editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Editor.d.ts","sourceRoot":"","sources":["../../src/edit/Editor.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAC,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAI9D,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AA8MrD,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,qBAAa,MAAO,SAAQ,YAAY,CAAC,YAAY,CAAC;IAE3C,QAAQ,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAiB;IAEhC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,eAAe,CAAc;IAErC,OAAO,CAAC,WAAW,CAAa;IAEhC,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAiE;IACjF,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAsB;IAErC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,YAAY,CAAkB;IAEtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,aAAa,CAAgB;gBAElB,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;QACnK,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACxB;IAoDD,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY,CAWlB;IAEF,OAAO,CAAC,iBAAiB,CA2CvB;IAEF,OAAO,CAAC,iBAAiB,CA6CvB;IAEF,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe,CAgBrB;IAEF,OAAO,CAAC,kBAAkB,CAOxB;IAEF,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,2BAA2B;IAcnC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,WAAW;IAsBZ,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI;IAwBxC,oBAAoB;IAuBpB,YAAY,aA2BjB;IAEF,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,WAAW;IAYZ,MAAM;IAUN,IAAI;IAiBJ,OAAO;CAGjB"}
@@ -0,0 +1,12 @@
1
+ export interface ControlPointConfig {
2
+ name: string;
3
+ getPosition: () => paper.Point;
4
+ onPositionChange: (point: paper.Point) => void;
5
+ }
6
+ export declare class EditorConfig {
7
+ resizeModel: () => "eight" | "four" | "four-corner" | "horizontal";
8
+ uniformScale: () => boolean;
9
+ controlPoints: ControlPointConfig[];
10
+ merge(other: EditorConfig): EditorConfig;
11
+ }
12
+ //# sourceMappingURL=EditorConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorConfig.d.ts","sourceRoot":"","sources":["../../src/edit/EditorConfig.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,EAAE,MAAM,KAAK,CAAC,KAAK,CAAC;IAE/B,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;CAClD;AAID,qBAAa,YAAY;IAGd,WAAW,EAAE,MAAM,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,YAAY,CAAiB;IAGnF,YAAY,EAAE,MAAM,OAAO,CAAe;IAG1C,aAAa,EAAE,kBAAkB,EAAE,CAAM;IAEzC,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY;CAWlD"}
@@ -0,0 +1,32 @@
1
+ import { EventEmitter } from "eventemitter3";
2
+ import type { Camera } from "../Camera";
3
+ export interface TextEditorEvents {
4
+ change: (value: string) => void;
5
+ done: (value: string) => void;
6
+ caretOutRight: () => void;
7
+ }
8
+ export declare class TextEditor extends EventEmitter<TextEditorEvents> {
9
+ readonly rootView: HTMLDivElement;
10
+ private content;
11
+ private camera;
12
+ private originX;
13
+ private originY;
14
+ private rotation;
15
+ private scale;
16
+ constructor(camera: Camera);
17
+ private handleContentInput;
18
+ private handleContentKeydown;
19
+ private handleContentBlur;
20
+ private handleRootClick;
21
+ private translateCaretIntoView;
22
+ setContent(content: string): void;
23
+ private updateMatrixStyle;
24
+ setOrigin(x: number, y: number): void;
25
+ setRotate(angle: number): void;
26
+ setFontSize(value: number): void;
27
+ setFontFamily(value: string): void;
28
+ focus(): void;
29
+ setCaret(): void;
30
+ dispose(): void;
31
+ }
32
+ //# sourceMappingURL=TextEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEditor.d.ts","sourceRoot":"","sources":["../../src/edit/TextEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAE3C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9B,aAAa,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,qBAAa,UAAW,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAE1D,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,KAAK,CAAa;gBAEP,MAAM,EAAE,MAAM;IA2BjC,OAAO,CAAC,kBAAkB,CAGxB;IAEF,OAAO,CAAC,oBAAoB,CAM1B;IAEF,OAAO,CAAC,iBAAiB,CAEvB;IAEF,OAAO,CAAC,eAAe,CAMrB;IAGF,OAAO,CAAC,sBAAsB;IAoBvB,UAAU,CAAC,OAAO,EAAE,MAAM;IAIjC,OAAO,CAAC,iBAAiB;IAOlB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAM9B,SAAS,CAAC,KAAK,EAAE,MAAM;IAKvB,WAAW,CAAC,KAAK,EAAE,MAAM;IAIzB,aAAa,CAAC,KAAK,EAAE,MAAM;IAI3B,KAAK;IAIL,QAAQ;IAWR,OAAO;CAOjB"}
@@ -0,0 +1,7 @@
1
+ export { WhiteboardApplication } from "./WhiteboardApplication";
2
+ export { WhiteboardPermissionFlag, WhiteboardPermissions } from "./WhitePermissions";
3
+ export { Whiteboard } from "./Whiteboard";
4
+ export type { ToolbarModel, ToolbarEvents, ToolbarStyle } from "./model/ToolbarModel";
5
+ export type { ElementAttributeKey } from "./Whiteboard";
6
+ export type { WhiteboardToolType, WhiteboardOption } from "./WhiteboardApplication";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import EventEmitter from "eventemitter3";
2
+ import * as Y from "yjs";
3
+ import { UserManager } from "@netless/forge-room";
4
+ import { WhiteboardPermissionFlag } from "../WhitePermissions";
5
+ export interface PageEvents {
6
+ /**
7
+ * 页面列表发生变化时触发
8
+ * @param {string[]} ids 页面 id 列表
9
+ */
10
+ pagesChange: (ids: string[]) => void;
11
+ /**
12
+ * 页面切换后触发
13
+ * @param {string} id 当前页 id
14
+ */
15
+ switchPage: (id: string) => void;
16
+ }
17
+ export declare class PageModel extends EventEmitter<PageEvents> {
18
+ private whiteboardAttrsMap;
19
+ private pageMap;
20
+ private requestUserMap;
21
+ private userManager;
22
+ private observers;
23
+ private hasPermission;
24
+ constructor(whiteboardAttrsMap: Y.Map<any>, userManager: UserManager, requestUserMap: (userId: string) => Y.Map<any>, pageMap: Y.Map<string>, hasPermission: (flag: WhiteboardPermissionFlag) => boolean);
25
+ private createCurrentPageObserver;
26
+ private handleUserLeave;
27
+ private handleUserJoin;
28
+ private handleMainPageChange;
29
+ private handleUserCurrentPageChange;
30
+ private handlePageMapChange;
31
+ getCurrentPage(userId: string): string | null;
32
+ pageList(): string[];
33
+ private modifyDetect;
34
+ addPage(id: string): boolean;
35
+ deletePage(id: string, replace?: string): void;
36
+ setUserPage(id: string, userId: string): void;
37
+ gotoPage(id: string): void;
38
+ }
39
+ //# sourceMappingURL=PageModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageModel.d.ts","sourceRoot":"","sources":["../../src/model/PageModel.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAqB,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAG7D,MAAM,WAAW,UAAU;IACvB;;;OAGG;IACH,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,qBAAa,SAAU,SAAQ,YAAY,CAAC,UAAU,CAAC;IAEnD,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,aAAa,CAA8C;gBAG/D,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAC9B,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAC9C,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EACtB,aAAa,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO;IAmB9D,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,eAAe,CAKrB;IAEF,OAAO,CAAC,cAAc,CAEpB;IAEF,OAAO,CAAC,oBAAoB,CAiB3B;IAED,OAAO,CAAC,2BAA2B,CAgBjC;IAEF,OAAO,CAAC,mBAAmB,CAEzB;IAEK,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAW7C,QAAQ,IAAI,MAAM,EAAE;IAI3B,OAAO,CAAC,YAAY;IAgBb,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAW5B,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAc9C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAW7C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAiBpC"}
@@ -0,0 +1,63 @@
1
+ import * as Y from "yjs";
2
+ import EventEmitter from "eventemitter3";
3
+ import { WhiteboardToolType } from "../WhiteboardApplication";
4
+ import { CurveModel } from "./renderable/CurveModel";
5
+ import { ElementModel } from "./renderable/ElementModel";
6
+ import { SelectorModel } from "./renderable/SelectorModel";
7
+ import { SegmentsModel, SegmentsType } from "./renderable/SegmentsModel";
8
+ import { LineModel } from "./renderable/LineModel";
9
+ import { PointTextModel } from "./renderable/PointTextModel";
10
+ import { ToolbarModel } from "./ToolbarModel";
11
+ import { TriangleModel } from "./renderable/TriangleModel";
12
+ import { RectangleModel } from "./renderable/RectangleModel";
13
+ import type { UserManager } from "@netless/forge-room";
14
+ import { EraserModel } from "./renderable/EraserModel";
15
+ import { LaserPointerModel } from "./renderable/LaserPointerModel";
16
+ import { WhiteboardPermissionFlag } from "../WhitePermissions";
17
+ import { ShadowEmitter } from "../utils/ShadowEmitter";
18
+ import { StraightLineModel } from "./renderable/StraightLineModel";
19
+ export interface DrawableElement {
20
+ tool: WhiteboardToolType;
21
+ points: number[];
22
+ stroke: string;
23
+ fill: string;
24
+ strokeWidth: number;
25
+ }
26
+ interface WhiteboardModelEvents {
27
+ elementClear: () => void;
28
+ elementInsert: (elements: ElementModel[]) => void;
29
+ elementRemove: (elementId: string, layerId: string) => void;
30
+ }
31
+ export declare class RenderableModel extends EventEmitter<WhiteboardModelEvents> {
32
+ private scope;
33
+ private toolbarModel;
34
+ private userManager;
35
+ elementModels: Map<string, ElementModel>;
36
+ elements: Y.Map<Y.Map<any>>;
37
+ private layerId;
38
+ private maxIndex;
39
+ private hasPermission;
40
+ private shadowEmitter;
41
+ private get uuid();
42
+ constructor(layerId: string, shadowEmitter: ShadowEmitter, elements: Y.Map<Y.Map<any>>, scope: paper.PaperScope, toolbarModel: ToolbarModel, userManager: UserManager, hasPermission: (flag: WhiteboardPermissionFlag) => boolean);
43
+ flushRenderables(): void;
44
+ private onElementsChange;
45
+ convertToModel(yMap: Y.Map<any>): ElementModel | null;
46
+ private initElement;
47
+ removeElementItem(uuid: string): void;
48
+ private addElementToDoc;
49
+ createCurve(shadow?: boolean): CurveModel | null;
50
+ createLaserPointer(): LaserPointerModel | null;
51
+ createEraser(): EraserModel | null;
52
+ createTriangle(shadow: boolean): TriangleModel | null;
53
+ createRectangle(shadow: boolean): RectangleModel | null;
54
+ createSegmentedPath(type: SegmentsType, shadow: boolean): SegmentsModel | null;
55
+ createSelector(shadow?: boolean): SelectorModel | null;
56
+ createStraightLine(shadow: boolean): StraightLineModel | null;
57
+ createLinePath(shadow: boolean): LineModel | null;
58
+ createPointText(x: number, y: number, shadow: boolean): PointTextModel | null;
59
+ clearElement(): void;
60
+ dispose(): void;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=RenderableModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderableModel.d.ts","sourceRoot":"","sources":["../../src/model/RenderableModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import * as Y from "yjs";
2
+ import EventEmitter from "eventemitter3";
3
+ import type { UserManager } from "@netless/forge-room";
4
+ import { WhiteboardPermissionFlag } from "../WhitePermissions";
5
+ export interface SelectElementsModelEvents {
6
+ elementsChange: (userId: string, elementIds: string[]) => void;
7
+ }
8
+ export declare class SelectElementsModel extends EventEmitter<SelectElementsModelEvents> {
9
+ private requestUserMap;
10
+ private userManager;
11
+ private hasPermission;
12
+ private observers;
13
+ private get hasEditSelfPermission();
14
+ private get hasEditOthersPermission();
15
+ constructor(userManager: UserManager, requestUserMap: (userId: string) => Y.Map<any>, hasPermission: (flag: WhiteboardPermissionFlag) => boolean);
16
+ private handleUserLeave;
17
+ private handleUserJoin;
18
+ private handleUserSelectElementsChange;
19
+ private createModel;
20
+ addSelectElementForSelf(elements: {
21
+ elementId: string;
22
+ ownerId: string;
23
+ }[]): void;
24
+ clearSelectElementForSelf(): void;
25
+ dispose(): void;
26
+ }
27
+ //# sourceMappingURL=SelectElementsModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectElementsModel.d.ts","sourceRoot":"","sources":["../../src/model/SelectElementsModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAG7D,MAAM,WAAW,yBAAyB;IACtC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAClE;AAED,qBAAa,mBAAoB,SAAQ,YAAY,CAAC,yBAAyB,CAAC;IAE5E,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAA8C;IAEnE,OAAO,CAAC,SAAS,CAA+B;IAEhD,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,uBAAuB,GAElC;gBAGG,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAC9C,aAAa,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO;IAoB9D,OAAO,CAAC,eAAe,CAKrB;IAEF,OAAO,CAAC,cAAc,CAMpB;IAEF,OAAO,CAAC,8BAA8B,CAQpC;IAEF,OAAO,CAAC,WAAW;IASZ,uBAAuB,CAAC,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE;IAmC1E,yBAAyB;IAQzB,OAAO;CAWjB"}
@@ -0,0 +1,65 @@
1
+ import * as Y from "yjs";
2
+ import EventEmitter from "eventemitter3";
3
+ import type { WhiteboardToolType } from "../WhiteboardApplication";
4
+ export interface ToolbarEvents {
5
+ update: (style: ToolbarStyle) => void;
6
+ }
7
+ export declare const TOOLBAR_KEYS: {
8
+ tool: string;
9
+ fontSize: string;
10
+ fontFamily: string;
11
+ strokeColor: string;
12
+ fillColor: string;
13
+ strokeWidth: string;
14
+ dashArray: string;
15
+ };
16
+ export type ToolbarStyle = {
17
+ /**
18
+ * 当前选中的工具
19
+ */
20
+ tool: WhiteboardToolType;
21
+ /**
22
+ * 字体大小, 默认 24
23
+ */
24
+ fontSize: number;
25
+ /**
26
+ * 字体名称, 默认 "Courier New"
27
+ */
28
+ fontFamily: string;
29
+ /**
30
+ * 描边颜色, 默认 "#009688"
31
+ */
32
+ strokeColor: string;
33
+ /**
34
+ * 填充颜色, 默认 null
35
+ */
36
+ fillColor: string | null;
37
+ /**
38
+ * 描边宽度, 默认 4
39
+ */
40
+ strokeWidth: number;
41
+ /**
42
+ * 虚线配置, 默认 [], 空数组表示实线
43
+ */
44
+ dashArray: number[];
45
+ };
46
+ export declare class ToolbarModel extends EventEmitter<ToolbarEvents> {
47
+ private root;
48
+ get currentTool(): WhiteboardToolType;
49
+ set currentTool(value: WhiteboardToolType);
50
+ get fontSize(): number;
51
+ set fontSize(value: number);
52
+ get dashArray(): number[];
53
+ set dashArray(value: number[]);
54
+ get fontFamily(): string;
55
+ set fontFamily(value: string);
56
+ get strokeColor(): string;
57
+ set strokeColor(value: string);
58
+ get fillColor(): string;
59
+ set fillColor(value: string);
60
+ get strokeWidth(): number;
61
+ set strokeWidth(value: number);
62
+ constructor(root: Y.Map<any>, defaultStyle: ToolbarStyle);
63
+ private handleRootUpdate;
64
+ }
65
+ //# sourceMappingURL=ToolbarModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarModel.d.ts","sourceRoot":"","sources":["../../src/model/ToolbarModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,YAAY;;;;;;;;CAQxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACvB;;OAEG;IACH,IAAI,EAAE,kBAAkB,CAAC;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB,CAAA;AAED,qBAAa,YAAa,SAAQ,YAAY,CAAC,aAAa,CAAC;IAEzD,OAAO,CAAC,IAAI,CAAa;IAEzB,IAAW,WAAW,IAAI,kBAAkB,CAE3C;IACD,IAAW,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAE/C;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEhC;IAED,IAAW,SAAS,IAAI,MAAM,EAAE,CAE/B;IACD,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAEnC;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IACD,IAAW,UAAU,CAAC,KAAK,EAAE,MAAM,EAElC;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IACD,IAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAEnC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IACD,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAEjC;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IACD,IAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAEnC;gBAEkB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,YAAY;IAW/D,OAAO,CAAC,gBAAgB,CActB;CACL"}
@@ -0,0 +1,25 @@
1
+ import * as Y from "yjs";
2
+ import type { UserManager } from "@netless/forge-room";
3
+ import EventEmitter from "eventemitter3";
4
+ import { WhiteboardPermissionFlag } from "../WhitePermissions";
5
+ export interface TrashedElementsModelEvents {
6
+ elementsChange: (userId: string, elementIds: string[]) => void;
7
+ removeElementForSelf: (userId: string, elementId: string) => void;
8
+ }
9
+ export declare class TrashedElementsModel extends EventEmitter<TrashedElementsModelEvents> {
10
+ private requestUserMap;
11
+ private userManager;
12
+ private hasPermission;
13
+ private observers;
14
+ private get hasDeleteSelfPermission();
15
+ private get hasDeleteOthersPermission();
16
+ constructor(userManager: UserManager, requestUserMap: (userId: string) => Y.Map<any>, hasPermission: (flag: WhiteboardPermissionFlag) => boolean);
17
+ private handleUserLeave;
18
+ private handleUserJoin;
19
+ private handleUserTrashElementsChange;
20
+ private createModel;
21
+ addTrashedElementForSelf(elementId: string, ownerId: string): void;
22
+ removeAllTrashedElementsForSelf(): void;
23
+ dispose(): void;
24
+ }
25
+ //# sourceMappingURL=TrashedElementsModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrashedElementsModel.d.ts","sourceRoot":"","sources":["../../src/model/TrashedElementsModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,KAAK,EAAW,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAC/D,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAG7D,MAAM,WAAW,0BAA0B;IACvC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC/D,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE;AAED,qBAAa,oBAAqB,SAAQ,YAAY,CAAC,0BAA0B,CAAC;IAE9E,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAA8C;IAEnE,OAAO,CAAC,SAAS,CAA+B;IAEhD,OAAO,KAAK,uBAAuB,GAElC;IAED,OAAO,KAAK,yBAAyB,GAEpC;gBAGG,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAC9C,aAAa,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO;IAqB9D,OAAO,CAAC,eAAe,CAKrB;IAEF,OAAO,CAAC,cAAc,CAMpB;IAEF,OAAO,CAAC,6BAA6B;IAUrC,OAAO,CAAC,WAAW;IASZ,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IA0B3D,+BAA+B;IAW/B,OAAO;CAYjB"}
@@ -0,0 +1,22 @@
1
+ import * as Y from "yjs";
2
+ import { ElementModel } from "./ElementModel";
3
+ import { EditorConfig } from "../../edit/EditorConfig";
4
+ export declare class CurveModel extends ElementModel<paper.Path> {
5
+ item: paper.Path | null;
6
+ constructor(root: Y.Map<any>, scope: paper.PaperScope);
7
+ private average;
8
+ private parsePoints;
9
+ private matrixedPoints;
10
+ private createPath;
11
+ private getNextSegments;
12
+ protected onVectorUpdate(): void;
13
+ createPaperItem(): void;
14
+ editorConfig(): EditorConfig;
15
+ protected vectorKeys(): string[];
16
+ protected styleKeys(): {
17
+ include: string[];
18
+ exclude: string[];
19
+ };
20
+ protected onStyleKeyUpdate(key: string): void;
21
+ }
22
+ //# sourceMappingURL=CurveModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CurveModel.d.ts","sourceRoot":"","sources":["../../../src/model/renderable/CurveModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAErD,qBAAa,UAAW,SAAQ,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;IAE7C,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAQ;gBAEnB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU;IAU5D,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,UAAU;IAkClB,OAAO,CAAC,eAAe;IAMvB,SAAS,CAAC,cAAc;IASjB,eAAe,IAAI,IAAI;IAUvB,YAAY,IAAI,YAAY;IAInC,SAAS,CAAC,UAAU,IAAI,MAAM,EAAE;IAIhC,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;CASzC"}
@@ -0,0 +1,59 @@
1
+ import * as Y from "yjs";
2
+ import { EditorConfig } from "../../edit/EditorConfig";
3
+ import { ShadowEmitter } from "../../utils/ShadowEmitter";
4
+ export declare abstract class ElementModel<ITEM extends paper.Item = paper.Item> {
5
+ static KEYS: {
6
+ index: string;
7
+ uuid: string;
8
+ strokeWidth: string;
9
+ strokeColor: string;
10
+ fillColor: string;
11
+ dashArray: string;
12
+ pointsMatrix: string;
13
+ points: string;
14
+ ownerId: string;
15
+ ctrlId: string;
16
+ shadow: string;
17
+ };
18
+ shadowEmitter: ShadowEmitter | null;
19
+ readonly root: Y.Map<any>;
20
+ readonly scope: paper.PaperScope;
21
+ abstract item: ITEM | null;
22
+ protected abstract createPaperItem(): void;
23
+ protected abstract onVectorUpdate(): void;
24
+ protected abstract vectorKeys(): string[];
25
+ protected abstract styleKeys(): {
26
+ include: string[];
27
+ exclude: string[];
28
+ };
29
+ protected abstract onStyleKeyUpdate(key: string): void;
30
+ abstract editorConfig(): EditorConfig;
31
+ get index(): number;
32
+ get uuid(): string;
33
+ get type(): string | undefined;
34
+ get strokeWidth(): number;
35
+ set strokeWidth(v: number);
36
+ get strokeColor(): string;
37
+ set strokeColor(value: string);
38
+ get fillColor(): string;
39
+ set fillColor(value: string);
40
+ get dashArray(): number[];
41
+ set dashArray(value: number[]);
42
+ get pointsMatrix(): number[];
43
+ get points(): number[];
44
+ set ownerId(value: string);
45
+ get ownerId(): string;
46
+ get ctrlId(): string;
47
+ set ctrlId(value: string);
48
+ get shadow(): string;
49
+ set shadow(value: string);
50
+ constructor(root: Y.Map<any>, scope: paper.PaperScope);
51
+ private handlePropChange;
52
+ createPaperElement(): void;
53
+ appendPoints(points: number[]): void;
54
+ setPoints(points: number[]): void;
55
+ appendPointsMatrix(matrix: paper.Matrix): void;
56
+ rotateByOffset(angle: number, centerX: number, centerY: number): number;
57
+ getStyleKeys(): string[];
58
+ }
59
+ //# sourceMappingURL=ElementModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementModel.d.ts","sourceRoot":"","sources":["../../../src/model/renderable/ElementModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAExD,8BAAsB,YAAY,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;IAEnE,MAAM,CAAC,IAAI;;;;;;;;;;;;MAYV;IAEM,aAAa,EAAE,aAAa,GAAG,IAAI,CAAQ;IAClD,SAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,SAAgB,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;IACxC,SAAgB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElC,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI;IAE1C,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI;IAEzC,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM,EAAE;IACzC,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IACxE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;aACtC,YAAY,IAAI,YAAY;IAE5C,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IACD,IAAW,WAAW,CAAC,CAAC,EAAE,MAAM,EAE/B;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IACD,IAAW,WAAW,CAAC,KAAK,EAAE,MAAM,EAEnC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IACD,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAEjC;IAED,IAAW,SAAS,IAAI,MAAM,EAAE,CAE/B;IACD,IAAW,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAEnC;IAED,IAAW,YAAY,IAAI,MAAM,EAAE,CAElC;IAED,IAAW,MAAM,IAAI,MAAM,EAAE,CAE5B;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,MAAM,EAE/B;IACD,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,MAAM,IAAI,MAAM,CAE1B;IACD,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAE9B;IAKD,IAAW,MAAM,IAAI,MAAM,CAE1B;IACD,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAE9B;gBAEkB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU;IAW5D,OAAO,CAAC,gBAAgB,CAuCtB;IAEK,kBAAkB;IAYlB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;IAI7B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE;IAe1B,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM;IAMvC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAkBvE,YAAY,IAAI,MAAM,EAAE;CAKlC"}
@@ -0,0 +1,23 @@
1
+ import { ElementModel } from "./ElementModel";
2
+ import * as Y from "yjs";
3
+ import { EditorConfig } from "../../edit/EditorConfig";
4
+ export declare class EraserModel extends ElementModel<paper.Path> {
5
+ item: paper.Path | null;
6
+ private sliceBegin;
7
+ constructor(root: Y.Map<any>, scope: paper.PaperScope);
8
+ private average;
9
+ private createPath;
10
+ private parsePoints;
11
+ private matrixedPoints;
12
+ private getNextSegments;
13
+ protected onVectorUpdate(): void;
14
+ createPaperItem(): void;
15
+ editorConfig(): EditorConfig;
16
+ protected vectorKeys(): string[];
17
+ protected styleKeys(): {
18
+ include: string[];
19
+ exclude: string[];
20
+ };
21
+ protected onStyleKeyUpdate(key: string): void;
22
+ }
23
+ //# sourceMappingURL=EraserModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EraserModel.d.ts","sourceRoot":"","sources":["../../../src/model/renderable/EraserModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAErD,qBAAa,WAAY,SAAQ,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;IAE9C,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAQ;IAEtC,OAAO,CAAC,UAAU,CAAa;gBAEZ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU;IAU5D,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,UAAU;IAkClB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,eAAe;IAMvB,SAAS,CAAC,cAAc;IAQjB,eAAe,IAAI,IAAI;IA4BvB,YAAY,IAAI,YAAY;IAInC,SAAS,CAAC,UAAU,IAAI,MAAM,EAAE;IAIhC,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;CAIzC"}
@@ -0,0 +1,27 @@
1
+ import { ElementModel } from "./ElementModel";
2
+ import * as Y from "yjs";
3
+ import { EditorConfig } from "../../edit/EditorConfig";
4
+ export declare class LaserPointerModel extends ElementModel<paper.Path> {
5
+ item: paper.Path | null;
6
+ private clientId;
7
+ private sliceBegin;
8
+ private displayStrokeWidth;
9
+ private cachedPoints;
10
+ constructor(clientId: string, root: Y.Map<any>, scope: paper.PaperScope, removeElement: (uuid: string) => void);
11
+ beginRemoveAnimate(): void;
12
+ private average;
13
+ private createPath;
14
+ private parsePoints;
15
+ private matrixedPoints;
16
+ private getNextSegments;
17
+ protected onVectorUpdate(): void;
18
+ createPaperItem(): void;
19
+ editorConfig(): EditorConfig;
20
+ protected vectorKeys(): string[];
21
+ protected styleKeys(): {
22
+ include: string[];
23
+ exclude: string[];
24
+ };
25
+ protected onStyleKeyUpdate(key: string): void;
26
+ }
27
+ //# sourceMappingURL=LaserPointerModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LaserPointerModel.d.ts","sourceRoot":"","sources":["../../../src/model/renderable/LaserPointerModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAErD,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;IAEpD,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAQ;IAEtC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,YAAY,CAAyB;gBAE1B,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAwC9G,kBAAkB;IAIzB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,UAAU;IAkClB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,eAAe;IAMvB,SAAS,CAAC,cAAc;IAQjB,eAAe,IAAI,IAAI;IAUvB,YAAY,IAAI,YAAY;IAInC,SAAS,CAAC,UAAU,IAAI,MAAM,EAAE;IAIhC,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;CAIzC"}