EmbyCrackedClient/web/modules/polyfills/dragdroptouch.js

1 line
8.9 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
import dom from"./../dom.js";let kbdProps="altKey,ctrlKey,metaKey,shiftKey".split(","),ptProps="pageX,pageY,clientX,clientY,screenX,screenY".split(",");function DragDrop(){this._boundPointerMove=this._PointerMove.bind(this),this._boundPointerUp=this._PointerUp.bind(this),this._boundContextMenu=this._contextMenu.bind(this),dom.addEventListener(document,window.PointerEvent?"pointerdown":"touchstart",this._pointerDown.bind(this),{passive:!0})}function shouldHandle(e){return!(e.defaultPrevented||(e=e.touches)&&2<e.length)}function getPoint(e,page){var touches=e.touches;return touches&&touches.length&&(e=touches[0]),{x:page?e.pageX:e.clientX,y:page?e.pageY:e.clientY}}function getTarget(pt){pt=document.elementFromPoint(pt.x,pt.y);if(pt){var btn=pt.closest("a,button,div[tabindex]");if(btn)return btn}return pt}function removeImage(instance,img,dragSource,lastPointerEvent){img.remove(),dragSource&&dispatchEvent(instance,lastPointerEvent,"dragendcomplete",dragSource,getPoint(lastPointerEvent))}function animateRemoveImage(instance,img,dragSource,lastPointerEvent){var time=!1===instance._dragY?400:300,opacityTime=instance._dragX&&instance._dragY?time-20:time;img.style.transition="transform "+time+"ms ease-out,opacity "+opacityTime+"ms ease-out",img.classList.remove("dragging"),img.style.transform="none",img.style.opacity="1",setTimeout(function(){removeImage(instance,img,dragSource,lastPointerEvent)},time)}function scrollYIfNeeded(e,pt,ptDown){var rect,boundarySize,topY1;"mouse"===e.pointerType&&(e=e.target.closest(".emby-scroller.scrollFrameY"))&&(rect=e.getScrollContainerBoundingClientRect(),boundarySize=Math.round(rect.height/6),topY1=rect.top,pt.y>=topY1&&pt.y<topY1+boundarySize?pt.y<ptDown.y&&e.scrollBy(-20):(topY1=rect.bottom)-boundarySize<=pt.y&&pt.y<topY1&&pt.y>ptDown.y&&e.scrollBy(20))}function copyProps(dst,src,props){for(let i=0;i<props.length;i++){var p=props[i];dst[p]=src[p]}}function copyStyle(src,dst){src instanceof HTMLCanvasElement&&((cDst=dst).width=(cSrc=src).width,cDst.height=cSrc.height,cDst.getContext("2d").drawImage(cSrc,0,0));var cSrc,cDst,cs=getComputedStyle(src);let i;for(i=0;i<cs.length;i++){var key=cs[i];key.indexOf("transition")<0&&(dst.style[key]=cs[key])}for(dst.style.pointerEvents="none",i=0;i<src.children.length;i++)copyStyle(src.children[i],dst.children[i]);dst.style.transform="none",dst.style.translate="none",dst.style.scale="none"}function dispatchEvent(instance,e,type,target,pt){if(e&&target){var evt=document.createEvent("Event"),t=e.touches?e.touches[0]:e;evt.initEvent(type,!0,!0),evt.button=0,evt.which=evt.buttons=1,evt.detail={polyfill:!0,dragX:instance._dragX,dragY:instance._dragY,pt:pt,ptDown:instance._ptDown},copyProps(evt,e,kbdProps),copyProps(evt,t,ptProps);let dataTransfer=instance._dataTransfer;return dataTransfer=dataTransfer||(instance._dataTransfer=new DataTransfer),evt.dataTransfer=dataTransfer,target.dispatchEvent(evt),evt.defaultPrevented}return!1}DragDrop.prototype.addAdditionalEventListeners=function(){this._devicePixelRatio=window.devicePixelRatio||1,dom.addEventListener(document,"pointermove",this._boundPointerMove,{passive:!1,capture:!1}),dom.addEventListener(document,"touchmove",this._boundPointerMove,{passive:!1,capture:!1}),window.PointerEvent?(dom.addEventListener(document,"pointerup",this._boundPointerUp,{passive:!0}),dom.addEventListener(document,"pointercancel",this._boundPointerUp,{passive:!0})):dom.addEventListener(document,"touchend",this._boundPointerUp,{passive:!0}),dom.addEventListener(document,"contextmenu",this._boundContextMenu,{passive:!0})},DragDrop.prototype.removeAdditionalEventListeners=function(){dom.removeEventListener(document,"pointermove",this._boundPointerMove,{passive:!1,capture:!1}),dom.removeEventListener(document,"touchmove",this._boundPointerMove,{passive:!1,capture:!1}),dom.removeEventListener(document,"pointerup",this._boundPointerUp,{passive:!0}),dom.removeEventListener(document,"pointercancel",this._boundPointerUp,{passive:!0}),dom.removeEventListener(document,"touchend",this._boundPointerUp,{passive:!0}),dom.removeEventListener(document,"