conveyal/modeify

View on GitHub
client/components/jkroso/classes/1.1.0/fallback.js

Summary

Maintainability
A
0 mins
Test Coverage

var index = require('component-indexof')

exports.add = function(name, el){
    var arr = exports.array(el)
    if (index(arr, name) < 0) {
        arr.push(name)
        el.className = arr.join(' ')
    }
}

exports.remove = function(name, el){
    if (name instanceof RegExp) {
        return exports.removeMatching(name, el)
    }
    var arr = exports.array(el)
    var i = index(arr, name)
    if (i >= 0) {
        arr.splice(i, 1)
        el.className = arr.join(' ')
    }
}

exports.removeMatching = function(re, el){
    var arr = exports.array(el)
    for (var i = 0; i < arr.length;) {
        if (re.test(arr[i])) arr.splice(i, 1)
        else i++
    }
    el.className = arr.join(' ')
}

exports.toggle = function(name, el){
    if (exports.has(name, el)) {
        exports.remove(name, el)
    } else {
        exports.add(name, el)
    }
}

exports.array = function(el){
    return el.className.match(/([^\s]+)/g) || []
}

exports.has =
exports.contains = function(name, el){
    return index(exports.array(el), name) >= 0
}