@bianic-ui/utils
Version:
Common utilties and types for Bianic UI
86 lines (67 loc) • 1.81 kB
JavaScript
exports.__esModule = true;
exports.mapResponsive = mapResponsive;
exports.objectToArrayNotation = objectToArrayNotation;
exports.arrayToObjectNotation = arrayToObjectNotation;
exports.isResponsiveObjectLike = isResponsiveObjectLike;
exports.breakpoints = void 0;
var _assertion = require("./assertion");
var _object = require("./object");
var _array = require("./array");
var breakpoints = Object.freeze(["base", "sm", "md", "lg", "xl"]);
exports.breakpoints = breakpoints;
function mapResponsive(prop, mapper) {
if ((0, _assertion.isArray)(prop)) {
return prop.map(function (item) {
if (item === null) {
return null;
}
return mapper(item);
});
}
if ((0, _assertion.isObject)(prop)) {
return (0, _object.objectKeys)(prop).reduce(function (result, key) {
result[key] = mapper(prop[key]);
return result;
}, {});
}
if (prop != null) {
return mapper(prop);
}
return null;
}
function objectToArrayNotation(obj, bps) {
if (bps === void 0) {
bps = breakpoints;
}
var result = bps.map(function (br) {
var _obj$br;
return (_obj$br = obj[br]) != null ? _obj$br : null;
});
while ((0, _array.getLastItem)(result) === null) {
result.pop();
}
return result;
}
function arrayToObjectNotation(values, bps) {
if (bps === void 0) {
bps = breakpoints;
}
var result = {};
values.forEach(function (value, index) {
var key = bps[index];
if (value == null) return;
result[key] = value;
});
return result;
}
function isResponsiveObjectLike(obj, bps) {
if (bps === void 0) {
bps = breakpoints;
}
var keys = Object.keys(obj);
return keys.length > 0 && keys.every(function (key) {
return bps.includes(key);
});
}
//# sourceMappingURL=responsive.js.map
;