HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //usr/share/opensearch-dashboards/node_modules/react-focus-on/dist/es5/Effect.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var aria_hidden_1 = require("aria-hidden");
var InteractivityDisabler_1 = require("./InteractivityDisabler");
var medium_1 = require("./medium");
var react_1 = require("react");
var extractRef = function (ref) {
    return 'current' in ref ? ref.current : ref;
};
function Effect(_a) {
    var setLockProps = _a.setLockProps, onEscapeKey = _a.onEscapeKey, onClickOutside = _a.onClickOutside, shards = _a.shards, onActivation = _a.onActivation, onDeactivation = _a.onDeactivation, noIsolation = _a.noIsolation;
    var _b = react_1.useState(undefined), activeNode = _b[0], setActiveNode = _b[1];
    var lastEventTarget = react_1.useRef(null);
    var mouseTouches = react_1.useRef(0);
    React.useEffect(function () {
        var onKeyDown = function (event) {
            if (!event.defaultPrevented) {
                if ((event.code === 'Escape' ||
                    event.key === 'Escape' ||
                    event.keyCode === 27) &&
                    onEscapeKey) {
                    onEscapeKey(event);
                }
            }
        };
        var onMouseDown = function (event) {
            if (event.defaultPrevented ||
                event.target === lastEventTarget.current ||
                (event instanceof MouseEvent && event.button !== 0)) {
                return;
            }
            if (shards &&
                shards
                    .map(extractRef)
                    .some(function (node) {
                    return (node && node.contains(event.target)) ||
                        node === event.target;
                })) {
                return;
            }
            if (onClickOutside) {
                onClickOutside(event);
            }
        };
        var onTouchStart = function (event) {
            onMouseDown(event);
            mouseTouches.current = event.touches.length;
        };
        var onTouchEnd = function (event) {
            mouseTouches.current = event.touches.length;
        };
        if (activeNode) {
            document.addEventListener('keydown', onKeyDown);
            document.addEventListener('mousedown', onMouseDown);
            document.addEventListener('touchstart', onTouchStart);
            document.addEventListener('touchend', onTouchEnd);
            return function () {
                document.removeEventListener('keydown', onKeyDown);
                document.removeEventListener('mousedown', onMouseDown);
                document.removeEventListener('touchstart', onTouchStart);
                document.removeEventListener('touchend', onTouchEnd);
            };
        }
    }, [activeNode, onClickOutside, onEscapeKey]);
    react_1.useEffect(function () {
        if (activeNode) {
            if (onActivation) {
                onActivation(activeNode);
            }
            return function () {
                if (onDeactivation) {
                    onDeactivation();
                }
            };
        }
    }, [!!activeNode]);
    react_1.useEffect(function () {
        var _undo = function () { return null; };
        var unmounted = false;
        var onNodeActivation = function (node) {
            _undo = aria_hidden_1.hideOthers([node].concat((shards || []).map(extractRef)), document.body, noIsolation ? undefined : medium_1.focusHiddenMarker);
            setActiveNode(function () { return node; });
        };
        var onNodeDeactivation = function () {
            _undo();
            if (!unmounted) {
                setActiveNode(null);
            }
        };
        setLockProps({
            onMouseDown: function (e) {
                lastEventTarget.current = e.target;
            },
            onTouchStart: function (e) {
                lastEventTarget.current = e.target;
            },
            onActivation: onNodeActivation,
            onDeactivation: onNodeDeactivation
        });
        return function () {
            unmounted = true;
            setLockProps(false);
        };
    }, []);
    return React.createElement(InteractivityDisabler_1.InteractivityDisabler, null);
}
exports.Effect = Effect;