UNPKG

3.6 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.createThemeAdapter = void 0;
9
10var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
12var _objectSpread5 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
14var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
16var _console = require("@instructure/console");
17
18/**
19 * ---
20 * category: utilities/themes
21 * ---
22 * Create an adapter function for mapping old theme variable names to updated ones.
23 *
24 * @param {Object} args
25 * @param {Object} args.map an object mapping of old theme variable names to new theme variable names
26 * @param {String} args.version a specified version in which the old theme variable will be removed
27 * @param {Boolean} args.shouldIncludeOldValues should the adapter include the old values in the new theme object (false by default)
28 * @returns {Function} an adapter function that takes an object with `theme` and `displayName` properties as an argument
29 */
30var createThemeAdapter = function createThemeAdapter() {
31 var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
32 _ref$map = _ref.map,
33 map = _ref$map === void 0 ? {} : _ref$map,
34 version = _ref.version,
35 _ref$shouldIncludeOld = _ref.shouldIncludeOldValues,
36 shouldIncludeOldValues = _ref$shouldIncludeOld === void 0 ? false : _ref$shouldIncludeOld;
37
38 return function () {
39 var _ref2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {},
40 _ref2$theme = _ref2.theme,
41 theme = _ref2$theme === void 0 ? {} : _ref2$theme,
42 displayName = _ref2.displayName;
43
44 return Object.entries(theme).reduce(function (result, _ref3) {
45 var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
46 key = _ref4[0],
47 value = _ref4[1];
48
49 if (map[key]) {
50 if (Array.isArray(map[key])) {
51 /*#__PURE__*/
52 ( /*#__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.") : ''));
53 } else {
54 /*#__PURE__*/
55 ( /*#__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.") : ''));
56 }
57
58 var updatedThemeVars = {};
59
60 if (Array.isArray(map[key])) {
61 updatedThemeVars = map[key].reduce(function (result, updatedVar) {
62 return (0, _objectSpread5.default)({}, result, (0, _defineProperty2.default)({}, updatedVar, value));
63 }, {});
64 } else {
65 updatedThemeVars = (0, _defineProperty2.default)({}, map[key], value);
66 }
67
68 return shouldIncludeOldValues ? (0, _objectSpread5.default)({}, result, {}, updatedThemeVars, (0, _defineProperty2.default)({}, key, value)) : (0, _objectSpread5.default)({}, result, {}, updatedThemeVars);
69 }
70
71 return (0, _objectSpread5.default)({}, result, (0, _defineProperty2.default)({}, key, value));
72 }, {});
73 };
74};
75
76exports.createThemeAdapter = createThemeAdapter;
\No newline at end of file