@wix/design-system
Version:
@wix/design-system
63 lines (62 loc) • 3.99 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.defineClassNames = exports.createClassNames = exports.NAMESPACE = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _versionedNamespace = require("./versionedNamespace");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
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 modifierTails = (node, props) => {
var _node$variants, _node$states;
var variants = Object.entries((_node$variants = node.variants) !== null && _node$variants !== void 0 ? _node$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 = ((_node$states = node.states) !== null && _node$states !== void 0 ? _node$states : []).filter(name => props[name]).map(name => "--".concat(kebab(name)));
return [...variants, ...states];
};
var createClassNames = exports.createClassNames = function createClassNames(blockName) {
var _config$root;
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 nodeClassNames = (base, node) => function () {
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var tails = ['', ...modifierTails(node, props)];
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(...namespaces.flatMap(ns => tails.map(tail => "".concat(ns, "-").concat(base).concat(tail))), ...classes);
};
var slots = Object.fromEntries(Object.entries(config).filter(_ref3 => {
var _ref4 = (0, _slicedToArray2.default)(_ref3, 1),
name = _ref4[0];
return name !== 'root';
}).map(_ref5 => {
var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
name = _ref6[0],
node = _ref6[1];
return [name, nodeClassNames("".concat(blockName, "__").concat(kebab(name)), node !== null && node !== void 0 ? node : {})];
}));
return _objectSpread(_objectSpread({}, slots), {}, {
root: nodeClassNames(blockName, (_config$root = config.root) !== null && _config$root !== void 0 ? _config$root : {})
});
};
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