@ariakit/react-core
Version:
Ariakit React core
82 lines (62 loc) • 2.57 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _V7JASX7Scjs = require('./V7JASX7S.cjs');
var _56NPFF7Pcjs = require('./56NPFF7P.cjs');
var _GASMO7Y4cjs = require('./GASMO7Y4.cjs');
var _YVOQ2BCBcjs = require('./YVOQ2BCB.cjs');
var _4SKDRUBRcjs = require('./4SKDRUBR.cjs');
var _AQ2LO7WVcjs = require('./AQ2LO7WV.cjs');
// src/dialog/utils/disable-tree.ts
var _dom = require('@ariakit/core/utils/dom');
var _focus = require('@ariakit/core/utils/focus');
var _misc = require('@ariakit/core/utils/misc');
function disableTree(element, ignoredElements) {
if (!("style" in element)) return _misc.noop;
if (_56NPFF7Pcjs.supportsInert.call(void 0, )) {
return _4SKDRUBRcjs.setProperty.call(void 0, element, "inert", true);
}
const tabbableElements = _focus.getAllTabbableIn.call(void 0, element, true);
const enableElements = tabbableElements.map((element2) => {
if (ignoredElements == null ? void 0 : ignoredElements.some((el) => el && _dom.contains.call(void 0, el, element2))) return _misc.noop;
const restoreFocusMethod = _4SKDRUBRcjs.orchestrate.call(void 0, element2, "focus", () => {
element2.focus = _misc.noop;
return () => {
delete element2.focus;
};
});
return _misc.chain.call(void 0, _4SKDRUBRcjs.setAttribute.call(void 0, element2, "tabindex", "-1"), restoreFocusMethod);
});
return _misc.chain.call(void 0,
...enableElements,
_GASMO7Y4cjs.hideElementFromAccessibilityTree.call(void 0, element),
_4SKDRUBRcjs.assignStyle.call(void 0, element, {
pointerEvents: "none",
userSelect: "none",
cursor: "default"
})
);
}
function disableTreeOutside(id, elements) {
const cleanups = [];
const ids = elements.map((el) => el == null ? void 0 : el.id);
_YVOQ2BCBcjs.walkTreeOutside.call(void 0,
id,
elements,
(element) => {
if (_AQ2LO7WVcjs.isBackdrop.call(void 0, element, ...ids)) return;
if (_V7JASX7Scjs.isFocusTrap.call(void 0, element, ...ids)) return;
cleanups.unshift(disableTree(element, elements));
},
(element) => {
if (!element.hasAttribute("role")) return;
if (elements.some((el) => el && _dom.contains.call(void 0, el, element))) return;
cleanups.unshift(_4SKDRUBRcjs.setAttribute.call(void 0, element, "role", "none"));
}
);
const restoreTreeOutside = () => {
for (const cleanup of cleanups) {
cleanup();
}
};
return restoreTreeOutside;
}
exports.disableTree = disableTree; exports.disableTreeOutside = disableTreeOutside;