UNPKG

react-dom-event

Version:

React context for subscribing to all DOM user interaction events

3 lines (2 loc) 1.91 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).reactDomEvent={},e.React)}(this,function(e,t){"use strict";function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function r(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var o=t.createContext(void 0);e.EventContext=o,e.EventProvider=function(e){var n=e.events,r=void 0===n?["click"]:n,i=e.children,u=t.useState([])[0];function c(e){u.forEach(function(t){return t(e)})}return t.useEffect(function(){return r.forEach(function(e){return window.document.addEventListener(e,c,!0)}),function(){return r.forEach(function(e){return window.document.removeEventListener(e,c,!0)})}}),t.createElement(o.Provider,{value:{subscribe:function(e){return u.push(e),function(){return u.splice(u.indexOf(e),1)}}}},i)},e.useEvent=function(e,n){var i=t.useContext(o);if(!i)throw new Error("react-dom-event: subscribe not found on context. You might be missing the EventProvider or have multiple instances of react-dom-event");t.useEffect(function(){return i.subscribe(e)},[i.subscribe,e].concat(r(n)))}}); //# sourceMappingURL=react-dom-event.min.cjs.map