@leafer-in/viewport 1.6.0 → 1.6.2
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.
- package/dist/viewport.cjs +1 -1
- package/dist/viewport.esm.js +1 -1
- package/dist/viewport.esm.min.js +1 -1
- package/dist/viewport.esm.min.js.map +1 -1
- package/dist/viewport.js +1 -1
- package/dist/viewport.min.cjs +1 -1
- package/dist/viewport.min.cjs.map +1 -1
- package/dist/viewport.min.js +1 -1
- package/dist/viewport.min.js.map +1 -1
- package/package.json +4 -4
- package/src/interaction/Interaction.ts +2 -0
- package/dist/viewport.cjs.map +0 -1
- package/dist/viewport.esm.js.map +0 -1
- package/dist/viewport.js.map +0 -1
package/dist/viewport.cjs
CHANGED
|
@@ -294,6 +294,7 @@ interaction.multiTouch = function (data, list) {
|
|
|
294
294
|
return;
|
|
295
295
|
const { move, rotation, scale, center } = MultiTouchHelper.getData(list);
|
|
296
296
|
Object.assign(data, center);
|
|
297
|
+
this.pointerWaitCancel();
|
|
297
298
|
this.rotate(getRotateEventData(rotation, data));
|
|
298
299
|
this.zoom(getZoomEventData(scale, data));
|
|
299
300
|
this.move(getMoveEventData(move, data));
|
|
@@ -367,4 +368,3 @@ exports.Transformer = Transformer;
|
|
|
367
368
|
exports.WheelEventHelper = WheelEventHelper;
|
|
368
369
|
exports.addViewport = addViewport;
|
|
369
370
|
exports.addViewportConfig = addViewportConfig;
|
|
370
|
-
//# sourceMappingURL=viewport.cjs.map
|
package/dist/viewport.esm.js
CHANGED
|
@@ -292,6 +292,7 @@ interaction.multiTouch = function (data, list) {
|
|
|
292
292
|
return;
|
|
293
293
|
const { move, rotation, scale, center } = MultiTouchHelper.getData(list);
|
|
294
294
|
Object.assign(data, center);
|
|
295
|
+
this.pointerWaitCancel();
|
|
295
296
|
this.rotate(getRotateEventData(rotation, data));
|
|
296
297
|
this.zoom(getZoomEventData(scale, data));
|
|
297
298
|
this.move(getMoveEventData(move, data));
|
|
@@ -360,4 +361,3 @@ dragger.autoMoveCancel = function () {
|
|
|
360
361
|
Plugin.add('viewport');
|
|
361
362
|
|
|
362
363
|
export { LeaferTypeCreator, MultiTouchHelper, Transformer, WheelEventHelper, addViewport, addViewportConfig };
|
|
363
|
-
//# sourceMappingURL=viewport.esm.js.map
|
package/dist/viewport.esm.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{MoveEvent as t,ZoomEvent as e,DataHelper as o,Debug as a,PointHelper as i,Platform as n,MathHelper as s,RotateEvent as r,Leafer as c,Bounds as m,InteractionBase as h,Dragger as l,BoundsHelper as u,Plugin as d}from"@leafer-ui/core";function f(o,a,i){g(o.parentApp?o.parentApp:o,a),o.isApp||i||o.__eventIds.push(o.on_(t.BEFORE_MOVE,(t=>{o.zoomLayer.move(o.getValidMove(t.moveX,t.moveY))})),o.on_(e.BEFORE_ZOOM,(t=>{const{zoomLayer:e}=o,a=o.getValidScale(t.scale);1!==a&&e.scaleOfWorld(t,a)})))}function g(t,e){const a={wheel:{preventDefault:!0},touch:{preventDefault:!0},pointer:{preventDefaultMenu:!0}};e&&o.assign(a,e),o.assign(t.config,a,t.userConfig)}const v=a.get("LeaferTypeCreator"),p={list:{},register(t,e){D[t]&&v.repeat(t),D[t]=e},run(t,e){const o=D[t];o&&o(e)}},{list:D,register:O}=p;O("viewport",f),O("custom",(function(t){f(t,null,!0)})),O("design",(function(t){f(t,{zoom:{min:.01,max:256},move:{holdSpaceKey:!0,holdMiddleKey:!0}})})),O("document",(function(t){f(t,{zoom:{min:1},move:{scroll:"limit"}})}));const y={getData(t){const e=t[0],o=t[1],a=i.getCenter(e.from,o.from),n=i.getCenter(e.to,o.to),s={x:n.x-a.x,y:n.y-a.y},r=i.getDistance(e.from,o.from);return{move:s,scale:i.getDistance(e.to,o.to)/r,rotation:i.getRotation(e.from,o.from,e.to,o.to),center:n}}},M={getMove(t,e){let{moveSpeed:o}=e,{deltaX:a,deltaY:i}=t;return t.shiftKey&&!a&&(a=i,i=0),a>50&&(a=Math.max(50,a/3)),i>50&&(i=Math.max(50,i/3)),{x:-a*o*2,y:-i*o*2}},getScale(t,e){let o,a=1,{zoomMode:i,zoomSpeed:r}=e;const c=t.deltaY||t.deltaX;if(i?(o="mouse"===i||!t.deltaX&&(n.intWheelDeltaY?Math.abs(c)>17:Math.ceil(c)!==c),(t.shiftKey||t.metaKey||t.ctrlKey)&&(o=!0)):o=!t.shiftKey&&(t.metaKey||t.ctrlKey),o){r=s.within(r,0,1);a=1-c/(4*(t.deltaY?e.delta.y:e.delta.x))*r,a<.5&&(a=.5),a>=1.5&&(a=1.5)}return a}};class E{get transforming(){return!!(this.moveData||this.zoomData||this.rotateData)}constructor(t){this.interaction=t}move(e){const{interaction:o}=this;e.moveType||(e.moveType="move"),this.moveData||(this.setPath(e),this.moveData=Object.assign(Object.assign({},e),{moveX:0,moveY:0}),o.emit(t.START,this.moveData)),e.path=this.moveData.path,o.emit(t.BEFORE_MOVE,e),o.emit(t.MOVE,e),this.transformEndWait()}zoom(t){const{interaction:o}=this;this.zoomData||(this.setPath(t),this.zoomData=Object.assign(Object.assign({},t),{scale:1}),o.emit(e.START,this.zoomData)),t.path=this.zoomData.path,o.emit(e.BEFORE_ZOOM,t),o.emit(e.ZOOM,t),this.transformEndWait()}rotate(t){const{interaction:e}=this;this.rotateData||(this.setPath(t),this.rotateData=Object.assign(Object.assign({},t),{rotation:0}),e.emit(r.START,this.rotateData)),t.path=this.rotateData.path,e.emit(r.BEFORE_ROTATE,t),e.emit(r.ROTATE,t),this.transformEndWait()}setPath(t){const{interaction:e}=this,{path:o}=e.selector.getByPoint(t,e.hitRadius);t.path=o,e.cancelHover()}transformEndWait(){clearTimeout(this.transformTimer),this.transformTimer=setTimeout((()=>{this.transformEnd()}),this.interaction.p.transformTime)}transformEnd(){const{interaction:o,moveData:a,zoomData:i,rotateData:n}=this;a&&o.emit(t.END,a),i&&o.emit(e.END,i),n&&o.emit(r.END,n),this.reset()}reset(){this.zoomData=this.moveData=this.rotateData=null}destroy(){this.reset()}}const T=c.prototype,b=new m;function z(t,e){return Object.assign(Object.assign({},e),{moveX:t.x,moveY:t.y})}function x(t,e){return Object.assign(Object.assign({},e),{scale:t})}T.initType=function(t){p.run(t,this)},T.getValidMove=function(t,e){const{scroll:o,disabled:a}=this.app.config.move;if(o){const a=!0===o?"":o;if(a.includes("x")?(t=t||e,e=0):a.includes("y")?(e=e||t,t=0):Math.abs(t)>Math.abs(e)?e=0:t=0,a.includes("limit")){const{x:o,y:a,width:i,height:n}=b.set(this.__world).addPoint(this.zoomLayer),s=o+i-this.width,r=a+n-this.height;o>=0&&s<=0?t=0:t>0?o+t>0&&(t=-o):t<0&&s+t<0&&(t=-s),a>=0&&r<=0?e=0:e>0?a+e>0&&(e=-a):e<0&&r+e<0&&(e=-r)}}return{x:a?0:t,y:a?0:e}},T.getValidScale=function(t){const{scaleX:e}=this.zoomLayer.__,{min:o,max:a,disabled:i}=this.app.config.zoom,n=Math.abs(e*t);return o&&n<o?t=o/e:a&&n>a&&(t=a/e),i?1:t};const j=h.prototype;j.createTransformer=function(){this.transformer=new E(this)},j.move=function(t){this.transformer.move(t)},j.zoom=function(t){this.transformer.zoom(t)},j.rotate=function(t){this.transformer.rotate(t)},j.transformEnd=function(){this.transformer.transformEnd()},j.wheel=function(t){const{wheel:e,pointer:o}=this.config,{posDeltaSpeed:a,negDeltaSpeed:n}=e;if(e.disabled)return;t.deltaX>0?a&&(t.deltaX*=a):n&&(t.deltaX*=n),t.deltaY>0?a&&(t.deltaY*=a):n&&(t.deltaY*=n);const s=e.getScale?e.getScale(t,e):M.getScale(t,e);if(1!==s)this.zoom(x(s,t));else{const a=e.getMove?e.getMove(t,e):M.getMove(t,e);o.snap&&i.round(a),this.move(z(a,t))}},j.multiTouch=function(t,e){if(this.config.multiTouch.disabled)return;const{move:o,rotation:a,scale:i,center:n}=y.getData(e);Object.assign(t,n),this.rotate(function(t,e){return Object.assign(Object.assign({},e),{rotation:t})}(a,t)),this.zoom(x(i,t)),this.move(z(o,t))};const R=l.prototype,{abs:S}=Math;R.checkDragEndAnimate=function(t,e){const{moveX:o,moveY:a}=this.dragData,n=S(o),s=S(a),r=e?1:.1,c=this.interaction.m.dragAnimate&&this.canAnimate&&this.moving&&(n>r||s>r);if(c){const r="touch"===t.pointerType?3:1,c=70;n*(e=e?.95:r)>c?e=c/n:s*e>c&&(e=c/s),t=Object.assign({},t),i.move(t,o*e,a*e),this.drag(t),this.animate((()=>{this.dragEnd(t,1)}))}return c},R.animate=function(t,e){const o=t||this.animateWait;o&&this.interaction.target.nextRender(o,null,e),this.animateWait=t},R.checkDragOut=function(t){const{interaction:e}=this;this.autoMoveCancel(),this.dragging&&!e.shrinkCanvasBounds.hitPoint(t)&&this.autoMoveOnDragOut(t)},R.autoMoveOnDragOut=function(t){const{interaction:e,downData:o,canDragOut:a}=this,{autoDistance:n,dragOut:s}=e.m;if(!s||!a||!n)return;const r=e.shrinkCanvasBounds,{x:c,y:m}=r,h=u.maxX(r),l=u.maxY(r),d=t.x<c?n:h<t.x?-n:0,f=t.y<m?n:l<t.y?-n:0;let g=0,v=0;this.autoMoveTimer=setInterval((()=>{g+=d,v+=f,i.move(o,d,f),i.move(this.dragData,d,f),e.move(Object.assign(Object.assign({},t),{moveX:d,moveY:f,totalX:g,totalY:v,moveType:"drag"})),e.pointerMoveReal(t)}),10)},R.autoMoveCancel=function(){this.autoMoveTimer&&(clearInterval(this.autoMoveTimer),this.autoMoveTimer=0)},d.add("viewport");export{p as LeaferTypeCreator,y as MultiTouchHelper,E as Transformer,M as WheelEventHelper,f as addViewport,g as addViewportConfig};
|
|
1
|
+
import{MoveEvent as t,ZoomEvent as e,DataHelper as o,Debug as a,PointHelper as i,Platform as n,MathHelper as s,RotateEvent as r,Leafer as c,Bounds as m,InteractionBase as h,Dragger as l,BoundsHelper as u,Plugin as d}from"@leafer-ui/core";function f(o,a,i){g(o.parentApp?o.parentApp:o,a),o.isApp||i||o.__eventIds.push(o.on_(t.BEFORE_MOVE,(t=>{o.zoomLayer.move(o.getValidMove(t.moveX,t.moveY))})),o.on_(e.BEFORE_ZOOM,(t=>{const{zoomLayer:e}=o,a=o.getValidScale(t.scale);1!==a&&e.scaleOfWorld(t,a)})))}function g(t,e){const a={wheel:{preventDefault:!0},touch:{preventDefault:!0},pointer:{preventDefaultMenu:!0}};e&&o.assign(a,e),o.assign(t.config,a,t.userConfig)}const v=a.get("LeaferTypeCreator"),p={list:{},register(t,e){D[t]&&v.repeat(t),D[t]=e},run(t,e){const o=D[t];o&&o(e)}},{list:D,register:O}=p;O("viewport",f),O("custom",(function(t){f(t,null,!0)})),O("design",(function(t){f(t,{zoom:{min:.01,max:256},move:{holdSpaceKey:!0,holdMiddleKey:!0}})})),O("document",(function(t){f(t,{zoom:{min:1},move:{scroll:"limit"}})}));const y={getData(t){const e=t[0],o=t[1],a=i.getCenter(e.from,o.from),n=i.getCenter(e.to,o.to),s={x:n.x-a.x,y:n.y-a.y},r=i.getDistance(e.from,o.from);return{move:s,scale:i.getDistance(e.to,o.to)/r,rotation:i.getRotation(e.from,o.from,e.to,o.to),center:n}}},M={getMove(t,e){let{moveSpeed:o}=e,{deltaX:a,deltaY:i}=t;return t.shiftKey&&!a&&(a=i,i=0),a>50&&(a=Math.max(50,a/3)),i>50&&(i=Math.max(50,i/3)),{x:-a*o*2,y:-i*o*2}},getScale(t,e){let o,a=1,{zoomMode:i,zoomSpeed:r}=e;const c=t.deltaY||t.deltaX;if(i?(o="mouse"===i||!t.deltaX&&(n.intWheelDeltaY?Math.abs(c)>17:Math.ceil(c)!==c),(t.shiftKey||t.metaKey||t.ctrlKey)&&(o=!0)):o=!t.shiftKey&&(t.metaKey||t.ctrlKey),o){r=s.within(r,0,1);a=1-c/(4*(t.deltaY?e.delta.y:e.delta.x))*r,a<.5&&(a=.5),a>=1.5&&(a=1.5)}return a}};class E{get transforming(){return!!(this.moveData||this.zoomData||this.rotateData)}constructor(t){this.interaction=t}move(e){const{interaction:o}=this;e.moveType||(e.moveType="move"),this.moveData||(this.setPath(e),this.moveData=Object.assign(Object.assign({},e),{moveX:0,moveY:0}),o.emit(t.START,this.moveData)),e.path=this.moveData.path,o.emit(t.BEFORE_MOVE,e),o.emit(t.MOVE,e),this.transformEndWait()}zoom(t){const{interaction:o}=this;this.zoomData||(this.setPath(t),this.zoomData=Object.assign(Object.assign({},t),{scale:1}),o.emit(e.START,this.zoomData)),t.path=this.zoomData.path,o.emit(e.BEFORE_ZOOM,t),o.emit(e.ZOOM,t),this.transformEndWait()}rotate(t){const{interaction:e}=this;this.rotateData||(this.setPath(t),this.rotateData=Object.assign(Object.assign({},t),{rotation:0}),e.emit(r.START,this.rotateData)),t.path=this.rotateData.path,e.emit(r.BEFORE_ROTATE,t),e.emit(r.ROTATE,t),this.transformEndWait()}setPath(t){const{interaction:e}=this,{path:o}=e.selector.getByPoint(t,e.hitRadius);t.path=o,e.cancelHover()}transformEndWait(){clearTimeout(this.transformTimer),this.transformTimer=setTimeout((()=>{this.transformEnd()}),this.interaction.p.transformTime)}transformEnd(){const{interaction:o,moveData:a,zoomData:i,rotateData:n}=this;a&&o.emit(t.END,a),i&&o.emit(e.END,i),n&&o.emit(r.END,n),this.reset()}reset(){this.zoomData=this.moveData=this.rotateData=null}destroy(){this.reset()}}const T=c.prototype,b=new m;function z(t,e){return Object.assign(Object.assign({},e),{moveX:t.x,moveY:t.y})}function x(t,e){return Object.assign(Object.assign({},e),{scale:t})}T.initType=function(t){p.run(t,this)},T.getValidMove=function(t,e){const{scroll:o,disabled:a}=this.app.config.move;if(o){const a=!0===o?"":o;if(a.includes("x")?(t=t||e,e=0):a.includes("y")?(e=e||t,t=0):Math.abs(t)>Math.abs(e)?e=0:t=0,a.includes("limit")){const{x:o,y:a,width:i,height:n}=b.set(this.__world).addPoint(this.zoomLayer),s=o+i-this.width,r=a+n-this.height;o>=0&&s<=0?t=0:t>0?o+t>0&&(t=-o):t<0&&s+t<0&&(t=-s),a>=0&&r<=0?e=0:e>0?a+e>0&&(e=-a):e<0&&r+e<0&&(e=-r)}}return{x:a?0:t,y:a?0:e}},T.getValidScale=function(t){const{scaleX:e}=this.zoomLayer.__,{min:o,max:a,disabled:i}=this.app.config.zoom,n=Math.abs(e*t);return o&&n<o?t=o/e:a&&n>a&&(t=a/e),i?1:t};const j=h.prototype;j.createTransformer=function(){this.transformer=new E(this)},j.move=function(t){this.transformer.move(t)},j.zoom=function(t){this.transformer.zoom(t)},j.rotate=function(t){this.transformer.rotate(t)},j.transformEnd=function(){this.transformer.transformEnd()},j.wheel=function(t){const{wheel:e,pointer:o}=this.config,{posDeltaSpeed:a,negDeltaSpeed:n}=e;if(e.disabled)return;t.deltaX>0?a&&(t.deltaX*=a):n&&(t.deltaX*=n),t.deltaY>0?a&&(t.deltaY*=a):n&&(t.deltaY*=n);const s=e.getScale?e.getScale(t,e):M.getScale(t,e);if(1!==s)this.zoom(x(s,t));else{const a=e.getMove?e.getMove(t,e):M.getMove(t,e);o.snap&&i.round(a),this.move(z(a,t))}},j.multiTouch=function(t,e){if(this.config.multiTouch.disabled)return;const{move:o,rotation:a,scale:i,center:n}=y.getData(e);Object.assign(t,n),this.pointerWaitCancel(),this.rotate(function(t,e){return Object.assign(Object.assign({},e),{rotation:t})}(a,t)),this.zoom(x(i,t)),this.move(z(o,t))};const R=l.prototype,{abs:S}=Math;R.checkDragEndAnimate=function(t,e){const{moveX:o,moveY:a}=this.dragData,n=S(o),s=S(a),r=e?1:.1,c=this.interaction.m.dragAnimate&&this.canAnimate&&this.moving&&(n>r||s>r);if(c){const r="touch"===t.pointerType?3:1,c=70;n*(e=e?.95:r)>c?e=c/n:s*e>c&&(e=c/s),t=Object.assign({},t),i.move(t,o*e,a*e),this.drag(t),this.animate((()=>{this.dragEnd(t,1)}))}return c},R.animate=function(t,e){const o=t||this.animateWait;o&&this.interaction.target.nextRender(o,null,e),this.animateWait=t},R.checkDragOut=function(t){const{interaction:e}=this;this.autoMoveCancel(),this.dragging&&!e.shrinkCanvasBounds.hitPoint(t)&&this.autoMoveOnDragOut(t)},R.autoMoveOnDragOut=function(t){const{interaction:e,downData:o,canDragOut:a}=this,{autoDistance:n,dragOut:s}=e.m;if(!s||!a||!n)return;const r=e.shrinkCanvasBounds,{x:c,y:m}=r,h=u.maxX(r),l=u.maxY(r),d=t.x<c?n:h<t.x?-n:0,f=t.y<m?n:l<t.y?-n:0;let g=0,v=0;this.autoMoveTimer=setInterval((()=>{g+=d,v+=f,i.move(o,d,f),i.move(this.dragData,d,f),e.move(Object.assign(Object.assign({},t),{moveX:d,moveY:f,totalX:g,totalY:v,moveType:"drag"})),e.pointerMoveReal(t)}),10)},R.autoMoveCancel=function(){this.autoMoveTimer&&(clearInterval(this.autoMoveTimer),this.autoMoveTimer=0)},d.add("viewport");export{p as LeaferTypeCreator,y as MultiTouchHelper,E as Transformer,M as WheelEventHelper,f as addViewport,g as addViewportConfig};
|
|
2
2
|
//# sourceMappingURL=viewport.esm.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.esm.min.js","sources":["../../../../../../src/in/packages/viewport/src/type/viewport.ts","../../../../../../src/in/packages/viewport/src/LeaferTypeCreator.ts","../../../../../../src/in/packages/viewport/src/type/custom.ts","../../../../../../src/in/packages/viewport/src/type/design.ts","../../../../../../src/in/packages/viewport/src/type/document.ts","../../../../../../src/in/packages/viewport/src/interaction/MultiTouchHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/WheelEventHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/Transformer.ts","../../../../../../src/in/packages/viewport/src/Leafer.ts","../../../../../../src/in/packages/viewport/src/interaction/Interaction.ts","../../../../../../src/in/packages/viewport/src/interaction/Dragger.ts","../../../../../../src/in/packages/viewport/src/index.ts"],"sourcesContent":["import { ILeaferBase, ILeaferConfig } from '@leafer-ui/interface'\n\nimport { MoveEvent, ZoomEvent, DataHelper } from '@leafer-ui/core'\n\n\nexport function addViewport(leafer: ILeaferBase, mergeConfig?: ILeaferConfig, custom?: boolean): void {\n addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig)\n if (leafer.isApp || custom) return\n\n leafer.__eventIds.push(\n leafer.on_(MoveEvent.BEFORE_MOVE, (e: MoveEvent) => {\n leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY))\n }),\n leafer.on_(ZoomEvent.BEFORE_ZOOM, (e: ZoomEvent) => {\n const { zoomLayer } = leafer\n const changeScale = leafer.getValidScale(e.scale)\n if (changeScale !== 1) zoomLayer.scaleOfWorld(e, changeScale)\n })\n )\n}\n\nexport function addViewportConfig(leafer: ILeaferBase, mergeConfig?: ILeaferConfig): void {\n const viewportConfig: ILeaferConfig = {\n wheel: { preventDefault: true },\n touch: { preventDefault: true },\n pointer: { preventDefaultMenu: true }\n }\n if (mergeConfig) DataHelper.assign(viewportConfig, mergeConfig)\n DataHelper.assign(leafer.config, viewportConfig, leafer.userConfig)\n}","import { ILeaferBase, ILeaferTypeList, ILeaferTypeFunction } from '@leafer-ui/interface'\n\nimport { Debug } from '@leafer-ui/core'\n\nimport { addViewport } from './type/viewport'\nimport { custom } from './type/custom'\nimport { design } from './type/design'\nimport { document } from './type/document'\n\n\nconst debug = Debug.get('LeaferTypeCreator')\n\nexport const LeaferTypeCreator = {\n\n list: {} as ILeaferTypeList,\n\n register(name: string, fn: ILeaferTypeFunction): void {\n list[name] && debug.repeat(name)\n list[name] = fn\n },\n\n run(name: string, leafer: ILeaferBase): void {\n const fn = list[name]\n fn && fn(leafer)\n }\n\n}\n\nconst { list, register } = LeaferTypeCreator\n\nregister('viewport', addViewport)\nregister('custom', custom)\nregister('design', design)\nregister('document', document)","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function custom(leafer: ILeaferBase): void {\n addViewport(leafer, null, true)\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function design(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: {\n min: 0.01,\n max: 256\n },\n move: {\n holdSpaceKey: true,\n holdMiddleKey: true,\n }\n })\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function document(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: { min: 1 },\n move: { scroll: 'limit' }\n })\n}\n","import { IMultiTouchData, IKeepTouchData } from '@leafer-ui/interface'\n\nimport { PointHelper } from '@leafer-ui/core'\n\n\nexport const MultiTouchHelper = {\n\n getData(list: IKeepTouchData[]): IMultiTouchData {\n const a = list[0], b = list[1]\n const lastCenter = PointHelper.getCenter(a.from, b.from)\n const center = PointHelper.getCenter(a.to, b.to)\n const move = { x: center.x - lastCenter.x, y: center.y - lastCenter.y }\n\n const lastDistance = PointHelper.getDistance(a.from, b.from)\n const distance = PointHelper.getDistance(a.to, b.to)\n const scale = distance / lastDistance\n\n const rotation = PointHelper.getRotation(a.from, b.from, a.to, b.to)\n\n return { move, scale, rotation, center }\n }\n\n}","import { IPointData, IWheelEvent, IWheelConfig } from '@leafer-ui/interface'\n\nimport { MathHelper, Platform } from '@leafer-ui/core'\n\n\nexport const WheelEventHelper = {\n\n getMove(event: IWheelEvent, config: IWheelConfig): IPointData {\n let { moveSpeed } = config\n let { deltaX, deltaY } = event\n if (event.shiftKey && !deltaX) { // Window\n deltaX = deltaY\n deltaY = 0\n }\n if (deltaX > 50) deltaX = Math.max(50, deltaX / 3)\n if (deltaY > 50) deltaY = Math.max(50, deltaY / 3)\n return { x: -deltaX * moveSpeed * 2, y: -deltaY * moveSpeed * 2 }\n },\n\n getScale(event: IWheelEvent, config: IWheelConfig): number {\n\n let zoom: boolean\n let scale = 1\n let { zoomMode, zoomSpeed } = config\n\n const delta = event.deltaY || event.deltaX\n\n if (zoomMode) {\n // mac 触摸板滚动手势的deltaY是整数, 鼠标滚动/触摸板缩放的deltaY有小数点, firfox鼠标滚动为整数,为18或19的倍数\n // windows 始终是整数\n zoom = (zoomMode === 'mouse') ? true : (!event.deltaX && (Platform.intWheelDeltaY ? Math.abs(delta) > 17 : Math.ceil(delta) !== delta))\n if (event.shiftKey || event.metaKey || event.ctrlKey) zoom = true\n } else {\n zoom = !event.shiftKey && (event.metaKey || event.ctrlKey)\n }\n\n if (zoom) {\n zoomSpeed = MathHelper.within(zoomSpeed, 0, 1)\n const min = event.deltaY ? config.delta.y : config.delta.x\n scale = 1 - delta / (min * 4) * zoomSpeed // zoomSpeed\n if (scale < 0.5) scale = 0.5\n if (scale >= 1.5) scale = 1.5\n }\n\n return scale\n }\n\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, ITimer } from '@leafer-ui/interface'\n\nimport { InteractionBase, MoveEvent, ZoomEvent, RotateEvent } from '@leafer-ui/core'\n\n\nexport class Transformer {\n\n public get transforming(): boolean { return !!(this.moveData || this.zoomData || this.rotateData) }\n\n protected interaction: InteractionBase\n protected moveData: IMoveEvent\n protected zoomData: IZoomEvent\n protected rotateData: IRotateEvent\n protected transformTimer: ITimer\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public move(data: IMoveEvent): void {\n const { interaction } = this\n if (!data.moveType) data.moveType = 'move'\n\n if (!this.moveData) {\n this.setPath(data)\n this.moveData = { ...data, moveX: 0, moveY: 0 }\n interaction.emit(MoveEvent.START, this.moveData)\n }\n\n data.path = this.moveData.path\n interaction.emit(MoveEvent.BEFORE_MOVE, data)\n interaction.emit(MoveEvent.MOVE, data)\n\n this.transformEndWait()\n }\n\n public zoom(data: IZoomEvent): void {\n const { interaction } = this\n\n if (!this.zoomData) {\n this.setPath(data)\n this.zoomData = { ...data, scale: 1 }\n interaction.emit(ZoomEvent.START, this.zoomData)\n }\n\n data.path = this.zoomData.path\n interaction.emit(ZoomEvent.BEFORE_ZOOM, data)\n interaction.emit(ZoomEvent.ZOOM, data)\n\n this.transformEndWait()\n }\n\n public rotate(data: IRotateEvent): void {\n const { interaction } = this\n\n if (!this.rotateData) {\n this.setPath(data)\n this.rotateData = { ...data, rotation: 0 }\n interaction.emit(RotateEvent.START, this.rotateData)\n }\n\n data.path = this.rotateData.path\n interaction.emit(RotateEvent.BEFORE_ROTATE, data)\n interaction.emit(RotateEvent.ROTATE, data)\n\n this.transformEndWait()\n }\n\n public setPath(data: any): void {\n const { interaction } = this\n const { path } = interaction.selector.getByPoint(data, interaction.hitRadius)\n data.path = path\n interaction.cancelHover()\n }\n\n protected transformEndWait(): void {\n clearTimeout(this.transformTimer)\n this.transformTimer = setTimeout(() => {\n this.transformEnd()\n }, this.interaction.p.transformTime)\n }\n\n public transformEnd(): void {\n const { interaction, moveData, zoomData, rotateData } = this\n if (moveData) interaction.emit(MoveEvent.END, moveData)\n if (zoomData) interaction.emit(ZoomEvent.END, zoomData)\n if (rotateData) interaction.emit(RotateEvent.END, rotateData)\n this.reset()\n }\n\n public reset(): void {\n this.zoomData = this.moveData = this.rotateData = null\n }\n\n public destroy(): void {\n this.reset()\n }\n}","import { ILeaferType, IPointData } from '@leafer-ui/interface'\n\nimport { Leafer, Bounds } from '@leafer-ui/core'\n\nimport { LeaferTypeCreator } from './LeaferTypeCreator'\n\n\nconst leafer = Leafer.prototype\nconst bounds = new Bounds()\n\nleafer.initType = function (type: ILeaferType) {\n LeaferTypeCreator.run(type, this)\n}\n\nleafer.getValidMove = function (moveX: number, moveY: number): IPointData {\n const { scroll, disabled } = this.app.config.move\n\n if (scroll) {\n const type = scroll === true ? '' : scroll\n\n if (type.includes('x')) moveX = moveX || moveY, moveY = 0\n else if (type.includes('y')) moveY = moveY || moveX, moveX = 0\n else Math.abs(moveX) > Math.abs(moveY) ? moveY = 0 : moveX = 0\n\n if (type.includes('limit')) {\n const { x, y, width, height } = bounds.set(this.__world).addPoint(this.zoomLayer as IPointData)\n const right = x + width - this.width, bottom = y + height - this.height\n\n if (x >= 0 && right <= 0) moveX = 0 // includeX\n else if (moveX > 0) { if (x + moveX > 0) moveX = -x }\n else if (moveX < 0 && right + moveX < 0) moveX = -right\n\n if (y >= 0 && bottom <= 0) moveY = 0 // includeY\n else if (moveY > 0) { if (y + moveY > 0) moveY = -y }\n else if (moveY < 0 && bottom + moveY < 0) moveY = -bottom\n }\n }\n return { x: disabled ? 0 : moveX, y: disabled ? 0 : moveY }\n}\n\nleafer.getValidScale = function (changeScale: number): number {\n const { scaleX } = this.zoomLayer.__, { min, max, disabled } = this.app.config.zoom, absScale = Math.abs(scaleX * changeScale)\n if (min && absScale < min) changeScale = min / scaleX\n else if (max && absScale > max) changeScale = max / scaleX\n return disabled ? 1 : changeScale // fix 不能过滤小数位\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IUIEvent, IKeepTouchData, IPointData, IEvent } from '@leafer-ui/interface'\n\nimport { InteractionBase, PointHelper } from '@leafer-ui/core'\n\nimport { WheelEventHelper } from './WheelEventHelper'\nimport { Transformer } from './Transformer'\nimport { MultiTouchHelper } from './MultiTouchHelper'\n\n\nfunction getMoveEventData(move: IPointData, event: IEvent): IMoveEvent {\n return { ...event, moveX: move.x, moveY: move.y } as IMoveEvent\n}\n\nfunction getRotateEventData(rotation: number, event: IEvent): IRotateEvent {\n return { ...event, rotation } as IRotateEvent\n}\n\nfunction getZoomEventData(scale: number, event: IEvent): IZoomEvent {\n return { ...event, scale, } as IZoomEvent\n}\n\n\nconst interaction = InteractionBase.prototype\n\ninteraction.createTransformer = function (): void {\n this.transformer = new Transformer(this)\n}\n\ninteraction.move = function (data: IMoveEvent): void {\n this.transformer.move(data)\n}\n\ninteraction.zoom = function (data: IZoomEvent): void {\n this.transformer.zoom(data)\n}\n\ninteraction.rotate = function (data: IRotateEvent): void {\n this.transformer.rotate(data)\n}\n\ninteraction.transformEnd = function (): void {\n this.transformer.transformEnd()\n}\n\n\ninteraction.wheel = function (data: IWheelEvent): void {\n const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel\n if (wheel.disabled) return\n\n if (data.deltaX > 0) posDeltaSpeed && (data.deltaX *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaX *= negDeltaSpeed)\n\n if (data.deltaY > 0) posDeltaSpeed && (data.deltaY *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaY *= negDeltaSpeed)\n\n const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel)\n if (scale !== 1) this.zoom(getZoomEventData(scale, data))\n else {\n const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel)\n if (pointer.snap) PointHelper.round(move)\n this.move(getMoveEventData(move, data))\n }\n}\n\n\ninteraction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void {\n if (this.config.multiTouch.disabled) return\n const { move, rotation, scale, center } = MultiTouchHelper.getData(list)\n Object.assign(data, center)\n\n this.rotate(getRotateEventData(rotation, data))\n this.zoom(getZoomEventData(scale, data))\n this.move(getMoveEventData(move, data))\n}","import { IPointerEvent, IFunction } from '@leafer-ui/interface'\n\nimport { Dragger, BoundsHelper, PointHelper } from '@leafer-ui/core'\n\n\nconst dragger = Dragger.prototype\nconst { abs } = Math\n\ndragger.checkDragEndAnimate = function (data: IPointerEvent, speed?: number): boolean {\n const { moveX, moveY } = this.dragData\n const absMoveX = abs(moveX), absMoveY = abs(moveY), minMove = speed ? 1 : 0.1\n const dragAnimate = this.interaction.m.dragAnimate && this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove)\n\n if (dragAnimate) {\n const inertia = data.pointerType === 'touch' ? 3 : 1, maxMove = 70\n speed = speed ? 0.95 : inertia\n if (absMoveX * speed > maxMove) speed = maxMove / absMoveX\n else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY\n\n data = { ...data }\n PointHelper.move(data, moveX * speed, moveY * speed)\n\n this.drag(data)\n this.animate(() => { this.dragEnd(data, 1) })\n }\n\n return dragAnimate\n}\n\ndragger.animate = function (func?: IFunction, off?: 'off'): void { // dragEnd animation\n const animateWait = func || this.animateWait\n if (animateWait) this.interaction.target.nextRender(animateWait, null, off)\n this.animateWait = func\n}\n\ndragger.checkDragOut = function (data: IPointerEvent): void {\n const { interaction } = this\n this.autoMoveCancel()\n if (this.dragging && !interaction.shrinkCanvasBounds.hitPoint(data)) this.autoMoveOnDragOut(data)\n}\n\ndragger.autoMoveOnDragOut = function (data: IPointerEvent): void {\n const { interaction, downData, canDragOut } = this\n const { autoDistance, dragOut } = interaction.m\n if (!dragOut || !canDragOut || !autoDistance) return\n\n const bounds = interaction.shrinkCanvasBounds\n const { x, y } = bounds\n const right = BoundsHelper.maxX(bounds)\n const bottom = BoundsHelper.maxY(bounds)\n\n const moveX = data.x < x ? autoDistance : (right < data.x ? -autoDistance : 0)\n const moveY = data.y < y ? autoDistance : (bottom < data.y ? -autoDistance : 0)\n let totalX = 0, totalY = 0\n\n this.autoMoveTimer = setInterval(() => {\n totalX += moveX\n totalY += moveY\n\n PointHelper.move(downData, moveX, moveY)\n PointHelper.move(this.dragData, moveX, moveY)\n\n interaction.move({ ...data, moveX, moveY, totalX, totalY, moveType: 'drag' })\n interaction.pointerMoveReal(data)\n }, 10)\n}\n\ndragger.autoMoveCancel = function (): void {\n if (this.autoMoveTimer) {\n clearInterval(this.autoMoveTimer)\n this.autoMoveTimer = 0\n }\n}","export { LeaferTypeCreator } from './LeaferTypeCreator'\nexport { addViewport, addViewportConfig } from './type/viewport'\nexport { MultiTouchHelper } from './interaction/MultiTouchHelper'\nexport { WheelEventHelper } from './interaction/WheelEventHelper'\nexport { Transformer } from './interaction/Transformer'\n\nimport { Plugin } from '@leafer-ui/core'\n\nimport './Leafer'\nimport './interaction/Interaction'\nimport './interaction/Dragger'\n\nPlugin.add('viewport')"],"names":["addViewport","leafer","mergeConfig","custom","addViewportConfig","parentApp","isApp","__eventIds","push","on_","MoveEvent","BEFORE_MOVE","e","zoomLayer","move","getValidMove","moveX","moveY","ZoomEvent","BEFORE_ZOOM","changeScale","getValidScale","scale","scaleOfWorld","viewportConfig","wheel","preventDefault","touch","pointer","preventDefaultMenu","DataHelper","assign","config","userConfig","debug","Debug","get","LeaferTypeCreator","list","register","name","fn","repeat","run","zoom","min","max","holdSpaceKey","holdMiddleKey","scroll","MultiTouchHelper","getData","a","b","lastCenter","PointHelper","getCenter","from","center","to","x","y","lastDistance","getDistance","rotation","getRotation","WheelEventHelper","getMove","event","moveSpeed","deltaX","deltaY","shiftKey","Math","getScale","zoomMode","zoomSpeed","delta","Platform","intWheelDeltaY","abs","ceil","metaKey","ctrlKey","MathHelper","within","Transformer","transforming","this","moveData","zoomData","rotateData","constructor","interaction","data","moveType","setPath","Object","emit","START","path","MOVE","transformEndWait","ZOOM","rotate","RotateEvent","BEFORE_ROTATE","ROTATE","selector","getByPoint","hitRadius","cancelHover","clearTimeout","transformTimer","setTimeout","transformEnd","p","transformTime","END","reset","destroy","Leafer","prototype","bounds","Bounds","getMoveEventData","getZoomEventData","initType","type","disabled","app","includes","width","height","set","__world","addPoint","right","bottom","scaleX","__","absScale","InteractionBase","createTransformer","transformer","posDeltaSpeed","negDeltaSpeed","snap","round","multiTouch","getRotateEventData","dragger","Dragger","checkDragEndAnimate","speed","dragData","absMoveX","absMoveY","minMove","dragAnimate","m","canAnimate","moving","inertia","pointerType","maxMove","drag","animate","dragEnd","func","off","animateWait","target","nextRender","checkDragOut","autoMoveCancel","dragging","shrinkCanvasBounds","hitPoint","autoMoveOnDragOut","downData","canDragOut","autoDistance","dragOut","BoundsHelper","maxX","maxY","totalX","totalY","autoMoveTimer","setInterval","pointerMoveReal","clearInterval","Plugin","add"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viewport.esm.min.js","sources":["../../../../../../src/in/packages/viewport/src/type/viewport.ts","../../../../../../src/in/packages/viewport/src/LeaferTypeCreator.ts","../../../../../../src/in/packages/viewport/src/type/custom.ts","../../../../../../src/in/packages/viewport/src/type/design.ts","../../../../../../src/in/packages/viewport/src/type/document.ts","../../../../../../src/in/packages/viewport/src/interaction/MultiTouchHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/WheelEventHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/Transformer.ts","../../../../../../src/in/packages/viewport/src/Leafer.ts","../../../../../../src/in/packages/viewport/src/interaction/Interaction.ts","../../../../../../src/in/packages/viewport/src/interaction/Dragger.ts","../../../../../../src/in/packages/viewport/src/index.ts"],"sourcesContent":["import { ILeaferBase, ILeaferConfig } from '@leafer-ui/interface'\n\nimport { MoveEvent, ZoomEvent, DataHelper } from '@leafer-ui/core'\n\n\nexport function addViewport(leafer: ILeaferBase, mergeConfig?: ILeaferConfig, custom?: boolean): void {\n addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig)\n if (leafer.isApp || custom) return\n\n leafer.__eventIds.push(\n leafer.on_(MoveEvent.BEFORE_MOVE, (e: MoveEvent) => {\n leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY))\n }),\n leafer.on_(ZoomEvent.BEFORE_ZOOM, (e: ZoomEvent) => {\n const { zoomLayer } = leafer\n const changeScale = leafer.getValidScale(e.scale)\n if (changeScale !== 1) zoomLayer.scaleOfWorld(e, changeScale)\n })\n )\n}\n\nexport function addViewportConfig(leafer: ILeaferBase, mergeConfig?: ILeaferConfig): void {\n const viewportConfig: ILeaferConfig = {\n wheel: { preventDefault: true },\n touch: { preventDefault: true },\n pointer: { preventDefaultMenu: true }\n }\n if (mergeConfig) DataHelper.assign(viewportConfig, mergeConfig)\n DataHelper.assign(leafer.config, viewportConfig, leafer.userConfig)\n}","import { ILeaferBase, ILeaferTypeList, ILeaferTypeFunction } from '@leafer-ui/interface'\n\nimport { Debug } from '@leafer-ui/core'\n\nimport { addViewport } from './type/viewport'\nimport { custom } from './type/custom'\nimport { design } from './type/design'\nimport { document } from './type/document'\n\n\nconst debug = Debug.get('LeaferTypeCreator')\n\nexport const LeaferTypeCreator = {\n\n list: {} as ILeaferTypeList,\n\n register(name: string, fn: ILeaferTypeFunction): void {\n list[name] && debug.repeat(name)\n list[name] = fn\n },\n\n run(name: string, leafer: ILeaferBase): void {\n const fn = list[name]\n fn && fn(leafer)\n }\n\n}\n\nconst { list, register } = LeaferTypeCreator\n\nregister('viewport', addViewport)\nregister('custom', custom)\nregister('design', design)\nregister('document', document)","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function custom(leafer: ILeaferBase): void {\n addViewport(leafer, null, true)\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function design(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: {\n min: 0.01,\n max: 256\n },\n move: {\n holdSpaceKey: true,\n holdMiddleKey: true,\n }\n })\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function document(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: { min: 1 },\n move: { scroll: 'limit' }\n })\n}\n","import { IMultiTouchData, IKeepTouchData } from '@leafer-ui/interface'\n\nimport { PointHelper } from '@leafer-ui/core'\n\n\nexport const MultiTouchHelper = {\n\n getData(list: IKeepTouchData[]): IMultiTouchData {\n const a = list[0], b = list[1]\n const lastCenter = PointHelper.getCenter(a.from, b.from)\n const center = PointHelper.getCenter(a.to, b.to)\n const move = { x: center.x - lastCenter.x, y: center.y - lastCenter.y }\n\n const lastDistance = PointHelper.getDistance(a.from, b.from)\n const distance = PointHelper.getDistance(a.to, b.to)\n const scale = distance / lastDistance\n\n const rotation = PointHelper.getRotation(a.from, b.from, a.to, b.to)\n\n return { move, scale, rotation, center }\n }\n\n}","import { IPointData, IWheelEvent, IWheelConfig } from '@leafer-ui/interface'\n\nimport { MathHelper, Platform } from '@leafer-ui/core'\n\n\nexport const WheelEventHelper = {\n\n getMove(event: IWheelEvent, config: IWheelConfig): IPointData {\n let { moveSpeed } = config\n let { deltaX, deltaY } = event\n if (event.shiftKey && !deltaX) { // Window\n deltaX = deltaY\n deltaY = 0\n }\n if (deltaX > 50) deltaX = Math.max(50, deltaX / 3)\n if (deltaY > 50) deltaY = Math.max(50, deltaY / 3)\n return { x: -deltaX * moveSpeed * 2, y: -deltaY * moveSpeed * 2 }\n },\n\n getScale(event: IWheelEvent, config: IWheelConfig): number {\n\n let zoom: boolean\n let scale = 1\n let { zoomMode, zoomSpeed } = config\n\n const delta = event.deltaY || event.deltaX\n\n if (zoomMode) {\n // mac 触摸板滚动手势的deltaY是整数, 鼠标滚动/触摸板缩放的deltaY有小数点, firfox鼠标滚动为整数,为18或19的倍数\n // windows 始终是整数\n zoom = (zoomMode === 'mouse') ? true : (!event.deltaX && (Platform.intWheelDeltaY ? Math.abs(delta) > 17 : Math.ceil(delta) !== delta))\n if (event.shiftKey || event.metaKey || event.ctrlKey) zoom = true\n } else {\n zoom = !event.shiftKey && (event.metaKey || event.ctrlKey)\n }\n\n if (zoom) {\n zoomSpeed = MathHelper.within(zoomSpeed, 0, 1)\n const min = event.deltaY ? config.delta.y : config.delta.x\n scale = 1 - delta / (min * 4) * zoomSpeed // zoomSpeed\n if (scale < 0.5) scale = 0.5\n if (scale >= 1.5) scale = 1.5\n }\n\n return scale\n }\n\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, ITimer } from '@leafer-ui/interface'\n\nimport { InteractionBase, MoveEvent, ZoomEvent, RotateEvent } from '@leafer-ui/core'\n\n\nexport class Transformer {\n\n public get transforming(): boolean { return !!(this.moveData || this.zoomData || this.rotateData) }\n\n protected interaction: InteractionBase\n protected moveData: IMoveEvent\n protected zoomData: IZoomEvent\n protected rotateData: IRotateEvent\n protected transformTimer: ITimer\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public move(data: IMoveEvent): void {\n const { interaction } = this\n if (!data.moveType) data.moveType = 'move'\n\n if (!this.moveData) {\n this.setPath(data)\n this.moveData = { ...data, moveX: 0, moveY: 0 }\n interaction.emit(MoveEvent.START, this.moveData)\n }\n\n data.path = this.moveData.path\n interaction.emit(MoveEvent.BEFORE_MOVE, data)\n interaction.emit(MoveEvent.MOVE, data)\n\n this.transformEndWait()\n }\n\n public zoom(data: IZoomEvent): void {\n const { interaction } = this\n\n if (!this.zoomData) {\n this.setPath(data)\n this.zoomData = { ...data, scale: 1 }\n interaction.emit(ZoomEvent.START, this.zoomData)\n }\n\n data.path = this.zoomData.path\n interaction.emit(ZoomEvent.BEFORE_ZOOM, data)\n interaction.emit(ZoomEvent.ZOOM, data)\n\n this.transformEndWait()\n }\n\n public rotate(data: IRotateEvent): void {\n const { interaction } = this\n\n if (!this.rotateData) {\n this.setPath(data)\n this.rotateData = { ...data, rotation: 0 }\n interaction.emit(RotateEvent.START, this.rotateData)\n }\n\n data.path = this.rotateData.path\n interaction.emit(RotateEvent.BEFORE_ROTATE, data)\n interaction.emit(RotateEvent.ROTATE, data)\n\n this.transformEndWait()\n }\n\n public setPath(data: any): void {\n const { interaction } = this\n const { path } = interaction.selector.getByPoint(data, interaction.hitRadius)\n data.path = path\n interaction.cancelHover()\n }\n\n protected transformEndWait(): void {\n clearTimeout(this.transformTimer)\n this.transformTimer = setTimeout(() => {\n this.transformEnd()\n }, this.interaction.p.transformTime)\n }\n\n public transformEnd(): void {\n const { interaction, moveData, zoomData, rotateData } = this\n if (moveData) interaction.emit(MoveEvent.END, moveData)\n if (zoomData) interaction.emit(ZoomEvent.END, zoomData)\n if (rotateData) interaction.emit(RotateEvent.END, rotateData)\n this.reset()\n }\n\n public reset(): void {\n this.zoomData = this.moveData = this.rotateData = null\n }\n\n public destroy(): void {\n this.reset()\n }\n}","import { ILeaferType, IPointData } from '@leafer-ui/interface'\n\nimport { Leafer, Bounds } from '@leafer-ui/core'\n\nimport { LeaferTypeCreator } from './LeaferTypeCreator'\n\n\nconst leafer = Leafer.prototype\nconst bounds = new Bounds()\n\nleafer.initType = function (type: ILeaferType) {\n LeaferTypeCreator.run(type, this)\n}\n\nleafer.getValidMove = function (moveX: number, moveY: number): IPointData {\n const { scroll, disabled } = this.app.config.move\n\n if (scroll) {\n const type = scroll === true ? '' : scroll\n\n if (type.includes('x')) moveX = moveX || moveY, moveY = 0\n else if (type.includes('y')) moveY = moveY || moveX, moveX = 0\n else Math.abs(moveX) > Math.abs(moveY) ? moveY = 0 : moveX = 0\n\n if (type.includes('limit')) {\n const { x, y, width, height } = bounds.set(this.__world).addPoint(this.zoomLayer as IPointData)\n const right = x + width - this.width, bottom = y + height - this.height\n\n if (x >= 0 && right <= 0) moveX = 0 // includeX\n else if (moveX > 0) { if (x + moveX > 0) moveX = -x }\n else if (moveX < 0 && right + moveX < 0) moveX = -right\n\n if (y >= 0 && bottom <= 0) moveY = 0 // includeY\n else if (moveY > 0) { if (y + moveY > 0) moveY = -y }\n else if (moveY < 0 && bottom + moveY < 0) moveY = -bottom\n }\n }\n return { x: disabled ? 0 : moveX, y: disabled ? 0 : moveY }\n}\n\nleafer.getValidScale = function (changeScale: number): number {\n const { scaleX } = this.zoomLayer.__, { min, max, disabled } = this.app.config.zoom, absScale = Math.abs(scaleX * changeScale)\n if (min && absScale < min) changeScale = min / scaleX\n else if (max && absScale > max) changeScale = max / scaleX\n return disabled ? 1 : changeScale // fix 不能过滤小数位\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IUIEvent, IKeepTouchData, IPointData, IEvent } from '@leafer-ui/interface'\n\nimport { InteractionBase, PointHelper } from '@leafer-ui/core'\n\nimport { WheelEventHelper } from './WheelEventHelper'\nimport { Transformer } from './Transformer'\nimport { MultiTouchHelper } from './MultiTouchHelper'\n\n\nfunction getMoveEventData(move: IPointData, event: IEvent): IMoveEvent {\n return { ...event, moveX: move.x, moveY: move.y } as IMoveEvent\n}\n\nfunction getRotateEventData(rotation: number, event: IEvent): IRotateEvent {\n return { ...event, rotation } as IRotateEvent\n}\n\nfunction getZoomEventData(scale: number, event: IEvent): IZoomEvent {\n return { ...event, scale, } as IZoomEvent\n}\n\n\nconst interaction = InteractionBase.prototype\n\ninteraction.createTransformer = function (): void {\n this.transformer = new Transformer(this)\n}\n\ninteraction.move = function (data: IMoveEvent): void {\n this.transformer.move(data)\n}\n\ninteraction.zoom = function (data: IZoomEvent): void {\n this.transformer.zoom(data)\n}\n\ninteraction.rotate = function (data: IRotateEvent): void {\n this.transformer.rotate(data)\n}\n\ninteraction.transformEnd = function (): void {\n this.transformer.transformEnd()\n}\n\n\ninteraction.wheel = function (data: IWheelEvent): void {\n const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel\n if (wheel.disabled) return\n\n if (data.deltaX > 0) posDeltaSpeed && (data.deltaX *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaX *= negDeltaSpeed)\n\n if (data.deltaY > 0) posDeltaSpeed && (data.deltaY *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaY *= negDeltaSpeed)\n\n const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel)\n if (scale !== 1) this.zoom(getZoomEventData(scale, data))\n else {\n const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel)\n if (pointer.snap) PointHelper.round(move)\n this.move(getMoveEventData(move, data))\n }\n}\n\n\ninteraction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void {\n if (this.config.multiTouch.disabled) return\n const { move, rotation, scale, center } = MultiTouchHelper.getData(list)\n Object.assign(data, center)\n\n this.pointerWaitCancel()\n\n this.rotate(getRotateEventData(rotation, data))\n this.zoom(getZoomEventData(scale, data))\n this.move(getMoveEventData(move, data))\n}","import { IPointerEvent, IFunction } from '@leafer-ui/interface'\n\nimport { Dragger, BoundsHelper, PointHelper } from '@leafer-ui/core'\n\n\nconst dragger = Dragger.prototype\nconst { abs } = Math\n\ndragger.checkDragEndAnimate = function (data: IPointerEvent, speed?: number): boolean {\n const { moveX, moveY } = this.dragData\n const absMoveX = abs(moveX), absMoveY = abs(moveY), minMove = speed ? 1 : 0.1\n const dragAnimate = this.interaction.m.dragAnimate && this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove)\n\n if (dragAnimate) {\n const inertia = data.pointerType === 'touch' ? 3 : 1, maxMove = 70\n speed = speed ? 0.95 : inertia\n if (absMoveX * speed > maxMove) speed = maxMove / absMoveX\n else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY\n\n data = { ...data }\n PointHelper.move(data, moveX * speed, moveY * speed)\n\n this.drag(data)\n this.animate(() => { this.dragEnd(data, 1) })\n }\n\n return dragAnimate\n}\n\ndragger.animate = function (func?: IFunction, off?: 'off'): void { // dragEnd animation\n const animateWait = func || this.animateWait\n if (animateWait) this.interaction.target.nextRender(animateWait, null, off)\n this.animateWait = func\n}\n\ndragger.checkDragOut = function (data: IPointerEvent): void {\n const { interaction } = this\n this.autoMoveCancel()\n if (this.dragging && !interaction.shrinkCanvasBounds.hitPoint(data)) this.autoMoveOnDragOut(data)\n}\n\ndragger.autoMoveOnDragOut = function (data: IPointerEvent): void {\n const { interaction, downData, canDragOut } = this\n const { autoDistance, dragOut } = interaction.m\n if (!dragOut || !canDragOut || !autoDistance) return\n\n const bounds = interaction.shrinkCanvasBounds\n const { x, y } = bounds\n const right = BoundsHelper.maxX(bounds)\n const bottom = BoundsHelper.maxY(bounds)\n\n const moveX = data.x < x ? autoDistance : (right < data.x ? -autoDistance : 0)\n const moveY = data.y < y ? autoDistance : (bottom < data.y ? -autoDistance : 0)\n let totalX = 0, totalY = 0\n\n this.autoMoveTimer = setInterval(() => {\n totalX += moveX\n totalY += moveY\n\n PointHelper.move(downData, moveX, moveY)\n PointHelper.move(this.dragData, moveX, moveY)\n\n interaction.move({ ...data, moveX, moveY, totalX, totalY, moveType: 'drag' })\n interaction.pointerMoveReal(data)\n }, 10)\n}\n\ndragger.autoMoveCancel = function (): void {\n if (this.autoMoveTimer) {\n clearInterval(this.autoMoveTimer)\n this.autoMoveTimer = 0\n }\n}","export { LeaferTypeCreator } from './LeaferTypeCreator'\nexport { addViewport, addViewportConfig } from './type/viewport'\nexport { MultiTouchHelper } from './interaction/MultiTouchHelper'\nexport { WheelEventHelper } from './interaction/WheelEventHelper'\nexport { Transformer } from './interaction/Transformer'\n\nimport { Plugin } from '@leafer-ui/core'\n\nimport './Leafer'\nimport './interaction/Interaction'\nimport './interaction/Dragger'\n\nPlugin.add('viewport')"],"names":["addViewport","leafer","mergeConfig","custom","addViewportConfig","parentApp","isApp","__eventIds","push","on_","MoveEvent","BEFORE_MOVE","e","zoomLayer","move","getValidMove","moveX","moveY","ZoomEvent","BEFORE_ZOOM","changeScale","getValidScale","scale","scaleOfWorld","viewportConfig","wheel","preventDefault","touch","pointer","preventDefaultMenu","DataHelper","assign","config","userConfig","debug","Debug","get","LeaferTypeCreator","list","register","name","fn","repeat","run","zoom","min","max","holdSpaceKey","holdMiddleKey","scroll","MultiTouchHelper","getData","a","b","lastCenter","PointHelper","getCenter","from","center","to","x","y","lastDistance","getDistance","rotation","getRotation","WheelEventHelper","getMove","event","moveSpeed","deltaX","deltaY","shiftKey","Math","getScale","zoomMode","zoomSpeed","delta","Platform","intWheelDeltaY","abs","ceil","metaKey","ctrlKey","MathHelper","within","Transformer","transforming","this","moveData","zoomData","rotateData","constructor","interaction","data","moveType","setPath","Object","emit","START","path","MOVE","transformEndWait","ZOOM","rotate","RotateEvent","BEFORE_ROTATE","ROTATE","selector","getByPoint","hitRadius","cancelHover","clearTimeout","transformTimer","setTimeout","transformEnd","p","transformTime","END","reset","destroy","Leafer","prototype","bounds","Bounds","getMoveEventData","getZoomEventData","initType","type","disabled","app","includes","width","height","set","__world","addPoint","right","bottom","scaleX","__","absScale","InteractionBase","createTransformer","transformer","posDeltaSpeed","negDeltaSpeed","snap","round","multiTouch","pointerWaitCancel","getRotateEventData","dragger","Dragger","checkDragEndAnimate","speed","dragData","absMoveX","absMoveY","minMove","dragAnimate","m","canAnimate","moving","inertia","pointerType","maxMove","drag","animate","dragEnd","func","off","animateWait","target","nextRender","checkDragOut","autoMoveCancel","dragging","shrinkCanvasBounds","hitPoint","autoMoveOnDragOut","downData","canDragOut","autoDistance","dragOut","BoundsHelper","maxX","maxY","totalX","totalY","autoMoveTimer","setInterval","pointerMoveReal","clearInterval","Plugin","add"],"mappings":"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"}
|
package/dist/viewport.js
CHANGED
|
@@ -294,6 +294,7 @@ this.LeaferIN.viewport = (function (exports, core) {
|
|
|
294
294
|
return;
|
|
295
295
|
const { move, rotation, scale, center } = MultiTouchHelper.getData(list);
|
|
296
296
|
Object.assign(data, center);
|
|
297
|
+
this.pointerWaitCancel();
|
|
297
298
|
this.rotate(getRotateEventData(rotation, data));
|
|
298
299
|
this.zoom(getZoomEventData(scale, data));
|
|
299
300
|
this.move(getMoveEventData(move, data));
|
|
@@ -371,4 +372,3 @@ this.LeaferIN.viewport = (function (exports, core) {
|
|
|
371
372
|
return exports;
|
|
372
373
|
|
|
373
374
|
})({}, LeaferUI);
|
|
374
|
-
//# sourceMappingURL=viewport.js.map
|
package/dist/viewport.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var t=require("@leafer-ui/core");function e(e,a,
|
|
1
|
+
"use strict";var t=require("@leafer-ui/core");function e(e,a,i){o(e.parentApp?e.parentApp:e,a),e.isApp||i||e.__eventIds.push(e.on_(t.MoveEvent.BEFORE_MOVE,(t=>{e.zoomLayer.move(e.getValidMove(t.moveX,t.moveY))})),e.on_(t.ZoomEvent.BEFORE_ZOOM,(t=>{const{zoomLayer:o}=e,a=e.getValidScale(t.scale);1!==a&&o.scaleOfWorld(t,a)})))}function o(e,o){const a={wheel:{preventDefault:!0},touch:{preventDefault:!0},pointer:{preventDefaultMenu:!0}};o&&t.DataHelper.assign(a,o),t.DataHelper.assign(e.config,a,e.userConfig)}const a=t.Debug.get("LeaferTypeCreator"),i={list:{},register(t,e){n[t]&&a.repeat(t),n[t]=e},run(t,e){const o=n[t];o&&o(e)}},{list:n,register:s}=i;s("viewport",e),s("custom",(function(t){e(t,null,!0)})),s("design",(function(t){e(t,{zoom:{min:.01,max:256},move:{holdSpaceKey:!0,holdMiddleKey:!0}})})),s("document",(function(t){e(t,{zoom:{min:1},move:{scroll:"limit"}})}));const r={getData(e){const o=e[0],a=e[1],i=t.PointHelper.getCenter(o.from,a.from),n=t.PointHelper.getCenter(o.to,a.to),s={x:n.x-i.x,y:n.y-i.y},r=t.PointHelper.getDistance(o.from,a.from);return{move:s,scale:t.PointHelper.getDistance(o.to,a.to)/r,rotation:t.PointHelper.getRotation(o.from,a.from,o.to,a.to),center:n}}},c={getMove(t,e){let{moveSpeed:o}=e,{deltaX:a,deltaY:i}=t;return t.shiftKey&&!a&&(a=i,i=0),a>50&&(a=Math.max(50,a/3)),i>50&&(i=Math.max(50,i/3)),{x:-a*o*2,y:-i*o*2}},getScale(e,o){let a,i=1,{zoomMode:n,zoomSpeed:s}=o;const r=e.deltaY||e.deltaX;if(n?(a="mouse"===n||!e.deltaX&&(t.Platform.intWheelDeltaY?Math.abs(r)>17:Math.ceil(r)!==r),(e.shiftKey||e.metaKey||e.ctrlKey)&&(a=!0)):a=!e.shiftKey&&(e.metaKey||e.ctrlKey),a){s=t.MathHelper.within(s,0,1);i=1-r/(4*(e.deltaY?o.delta.y:o.delta.x))*s,i<.5&&(i=.5),i>=1.5&&(i=1.5)}return i}};class m{get transforming(){return!!(this.moveData||this.zoomData||this.rotateData)}constructor(t){this.interaction=t}move(e){const{interaction:o}=this;e.moveType||(e.moveType="move"),this.moveData||(this.setPath(e),this.moveData=Object.assign(Object.assign({},e),{moveX:0,moveY:0}),o.emit(t.MoveEvent.START,this.moveData)),e.path=this.moveData.path,o.emit(t.MoveEvent.BEFORE_MOVE,e),o.emit(t.MoveEvent.MOVE,e),this.transformEndWait()}zoom(e){const{interaction:o}=this;this.zoomData||(this.setPath(e),this.zoomData=Object.assign(Object.assign({},e),{scale:1}),o.emit(t.ZoomEvent.START,this.zoomData)),e.path=this.zoomData.path,o.emit(t.ZoomEvent.BEFORE_ZOOM,e),o.emit(t.ZoomEvent.ZOOM,e),this.transformEndWait()}rotate(e){const{interaction:o}=this;this.rotateData||(this.setPath(e),this.rotateData=Object.assign(Object.assign({},e),{rotation:0}),o.emit(t.RotateEvent.START,this.rotateData)),e.path=this.rotateData.path,o.emit(t.RotateEvent.BEFORE_ROTATE,e),o.emit(t.RotateEvent.ROTATE,e),this.transformEndWait()}setPath(t){const{interaction:e}=this,{path:o}=e.selector.getByPoint(t,e.hitRadius);t.path=o,e.cancelHover()}transformEndWait(){clearTimeout(this.transformTimer),this.transformTimer=setTimeout((()=>{this.transformEnd()}),this.interaction.p.transformTime)}transformEnd(){const{interaction:e,moveData:o,zoomData:a,rotateData:i}=this;o&&e.emit(t.MoveEvent.END,o),a&&e.emit(t.ZoomEvent.END,a),i&&e.emit(t.RotateEvent.END,i),this.reset()}reset(){this.zoomData=this.moveData=this.rotateData=null}destroy(){this.reset()}}const h=t.Leafer.prototype,l=new t.Bounds;function u(t,e){return Object.assign(Object.assign({},e),{moveX:t.x,moveY:t.y})}function v(t,e){return Object.assign(Object.assign({},e),{scale:t})}h.initType=function(t){i.run(t,this)},h.getValidMove=function(t,e){const{scroll:o,disabled:a}=this.app.config.move;if(o){const a=!0===o?"":o;if(a.includes("x")?(t=t||e,e=0):a.includes("y")?(e=e||t,t=0):Math.abs(t)>Math.abs(e)?e=0:t=0,a.includes("limit")){const{x:o,y:a,width:i,height:n}=l.set(this.__world).addPoint(this.zoomLayer),s=o+i-this.width,r=a+n-this.height;o>=0&&s<=0?t=0:t>0?o+t>0&&(t=-o):t<0&&s+t<0&&(t=-s),a>=0&&r<=0?e=0:e>0?a+e>0&&(e=-a):e<0&&r+e<0&&(e=-r)}}return{x:a?0:t,y:a?0:e}},h.getValidScale=function(t){const{scaleX:e}=this.zoomLayer.__,{min:o,max:a,disabled:i}=this.app.config.zoom,n=Math.abs(e*t);return o&&n<o?t=o/e:a&&n>a&&(t=a/e),i?1:t};const d=t.InteractionBase.prototype;d.createTransformer=function(){this.transformer=new m(this)},d.move=function(t){this.transformer.move(t)},d.zoom=function(t){this.transformer.zoom(t)},d.rotate=function(t){this.transformer.rotate(t)},d.transformEnd=function(){this.transformer.transformEnd()},d.wheel=function(e){const{wheel:o,pointer:a}=this.config,{posDeltaSpeed:i,negDeltaSpeed:n}=o;if(o.disabled)return;e.deltaX>0?i&&(e.deltaX*=i):n&&(e.deltaX*=n),e.deltaY>0?i&&(e.deltaY*=i):n&&(e.deltaY*=n);const s=o.getScale?o.getScale(e,o):c.getScale(e,o);if(1!==s)this.zoom(v(s,e));else{const i=o.getMove?o.getMove(e,o):c.getMove(e,o);a.snap&&t.PointHelper.round(i),this.move(u(i,e))}},d.multiTouch=function(t,e){if(this.config.multiTouch.disabled)return;const{move:o,rotation:a,scale:i,center:n}=r.getData(e);Object.assign(t,n),this.pointerWaitCancel(),this.rotate(function(t,e){return Object.assign(Object.assign({},e),{rotation:t})}(a,t)),this.zoom(v(i,t)),this.move(u(o,t))};const p=t.Dragger.prototype,{abs:f}=Math;p.checkDragEndAnimate=function(e,o){const{moveX:a,moveY:i}=this.dragData,n=f(a),s=f(i),r=o?1:.1,c=this.interaction.m.dragAnimate&&this.canAnimate&&this.moving&&(n>r||s>r);if(c){const r="touch"===e.pointerType?3:1,c=70;n*(o=o?.95:r)>c?o=c/n:s*o>c&&(o=c/s),e=Object.assign({},e),t.PointHelper.move(e,a*o,i*o),this.drag(e),this.animate((()=>{this.dragEnd(e,1)}))}return c},p.animate=function(t,e){const o=t||this.animateWait;o&&this.interaction.target.nextRender(o,null,e),this.animateWait=t},p.checkDragOut=function(t){const{interaction:e}=this;this.autoMoveCancel(),this.dragging&&!e.shrinkCanvasBounds.hitPoint(t)&&this.autoMoveOnDragOut(t)},p.autoMoveOnDragOut=function(e){const{interaction:o,downData:a,canDragOut:i}=this,{autoDistance:n,dragOut:s}=o.m;if(!s||!i||!n)return;const r=o.shrinkCanvasBounds,{x:c,y:m}=r,h=t.BoundsHelper.maxX(r),l=t.BoundsHelper.maxY(r),u=e.x<c?n:h<e.x?-n:0,v=e.y<m?n:l<e.y?-n:0;let d=0,p=0;this.autoMoveTimer=setInterval((()=>{d+=u,p+=v,t.PointHelper.move(a,u,v),t.PointHelper.move(this.dragData,u,v),o.move(Object.assign(Object.assign({},e),{moveX:u,moveY:v,totalX:d,totalY:p,moveType:"drag"})),o.pointerMoveReal(e)}),10)},p.autoMoveCancel=function(){this.autoMoveTimer&&(clearInterval(this.autoMoveTimer),this.autoMoveTimer=0)},t.Plugin.add("viewport"),exports.LeaferTypeCreator=i,exports.MultiTouchHelper=r,exports.Transformer=m,exports.WheelEventHelper=c,exports.addViewport=e,exports.addViewportConfig=o;
|
|
2
2
|
//# sourceMappingURL=viewport.min.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.min.cjs","sources":["../../../../../../src/in/packages/viewport/src/type/viewport.ts","../../../../../../src/in/packages/viewport/src/LeaferTypeCreator.ts","../../../../../../src/in/packages/viewport/src/type/custom.ts","../../../../../../src/in/packages/viewport/src/type/design.ts","../../../../../../src/in/packages/viewport/src/type/document.ts","../../../../../../src/in/packages/viewport/src/interaction/MultiTouchHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/WheelEventHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/Transformer.ts","../../../../../../src/in/packages/viewport/src/Leafer.ts","../../../../../../src/in/packages/viewport/src/interaction/Interaction.ts","../../../../../../src/in/packages/viewport/src/interaction/Dragger.ts","../../../../../../src/in/packages/viewport/src/index.ts"],"sourcesContent":["import { ILeaferBase, ILeaferConfig } from '@leafer-ui/interface'\n\nimport { MoveEvent, ZoomEvent, DataHelper } from '@leafer-ui/core'\n\n\nexport function addViewport(leafer: ILeaferBase, mergeConfig?: ILeaferConfig, custom?: boolean): void {\n addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig)\n if (leafer.isApp || custom) return\n\n leafer.__eventIds.push(\n leafer.on_(MoveEvent.BEFORE_MOVE, (e: MoveEvent) => {\n leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY))\n }),\n leafer.on_(ZoomEvent.BEFORE_ZOOM, (e: ZoomEvent) => {\n const { zoomLayer } = leafer\n const changeScale = leafer.getValidScale(e.scale)\n if (changeScale !== 1) zoomLayer.scaleOfWorld(e, changeScale)\n })\n )\n}\n\nexport function addViewportConfig(leafer: ILeaferBase, mergeConfig?: ILeaferConfig): void {\n const viewportConfig: ILeaferConfig = {\n wheel: { preventDefault: true },\n touch: { preventDefault: true },\n pointer: { preventDefaultMenu: true }\n }\n if (mergeConfig) DataHelper.assign(viewportConfig, mergeConfig)\n DataHelper.assign(leafer.config, viewportConfig, leafer.userConfig)\n}","import { ILeaferBase, ILeaferTypeList, ILeaferTypeFunction } from '@leafer-ui/interface'\n\nimport { Debug } from '@leafer-ui/core'\n\nimport { addViewport } from './type/viewport'\nimport { custom } from './type/custom'\nimport { design } from './type/design'\nimport { document } from './type/document'\n\n\nconst debug = Debug.get('LeaferTypeCreator')\n\nexport const LeaferTypeCreator = {\n\n list: {} as ILeaferTypeList,\n\n register(name: string, fn: ILeaferTypeFunction): void {\n list[name] && debug.repeat(name)\n list[name] = fn\n },\n\n run(name: string, leafer: ILeaferBase): void {\n const fn = list[name]\n fn && fn(leafer)\n }\n\n}\n\nconst { list, register } = LeaferTypeCreator\n\nregister('viewport', addViewport)\nregister('custom', custom)\nregister('design', design)\nregister('document', document)","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function custom(leafer: ILeaferBase): void {\n addViewport(leafer, null, true)\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function design(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: {\n min: 0.01,\n max: 256\n },\n move: {\n holdSpaceKey: true,\n holdMiddleKey: true,\n }\n })\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function document(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: { min: 1 },\n move: { scroll: 'limit' }\n })\n}\n","import { IMultiTouchData, IKeepTouchData } from '@leafer-ui/interface'\n\nimport { PointHelper } from '@leafer-ui/core'\n\n\nexport const MultiTouchHelper = {\n\n getData(list: IKeepTouchData[]): IMultiTouchData {\n const a = list[0], b = list[1]\n const lastCenter = PointHelper.getCenter(a.from, b.from)\n const center = PointHelper.getCenter(a.to, b.to)\n const move = { x: center.x - lastCenter.x, y: center.y - lastCenter.y }\n\n const lastDistance = PointHelper.getDistance(a.from, b.from)\n const distance = PointHelper.getDistance(a.to, b.to)\n const scale = distance / lastDistance\n\n const rotation = PointHelper.getRotation(a.from, b.from, a.to, b.to)\n\n return { move, scale, rotation, center }\n }\n\n}","import { IPointData, IWheelEvent, IWheelConfig } from '@leafer-ui/interface'\n\nimport { MathHelper, Platform } from '@leafer-ui/core'\n\n\nexport const WheelEventHelper = {\n\n getMove(event: IWheelEvent, config: IWheelConfig): IPointData {\n let { moveSpeed } = config\n let { deltaX, deltaY } = event\n if (event.shiftKey && !deltaX) { // Window\n deltaX = deltaY\n deltaY = 0\n }\n if (deltaX > 50) deltaX = Math.max(50, deltaX / 3)\n if (deltaY > 50) deltaY = Math.max(50, deltaY / 3)\n return { x: -deltaX * moveSpeed * 2, y: -deltaY * moveSpeed * 2 }\n },\n\n getScale(event: IWheelEvent, config: IWheelConfig): number {\n\n let zoom: boolean\n let scale = 1\n let { zoomMode, zoomSpeed } = config\n\n const delta = event.deltaY || event.deltaX\n\n if (zoomMode) {\n // mac 触摸板滚动手势的deltaY是整数, 鼠标滚动/触摸板缩放的deltaY有小数点, firfox鼠标滚动为整数,为18或19的倍数\n // windows 始终是整数\n zoom = (zoomMode === 'mouse') ? true : (!event.deltaX && (Platform.intWheelDeltaY ? Math.abs(delta) > 17 : Math.ceil(delta) !== delta))\n if (event.shiftKey || event.metaKey || event.ctrlKey) zoom = true\n } else {\n zoom = !event.shiftKey && (event.metaKey || event.ctrlKey)\n }\n\n if (zoom) {\n zoomSpeed = MathHelper.within(zoomSpeed, 0, 1)\n const min = event.deltaY ? config.delta.y : config.delta.x\n scale = 1 - delta / (min * 4) * zoomSpeed // zoomSpeed\n if (scale < 0.5) scale = 0.5\n if (scale >= 1.5) scale = 1.5\n }\n\n return scale\n }\n\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, ITimer } from '@leafer-ui/interface'\n\nimport { InteractionBase, MoveEvent, ZoomEvent, RotateEvent } from '@leafer-ui/core'\n\n\nexport class Transformer {\n\n public get transforming(): boolean { return !!(this.moveData || this.zoomData || this.rotateData) }\n\n protected interaction: InteractionBase\n protected moveData: IMoveEvent\n protected zoomData: IZoomEvent\n protected rotateData: IRotateEvent\n protected transformTimer: ITimer\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public move(data: IMoveEvent): void {\n const { interaction } = this\n if (!data.moveType) data.moveType = 'move'\n\n if (!this.moveData) {\n this.setPath(data)\n this.moveData = { ...data, moveX: 0, moveY: 0 }\n interaction.emit(MoveEvent.START, this.moveData)\n }\n\n data.path = this.moveData.path\n interaction.emit(MoveEvent.BEFORE_MOVE, data)\n interaction.emit(MoveEvent.MOVE, data)\n\n this.transformEndWait()\n }\n\n public zoom(data: IZoomEvent): void {\n const { interaction } = this\n\n if (!this.zoomData) {\n this.setPath(data)\n this.zoomData = { ...data, scale: 1 }\n interaction.emit(ZoomEvent.START, this.zoomData)\n }\n\n data.path = this.zoomData.path\n interaction.emit(ZoomEvent.BEFORE_ZOOM, data)\n interaction.emit(ZoomEvent.ZOOM, data)\n\n this.transformEndWait()\n }\n\n public rotate(data: IRotateEvent): void {\n const { interaction } = this\n\n if (!this.rotateData) {\n this.setPath(data)\n this.rotateData = { ...data, rotation: 0 }\n interaction.emit(RotateEvent.START, this.rotateData)\n }\n\n data.path = this.rotateData.path\n interaction.emit(RotateEvent.BEFORE_ROTATE, data)\n interaction.emit(RotateEvent.ROTATE, data)\n\n this.transformEndWait()\n }\n\n public setPath(data: any): void {\n const { interaction } = this\n const { path } = interaction.selector.getByPoint(data, interaction.hitRadius)\n data.path = path\n interaction.cancelHover()\n }\n\n protected transformEndWait(): void {\n clearTimeout(this.transformTimer)\n this.transformTimer = setTimeout(() => {\n this.transformEnd()\n }, this.interaction.p.transformTime)\n }\n\n public transformEnd(): void {\n const { interaction, moveData, zoomData, rotateData } = this\n if (moveData) interaction.emit(MoveEvent.END, moveData)\n if (zoomData) interaction.emit(ZoomEvent.END, zoomData)\n if (rotateData) interaction.emit(RotateEvent.END, rotateData)\n this.reset()\n }\n\n public reset(): void {\n this.zoomData = this.moveData = this.rotateData = null\n }\n\n public destroy(): void {\n this.reset()\n }\n}","import { ILeaferType, IPointData } from '@leafer-ui/interface'\n\nimport { Leafer, Bounds } from '@leafer-ui/core'\n\nimport { LeaferTypeCreator } from './LeaferTypeCreator'\n\n\nconst leafer = Leafer.prototype\nconst bounds = new Bounds()\n\nleafer.initType = function (type: ILeaferType) {\n LeaferTypeCreator.run(type, this)\n}\n\nleafer.getValidMove = function (moveX: number, moveY: number): IPointData {\n const { scroll, disabled } = this.app.config.move\n\n if (scroll) {\n const type = scroll === true ? '' : scroll\n\n if (type.includes('x')) moveX = moveX || moveY, moveY = 0\n else if (type.includes('y')) moveY = moveY || moveX, moveX = 0\n else Math.abs(moveX) > Math.abs(moveY) ? moveY = 0 : moveX = 0\n\n if (type.includes('limit')) {\n const { x, y, width, height } = bounds.set(this.__world).addPoint(this.zoomLayer as IPointData)\n const right = x + width - this.width, bottom = y + height - this.height\n\n if (x >= 0 && right <= 0) moveX = 0 // includeX\n else if (moveX > 0) { if (x + moveX > 0) moveX = -x }\n else if (moveX < 0 && right + moveX < 0) moveX = -right\n\n if (y >= 0 && bottom <= 0) moveY = 0 // includeY\n else if (moveY > 0) { if (y + moveY > 0) moveY = -y }\n else if (moveY < 0 && bottom + moveY < 0) moveY = -bottom\n }\n }\n return { x: disabled ? 0 : moveX, y: disabled ? 0 : moveY }\n}\n\nleafer.getValidScale = function (changeScale: number): number {\n const { scaleX } = this.zoomLayer.__, { min, max, disabled } = this.app.config.zoom, absScale = Math.abs(scaleX * changeScale)\n if (min && absScale < min) changeScale = min / scaleX\n else if (max && absScale > max) changeScale = max / scaleX\n return disabled ? 1 : changeScale // fix 不能过滤小数位\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IUIEvent, IKeepTouchData, IPointData, IEvent } from '@leafer-ui/interface'\n\nimport { InteractionBase, PointHelper } from '@leafer-ui/core'\n\nimport { WheelEventHelper } from './WheelEventHelper'\nimport { Transformer } from './Transformer'\nimport { MultiTouchHelper } from './MultiTouchHelper'\n\n\nfunction getMoveEventData(move: IPointData, event: IEvent): IMoveEvent {\n return { ...event, moveX: move.x, moveY: move.y } as IMoveEvent\n}\n\nfunction getRotateEventData(rotation: number, event: IEvent): IRotateEvent {\n return { ...event, rotation } as IRotateEvent\n}\n\nfunction getZoomEventData(scale: number, event: IEvent): IZoomEvent {\n return { ...event, scale, } as IZoomEvent\n}\n\n\nconst interaction = InteractionBase.prototype\n\ninteraction.createTransformer = function (): void {\n this.transformer = new Transformer(this)\n}\n\ninteraction.move = function (data: IMoveEvent): void {\n this.transformer.move(data)\n}\n\ninteraction.zoom = function (data: IZoomEvent): void {\n this.transformer.zoom(data)\n}\n\ninteraction.rotate = function (data: IRotateEvent): void {\n this.transformer.rotate(data)\n}\n\ninteraction.transformEnd = function (): void {\n this.transformer.transformEnd()\n}\n\n\ninteraction.wheel = function (data: IWheelEvent): void {\n const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel\n if (wheel.disabled) return\n\n if (data.deltaX > 0) posDeltaSpeed && (data.deltaX *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaX *= negDeltaSpeed)\n\n if (data.deltaY > 0) posDeltaSpeed && (data.deltaY *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaY *= negDeltaSpeed)\n\n const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel)\n if (scale !== 1) this.zoom(getZoomEventData(scale, data))\n else {\n const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel)\n if (pointer.snap) PointHelper.round(move)\n this.move(getMoveEventData(move, data))\n }\n}\n\n\ninteraction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void {\n if (this.config.multiTouch.disabled) return\n const { move, rotation, scale, center } = MultiTouchHelper.getData(list)\n Object.assign(data, center)\n\n this.rotate(getRotateEventData(rotation, data))\n this.zoom(getZoomEventData(scale, data))\n this.move(getMoveEventData(move, data))\n}","import { IPointerEvent, IFunction } from '@leafer-ui/interface'\n\nimport { Dragger, BoundsHelper, PointHelper } from '@leafer-ui/core'\n\n\nconst dragger = Dragger.prototype\nconst { abs } = Math\n\ndragger.checkDragEndAnimate = function (data: IPointerEvent, speed?: number): boolean {\n const { moveX, moveY } = this.dragData\n const absMoveX = abs(moveX), absMoveY = abs(moveY), minMove = speed ? 1 : 0.1\n const dragAnimate = this.interaction.m.dragAnimate && this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove)\n\n if (dragAnimate) {\n const inertia = data.pointerType === 'touch' ? 3 : 1, maxMove = 70\n speed = speed ? 0.95 : inertia\n if (absMoveX * speed > maxMove) speed = maxMove / absMoveX\n else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY\n\n data = { ...data }\n PointHelper.move(data, moveX * speed, moveY * speed)\n\n this.drag(data)\n this.animate(() => { this.dragEnd(data, 1) })\n }\n\n return dragAnimate\n}\n\ndragger.animate = function (func?: IFunction, off?: 'off'): void { // dragEnd animation\n const animateWait = func || this.animateWait\n if (animateWait) this.interaction.target.nextRender(animateWait, null, off)\n this.animateWait = func\n}\n\ndragger.checkDragOut = function (data: IPointerEvent): void {\n const { interaction } = this\n this.autoMoveCancel()\n if (this.dragging && !interaction.shrinkCanvasBounds.hitPoint(data)) this.autoMoveOnDragOut(data)\n}\n\ndragger.autoMoveOnDragOut = function (data: IPointerEvent): void {\n const { interaction, downData, canDragOut } = this\n const { autoDistance, dragOut } = interaction.m\n if (!dragOut || !canDragOut || !autoDistance) return\n\n const bounds = interaction.shrinkCanvasBounds\n const { x, y } = bounds\n const right = BoundsHelper.maxX(bounds)\n const bottom = BoundsHelper.maxY(bounds)\n\n const moveX = data.x < x ? autoDistance : (right < data.x ? -autoDistance : 0)\n const moveY = data.y < y ? autoDistance : (bottom < data.y ? -autoDistance : 0)\n let totalX = 0, totalY = 0\n\n this.autoMoveTimer = setInterval(() => {\n totalX += moveX\n totalY += moveY\n\n PointHelper.move(downData, moveX, moveY)\n PointHelper.move(this.dragData, moveX, moveY)\n\n interaction.move({ ...data, moveX, moveY, totalX, totalY, moveType: 'drag' })\n interaction.pointerMoveReal(data)\n }, 10)\n}\n\ndragger.autoMoveCancel = function (): void {\n if (this.autoMoveTimer) {\n clearInterval(this.autoMoveTimer)\n this.autoMoveTimer = 0\n }\n}","export { LeaferTypeCreator } from './LeaferTypeCreator'\nexport { addViewport, addViewportConfig } from './type/viewport'\nexport { MultiTouchHelper } from './interaction/MultiTouchHelper'\nexport { WheelEventHelper } from './interaction/WheelEventHelper'\nexport { Transformer } from './interaction/Transformer'\n\nimport { Plugin } from '@leafer-ui/core'\n\nimport './Leafer'\nimport './interaction/Interaction'\nimport './interaction/Dragger'\n\nPlugin.add('viewport')"],"names":["addViewport","leafer","mergeConfig","custom","addViewportConfig","parentApp","isApp","__eventIds","push","on_","MoveEvent","BEFORE_MOVE","e","zoomLayer","move","getValidMove","moveX","moveY","ZoomEvent","BEFORE_ZOOM","changeScale","getValidScale","scale","scaleOfWorld","viewportConfig","wheel","preventDefault","touch","pointer","preventDefaultMenu","DataHelper","assign","config","userConfig","debug","Debug","get","LeaferTypeCreator","list","register","name","fn","repeat","run","zoom","min","max","holdSpaceKey","holdMiddleKey","scroll","MultiTouchHelper","getData","a","b","lastCenter","PointHelper","getCenter","from","center","to","x","y","lastDistance","getDistance","rotation","getRotation","WheelEventHelper","getMove","event","moveSpeed","deltaX","deltaY","shiftKey","Math","getScale","zoomMode","zoomSpeed","delta","Platform","intWheelDeltaY","abs","ceil","metaKey","ctrlKey","MathHelper","within","Transformer","transforming","this","moveData","zoomData","rotateData","constructor","interaction","data","moveType","setPath","Object","emit","START","path","MOVE","transformEndWait","ZOOM","rotate","RotateEvent","BEFORE_ROTATE","ROTATE","selector","getByPoint","hitRadius","cancelHover","clearTimeout","transformTimer","setTimeout","transformEnd","p","transformTime","END","reset","destroy","Leafer","prototype","bounds","Bounds","getMoveEventData","getZoomEventData","initType","type","disabled","app","includes","width","height","set","__world","addPoint","right","bottom","scaleX","__","absScale","InteractionBase","createTransformer","transformer","posDeltaSpeed","negDeltaSpeed","snap","round","multiTouch","getRotateEventData","dragger","Dragger","checkDragEndAnimate","speed","dragData","absMoveX","absMoveY","minMove","dragAnimate","m","canAnimate","moving","inertia","pointerType","maxMove","drag","animate","dragEnd","func","off","animateWait","target","nextRender","checkDragOut","autoMoveCancel","dragging","shrinkCanvasBounds","hitPoint","autoMoveOnDragOut","downData","canDragOut","autoDistance","dragOut","BoundsHelper","maxX","maxY","totalX","totalY","autoMoveTimer","setInterval","pointerMoveReal","clearInterval","Plugin","add"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viewport.min.cjs","sources":["../../../../../../src/in/packages/viewport/src/type/viewport.ts","../../../../../../src/in/packages/viewport/src/LeaferTypeCreator.ts","../../../../../../src/in/packages/viewport/src/type/custom.ts","../../../../../../src/in/packages/viewport/src/type/design.ts","../../../../../../src/in/packages/viewport/src/type/document.ts","../../../../../../src/in/packages/viewport/src/interaction/MultiTouchHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/WheelEventHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/Transformer.ts","../../../../../../src/in/packages/viewport/src/Leafer.ts","../../../../../../src/in/packages/viewport/src/interaction/Interaction.ts","../../../../../../src/in/packages/viewport/src/interaction/Dragger.ts","../../../../../../src/in/packages/viewport/src/index.ts"],"sourcesContent":["import { ILeaferBase, ILeaferConfig } from '@leafer-ui/interface'\n\nimport { MoveEvent, ZoomEvent, DataHelper } from '@leafer-ui/core'\n\n\nexport function addViewport(leafer: ILeaferBase, mergeConfig?: ILeaferConfig, custom?: boolean): void {\n addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig)\n if (leafer.isApp || custom) return\n\n leafer.__eventIds.push(\n leafer.on_(MoveEvent.BEFORE_MOVE, (e: MoveEvent) => {\n leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY))\n }),\n leafer.on_(ZoomEvent.BEFORE_ZOOM, (e: ZoomEvent) => {\n const { zoomLayer } = leafer\n const changeScale = leafer.getValidScale(e.scale)\n if (changeScale !== 1) zoomLayer.scaleOfWorld(e, changeScale)\n })\n )\n}\n\nexport function addViewportConfig(leafer: ILeaferBase, mergeConfig?: ILeaferConfig): void {\n const viewportConfig: ILeaferConfig = {\n wheel: { preventDefault: true },\n touch: { preventDefault: true },\n pointer: { preventDefaultMenu: true }\n }\n if (mergeConfig) DataHelper.assign(viewportConfig, mergeConfig)\n DataHelper.assign(leafer.config, viewportConfig, leafer.userConfig)\n}","import { ILeaferBase, ILeaferTypeList, ILeaferTypeFunction } from '@leafer-ui/interface'\n\nimport { Debug } from '@leafer-ui/core'\n\nimport { addViewport } from './type/viewport'\nimport { custom } from './type/custom'\nimport { design } from './type/design'\nimport { document } from './type/document'\n\n\nconst debug = Debug.get('LeaferTypeCreator')\n\nexport const LeaferTypeCreator = {\n\n list: {} as ILeaferTypeList,\n\n register(name: string, fn: ILeaferTypeFunction): void {\n list[name] && debug.repeat(name)\n list[name] = fn\n },\n\n run(name: string, leafer: ILeaferBase): void {\n const fn = list[name]\n fn && fn(leafer)\n }\n\n}\n\nconst { list, register } = LeaferTypeCreator\n\nregister('viewport', addViewport)\nregister('custom', custom)\nregister('design', design)\nregister('document', document)","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function custom(leafer: ILeaferBase): void {\n addViewport(leafer, null, true)\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function design(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: {\n min: 0.01,\n max: 256\n },\n move: {\n holdSpaceKey: true,\n holdMiddleKey: true,\n }\n })\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function document(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: { min: 1 },\n move: { scroll: 'limit' }\n })\n}\n","import { IMultiTouchData, IKeepTouchData } from '@leafer-ui/interface'\n\nimport { PointHelper } from '@leafer-ui/core'\n\n\nexport const MultiTouchHelper = {\n\n getData(list: IKeepTouchData[]): IMultiTouchData {\n const a = list[0], b = list[1]\n const lastCenter = PointHelper.getCenter(a.from, b.from)\n const center = PointHelper.getCenter(a.to, b.to)\n const move = { x: center.x - lastCenter.x, y: center.y - lastCenter.y }\n\n const lastDistance = PointHelper.getDistance(a.from, b.from)\n const distance = PointHelper.getDistance(a.to, b.to)\n const scale = distance / lastDistance\n\n const rotation = PointHelper.getRotation(a.from, b.from, a.to, b.to)\n\n return { move, scale, rotation, center }\n }\n\n}","import { IPointData, IWheelEvent, IWheelConfig } from '@leafer-ui/interface'\n\nimport { MathHelper, Platform } from '@leafer-ui/core'\n\n\nexport const WheelEventHelper = {\n\n getMove(event: IWheelEvent, config: IWheelConfig): IPointData {\n let { moveSpeed } = config\n let { deltaX, deltaY } = event\n if (event.shiftKey && !deltaX) { // Window\n deltaX = deltaY\n deltaY = 0\n }\n if (deltaX > 50) deltaX = Math.max(50, deltaX / 3)\n if (deltaY > 50) deltaY = Math.max(50, deltaY / 3)\n return { x: -deltaX * moveSpeed * 2, y: -deltaY * moveSpeed * 2 }\n },\n\n getScale(event: IWheelEvent, config: IWheelConfig): number {\n\n let zoom: boolean\n let scale = 1\n let { zoomMode, zoomSpeed } = config\n\n const delta = event.deltaY || event.deltaX\n\n if (zoomMode) {\n // mac 触摸板滚动手势的deltaY是整数, 鼠标滚动/触摸板缩放的deltaY有小数点, firfox鼠标滚动为整数,为18或19的倍数\n // windows 始终是整数\n zoom = (zoomMode === 'mouse') ? true : (!event.deltaX && (Platform.intWheelDeltaY ? Math.abs(delta) > 17 : Math.ceil(delta) !== delta))\n if (event.shiftKey || event.metaKey || event.ctrlKey) zoom = true\n } else {\n zoom = !event.shiftKey && (event.metaKey || event.ctrlKey)\n }\n\n if (zoom) {\n zoomSpeed = MathHelper.within(zoomSpeed, 0, 1)\n const min = event.deltaY ? config.delta.y : config.delta.x\n scale = 1 - delta / (min * 4) * zoomSpeed // zoomSpeed\n if (scale < 0.5) scale = 0.5\n if (scale >= 1.5) scale = 1.5\n }\n\n return scale\n }\n\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, ITimer } from '@leafer-ui/interface'\n\nimport { InteractionBase, MoveEvent, ZoomEvent, RotateEvent } from '@leafer-ui/core'\n\n\nexport class Transformer {\n\n public get transforming(): boolean { return !!(this.moveData || this.zoomData || this.rotateData) }\n\n protected interaction: InteractionBase\n protected moveData: IMoveEvent\n protected zoomData: IZoomEvent\n protected rotateData: IRotateEvent\n protected transformTimer: ITimer\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public move(data: IMoveEvent): void {\n const { interaction } = this\n if (!data.moveType) data.moveType = 'move'\n\n if (!this.moveData) {\n this.setPath(data)\n this.moveData = { ...data, moveX: 0, moveY: 0 }\n interaction.emit(MoveEvent.START, this.moveData)\n }\n\n data.path = this.moveData.path\n interaction.emit(MoveEvent.BEFORE_MOVE, data)\n interaction.emit(MoveEvent.MOVE, data)\n\n this.transformEndWait()\n }\n\n public zoom(data: IZoomEvent): void {\n const { interaction } = this\n\n if (!this.zoomData) {\n this.setPath(data)\n this.zoomData = { ...data, scale: 1 }\n interaction.emit(ZoomEvent.START, this.zoomData)\n }\n\n data.path = this.zoomData.path\n interaction.emit(ZoomEvent.BEFORE_ZOOM, data)\n interaction.emit(ZoomEvent.ZOOM, data)\n\n this.transformEndWait()\n }\n\n public rotate(data: IRotateEvent): void {\n const { interaction } = this\n\n if (!this.rotateData) {\n this.setPath(data)\n this.rotateData = { ...data, rotation: 0 }\n interaction.emit(RotateEvent.START, this.rotateData)\n }\n\n data.path = this.rotateData.path\n interaction.emit(RotateEvent.BEFORE_ROTATE, data)\n interaction.emit(RotateEvent.ROTATE, data)\n\n this.transformEndWait()\n }\n\n public setPath(data: any): void {\n const { interaction } = this\n const { path } = interaction.selector.getByPoint(data, interaction.hitRadius)\n data.path = path\n interaction.cancelHover()\n }\n\n protected transformEndWait(): void {\n clearTimeout(this.transformTimer)\n this.transformTimer = setTimeout(() => {\n this.transformEnd()\n }, this.interaction.p.transformTime)\n }\n\n public transformEnd(): void {\n const { interaction, moveData, zoomData, rotateData } = this\n if (moveData) interaction.emit(MoveEvent.END, moveData)\n if (zoomData) interaction.emit(ZoomEvent.END, zoomData)\n if (rotateData) interaction.emit(RotateEvent.END, rotateData)\n this.reset()\n }\n\n public reset(): void {\n this.zoomData = this.moveData = this.rotateData = null\n }\n\n public destroy(): void {\n this.reset()\n }\n}","import { ILeaferType, IPointData } from '@leafer-ui/interface'\n\nimport { Leafer, Bounds } from '@leafer-ui/core'\n\nimport { LeaferTypeCreator } from './LeaferTypeCreator'\n\n\nconst leafer = Leafer.prototype\nconst bounds = new Bounds()\n\nleafer.initType = function (type: ILeaferType) {\n LeaferTypeCreator.run(type, this)\n}\n\nleafer.getValidMove = function (moveX: number, moveY: number): IPointData {\n const { scroll, disabled } = this.app.config.move\n\n if (scroll) {\n const type = scroll === true ? '' : scroll\n\n if (type.includes('x')) moveX = moveX || moveY, moveY = 0\n else if (type.includes('y')) moveY = moveY || moveX, moveX = 0\n else Math.abs(moveX) > Math.abs(moveY) ? moveY = 0 : moveX = 0\n\n if (type.includes('limit')) {\n const { x, y, width, height } = bounds.set(this.__world).addPoint(this.zoomLayer as IPointData)\n const right = x + width - this.width, bottom = y + height - this.height\n\n if (x >= 0 && right <= 0) moveX = 0 // includeX\n else if (moveX > 0) { if (x + moveX > 0) moveX = -x }\n else if (moveX < 0 && right + moveX < 0) moveX = -right\n\n if (y >= 0 && bottom <= 0) moveY = 0 // includeY\n else if (moveY > 0) { if (y + moveY > 0) moveY = -y }\n else if (moveY < 0 && bottom + moveY < 0) moveY = -bottom\n }\n }\n return { x: disabled ? 0 : moveX, y: disabled ? 0 : moveY }\n}\n\nleafer.getValidScale = function (changeScale: number): number {\n const { scaleX } = this.zoomLayer.__, { min, max, disabled } = this.app.config.zoom, absScale = Math.abs(scaleX * changeScale)\n if (min && absScale < min) changeScale = min / scaleX\n else if (max && absScale > max) changeScale = max / scaleX\n return disabled ? 1 : changeScale // fix 不能过滤小数位\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IUIEvent, IKeepTouchData, IPointData, IEvent } from '@leafer-ui/interface'\n\nimport { InteractionBase, PointHelper } from '@leafer-ui/core'\n\nimport { WheelEventHelper } from './WheelEventHelper'\nimport { Transformer } from './Transformer'\nimport { MultiTouchHelper } from './MultiTouchHelper'\n\n\nfunction getMoveEventData(move: IPointData, event: IEvent): IMoveEvent {\n return { ...event, moveX: move.x, moveY: move.y } as IMoveEvent\n}\n\nfunction getRotateEventData(rotation: number, event: IEvent): IRotateEvent {\n return { ...event, rotation } as IRotateEvent\n}\n\nfunction getZoomEventData(scale: number, event: IEvent): IZoomEvent {\n return { ...event, scale, } as IZoomEvent\n}\n\n\nconst interaction = InteractionBase.prototype\n\ninteraction.createTransformer = function (): void {\n this.transformer = new Transformer(this)\n}\n\ninteraction.move = function (data: IMoveEvent): void {\n this.transformer.move(data)\n}\n\ninteraction.zoom = function (data: IZoomEvent): void {\n this.transformer.zoom(data)\n}\n\ninteraction.rotate = function (data: IRotateEvent): void {\n this.transformer.rotate(data)\n}\n\ninteraction.transformEnd = function (): void {\n this.transformer.transformEnd()\n}\n\n\ninteraction.wheel = function (data: IWheelEvent): void {\n const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel\n if (wheel.disabled) return\n\n if (data.deltaX > 0) posDeltaSpeed && (data.deltaX *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaX *= negDeltaSpeed)\n\n if (data.deltaY > 0) posDeltaSpeed && (data.deltaY *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaY *= negDeltaSpeed)\n\n const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel)\n if (scale !== 1) this.zoom(getZoomEventData(scale, data))\n else {\n const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel)\n if (pointer.snap) PointHelper.round(move)\n this.move(getMoveEventData(move, data))\n }\n}\n\n\ninteraction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void {\n if (this.config.multiTouch.disabled) return\n const { move, rotation, scale, center } = MultiTouchHelper.getData(list)\n Object.assign(data, center)\n\n this.pointerWaitCancel()\n\n this.rotate(getRotateEventData(rotation, data))\n this.zoom(getZoomEventData(scale, data))\n this.move(getMoveEventData(move, data))\n}","import { IPointerEvent, IFunction } from '@leafer-ui/interface'\n\nimport { Dragger, BoundsHelper, PointHelper } from '@leafer-ui/core'\n\n\nconst dragger = Dragger.prototype\nconst { abs } = Math\n\ndragger.checkDragEndAnimate = function (data: IPointerEvent, speed?: number): boolean {\n const { moveX, moveY } = this.dragData\n const absMoveX = abs(moveX), absMoveY = abs(moveY), minMove = speed ? 1 : 0.1\n const dragAnimate = this.interaction.m.dragAnimate && this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove)\n\n if (dragAnimate) {\n const inertia = data.pointerType === 'touch' ? 3 : 1, maxMove = 70\n speed = speed ? 0.95 : inertia\n if (absMoveX * speed > maxMove) speed = maxMove / absMoveX\n else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY\n\n data = { ...data }\n PointHelper.move(data, moveX * speed, moveY * speed)\n\n this.drag(data)\n this.animate(() => { this.dragEnd(data, 1) })\n }\n\n return dragAnimate\n}\n\ndragger.animate = function (func?: IFunction, off?: 'off'): void { // dragEnd animation\n const animateWait = func || this.animateWait\n if (animateWait) this.interaction.target.nextRender(animateWait, null, off)\n this.animateWait = func\n}\n\ndragger.checkDragOut = function (data: IPointerEvent): void {\n const { interaction } = this\n this.autoMoveCancel()\n if (this.dragging && !interaction.shrinkCanvasBounds.hitPoint(data)) this.autoMoveOnDragOut(data)\n}\n\ndragger.autoMoveOnDragOut = function (data: IPointerEvent): void {\n const { interaction, downData, canDragOut } = this\n const { autoDistance, dragOut } = interaction.m\n if (!dragOut || !canDragOut || !autoDistance) return\n\n const bounds = interaction.shrinkCanvasBounds\n const { x, y } = bounds\n const right = BoundsHelper.maxX(bounds)\n const bottom = BoundsHelper.maxY(bounds)\n\n const moveX = data.x < x ? autoDistance : (right < data.x ? -autoDistance : 0)\n const moveY = data.y < y ? autoDistance : (bottom < data.y ? -autoDistance : 0)\n let totalX = 0, totalY = 0\n\n this.autoMoveTimer = setInterval(() => {\n totalX += moveX\n totalY += moveY\n\n PointHelper.move(downData, moveX, moveY)\n PointHelper.move(this.dragData, moveX, moveY)\n\n interaction.move({ ...data, moveX, moveY, totalX, totalY, moveType: 'drag' })\n interaction.pointerMoveReal(data)\n }, 10)\n}\n\ndragger.autoMoveCancel = function (): void {\n if (this.autoMoveTimer) {\n clearInterval(this.autoMoveTimer)\n this.autoMoveTimer = 0\n }\n}","export { LeaferTypeCreator } from './LeaferTypeCreator'\nexport { addViewport, addViewportConfig } from './type/viewport'\nexport { MultiTouchHelper } from './interaction/MultiTouchHelper'\nexport { WheelEventHelper } from './interaction/WheelEventHelper'\nexport { Transformer } from './interaction/Transformer'\n\nimport { Plugin } from '@leafer-ui/core'\n\nimport './Leafer'\nimport './interaction/Interaction'\nimport './interaction/Dragger'\n\nPlugin.add('viewport')"],"names":["addViewport","leafer","mergeConfig","custom","addViewportConfig","parentApp","isApp","__eventIds","push","on_","MoveEvent","BEFORE_MOVE","e","zoomLayer","move","getValidMove","moveX","moveY","ZoomEvent","BEFORE_ZOOM","changeScale","getValidScale","scale","scaleOfWorld","viewportConfig","wheel","preventDefault","touch","pointer","preventDefaultMenu","DataHelper","assign","config","userConfig","debug","Debug","get","LeaferTypeCreator","list","register","name","fn","repeat","run","zoom","min","max","holdSpaceKey","holdMiddleKey","scroll","MultiTouchHelper","getData","a","b","lastCenter","PointHelper","getCenter","from","center","to","x","y","lastDistance","getDistance","rotation","getRotation","WheelEventHelper","getMove","event","moveSpeed","deltaX","deltaY","shiftKey","Math","getScale","zoomMode","zoomSpeed","delta","Platform","intWheelDeltaY","abs","ceil","metaKey","ctrlKey","MathHelper","within","Transformer","transforming","this","moveData","zoomData","rotateData","constructor","interaction","data","moveType","setPath","Object","emit","START","path","MOVE","transformEndWait","ZOOM","rotate","RotateEvent","BEFORE_ROTATE","ROTATE","selector","getByPoint","hitRadius","cancelHover","clearTimeout","transformTimer","setTimeout","transformEnd","p","transformTime","END","reset","destroy","Leafer","prototype","bounds","Bounds","getMoveEventData","getZoomEventData","initType","type","disabled","app","includes","width","height","set","__world","addPoint","right","bottom","scaleX","__","absScale","InteractionBase","createTransformer","transformer","posDeltaSpeed","negDeltaSpeed","snap","round","multiTouch","pointerWaitCancel","getRotateEventData","dragger","Dragger","checkDragEndAnimate","speed","dragData","absMoveX","absMoveY","minMove","dragAnimate","m","canAnimate","moving","inertia","pointerType","maxMove","drag","animate","dragEnd","func","off","animateWait","target","nextRender","checkDragOut","autoMoveCancel","dragging","shrinkCanvasBounds","hitPoint","autoMoveOnDragOut","downData","canDragOut","autoDistance","dragOut","BoundsHelper","maxX","maxY","totalX","totalY","autoMoveTimer","setInterval","pointerMoveReal","clearInterval","Plugin","add"],"mappings":"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"}
|
package/dist/viewport.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
this.LeaferIN=this.LeaferIN||{},this.LeaferIN.viewport=function(t,e){"use strict";function o(t,o,
|
|
1
|
+
this.LeaferIN=this.LeaferIN||{},this.LeaferIN.viewport=function(t,e){"use strict";function o(t,o,i){a(t.parentApp?t.parentApp:t,o),t.isApp||i||t.__eventIds.push(t.on_(e.MoveEvent.BEFORE_MOVE,(e=>{t.zoomLayer.move(t.getValidMove(e.moveX,e.moveY))})),t.on_(e.ZoomEvent.BEFORE_ZOOM,(e=>{const{zoomLayer:o}=t,a=t.getValidScale(e.scale);1!==a&&o.scaleOfWorld(e,a)})))}function a(t,o){const a={wheel:{preventDefault:!0},touch:{preventDefault:!0},pointer:{preventDefaultMenu:!0}};o&&e.DataHelper.assign(a,o),e.DataHelper.assign(t.config,a,t.userConfig)}const i=e.Debug.get("LeaferTypeCreator"),n={list:{},register(t,e){s[t]&&i.repeat(t),s[t]=e},run(t,e){const o=s[t];o&&o(e)}},{list:s,register:r}=n;r("viewport",o),r("custom",(function(t){o(t,null,!0)})),r("design",(function(t){o(t,{zoom:{min:.01,max:256},move:{holdSpaceKey:!0,holdMiddleKey:!0}})})),r("document",(function(t){o(t,{zoom:{min:1},move:{scroll:"limit"}})}));const c={getData(t){const o=t[0],a=t[1],i=e.PointHelper.getCenter(o.from,a.from),n=e.PointHelper.getCenter(o.to,a.to),s={x:n.x-i.x,y:n.y-i.y},r=e.PointHelper.getDistance(o.from,a.from);return{move:s,scale:e.PointHelper.getDistance(o.to,a.to)/r,rotation:e.PointHelper.getRotation(o.from,a.from,o.to,a.to),center:n}}},m={getMove(t,e){let{moveSpeed:o}=e,{deltaX:a,deltaY:i}=t;return t.shiftKey&&!a&&(a=i,i=0),a>50&&(a=Math.max(50,a/3)),i>50&&(i=Math.max(50,i/3)),{x:-a*o*2,y:-i*o*2}},getScale(t,o){let a,i=1,{zoomMode:n,zoomSpeed:s}=o;const r=t.deltaY||t.deltaX;if(n?(a="mouse"===n||!t.deltaX&&(e.Platform.intWheelDeltaY?Math.abs(r)>17:Math.ceil(r)!==r),(t.shiftKey||t.metaKey||t.ctrlKey)&&(a=!0)):a=!t.shiftKey&&(t.metaKey||t.ctrlKey),a){s=e.MathHelper.within(s,0,1);i=1-r/(4*(t.deltaY?o.delta.y:o.delta.x))*s,i<.5&&(i=.5),i>=1.5&&(i=1.5)}return i}};class h{get transforming(){return!!(this.moveData||this.zoomData||this.rotateData)}constructor(t){this.interaction=t}move(t){const{interaction:o}=this;t.moveType||(t.moveType="move"),this.moveData||(this.setPath(t),this.moveData=Object.assign(Object.assign({},t),{moveX:0,moveY:0}),o.emit(e.MoveEvent.START,this.moveData)),t.path=this.moveData.path,o.emit(e.MoveEvent.BEFORE_MOVE,t),o.emit(e.MoveEvent.MOVE,t),this.transformEndWait()}zoom(t){const{interaction:o}=this;this.zoomData||(this.setPath(t),this.zoomData=Object.assign(Object.assign({},t),{scale:1}),o.emit(e.ZoomEvent.START,this.zoomData)),t.path=this.zoomData.path,o.emit(e.ZoomEvent.BEFORE_ZOOM,t),o.emit(e.ZoomEvent.ZOOM,t),this.transformEndWait()}rotate(t){const{interaction:o}=this;this.rotateData||(this.setPath(t),this.rotateData=Object.assign(Object.assign({},t),{rotation:0}),o.emit(e.RotateEvent.START,this.rotateData)),t.path=this.rotateData.path,o.emit(e.RotateEvent.BEFORE_ROTATE,t),o.emit(e.RotateEvent.ROTATE,t),this.transformEndWait()}setPath(t){const{interaction:e}=this,{path:o}=e.selector.getByPoint(t,e.hitRadius);t.path=o,e.cancelHover()}transformEndWait(){clearTimeout(this.transformTimer),this.transformTimer=setTimeout((()=>{this.transformEnd()}),this.interaction.p.transformTime)}transformEnd(){const{interaction:t,moveData:o,zoomData:a,rotateData:i}=this;o&&t.emit(e.MoveEvent.END,o),a&&t.emit(e.ZoomEvent.END,a),i&&t.emit(e.RotateEvent.END,i),this.reset()}reset(){this.zoomData=this.moveData=this.rotateData=null}destroy(){this.reset()}}const l=e.Leafer.prototype,u=new e.Bounds;function v(t,e){return Object.assign(Object.assign({},e),{moveX:t.x,moveY:t.y})}function d(t,e){return Object.assign(Object.assign({},e),{scale:t})}l.initType=function(t){n.run(t,this)},l.getValidMove=function(t,e){const{scroll:o,disabled:a}=this.app.config.move;if(o){const a=!0===o?"":o;if(a.includes("x")?(t=t||e,e=0):a.includes("y")?(e=e||t,t=0):Math.abs(t)>Math.abs(e)?e=0:t=0,a.includes("limit")){const{x:o,y:a,width:i,height:n}=u.set(this.__world).addPoint(this.zoomLayer),s=o+i-this.width,r=a+n-this.height;o>=0&&s<=0?t=0:t>0?o+t>0&&(t=-o):t<0&&s+t<0&&(t=-s),a>=0&&r<=0?e=0:e>0?a+e>0&&(e=-a):e<0&&r+e<0&&(e=-r)}}return{x:a?0:t,y:a?0:e}},l.getValidScale=function(t){const{scaleX:e}=this.zoomLayer.__,{min:o,max:a,disabled:i}=this.app.config.zoom,n=Math.abs(e*t);return o&&n<o?t=o/e:a&&n>a&&(t=a/e),i?1:t};const f=e.InteractionBase.prototype;f.createTransformer=function(){this.transformer=new h(this)},f.move=function(t){this.transformer.move(t)},f.zoom=function(t){this.transformer.zoom(t)},f.rotate=function(t){this.transformer.rotate(t)},f.transformEnd=function(){this.transformer.transformEnd()},f.wheel=function(t){const{wheel:o,pointer:a}=this.config,{posDeltaSpeed:i,negDeltaSpeed:n}=o;if(o.disabled)return;t.deltaX>0?i&&(t.deltaX*=i):n&&(t.deltaX*=n),t.deltaY>0?i&&(t.deltaY*=i):n&&(t.deltaY*=n);const s=o.getScale?o.getScale(t,o):m.getScale(t,o);if(1!==s)this.zoom(d(s,t));else{const i=o.getMove?o.getMove(t,o):m.getMove(t,o);a.snap&&e.PointHelper.round(i),this.move(v(i,t))}},f.multiTouch=function(t,e){if(this.config.multiTouch.disabled)return;const{move:o,rotation:a,scale:i,center:n}=c.getData(e);Object.assign(t,n),this.pointerWaitCancel(),this.rotate(function(t,e){return Object.assign(Object.assign({},e),{rotation:t})}(a,t)),this.zoom(d(i,t)),this.move(v(o,t))};const g=e.Dragger.prototype,{abs:p}=Math;return g.checkDragEndAnimate=function(t,o){const{moveX:a,moveY:i}=this.dragData,n=p(a),s=p(i),r=o?1:.1,c=this.interaction.m.dragAnimate&&this.canAnimate&&this.moving&&(n>r||s>r);if(c){const r="touch"===t.pointerType?3:1,c=70;n*(o=o?.95:r)>c?o=c/n:s*o>c&&(o=c/s),t=Object.assign({},t),e.PointHelper.move(t,a*o,i*o),this.drag(t),this.animate((()=>{this.dragEnd(t,1)}))}return c},g.animate=function(t,e){const o=t||this.animateWait;o&&this.interaction.target.nextRender(o,null,e),this.animateWait=t},g.checkDragOut=function(t){const{interaction:e}=this;this.autoMoveCancel(),this.dragging&&!e.shrinkCanvasBounds.hitPoint(t)&&this.autoMoveOnDragOut(t)},g.autoMoveOnDragOut=function(t){const{interaction:o,downData:a,canDragOut:i}=this,{autoDistance:n,dragOut:s}=o.m;if(!s||!i||!n)return;const r=o.shrinkCanvasBounds,{x:c,y:m}=r,h=e.BoundsHelper.maxX(r),l=e.BoundsHelper.maxY(r),u=t.x<c?n:h<t.x?-n:0,v=t.y<m?n:l<t.y?-n:0;let d=0,f=0;this.autoMoveTimer=setInterval((()=>{d+=u,f+=v,e.PointHelper.move(a,u,v),e.PointHelper.move(this.dragData,u,v),o.move(Object.assign(Object.assign({},t),{moveX:u,moveY:v,totalX:d,totalY:f,moveType:"drag"})),o.pointerMoveReal(t)}),10)},g.autoMoveCancel=function(){this.autoMoveTimer&&(clearInterval(this.autoMoveTimer),this.autoMoveTimer=0)},e.Plugin.add("viewport"),t.LeaferTypeCreator=n,t.MultiTouchHelper=c,t.Transformer=h,t.WheelEventHelper=m,t.addViewport=o,t.addViewportConfig=a,t}({},LeaferUI);
|
|
2
2
|
//# sourceMappingURL=viewport.min.js.map
|
package/dist/viewport.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.min.js","sources":["../../../../../../src/in/packages/viewport/src/type/viewport.ts","../../../../../../src/in/packages/viewport/src/LeaferTypeCreator.ts","../../../../../../src/in/packages/viewport/src/type/custom.ts","../../../../../../src/in/packages/viewport/src/type/design.ts","../../../../../../src/in/packages/viewport/src/type/document.ts","../../../../../../src/in/packages/viewport/src/interaction/MultiTouchHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/WheelEventHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/Transformer.ts","../../../../../../src/in/packages/viewport/src/Leafer.ts","../../../../../../src/in/packages/viewport/src/interaction/Interaction.ts","../../../../../../src/in/packages/viewport/src/interaction/Dragger.ts","../../../../../../src/in/packages/viewport/src/index.ts"],"sourcesContent":["import { ILeaferBase, ILeaferConfig } from '@leafer-ui/interface'\n\nimport { MoveEvent, ZoomEvent, DataHelper } from '@leafer-ui/core'\n\n\nexport function addViewport(leafer: ILeaferBase, mergeConfig?: ILeaferConfig, custom?: boolean): void {\n addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig)\n if (leafer.isApp || custom) return\n\n leafer.__eventIds.push(\n leafer.on_(MoveEvent.BEFORE_MOVE, (e: MoveEvent) => {\n leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY))\n }),\n leafer.on_(ZoomEvent.BEFORE_ZOOM, (e: ZoomEvent) => {\n const { zoomLayer } = leafer\n const changeScale = leafer.getValidScale(e.scale)\n if (changeScale !== 1) zoomLayer.scaleOfWorld(e, changeScale)\n })\n )\n}\n\nexport function addViewportConfig(leafer: ILeaferBase, mergeConfig?: ILeaferConfig): void {\n const viewportConfig: ILeaferConfig = {\n wheel: { preventDefault: true },\n touch: { preventDefault: true },\n pointer: { preventDefaultMenu: true }\n }\n if (mergeConfig) DataHelper.assign(viewportConfig, mergeConfig)\n DataHelper.assign(leafer.config, viewportConfig, leafer.userConfig)\n}","import { ILeaferBase, ILeaferTypeList, ILeaferTypeFunction } from '@leafer-ui/interface'\n\nimport { Debug } from '@leafer-ui/core'\n\nimport { addViewport } from './type/viewport'\nimport { custom } from './type/custom'\nimport { design } from './type/design'\nimport { document } from './type/document'\n\n\nconst debug = Debug.get('LeaferTypeCreator')\n\nexport const LeaferTypeCreator = {\n\n list: {} as ILeaferTypeList,\n\n register(name: string, fn: ILeaferTypeFunction): void {\n list[name] && debug.repeat(name)\n list[name] = fn\n },\n\n run(name: string, leafer: ILeaferBase): void {\n const fn = list[name]\n fn && fn(leafer)\n }\n\n}\n\nconst { list, register } = LeaferTypeCreator\n\nregister('viewport', addViewport)\nregister('custom', custom)\nregister('design', design)\nregister('document', document)","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function custom(leafer: ILeaferBase): void {\n addViewport(leafer, null, true)\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function design(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: {\n min: 0.01,\n max: 256\n },\n move: {\n holdSpaceKey: true,\n holdMiddleKey: true,\n }\n })\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function document(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: { min: 1 },\n move: { scroll: 'limit' }\n })\n}\n","import { IMultiTouchData, IKeepTouchData } from '@leafer-ui/interface'\n\nimport { PointHelper } from '@leafer-ui/core'\n\n\nexport const MultiTouchHelper = {\n\n getData(list: IKeepTouchData[]): IMultiTouchData {\n const a = list[0], b = list[1]\n const lastCenter = PointHelper.getCenter(a.from, b.from)\n const center = PointHelper.getCenter(a.to, b.to)\n const move = { x: center.x - lastCenter.x, y: center.y - lastCenter.y }\n\n const lastDistance = PointHelper.getDistance(a.from, b.from)\n const distance = PointHelper.getDistance(a.to, b.to)\n const scale = distance / lastDistance\n\n const rotation = PointHelper.getRotation(a.from, b.from, a.to, b.to)\n\n return { move, scale, rotation, center }\n }\n\n}","import { IPointData, IWheelEvent, IWheelConfig } from '@leafer-ui/interface'\n\nimport { MathHelper, Platform } from '@leafer-ui/core'\n\n\nexport const WheelEventHelper = {\n\n getMove(event: IWheelEvent, config: IWheelConfig): IPointData {\n let { moveSpeed } = config\n let { deltaX, deltaY } = event\n if (event.shiftKey && !deltaX) { // Window\n deltaX = deltaY\n deltaY = 0\n }\n if (deltaX > 50) deltaX = Math.max(50, deltaX / 3)\n if (deltaY > 50) deltaY = Math.max(50, deltaY / 3)\n return { x: -deltaX * moveSpeed * 2, y: -deltaY * moveSpeed * 2 }\n },\n\n getScale(event: IWheelEvent, config: IWheelConfig): number {\n\n let zoom: boolean\n let scale = 1\n let { zoomMode, zoomSpeed } = config\n\n const delta = event.deltaY || event.deltaX\n\n if (zoomMode) {\n // mac 触摸板滚动手势的deltaY是整数, 鼠标滚动/触摸板缩放的deltaY有小数点, firfox鼠标滚动为整数,为18或19的倍数\n // windows 始终是整数\n zoom = (zoomMode === 'mouse') ? true : (!event.deltaX && (Platform.intWheelDeltaY ? Math.abs(delta) > 17 : Math.ceil(delta) !== delta))\n if (event.shiftKey || event.metaKey || event.ctrlKey) zoom = true\n } else {\n zoom = !event.shiftKey && (event.metaKey || event.ctrlKey)\n }\n\n if (zoom) {\n zoomSpeed = MathHelper.within(zoomSpeed, 0, 1)\n const min = event.deltaY ? config.delta.y : config.delta.x\n scale = 1 - delta / (min * 4) * zoomSpeed // zoomSpeed\n if (scale < 0.5) scale = 0.5\n if (scale >= 1.5) scale = 1.5\n }\n\n return scale\n }\n\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, ITimer } from '@leafer-ui/interface'\n\nimport { InteractionBase, MoveEvent, ZoomEvent, RotateEvent } from '@leafer-ui/core'\n\n\nexport class Transformer {\n\n public get transforming(): boolean { return !!(this.moveData || this.zoomData || this.rotateData) }\n\n protected interaction: InteractionBase\n protected moveData: IMoveEvent\n protected zoomData: IZoomEvent\n protected rotateData: IRotateEvent\n protected transformTimer: ITimer\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public move(data: IMoveEvent): void {\n const { interaction } = this\n if (!data.moveType) data.moveType = 'move'\n\n if (!this.moveData) {\n this.setPath(data)\n this.moveData = { ...data, moveX: 0, moveY: 0 }\n interaction.emit(MoveEvent.START, this.moveData)\n }\n\n data.path = this.moveData.path\n interaction.emit(MoveEvent.BEFORE_MOVE, data)\n interaction.emit(MoveEvent.MOVE, data)\n\n this.transformEndWait()\n }\n\n public zoom(data: IZoomEvent): void {\n const { interaction } = this\n\n if (!this.zoomData) {\n this.setPath(data)\n this.zoomData = { ...data, scale: 1 }\n interaction.emit(ZoomEvent.START, this.zoomData)\n }\n\n data.path = this.zoomData.path\n interaction.emit(ZoomEvent.BEFORE_ZOOM, data)\n interaction.emit(ZoomEvent.ZOOM, data)\n\n this.transformEndWait()\n }\n\n public rotate(data: IRotateEvent): void {\n const { interaction } = this\n\n if (!this.rotateData) {\n this.setPath(data)\n this.rotateData = { ...data, rotation: 0 }\n interaction.emit(RotateEvent.START, this.rotateData)\n }\n\n data.path = this.rotateData.path\n interaction.emit(RotateEvent.BEFORE_ROTATE, data)\n interaction.emit(RotateEvent.ROTATE, data)\n\n this.transformEndWait()\n }\n\n public setPath(data: any): void {\n const { interaction } = this\n const { path } = interaction.selector.getByPoint(data, interaction.hitRadius)\n data.path = path\n interaction.cancelHover()\n }\n\n protected transformEndWait(): void {\n clearTimeout(this.transformTimer)\n this.transformTimer = setTimeout(() => {\n this.transformEnd()\n }, this.interaction.p.transformTime)\n }\n\n public transformEnd(): void {\n const { interaction, moveData, zoomData, rotateData } = this\n if (moveData) interaction.emit(MoveEvent.END, moveData)\n if (zoomData) interaction.emit(ZoomEvent.END, zoomData)\n if (rotateData) interaction.emit(RotateEvent.END, rotateData)\n this.reset()\n }\n\n public reset(): void {\n this.zoomData = this.moveData = this.rotateData = null\n }\n\n public destroy(): void {\n this.reset()\n }\n}","import { ILeaferType, IPointData } from '@leafer-ui/interface'\n\nimport { Leafer, Bounds } from '@leafer-ui/core'\n\nimport { LeaferTypeCreator } from './LeaferTypeCreator'\n\n\nconst leafer = Leafer.prototype\nconst bounds = new Bounds()\n\nleafer.initType = function (type: ILeaferType) {\n LeaferTypeCreator.run(type, this)\n}\n\nleafer.getValidMove = function (moveX: number, moveY: number): IPointData {\n const { scroll, disabled } = this.app.config.move\n\n if (scroll) {\n const type = scroll === true ? '' : scroll\n\n if (type.includes('x')) moveX = moveX || moveY, moveY = 0\n else if (type.includes('y')) moveY = moveY || moveX, moveX = 0\n else Math.abs(moveX) > Math.abs(moveY) ? moveY = 0 : moveX = 0\n\n if (type.includes('limit')) {\n const { x, y, width, height } = bounds.set(this.__world).addPoint(this.zoomLayer as IPointData)\n const right = x + width - this.width, bottom = y + height - this.height\n\n if (x >= 0 && right <= 0) moveX = 0 // includeX\n else if (moveX > 0) { if (x + moveX > 0) moveX = -x }\n else if (moveX < 0 && right + moveX < 0) moveX = -right\n\n if (y >= 0 && bottom <= 0) moveY = 0 // includeY\n else if (moveY > 0) { if (y + moveY > 0) moveY = -y }\n else if (moveY < 0 && bottom + moveY < 0) moveY = -bottom\n }\n }\n return { x: disabled ? 0 : moveX, y: disabled ? 0 : moveY }\n}\n\nleafer.getValidScale = function (changeScale: number): number {\n const { scaleX } = this.zoomLayer.__, { min, max, disabled } = this.app.config.zoom, absScale = Math.abs(scaleX * changeScale)\n if (min && absScale < min) changeScale = min / scaleX\n else if (max && absScale > max) changeScale = max / scaleX\n return disabled ? 1 : changeScale // fix 不能过滤小数位\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IUIEvent, IKeepTouchData, IPointData, IEvent } from '@leafer-ui/interface'\n\nimport { InteractionBase, PointHelper } from '@leafer-ui/core'\n\nimport { WheelEventHelper } from './WheelEventHelper'\nimport { Transformer } from './Transformer'\nimport { MultiTouchHelper } from './MultiTouchHelper'\n\n\nfunction getMoveEventData(move: IPointData, event: IEvent): IMoveEvent {\n return { ...event, moveX: move.x, moveY: move.y } as IMoveEvent\n}\n\nfunction getRotateEventData(rotation: number, event: IEvent): IRotateEvent {\n return { ...event, rotation } as IRotateEvent\n}\n\nfunction getZoomEventData(scale: number, event: IEvent): IZoomEvent {\n return { ...event, scale, } as IZoomEvent\n}\n\n\nconst interaction = InteractionBase.prototype\n\ninteraction.createTransformer = function (): void {\n this.transformer = new Transformer(this)\n}\n\ninteraction.move = function (data: IMoveEvent): void {\n this.transformer.move(data)\n}\n\ninteraction.zoom = function (data: IZoomEvent): void {\n this.transformer.zoom(data)\n}\n\ninteraction.rotate = function (data: IRotateEvent): void {\n this.transformer.rotate(data)\n}\n\ninteraction.transformEnd = function (): void {\n this.transformer.transformEnd()\n}\n\n\ninteraction.wheel = function (data: IWheelEvent): void {\n const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel\n if (wheel.disabled) return\n\n if (data.deltaX > 0) posDeltaSpeed && (data.deltaX *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaX *= negDeltaSpeed)\n\n if (data.deltaY > 0) posDeltaSpeed && (data.deltaY *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaY *= negDeltaSpeed)\n\n const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel)\n if (scale !== 1) this.zoom(getZoomEventData(scale, data))\n else {\n const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel)\n if (pointer.snap) PointHelper.round(move)\n this.move(getMoveEventData(move, data))\n }\n}\n\n\ninteraction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void {\n if (this.config.multiTouch.disabled) return\n const { move, rotation, scale, center } = MultiTouchHelper.getData(list)\n Object.assign(data, center)\n\n this.rotate(getRotateEventData(rotation, data))\n this.zoom(getZoomEventData(scale, data))\n this.move(getMoveEventData(move, data))\n}","import { IPointerEvent, IFunction } from '@leafer-ui/interface'\n\nimport { Dragger, BoundsHelper, PointHelper } from '@leafer-ui/core'\n\n\nconst dragger = Dragger.prototype\nconst { abs } = Math\n\ndragger.checkDragEndAnimate = function (data: IPointerEvent, speed?: number): boolean {\n const { moveX, moveY } = this.dragData\n const absMoveX = abs(moveX), absMoveY = abs(moveY), minMove = speed ? 1 : 0.1\n const dragAnimate = this.interaction.m.dragAnimate && this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove)\n\n if (dragAnimate) {\n const inertia = data.pointerType === 'touch' ? 3 : 1, maxMove = 70\n speed = speed ? 0.95 : inertia\n if (absMoveX * speed > maxMove) speed = maxMove / absMoveX\n else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY\n\n data = { ...data }\n PointHelper.move(data, moveX * speed, moveY * speed)\n\n this.drag(data)\n this.animate(() => { this.dragEnd(data, 1) })\n }\n\n return dragAnimate\n}\n\ndragger.animate = function (func?: IFunction, off?: 'off'): void { // dragEnd animation\n const animateWait = func || this.animateWait\n if (animateWait) this.interaction.target.nextRender(animateWait, null, off)\n this.animateWait = func\n}\n\ndragger.checkDragOut = function (data: IPointerEvent): void {\n const { interaction } = this\n this.autoMoveCancel()\n if (this.dragging && !interaction.shrinkCanvasBounds.hitPoint(data)) this.autoMoveOnDragOut(data)\n}\n\ndragger.autoMoveOnDragOut = function (data: IPointerEvent): void {\n const { interaction, downData, canDragOut } = this\n const { autoDistance, dragOut } = interaction.m\n if (!dragOut || !canDragOut || !autoDistance) return\n\n const bounds = interaction.shrinkCanvasBounds\n const { x, y } = bounds\n const right = BoundsHelper.maxX(bounds)\n const bottom = BoundsHelper.maxY(bounds)\n\n const moveX = data.x < x ? autoDistance : (right < data.x ? -autoDistance : 0)\n const moveY = data.y < y ? autoDistance : (bottom < data.y ? -autoDistance : 0)\n let totalX = 0, totalY = 0\n\n this.autoMoveTimer = setInterval(() => {\n totalX += moveX\n totalY += moveY\n\n PointHelper.move(downData, moveX, moveY)\n PointHelper.move(this.dragData, moveX, moveY)\n\n interaction.move({ ...data, moveX, moveY, totalX, totalY, moveType: 'drag' })\n interaction.pointerMoveReal(data)\n }, 10)\n}\n\ndragger.autoMoveCancel = function (): void {\n if (this.autoMoveTimer) {\n clearInterval(this.autoMoveTimer)\n this.autoMoveTimer = 0\n }\n}","export { LeaferTypeCreator } from './LeaferTypeCreator'\nexport { addViewport, addViewportConfig } from './type/viewport'\nexport { MultiTouchHelper } from './interaction/MultiTouchHelper'\nexport { WheelEventHelper } from './interaction/WheelEventHelper'\nexport { Transformer } from './interaction/Transformer'\n\nimport { Plugin } from '@leafer-ui/core'\n\nimport './Leafer'\nimport './interaction/Interaction'\nimport './interaction/Dragger'\n\nPlugin.add('viewport')"],"names":["addViewport","leafer","mergeConfig","custom","addViewportConfig","parentApp","isApp","__eventIds","push","on_","MoveEvent","BEFORE_MOVE","e","zoomLayer","move","getValidMove","moveX","moveY","ZoomEvent","BEFORE_ZOOM","changeScale","getValidScale","scale","scaleOfWorld","viewportConfig","wheel","preventDefault","touch","pointer","preventDefaultMenu","DataHelper","assign","config","userConfig","debug","Debug","get","LeaferTypeCreator","list","register","name","fn","repeat","run","zoom","min","max","holdSpaceKey","holdMiddleKey","scroll","MultiTouchHelper","getData","a","b","lastCenter","PointHelper","getCenter","from","center","to","x","y","lastDistance","getDistance","rotation","getRotation","WheelEventHelper","getMove","event","moveSpeed","deltaX","deltaY","shiftKey","Math","getScale","zoomMode","zoomSpeed","delta","Platform","intWheelDeltaY","abs","ceil","metaKey","ctrlKey","MathHelper","within","Transformer","transforming","this","moveData","zoomData","rotateData","constructor","interaction","data","moveType","setPath","Object","emit","START","path","MOVE","transformEndWait","ZOOM","rotate","RotateEvent","BEFORE_ROTATE","ROTATE","selector","getByPoint","hitRadius","cancelHover","clearTimeout","transformTimer","setTimeout","transformEnd","p","transformTime","END","reset","destroy","Leafer","prototype","bounds","Bounds","getMoveEventData","getZoomEventData","initType","type","disabled","app","includes","width","height","set","__world","addPoint","right","bottom","scaleX","__","absScale","InteractionBase","createTransformer","transformer","posDeltaSpeed","negDeltaSpeed","snap","round","multiTouch","getRotateEventData","dragger","Dragger","checkDragEndAnimate","speed","dragData","absMoveX","absMoveY","minMove","dragAnimate","m","canAnimate","moving","inertia","pointerType","maxMove","drag","animate","dragEnd","func","off","animateWait","target","nextRender","checkDragOut","autoMoveCancel","dragging","shrinkCanvasBounds","hitPoint","autoMoveOnDragOut","downData","canDragOut","autoDistance","dragOut","BoundsHelper","maxX","maxY","totalX","totalY","autoMoveTimer","setInterval","pointerMoveReal","clearInterval","Plugin","add"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viewport.min.js","sources":["../../../../../../src/in/packages/viewport/src/type/viewport.ts","../../../../../../src/in/packages/viewport/src/LeaferTypeCreator.ts","../../../../../../src/in/packages/viewport/src/type/custom.ts","../../../../../../src/in/packages/viewport/src/type/design.ts","../../../../../../src/in/packages/viewport/src/type/document.ts","../../../../../../src/in/packages/viewport/src/interaction/MultiTouchHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/WheelEventHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/Transformer.ts","../../../../../../src/in/packages/viewport/src/Leafer.ts","../../../../../../src/in/packages/viewport/src/interaction/Interaction.ts","../../../../../../src/in/packages/viewport/src/interaction/Dragger.ts","../../../../../../src/in/packages/viewport/src/index.ts"],"sourcesContent":["import { ILeaferBase, ILeaferConfig } from '@leafer-ui/interface'\n\nimport { MoveEvent, ZoomEvent, DataHelper } from '@leafer-ui/core'\n\n\nexport function addViewport(leafer: ILeaferBase, mergeConfig?: ILeaferConfig, custom?: boolean): void {\n addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig)\n if (leafer.isApp || custom) return\n\n leafer.__eventIds.push(\n leafer.on_(MoveEvent.BEFORE_MOVE, (e: MoveEvent) => {\n leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY))\n }),\n leafer.on_(ZoomEvent.BEFORE_ZOOM, (e: ZoomEvent) => {\n const { zoomLayer } = leafer\n const changeScale = leafer.getValidScale(e.scale)\n if (changeScale !== 1) zoomLayer.scaleOfWorld(e, changeScale)\n })\n )\n}\n\nexport function addViewportConfig(leafer: ILeaferBase, mergeConfig?: ILeaferConfig): void {\n const viewportConfig: ILeaferConfig = {\n wheel: { preventDefault: true },\n touch: { preventDefault: true },\n pointer: { preventDefaultMenu: true }\n }\n if (mergeConfig) DataHelper.assign(viewportConfig, mergeConfig)\n DataHelper.assign(leafer.config, viewportConfig, leafer.userConfig)\n}","import { ILeaferBase, ILeaferTypeList, ILeaferTypeFunction } from '@leafer-ui/interface'\n\nimport { Debug } from '@leafer-ui/core'\n\nimport { addViewport } from './type/viewport'\nimport { custom } from './type/custom'\nimport { design } from './type/design'\nimport { document } from './type/document'\n\n\nconst debug = Debug.get('LeaferTypeCreator')\n\nexport const LeaferTypeCreator = {\n\n list: {} as ILeaferTypeList,\n\n register(name: string, fn: ILeaferTypeFunction): void {\n list[name] && debug.repeat(name)\n list[name] = fn\n },\n\n run(name: string, leafer: ILeaferBase): void {\n const fn = list[name]\n fn && fn(leafer)\n }\n\n}\n\nconst { list, register } = LeaferTypeCreator\n\nregister('viewport', addViewport)\nregister('custom', custom)\nregister('design', design)\nregister('document', document)","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function custom(leafer: ILeaferBase): void {\n addViewport(leafer, null, true)\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function design(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: {\n min: 0.01,\n max: 256\n },\n move: {\n holdSpaceKey: true,\n holdMiddleKey: true,\n }\n })\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function document(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: { min: 1 },\n move: { scroll: 'limit' }\n })\n}\n","import { IMultiTouchData, IKeepTouchData } from '@leafer-ui/interface'\n\nimport { PointHelper } from '@leafer-ui/core'\n\n\nexport const MultiTouchHelper = {\n\n getData(list: IKeepTouchData[]): IMultiTouchData {\n const a = list[0], b = list[1]\n const lastCenter = PointHelper.getCenter(a.from, b.from)\n const center = PointHelper.getCenter(a.to, b.to)\n const move = { x: center.x - lastCenter.x, y: center.y - lastCenter.y }\n\n const lastDistance = PointHelper.getDistance(a.from, b.from)\n const distance = PointHelper.getDistance(a.to, b.to)\n const scale = distance / lastDistance\n\n const rotation = PointHelper.getRotation(a.from, b.from, a.to, b.to)\n\n return { move, scale, rotation, center }\n }\n\n}","import { IPointData, IWheelEvent, IWheelConfig } from '@leafer-ui/interface'\n\nimport { MathHelper, Platform } from '@leafer-ui/core'\n\n\nexport const WheelEventHelper = {\n\n getMove(event: IWheelEvent, config: IWheelConfig): IPointData {\n let { moveSpeed } = config\n let { deltaX, deltaY } = event\n if (event.shiftKey && !deltaX) { // Window\n deltaX = deltaY\n deltaY = 0\n }\n if (deltaX > 50) deltaX = Math.max(50, deltaX / 3)\n if (deltaY > 50) deltaY = Math.max(50, deltaY / 3)\n return { x: -deltaX * moveSpeed * 2, y: -deltaY * moveSpeed * 2 }\n },\n\n getScale(event: IWheelEvent, config: IWheelConfig): number {\n\n let zoom: boolean\n let scale = 1\n let { zoomMode, zoomSpeed } = config\n\n const delta = event.deltaY || event.deltaX\n\n if (zoomMode) {\n // mac 触摸板滚动手势的deltaY是整数, 鼠标滚动/触摸板缩放的deltaY有小数点, firfox鼠标滚动为整数,为18或19的倍数\n // windows 始终是整数\n zoom = (zoomMode === 'mouse') ? true : (!event.deltaX && (Platform.intWheelDeltaY ? Math.abs(delta) > 17 : Math.ceil(delta) !== delta))\n if (event.shiftKey || event.metaKey || event.ctrlKey) zoom = true\n } else {\n zoom = !event.shiftKey && (event.metaKey || event.ctrlKey)\n }\n\n if (zoom) {\n zoomSpeed = MathHelper.within(zoomSpeed, 0, 1)\n const min = event.deltaY ? config.delta.y : config.delta.x\n scale = 1 - delta / (min * 4) * zoomSpeed // zoomSpeed\n if (scale < 0.5) scale = 0.5\n if (scale >= 1.5) scale = 1.5\n }\n\n return scale\n }\n\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, ITimer } from '@leafer-ui/interface'\n\nimport { InteractionBase, MoveEvent, ZoomEvent, RotateEvent } from '@leafer-ui/core'\n\n\nexport class Transformer {\n\n public get transforming(): boolean { return !!(this.moveData || this.zoomData || this.rotateData) }\n\n protected interaction: InteractionBase\n protected moveData: IMoveEvent\n protected zoomData: IZoomEvent\n protected rotateData: IRotateEvent\n protected transformTimer: ITimer\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public move(data: IMoveEvent): void {\n const { interaction } = this\n if (!data.moveType) data.moveType = 'move'\n\n if (!this.moveData) {\n this.setPath(data)\n this.moveData = { ...data, moveX: 0, moveY: 0 }\n interaction.emit(MoveEvent.START, this.moveData)\n }\n\n data.path = this.moveData.path\n interaction.emit(MoveEvent.BEFORE_MOVE, data)\n interaction.emit(MoveEvent.MOVE, data)\n\n this.transformEndWait()\n }\n\n public zoom(data: IZoomEvent): void {\n const { interaction } = this\n\n if (!this.zoomData) {\n this.setPath(data)\n this.zoomData = { ...data, scale: 1 }\n interaction.emit(ZoomEvent.START, this.zoomData)\n }\n\n data.path = this.zoomData.path\n interaction.emit(ZoomEvent.BEFORE_ZOOM, data)\n interaction.emit(ZoomEvent.ZOOM, data)\n\n this.transformEndWait()\n }\n\n public rotate(data: IRotateEvent): void {\n const { interaction } = this\n\n if (!this.rotateData) {\n this.setPath(data)\n this.rotateData = { ...data, rotation: 0 }\n interaction.emit(RotateEvent.START, this.rotateData)\n }\n\n data.path = this.rotateData.path\n interaction.emit(RotateEvent.BEFORE_ROTATE, data)\n interaction.emit(RotateEvent.ROTATE, data)\n\n this.transformEndWait()\n }\n\n public setPath(data: any): void {\n const { interaction } = this\n const { path } = interaction.selector.getByPoint(data, interaction.hitRadius)\n data.path = path\n interaction.cancelHover()\n }\n\n protected transformEndWait(): void {\n clearTimeout(this.transformTimer)\n this.transformTimer = setTimeout(() => {\n this.transformEnd()\n }, this.interaction.p.transformTime)\n }\n\n public transformEnd(): void {\n const { interaction, moveData, zoomData, rotateData } = this\n if (moveData) interaction.emit(MoveEvent.END, moveData)\n if (zoomData) interaction.emit(ZoomEvent.END, zoomData)\n if (rotateData) interaction.emit(RotateEvent.END, rotateData)\n this.reset()\n }\n\n public reset(): void {\n this.zoomData = this.moveData = this.rotateData = null\n }\n\n public destroy(): void {\n this.reset()\n }\n}","import { ILeaferType, IPointData } from '@leafer-ui/interface'\n\nimport { Leafer, Bounds } from '@leafer-ui/core'\n\nimport { LeaferTypeCreator } from './LeaferTypeCreator'\n\n\nconst leafer = Leafer.prototype\nconst bounds = new Bounds()\n\nleafer.initType = function (type: ILeaferType) {\n LeaferTypeCreator.run(type, this)\n}\n\nleafer.getValidMove = function (moveX: number, moveY: number): IPointData {\n const { scroll, disabled } = this.app.config.move\n\n if (scroll) {\n const type = scroll === true ? '' : scroll\n\n if (type.includes('x')) moveX = moveX || moveY, moveY = 0\n else if (type.includes('y')) moveY = moveY || moveX, moveX = 0\n else Math.abs(moveX) > Math.abs(moveY) ? moveY = 0 : moveX = 0\n\n if (type.includes('limit')) {\n const { x, y, width, height } = bounds.set(this.__world).addPoint(this.zoomLayer as IPointData)\n const right = x + width - this.width, bottom = y + height - this.height\n\n if (x >= 0 && right <= 0) moveX = 0 // includeX\n else if (moveX > 0) { if (x + moveX > 0) moveX = -x }\n else if (moveX < 0 && right + moveX < 0) moveX = -right\n\n if (y >= 0 && bottom <= 0) moveY = 0 // includeY\n else if (moveY > 0) { if (y + moveY > 0) moveY = -y }\n else if (moveY < 0 && bottom + moveY < 0) moveY = -bottom\n }\n }\n return { x: disabled ? 0 : moveX, y: disabled ? 0 : moveY }\n}\n\nleafer.getValidScale = function (changeScale: number): number {\n const { scaleX } = this.zoomLayer.__, { min, max, disabled } = this.app.config.zoom, absScale = Math.abs(scaleX * changeScale)\n if (min && absScale < min) changeScale = min / scaleX\n else if (max && absScale > max) changeScale = max / scaleX\n return disabled ? 1 : changeScale // fix 不能过滤小数位\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IUIEvent, IKeepTouchData, IPointData, IEvent } from '@leafer-ui/interface'\n\nimport { InteractionBase, PointHelper } from '@leafer-ui/core'\n\nimport { WheelEventHelper } from './WheelEventHelper'\nimport { Transformer } from './Transformer'\nimport { MultiTouchHelper } from './MultiTouchHelper'\n\n\nfunction getMoveEventData(move: IPointData, event: IEvent): IMoveEvent {\n return { ...event, moveX: move.x, moveY: move.y } as IMoveEvent\n}\n\nfunction getRotateEventData(rotation: number, event: IEvent): IRotateEvent {\n return { ...event, rotation } as IRotateEvent\n}\n\nfunction getZoomEventData(scale: number, event: IEvent): IZoomEvent {\n return { ...event, scale, } as IZoomEvent\n}\n\n\nconst interaction = InteractionBase.prototype\n\ninteraction.createTransformer = function (): void {\n this.transformer = new Transformer(this)\n}\n\ninteraction.move = function (data: IMoveEvent): void {\n this.transformer.move(data)\n}\n\ninteraction.zoom = function (data: IZoomEvent): void {\n this.transformer.zoom(data)\n}\n\ninteraction.rotate = function (data: IRotateEvent): void {\n this.transformer.rotate(data)\n}\n\ninteraction.transformEnd = function (): void {\n this.transformer.transformEnd()\n}\n\n\ninteraction.wheel = function (data: IWheelEvent): void {\n const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel\n if (wheel.disabled) return\n\n if (data.deltaX > 0) posDeltaSpeed && (data.deltaX *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaX *= negDeltaSpeed)\n\n if (data.deltaY > 0) posDeltaSpeed && (data.deltaY *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaY *= negDeltaSpeed)\n\n const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel)\n if (scale !== 1) this.zoom(getZoomEventData(scale, data))\n else {\n const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel)\n if (pointer.snap) PointHelper.round(move)\n this.move(getMoveEventData(move, data))\n }\n}\n\n\ninteraction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void {\n if (this.config.multiTouch.disabled) return\n const { move, rotation, scale, center } = MultiTouchHelper.getData(list)\n Object.assign(data, center)\n\n this.pointerWaitCancel()\n\n this.rotate(getRotateEventData(rotation, data))\n this.zoom(getZoomEventData(scale, data))\n this.move(getMoveEventData(move, data))\n}","import { IPointerEvent, IFunction } from '@leafer-ui/interface'\n\nimport { Dragger, BoundsHelper, PointHelper } from '@leafer-ui/core'\n\n\nconst dragger = Dragger.prototype\nconst { abs } = Math\n\ndragger.checkDragEndAnimate = function (data: IPointerEvent, speed?: number): boolean {\n const { moveX, moveY } = this.dragData\n const absMoveX = abs(moveX), absMoveY = abs(moveY), minMove = speed ? 1 : 0.1\n const dragAnimate = this.interaction.m.dragAnimate && this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove)\n\n if (dragAnimate) {\n const inertia = data.pointerType === 'touch' ? 3 : 1, maxMove = 70\n speed = speed ? 0.95 : inertia\n if (absMoveX * speed > maxMove) speed = maxMove / absMoveX\n else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY\n\n data = { ...data }\n PointHelper.move(data, moveX * speed, moveY * speed)\n\n this.drag(data)\n this.animate(() => { this.dragEnd(data, 1) })\n }\n\n return dragAnimate\n}\n\ndragger.animate = function (func?: IFunction, off?: 'off'): void { // dragEnd animation\n const animateWait = func || this.animateWait\n if (animateWait) this.interaction.target.nextRender(animateWait, null, off)\n this.animateWait = func\n}\n\ndragger.checkDragOut = function (data: IPointerEvent): void {\n const { interaction } = this\n this.autoMoveCancel()\n if (this.dragging && !interaction.shrinkCanvasBounds.hitPoint(data)) this.autoMoveOnDragOut(data)\n}\n\ndragger.autoMoveOnDragOut = function (data: IPointerEvent): void {\n const { interaction, downData, canDragOut } = this\n const { autoDistance, dragOut } = interaction.m\n if (!dragOut || !canDragOut || !autoDistance) return\n\n const bounds = interaction.shrinkCanvasBounds\n const { x, y } = bounds\n const right = BoundsHelper.maxX(bounds)\n const bottom = BoundsHelper.maxY(bounds)\n\n const moveX = data.x < x ? autoDistance : (right < data.x ? -autoDistance : 0)\n const moveY = data.y < y ? autoDistance : (bottom < data.y ? -autoDistance : 0)\n let totalX = 0, totalY = 0\n\n this.autoMoveTimer = setInterval(() => {\n totalX += moveX\n totalY += moveY\n\n PointHelper.move(downData, moveX, moveY)\n PointHelper.move(this.dragData, moveX, moveY)\n\n interaction.move({ ...data, moveX, moveY, totalX, totalY, moveType: 'drag' })\n interaction.pointerMoveReal(data)\n }, 10)\n}\n\ndragger.autoMoveCancel = function (): void {\n if (this.autoMoveTimer) {\n clearInterval(this.autoMoveTimer)\n this.autoMoveTimer = 0\n }\n}","export { LeaferTypeCreator } from './LeaferTypeCreator'\nexport { addViewport, addViewportConfig } from './type/viewport'\nexport { MultiTouchHelper } from './interaction/MultiTouchHelper'\nexport { WheelEventHelper } from './interaction/WheelEventHelper'\nexport { Transformer } from './interaction/Transformer'\n\nimport { Plugin } from '@leafer-ui/core'\n\nimport './Leafer'\nimport './interaction/Interaction'\nimport './interaction/Dragger'\n\nPlugin.add('viewport')"],"names":["addViewport","leafer","mergeConfig","custom","addViewportConfig","parentApp","isApp","__eventIds","push","on_","MoveEvent","BEFORE_MOVE","e","zoomLayer","move","getValidMove","moveX","moveY","ZoomEvent","BEFORE_ZOOM","changeScale","getValidScale","scale","scaleOfWorld","viewportConfig","wheel","preventDefault","touch","pointer","preventDefaultMenu","DataHelper","assign","config","userConfig","debug","Debug","get","LeaferTypeCreator","list","register","name","fn","repeat","run","zoom","min","max","holdSpaceKey","holdMiddleKey","scroll","MultiTouchHelper","getData","a","b","lastCenter","PointHelper","getCenter","from","center","to","x","y","lastDistance","getDistance","rotation","getRotation","WheelEventHelper","getMove","event","moveSpeed","deltaX","deltaY","shiftKey","Math","getScale","zoomMode","zoomSpeed","delta","Platform","intWheelDeltaY","abs","ceil","metaKey","ctrlKey","MathHelper","within","Transformer","transforming","this","moveData","zoomData","rotateData","constructor","interaction","data","moveType","setPath","Object","emit","START","path","MOVE","transformEndWait","ZOOM","rotate","RotateEvent","BEFORE_ROTATE","ROTATE","selector","getByPoint","hitRadius","cancelHover","clearTimeout","transformTimer","setTimeout","transformEnd","p","transformTime","END","reset","destroy","Leafer","prototype","bounds","Bounds","getMoveEventData","getZoomEventData","initType","type","disabled","app","includes","width","height","set","__world","addPoint","right","bottom","scaleX","__","absScale","InteractionBase","createTransformer","transformer","posDeltaSpeed","negDeltaSpeed","snap","round","multiTouch","pointerWaitCancel","getRotateEventData","dragger","Dragger","checkDragEndAnimate","speed","dragData","absMoveX","absMoveY","minMove","dragAnimate","m","canAnimate","moving","inertia","pointerType","maxMove","drag","animate","dragEnd","func","off","animateWait","target","nextRender","checkDragOut","autoMoveCancel","dragging","shrinkCanvasBounds","hitPoint","autoMoveOnDragOut","downData","canDragOut","autoDistance","dragOut","BoundsHelper","maxX","maxY","totalX","totalY","autoMoveTimer","setInterval","pointerMoveReal","clearInterval","Plugin","add"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leafer-in/viewport",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"description": "@leafer-in/viewport",
|
|
5
5
|
"author": "Chao (Leafer) Wan",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"leaferjs"
|
|
35
35
|
],
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@leafer-ui/core": "^1.6.
|
|
38
|
-
"@leafer-ui/interface": "^1.6.
|
|
39
|
-
"@leafer-in/interface": "^1.6.
|
|
37
|
+
"@leafer-ui/core": "^1.6.2",
|
|
38
|
+
"@leafer-ui/interface": "^1.6.2",
|
|
39
|
+
"@leafer-in/interface": "^1.6.2"
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -68,6 +68,8 @@ interaction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void
|
|
|
68
68
|
const { move, rotation, scale, center } = MultiTouchHelper.getData(list)
|
|
69
69
|
Object.assign(data, center)
|
|
70
70
|
|
|
71
|
+
this.pointerWaitCancel()
|
|
72
|
+
|
|
71
73
|
this.rotate(getRotateEventData(rotation, data))
|
|
72
74
|
this.zoom(getZoomEventData(scale, data))
|
|
73
75
|
this.move(getMoveEventData(move, data))
|
package/dist/viewport.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.cjs","sources":["../../../../../../src/in/packages/viewport/src/type/viewport.ts","../../../../../../src/in/packages/viewport/src/type/custom.ts","../../../../../../src/in/packages/viewport/src/type/design.ts","../../../../../../src/in/packages/viewport/src/type/document.ts","../../../../../../src/in/packages/viewport/src/LeaferTypeCreator.ts","../../../../../../src/in/packages/viewport/src/interaction/MultiTouchHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/WheelEventHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/Transformer.ts","../../../../../../src/in/packages/viewport/src/Leafer.ts","../../../../../../src/in/packages/viewport/src/interaction/Interaction.ts","../../../../../../src/in/packages/viewport/src/interaction/Dragger.ts","../../../../../../src/in/packages/viewport/src/index.ts"],"sourcesContent":["import { ILeaferBase, ILeaferConfig } from '@leafer-ui/interface'\n\nimport { MoveEvent, ZoomEvent, DataHelper } from '@leafer-ui/core'\n\n\nexport function addViewport(leafer: ILeaferBase, mergeConfig?: ILeaferConfig, custom?: boolean): void {\n addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig)\n if (leafer.isApp || custom) return\n\n leafer.__eventIds.push(\n leafer.on_(MoveEvent.BEFORE_MOVE, (e: MoveEvent) => {\n leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY))\n }),\n leafer.on_(ZoomEvent.BEFORE_ZOOM, (e: ZoomEvent) => {\n const { zoomLayer } = leafer\n const changeScale = leafer.getValidScale(e.scale)\n if (changeScale !== 1) zoomLayer.scaleOfWorld(e, changeScale)\n })\n )\n}\n\nexport function addViewportConfig(leafer: ILeaferBase, mergeConfig?: ILeaferConfig): void {\n const viewportConfig: ILeaferConfig = {\n wheel: { preventDefault: true },\n touch: { preventDefault: true },\n pointer: { preventDefaultMenu: true }\n }\n if (mergeConfig) DataHelper.assign(viewportConfig, mergeConfig)\n DataHelper.assign(leafer.config, viewportConfig, leafer.userConfig)\n}","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function custom(leafer: ILeaferBase): void {\n addViewport(leafer, null, true)\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function design(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: {\n min: 0.01,\n max: 256\n },\n move: {\n holdSpaceKey: true,\n holdMiddleKey: true,\n }\n })\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function document(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: { min: 1 },\n move: { scroll: 'limit' }\n })\n}\n","import { ILeaferBase, ILeaferTypeList, ILeaferTypeFunction } from '@leafer-ui/interface'\n\nimport { Debug } from '@leafer-ui/core'\n\nimport { addViewport } from './type/viewport'\nimport { custom } from './type/custom'\nimport { design } from './type/design'\nimport { document } from './type/document'\n\n\nconst debug = Debug.get('LeaferTypeCreator')\n\nexport const LeaferTypeCreator = {\n\n list: {} as ILeaferTypeList,\n\n register(name: string, fn: ILeaferTypeFunction): void {\n list[name] && debug.repeat(name)\n list[name] = fn\n },\n\n run(name: string, leafer: ILeaferBase): void {\n const fn = list[name]\n fn && fn(leafer)\n }\n\n}\n\nconst { list, register } = LeaferTypeCreator\n\nregister('viewport', addViewport)\nregister('custom', custom)\nregister('design', design)\nregister('document', document)","import { IMultiTouchData, IKeepTouchData } from '@leafer-ui/interface'\n\nimport { PointHelper } from '@leafer-ui/core'\n\n\nexport const MultiTouchHelper = {\n\n getData(list: IKeepTouchData[]): IMultiTouchData {\n const a = list[0], b = list[1]\n const lastCenter = PointHelper.getCenter(a.from, b.from)\n const center = PointHelper.getCenter(a.to, b.to)\n const move = { x: center.x - lastCenter.x, y: center.y - lastCenter.y }\n\n const lastDistance = PointHelper.getDistance(a.from, b.from)\n const distance = PointHelper.getDistance(a.to, b.to)\n const scale = distance / lastDistance\n\n const rotation = PointHelper.getRotation(a.from, b.from, a.to, b.to)\n\n return { move, scale, rotation, center }\n }\n\n}","import { IPointData, IWheelEvent, IWheelConfig } from '@leafer-ui/interface'\n\nimport { MathHelper, Platform } from '@leafer-ui/core'\n\n\nexport const WheelEventHelper = {\n\n getMove(event: IWheelEvent, config: IWheelConfig): IPointData {\n let { moveSpeed } = config\n let { deltaX, deltaY } = event\n if (event.shiftKey && !deltaX) { // Window\n deltaX = deltaY\n deltaY = 0\n }\n if (deltaX > 50) deltaX = Math.max(50, deltaX / 3)\n if (deltaY > 50) deltaY = Math.max(50, deltaY / 3)\n return { x: -deltaX * moveSpeed * 2, y: -deltaY * moveSpeed * 2 }\n },\n\n getScale(event: IWheelEvent, config: IWheelConfig): number {\n\n let zoom: boolean\n let scale = 1\n let { zoomMode, zoomSpeed } = config\n\n const delta = event.deltaY || event.deltaX\n\n if (zoomMode) {\n // mac 触摸板滚动手势的deltaY是整数, 鼠标滚动/触摸板缩放的deltaY有小数点, firfox鼠标滚动为整数,为18或19的倍数\n // windows 始终是整数\n zoom = (zoomMode === 'mouse') ? true : (!event.deltaX && (Platform.intWheelDeltaY ? Math.abs(delta) > 17 : Math.ceil(delta) !== delta))\n if (event.shiftKey || event.metaKey || event.ctrlKey) zoom = true\n } else {\n zoom = !event.shiftKey && (event.metaKey || event.ctrlKey)\n }\n\n if (zoom) {\n zoomSpeed = MathHelper.within(zoomSpeed, 0, 1)\n const min = event.deltaY ? config.delta.y : config.delta.x\n scale = 1 - delta / (min * 4) * zoomSpeed // zoomSpeed\n if (scale < 0.5) scale = 0.5\n if (scale >= 1.5) scale = 1.5\n }\n\n return scale\n }\n\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, ITimer } from '@leafer-ui/interface'\n\nimport { InteractionBase, MoveEvent, ZoomEvent, RotateEvent } from '@leafer-ui/core'\n\n\nexport class Transformer {\n\n public get transforming(): boolean { return !!(this.moveData || this.zoomData || this.rotateData) }\n\n protected interaction: InteractionBase\n protected moveData: IMoveEvent\n protected zoomData: IZoomEvent\n protected rotateData: IRotateEvent\n protected transformTimer: ITimer\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public move(data: IMoveEvent): void {\n const { interaction } = this\n if (!data.moveType) data.moveType = 'move'\n\n if (!this.moveData) {\n this.setPath(data)\n this.moveData = { ...data, moveX: 0, moveY: 0 }\n interaction.emit(MoveEvent.START, this.moveData)\n }\n\n data.path = this.moveData.path\n interaction.emit(MoveEvent.BEFORE_MOVE, data)\n interaction.emit(MoveEvent.MOVE, data)\n\n this.transformEndWait()\n }\n\n public zoom(data: IZoomEvent): void {\n const { interaction } = this\n\n if (!this.zoomData) {\n this.setPath(data)\n this.zoomData = { ...data, scale: 1 }\n interaction.emit(ZoomEvent.START, this.zoomData)\n }\n\n data.path = this.zoomData.path\n interaction.emit(ZoomEvent.BEFORE_ZOOM, data)\n interaction.emit(ZoomEvent.ZOOM, data)\n\n this.transformEndWait()\n }\n\n public rotate(data: IRotateEvent): void {\n const { interaction } = this\n\n if (!this.rotateData) {\n this.setPath(data)\n this.rotateData = { ...data, rotation: 0 }\n interaction.emit(RotateEvent.START, this.rotateData)\n }\n\n data.path = this.rotateData.path\n interaction.emit(RotateEvent.BEFORE_ROTATE, data)\n interaction.emit(RotateEvent.ROTATE, data)\n\n this.transformEndWait()\n }\n\n public setPath(data: any): void {\n const { interaction } = this\n const { path } = interaction.selector.getByPoint(data, interaction.hitRadius)\n data.path = path\n interaction.cancelHover()\n }\n\n protected transformEndWait(): void {\n clearTimeout(this.transformTimer)\n this.transformTimer = setTimeout(() => {\n this.transformEnd()\n }, this.interaction.p.transformTime)\n }\n\n public transformEnd(): void {\n const { interaction, moveData, zoomData, rotateData } = this\n if (moveData) interaction.emit(MoveEvent.END, moveData)\n if (zoomData) interaction.emit(ZoomEvent.END, zoomData)\n if (rotateData) interaction.emit(RotateEvent.END, rotateData)\n this.reset()\n }\n\n public reset(): void {\n this.zoomData = this.moveData = this.rotateData = null\n }\n\n public destroy(): void {\n this.reset()\n }\n}","import { ILeaferType, IPointData } from '@leafer-ui/interface'\n\nimport { Leafer, Bounds } from '@leafer-ui/core'\n\nimport { LeaferTypeCreator } from './LeaferTypeCreator'\n\n\nconst leafer = Leafer.prototype\nconst bounds = new Bounds()\n\nleafer.initType = function (type: ILeaferType) {\n LeaferTypeCreator.run(type, this)\n}\n\nleafer.getValidMove = function (moveX: number, moveY: number): IPointData {\n const { scroll, disabled } = this.app.config.move\n\n if (scroll) {\n const type = scroll === true ? '' : scroll\n\n if (type.includes('x')) moveX = moveX || moveY, moveY = 0\n else if (type.includes('y')) moveY = moveY || moveX, moveX = 0\n else Math.abs(moveX) > Math.abs(moveY) ? moveY = 0 : moveX = 0\n\n if (type.includes('limit')) {\n const { x, y, width, height } = bounds.set(this.__world).addPoint(this.zoomLayer as IPointData)\n const right = x + width - this.width, bottom = y + height - this.height\n\n if (x >= 0 && right <= 0) moveX = 0 // includeX\n else if (moveX > 0) { if (x + moveX > 0) moveX = -x }\n else if (moveX < 0 && right + moveX < 0) moveX = -right\n\n if (y >= 0 && bottom <= 0) moveY = 0 // includeY\n else if (moveY > 0) { if (y + moveY > 0) moveY = -y }\n else if (moveY < 0 && bottom + moveY < 0) moveY = -bottom\n }\n }\n return { x: disabled ? 0 : moveX, y: disabled ? 0 : moveY }\n}\n\nleafer.getValidScale = function (changeScale: number): number {\n const { scaleX } = this.zoomLayer.__, { min, max, disabled } = this.app.config.zoom, absScale = Math.abs(scaleX * changeScale)\n if (min && absScale < min) changeScale = min / scaleX\n else if (max && absScale > max) changeScale = max / scaleX\n return disabled ? 1 : changeScale // fix 不能过滤小数位\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IUIEvent, IKeepTouchData, IPointData, IEvent } from '@leafer-ui/interface'\n\nimport { InteractionBase, PointHelper } from '@leafer-ui/core'\n\nimport { WheelEventHelper } from './WheelEventHelper'\nimport { Transformer } from './Transformer'\nimport { MultiTouchHelper } from './MultiTouchHelper'\n\n\nfunction getMoveEventData(move: IPointData, event: IEvent): IMoveEvent {\n return { ...event, moveX: move.x, moveY: move.y } as IMoveEvent\n}\n\nfunction getRotateEventData(rotation: number, event: IEvent): IRotateEvent {\n return { ...event, rotation } as IRotateEvent\n}\n\nfunction getZoomEventData(scale: number, event: IEvent): IZoomEvent {\n return { ...event, scale, } as IZoomEvent\n}\n\n\nconst interaction = InteractionBase.prototype\n\ninteraction.createTransformer = function (): void {\n this.transformer = new Transformer(this)\n}\n\ninteraction.move = function (data: IMoveEvent): void {\n this.transformer.move(data)\n}\n\ninteraction.zoom = function (data: IZoomEvent): void {\n this.transformer.zoom(data)\n}\n\ninteraction.rotate = function (data: IRotateEvent): void {\n this.transformer.rotate(data)\n}\n\ninteraction.transformEnd = function (): void {\n this.transformer.transformEnd()\n}\n\n\ninteraction.wheel = function (data: IWheelEvent): void {\n const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel\n if (wheel.disabled) return\n\n if (data.deltaX > 0) posDeltaSpeed && (data.deltaX *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaX *= negDeltaSpeed)\n\n if (data.deltaY > 0) posDeltaSpeed && (data.deltaY *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaY *= negDeltaSpeed)\n\n const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel)\n if (scale !== 1) this.zoom(getZoomEventData(scale, data))\n else {\n const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel)\n if (pointer.snap) PointHelper.round(move)\n this.move(getMoveEventData(move, data))\n }\n}\n\n\ninteraction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void {\n if (this.config.multiTouch.disabled) return\n const { move, rotation, scale, center } = MultiTouchHelper.getData(list)\n Object.assign(data, center)\n\n this.rotate(getRotateEventData(rotation, data))\n this.zoom(getZoomEventData(scale, data))\n this.move(getMoveEventData(move, data))\n}","import { IPointerEvent, IFunction } from '@leafer-ui/interface'\n\nimport { Dragger, BoundsHelper, PointHelper } from '@leafer-ui/core'\n\n\nconst dragger = Dragger.prototype\nconst { abs } = Math\n\ndragger.checkDragEndAnimate = function (data: IPointerEvent, speed?: number): boolean {\n const { moveX, moveY } = this.dragData\n const absMoveX = abs(moveX), absMoveY = abs(moveY), minMove = speed ? 1 : 0.1\n const dragAnimate = this.interaction.m.dragAnimate && this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove)\n\n if (dragAnimate) {\n const inertia = data.pointerType === 'touch' ? 3 : 1, maxMove = 70\n speed = speed ? 0.95 : inertia\n if (absMoveX * speed > maxMove) speed = maxMove / absMoveX\n else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY\n\n data = { ...data }\n PointHelper.move(data, moveX * speed, moveY * speed)\n\n this.drag(data)\n this.animate(() => { this.dragEnd(data, 1) })\n }\n\n return dragAnimate\n}\n\ndragger.animate = function (func?: IFunction, off?: 'off'): void { // dragEnd animation\n const animateWait = func || this.animateWait\n if (animateWait) this.interaction.target.nextRender(animateWait, null, off)\n this.animateWait = func\n}\n\ndragger.checkDragOut = function (data: IPointerEvent): void {\n const { interaction } = this\n this.autoMoveCancel()\n if (this.dragging && !interaction.shrinkCanvasBounds.hitPoint(data)) this.autoMoveOnDragOut(data)\n}\n\ndragger.autoMoveOnDragOut = function (data: IPointerEvent): void {\n const { interaction, downData, canDragOut } = this\n const { autoDistance, dragOut } = interaction.m\n if (!dragOut || !canDragOut || !autoDistance) return\n\n const bounds = interaction.shrinkCanvasBounds\n const { x, y } = bounds\n const right = BoundsHelper.maxX(bounds)\n const bottom = BoundsHelper.maxY(bounds)\n\n const moveX = data.x < x ? autoDistance : (right < data.x ? -autoDistance : 0)\n const moveY = data.y < y ? autoDistance : (bottom < data.y ? -autoDistance : 0)\n let totalX = 0, totalY = 0\n\n this.autoMoveTimer = setInterval(() => {\n totalX += moveX\n totalY += moveY\n\n PointHelper.move(downData, moveX, moveY)\n PointHelper.move(this.dragData, moveX, moveY)\n\n interaction.move({ ...data, moveX, moveY, totalX, totalY, moveType: 'drag' })\n interaction.pointerMoveReal(data)\n }, 10)\n}\n\ndragger.autoMoveCancel = function (): void {\n if (this.autoMoveTimer) {\n clearInterval(this.autoMoveTimer)\n this.autoMoveTimer = 0\n }\n}","export { LeaferTypeCreator } from './LeaferTypeCreator'\nexport { addViewport, addViewportConfig } from './type/viewport'\nexport { MultiTouchHelper } from './interaction/MultiTouchHelper'\nexport { WheelEventHelper } from './interaction/WheelEventHelper'\nexport { Transformer } from './interaction/Transformer'\n\nimport { Plugin } from '@leafer-ui/core'\n\nimport './Leafer'\nimport './interaction/Interaction'\nimport './interaction/Dragger'\n\nPlugin.add('viewport')"],"names":["MoveEvent","ZoomEvent","DataHelper","Debug","PointHelper","Platform","MathHelper","RotateEvent","Leafer","Bounds","InteractionBase","Dragger","BoundsHelper","Plugin"],"mappings":"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"}
|
package/dist/viewport.esm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.esm.js","sources":["../../../../../../src/in/packages/viewport/src/type/viewport.ts","../../../../../../src/in/packages/viewport/src/type/custom.ts","../../../../../../src/in/packages/viewport/src/type/design.ts","../../../../../../src/in/packages/viewport/src/type/document.ts","../../../../../../src/in/packages/viewport/src/LeaferTypeCreator.ts","../../../../../../src/in/packages/viewport/src/interaction/MultiTouchHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/WheelEventHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/Transformer.ts","../../../../../../src/in/packages/viewport/src/Leafer.ts","../../../../../../src/in/packages/viewport/src/interaction/Interaction.ts","../../../../../../src/in/packages/viewport/src/interaction/Dragger.ts","../../../../../../src/in/packages/viewport/src/index.ts"],"sourcesContent":["import { ILeaferBase, ILeaferConfig } from '@leafer-ui/interface'\n\nimport { MoveEvent, ZoomEvent, DataHelper } from '@leafer-ui/core'\n\n\nexport function addViewport(leafer: ILeaferBase, mergeConfig?: ILeaferConfig, custom?: boolean): void {\n addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig)\n if (leafer.isApp || custom) return\n\n leafer.__eventIds.push(\n leafer.on_(MoveEvent.BEFORE_MOVE, (e: MoveEvent) => {\n leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY))\n }),\n leafer.on_(ZoomEvent.BEFORE_ZOOM, (e: ZoomEvent) => {\n const { zoomLayer } = leafer\n const changeScale = leafer.getValidScale(e.scale)\n if (changeScale !== 1) zoomLayer.scaleOfWorld(e, changeScale)\n })\n )\n}\n\nexport function addViewportConfig(leafer: ILeaferBase, mergeConfig?: ILeaferConfig): void {\n const viewportConfig: ILeaferConfig = {\n wheel: { preventDefault: true },\n touch: { preventDefault: true },\n pointer: { preventDefaultMenu: true }\n }\n if (mergeConfig) DataHelper.assign(viewportConfig, mergeConfig)\n DataHelper.assign(leafer.config, viewportConfig, leafer.userConfig)\n}","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function custom(leafer: ILeaferBase): void {\n addViewport(leafer, null, true)\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function design(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: {\n min: 0.01,\n max: 256\n },\n move: {\n holdSpaceKey: true,\n holdMiddleKey: true,\n }\n })\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function document(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: { min: 1 },\n move: { scroll: 'limit' }\n })\n}\n","import { ILeaferBase, ILeaferTypeList, ILeaferTypeFunction } from '@leafer-ui/interface'\n\nimport { Debug } from '@leafer-ui/core'\n\nimport { addViewport } from './type/viewport'\nimport { custom } from './type/custom'\nimport { design } from './type/design'\nimport { document } from './type/document'\n\n\nconst debug = Debug.get('LeaferTypeCreator')\n\nexport const LeaferTypeCreator = {\n\n list: {} as ILeaferTypeList,\n\n register(name: string, fn: ILeaferTypeFunction): void {\n list[name] && debug.repeat(name)\n list[name] = fn\n },\n\n run(name: string, leafer: ILeaferBase): void {\n const fn = list[name]\n fn && fn(leafer)\n }\n\n}\n\nconst { list, register } = LeaferTypeCreator\n\nregister('viewport', addViewport)\nregister('custom', custom)\nregister('design', design)\nregister('document', document)","import { IMultiTouchData, IKeepTouchData } from '@leafer-ui/interface'\n\nimport { PointHelper } from '@leafer-ui/core'\n\n\nexport const MultiTouchHelper = {\n\n getData(list: IKeepTouchData[]): IMultiTouchData {\n const a = list[0], b = list[1]\n const lastCenter = PointHelper.getCenter(a.from, b.from)\n const center = PointHelper.getCenter(a.to, b.to)\n const move = { x: center.x - lastCenter.x, y: center.y - lastCenter.y }\n\n const lastDistance = PointHelper.getDistance(a.from, b.from)\n const distance = PointHelper.getDistance(a.to, b.to)\n const scale = distance / lastDistance\n\n const rotation = PointHelper.getRotation(a.from, b.from, a.to, b.to)\n\n return { move, scale, rotation, center }\n }\n\n}","import { IPointData, IWheelEvent, IWheelConfig } from '@leafer-ui/interface'\n\nimport { MathHelper, Platform } from '@leafer-ui/core'\n\n\nexport const WheelEventHelper = {\n\n getMove(event: IWheelEvent, config: IWheelConfig): IPointData {\n let { moveSpeed } = config\n let { deltaX, deltaY } = event\n if (event.shiftKey && !deltaX) { // Window\n deltaX = deltaY\n deltaY = 0\n }\n if (deltaX > 50) deltaX = Math.max(50, deltaX / 3)\n if (deltaY > 50) deltaY = Math.max(50, deltaY / 3)\n return { x: -deltaX * moveSpeed * 2, y: -deltaY * moveSpeed * 2 }\n },\n\n getScale(event: IWheelEvent, config: IWheelConfig): number {\n\n let zoom: boolean\n let scale = 1\n let { zoomMode, zoomSpeed } = config\n\n const delta = event.deltaY || event.deltaX\n\n if (zoomMode) {\n // mac 触摸板滚动手势的deltaY是整数, 鼠标滚动/触摸板缩放的deltaY有小数点, firfox鼠标滚动为整数,为18或19的倍数\n // windows 始终是整数\n zoom = (zoomMode === 'mouse') ? true : (!event.deltaX && (Platform.intWheelDeltaY ? Math.abs(delta) > 17 : Math.ceil(delta) !== delta))\n if (event.shiftKey || event.metaKey || event.ctrlKey) zoom = true\n } else {\n zoom = !event.shiftKey && (event.metaKey || event.ctrlKey)\n }\n\n if (zoom) {\n zoomSpeed = MathHelper.within(zoomSpeed, 0, 1)\n const min = event.deltaY ? config.delta.y : config.delta.x\n scale = 1 - delta / (min * 4) * zoomSpeed // zoomSpeed\n if (scale < 0.5) scale = 0.5\n if (scale >= 1.5) scale = 1.5\n }\n\n return scale\n }\n\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, ITimer } from '@leafer-ui/interface'\n\nimport { InteractionBase, MoveEvent, ZoomEvent, RotateEvent } from '@leafer-ui/core'\n\n\nexport class Transformer {\n\n public get transforming(): boolean { return !!(this.moveData || this.zoomData || this.rotateData) }\n\n protected interaction: InteractionBase\n protected moveData: IMoveEvent\n protected zoomData: IZoomEvent\n protected rotateData: IRotateEvent\n protected transformTimer: ITimer\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public move(data: IMoveEvent): void {\n const { interaction } = this\n if (!data.moveType) data.moveType = 'move'\n\n if (!this.moveData) {\n this.setPath(data)\n this.moveData = { ...data, moveX: 0, moveY: 0 }\n interaction.emit(MoveEvent.START, this.moveData)\n }\n\n data.path = this.moveData.path\n interaction.emit(MoveEvent.BEFORE_MOVE, data)\n interaction.emit(MoveEvent.MOVE, data)\n\n this.transformEndWait()\n }\n\n public zoom(data: IZoomEvent): void {\n const { interaction } = this\n\n if (!this.zoomData) {\n this.setPath(data)\n this.zoomData = { ...data, scale: 1 }\n interaction.emit(ZoomEvent.START, this.zoomData)\n }\n\n data.path = this.zoomData.path\n interaction.emit(ZoomEvent.BEFORE_ZOOM, data)\n interaction.emit(ZoomEvent.ZOOM, data)\n\n this.transformEndWait()\n }\n\n public rotate(data: IRotateEvent): void {\n const { interaction } = this\n\n if (!this.rotateData) {\n this.setPath(data)\n this.rotateData = { ...data, rotation: 0 }\n interaction.emit(RotateEvent.START, this.rotateData)\n }\n\n data.path = this.rotateData.path\n interaction.emit(RotateEvent.BEFORE_ROTATE, data)\n interaction.emit(RotateEvent.ROTATE, data)\n\n this.transformEndWait()\n }\n\n public setPath(data: any): void {\n const { interaction } = this\n const { path } = interaction.selector.getByPoint(data, interaction.hitRadius)\n data.path = path\n interaction.cancelHover()\n }\n\n protected transformEndWait(): void {\n clearTimeout(this.transformTimer)\n this.transformTimer = setTimeout(() => {\n this.transformEnd()\n }, this.interaction.p.transformTime)\n }\n\n public transformEnd(): void {\n const { interaction, moveData, zoomData, rotateData } = this\n if (moveData) interaction.emit(MoveEvent.END, moveData)\n if (zoomData) interaction.emit(ZoomEvent.END, zoomData)\n if (rotateData) interaction.emit(RotateEvent.END, rotateData)\n this.reset()\n }\n\n public reset(): void {\n this.zoomData = this.moveData = this.rotateData = null\n }\n\n public destroy(): void {\n this.reset()\n }\n}","import { ILeaferType, IPointData } from '@leafer-ui/interface'\n\nimport { Leafer, Bounds } from '@leafer-ui/core'\n\nimport { LeaferTypeCreator } from './LeaferTypeCreator'\n\n\nconst leafer = Leafer.prototype\nconst bounds = new Bounds()\n\nleafer.initType = function (type: ILeaferType) {\n LeaferTypeCreator.run(type, this)\n}\n\nleafer.getValidMove = function (moveX: number, moveY: number): IPointData {\n const { scroll, disabled } = this.app.config.move\n\n if (scroll) {\n const type = scroll === true ? '' : scroll\n\n if (type.includes('x')) moveX = moveX || moveY, moveY = 0\n else if (type.includes('y')) moveY = moveY || moveX, moveX = 0\n else Math.abs(moveX) > Math.abs(moveY) ? moveY = 0 : moveX = 0\n\n if (type.includes('limit')) {\n const { x, y, width, height } = bounds.set(this.__world).addPoint(this.zoomLayer as IPointData)\n const right = x + width - this.width, bottom = y + height - this.height\n\n if (x >= 0 && right <= 0) moveX = 0 // includeX\n else if (moveX > 0) { if (x + moveX > 0) moveX = -x }\n else if (moveX < 0 && right + moveX < 0) moveX = -right\n\n if (y >= 0 && bottom <= 0) moveY = 0 // includeY\n else if (moveY > 0) { if (y + moveY > 0) moveY = -y }\n else if (moveY < 0 && bottom + moveY < 0) moveY = -bottom\n }\n }\n return { x: disabled ? 0 : moveX, y: disabled ? 0 : moveY }\n}\n\nleafer.getValidScale = function (changeScale: number): number {\n const { scaleX } = this.zoomLayer.__, { min, max, disabled } = this.app.config.zoom, absScale = Math.abs(scaleX * changeScale)\n if (min && absScale < min) changeScale = min / scaleX\n else if (max && absScale > max) changeScale = max / scaleX\n return disabled ? 1 : changeScale // fix 不能过滤小数位\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IUIEvent, IKeepTouchData, IPointData, IEvent } from '@leafer-ui/interface'\n\nimport { InteractionBase, PointHelper } from '@leafer-ui/core'\n\nimport { WheelEventHelper } from './WheelEventHelper'\nimport { Transformer } from './Transformer'\nimport { MultiTouchHelper } from './MultiTouchHelper'\n\n\nfunction getMoveEventData(move: IPointData, event: IEvent): IMoveEvent {\n return { ...event, moveX: move.x, moveY: move.y } as IMoveEvent\n}\n\nfunction getRotateEventData(rotation: number, event: IEvent): IRotateEvent {\n return { ...event, rotation } as IRotateEvent\n}\n\nfunction getZoomEventData(scale: number, event: IEvent): IZoomEvent {\n return { ...event, scale, } as IZoomEvent\n}\n\n\nconst interaction = InteractionBase.prototype\n\ninteraction.createTransformer = function (): void {\n this.transformer = new Transformer(this)\n}\n\ninteraction.move = function (data: IMoveEvent): void {\n this.transformer.move(data)\n}\n\ninteraction.zoom = function (data: IZoomEvent): void {\n this.transformer.zoom(data)\n}\n\ninteraction.rotate = function (data: IRotateEvent): void {\n this.transformer.rotate(data)\n}\n\ninteraction.transformEnd = function (): void {\n this.transformer.transformEnd()\n}\n\n\ninteraction.wheel = function (data: IWheelEvent): void {\n const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel\n if (wheel.disabled) return\n\n if (data.deltaX > 0) posDeltaSpeed && (data.deltaX *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaX *= negDeltaSpeed)\n\n if (data.deltaY > 0) posDeltaSpeed && (data.deltaY *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaY *= negDeltaSpeed)\n\n const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel)\n if (scale !== 1) this.zoom(getZoomEventData(scale, data))\n else {\n const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel)\n if (pointer.snap) PointHelper.round(move)\n this.move(getMoveEventData(move, data))\n }\n}\n\n\ninteraction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void {\n if (this.config.multiTouch.disabled) return\n const { move, rotation, scale, center } = MultiTouchHelper.getData(list)\n Object.assign(data, center)\n\n this.rotate(getRotateEventData(rotation, data))\n this.zoom(getZoomEventData(scale, data))\n this.move(getMoveEventData(move, data))\n}","import { IPointerEvent, IFunction } from '@leafer-ui/interface'\n\nimport { Dragger, BoundsHelper, PointHelper } from '@leafer-ui/core'\n\n\nconst dragger = Dragger.prototype\nconst { abs } = Math\n\ndragger.checkDragEndAnimate = function (data: IPointerEvent, speed?: number): boolean {\n const { moveX, moveY } = this.dragData\n const absMoveX = abs(moveX), absMoveY = abs(moveY), minMove = speed ? 1 : 0.1\n const dragAnimate = this.interaction.m.dragAnimate && this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove)\n\n if (dragAnimate) {\n const inertia = data.pointerType === 'touch' ? 3 : 1, maxMove = 70\n speed = speed ? 0.95 : inertia\n if (absMoveX * speed > maxMove) speed = maxMove / absMoveX\n else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY\n\n data = { ...data }\n PointHelper.move(data, moveX * speed, moveY * speed)\n\n this.drag(data)\n this.animate(() => { this.dragEnd(data, 1) })\n }\n\n return dragAnimate\n}\n\ndragger.animate = function (func?: IFunction, off?: 'off'): void { // dragEnd animation\n const animateWait = func || this.animateWait\n if (animateWait) this.interaction.target.nextRender(animateWait, null, off)\n this.animateWait = func\n}\n\ndragger.checkDragOut = function (data: IPointerEvent): void {\n const { interaction } = this\n this.autoMoveCancel()\n if (this.dragging && !interaction.shrinkCanvasBounds.hitPoint(data)) this.autoMoveOnDragOut(data)\n}\n\ndragger.autoMoveOnDragOut = function (data: IPointerEvent): void {\n const { interaction, downData, canDragOut } = this\n const { autoDistance, dragOut } = interaction.m\n if (!dragOut || !canDragOut || !autoDistance) return\n\n const bounds = interaction.shrinkCanvasBounds\n const { x, y } = bounds\n const right = BoundsHelper.maxX(bounds)\n const bottom = BoundsHelper.maxY(bounds)\n\n const moveX = data.x < x ? autoDistance : (right < data.x ? -autoDistance : 0)\n const moveY = data.y < y ? autoDistance : (bottom < data.y ? -autoDistance : 0)\n let totalX = 0, totalY = 0\n\n this.autoMoveTimer = setInterval(() => {\n totalX += moveX\n totalY += moveY\n\n PointHelper.move(downData, moveX, moveY)\n PointHelper.move(this.dragData, moveX, moveY)\n\n interaction.move({ ...data, moveX, moveY, totalX, totalY, moveType: 'drag' })\n interaction.pointerMoveReal(data)\n }, 10)\n}\n\ndragger.autoMoveCancel = function (): void {\n if (this.autoMoveTimer) {\n clearInterval(this.autoMoveTimer)\n this.autoMoveTimer = 0\n }\n}","export { LeaferTypeCreator } from './LeaferTypeCreator'\nexport { addViewport, addViewportConfig } from './type/viewport'\nexport { MultiTouchHelper } from './interaction/MultiTouchHelper'\nexport { WheelEventHelper } from './interaction/WheelEventHelper'\nexport { Transformer } from './interaction/Transformer'\n\nimport { Plugin } from '@leafer-ui/core'\n\nimport './Leafer'\nimport './interaction/Interaction'\nimport './interaction/Dragger'\n\nPlugin.add('viewport')"],"names":[],"mappings":"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"}
|
package/dist/viewport.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.js","sources":["../../../../../../src/in/packages/viewport/src/type/viewport.ts","../../../../../../src/in/packages/viewport/src/type/custom.ts","../../../../../../src/in/packages/viewport/src/type/design.ts","../../../../../../src/in/packages/viewport/src/type/document.ts","../../../../../../src/in/packages/viewport/src/LeaferTypeCreator.ts","../../../../../../src/in/packages/viewport/src/interaction/MultiTouchHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/WheelEventHelper.ts","../../../../../../src/in/packages/viewport/src/interaction/Transformer.ts","../../../../../../src/in/packages/viewport/src/Leafer.ts","../../../../../../src/in/packages/viewport/src/interaction/Interaction.ts","../../../../../../src/in/packages/viewport/src/interaction/Dragger.ts","../../../../../../src/in/packages/viewport/src/index.ts"],"sourcesContent":["import { ILeaferBase, ILeaferConfig } from '@leafer-ui/interface'\n\nimport { MoveEvent, ZoomEvent, DataHelper } from '@leafer-ui/core'\n\n\nexport function addViewport(leafer: ILeaferBase, mergeConfig?: ILeaferConfig, custom?: boolean): void {\n addViewportConfig(leafer.parentApp ? leafer.parentApp : leafer, mergeConfig)\n if (leafer.isApp || custom) return\n\n leafer.__eventIds.push(\n leafer.on_(MoveEvent.BEFORE_MOVE, (e: MoveEvent) => {\n leafer.zoomLayer.move(leafer.getValidMove(e.moveX, e.moveY))\n }),\n leafer.on_(ZoomEvent.BEFORE_ZOOM, (e: ZoomEvent) => {\n const { zoomLayer } = leafer\n const changeScale = leafer.getValidScale(e.scale)\n if (changeScale !== 1) zoomLayer.scaleOfWorld(e, changeScale)\n })\n )\n}\n\nexport function addViewportConfig(leafer: ILeaferBase, mergeConfig?: ILeaferConfig): void {\n const viewportConfig: ILeaferConfig = {\n wheel: { preventDefault: true },\n touch: { preventDefault: true },\n pointer: { preventDefaultMenu: true }\n }\n if (mergeConfig) DataHelper.assign(viewportConfig, mergeConfig)\n DataHelper.assign(leafer.config, viewportConfig, leafer.userConfig)\n}","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function custom(leafer: ILeaferBase): void {\n addViewport(leafer, null, true)\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function design(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: {\n min: 0.01,\n max: 256\n },\n move: {\n holdSpaceKey: true,\n holdMiddleKey: true,\n }\n })\n}\n","import { ILeaferBase } from '@leafer-ui/interface'\n\nimport { addViewport } from './viewport'\n\n\nexport function document(leafer: ILeaferBase): void {\n addViewport(leafer, {\n zoom: { min: 1 },\n move: { scroll: 'limit' }\n })\n}\n","import { ILeaferBase, ILeaferTypeList, ILeaferTypeFunction } from '@leafer-ui/interface'\n\nimport { Debug } from '@leafer-ui/core'\n\nimport { addViewport } from './type/viewport'\nimport { custom } from './type/custom'\nimport { design } from './type/design'\nimport { document } from './type/document'\n\n\nconst debug = Debug.get('LeaferTypeCreator')\n\nexport const LeaferTypeCreator = {\n\n list: {} as ILeaferTypeList,\n\n register(name: string, fn: ILeaferTypeFunction): void {\n list[name] && debug.repeat(name)\n list[name] = fn\n },\n\n run(name: string, leafer: ILeaferBase): void {\n const fn = list[name]\n fn && fn(leafer)\n }\n\n}\n\nconst { list, register } = LeaferTypeCreator\n\nregister('viewport', addViewport)\nregister('custom', custom)\nregister('design', design)\nregister('document', document)","import { IMultiTouchData, IKeepTouchData } from '@leafer-ui/interface'\n\nimport { PointHelper } from '@leafer-ui/core'\n\n\nexport const MultiTouchHelper = {\n\n getData(list: IKeepTouchData[]): IMultiTouchData {\n const a = list[0], b = list[1]\n const lastCenter = PointHelper.getCenter(a.from, b.from)\n const center = PointHelper.getCenter(a.to, b.to)\n const move = { x: center.x - lastCenter.x, y: center.y - lastCenter.y }\n\n const lastDistance = PointHelper.getDistance(a.from, b.from)\n const distance = PointHelper.getDistance(a.to, b.to)\n const scale = distance / lastDistance\n\n const rotation = PointHelper.getRotation(a.from, b.from, a.to, b.to)\n\n return { move, scale, rotation, center }\n }\n\n}","import { IPointData, IWheelEvent, IWheelConfig } from '@leafer-ui/interface'\n\nimport { MathHelper, Platform } from '@leafer-ui/core'\n\n\nexport const WheelEventHelper = {\n\n getMove(event: IWheelEvent, config: IWheelConfig): IPointData {\n let { moveSpeed } = config\n let { deltaX, deltaY } = event\n if (event.shiftKey && !deltaX) { // Window\n deltaX = deltaY\n deltaY = 0\n }\n if (deltaX > 50) deltaX = Math.max(50, deltaX / 3)\n if (deltaY > 50) deltaY = Math.max(50, deltaY / 3)\n return { x: -deltaX * moveSpeed * 2, y: -deltaY * moveSpeed * 2 }\n },\n\n getScale(event: IWheelEvent, config: IWheelConfig): number {\n\n let zoom: boolean\n let scale = 1\n let { zoomMode, zoomSpeed } = config\n\n const delta = event.deltaY || event.deltaX\n\n if (zoomMode) {\n // mac 触摸板滚动手势的deltaY是整数, 鼠标滚动/触摸板缩放的deltaY有小数点, firfox鼠标滚动为整数,为18或19的倍数\n // windows 始终是整数\n zoom = (zoomMode === 'mouse') ? true : (!event.deltaX && (Platform.intWheelDeltaY ? Math.abs(delta) > 17 : Math.ceil(delta) !== delta))\n if (event.shiftKey || event.metaKey || event.ctrlKey) zoom = true\n } else {\n zoom = !event.shiftKey && (event.metaKey || event.ctrlKey)\n }\n\n if (zoom) {\n zoomSpeed = MathHelper.within(zoomSpeed, 0, 1)\n const min = event.deltaY ? config.delta.y : config.delta.x\n scale = 1 - delta / (min * 4) * zoomSpeed // zoomSpeed\n if (scale < 0.5) scale = 0.5\n if (scale >= 1.5) scale = 1.5\n }\n\n return scale\n }\n\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, ITimer } from '@leafer-ui/interface'\n\nimport { InteractionBase, MoveEvent, ZoomEvent, RotateEvent } from '@leafer-ui/core'\n\n\nexport class Transformer {\n\n public get transforming(): boolean { return !!(this.moveData || this.zoomData || this.rotateData) }\n\n protected interaction: InteractionBase\n protected moveData: IMoveEvent\n protected zoomData: IZoomEvent\n protected rotateData: IRotateEvent\n protected transformTimer: ITimer\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public move(data: IMoveEvent): void {\n const { interaction } = this\n if (!data.moveType) data.moveType = 'move'\n\n if (!this.moveData) {\n this.setPath(data)\n this.moveData = { ...data, moveX: 0, moveY: 0 }\n interaction.emit(MoveEvent.START, this.moveData)\n }\n\n data.path = this.moveData.path\n interaction.emit(MoveEvent.BEFORE_MOVE, data)\n interaction.emit(MoveEvent.MOVE, data)\n\n this.transformEndWait()\n }\n\n public zoom(data: IZoomEvent): void {\n const { interaction } = this\n\n if (!this.zoomData) {\n this.setPath(data)\n this.zoomData = { ...data, scale: 1 }\n interaction.emit(ZoomEvent.START, this.zoomData)\n }\n\n data.path = this.zoomData.path\n interaction.emit(ZoomEvent.BEFORE_ZOOM, data)\n interaction.emit(ZoomEvent.ZOOM, data)\n\n this.transformEndWait()\n }\n\n public rotate(data: IRotateEvent): void {\n const { interaction } = this\n\n if (!this.rotateData) {\n this.setPath(data)\n this.rotateData = { ...data, rotation: 0 }\n interaction.emit(RotateEvent.START, this.rotateData)\n }\n\n data.path = this.rotateData.path\n interaction.emit(RotateEvent.BEFORE_ROTATE, data)\n interaction.emit(RotateEvent.ROTATE, data)\n\n this.transformEndWait()\n }\n\n public setPath(data: any): void {\n const { interaction } = this\n const { path } = interaction.selector.getByPoint(data, interaction.hitRadius)\n data.path = path\n interaction.cancelHover()\n }\n\n protected transformEndWait(): void {\n clearTimeout(this.transformTimer)\n this.transformTimer = setTimeout(() => {\n this.transformEnd()\n }, this.interaction.p.transformTime)\n }\n\n public transformEnd(): void {\n const { interaction, moveData, zoomData, rotateData } = this\n if (moveData) interaction.emit(MoveEvent.END, moveData)\n if (zoomData) interaction.emit(ZoomEvent.END, zoomData)\n if (rotateData) interaction.emit(RotateEvent.END, rotateData)\n this.reset()\n }\n\n public reset(): void {\n this.zoomData = this.moveData = this.rotateData = null\n }\n\n public destroy(): void {\n this.reset()\n }\n}","import { ILeaferType, IPointData } from '@leafer-ui/interface'\n\nimport { Leafer, Bounds } from '@leafer-ui/core'\n\nimport { LeaferTypeCreator } from './LeaferTypeCreator'\n\n\nconst leafer = Leafer.prototype\nconst bounds = new Bounds()\n\nleafer.initType = function (type: ILeaferType) {\n LeaferTypeCreator.run(type, this)\n}\n\nleafer.getValidMove = function (moveX: number, moveY: number): IPointData {\n const { scroll, disabled } = this.app.config.move\n\n if (scroll) {\n const type = scroll === true ? '' : scroll\n\n if (type.includes('x')) moveX = moveX || moveY, moveY = 0\n else if (type.includes('y')) moveY = moveY || moveX, moveX = 0\n else Math.abs(moveX) > Math.abs(moveY) ? moveY = 0 : moveX = 0\n\n if (type.includes('limit')) {\n const { x, y, width, height } = bounds.set(this.__world).addPoint(this.zoomLayer as IPointData)\n const right = x + width - this.width, bottom = y + height - this.height\n\n if (x >= 0 && right <= 0) moveX = 0 // includeX\n else if (moveX > 0) { if (x + moveX > 0) moveX = -x }\n else if (moveX < 0 && right + moveX < 0) moveX = -right\n\n if (y >= 0 && bottom <= 0) moveY = 0 // includeY\n else if (moveY > 0) { if (y + moveY > 0) moveY = -y }\n else if (moveY < 0 && bottom + moveY < 0) moveY = -bottom\n }\n }\n return { x: disabled ? 0 : moveX, y: disabled ? 0 : moveY }\n}\n\nleafer.getValidScale = function (changeScale: number): number {\n const { scaleX } = this.zoomLayer.__, { min, max, disabled } = this.app.config.zoom, absScale = Math.abs(scaleX * changeScale)\n if (min && absScale < min) changeScale = min / scaleX\n else if (max && absScale > max) changeScale = max / scaleX\n return disabled ? 1 : changeScale // fix 不能过滤小数位\n}","import { IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IUIEvent, IKeepTouchData, IPointData, IEvent } from '@leafer-ui/interface'\n\nimport { InteractionBase, PointHelper } from '@leafer-ui/core'\n\nimport { WheelEventHelper } from './WheelEventHelper'\nimport { Transformer } from './Transformer'\nimport { MultiTouchHelper } from './MultiTouchHelper'\n\n\nfunction getMoveEventData(move: IPointData, event: IEvent): IMoveEvent {\n return { ...event, moveX: move.x, moveY: move.y } as IMoveEvent\n}\n\nfunction getRotateEventData(rotation: number, event: IEvent): IRotateEvent {\n return { ...event, rotation } as IRotateEvent\n}\n\nfunction getZoomEventData(scale: number, event: IEvent): IZoomEvent {\n return { ...event, scale, } as IZoomEvent\n}\n\n\nconst interaction = InteractionBase.prototype\n\ninteraction.createTransformer = function (): void {\n this.transformer = new Transformer(this)\n}\n\ninteraction.move = function (data: IMoveEvent): void {\n this.transformer.move(data)\n}\n\ninteraction.zoom = function (data: IZoomEvent): void {\n this.transformer.zoom(data)\n}\n\ninteraction.rotate = function (data: IRotateEvent): void {\n this.transformer.rotate(data)\n}\n\ninteraction.transformEnd = function (): void {\n this.transformer.transformEnd()\n}\n\n\ninteraction.wheel = function (data: IWheelEvent): void {\n const { wheel, pointer } = this.config, { posDeltaSpeed, negDeltaSpeed } = wheel\n if (wheel.disabled) return\n\n if (data.deltaX > 0) posDeltaSpeed && (data.deltaX *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaX *= negDeltaSpeed)\n\n if (data.deltaY > 0) posDeltaSpeed && (data.deltaY *= posDeltaSpeed)\n else negDeltaSpeed && (data.deltaY *= negDeltaSpeed)\n\n const scale = wheel.getScale ? wheel.getScale(data, wheel) : WheelEventHelper.getScale(data, wheel)\n if (scale !== 1) this.zoom(getZoomEventData(scale, data))\n else {\n const move = wheel.getMove ? wheel.getMove(data, wheel) : WheelEventHelper.getMove(data, wheel)\n if (pointer.snap) PointHelper.round(move)\n this.move(getMoveEventData(move, data))\n }\n}\n\n\ninteraction.multiTouch = function (data: IUIEvent, list: IKeepTouchData[]): void {\n if (this.config.multiTouch.disabled) return\n const { move, rotation, scale, center } = MultiTouchHelper.getData(list)\n Object.assign(data, center)\n\n this.rotate(getRotateEventData(rotation, data))\n this.zoom(getZoomEventData(scale, data))\n this.move(getMoveEventData(move, data))\n}","import { IPointerEvent, IFunction } from '@leafer-ui/interface'\n\nimport { Dragger, BoundsHelper, PointHelper } from '@leafer-ui/core'\n\n\nconst dragger = Dragger.prototype\nconst { abs } = Math\n\ndragger.checkDragEndAnimate = function (data: IPointerEvent, speed?: number): boolean {\n const { moveX, moveY } = this.dragData\n const absMoveX = abs(moveX), absMoveY = abs(moveY), minMove = speed ? 1 : 0.1\n const dragAnimate = this.interaction.m.dragAnimate && this.canAnimate && this.moving && (absMoveX > minMove || absMoveY > minMove)\n\n if (dragAnimate) {\n const inertia = data.pointerType === 'touch' ? 3 : 1, maxMove = 70\n speed = speed ? 0.95 : inertia\n if (absMoveX * speed > maxMove) speed = maxMove / absMoveX\n else if (absMoveY * speed > maxMove) speed = maxMove / absMoveY\n\n data = { ...data }\n PointHelper.move(data, moveX * speed, moveY * speed)\n\n this.drag(data)\n this.animate(() => { this.dragEnd(data, 1) })\n }\n\n return dragAnimate\n}\n\ndragger.animate = function (func?: IFunction, off?: 'off'): void { // dragEnd animation\n const animateWait = func || this.animateWait\n if (animateWait) this.interaction.target.nextRender(animateWait, null, off)\n this.animateWait = func\n}\n\ndragger.checkDragOut = function (data: IPointerEvent): void {\n const { interaction } = this\n this.autoMoveCancel()\n if (this.dragging && !interaction.shrinkCanvasBounds.hitPoint(data)) this.autoMoveOnDragOut(data)\n}\n\ndragger.autoMoveOnDragOut = function (data: IPointerEvent): void {\n const { interaction, downData, canDragOut } = this\n const { autoDistance, dragOut } = interaction.m\n if (!dragOut || !canDragOut || !autoDistance) return\n\n const bounds = interaction.shrinkCanvasBounds\n const { x, y } = bounds\n const right = BoundsHelper.maxX(bounds)\n const bottom = BoundsHelper.maxY(bounds)\n\n const moveX = data.x < x ? autoDistance : (right < data.x ? -autoDistance : 0)\n const moveY = data.y < y ? autoDistance : (bottom < data.y ? -autoDistance : 0)\n let totalX = 0, totalY = 0\n\n this.autoMoveTimer = setInterval(() => {\n totalX += moveX\n totalY += moveY\n\n PointHelper.move(downData, moveX, moveY)\n PointHelper.move(this.dragData, moveX, moveY)\n\n interaction.move({ ...data, moveX, moveY, totalX, totalY, moveType: 'drag' })\n interaction.pointerMoveReal(data)\n }, 10)\n}\n\ndragger.autoMoveCancel = function (): void {\n if (this.autoMoveTimer) {\n clearInterval(this.autoMoveTimer)\n this.autoMoveTimer = 0\n }\n}","export { LeaferTypeCreator } from './LeaferTypeCreator'\nexport { addViewport, addViewportConfig } from './type/viewport'\nexport { MultiTouchHelper } from './interaction/MultiTouchHelper'\nexport { WheelEventHelper } from './interaction/WheelEventHelper'\nexport { Transformer } from './interaction/Transformer'\n\nimport { Plugin } from '@leafer-ui/core'\n\nimport './Leafer'\nimport './interaction/Interaction'\nimport './interaction/Dragger'\n\nPlugin.add('viewport')"],"names":["MoveEvent","ZoomEvent","DataHelper","Debug","PointHelper","Platform","MathHelper","RotateEvent","Leafer","Bounds","InteractionBase","Dragger","BoundsHelper","Plugin"],"mappings":"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"}
|