@jianghh/canvas-graffiti
Version:
canvas涂鸦库,支持手写、笔写、鼠标,选中元素,并且移动、删除等功能。集成撤销重做操作。
2 lines (1 loc) • 1.07 kB
JavaScript
"use strict";var r=Object.defineProperty;var h=(t,e,i)=>e in t?r(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var s=(t,e,i)=>(h(t,typeof e!="symbol"?e+"":e,i),i);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class o{constructor(e){s(this,"revokeList",[]);s(this,"redoList",[]);s(this,"preItem",null);s(this,"maxSize",5);this.revokeList=[],e&&(this.maxSize=e)}get revokeSize(){return this.revokeList.length}get redoSize(){return this.redoList.length}push(e){this.revokeSize===this.maxSize?this.revokeList.shift():this.revokeSize>this.maxSize&&(this.revokeList=this.revokeList.reverse().splice(0,this.maxSize-1).reverse()),this.preItem&&this.revokeList.push(this.preItem),this.preItem=e,this.redoList=[]}pop(){this.redoList.push(this.preItem);const e=this.revokeSize?this.revokeList.pop():null;return this.preItem=e,e}popRedo(){if(this.redoSize){const e=this.redoList.pop();return this.revokeList.push(this.preItem),this.preItem=e,e}else return null}clear(){this.revokeList=[],this.redoList=[],this.preItem=null}}exports.CacheStack=o;