UNPKG

@wix/design-system

Version:

@wix/design-system

64 lines (63 loc) 3.27 kB
"use strict"; 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