You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
12 KiB
1 line
12 KiB
{"ast":null,"code":"import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nconst noop = () => {};\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nexport const getRefTarget = ref => ref && ('current' in ref ? ref.current : ref);\nconst InitialTriggerEvents = {\n click: 'mousedown',\n mouseup: 'mousedown',\n pointerup: 'pointerdown'\n};\n/**\n * The `useClickOutside` hook registers your callback on the document that fires\n * when a pointer event is registered outside of the provided ref or element.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onClickOutside\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\n\nfunction useClickOutside(ref) {\n let onClickOutside = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let {\n disabled,\n clickTrigger = 'click'\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const preventMouseClickOutsideRef = useRef(false);\n const waitingForTrigger = useRef(false);\n const handleMouseCapture = useCallback(e => {\n const currentTarget = getRefTarget(ref);\n warning(!!currentTarget, 'ClickOutside captured a close event but does not have a ref to compare it to. ' + 'useClickOutside(), should be passed a ref that resolves to a DOM node');\n preventMouseClickOutsideRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, e.target) || waitingForTrigger.current;\n waitingForTrigger.current = false;\n }, [ref]);\n const handleInitialMouse = useEventCallback(e => {\n const currentTarget = getRefTarget(ref);\n if (currentTarget && contains(currentTarget, e.target)) {\n waitingForTrigger.current = true;\n }\n });\n const handleMouse = useEventCallback(e => {\n if (!preventMouseClickOutsideRef.current) {\n onClickOutside(e);\n }\n });\n useEffect(() => {\n if (disabled || ref == null) return undefined;\n const doc = ownerDocument(getRefTarget(ref)); // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n let currentEvent = (doc.defaultView || window).event;\n let removeInitialTriggerListener = null;\n if (InitialTriggerEvents[clickTrigger]) {\n removeInitialTriggerListener = listen(doc, InitialTriggerEvents[clickTrigger], handleInitialMouse, true);\n } // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n const removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n const removeMouseListener = listen(doc, clickTrigger, e => {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n handleMouse(e);\n });\n let mobileSafariHackListeners = [];\n if ('ontouchstart' in doc.documentElement) {\n mobileSafariHackListeners = [].slice.call(doc.body.children).map(el => listen(el, 'mousemove', noop));\n }\n return () => {\n removeInitialTriggerListener == null ? void 0 : removeInitialTriggerListener();\n removeMouseCaptureListener();\n removeMouseListener();\n mobileSafariHackListeners.forEach(remove => remove());\n };\n }, [ref, disabled, clickTrigger, handleMouseCapture, handleInitialMouse, handleMouse]);\n}\nexport default useClickOutside;","map":{"version":3,"names":["contains","listen","ownerDocument","useCallback","useEffect","useRef","useEventCallback","warning","noop","isLeftClickEvent","event","button","isModifiedEvent","metaKey","altKey","ctrlKey","shiftKey","getRefTarget","ref","current","InitialTriggerEvents","click","mouseup","pointerup","useClickOutside","onClickOutside","disabled","clickTrigger","preventMouseClickOutsideRef","waitingForTrigger","handleMouseCapture","e","currentTarget","target","handleInitialMouse","handleMouse","undefined","doc","currentEvent","defaultView","window","removeInitialTriggerListener","removeMouseCaptureListener","removeMouseListener","mobileSafariHackListeners","documentElement","slice","call","body","children","map","el","forEach","remove"],"sources":["C:/Cours/SAE/SAE-3.01/Scripted/Scripted/website/node_modules/@restart/ui/esm/useClickOutside.js"],"sourcesContent":["import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\n\nconst noop = () => {};\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const getRefTarget = ref => ref && ('current' in ref ? ref.current : ref);\nconst InitialTriggerEvents = {\n click: 'mousedown',\n mouseup: 'mousedown',\n pointerup: 'pointerdown'\n};\n/**\n * The `useClickOutside` hook registers your callback on the document that fires\n * when a pointer event is registered outside of the provided ref or element.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onClickOutside\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\n\nfunction useClickOutside(ref, onClickOutside = noop, {\n disabled,\n clickTrigger = 'click'\n} = {}) {\n const preventMouseClickOutsideRef = useRef(false);\n const waitingForTrigger = useRef(false);\n const handleMouseCapture = useCallback(e => {\n const currentTarget = getRefTarget(ref);\n warning(!!currentTarget, 'ClickOutside captured a close event but does not have a ref to compare it to. ' + 'useClickOutside(), should be passed a ref that resolves to a DOM node');\n preventMouseClickOutsideRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, e.target) || waitingForTrigger.current;\n waitingForTrigger.current = false;\n }, [ref]);\n const handleInitialMouse = useEventCallback(e => {\n const currentTarget = getRefTarget(ref);\n\n if (currentTarget && contains(currentTarget, e.target)) {\n waitingForTrigger.current = true;\n }\n });\n const handleMouse = useEventCallback(e => {\n if (!preventMouseClickOutsideRef.current) {\n onClickOutside(e);\n }\n });\n useEffect(() => {\n if (disabled || ref == null) return undefined;\n const doc = ownerDocument(getRefTarget(ref)); // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n let currentEvent = (doc.defaultView || window).event;\n let removeInitialTriggerListener = null;\n\n if (InitialTriggerEvents[clickTrigger]) {\n removeInitialTriggerListener = listen(doc, InitialTriggerEvents[clickTrigger], handleInitialMouse, true);\n } // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n\n const removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n const removeMouseListener = listen(doc, clickTrigger, e => {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleMouse(e);\n });\n let mobileSafariHackListeners = [];\n\n if ('ontouchstart' in doc.documentElement) {\n mobileSafariHackListeners = [].slice.call(doc.body.children).map(el => listen(el, 'mousemove', noop));\n }\n\n return () => {\n removeInitialTriggerListener == null ? void 0 : removeInitialTriggerListener();\n removeMouseCaptureListener();\n removeMouseListener();\n mobileSafariHackListeners.forEach(remove => remove());\n };\n }, [ref, disabled, clickTrigger, handleMouseCapture, handleInitialMouse, handleMouse]);\n}\n\nexport default useClickOutside;"],"mappings":"AAAA,OAAOA,QAAQ,MAAM,sBAAsB;AAC3C,OAAOC,MAAM,MAAM,oBAAoB;AACvC,OAAOC,aAAa,MAAM,2BAA2B;AACrD,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACtD,OAAOC,gBAAgB,MAAM,iCAAiC;AAC9D,OAAOC,OAAO,MAAM,SAAS;AAE7B,MAAMC,IAAI,GAAG,MAAM,CAAC,CAAC;AAErB,SAASC,gBAAgB,CAACC,KAAK,EAAE;EAC/B,OAAOA,KAAK,CAACC,MAAM,KAAK,CAAC;AAC3B;AAEA,SAASC,eAAe,CAACF,KAAK,EAAE;EAC9B,OAAO,CAAC,EAAEA,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACI,MAAM,IAAIJ,KAAK,CAACK,OAAO,IAAIL,KAAK,CAACM,QAAQ,CAAC;AAC7E;AAEA,OAAO,MAAMC,YAAY,GAAGC,GAAG,IAAIA,GAAG,KAAK,SAAS,IAAIA,GAAG,GAAGA,GAAG,CAACC,OAAO,GAAGD,GAAG,CAAC;AAChF,MAAME,oBAAoB,GAAG;EAC3BC,KAAK,EAAE,WAAW;EAClBC,OAAO,EAAE,WAAW;EACpBC,SAAS,EAAE;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASC,eAAe,CAACN,GAAG,EAGpB;EAAA,IAHsBO,cAAc,uEAAGjB,IAAI;EAAA,IAAE;IACnDkB,QAAQ;IACRC,YAAY,GAAG;EACjB,CAAC,uEAAG,CAAC,CAAC;EACJ,MAAMC,2BAA2B,GAAGvB,MAAM,CAAC,KAAK,CAAC;EACjD,MAAMwB,iBAAiB,GAAGxB,MAAM,CAAC,KAAK,CAAC;EACvC,MAAMyB,kBAAkB,GAAG3B,WAAW,CAAC4B,CAAC,IAAI;IAC1C,MAAMC,aAAa,GAAGf,YAAY,CAACC,GAAG,CAAC;IACvCX,OAAO,CAAC,CAAC,CAACyB,aAAa,EAAE,gFAAgF,GAAG,uEAAuE,CAAC;IACpLJ,2BAA2B,CAACT,OAAO,GAAG,CAACa,aAAa,IAAIpB,eAAe,CAACmB,CAAC,CAAC,IAAI,CAACtB,gBAAgB,CAACsB,CAAC,CAAC,IAAI,CAAC,CAAC/B,QAAQ,CAACgC,aAAa,EAAED,CAAC,CAACE,MAAM,CAAC,IAAIJ,iBAAiB,CAACV,OAAO;IACtKU,iBAAiB,CAACV,OAAO,GAAG,KAAK;EACnC,CAAC,EAAE,CAACD,GAAG,CAAC,CAAC;EACT,MAAMgB,kBAAkB,GAAG5B,gBAAgB,CAACyB,CAAC,IAAI;IAC/C,MAAMC,aAAa,GAAGf,YAAY,CAACC,GAAG,CAAC;IAEvC,IAAIc,aAAa,IAAIhC,QAAQ,CAACgC,aAAa,EAAED,CAAC,CAACE,MAAM,CAAC,EAAE;MACtDJ,iBAAiB,CAACV,OAAO,GAAG,IAAI;IAClC;EACF,CAAC,CAAC;EACF,MAAMgB,WAAW,GAAG7B,gBAAgB,CAACyB,CAAC,IAAI;IACxC,IAAI,CAACH,2BAA2B,CAACT,OAAO,EAAE;MACxCM,cAAc,CAACM,CAAC,CAAC;IACnB;EACF,CAAC,CAAC;EACF3B,SAAS,CAAC,MAAM;IACd,IAAIsB,QAAQ,IAAIR,GAAG,IAAI,IAAI,EAAE,OAAOkB,SAAS;IAC7C,MAAMC,GAAG,GAAGnC,aAAa,CAACe,YAAY,CAACC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C;;IAEA,IAAIoB,YAAY,GAAG,CAACD,GAAG,CAACE,WAAW,IAAIC,MAAM,EAAE9B,KAAK;IACpD,IAAI+B,4BAA4B,GAAG,IAAI;IAEvC,IAAIrB,oBAAoB,CAACO,YAAY,CAAC,EAAE;MACtCc,4BAA4B,GAAGxC,MAAM,CAACoC,GAAG,EAAEjB,oBAAoB,CAACO,YAAY,CAAC,EAAEO,kBAAkB,EAAE,IAAI,CAAC;IAC1G,CAAC,CAAC;IACF;IACA;;IAGA,MAAMQ,0BAA0B,GAAGzC,MAAM,CAACoC,GAAG,EAAEV,YAAY,EAAEG,kBAAkB,EAAE,IAAI,CAAC;IACtF,MAAMa,mBAAmB,GAAG1C,MAAM,CAACoC,GAAG,EAAEV,YAAY,EAAEI,CAAC,IAAI;MACzD;MACA,IAAIA,CAAC,KAAKO,YAAY,EAAE;QACtBA,YAAY,GAAGF,SAAS;QACxB;MACF;MAEAD,WAAW,CAACJ,CAAC,CAAC;IAChB,CAAC,CAAC;IACF,IAAIa,yBAAyB,GAAG,EAAE;IAElC,IAAI,cAAc,IAAIP,GAAG,CAACQ,eAAe,EAAE;MACzCD,yBAAyB,GAAG,EAAE,CAACE,KAAK,CAACC,IAAI,CAACV,GAAG,CAACW,IAAI,CAACC,QAAQ,CAAC,CAACC,GAAG,CAACC,EAAE,IAAIlD,MAAM,CAACkD,EAAE,EAAE,WAAW,EAAE3C,IAAI,CAAC,CAAC;IACvG;IAEA,OAAO,MAAM;MACXiC,4BAA4B,IAAI,IAAI,GAAG,KAAK,CAAC,GAAGA,4BAA4B,EAAE;MAC9EC,0BAA0B,EAAE;MAC5BC,mBAAmB,EAAE;MACrBC,yBAAyB,CAACQ,OAAO,CAACC,MAAM,IAAIA,MAAM,EAAE,CAAC;IACvD,CAAC;EACH,CAAC,EAAE,CAACnC,GAAG,EAAEQ,QAAQ,EAAEC,YAAY,EAAEG,kBAAkB,EAAEI,kBAAkB,EAAEC,WAAW,CAAC,CAAC;AACxF;AAEA,eAAeX,eAAe"},"metadata":{},"sourceType":"module"} |