react-event-intercept
Version:
React DOM event interceptor
2 lines (1 loc) • 1.53 kB
JavaScript
(function(t,n){typeof exports=="object"&&typeof module<"u"?module.exports=n(require("react")):typeof define=="function"&&define.amd?define(["react"],n):(t=typeof globalThis<"u"?globalThis:t||self,t.eventIntercept=n(t.react))})(this,function(t){"use strict";var h=Object.defineProperty;var l=(t,n,d)=>n in t?h(t,n,{enumerable:!0,configurable:!0,writable:!0,value:d}):t[n]=d;var p=(t,n,d)=>(l(t,typeof n!="symbol"?n+"":n,d),d);const d=(u=>u&&typeof u=="object"&&"default"in u?u:{default:u})(t);class a extends d.default.Component{constructor(i){super(i);p(this,"data",{eventName:[],eventFunc:[]});p(this,"bindDomEvent",()=>{var s;const i=(s=this.props.bindingRef)==null?void 0:s.current;if(i){const e=this.props.bindingEvents||[],r=(e==null?void 0:e.length)||0,o=[],f=[];for(let c=0;c<r;c++)e[c][0]&&e[c][1]&&(o.push(e[c][0]),f.push(e[c][1]),i.addEventListener(e[c][0],this.handleDomEvent));f.length>0&&o.length>0&&o.length===f.length&&(this.data={eventName:o,eventFunc:f})}});p(this,"handleDomEvent",i=>{const s=this.data.eventName.indexOf(i.type),e=this.props.ignoreRef;if(s>-1&&e){let r=i.target;for(;r;){if(e.findIndex(o=>o.current===r)>=0)return;r=r.parentNode}return this.data.eventFunc[s](i),!0}})}componentDidMount(){this.bindDomEvent()}componentWillUnmount(){var s;const i=(s=this.props.bindingRef)==null?void 0:s.current;if(i){const e=this.props.bindingEvents||[],r=(e==null?void 0:e.length)||0;for(let o=0;o<r;o++)e[o][0]&&e[o][1]&&i.removeEventListener(e[o][0],this.handleDomEvent)}}render(){return null}}return a});