react-images
Version:
A mobile-friendly, highly customizable, carousel component for displaying media in ReactJS
60 lines (48 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.className = className;
exports.isTouch = isTouch;
// ==============================
// NO OP
// ==============================
var noop = exports.noop = function noop() {};
// ==============================
// Class Name Prefixer
// ==============================
var CLASS_PREFIX = exports.CLASS_PREFIX = 'react-images';
/**
String representation of component state for styling with class names.
Expects an array of strings OR a string/object pair:
- className(['comp', 'comp-arg', 'comp-arg-2'])
@returns 'react-images__comp react-images__comp-arg react-images__comp-arg-2'
- className('comp', { some: true, state: false })
@returns 'react-images__comp react-images__comp--some'
*/
function className(name, state) {
var arr = Array.isArray(name) ? name : [name];
// loop through state object, remove falsey values and combine with name
if (state && typeof name === 'string') {
for (var _key in state) {
if (state.hasOwnProperty(_key) && state[_key]) {
arr.push(name + '--' + _key);
}
}
}
// prefix everything and return a string
return arr.map(function (cn) {
return CLASS_PREFIX + '__' + cn;
}).join(' ');
}
// ==============================
// Touch Capability Detector
// ==============================
function isTouch() {
try {
document.createEvent('TouchEvent');
return true;
} catch (e) {
return false;
}
}