5 lines
1.7 KiB
JavaScript
5 lines
1.7 KiB
JavaScript
/* interact.js 1.10.27 | https://raw.github.com/taye/interact.js/main/LICENSE */
|
|
|
|
import{nodeContains,matchesSelector}from"../utils/domUtils.prod.js";import is from"../utils/is.prod.js";import{getWindow}from"../utils/window.prod.js";const preventDefault=function(t){return/^(always|never|auto)$/.test(t)?(this.options.preventDefault=t,this):is.bool(t)?(this.options.preventDefault=t?"always":"never",this):this.options.preventDefault};function checkAndPreventDefault(t,e,n){const r=t.options.preventDefault;if("never"!==r)if("always"!==r){if(e.events.supportsPassive&&/^touch(start|move)$/.test(n.type)){const t=getWindow(n.target).document,r=e.getDocOptions(t);if(!r||!r.events||!1!==r.events.passive)return}/^(mouse|pointer|touch)*(down|start)/i.test(n.type)||is.element(n.target)&&matchesSelector(n.target,"input,select,textarea,[contenteditable=true],[contenteditable=true] *")||n.preventDefault()}else n.preventDefault()}function onInteractionEvent(t){let{interaction:e,event:n}=t;e.interactable&&e.interactable.checkAndPreventDefault(n)}function install(t){const{Interactable:e}=t;e.prototype.preventDefault=preventDefault,e.prototype.checkAndPreventDefault=function(e){return checkAndPreventDefault(this,t,e)},t.interactions.docEvents.push({type:"dragstart",listener(e){for(const n of t.interactions.list)if(n.element&&(n.element===e.target||nodeContains(n.element,e.target)))return void n.interactable.checkAndPreventDefault(e)}})}var interactablePreventDefault={id:"core/interactablePreventDefault",install:install,listeners:["down","move","up","cancel"].reduce(((t,e)=>(t["interactions:"+e]=onInteractionEvent,t)),{})};export{interactablePreventDefault as default,install};
|
|
//# sourceMappingURL=interactablePreventDefault.prod.js.map
|