UNPKG

@wix/design-system

Version:

@wix/design-system

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