v1.0 with SW PWA enabled
This commit is contained in:
29
frontend/node_modules/aria-hidden/dist/es2015/index.d.ts
generated
vendored
Normal file
29
frontend/node_modules/aria-hidden/dist/es2015/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
export type Undo = () => void;
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as aria-hidden
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export declare const hideOthers: (originalTarget: Element | Element[], parentNode?: HTMLElement, markerName?: string) => Undo;
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as inert
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export declare const inertOthers: (originalTarget: Element | Element[], parentNode?: HTMLElement, markerName?: string) => Undo;
|
||||
/**
|
||||
* @returns if current browser supports inert
|
||||
*/
|
||||
export declare const supportsInert: () => boolean;
|
||||
/**
|
||||
* Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export declare const suppressOthers: (originalTarget: Element | Element[], parentNode?: HTMLElement, markerName?: string) => Undo;
|
||||
167
frontend/node_modules/aria-hidden/dist/es2015/index.js
generated
vendored
Normal file
167
frontend/node_modules/aria-hidden/dist/es2015/index.js
generated
vendored
Normal file
@ -0,0 +1,167 @@
|
||||
var getDefaultParent = function (originalTarget) {
|
||||
if (typeof document === 'undefined') {
|
||||
return null;
|
||||
}
|
||||
var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;
|
||||
return sampleTarget.ownerDocument.body;
|
||||
};
|
||||
var counterMap = new WeakMap();
|
||||
var uncontrolledNodes = new WeakMap();
|
||||
var markerMap = {};
|
||||
var lockCount = 0;
|
||||
var unwrapHost = function (node) {
|
||||
return node && (node.host || unwrapHost(node.parentNode));
|
||||
};
|
||||
var correctTargets = function (parent, targets) {
|
||||
return targets
|
||||
.map(function (target) {
|
||||
if (parent.contains(target)) {
|
||||
return target;
|
||||
}
|
||||
var correctedTarget = unwrapHost(target);
|
||||
if (correctedTarget && parent.contains(correctedTarget)) {
|
||||
return correctedTarget;
|
||||
}
|
||||
console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');
|
||||
return null;
|
||||
})
|
||||
.filter(function (x) { return Boolean(x); });
|
||||
};
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as aria-hidden
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @param {String} [controlAttribute] - html Attribute to control
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
var applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {
|
||||
var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
|
||||
if (!markerMap[markerName]) {
|
||||
markerMap[markerName] = new WeakMap();
|
||||
}
|
||||
var markerCounter = markerMap[markerName];
|
||||
var hiddenNodes = [];
|
||||
var elementsToKeep = new Set();
|
||||
var elementsToStop = new Set(targets);
|
||||
var keep = function (el) {
|
||||
if (!el || elementsToKeep.has(el)) {
|
||||
return;
|
||||
}
|
||||
elementsToKeep.add(el);
|
||||
keep(el.parentNode);
|
||||
};
|
||||
targets.forEach(keep);
|
||||
var deep = function (parent) {
|
||||
if (!parent || elementsToStop.has(parent)) {
|
||||
return;
|
||||
}
|
||||
Array.prototype.forEach.call(parent.children, function (node) {
|
||||
if (elementsToKeep.has(node)) {
|
||||
deep(node);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
var attr = node.getAttribute(controlAttribute);
|
||||
var alreadyHidden = attr !== null && attr !== 'false';
|
||||
var counterValue = (counterMap.get(node) || 0) + 1;
|
||||
var markerValue = (markerCounter.get(node) || 0) + 1;
|
||||
counterMap.set(node, counterValue);
|
||||
markerCounter.set(node, markerValue);
|
||||
hiddenNodes.push(node);
|
||||
if (counterValue === 1 && alreadyHidden) {
|
||||
uncontrolledNodes.set(node, true);
|
||||
}
|
||||
if (markerValue === 1) {
|
||||
node.setAttribute(markerName, 'true');
|
||||
}
|
||||
if (!alreadyHidden) {
|
||||
node.setAttribute(controlAttribute, 'true');
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
console.error('aria-hidden: cannot operate on ', node, e);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
deep(parentNode);
|
||||
elementsToKeep.clear();
|
||||
lockCount++;
|
||||
return function () {
|
||||
hiddenNodes.forEach(function (node) {
|
||||
var counterValue = counterMap.get(node) - 1;
|
||||
var markerValue = markerCounter.get(node) - 1;
|
||||
counterMap.set(node, counterValue);
|
||||
markerCounter.set(node, markerValue);
|
||||
if (!counterValue) {
|
||||
if (!uncontrolledNodes.has(node)) {
|
||||
node.removeAttribute(controlAttribute);
|
||||
}
|
||||
uncontrolledNodes.delete(node);
|
||||
}
|
||||
if (!markerValue) {
|
||||
node.removeAttribute(markerName);
|
||||
}
|
||||
});
|
||||
lockCount--;
|
||||
if (!lockCount) {
|
||||
// clear
|
||||
counterMap = new WeakMap();
|
||||
counterMap = new WeakMap();
|
||||
uncontrolledNodes = new WeakMap();
|
||||
markerMap = {};
|
||||
}
|
||||
};
|
||||
};
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as aria-hidden
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export var hideOthers = function (originalTarget, parentNode, markerName) {
|
||||
if (markerName === void 0) { markerName = 'data-aria-hidden'; }
|
||||
var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
|
||||
var activeParentNode = parentNode || getDefaultParent(originalTarget);
|
||||
if (!activeParentNode) {
|
||||
return function () { return null; };
|
||||
}
|
||||
// we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10
|
||||
// and script elements, as they have no impact on accessibility.
|
||||
targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));
|
||||
return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');
|
||||
};
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as inert
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export var inertOthers = function (originalTarget, parentNode, markerName) {
|
||||
if (markerName === void 0) { markerName = 'data-inert-ed'; }
|
||||
var activeParentNode = parentNode || getDefaultParent(originalTarget);
|
||||
if (!activeParentNode) {
|
||||
return function () { return null; };
|
||||
}
|
||||
return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');
|
||||
};
|
||||
/**
|
||||
* @returns if current browser supports inert
|
||||
*/
|
||||
export var supportsInert = function () {
|
||||
return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');
|
||||
};
|
||||
/**
|
||||
* Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export var suppressOthers = function (originalTarget, parentNode, markerName) {
|
||||
if (markerName === void 0) { markerName = 'data-suppressed'; }
|
||||
return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);
|
||||
};
|
||||
29
frontend/node_modules/aria-hidden/dist/es2019/index.d.ts
generated
vendored
Normal file
29
frontend/node_modules/aria-hidden/dist/es2019/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
export type Undo = () => void;
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as aria-hidden
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export declare const hideOthers: (originalTarget: Element | Element[], parentNode?: HTMLElement, markerName?: string) => Undo;
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as inert
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export declare const inertOthers: (originalTarget: Element | Element[], parentNode?: HTMLElement, markerName?: string) => Undo;
|
||||
/**
|
||||
* @returns if current browser supports inert
|
||||
*/
|
||||
export declare const supportsInert: () => boolean;
|
||||
/**
|
||||
* Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export declare const suppressOthers: (originalTarget: Element | Element[], parentNode?: HTMLElement, markerName?: string) => Undo;
|
||||
156
frontend/node_modules/aria-hidden/dist/es2019/index.js
generated
vendored
Normal file
156
frontend/node_modules/aria-hidden/dist/es2019/index.js
generated
vendored
Normal file
@ -0,0 +1,156 @@
|
||||
const getDefaultParent = (originalTarget) => {
|
||||
if (typeof document === 'undefined') {
|
||||
return null;
|
||||
}
|
||||
const sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;
|
||||
return sampleTarget.ownerDocument.body;
|
||||
};
|
||||
let counterMap = new WeakMap();
|
||||
let uncontrolledNodes = new WeakMap();
|
||||
let markerMap = {};
|
||||
let lockCount = 0;
|
||||
const unwrapHost = (node) => node && (node.host || unwrapHost(node.parentNode));
|
||||
const correctTargets = (parent, targets) => targets
|
||||
.map((target) => {
|
||||
if (parent.contains(target)) {
|
||||
return target;
|
||||
}
|
||||
const correctedTarget = unwrapHost(target);
|
||||
if (correctedTarget && parent.contains(correctedTarget)) {
|
||||
return correctedTarget;
|
||||
}
|
||||
console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');
|
||||
return null;
|
||||
})
|
||||
.filter((x) => Boolean(x));
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as aria-hidden
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @param {String} [controlAttribute] - html Attribute to control
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
const applyAttributeToOthers = (originalTarget, parentNode, markerName, controlAttribute) => {
|
||||
const targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
|
||||
if (!markerMap[markerName]) {
|
||||
markerMap[markerName] = new WeakMap();
|
||||
}
|
||||
const markerCounter = markerMap[markerName];
|
||||
const hiddenNodes = [];
|
||||
const elementsToKeep = new Set();
|
||||
const elementsToStop = new Set(targets);
|
||||
const keep = (el) => {
|
||||
if (!el || elementsToKeep.has(el)) {
|
||||
return;
|
||||
}
|
||||
elementsToKeep.add(el);
|
||||
keep(el.parentNode);
|
||||
};
|
||||
targets.forEach(keep);
|
||||
const deep = (parent) => {
|
||||
if (!parent || elementsToStop.has(parent)) {
|
||||
return;
|
||||
}
|
||||
Array.prototype.forEach.call(parent.children, (node) => {
|
||||
if (elementsToKeep.has(node)) {
|
||||
deep(node);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
const attr = node.getAttribute(controlAttribute);
|
||||
const alreadyHidden = attr !== null && attr !== 'false';
|
||||
const counterValue = (counterMap.get(node) || 0) + 1;
|
||||
const markerValue = (markerCounter.get(node) || 0) + 1;
|
||||
counterMap.set(node, counterValue);
|
||||
markerCounter.set(node, markerValue);
|
||||
hiddenNodes.push(node);
|
||||
if (counterValue === 1 && alreadyHidden) {
|
||||
uncontrolledNodes.set(node, true);
|
||||
}
|
||||
if (markerValue === 1) {
|
||||
node.setAttribute(markerName, 'true');
|
||||
}
|
||||
if (!alreadyHidden) {
|
||||
node.setAttribute(controlAttribute, 'true');
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
console.error('aria-hidden: cannot operate on ', node, e);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
deep(parentNode);
|
||||
elementsToKeep.clear();
|
||||
lockCount++;
|
||||
return () => {
|
||||
hiddenNodes.forEach((node) => {
|
||||
const counterValue = counterMap.get(node) - 1;
|
||||
const markerValue = markerCounter.get(node) - 1;
|
||||
counterMap.set(node, counterValue);
|
||||
markerCounter.set(node, markerValue);
|
||||
if (!counterValue) {
|
||||
if (!uncontrolledNodes.has(node)) {
|
||||
node.removeAttribute(controlAttribute);
|
||||
}
|
||||
uncontrolledNodes.delete(node);
|
||||
}
|
||||
if (!markerValue) {
|
||||
node.removeAttribute(markerName);
|
||||
}
|
||||
});
|
||||
lockCount--;
|
||||
if (!lockCount) {
|
||||
// clear
|
||||
counterMap = new WeakMap();
|
||||
counterMap = new WeakMap();
|
||||
uncontrolledNodes = new WeakMap();
|
||||
markerMap = {};
|
||||
}
|
||||
};
|
||||
};
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as aria-hidden
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export const hideOthers = (originalTarget, parentNode, markerName = 'data-aria-hidden') => {
|
||||
const targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
|
||||
const activeParentNode = parentNode || getDefaultParent(originalTarget);
|
||||
if (!activeParentNode) {
|
||||
return () => null;
|
||||
}
|
||||
// we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10
|
||||
// and script elements, as they have no impact on accessibility.
|
||||
targets.push(...Array.from(activeParentNode.querySelectorAll('[aria-live], script')));
|
||||
return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');
|
||||
};
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as inert
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export const inertOthers = (originalTarget, parentNode, markerName = 'data-inert-ed') => {
|
||||
const activeParentNode = parentNode || getDefaultParent(originalTarget);
|
||||
if (!activeParentNode) {
|
||||
return () => null;
|
||||
}
|
||||
return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');
|
||||
};
|
||||
/**
|
||||
* @returns if current browser supports inert
|
||||
*/
|
||||
export const supportsInert = () => typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');
|
||||
/**
|
||||
* Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export const suppressOthers = (originalTarget, parentNode, markerName = 'data-suppressed') => (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);
|
||||
29
frontend/node_modules/aria-hidden/dist/es5/index.d.ts
generated
vendored
Normal file
29
frontend/node_modules/aria-hidden/dist/es5/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
export type Undo = () => void;
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as aria-hidden
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export declare const hideOthers: (originalTarget: Element | Element[], parentNode?: HTMLElement, markerName?: string) => Undo;
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as inert
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export declare const inertOthers: (originalTarget: Element | Element[], parentNode?: HTMLElement, markerName?: string) => Undo;
|
||||
/**
|
||||
* @returns if current browser supports inert
|
||||
*/
|
||||
export declare const supportsInert: () => boolean;
|
||||
/**
|
||||
* Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
export declare const suppressOthers: (originalTarget: Element | Element[], parentNode?: HTMLElement, markerName?: string) => Undo;
|
||||
174
frontend/node_modules/aria-hidden/dist/es5/index.js
generated
vendored
Normal file
174
frontend/node_modules/aria-hidden/dist/es5/index.js
generated
vendored
Normal file
@ -0,0 +1,174 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.suppressOthers = exports.supportsInert = exports.inertOthers = exports.hideOthers = void 0;
|
||||
var getDefaultParent = function (originalTarget) {
|
||||
if (typeof document === 'undefined') {
|
||||
return null;
|
||||
}
|
||||
var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;
|
||||
return sampleTarget.ownerDocument.body;
|
||||
};
|
||||
var counterMap = new WeakMap();
|
||||
var uncontrolledNodes = new WeakMap();
|
||||
var markerMap = {};
|
||||
var lockCount = 0;
|
||||
var unwrapHost = function (node) {
|
||||
return node && (node.host || unwrapHost(node.parentNode));
|
||||
};
|
||||
var correctTargets = function (parent, targets) {
|
||||
return targets
|
||||
.map(function (target) {
|
||||
if (parent.contains(target)) {
|
||||
return target;
|
||||
}
|
||||
var correctedTarget = unwrapHost(target);
|
||||
if (correctedTarget && parent.contains(correctedTarget)) {
|
||||
return correctedTarget;
|
||||
}
|
||||
console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');
|
||||
return null;
|
||||
})
|
||||
.filter(function (x) { return Boolean(x); });
|
||||
};
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as aria-hidden
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @param {String} [controlAttribute] - html Attribute to control
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
var applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {
|
||||
var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
|
||||
if (!markerMap[markerName]) {
|
||||
markerMap[markerName] = new WeakMap();
|
||||
}
|
||||
var markerCounter = markerMap[markerName];
|
||||
var hiddenNodes = [];
|
||||
var elementsToKeep = new Set();
|
||||
var elementsToStop = new Set(targets);
|
||||
var keep = function (el) {
|
||||
if (!el || elementsToKeep.has(el)) {
|
||||
return;
|
||||
}
|
||||
elementsToKeep.add(el);
|
||||
keep(el.parentNode);
|
||||
};
|
||||
targets.forEach(keep);
|
||||
var deep = function (parent) {
|
||||
if (!parent || elementsToStop.has(parent)) {
|
||||
return;
|
||||
}
|
||||
Array.prototype.forEach.call(parent.children, function (node) {
|
||||
if (elementsToKeep.has(node)) {
|
||||
deep(node);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
var attr = node.getAttribute(controlAttribute);
|
||||
var alreadyHidden = attr !== null && attr !== 'false';
|
||||
var counterValue = (counterMap.get(node) || 0) + 1;
|
||||
var markerValue = (markerCounter.get(node) || 0) + 1;
|
||||
counterMap.set(node, counterValue);
|
||||
markerCounter.set(node, markerValue);
|
||||
hiddenNodes.push(node);
|
||||
if (counterValue === 1 && alreadyHidden) {
|
||||
uncontrolledNodes.set(node, true);
|
||||
}
|
||||
if (markerValue === 1) {
|
||||
node.setAttribute(markerName, 'true');
|
||||
}
|
||||
if (!alreadyHidden) {
|
||||
node.setAttribute(controlAttribute, 'true');
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
console.error('aria-hidden: cannot operate on ', node, e);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
deep(parentNode);
|
||||
elementsToKeep.clear();
|
||||
lockCount++;
|
||||
return function () {
|
||||
hiddenNodes.forEach(function (node) {
|
||||
var counterValue = counterMap.get(node) - 1;
|
||||
var markerValue = markerCounter.get(node) - 1;
|
||||
counterMap.set(node, counterValue);
|
||||
markerCounter.set(node, markerValue);
|
||||
if (!counterValue) {
|
||||
if (!uncontrolledNodes.has(node)) {
|
||||
node.removeAttribute(controlAttribute);
|
||||
}
|
||||
uncontrolledNodes.delete(node);
|
||||
}
|
||||
if (!markerValue) {
|
||||
node.removeAttribute(markerName);
|
||||
}
|
||||
});
|
||||
lockCount--;
|
||||
if (!lockCount) {
|
||||
// clear
|
||||
counterMap = new WeakMap();
|
||||
counterMap = new WeakMap();
|
||||
uncontrolledNodes = new WeakMap();
|
||||
markerMap = {};
|
||||
}
|
||||
};
|
||||
};
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as aria-hidden
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
var hideOthers = function (originalTarget, parentNode, markerName) {
|
||||
if (markerName === void 0) { markerName = 'data-aria-hidden'; }
|
||||
var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
|
||||
var activeParentNode = parentNode || getDefaultParent(originalTarget);
|
||||
if (!activeParentNode) {
|
||||
return function () { return null; };
|
||||
}
|
||||
// we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10
|
||||
// and script elements, as they have no impact on accessibility.
|
||||
targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));
|
||||
return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');
|
||||
};
|
||||
exports.hideOthers = hideOthers;
|
||||
/**
|
||||
* Marks everything except given node(or nodes) as inert
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
var inertOthers = function (originalTarget, parentNode, markerName) {
|
||||
if (markerName === void 0) { markerName = 'data-inert-ed'; }
|
||||
var activeParentNode = parentNode || getDefaultParent(originalTarget);
|
||||
if (!activeParentNode) {
|
||||
return function () { return null; };
|
||||
}
|
||||
return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');
|
||||
};
|
||||
exports.inertOthers = inertOthers;
|
||||
/**
|
||||
* @returns if current browser supports inert
|
||||
*/
|
||||
var supportsInert = function () {
|
||||
return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');
|
||||
};
|
||||
exports.supportsInert = supportsInert;
|
||||
/**
|
||||
* Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way
|
||||
* @param {Element | Element[]} originalTarget - elements to keep on the page
|
||||
* @param [parentNode] - top element, defaults to document.body
|
||||
* @param {String} [markerName] - a special attribute to mark every node
|
||||
* @return {Undo} undo command
|
||||
*/
|
||||
var suppressOthers = function (originalTarget, parentNode, markerName) {
|
||||
if (markerName === void 0) { markerName = 'data-suppressed'; }
|
||||
return ((0, exports.supportsInert)() ? exports.inertOthers : exports.hideOthers)(originalTarget, parentNode, markerName);
|
||||
};
|
||||
exports.suppressOthers = suppressOthers;
|
||||
Reference in New Issue
Block a user