UNPKG

hx-white-board

Version:

```bash npm install hx-white-board ```

284 lines (203 loc) 7.16 kB
## 一、安装方式: ```bash npm install hx-white-board ``` ## 二、使用方式 ### 2.1 初始化 ```javascript import { WhiteBoard } from 'hx-white-board'; const canvas = ref<FabricCanvas>(); provide('canvas', canvas) function init() { // 初始化画布 const canvas1 = new FabricCanvas('canvas'); canvas.value = canvas1; // 画布重绘后同步到远程 canvas1.on('after:render', () => { console.log(canvas1.toJSON()); // TODO SEND TO REMOTE // const compressedData = gzip(canvas1.toJSON()); // const text = uint8ArrayToBase64(compressedData); // const data = base64ToUint8Array(text) // const jsonData = ungzip(data); // canvas2?.loadFromJSON(jsonData, ()=>{ // console.log('画布同步成功!'); // }); }) } ``` ### 2.2 设置工具 ```typescript export type DrawingTool = | 'rectangle' | 'triangle' | 'triangle-filler' | 'triangle-opacity' | 'circle' | 'circle-filler' // 实心圆 | 'circle-opacity' // 圆形半透明 | 'ellipse' | 'line' | 'pointer' | 'arrow' | 'dot' | 'text' | 'pencil' | 'select' | 'eraser' | 'rect-filler' // 矩形填充 | 'rect-opacity' // 矩形半透明 | 'double-arrow' // 双填充 | '' // 禁止绘制 canvas.setDrawingTool('pencil') ``` ### 2.3 设置画笔颜色 ```typescript import { inspect } from 'util' import colors = module export enum ShapeOpacity { fully = 1, translucency = 0.7, zero = 0 } /** * 当前支持的颜色 * */ const colors = ref<Record<string, string>>({ red: '#DD3A32', // 红色 orange: '#FFDD21', // 橙色 green: '#1ACD64', // 绿色 cyan: '#21E8FF', // 青色 blue: '#3721FF', // 蓝色 purple: '#A621FF', // 紫色 pink: '#FF217A', // 粉色 white: '#FFFFFF', // 白色 yellowGreen: '#E6FF08', // 黄绿色 deepOrange: '#FFA621', // 橙黄色 lightGreen: '#08FF9C', // 淡绿色 black: '#000000' // 黑色 }) canvas.setPaintColor(colors.value.red) /** * 绘图选项 * @param stroke 线条颜色 推荐使用setPaintColor * @param strokeWidth 线条宽度 * @param fill 填充颜色 推荐直接使用setPaintColor * @param opacity 透明度 */ export interface ShapeOptions { stroke?: string strokeWidth?: number fill?: string opacity?: ShapeOpacity } // 设置线条宽度(粗细) canvas.setOptions({ strokeWidth: 1 }) ``` ### 2.4 设置缩放 ```typescript canvas.zoom(ratio: number); ``` ### 2.5 设置橡皮擦 ```typescript canvas.eraser() ``` ### 2.6 插入 PPT ```typescript canvas.insertPPT(url: string[]); // 设置当前PPT页码 canvas.setCurrentScense(index: number); ``` ### 2.7 清空所有对象 ```typescript canvas.clear() ``` ### 2.7 设置画布背景 ```typescript canvas.setBackgroundColor() ``` ### 2.8 添加/删除/修改远端对象 ```typescript canvas.addObject(object: iObject); canvas.modifyObject(object: iObject); canvas.removeObject(object: iObject); ``` ### 2.9 销毁 canvas ```typescript canvas.destroy() ``` ### 2.10 导出画布数据 ```typescript const data = canvas.exportCanvas() ``` ### 2.11 导入画布数据 ```typescript canvas.importCanvas(data) ``` ## 3.版本变更 ### v0.2.7(2023-12-04) bug 修复更新末位 功能更新修改中间位置 ### v0.1.99(2023-10-27) 修复 redo、undo 时,触发 added、removed、modify 事件缺少 opertion 字段的问题 修复橡皮擦工具擦除图形时,未保存快照的问题 ### v0.1.96(2023-10-18) 禁用双指缩放 修复 path:created 事件 ### v0.1.93(2023-10-13) 限制缩放比例为 1-2### v0.1.89(2023-10-13) 移除了 Object:added 事件,合并至 path:created 中。 事件添加了 operation 字段,封装至 SDK 内部。 事件添加了 memid,字段。 ### v0.1.86(2023-10-12) 修复了自由画笔设置画笔粗细不生效的问题 修复了 itext 画笔未触发 path:created 事件 重构事件结构,将创建图形移动至 mousemove 事件,并加入距离判断,来防止误触。 添加 logger 库,用于控制日志输出级别 ### v0.1.77(2023-10-07) 修复了自由画笔工具设置线条宽度不生效的 bug 修复自由画笔工具和文字工具没有触发事件的 bug ### v0.1.74(2023-09-26) 新增构建函数参数,传入角色,用于判断 removeObject 时,从 historyList 查找删除或外部数组查找删除。 新增构造函数参数,传入 memid,用于判断外部传入的 object 是否是自己绘制的,如果是自己绘制的,则不需要触发 removed 事件。 修复外部 object 错误触发 removed 事件的问题。 ### v0.1.67(2023-09-25) 修复橡皮擦没有删除其他人绘制的图形的问题 ### v0.1.67(2023-09-19) 修复其他图形切换至文本工具时,判断异常导致无法输入文本 ### v0.1.66(2023-09-19) 移出了 touch 事件的 identifier 判断,当前在 inappwebview 中,touchstart 和 touchmove 的 identifier 发生了变化[touchevent 文档](https://developer.mozilla.org/zh-CN/docs/Web/API/Touch_events) ### v0.1.64(2023-09-18) 修复了当调用 redo、undo 接口时,没有触发 added、removed、modify 事件的问题 添加了 uuid,用于标识每个图形,用于远端同步 ### v0.1.59(2023-09-15) 序列化标准修改为以宽度为固定参考 ### v0.1.55(2023-09-15) 删除了选中图形的删除按钮 ### v0.1.55(2023-09-05) 添加 export 导出数据归一化处理 添加 import 导入数据逆归一化处理 修复橡皮擦工具无法删除的问题 ### v0.1.49(2023-09-05) 修复三角形绘制 ### v0.1.49(2023-09-04) 修复了双箭头绘制的 BUG 修复了 clear 接口没有清空所有对象的问题 添加了 setDrawingTool 接口日志和参数校验 修复了非选择工具可选中图形的 bug,只有选择工具才能选中图形 ### v0.1.48(2023-08-31) 添加正在编辑的 i-text 导出,导入时,恢复编辑状态。 ### v0.1.47(2023-08-31) 修复激光笔移出画布后,触发了 removed 事件的 bug,此事件无需上报。 ### v0.1.45(2023-08-31) 1. 修复 importCanvas 接口画布工具和背景图同步失败的问题 ### v0.1.44(2023-08-31) 1. 修复了激光笔工具行为错误,由原来的鼠标按下才生效修改为鼠标进入画布生效,鼠标移出时自动删除 2. 删除了激光笔的 event 事件,因参会人无激光笔功能,且发起人不需要向其他参会人同步激光笔位置 3. 适配移动端激光笔,兼容移动端 touch 事件,移动端仍然需要 touch 和 move 才会出现激光笔。 4. 添加了 exportCanvas 方法,用于导出当前画布数据,用于 window.onresize 调整画布,需先销毁再创建。 5. 添加了 importCanvas 方法,用于导入本地画布数据,用于 window.onresize 调整画布,需先销毁再创建。 ### v0.1.42(2023-08-31) 1. 重写了历史数据部分,分离了本地绘制数据和远端传入数据,解决了外部传入数据时,本地绘制数据被清空的问题 2. 修复了外部数据删除时候,不必要的事件触发。 3. 添加了归一化方法,支持外部传入数据时,可调用 normalization 对数据进行归一化处理。