This commit is contained in:
130
node_modules/react-modal/lib/helpers/classList.js
generated
vendored
Normal file
130
node_modules/react-modal/lib/helpers/classList.js
generated
vendored
Normal file
@@ -0,0 +1,130 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.resetState = resetState;
|
||||
exports.log = log;
|
||||
var htmlClassList = {};
|
||||
var docBodyClassList = {};
|
||||
|
||||
/* eslint-disable no-console */
|
||||
/* istanbul ignore next */
|
||||
function removeClass(at, cls) {
|
||||
at.classList.remove(cls);
|
||||
}
|
||||
|
||||
/* istanbul ignore next */
|
||||
function resetState() {
|
||||
var htmlElement = document.getElementsByTagName("html")[0];
|
||||
for (var cls in htmlClassList) {
|
||||
removeClass(htmlElement, htmlClassList[cls]);
|
||||
}
|
||||
|
||||
var body = document.body;
|
||||
for (var _cls in docBodyClassList) {
|
||||
removeClass(body, docBodyClassList[_cls]);
|
||||
}
|
||||
|
||||
htmlClassList = {};
|
||||
docBodyClassList = {};
|
||||
}
|
||||
|
||||
/* istanbul ignore next */
|
||||
function log() {
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
var classes = document.getElementsByTagName("html")[0].className;
|
||||
var buffer = "Show tracked classes:\n\n";
|
||||
|
||||
buffer += "<html /> (" + classes + "):\n ";
|
||||
for (var x in htmlClassList) {
|
||||
buffer += " " + x + " " + htmlClassList[x] + "\n ";
|
||||
}
|
||||
|
||||
classes = document.body.className;
|
||||
|
||||
buffer += "\n\ndoc.body (" + classes + "):\n ";
|
||||
for (var _x in docBodyClassList) {
|
||||
buffer += " " + _x + " " + docBodyClassList[_x] + "\n ";
|
||||
}
|
||||
|
||||
buffer += "\n";
|
||||
|
||||
console.log(buffer);
|
||||
}
|
||||
}
|
||||
/* eslint-enable no-console */
|
||||
|
||||
/**
|
||||
* Track the number of reference of a class.
|
||||
* @param {object} poll The poll to receive the reference.
|
||||
* @param {string} className The class name.
|
||||
* @return {string}
|
||||
*/
|
||||
var incrementReference = function incrementReference(poll, className) {
|
||||
if (!poll[className]) {
|
||||
poll[className] = 0;
|
||||
}
|
||||
poll[className] += 1;
|
||||
return className;
|
||||
};
|
||||
|
||||
/**
|
||||
* Drop the reference of a class.
|
||||
* @param {object} poll The poll to receive the reference.
|
||||
* @param {string} className The class name.
|
||||
* @return {string}
|
||||
*/
|
||||
var decrementReference = function decrementReference(poll, className) {
|
||||
if (poll[className]) {
|
||||
poll[className] -= 1;
|
||||
}
|
||||
return className;
|
||||
};
|
||||
|
||||
/**
|
||||
* Track a class and add to the given class list.
|
||||
* @param {Object} classListRef A class list of an element.
|
||||
* @param {Object} poll The poll to be used.
|
||||
* @param {Array} classes The list of classes to be tracked.
|
||||
*/
|
||||
var trackClass = function trackClass(classListRef, poll, classes) {
|
||||
classes.forEach(function (className) {
|
||||
incrementReference(poll, className);
|
||||
classListRef.add(className);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Untrack a class and remove from the given class list if the reference
|
||||
* reaches 0.
|
||||
* @param {Object} classListRef A class list of an element.
|
||||
* @param {Object} poll The poll to be used.
|
||||
* @param {Array} classes The list of classes to be untracked.
|
||||
*/
|
||||
var untrackClass = function untrackClass(classListRef, poll, classes) {
|
||||
classes.forEach(function (className) {
|
||||
decrementReference(poll, className);
|
||||
poll[className] === 0 && classListRef.remove(className);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Public inferface to add classes to the document.body.
|
||||
* @param {string} bodyClass The class string to be added.
|
||||
* It may contain more then one class
|
||||
* with ' ' as separator.
|
||||
*/
|
||||
var add = exports.add = function add(element, classString) {
|
||||
return trackClass(element.classList, element.nodeName.toLowerCase() == "html" ? htmlClassList : docBodyClassList, classString.split(" "));
|
||||
};
|
||||
|
||||
/**
|
||||
* Public inferface to remove classes from the document.body.
|
||||
* @param {string} bodyClass The class string to be added.
|
||||
* It may contain more then one class
|
||||
* with ' ' as separator.
|
||||
*/
|
||||
var remove = exports.remove = function remove(element, classString) {
|
||||
return untrackClass(element.classList, element.nodeName.toLowerCase() == "html" ? htmlClassList : docBodyClassList, classString.split(" "));
|
||||
};
|
||||
Reference in New Issue
Block a user