drill.define(async e=>{let r,t=await e("common/data"),s=[],o=[];t.project.mainPage.watch((e=>{let r,t={modifys:[]};return s=>{clearTimeout(r),t.modifys.push(...s.modifys),r=setTimeout(()=>{e(t),t={modifys:[]}},200)}})(e=>{if(r&&((e,r)=>{let t=!0;return e.length==r.length?e.forEach((e,s)=>{e.modifyId!=r[s].modifyId&&(t=!1)}):t=!1,t})(e.modifys,r))return;o.length&&(o.length=0);let t=[],n={modifys:t};s.unshift(n),e.modifys.forEach(e=>{switch(e.genre){case"change":t.push({fromKey:e.fromKey,genre:e.genre,value:e.value,key:e.key,keys:e.keys,oldVal:e.oldVal});break;case"arrayMethod":t.push({fromKey:e.fromKey,genre:e.genre,args:e.args,methodName:e.methodName,keys:e.keys,returnValue:e.returnValue})}})}));const n=()=>Math.random().toString(32).substr(2);let a=0,m={get history(){return s},get redoHistory(){return o},undo(){if(a)return;a=1,setTimeout(()=>{a=0},200);let e=s.shift();if(!e)return;o.unshift(e);let m=(e=>{let r=[];return e.forEach(e=>{switch(e.genre){case"change":r.unshift({fromKey:e.fromKey,genre:e.genre,value:e.oldVal,key:e.key,keys:e.keys});break;case"arrayMethod":switch(e.methodName){case"splice":let{args:t}=e;t.length>2&&0===t[1]?r.unshift({args:[t[0],t.length-2],genre:e.genre,methodName:e.methodName,keys:e.keys,fromKey:e.fromKey}):2==t.length&&r.unshift({args:[t[0],0,...e.returnValue],genre:e.genre,methodName:e.methodName,keys:e.keys,fromKey:e.fromKey});break;case"push":r.unshift({args:[],genre:e.genre,methodName:"pop",keys:e.keys,fromKey:e.fromKey});break;case"unshift":r.unshift({args:[],genre:e.genre,methodName:"shift",keys:e.keys,fromKey:e.fromKey})}}}),r})(e.modifys);m.forEach(e=>{e.modifyId=n(),t.project.mainPage.entrend(e)}),r=m},redo(){if(a)return;a=1,setTimeout(()=>{a=0},200);let e=o.shift();if(!e)return;s.unshift(e);let m=JSON.parse(JSON.stringify(e.modifys));m.forEach(e=>{e.modifyId=n(),t.project.mainPage.entrend(e)}),r=m}};return window.urUtil=m,m});