1.0.0 • Published 6 months ago

@xylink/xy-whiteboard v1.0.0

Weekly downloads
-
License
-
Repository
-
Last release
6 months ago

XYLink WHITEBOARD SDK

项目介绍

XYLink WHITEBOARD SDK 是小鱼易连的Web端白板SDK,它是通过 HTML 网页加载的 JavaScript 库,开发者可以使用 XYLink WHITEBOARD SDK 提供的方法快速实现会中多人电子白板互动。电子白板功能包含:画线、形状、擦除、切换颜色、切换画笔、形状等。白板状态的变更同样会通过事件回调通知参会者,开发者获取后可进行后续业务处理。

安装

# 通过 Yarn 安装
$ yarn add @xylink/xy-whiteboard

# 通过 Npm 安装
$ npm install @xylink/xy-whiteboard

#示例

import { XYWhiteboard } from '@xylink/xy-whiteboard';

const whiteboard = new XYWhiteboard({ containerId: 'container', id: callUri });

/**
 * 白板配置
 *
 * @property { string } containerId - canvas父级元素的ID, 默认为body
 * @property { number } width - 白板宽度
 * @property { number } height - 白板高度
 * @property { string } id - 节点标识
 * @property { WhiteboardCommonConfig } config - 绘制配置
 * @property { XYWhiteboardAuthConfig } authConfig - 权限配置
 */
export interface XYWhiteboardConfig {
  containerId?: string;
  width?: number;
  height?: number;
  id?: string;
  config?: WhiteboardCommonConfig;
  authConfig?: XYWhiteboardAuthConfig;
}

/**
 * 白板常规配置,包含样式配置等
 *
 * @property { string } backgroundColor - 画布背景颜色
 * @property { string } stroke - 线条颜色, 默认#000
 * @property { string } fill - 填充颜色, 默认transparent
 * @property { number } strokeWidth - 大小, 默认3
 * @property { boolean } isScale - 是否支持缩放,默认false
 * @property { number } scale - 画布的缩放值, 默认1
 * @property { number } maxScale - 画布的最大缩放值, 默认3
 * @property { Function } getDrawLineWidth - 计算实际画线线宽方法, 批注时使用
 * @property { Function } setLog - 写日志
 */
export interface WhiteboardCommonConfig {
  backgroundColor?: string;
  stroke?: string;
  fill?: string;
  strokeWidth?: number;
  isScale?: boolean;
  scale?: number;
  maxScale?: number;
  getDrawLineWidth?: (width: number) => number;
  setLog?: (title: string, content: any, ...rest: any[]) => void;
}

// 笔刷 
whiteboard.switchDrawType(XY_DRAW_TYPE.PENCIL);

// 设置线条宽度
whiteboard.setStrokeWidth(size);

// 设置线条颜色
whiteboard.setStrokeColor(color);

// 清除整个白板
whiteboard.clear();

// 撤销
whiteboard.undo();

// 重做
whiteboard.redo();

// 选择, 设置后,可对元素进行选中,放大缩小旋转等;
whiteboard.switchDrawType(XY_DRAW_TYPE.SELECTOR);

// 设置白板尺寸
whiteboard.setCanvasSize({ width: 557 , height: 236 , scale: true });

// 获取白板尺寸
whiteboard.getCanvasSize();

// 根据远端数据绘制画面,仅支持小鱼白板数据类型
 whiteboard.draw(data);

/**
 * 绘制类型
 *
 * @param { PENCIL } pencil - 笔
 * @param { RECT } rect - 矩形
 * @param { TRIANGLE } triangle - 三角形
 * @param { CIRCLE } circle - 圆形
 * @param { ARROW } arrow - 箭头
 * @param { LINE } line - 直线
 * @param { ERASER } eraser - 橡皮刷
 * @param { ERASER_ELEMENT } eraserElement - 橡皮刷,擦除整个元素
 * @param { TEXT } text - 文字
 * @param { SELECTOR } selector - 选择
 * @param { NONE } none - 禁止绘制
 */
export enum XY_DRAW_TYPE {
  PENCIL = 'pencil',
  RECT = 'rect',
  TRIANGLE = 'triangle',
  CIRCLE = 'circle',
  ARROW = 'arrow',
  LINE = 'line',
  ERASER = 'eraser',
  ERASER_ELEMENT = 'eraserElement',
  TEXT = 'text',
  SELECTOR = 'selector',
  NONE = 'none'
}

on(eventName:EVENT , callback)

/**
 * 上报事件类型
 *
 * @param { XY_DRAW_TYPE } XY_DRAW_TYPE - 绘制类型
 * @param { DRAW_DATA } DRAW_DATA - 绘制数据
 * @param { DRAW_STATUS } DRAW_STATUS - 绘制状态
 * @param { ACTION } ACTION - 操作步数
 */
export enum XY_WHITEBOARD_EVENT {
  XY_DRAW_TYPE = 'XY_DRAW_TYPE',
  DRAW_DATA = 'XY_DRAW_DATA',
  DRAW_STATUS = 'XY_DRAW_STATUS',
  ACTION = 'XY_ACTION'
}

/**
 * 白板消息
 *
 * @property { XY_WHITEBOARD_TYPE } type - 命令类型
 * @property { string } cid - 线条唯一标识
 * @property { number } pageId - 白板页码
 * @property { XY_WHITEBOARD_LIMIT } limit - 清除权限
 * @property { XY_WHITEBOARD_SHAPE } shape - 图形
 * @property { string[] } cids - 删除线的cid
 * @property { XY_WHITEBOARD_DRAWER_DATA[] } p - 白板详细绘制数据
 * @property { number } c - 忽略,是否有缓存消息
 * @property { string } id - 绘制用户id
 * @property { string } name - 绘制用户名
 * @property { string } oldCid - 编辑消息时提供的唯一标识,匹配后需要替换为cid字段
 * @property { string[] } oldCids - 忽略,缓存操作过程产生的所有cid
 * @property { string[] } f - 忽略
 * @property { string[] } list - 忽略
 * @property { string } seq - 操作索引位
 */
export interface XY_WHITEBOARD_DATA {
  type: XY_WHITEBOARD_TYPE;
  cid?: string;
  pageId?: number;
  limit?: XY_WHITEBOARD_LIMIT;
  shape?: XY_WHITEBOARD_SHAPE;
  cids?: string[];
  p?: XY_WHITEBOARD_DRAWER_DATA[] | XY_WHITEBOARD_PAGE_DATA[];
  c?: number;
  id?: string;
  name?: string;
  oldCid?: string;
  oldCids?: string[]; // 缓存操作过程产生的所有cid
  f?: string;
  list?: XY_WHITEBOARD_DATA[];
  seq?: string;
}
事件名称描述回调参数
XY_DRAW_TYPE绘制类型string
DRAW_DATA当前绘制数据XY_WHITEBOARD_DATA
DRAW_STATUS绘制状态XY_WHITEBOARD_DRAW_STATUS
ACTION当前绘制数据XY_WHITEBOARD_ACTION

Changelog

0.1.0 (2024-10-21)

✨ Features | 新功能

  • 白板
1.0.0

6 months ago

0.0.2-beta.1

6 months ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.4-beta.1

1 year ago