@instructure/ui-themeable
Version:
A UI component library made by Instructure Inc.
76 lines (61 loc) • 3.6 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createThemeAdapter = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread5 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _console = require("@instructure/console");
/**
* ---
* category: utilities/themes
* ---
* Create an adapter function for mapping old theme variable names to updated ones.
*
* @param {Object} args
* @param {Object} args.map an object mapping of old theme variable names to new theme variable names
* @param {String} args.version a specified version in which the old theme variable will be removed
* @param {Boolean} args.shouldIncludeOldValues should the adapter include the old values in the new theme object (false by default)
* @returns {Function} an adapter function that takes an object with `theme` and `displayName` properties as an argument
*/
var createThemeAdapter = function createThemeAdapter() {
var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
_ref$map = _ref.map,
map = _ref$map === void 0 ? {} : _ref$map,
version = _ref.version,
_ref$shouldIncludeOld = _ref.shouldIncludeOldValues,
shouldIncludeOldValues = _ref$shouldIncludeOld === void 0 ? false : _ref$shouldIncludeOld;
return function () {
var _ref2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
_ref2$theme = _ref2.theme,
theme = _ref2$theme === void 0 ? {} : _ref2$theme,
displayName = _ref2.displayName;
return Object.entries(theme).reduce(function (result, _ref3) {
var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
key = _ref4[0],
value = _ref4[1];
if (map[key]) {
if (Array.isArray(map[key])) {
/*#__PURE__*/
( /*#__PURE__*/0, _console.warnDeprecated)(false, "[".concat(displayName, "] The theme variable `").concat(key, "` has been split into the following values `").concat(map[key].join(', '), "`.").concat(version ? " In version ".concat(version, ", `").concat(key, "` will no longer work as an override. Override each value individually instead.") : ''));
} else {
/*#__PURE__*/
( /*#__PURE__*/0, _console.warnDeprecated)(false, "[".concat(displayName, "] The theme variable `").concat(key, "` has been changed to `").concat(map[key], "`.").concat(version ? " In version ".concat(version, ", `").concat(key, "` will no longer work as an override. Use `").concat(map[key], "` instead.") : ''));
}
var updatedThemeVars = {};
if (Array.isArray(map[key])) {
updatedThemeVars = map[key].reduce(function (result, updatedVar) {
return (0, _objectSpread5.default)({}, result, (0, _defineProperty2.default)({}, updatedVar, value));
}, {});
} else {
updatedThemeVars = (0, _defineProperty2.default)({}, map[key], value);
}
return shouldIncludeOldValues ? (0, _objectSpread5.default)({}, result, {}, updatedThemeVars, (0, _defineProperty2.default)({}, key, value)) : (0, _objectSpread5.default)({}, result, {}, updatedThemeVars);
}
return (0, _objectSpread5.default)({}, result, (0, _defineProperty2.default)({}, key, value));
}, {});
};
};
exports.createThemeAdapter = createThemeAdapter;
;