UNPKG

@c15t/react

Version:

Developer-first CMP for React: cookie banner, consent manager, preferences centre. GDPR ready with minimal setup and rich customization

2 lines 2.21 kB
'use client'; "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{useFocusTrap:()=>useFocusTrap});let external_react_namespaceObject=require("react");function useFocusTrap(e,t){let r=(0,external_react_namespaceObject.useRef)(null);(0,external_react_namespaceObject.useEffect)(()=>{if(!e||!t||!t.current)return;r.current=document.activeElement;let _=getFocusableElements(t.current);if(_.length>0)setTimeout(()=>{_[0]?.focus()},0);else if(-1!==t.current.tabIndex)try{t.current.focus()}catch{}let c=e=>{if("Tab"!==e.key||!t.current)return;let r=getFocusableElements(t.current);if(0===r.length)return;let _=r[0],c=r.at(-1);e.shiftKey&&document.activeElement===_?(e.preventDefault(),c?.focus()):e.shiftKey||document.activeElement!==c||(e.preventDefault(),_?.focus())};return document.addEventListener("keydown",c),()=>{document.removeEventListener("keydown",c),r.current&&"focus"in r.current&&setTimeout(()=>r.current?.focus(),0)}},[e,t])}function getFocusableElements(e){return Array.from(e.querySelectorAll('a[href]:not([disabled]),button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[contenteditable],[tabindex]:not([tabindex="-1"])')).filter(e=>e.offsetWidth>0&&e.offsetHeight>0)}for(var __webpack_i__ in exports.useFocusTrap=__webpack_exports__.useFocusTrap,__webpack_exports__)-1===["useFocusTrap"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});