@wix/design-system
Version:
@wix/design-system
64 lines (63 loc) • 3.27 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.defineClassNames = exports.createClassNames = exports.NAMESPACE = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _versionedNamespace = require("./versionedNamespace");
var NAMESPACE = exports.NAMESPACE = 'wds';
var kebab = value => value.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
var join = function join() {
for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {
classes[_key] = arguments[_key];
}
return classes.filter(Boolean).join(' ');
};
var createClassNames = exports.createClassNames = function createClassNames(blockName) {
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var versionedNs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _versionedNamespace.versionedNamespace;
var namespaces = versionedNs ? [NAMESPACE, versionedNs] : [NAMESPACE];
var block = "".concat(NAMESPACE, "-").concat(blockName);
var slot = name => "".concat(block, "__").concat(kebab(name));
var variant = (name, value) => "".concat(block, "--").concat(kebab(String(name)), "-").concat(kebab(value));
var state = name => "".concat(block, "--").concat(kebab(name));
var blockClasses = props => {
var _config$variants, _config$states;
var variants = Object.entries((_config$variants = config.variants) !== null && _config$variants !== void 0 ? _config$variants : {}).map(_ref => {
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
name = _ref2[0],
values = _ref2[1];
var value = props[name];
if (!value || !values.includes(value)) return null;
return "--".concat(kebab(name), "-").concat(kebab(value));
}).filter(Boolean);
var states = ((_config$states = config.states) !== null && _config$states !== void 0 ? _config$states : []).filter(name => props[name]).map(name => "--".concat(kebab(name)));
var tails = ['', ...variants, ...states];
return namespaces.flatMap(ns => tails.map(tail => "".concat(ns, "-").concat(blockName).concat(tail)));
};
var root = function root() {
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
for (var _len2 = arguments.length, classes = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
classes[_key2 - 1] = arguments[_key2];
}
return join(...blockClasses(props), ...classes);
};
var element = function element(name) {
for (var _len3 = arguments.length, classes = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
classes[_key3 - 1] = arguments[_key3];
}
return join(...namespaces.map(ns => "".concat(ns, "-").concat(blockName, "__").concat(kebab(name))), ...classes);
};
return {
root,
element,
slot,
variant,
state,
block
};
};
var defineClassNames = exports.defineClassNames = function defineClassNames(blockName) {
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return createClassNames(blockName, config);
};
//# sourceMappingURL=defineClassNames.js.map