forked from enviPath/enviPy
Current Dev State
This commit is contained in:
109
static/js/ketcher2/node_modules/classnames/dedupe.js
generated
vendored
Normal file
109
static/js/ketcher2/node_modules/classnames/dedupe.js
generated
vendored
Normal file
@ -0,0 +1,109 @@
|
||||
/*!
|
||||
Copyright (c) 2016 Jed Watson.
|
||||
Licensed under the MIT License (MIT), see
|
||||
http://jedwatson.github.io/classnames
|
||||
*/
|
||||
/* global define */
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var classNames = (function () {
|
||||
// don't inherit from Object so we can skip hasOwnProperty check later
|
||||
// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232
|
||||
function StorageObject() {}
|
||||
StorageObject.prototype = Object.create(null);
|
||||
|
||||
function _parseArray (resultSet, array) {
|
||||
var length = array.length;
|
||||
|
||||
for (var i = 0; i < length; ++i) {
|
||||
_parse(resultSet, array[i]);
|
||||
}
|
||||
}
|
||||
|
||||
var hasOwn = {}.hasOwnProperty;
|
||||
|
||||
function _parseNumber (resultSet, num) {
|
||||
resultSet[num] = true;
|
||||
}
|
||||
|
||||
function _parseObject (resultSet, object) {
|
||||
for (var k in object) {
|
||||
if (hasOwn.call(object, k)) {
|
||||
// set value to false instead of deleting it to avoid changing object structure
|
||||
// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions
|
||||
resultSet[k] = !!object[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var SPACE = /\s+/;
|
||||
function _parseString (resultSet, str) {
|
||||
var array = str.split(SPACE);
|
||||
var length = array.length;
|
||||
|
||||
for (var i = 0; i < length; ++i) {
|
||||
resultSet[array[i]] = true;
|
||||
}
|
||||
}
|
||||
|
||||
function _parse (resultSet, arg) {
|
||||
if (!arg) return;
|
||||
var argType = typeof arg;
|
||||
|
||||
// 'foo bar'
|
||||
if (argType === 'string') {
|
||||
_parseString(resultSet, arg);
|
||||
|
||||
// ['foo', 'bar', ...]
|
||||
} else if (Array.isArray(arg)) {
|
||||
_parseArray(resultSet, arg);
|
||||
|
||||
// { 'foo': true, ... }
|
||||
} else if (argType === 'object') {
|
||||
_parseObject(resultSet, arg);
|
||||
|
||||
// '130'
|
||||
} else if (argType === 'number') {
|
||||
_parseNumber(resultSet, arg);
|
||||
}
|
||||
}
|
||||
|
||||
function _classNames () {
|
||||
// don't leak arguments
|
||||
// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments
|
||||
var len = arguments.length;
|
||||
var args = Array(len);
|
||||
for (var i = 0; i < len; i++) {
|
||||
args[i] = arguments[i];
|
||||
}
|
||||
|
||||
var classSet = new StorageObject();
|
||||
_parseArray(classSet, args);
|
||||
|
||||
var list = [];
|
||||
|
||||
for (var k in classSet) {
|
||||
if (classSet[k]) {
|
||||
list.push(k)
|
||||
}
|
||||
}
|
||||
|
||||
return list.join(' ');
|
||||
}
|
||||
|
||||
return _classNames;
|
||||
})();
|
||||
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
module.exports = classNames;
|
||||
} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
|
||||
// register as 'classnames', consistent with npm package name
|
||||
define('classnames', [], function () {
|
||||
return classNames;
|
||||
});
|
||||
} else {
|
||||
window.classNames = classNames;
|
||||
}
|
||||
}());
|
||||
Reference in New Issue
Block a user