@onenexus/squery
Version:
Interact with Synergy modules/BEM DOM elements
61 lines (46 loc) • 1.79 kB
JavaScript
import getNamespace from '../utilities/getNamespace';
import isModule from './isModule';
import isComponent from './isComponent';
import hasModifier from './hasModifier';
export default function is(node, query, config) {
config = Object.assign(this || {}, config || {});
const namespace = config.namespace || getNamespace(node, false, config);
if (typeof query === 'object') {
const { module, component, modifier } = query;
if (module) {
if (component) {
const namespaceMatch = (namespace === module);
const componentMatch = isComponent(node, component, config);
if (modifier) {
return namespaceMatch && componentMatch && hasModifier(node, modifier, config);
}
return namespaceMatch && componentMatch;
}
if (modifier) {
return isModule(node, module, config) && hasModifier(node, modifier, config);
}
return isModule(node, module, config);
}
if (component) {
if (modifier) {
return isComponent(node, component, config) && hasModifier(node, modifier, config);
}
return isComponent(node, component, config);
}
if (modifier) {
return hasModifier(node, modifier, config)
}
}
if (typeof query === 'string') {
if (isModule(node, query, config)) {
return isModule(node, query, config);
}
if (isComponent(node, query, config)) {
return isComponent(node, query, config);
}
if (hasModifier(node, query, config)) {
return hasModifier(node, query, config);
}
}
return false;
}