source: trip-planner-front/node_modules/postcss-colormin/dist/index.js@ 188ee53

Last change on this file since 188ee53 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 4.4 KB
Line 
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _browserslist = _interopRequireDefault(require("browserslist"));
9
10var _caniuseApi = require("caniuse-api");
11
12var _postcssValueParser = _interopRequireWildcard(require("postcss-value-parser"));
13
14var _minifyColor = _interopRequireDefault(require("./minifyColor"));
15
16function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
18function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
20function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22function walk(parent, callback) {
23 parent.nodes.forEach((node, index) => {
24 const bubble = callback(node, index, parent);
25
26 if (node.nodes && bubble !== false) {
27 walk(node, callback);
28 }
29 });
30}
31/*
32 * IE 8 & 9 do not properly handle clicks on elements
33 * with a `transparent` `background-color`.
34 *
35 * https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
36 */
37
38
39function hasTransparentBug(browser) {
40 return ~['ie 8', 'ie 9'].indexOf(browser);
41}
42
43function isMathFunctionNode(node) {
44 if (node.type !== 'function') {
45 return false;
46 }
47
48 return ['calc', 'min', 'max', 'clamp'].includes(node.value.toLowerCase());
49}
50
51function transform(value, options) {
52 const parsed = (0, _postcssValueParser.default)(value);
53 walk(parsed, (node, index, parent) => {
54 if (node.type === 'function') {
55 if (/^(rgb|hsl)a?$/i.test(node.value)) {
56 const {
57 value: originalValue
58 } = node;
59 node.value = (0, _minifyColor.default)((0, _postcssValueParser.stringify)(node), options);
60 node.type = 'word';
61 const next = parent.nodes[index + 1];
62
63 if (node.value !== originalValue && next && (next.type === 'word' || next.type === 'function')) {
64 parent.nodes.splice(index + 1, 0, {
65 type: 'space',
66 value: ' '
67 });
68 }
69 } else if (isMathFunctionNode(node)) {
70 return false;
71 }
72 } else if (node.type === 'word') {
73 node.value = (0, _minifyColor.default)(node.value, options);
74 }
75 });
76 return parsed.toString();
77}
78
79function pluginCreator() {
80 return {
81 postcssPlugin: 'postcss-colormin',
82
83 prepare(result) {
84 const resultOpts = result.opts || {};
85 const browsers = (0, _browserslist.default)(null, {
86 stats: resultOpts.stats,
87 path: __dirname,
88 env: resultOpts.env
89 });
90 const options = {
91 supportsTransparent: browsers.some(hasTransparentBug) === false,
92 supportsAlphaHex: (0, _caniuseApi.isSupported)('css-rrggbbaa', browsers)
93 };
94 const cache = {};
95 return {
96 OnceExit(css) {
97 css.walkDecls(decl => {
98 if (/^(composes|font|filter|-webkit-tap-highlight-color)/i.test(decl.prop)) {
99 return;
100 }
101
102 const value = decl.value;
103
104 if (!value) {
105 return;
106 }
107
108 const cacheKey = JSON.stringify({
109 value,
110 options,
111 browsers
112 });
113
114 if (cache[cacheKey]) {
115 decl.value = cache[cacheKey];
116 return;
117 }
118
119 const newValue = transform(value, options);
120 decl.value = newValue;
121 cache[cacheKey] = newValue;
122 });
123 }
124
125 };
126 }
127
128 };
129}
130
131pluginCreator.postcss = true;
132var _default = pluginCreator;
133exports.default = _default;
134module.exports = exports.default;
Note: See TracBrowser for help on using the repository browser.