source: frontend/node_modules/tailwindcss/lib/util/resolveConfig.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 9.1 KB
Line 
1"use strict";
2Object.defineProperty(exports, "__esModule", {
3 value: true
4});
5Object.defineProperty(exports, "default", {
6 enumerable: true,
7 get: function() {
8 return resolveConfig;
9 }
10});
11const _negateValue = /*#__PURE__*/ _interop_require_default(require("./negateValue"));
12const _corePluginList = /*#__PURE__*/ _interop_require_default(require("../corePluginList"));
13const _configurePlugins = /*#__PURE__*/ _interop_require_default(require("./configurePlugins"));
14const _colors = /*#__PURE__*/ _interop_require_default(require("../public/colors"));
15const _defaults = require("./defaults");
16const _toPath = require("./toPath");
17const _normalizeConfig = require("./normalizeConfig");
18const _isPlainObject = /*#__PURE__*/ _interop_require_default(require("./isPlainObject"));
19const _cloneDeep = require("./cloneDeep");
20const _pluginUtils = require("./pluginUtils");
21const _withAlphaVariable = require("./withAlphaVariable");
22const _toColorValue = /*#__PURE__*/ _interop_require_default(require("./toColorValue"));
23function _interop_require_default(obj) {
24 return obj && obj.__esModule ? obj : {
25 default: obj
26 };
27}
28function isFunction(input) {
29 return typeof input === "function";
30}
31function mergeWith(target, ...sources) {
32 let customizer = sources.pop();
33 for (let source of sources){
34 for(let k in source){
35 let merged = customizer(target[k], source[k]);
36 if (merged === undefined) {
37 if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) {
38 target[k] = mergeWith({}, target[k], source[k], customizer);
39 } else {
40 target[k] = source[k];
41 }
42 } else {
43 target[k] = merged;
44 }
45 }
46 }
47 return target;
48}
49const configUtils = {
50 colors: _colors.default,
51 negative (scale) {
52 // TODO: Log that this function isn't really needed anymore?
53 return Object.keys(scale).filter((key)=>scale[key] !== "0").reduce((negativeScale, key)=>{
54 let negativeValue = (0, _negateValue.default)(scale[key]);
55 if (negativeValue !== undefined) {
56 negativeScale[`-${key}`] = negativeValue;
57 }
58 return negativeScale;
59 }, {});
60 },
61 breakpoints (screens) {
62 return Object.keys(screens).filter((key)=>typeof screens[key] === "string").reduce((breakpoints, key)=>({
63 ...breakpoints,
64 [`screen-${key}`]: screens[key]
65 }), {});
66 }
67};
68function value(valueToResolve, ...args) {
69 return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;
70}
71function collectExtends(items) {
72 return items.reduce((merged, { extend })=>{
73 return mergeWith(merged, extend, (mergedValue, extendValue)=>{
74 if (mergedValue === undefined) {
75 return [
76 extendValue
77 ];
78 }
79 if (Array.isArray(mergedValue)) {
80 return [
81 extendValue,
82 ...mergedValue
83 ];
84 }
85 return [
86 extendValue,
87 mergedValue
88 ];
89 });
90 }, {});
91}
92function mergeThemes(themes) {
93 return {
94 ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),
95 // In order to resolve n config objects, we combine all of their `extend` properties
96 // into arrays instead of objects so they aren't overridden.
97 extend: collectExtends(themes)
98 };
99}
100function mergeExtensionCustomizer(merged, value) {
101 // When we have an array of objects, we do want to merge it
102 if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) {
103 return merged.concat(value);
104 }
105 // When the incoming value is an array, and the existing config is an object, prepend the existing object
106 if (Array.isArray(value) && (0, _isPlainObject.default)(value[0]) && (0, _isPlainObject.default)(merged)) {
107 return [
108 merged,
109 ...value
110 ];
111 }
112 // Override arrays (for example for font-families, box-shadows, ...)
113 if (Array.isArray(value)) {
114 return value;
115 }
116 // Execute default behaviour
117 return undefined;
118}
119function mergeExtensions({ extend , ...theme }) {
120 return mergeWith(theme, extend, (themeValue, extensions)=>{
121 // The `extend` property is an array, so we need to check if it contains any functions
122 if (!isFunction(themeValue) && !extensions.some(isFunction)) {
123 return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);
124 }
125 return (resolveThemePath, utils)=>mergeWith({}, ...[
126 themeValue,
127 ...extensions
128 ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);
129 });
130}
131/**
132 *
133 * @param {string} key
134 * @return {Iterable<string[] & {alpha: string | undefined}>}
135 */ function* toPaths(key) {
136 let path = (0, _toPath.toPath)(key);
137 if (path.length === 0) {
138 return;
139 }
140 yield path;
141 if (Array.isArray(key)) {
142 return;
143 }
144 let pattern = /^(.*?)\s*\/\s*([^/]+)$/;
145 let matches = key.match(pattern);
146 if (matches !== null) {
147 let [, prefix, alpha] = matches;
148 let newPath = (0, _toPath.toPath)(prefix);
149 newPath.alpha = alpha;
150 yield newPath;
151 }
152}
153function resolveFunctionKeys(object) {
154 // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]
155 const resolvePath = (key, defaultValue)=>{
156 for (const path of toPaths(key)){
157 let index = 0;
158 let val = object;
159 while(val !== undefined && val !== null && index < path.length){
160 val = val[path[index++]];
161 let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);
162 val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;
163 }
164 if (val !== undefined) {
165 if (path.alpha !== undefined) {
166 let normalized = (0, _pluginUtils.parseColorFormat)(val);
167 return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));
168 }
169 if ((0, _isPlainObject.default)(val)) {
170 return (0, _cloneDeep.cloneDeep)(val);
171 }
172 return val;
173 }
174 }
175 return defaultValue;
176 };
177 Object.assign(resolvePath, {
178 theme: resolvePath,
179 ...configUtils
180 });
181 return Object.keys(object).reduce((resolved, key)=>{
182 resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];
183 return resolved;
184 }, {});
185}
186function extractPluginConfigs(configs) {
187 let allConfigs = [];
188 configs.forEach((config)=>{
189 allConfigs = [
190 ...allConfigs,
191 config
192 ];
193 var _config_plugins;
194 const plugins = (_config_plugins = config === null || config === void 0 ? void 0 : config.plugins) !== null && _config_plugins !== void 0 ? _config_plugins : [];
195 if (plugins.length === 0) {
196 return;
197 }
198 plugins.forEach((plugin)=>{
199 if (plugin.__isOptionsFunction) {
200 plugin = plugin();
201 }
202 var _plugin_config;
203 allConfigs = [
204 ...allConfigs,
205 ...extractPluginConfigs([
206 (_plugin_config = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && _plugin_config !== void 0 ? _plugin_config : {}
207 ])
208 ];
209 });
210 });
211 return allConfigs;
212}
213function resolveCorePlugins(corePluginConfigs) {
214 const result = [
215 ...corePluginConfigs
216 ].reduceRight((resolved, corePluginConfig)=>{
217 if (isFunction(corePluginConfig)) {
218 return corePluginConfig({
219 corePlugins: resolved
220 });
221 }
222 return (0, _configurePlugins.default)(corePluginConfig, resolved);
223 }, _corePluginList.default);
224 return result;
225}
226function resolvePluginLists(pluginLists) {
227 const result = [
228 ...pluginLists
229 ].reduceRight((resolved, pluginList)=>{
230 return [
231 ...resolved,
232 ...pluginList
233 ];
234 }, []);
235 return result;
236}
237function resolveConfig(configs) {
238 let allConfigs = [
239 ...extractPluginConfigs(configs),
240 {
241 prefix: "",
242 important: false,
243 separator: ":"
244 }
245 ];
246 var _t_theme, _c_plugins;
247 return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({
248 theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{
249 return (_t_theme = t === null || t === void 0 ? void 0 : t.theme) !== null && _t_theme !== void 0 ? _t_theme : {};
250 })))),
251 corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),
252 plugins: resolvePluginLists(configs.map((c)=>{
253 return (_c_plugins = c === null || c === void 0 ? void 0 : c.plugins) !== null && _c_plugins !== void 0 ? _c_plugins : [];
254 }))
255 }, ...allConfigs));
256}
Note: See TracBrowser for help on using the repository browser.