postcss-color-functional-notation 4.0.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,60 @@
1
+ # Changes to PostCSS Color Functional Notation
2
+
3
+ ### 4.2.0 (December 27, 2021)
4
+
5
+ - Added: support for Alpha value as the fourth argument in comma separated values notation.
6
+
7
+ ### 4.1.0 (December 15, 2021)
8
+
9
+ - Added: support for Alpha value as a CSS variable in `rgb()` and `rgba()`.
10
+
11
+ ### 4.0.2 (December 13, 2021)
12
+
13
+ - Changed: now uses `postcss-value-parser` for parsing.
14
+ - Updated: documentation
15
+ - Added: support for CSS variables with `preserve: true` option.
16
+
17
+ ### 4.0.1 (November 18, 2021)
18
+
19
+ - Added: Safeguards against postcss-values-parser potentially throwing an error.
20
+ - Updated: postcss-value-parser to 6.0.1 (patch)
21
+
22
+ ### 4.0.0 (September 17, 2021)
23
+
24
+ - Updated: Support for PostCS 8+ (major).
25
+ - Updated: Support for Node 12+ (major).
26
+
27
+ ### 3.0.2 (April 25, 2020)
28
+
29
+ - Updated: Publish
30
+
31
+ ### 3.0.1 (April 25, 2020)
32
+
33
+ - Updated: Using `walkType` to evade walker bug in `postcss-values-parser`
34
+
35
+ ### 3.0.0 (April 25, 2020)
36
+
37
+ - Updated: Support for Node 10+
38
+ - Updated: `postcss` to 7.0.27 (patch)
39
+ - Updated: `postcss-values-parser` to 3.2.0 (minor)
40
+
41
+ ### 2.0.1 (September 18, 2018)
42
+
43
+ - Updated: PostCSS Values Parser 2 (patch for this project)
44
+
45
+ ### 2.0.0 (September 17, 2018)
46
+
47
+ - Updated: Support for PostCSS v7+
48
+ - Updated: Support for Node 6+
49
+
50
+ ### 1.0.2 (July 13, 2018)
51
+
52
+ - Fixed: Poorly detected hsl() and rgb() now resolve correctly
53
+
54
+ ### 1.0.1 (May 11, 2018)
55
+
56
+ - Fixed: A non-percentage 0 works alongside other percentages
57
+
58
+ ### 1.0.0 (May 7, 2018)
59
+
60
+ - Initial version
package/INSTALL.md ADDED
@@ -0,0 +1,170 @@
1
+ # Installing PostCSS Color Functional Notation
2
+
3
+ [PostCSS Color Functional Notation] runs in all Node environments, with special instructions for:
4
+
5
+ | [Node](#node) | [PostCSS CLI](#postcss-cli) | [Webpack](#webpack) | [Create React App](#create-react-app) | [Gulp](#gulp) | [Grunt](#grunt) |
6
+ | --- | --- | --- | --- | --- | --- |
7
+
8
+ ## Node
9
+
10
+ Add [PostCSS Color Functional Notation] to your project:
11
+
12
+ ```bash
13
+ npm install postcss-color-functional-notation --save-dev
14
+ ```
15
+
16
+ Use [PostCSS Color Functional Notation] to process your CSS:
17
+
18
+ ```js
19
+ const postcssColorFunctionalNotation = require('postcss-color-functional-notation');
20
+
21
+ postcssColorFunctionalNotation.process(YOUR_CSS /*, processOptions, pluginOptions */);
22
+ ```
23
+
24
+ Or use it as a [PostCSS] plugin:
25
+
26
+ ```js
27
+ const postcss = require('postcss');
28
+ const postcssColorFunctionalNotation = require('postcss-color-functional-notation');
29
+
30
+ postcss([
31
+ postcssColorFunctionalNotation(/* pluginOptions */)
32
+ ]).process(YOUR_CSS /*, processOptions */);
33
+ ```
34
+
35
+ ## PostCSS CLI
36
+
37
+ Add [PostCSS CLI] to your project:
38
+
39
+ ```bash
40
+ npm install postcss-cli --save-dev
41
+ ```
42
+
43
+ Use [PostCSS Color Functional Notation] in your `postcss.config.js` configuration file:
44
+
45
+ ```js
46
+ const postcssColorFunctionalNotation = require('postcss-color-functional-notation');
47
+
48
+ module.exports = {
49
+ plugins: [
50
+ postcssColorFunctionalNotation(/* pluginOptions */)
51
+ ]
52
+ }
53
+ ```
54
+
55
+ ## Webpack
56
+
57
+ Add [PostCSS Loader] to your project:
58
+
59
+ ```bash
60
+ npm install postcss-loader --save-dev
61
+ ```
62
+
63
+ Use [PostCSS Color Functional Notation] in your Webpack configuration:
64
+
65
+ ```js
66
+ const postcssColorFunctionalNotation = require('postcss-color-functional-notation');
67
+
68
+ module.exports = {
69
+ module: {
70
+ rules: [
71
+ {
72
+ test: /\.css$/,
73
+ use: [
74
+ 'style-loader',
75
+ { loader: 'css-loader', options: { importLoaders: 1 } },
76
+ { loader: 'postcss-loader', options: {
77
+ ident: 'postcss',
78
+ plugins: () => [
79
+ postcssColorFunctionalNotation(/* pluginOptions */)
80
+ ]
81
+ } }
82
+ ]
83
+ }
84
+ ]
85
+ }
86
+ }
87
+ ```
88
+
89
+ ## Create React App
90
+
91
+ Add [React App Rewired] and [React App Rewire PostCSS] to your project:
92
+
93
+ ```bash
94
+ npm install react-app-rewired react-app-rewire-postcss --save-dev
95
+ ```
96
+
97
+ Use [React App Rewire PostCSS] and [PostCSS Color Functional Notation] in your
98
+ `config-overrides.js` file:
99
+
100
+ ```js
101
+ const reactAppRewirePostcss = require('react-app-rewire-postcss');
102
+ const postcssColorFunctionalNotation = require('postcss-color-functional-notation');
103
+
104
+ module.exports = config => reactAppRewirePostcss(config, {
105
+ plugins: () => [
106
+ postcssColorFunctionalNotation(/* pluginOptions */)
107
+ ]
108
+ });
109
+ ```
110
+
111
+ ## Gulp
112
+
113
+ Add [Gulp PostCSS] to your project:
114
+
115
+ ```bash
116
+ npm install gulp-postcss --save-dev
117
+ ```
118
+
119
+ Use [PostCSS Color Functional Notation] in your Gulpfile:
120
+
121
+ ```js
122
+ const postcss = require('gulp-postcss');
123
+ const postcssColorFunctionalNotation = require('postcss-color-functional-notation');
124
+
125
+ gulp.task('css', () => gulp.src('./src/*.css').pipe(
126
+ postcss([
127
+ postcssColorFunctionalNotation(/* pluginOptions */)
128
+ ])
129
+ ).pipe(
130
+ gulp.dest('.')
131
+ ));
132
+ ```
133
+
134
+ ## Grunt
135
+
136
+ Add [Grunt PostCSS] to your project:
137
+
138
+ ```bash
139
+ npm install grunt-postcss --save-dev
140
+ ```
141
+
142
+ Use [PostCSS Color Functional Notation] in your Gruntfile:
143
+
144
+ ```js
145
+ const postcssColorFunctionalNotation = require('postcss-color-functional-notation');
146
+
147
+ grunt.loadNpmTasks('grunt-postcss');
148
+
149
+ grunt.initConfig({
150
+ postcss: {
151
+ options: {
152
+ use: [
153
+ postcssColorFunctionalNotation(/* pluginOptions */)
154
+ ]
155
+ },
156
+ dist: {
157
+ src: '*.css'
158
+ }
159
+ }
160
+ });
161
+ ```
162
+
163
+ [Gulp PostCSS]: https://github.com/postcss/gulp-postcss
164
+ [Grunt PostCSS]: https://github.com/nDmitry/grunt-postcss
165
+ [PostCSS]: https://github.com/postcss/postcss
166
+ [PostCSS CLI]: https://github.com/postcss/postcss-cli
167
+ [PostCSS Loader]: https://github.com/postcss/postcss-loader
168
+ [PostCSS Color Functional Notation]: https://github.com/csstools/postcss-plugins/postcss-color-functional-notation
169
+ [React App Rewire PostCSS]: https://github.com/csstools/react-app-rewire-postcss
170
+ [React App Rewired]: https://github.com/timarney/react-app-rewired
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [<img alt="NPM Version" src="https://img.shields.io/npm/v/postcss-color-functional-notation.svg" height="20">][npm-url]
4
4
  [<img alt="CSS Standard Status" src="https://cssdb.org/badge/lab-function.svg" height="20">][css-url]
5
- [<img alt="Build Status" src="https://github.com/csstools/postcss-color-functional-notation/workflows/test/badge.svg" height="20">][cli-url]
5
+ [<img alt="Build Status" src="https://github.com/csstools/postcss-plugins/workflows/test/badge.svg" height="20">][cli-url]
6
6
  [<img alt="Support Chat" src="https://img.shields.io/badge/support-chat-blue.svg" height="20">][git-url]
7
7
 
8
8
  [PostCSS Color Functional Notation] lets you use space and slash separated
@@ -83,7 +83,7 @@ postcssImageSetFunction({ preserve: true })
83
83
  }
84
84
  ```
85
85
 
86
- [cli-url]: https://github.com/csstools/postcss-color-functional-notation/actions/workflows/test.yml?query=workflow/test
86
+ [cli-url]: https://github.com/csstools/postcss-plugins/actions/workflows/test.yml?query=workflow/test
87
87
  [css-url]: https://cssdb.org/#color-functional-notation
88
88
  [git-url]: https://gitter.im/postcss/postcss
89
89
  [npm-url]: https://www.npmjs.com/package/postcss-color-functional-notation
@@ -93,4 +93,4 @@ postcssImageSetFunction({ preserve: true })
93
93
  [Grunt PostCSS]: https://github.com/nDmitry/grunt-postcss
94
94
  [PostCSS]: https://github.com/postcss/postcss
95
95
  [PostCSS Loader]: https://github.com/postcss/postcss-loader
96
- [PostCSS Color Functional Notation]: https://github.com/csstools/postcss-color-functional-notation
96
+ [PostCSS Color Functional Notation]: https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-functional-notation
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/dist/cli.mjs ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import e from"postcss-value-parser";import t from"tty";import r from"path";import n from"url";import s,{promises as i}from"fs";function o(t){const r=t.value;let n=t.nodes;"rgb"!==r&&"hsl"!==r||(n=function(e){let t=0;for(let r=0;r<e.length;r++){const n=e[r];if("div"===n.type&&","===n.value){if(t<2&&(n.value=" ",n.type="space"),2===t&&(n.value="/"),t>2)return;t++}}return e}(n));const s=n.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let i=null;if("hsl"===r||"hsla"===r?i=function(t){if(!function(t){if(!t||"word"!==t.type)return!1;if(!h(t))return!1;const r=e.unit(t.value);if(!r)return!1;return!!r.number&&("deg"===r.unit||"grad"===r.unit||"rad"===r.unit||"turn"===r.unit||""===r.unit)}(t[0]))return null;if(!a(t[1]))return null;if(!a(t[2]))return null;const r={h:e.unit(t[0].value),hNode:t[0],s:e.unit(t[1].value),sNode:t[1],l:e.unit(t[2].value),lNode:t[2]};if(function(e){switch(e.unit){case"deg":return void(e.unit="");case"rad":return e.unit="",void(e.number=Math.round(180*parseFloat(e.number)/Math.PI).toString());case"grad":return e.unit="",void(e.number=Math.round(.9*parseFloat(e.number)).toString());case"turn":e.unit="",e.number=Math.round(360*parseFloat(e.number)).toString()}}(r.h),""!==r.h.unit)return null;r.hNode.value=r.h.number,c(t[3])&&(r.slash=t[3]);(a(t[4])||l(t[4])||u(t[4]))&&(r.alpha=t[4]);return r}(s):"rgb"!==r&&"rgba"!==r||(i=function(t){if(!a(t[0]))return null;if(!a(t[1]))return null;if(!a(t[2]))return null;const r={r:e.unit(t[0].value),rNode:t[0],g:e.unit(t[1].value),gNode:t[1],b:e.unit(t[2].value),bNode:t[2]};"%"===r.r.unit&&(r.r.number=String(Math.floor(Number(r.r.number)/100*255)),r.rNode.value=r.r.number);"%"===r.g.unit&&(r.g.number=String(Math.floor(Number(r.g.number)/100*255)),r.gNode.value=r.g.number);"%"===r.b.unit&&(r.b.number=String(Math.floor(Number(r.b.number)/100*255)),r.bNode.value=r.b.number);c(t[3])&&(r.slash=t[3]);(a(t[4])||l(t[4])||u(t[4]))&&(r.alpha=t[4]);return r}(s)),!i)return;if(s.length>3&&(!i.slash||!i.alpha))return;!function(t,r,n){"hsl"===t.value||"hsla"===t.value?t.value="hsl":"rgb"!==t.value&&"rgba"!==t.value||(t.value="rgb");if(!r||!n)return;"hsl"===t.value?t.value="hsla":t.value="rgba";if(r.value=",",r.before="",!function(t){if(!t||"word"!==t.type)return!1;if(!h(t))return!1;const r=e.unit(t.value);if(!r)return!1;return!!r.number}(n))return;const s=e.unit(n.value);if(!s)return;"%"===s.unit&&(s.number=String(parseFloat(s.number)/100),n.value=String(s.number))}(t,i.slash,i.alpha);const[o,p]=function(e){if(function(e){if(void 0!==e.r)return!0;return!1}(e))return[e.rNode,e.gNode,e.bNode];return[e.hNode,e.sNode,e.lNode]}(i);t.nodes.splice(t.nodes.indexOf(o)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),t.nodes.splice(t.nodes.indexOf(p)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""})}function a(t){if(!t||"word"!==t.type)return!1;if(!h(t))return!1;const r=e.unit(t.value);return!!r&&("%"===r.unit||""===r.unit)}function l(e){return e&&"function"===e.type&&"calc"===e.value}function u(e){return e&&"function"===e.type&&"var"===e.value}function c(e){return e&&"div"===e.type&&"/"===e.value}function h(t){if(!t||!t.value)return!1;try{return!1!==e.unit(t.value)}catch(e){return!1}}const p=t=>{const r="preserve"in Object(t)&&Boolean(t.preserve);return{postcssPlugin:"postcss-color-functional-notation",Declaration:(t,{result:n,postcss:s})=>{if(r&&function(e){let t=e.parent;for(;t;)if("atrule"===t.type){if("supports"===t.name&&-1!==t.params.indexOf("(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))"))return!0;t=t.parent}else t=t.parent;return!1}(t))return;const i=t.value;if(!/(^|[^\w-])(hsla?|rgba?)\(/i.test(i))return;let a;try{a=e(i)}catch(e){t.warn(n,`Failed to parse value '${i}' as a hsl or rgb function. Leaving the original value intact.`)}if(void 0===a)return;a.walk((e=>{e.type&&"function"===e.type&&("hsl"!==e.value&&"hsla"!==e.value&&"rgb"!==e.value&&"rgba"!==e.value||o(e))}));const l=String(a);if(l!==i)if(r&&t.variable){const e=t.parent,r="(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))",n=s.atRule({name:"supports",params:r,source:t.source}),i=e.clone();i.removeAll(),i.append(t.clone()),n.append(i);let o=e,a=e.next();for(;o&&a&&"atrule"===a.type&&"supports"===a.name&&a.params===r;)o=a,a=a.next();o.after(n),t.value=l}else r?t.cloneBefore({value:l}):t.value=l}}};var f;p.postcss=!0,function(e){e.InvalidArguments="INVALID_ARGUMENTS"}(f||(f={}));var d={exports:{}};let g=t,m=!("NO_COLOR"in process.env||process.argv.includes("--no-color"))&&("FORCE_COLOR"in process.env||process.argv.includes("--color")||"win32"===process.platform||g.isatty(1)&&"dumb"!==process.env.TERM||"CI"in process.env),w=(e,t,r=e)=>n=>{let s=""+n,i=s.indexOf(t,e.length);return~i?e+y(s,t,r,i)+t:e+s+t},y=(e,t,r,n)=>{let s=e.substring(0,n)+r,i=e.substring(n+t.length),o=i.indexOf(t);return~o?s+y(i,t,r,o):s+i},v=(e=m)=>({isColorSupported:e,reset:e?e=>`${e}`:String,bold:e?w("","",""):String,dim:e?w("","",""):String,italic:e?w("",""):String,underline:e?w("",""):String,inverse:e?w("",""):String,hidden:e?w("",""):String,strikethrough:e?w("",""):String,black:e?w("",""):String,red:e?w("",""):String,green:e?w("",""):String,yellow:e?w("",""):String,blue:e?w("",""):String,magenta:e?w("",""):String,cyan:e?w("",""):String,white:e?w("",""):String,gray:e?w("",""):String,bgBlack:e?w("",""):String,bgRed:e?w("",""):String,bgGreen:e?w("",""):String,bgYellow:e?w("",""):String,bgBlue:e?w("",""):String,bgMagenta:e?w("",""):String,bgCyan:e?w("",""):String,bgWhite:e?w("",""):String});d.exports=v(),d.exports.createColors=v;const b="'".charCodeAt(0),S='"'.charCodeAt(0),C="\\".charCodeAt(0),_="/".charCodeAt(0),x="\n".charCodeAt(0),O=" ".charCodeAt(0),A="\f".charCodeAt(0),M="\t".charCodeAt(0),k="\r".charCodeAt(0),E="[".charCodeAt(0),L="]".charCodeAt(0),R="(".charCodeAt(0),P=")".charCodeAt(0),I="{".charCodeAt(0),N="}".charCodeAt(0),F=";".charCodeAt(0),j="*".charCodeAt(0),U=":".charCodeAt(0),D="@".charCodeAt(0),B=/[\t\n\f\r "#'()/;[\\\]{}]/g,T=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,$=/.[\n"'(/\\]/,G=/[\da-f]/i;var z=function(e,t={}){let r,n,s,i,o,a,l,u,c,h,p=e.css.valueOf(),f=t.ignoreErrors,d=p.length,g=0,m=[],w=[];function y(t){throw e.error("Unclosed "+t,g)}return{back:function(e){w.push(e)},nextToken:function(e){if(w.length)return w.pop();if(g>=d)return;let t=!!e&&e.ignoreUnclosed;switch(r=p.charCodeAt(g),r){case x:case O:case M:case k:case A:n=g;do{n+=1,r=p.charCodeAt(n)}while(r===O||r===x||r===M||r===k||r===A);h=["space",p.slice(g,n)],g=n-1;break;case E:case L:case I:case N:case U:case F:case P:{let e=String.fromCharCode(r);h=[e,e,g];break}case R:if(u=m.length?m.pop()[1]:"",c=p.charCodeAt(g+1),"url"===u&&c!==b&&c!==S&&c!==O&&c!==x&&c!==M&&c!==A&&c!==k){n=g;do{if(a=!1,n=p.indexOf(")",n+1),-1===n){if(f||t){n=g;break}y("bracket")}for(l=n;p.charCodeAt(l-1)===C;)l-=1,a=!a}while(a);h=["brackets",p.slice(g,n+1),g,n],g=n}else n=p.indexOf(")",g+1),i=p.slice(g,n+1),-1===n||$.test(i)?h=["(","(",g]:(h=["brackets",i,g,n],g=n);break;case b:case S:s=r===b?"'":'"',n=g;do{if(a=!1,n=p.indexOf(s,n+1),-1===n){if(f||t){n=g+1;break}y("string")}for(l=n;p.charCodeAt(l-1)===C;)l-=1,a=!a}while(a);h=["string",p.slice(g,n+1),g,n],g=n;break;case D:B.lastIndex=g+1,B.test(p),n=0===B.lastIndex?p.length-1:B.lastIndex-2,h=["at-word",p.slice(g,n+1),g,n],g=n;break;case C:for(n=g,o=!0;p.charCodeAt(n+1)===C;)n+=1,o=!o;if(r=p.charCodeAt(n+1),o&&r!==_&&r!==O&&r!==x&&r!==M&&r!==k&&r!==A&&(n+=1,G.test(p.charAt(n)))){for(;G.test(p.charAt(n+1));)n+=1;p.charCodeAt(n+1)===O&&(n+=1)}h=["word",p.slice(g,n+1),g,n],g=n;break;default:r===_&&p.charCodeAt(g+1)===j?(n=p.indexOf("*/",g+2)+1,0===n&&(f||t?n=p.length:y("comment")),h=["comment",p.slice(g,n+1),g,n],g=n):(T.lastIndex=g+1,T.test(p),n=0===T.lastIndex?p.length-1:T.lastIndex-2,h=["word",p.slice(g,n+1),g,n],m.push(h),g=n)}return g++,h},endOfFile:function(){return 0===w.length&&g>=d},position:function(){return g}}};let W,V=d.exports,J=z;const q={brackets:V.cyan,"at-word":V.cyan,comment:V.gray,string:V.green,class:V.yellow,hash:V.magenta,call:V.cyan,"(":V.cyan,")":V.cyan,"{":V.yellow,"}":V.yellow,"[":V.yellow,"]":V.yellow,":":V.yellow,";":V.yellow};function Y([e,t],r){if("word"===e){if("."===t[0])return"class";if("#"===t[0])return"hash"}if(!r.endOfFile()){let e=r.nextToken();if(r.back(e),"brackets"===e[0]||"("===e[0])return"call"}return e}function Q(e){let t=J(new W(e),{ignoreErrors:!0}),r="";for(;!t.endOfFile();){let e=t.nextToken(),n=q[Y(e,t)];r+=n?e[1].split(/\r?\n/).map((e=>n(e))).join("\n"):e[1]}return r}Q.registerInput=function(e){W=e};var Z=Q;let H=d.exports,K=Z;class X extends Error{constructor(e,t,r,n,s,i){super(e),this.name="CssSyntaxError",this.reason=e,s&&(this.file=s),n&&(this.source=n),i&&(this.plugin=i),void 0!==t&&void 0!==r&&("number"==typeof t?(this.line=t,this.column=r):(this.line=t.line,this.column=t.column,this.endLine=r.line,this.endColumn=r.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,X)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;null==e&&(e=H.isColorSupported),K&&e&&(t=K(t));let r,n,s=t.split(/\r?\n/),i=Math.max(this.line-3,0),o=Math.min(this.line+2,s.length),a=String(o).length;if(e){let{bold:e,red:t,gray:s}=H.createColors(!0);r=r=>e(t(r)),n=e=>s(e)}else r=n=e=>e;return s.slice(i,o).map(((e,t)=>{let s=i+1+t,o=" "+(" "+s).slice(-a)+" | ";if(s===this.line){let t=n(o.replace(/\d/g," "))+e.slice(0,this.column-1).replace(/[^\t]/g," ");return r(">")+n(o)+e+"\n "+t+r("^")}return" "+n(o)+e})).join("\n")}toString(){let e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}}var ee=X;X.default=X;var te={};te.isClean=Symbol("isClean"),te.my=Symbol("my");const re={colon:": ",indent:" ",beforeDecl:"\n",beforeRule:"\n",beforeOpen:" ",beforeClose:"\n",beforeComment:"\n",after:"\n",emptyBody:"",commentLeft:" ",commentRight:" ",semicolon:!1};class ne{constructor(e){this.builder=e}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}document(e){this.body(e)}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}comment(e){let t=this.raw(e,"left","commentLeft"),r=this.raw(e,"right","commentRight");this.builder("/*"+t+e.text+r+"*/",e)}decl(e,t){let r=this.raw(e,"between","colon"),n=e.prop+r+this.rawValue(e,"value");e.important&&(n+=e.raws.important||" !important"),t&&(n+=";"),this.builder(n,e)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}atrule(e,t){let r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{let s=(e.raws.between||"")+(t?";":"");this.builder(r+n+s,e)}}body(e){let t=e.nodes.length-1;for(;t>0&&"comment"===e.nodes[t].type;)t-=1;let r=this.raw(e,"semicolon");for(let n=0;n<e.nodes.length;n++){let s=e.nodes[n],i=this.raw(s,"before");i&&this.builder(i),this.stringify(s,t!==n||r)}}block(e,t){let r,n=this.raw(e,"between","beforeOpen");this.builder(t+n+"{",e,"start"),e.nodes&&e.nodes.length?(this.body(e),r=this.raw(e,"after")):r=this.raw(e,"after","emptyBody"),r&&this.builder(r),this.builder("}",e,"end")}raw(e,t,r){let n;if(r||(r=t),t&&(n=e.raws[t],void 0!==n))return n;let s=e.parent;if("before"===r){if(!s||"root"===s.type&&s.first===e)return"";if(s&&"document"===s.type)return""}if(!s)return re[r];let i=e.root();if(i.rawCache||(i.rawCache={}),void 0!==i.rawCache[r])return i.rawCache[r];if("before"===r||"after"===r)return this.beforeAfter(e,r);{let s="raw"+((o=r)[0].toUpperCase()+o.slice(1));this[s]?n=this[s](i,e):i.walk((e=>{if(n=e.raws[t],void 0!==n)return!1}))}var o;return void 0===n&&(n=re[r]),i.rawCache[r]=n,n}rawSemicolon(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&(t=e.raws.semicolon,void 0!==t))return!1})),t}rawEmptyBody(e){let t;return e.walk((e=>{if(e.nodes&&0===e.nodes.length&&(t=e.raws.after,void 0!==t))return!1})),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk((r=>{let n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){let e=r.raws.before.split("\n");return t=e[e.length-1],t=t.replace(/\S/g,""),!1}})),t}rawBeforeComment(e,t){let r;return e.walkComments((e=>{if(void 0!==e.raws.before)return r=e.raws.before,r.includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1})),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r}rawBeforeDecl(e,t){let r;return e.walkDecls((e=>{if(void 0!==e.raws.before)return r=e.raws.before,r.includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1})),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r}rawBeforeRule(e){let t;return e.walk((r=>{if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return t=r.raws.before,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeClose(e){let t;return e.walk((e=>{if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return t=e.raws.after,t.includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}rawBeforeOpen(e){let t;return e.walk((e=>{if("decl"!==e.type&&(t=e.raws.between,void 0!==t))return!1})),t}rawColon(e){let t;return e.walkDecls((e=>{if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}beforeAfter(e,t){let r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");let n=e.parent,s=0;for(;n&&"root"!==n.type;)s+=1,n=n.parent;if(r.includes("\n")){let t=this.raw(e,null,"indent");if(t.length)for(let e=0;e<s;e++)r+=t}return r}rawValue(e,t){let r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r}}var se=ne;ne.default=ne;let ie=se;function oe(e,t){new ie(t).stringify(e)}var ae=oe;oe.default=oe;let{isClean:le,my:ue}=te,ce=ee,he=se,pe=ae;function fe(e,t){let r=new e.constructor;for(let n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;if("proxyCache"===n)continue;let s=e[n],i=typeof s;"parent"===n&&"object"===i?t&&(r[n]=t):"source"===n?r[n]=s:Array.isArray(s)?r[n]=s.map((e=>fe(e,r))):("object"===i&&null!==s&&(s=fe(s)),r[n]=s)}return r}class de{constructor(e={}){this.raws={},this[le]=!1,this[ue]=!0;for(let t in e)if("nodes"===t){this.nodes=[];for(let r of e[t])"function"==typeof r.clone?this.append(r.clone()):this.append(r)}else this[t]=e[t]}error(e,t={}){if(this.source){let{start:r,end:n}=this.rangeBy(t);return this.source.input.error(e,{line:r.line,column:r.column},{line:n.line,column:n.column},t)}return new ce(e)}warn(e,t,r){let n={node:this};for(let e in r)n[e]=r[e];return e.warn(t,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}toString(e=pe){e.stringify&&(e=e.stringify);let t="";return e(this,(e=>{t+=e})),t}assign(e={}){for(let t in e)this[t]=e[t];return this}clone(e={}){let t=fe(this);for(let r in e)t[r]=e[r];return t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}replaceWith(...e){if(this.parent){let t=this,r=!1;for(let n of e)n===this?r=!0:r?(this.parent.insertAfter(t,n),t=n):this.parent.insertBefore(t,n);r||this.remove()}return this}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}before(e){return this.parent.insertBefore(this,e),this}after(e){return this.parent.insertAfter(this,e),this}root(){let e=this;for(;e.parent&&"document"!==e.parent.type;)e=e.parent;return e}raw(e,t){return(new he).raw(this,e,t)}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}toJSON(e,t){let r={},n=null==t;t=t||new Map;let s=0;for(let e in this){if(!Object.prototype.hasOwnProperty.call(this,e))continue;if("parent"===e||"proxyCache"===e)continue;let n=this[e];if(Array.isArray(n))r[e]=n.map((e=>"object"==typeof e&&e.toJSON?e.toJSON(null,t):e));else if("object"==typeof n&&n.toJSON)r[e]=n.toJSON(null,t);else if("source"===e){let i=t.get(n.input);null==i&&(i=s,t.set(n.input,s),s++),r[e]={inputId:i,start:n.start,end:n.end}}else r[e]=n}return n&&(r.inputs=[...t.keys()].map((e=>e.toJSON()))),r}positionInside(e){let t=this.toString(),r=this.source.start.column,n=this.source.start.line;for(let s=0;s<e;s++)"\n"===t[s]?(r=1,n+=1):r+=1;return{line:n,column:r}}positionBy(e){let t=this.source.start;if(e.index)t=this.positionInside(e.index);else if(e.word){let r=this.toString().indexOf(e.word);-1!==r&&(t=this.positionInside(r))}return t}rangeBy(e){let t={line:this.source.start.line,column:this.source.start.column},r=this.source.end?{line:this.source.end.line,column:this.source.end.column+1}:{line:t.line,column:t.column+1};if(e.word){let n=this.toString().indexOf(e.word);-1!==n&&(t=this.positionInside(n),r=this.positionInside(n+e.word.length))}else e.start?t={line:e.start.line,column:e.start.column}:e.index&&(t=this.positionInside(e.index)),e.end?r={line:e.end.line,column:e.end.column}:e.endIndex?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.index+1));return(r.line<t.line||r.line===t.line&&r.column<=t.column)&&(r={line:t.line,column:t.column+1}),{start:t,end:r}}getProxyProcessor(){return{set:(e,t,r)=>(e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0),get:(e,t)=>"proxyOf"===t?e:"root"===t?()=>e.root().toProxy():e[t]}}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}markDirty(){if(this[le]){this[le]=!1;let e=this;for(;e=e.parent;)e[le]=!1}}get proxyOf(){return this}}var ge=de;de.default=de;let me=ge;class we extends me{constructor(e){e&&void 0!==e.value&&"string"!=typeof e.value&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||"$"===this.prop[0]}}var ye=we;we.default=we;var ve={},be={},Se={},Ce={},_e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");Ce.encode=function(e){if(0<=e&&e<_e.length)return _e[e];throw new TypeError("Must be between 0 and 63: "+e)},Ce.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1};var xe=Ce;Se.encode=function(e){var t,r="",n=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{t=31&n,(n>>>=5)>0&&(t|=32),r+=xe.encode(t)}while(n>0);return r},Se.decode=function(e,t,r){var n,s,i,o,a=e.length,l=0,u=0;do{if(t>=a)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(s=xe.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));n=!!(32&s),l+=(s&=31)<<u,u+=5}while(n);r.value=(o=(i=l)>>1,1==(1&i)?-o:o),r.rest=t};var Oe={};!function(e){e.getArg=function(e,t,r){if(t in e)return e[t];if(3===arguments.length)return r;throw new Error('"'+t+'" is a required argument.')};var t=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,r=/^data:.+\,.+$/;function n(e){var r=e.match(t);return r?{scheme:r[1],auth:r[2],host:r[3],port:r[4],path:r[5]}:null}function s(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}e.urlParse=n,e.urlGenerate=s;var i,o,a=(i=function(t){var r=t,i=n(t);if(i){if(!i.path)return t;r=i.path}for(var o=e.isAbsolute(r),a=[],l=0,u=0;;){if(l=u,-1===(u=r.indexOf("/",l))){a.push(r.slice(l));break}for(a.push(r.slice(l,u));u<r.length&&"/"===r[u];)u++}var c,h=0;for(u=a.length-1;u>=0;u--)"."===(c=a[u])?a.splice(u,1):".."===c?h++:h>0&&(""===c?(a.splice(u+1,h),h=0):(a.splice(u,2),h--));return""===(r=a.join("/"))&&(r=o?"/":"."),i?(i.path=r,s(i)):r},o=[],function(e){for(var t=0;t<o.length;t++)if(o[t].input===e){var r=o[0];return o[0]=o[t],o[t]=r,o[0].result}var n=i(e);return o.unshift({input:e,result:n}),o.length>32&&o.pop(),n});function l(e,t){""===e&&(e="."),""===t&&(t=".");var i=n(t),o=n(e);if(o&&(e=o.path||"/"),i&&!i.scheme)return o&&(i.scheme=o.scheme),s(i);if(i||t.match(r))return t;if(o&&!o.host&&!o.path)return o.host=t,s(o);var l="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return o?(o.path=l,s(o)):l}e.normalize=a,e.join=l,e.isAbsolute=function(e){return"/"===e.charAt(0)||t.test(e)},e.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0)return t;if((e=e.slice(0,n)).match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)};var u=!("__proto__"in Object.create(null));function c(e){return e}function h(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function p(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}e.toSetString=u?c:function(e){return h(e)?"$"+e:e},e.fromSetString=u?c:function(e){return h(e)?e.slice(1):e},e.compareByOriginalPositions=function(e,t,r){var n=p(e.source,t.source);return 0!==n||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)||r||0!==(n=e.generatedColumn-t.generatedColumn)||0!==(n=e.generatedLine-t.generatedLine)?n:p(e.name,t.name)},e.compareByOriginalPositionsNoSource=function(e,t,r){var n;return 0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)||r||0!==(n=e.generatedColumn-t.generatedColumn)||0!==(n=e.generatedLine-t.generatedLine)?n:p(e.name,t.name)},e.compareByGeneratedPositionsDeflated=function(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n||0!==(n=e.generatedColumn-t.generatedColumn)||r||0!==(n=p(e.source,t.source))||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)?n:p(e.name,t.name)},e.compareByGeneratedPositionsDeflatedNoLine=function(e,t,r){var n=e.generatedColumn-t.generatedColumn;return 0!==n||r||0!==(n=p(e.source,t.source))||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)?n:p(e.name,t.name)},e.compareByGeneratedPositionsInflated=function(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r||0!==(r=e.generatedColumn-t.generatedColumn)||0!==(r=p(e.source,t.source))||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)?r:p(e.name,t.name)},e.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},e.computeSourceURL=function(e,t,r){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),r){var i=n(r);if(!i)throw new Error("sourceMapURL could not be parsed");if(i.path){var o=i.path.lastIndexOf("/");o>=0&&(i.path=i.path.substring(0,o+1))}t=l(s(i),t)}return a(t)}}(Oe);var Ae={},Me=Oe,ke=Object.prototype.hasOwnProperty,Ee="undefined"!=typeof Map;function Le(){this._array=[],this._set=Ee?new Map:Object.create(null)}Le.fromArray=function(e,t){for(var r=new Le,n=0,s=e.length;n<s;n++)r.add(e[n],t);return r},Le.prototype.size=function(){return Ee?this._set.size:Object.getOwnPropertyNames(this._set).length},Le.prototype.add=function(e,t){var r=Ee?e:Me.toSetString(e),n=Ee?this.has(e):ke.call(this._set,r),s=this._array.length;n&&!t||this._array.push(e),n||(Ee?this._set.set(e,s):this._set[r]=s)},Le.prototype.has=function(e){if(Ee)return this._set.has(e);var t=Me.toSetString(e);return ke.call(this._set,t)},Le.prototype.indexOf=function(e){if(Ee){var t=this._set.get(e);if(t>=0)return t}else{var r=Me.toSetString(e);if(ke.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},Le.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},Le.prototype.toArray=function(){return this._array.slice()},Ae.ArraySet=Le;var Re={},Pe=Oe;function Ie(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Ie.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},Ie.prototype.add=function(e){var t,r,n,s,i,o;t=this._last,r=e,n=t.generatedLine,s=r.generatedLine,i=t.generatedColumn,o=r.generatedColumn,s>n||s==n&&o>=i||Pe.compareByGeneratedPositionsInflated(t,r)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},Ie.prototype.toArray=function(){return this._sorted||(this._array.sort(Pe.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},Re.MappingList=Ie;var Ne=Se,Fe=Oe,je=Ae.ArraySet,Ue=Re.MappingList;function De(e){e||(e={}),this._file=Fe.getArg(e,"file",null),this._sourceRoot=Fe.getArg(e,"sourceRoot",null),this._skipValidation=Fe.getArg(e,"skipValidation",!1),this._sources=new je,this._names=new je,this._mappings=new Ue,this._sourcesContents=null}De.prototype._version=3,De.fromSourceMap=function(e){var t=e.sourceRoot,r=new De({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var n={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(n.source=e.source,null!=t&&(n.source=Fe.relative(t,n.source)),n.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(n.name=e.name)),r.addMapping(n)})),e.sources.forEach((function(n){var s=n;null!==t&&(s=Fe.relative(t,n)),r._sources.has(s)||r._sources.add(s);var i=e.sourceContentFor(n);null!=i&&r.setSourceContent(n,i)})),r},De.prototype.addMapping=function(e){var t=Fe.getArg(e,"generated"),r=Fe.getArg(e,"original",null),n=Fe.getArg(e,"source",null),s=Fe.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,r,n,s),null!=n&&(n=String(n),this._sources.has(n)||this._sources.add(n)),null!=s&&(s=String(s),this._names.has(s)||this._names.add(s)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:n,name:s})},De.prototype.setSourceContent=function(e,t){var r=e;null!=this._sourceRoot&&(r=Fe.relative(this._sourceRoot,r)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[Fe.toSetString(r)]=t):this._sourcesContents&&(delete this._sourcesContents[Fe.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},De.prototype.applySourceMap=function(e,t,r){var n=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');n=e.file}var s=this._sourceRoot;null!=s&&(n=Fe.relative(s,n));var i=new je,o=new je;this._mappings.unsortedForEach((function(t){if(t.source===n&&null!=t.originalLine){var a=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=a.source&&(t.source=a.source,null!=r&&(t.source=Fe.join(r,t.source)),null!=s&&(t.source=Fe.relative(s,t.source)),t.originalLine=a.line,t.originalColumn=a.column,null!=a.name&&(t.name=a.name))}var l=t.source;null==l||i.has(l)||i.add(l);var u=t.name;null==u||o.has(u)||o.add(u)}),this),this._sources=i,this._names=o,e.sources.forEach((function(t){var n=e.sourceContentFor(t);null!=n&&(null!=r&&(t=Fe.join(r,t)),null!=s&&(t=Fe.relative(s,t)),this.setSourceContent(t,n))}),this)},De.prototype._validateMapping=function(e,t,r,n){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||r||n)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},De.prototype._serializeMappings=function(){for(var e,t,r,n,s=0,i=1,o=0,a=0,l=0,u=0,c="",h=this._mappings.toArray(),p=0,f=h.length;p<f;p++){if(e="",(t=h[p]).generatedLine!==i)for(s=0;t.generatedLine!==i;)e+=";",i++;else if(p>0){if(!Fe.compareByGeneratedPositionsInflated(t,h[p-1]))continue;e+=","}e+=Ne.encode(t.generatedColumn-s),s=t.generatedColumn,null!=t.source&&(n=this._sources.indexOf(t.source),e+=Ne.encode(n-u),u=n,e+=Ne.encode(t.originalLine-1-a),a=t.originalLine-1,e+=Ne.encode(t.originalColumn-o),o=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=Ne.encode(r-l),l=r)),c+=e}return c},De.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=Fe.relative(t,e));var r=Fe.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null}),this)},De.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},De.prototype.toString=function(){return JSON.stringify(this.toJSON())},be.SourceMapGenerator=De;var Be={},Te={};!function(e){function t(r,n,s,i,o,a){var l=Math.floor((n-r)/2)+r,u=o(s,i[l],!0);return 0===u?l:u>0?n-l>1?t(l,n,s,i,o,a):a==e.LEAST_UPPER_BOUND?n<i.length?n:-1:l:l-r>1?t(r,l,s,i,o,a):a==e.LEAST_UPPER_BOUND?l:r<0?-1:r}e.GREATEST_LOWER_BOUND=1,e.LEAST_UPPER_BOUND=2,e.search=function(r,n,s,i){if(0===n.length)return-1;var o=t(-1,n.length,r,n,s,i||e.GREATEST_LOWER_BOUND);if(o<0)return-1;for(;o-1>=0&&0===s(n[o],n[o-1],!0);)--o;return o}}(Te);var $e={};function Ge(e){function t(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}return function e(r,n,s,i){if(s<i){var o=s-1;t(r,(c=s,h=i,Math.round(c+Math.random()*(h-c))),i);for(var a=r[i],l=s;l<i;l++)n(r[l],a,!1)<=0&&t(r,o+=1,l);t(r,o+1,l);var u=o+1;e(r,n,s,u-1),e(r,n,u+1,i)}var c,h}}let ze=new WeakMap;$e.quickSort=function(e,t,r=0){let n=ze.get(t);void 0===n&&(n=function(e){let t=Ge.toString();return new Function(`return ${t}`)()(e)}(t),ze.set(t,n)),n(e,t,r,e.length-1)};var We=Oe,Ve=Te,Je=Ae.ArraySet,qe=Se,Ye=$e.quickSort;function Qe(e,t){var r=e;return"string"==typeof e&&(r=We.parseSourceMapInput(e)),null!=r.sections?new et(r,t):new Ze(r,t)}function Ze(e,t){var r=e;"string"==typeof e&&(r=We.parseSourceMapInput(e));var n=We.getArg(r,"version"),s=We.getArg(r,"sources"),i=We.getArg(r,"names",[]),o=We.getArg(r,"sourceRoot",null),a=We.getArg(r,"sourcesContent",null),l=We.getArg(r,"mappings"),u=We.getArg(r,"file",null);if(n!=this._version)throw new Error("Unsupported version: "+n);o&&(o=We.normalize(o)),s=s.map(String).map(We.normalize).map((function(e){return o&&We.isAbsolute(o)&&We.isAbsolute(e)?We.relative(o,e):e})),this._names=Je.fromArray(i.map(String),!0),this._sources=Je.fromArray(s,!0),this._absoluteSources=this._sources.toArray().map((function(e){return We.computeSourceURL(o,e,t)})),this.sourceRoot=o,this.sourcesContent=a,this._mappings=l,this._sourceMapURL=t,this.file=u}function He(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}Qe.fromSourceMap=function(e,t){return Ze.fromSourceMap(e,t)},Qe.prototype._version=3,Qe.prototype.__generatedMappings=null,Object.defineProperty(Qe.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),Qe.prototype.__originalMappings=null,Object.defineProperty(Qe.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),Qe.prototype._charIsMappingSeparator=function(e,t){var r=e.charAt(t);return";"===r||","===r},Qe.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},Qe.GENERATED_ORDER=1,Qe.ORIGINAL_ORDER=2,Qe.GREATEST_LOWER_BOUND=1,Qe.LEAST_UPPER_BOUND=2,Qe.prototype.eachMapping=function(e,t,r){var n,s=t||null;switch(r||Qe.GENERATED_ORDER){case Qe.GENERATED_ORDER:n=this._generatedMappings;break;case Qe.ORIGINAL_ORDER:n=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}for(var i=this.sourceRoot,o=e.bind(s),a=this._names,l=this._sources,u=this._sourceMapURL,c=0,h=n.length;c<h;c++){var p=n[c],f=null===p.source?null:l.at(p.source);o({source:f=We.computeSourceURL(i,f,u),generatedLine:p.generatedLine,generatedColumn:p.generatedColumn,originalLine:p.originalLine,originalColumn:p.originalColumn,name:null===p.name?null:a.at(p.name)})}},Qe.prototype.allGeneratedPositionsFor=function(e){var t=We.getArg(e,"line"),r={source:We.getArg(e,"source"),originalLine:t,originalColumn:We.getArg(e,"column",0)};if(r.source=this._findSourceIndex(r.source),r.source<0)return[];var n=[],s=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",We.compareByOriginalPositions,Ve.LEAST_UPPER_BOUND);if(s>=0){var i=this._originalMappings[s];if(void 0===e.column)for(var o=i.originalLine;i&&i.originalLine===o;)n.push({line:We.getArg(i,"generatedLine",null),column:We.getArg(i,"generatedColumn",null),lastColumn:We.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++s];else for(var a=i.originalColumn;i&&i.originalLine===t&&i.originalColumn==a;)n.push({line:We.getArg(i,"generatedLine",null),column:We.getArg(i,"generatedColumn",null),lastColumn:We.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++s]}return n},Be.SourceMapConsumer=Qe,Ze.prototype=Object.create(Qe.prototype),Ze.prototype.consumer=Qe,Ze.prototype._findSourceIndex=function(e){var t,r=e;if(null!=this.sourceRoot&&(r=We.relative(this.sourceRoot,r)),this._sources.has(r))return this._sources.indexOf(r);for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==e)return t;return-1},Ze.fromSourceMap=function(e,t){var r=Object.create(Ze.prototype),n=r._names=Je.fromArray(e._names.toArray(),!0),s=r._sources=Je.fromArray(e._sources.toArray(),!0);r.sourceRoot=e._sourceRoot,r.sourcesContent=e._generateSourcesContent(r._sources.toArray(),r.sourceRoot),r.file=e._file,r._sourceMapURL=t,r._absoluteSources=r._sources.toArray().map((function(e){return We.computeSourceURL(r.sourceRoot,e,t)}));for(var i=e._mappings.toArray().slice(),o=r.__generatedMappings=[],a=r.__originalMappings=[],l=0,u=i.length;l<u;l++){var c=i[l],h=new He;h.generatedLine=c.generatedLine,h.generatedColumn=c.generatedColumn,c.source&&(h.source=s.indexOf(c.source),h.originalLine=c.originalLine,h.originalColumn=c.originalColumn,c.name&&(h.name=n.indexOf(c.name)),a.push(h)),o.push(h)}return Ye(r.__originalMappings,We.compareByOriginalPositions),r},Ze.prototype._version=3,Object.defineProperty(Ze.prototype,"sources",{get:function(){return this._absoluteSources.slice()}});const Ke=We.compareByGeneratedPositionsDeflatedNoLine;function Xe(e,t){let r=e.length,n=e.length-t;if(!(n<=1))if(2==n){let r=e[t],n=e[t+1];Ke(r,n)>0&&(e[t]=n,e[t+1]=r)}else if(n<20)for(let n=t;n<r;n++)for(let r=n;r>t;r--){let t=e[r-1],n=e[r];if(Ke(t,n)<=0)break;e[r-1]=n,e[r]=t}else Ye(e,Ke,t)}function et(e,t){var r=e;"string"==typeof e&&(r=We.parseSourceMapInput(e));var n=We.getArg(r,"version"),s=We.getArg(r,"sections");if(n!=this._version)throw new Error("Unsupported version: "+n);this._sources=new Je,this._names=new Je;var i={line:-1,column:0};this._sections=s.map((function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var r=We.getArg(e,"offset"),n=We.getArg(r,"line"),s=We.getArg(r,"column");if(n<i.line||n===i.line&&s<i.column)throw new Error("Section offsets must be ordered and non-overlapping.");return i=r,{generatedOffset:{generatedLine:n+1,generatedColumn:s+1},consumer:new Qe(We.getArg(e,"map"),t)}}))}Ze.prototype._parseMappings=function(e,t){var r,n,s,i,o=1,a=0,l=0,u=0,c=0,h=0,p=e.length,f=0,d={},g=[],m=[];let w=0;for(;f<p;)if(";"===e.charAt(f))o++,f++,a=0,Xe(m,w),w=m.length;else if(","===e.charAt(f))f++;else{for((r=new He).generatedLine=o,s=f;s<p&&!this._charIsMappingSeparator(e,s);s++);for(e.slice(f,s),n=[];f<s;)qe.decode(e,f,d),i=d.value,f=d.rest,n.push(i);if(2===n.length)throw new Error("Found a source, but no line and column");if(3===n.length)throw new Error("Found a source and line, but no column");if(r.generatedColumn=a+n[0],a=r.generatedColumn,n.length>1&&(r.source=c+n[1],c+=n[1],r.originalLine=l+n[2],l=r.originalLine,r.originalLine+=1,r.originalColumn=u+n[3],u=r.originalColumn,n.length>4&&(r.name=h+n[4],h+=n[4])),m.push(r),"number"==typeof r.originalLine){let e=r.source;for(;g.length<=e;)g.push(null);null===g[e]&&(g[e]=[]),g[e].push(r)}}Xe(m,w),this.__generatedMappings=m;for(var y=0;y<g.length;y++)null!=g[y]&&Ye(g[y],We.compareByOriginalPositionsNoSource);this.__originalMappings=[].concat(...g)},Ze.prototype._findMapping=function(e,t,r,n,s,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[n]);return Ve.search(e,t,s,i)},Ze.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var r=this._generatedMappings[e+1];if(t.generatedLine===r.generatedLine){t.lastGeneratedColumn=r.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},Ze.prototype.originalPositionFor=function(e){var t={generatedLine:We.getArg(e,"line"),generatedColumn:We.getArg(e,"column")},r=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",We.compareByGeneratedPositionsDeflated,We.getArg(e,"bias",Qe.GREATEST_LOWER_BOUND));if(r>=0){var n=this._generatedMappings[r];if(n.generatedLine===t.generatedLine){var s=We.getArg(n,"source",null);null!==s&&(s=this._sources.at(s),s=We.computeSourceURL(this.sourceRoot,s,this._sourceMapURL));var i=We.getArg(n,"name",null);return null!==i&&(i=this._names.at(i)),{source:s,line:We.getArg(n,"originalLine",null),column:We.getArg(n,"originalColumn",null),name:i}}}return{source:null,line:null,column:null,name:null}},Ze.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return null==e})))},Ze.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var n,s=e;if(null!=this.sourceRoot&&(s=We.relative(this.sourceRoot,s)),null!=this.sourceRoot&&(n=We.urlParse(this.sourceRoot))){var i=s.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!n.path||"/"==n.path)&&this._sources.has("/"+s))return this.sourcesContent[this._sources.indexOf("/"+s)]}if(t)return null;throw new Error('"'+s+'" is not in the SourceMap.')},Ze.prototype.generatedPositionFor=function(e){var t=We.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var r={source:t,originalLine:We.getArg(e,"line"),originalColumn:We.getArg(e,"column")},n=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",We.compareByOriginalPositions,We.getArg(e,"bias",Qe.GREATEST_LOWER_BOUND));if(n>=0){var s=this._originalMappings[n];if(s.source===r.source)return{line:We.getArg(s,"generatedLine",null),column:We.getArg(s,"generatedColumn",null),lastColumn:We.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},Be.BasicSourceMapConsumer=Ze,et.prototype=Object.create(Qe.prototype),et.prototype.constructor=Qe,et.prototype._version=3,Object.defineProperty(et.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var r=0;r<this._sections[t].consumer.sources.length;r++)e.push(this._sections[t].consumer.sources[r]);return e}}),et.prototype.originalPositionFor=function(e){var t={generatedLine:We.getArg(e,"line"),generatedColumn:We.getArg(e,"column")},r=Ve.search(t,this._sections,(function(e,t){var r=e.generatedLine-t.generatedOffset.generatedLine;return r||e.generatedColumn-t.generatedOffset.generatedColumn})),n=this._sections[r];return n?n.consumer.originalPositionFor({line:t.generatedLine-(n.generatedOffset.generatedLine-1),column:t.generatedColumn-(n.generatedOffset.generatedLine===t.generatedLine?n.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},et.prototype.hasContentsOfAllSources=function(){return this._sections.every((function(e){return e.consumer.hasContentsOfAllSources()}))},et.prototype.sourceContentFor=function(e,t){for(var r=0;r<this._sections.length;r++){var n=this._sections[r].consumer.sourceContentFor(e,!0);if(n)return n}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},et.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var r=this._sections[t];if(-1!==r.consumer._findSourceIndex(We.getArg(e,"source"))){var n=r.consumer.generatedPositionFor(e);if(n)return{line:n.line+(r.generatedOffset.generatedLine-1),column:n.column+(r.generatedOffset.generatedLine===n.line?r.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},et.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var n=this._sections[r],s=n.consumer._generatedMappings,i=0;i<s.length;i++){var o=s[i],a=n.consumer._sources.at(o.source);a=We.computeSourceURL(n.consumer.sourceRoot,a,this._sourceMapURL),this._sources.add(a),a=this._sources.indexOf(a);var l=null;o.name&&(l=n.consumer._names.at(o.name),this._names.add(l),l=this._names.indexOf(l));var u={source:a,generatedLine:o.generatedLine+(n.generatedOffset.generatedLine-1),generatedColumn:o.generatedColumn+(n.generatedOffset.generatedLine===o.generatedLine?n.generatedOffset.generatedColumn-1:0),originalLine:o.originalLine,originalColumn:o.originalColumn,name:l};this.__generatedMappings.push(u),"number"==typeof u.originalLine&&this.__originalMappings.push(u)}Ye(this.__generatedMappings,We.compareByGeneratedPositionsDeflated),Ye(this.__originalMappings,We.compareByOriginalPositions)},Be.IndexedSourceMapConsumer=et;var tt={},rt=be.SourceMapGenerator,nt=Oe,st=/(\r?\n)/,it="$$$isSourceNode$$$";function ot(e,t,r,n,s){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==s?null:s,this[it]=!0,null!=n&&this.add(n)}ot.fromStringWithSourceMap=function(e,t,r){var n=new ot,s=e.split(st),i=0,o=function(){return e()+(e()||"");function e(){return i<s.length?s[i++]:void 0}},a=1,l=0,u=null;return t.eachMapping((function(e){if(null!==u){if(!(a<e.generatedLine)){var t=(r=s[i]||"").substr(0,e.generatedColumn-l);return s[i]=r.substr(e.generatedColumn-l),l=e.generatedColumn,c(u,t),void(u=e)}c(u,o()),a++,l=0}for(;a<e.generatedLine;)n.add(o()),a++;if(l<e.generatedColumn){var r=s[i]||"";n.add(r.substr(0,e.generatedColumn)),s[i]=r.substr(e.generatedColumn),l=e.generatedColumn}u=e}),this),i<s.length&&(u&&c(u,o()),n.add(s.splice(i).join(""))),t.sources.forEach((function(e){var s=t.sourceContentFor(e);null!=s&&(null!=r&&(e=nt.join(r,e)),n.setSourceContent(e,s))})),n;function c(e,t){if(null===e||void 0===e.source)n.add(t);else{var s=r?nt.join(r,e.source):e.source;n.add(new ot(e.originalLine,e.originalColumn,s,t,e.name))}}},ot.prototype.add=function(e){if(Array.isArray(e))e.forEach((function(e){this.add(e)}),this);else{if(!e[it]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},ot.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[it]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},ot.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r<n;r++)(t=this.children[r])[it]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},ot.prototype.join=function(e){var t,r,n=this.children.length;if(n>0){for(t=[],r=0;r<n-1;r++)t.push(this.children[r]),t.push(e);t.push(this.children[r]),this.children=t}return this},ot.prototype.replaceRight=function(e,t){var r=this.children[this.children.length-1];return r[it]?r.replaceRight(e,t):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,t):this.children.push("".replace(e,t)),this},ot.prototype.setSourceContent=function(e,t){this.sourceContents[nt.toSetString(e)]=t},ot.prototype.walkSourceContents=function(e){for(var t=0,r=this.children.length;t<r;t++)this.children[t][it]&&this.children[t].walkSourceContents(e);var n=Object.keys(this.sourceContents);for(t=0,r=n.length;t<r;t++)e(nt.fromSetString(n[t]),this.sourceContents[n[t]])},ot.prototype.toString=function(){var e="";return this.walk((function(t){e+=t})),e},ot.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},r=new rt(e),n=!1,s=null,i=null,o=null,a=null;return this.walk((function(e,l){t.code+=e,null!==l.source&&null!==l.line&&null!==l.column?(s===l.source&&i===l.line&&o===l.column&&a===l.name||r.addMapping({source:l.source,original:{line:l.line,column:l.column},generated:{line:t.line,column:t.column},name:l.name}),s=l.source,i=l.line,o=l.column,a=l.name,n=!0):n&&(r.addMapping({generated:{line:t.line,column:t.column}}),s=null,n=!1);for(var u=0,c=e.length;u<c;u++)10===e.charCodeAt(u)?(t.line++,t.column=0,u+1===c?(s=null,n=!1):n&&r.addMapping({source:l.source,original:{line:l.line,column:l.column},generated:{line:t.line,column:t.column},name:l.name})):t.column++})),this.walkSourceContents((function(e,t){r.setSourceContent(e,t)})),{code:t.code,map:r}},tt.SourceNode=ot,ve.SourceMapGenerator=be.SourceMapGenerator,ve.SourceMapConsumer=Be.SourceMapConsumer,ve.SourceNode=tt.SourceNode;var at={nanoid:(e=21)=>{let t="",r=e;for(;r--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return t},customAlphabet:(e,t)=>()=>{let r="",n=t;for(;n--;)r+=e[Math.random()*e.length|0];return r}};let{SourceMapConsumer:lt,SourceMapGenerator:ut}=ve,{existsSync:ct,readFileSync:ht}=s,{dirname:pt,join:ft}=r;class dt{constructor(e,t){if(!1===t.map)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let r=t.map?t.map.prev:void 0,n=this.loadMap(t.from,r);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=pt(this.mapFile)),n&&(this.text=n)}consumer(){return this.consumerCache||(this.consumerCache=new lt(this.text)),this.consumerCache}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}startWith(e,t){return!!e&&e.substr(0,t.length)===t}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let r=e.lastIndexOf(t.pop()),n=e.indexOf("*/",r);r>-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}decodeInline(e){if(/^data:application\/json;charset=utf-?8,/.test(e)||/^data:application\/json,/.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),Buffer?Buffer.from(t,"base64").toString():window.atob(t);var t;let r=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+r)}loadFile(e){if(this.root=pt(e),ct(e))return this.mapFile=e,ht(e,"utf-8").toString().trim()}loadMap(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof lt)return ut.fromSourceMap(t).toString();if(t instanceof ut)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}{let r=t(e);if(r){let e=this.loadFile(r);if(!e)throw new Error("Unable to load previous source map: "+r.toString());return e}}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let t=this.annotation;return e&&(t=ft(pt(e),t)),this.loadFile(t)}}}isMap(e){return"object"==typeof e&&("string"==typeof e.mappings||"string"==typeof e._mappings||Array.isArray(e.sections))}}var gt=dt;dt.default=dt;let{SourceMapConsumer:mt,SourceMapGenerator:wt}=ve,{fileURLToPath:yt,pathToFileURL:vt}=n,{resolve:bt,isAbsolute:St}=r,{nanoid:Ct}=at,_t=Z,xt=ee,Ot=gt,At=Symbol("fromOffsetCache"),Mt=Boolean(mt&&wt),kt=Boolean(bt&&St);class Et{constructor(e,t={}){if(null==e||"object"==typeof e&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),"\ufeff"===this.css[0]||"￾"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!kt||/^\w+:\/\//.test(t.from)||St(t.from)?this.file=t.from:this.file=bt(t.from)),kt&&Mt){let e=new Ot(this.css,t);if(e.text){this.map=e;let t=e.consumer().file;!this.file&&t&&(this.file=this.mapResolve(t))}}this.file||(this.id="<input css "+Ct(6)+">"),this.map&&(this.map.file=this.from)}fromOffset(e){let t,r;if(this[At])r=this[At];else{let e=this.css.split("\n");r=new Array(e.length);let t=0;for(let n=0,s=e.length;n<s;n++)r[n]=t,t+=e[n].length+1;this[At]=r}t=r[r.length-1];let n=0;if(e>=t)n=r.length-1;else{let t,s=r.length-2;for(;n<s;)if(t=n+(s-n>>1),e<r[t])s=t-1;else{if(!(e>=r[t+1])){n=t;break}n=t+1}}return{line:n+1,col:e-r[n]+1}}error(e,t,r,n={}){let s,i,o;if(t&&"object"==typeof t){let e=t,n=r;if("number"==typeof t.offset){let n=this.fromOffset(e.offset);t=n.line,r=n.col}else t=e.line,r=e.column;if("number"==typeof n.offset){let e=this.fromOffset(n.offset);i=e.line,o=e.col}else i=n.line,o=n.column}else if(!r){let e=this.fromOffset(t);t=e.line,r=e.col}let a=this.origin(t,r,i,o);return s=a?new xt(e,void 0===a.endLine?a.line:{line:a.line,column:a.column},void 0===a.endLine?a.column:{line:a.endLine,column:a.endColumn},a.source,a.file,n.plugin):new xt(e,void 0===i?t:{line:t,column:r},void 0===i?r:{line:i,column:o},this.css,this.file,n.plugin),s.input={line:t,column:r,endLine:i,endColumn:o,source:this.css},this.file&&(vt&&(s.input.url=vt(this.file).toString()),s.input.file=this.file),s}origin(e,t,r,n){if(!this.map)return!1;let s,i,o=this.map.consumer(),a=o.originalPositionFor({line:e,column:t});if(!a.source)return!1;"number"==typeof r&&(s=o.originalPositionFor({line:r,column:n})),i=St(a.source)?vt(a.source):new URL(a.source,this.map.consumer().sourceRoot||vt(this.map.mapFile));let l={url:i.toString(),line:a.line,column:a.column,endLine:s&&s.line,endColumn:s&&s.column};if("file:"===i.protocol){if(!yt)throw new Error("file: protocol is not available in this PostCSS build");l.file=yt(i)}let u=o.sourceContentFor(a.source);return u&&(l.source=u),l}mapResolve(e){return/^\w+:\/\//.test(e)?e:bt(this.map.consumer().sourceRoot||this.map.root||".",e)}get from(){return this.file||this.id}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])null!=this[t]&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}}var Lt=Et;Et.default=Et,_t&&_t.registerInput&&_t.registerInput(Et);let{SourceMapConsumer:Rt,SourceMapGenerator:Pt}=ve,{dirname:It,resolve:Nt,relative:Ft,sep:jt}=r,{pathToFileURL:Ut}=n,Dt=Lt,Bt=Boolean(Rt&&Pt),Tt=Boolean(It&&Nt&&Ft&&jt);var $t=class{constructor(e,t,r,n){this.stringify=e,this.mapOpts=r.map||{},this.root=t,this.opts=r,this.css=n}isMap(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}}));else{let e=new Dt(this.css,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}isInline(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;let e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((e=>e.inline)))}isSourcesContent(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((e=>e.withContent()))}clearAnnotation(){if(!1!==this.mapOpts.annotation)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],"comment"===e.type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm,""))}setSourcesContent(){let e={};if(this.root)this.root.walk((t=>{if(t.source){let r=t.source.input.from;r&&!e[r]&&(e[r]=!0,this.map.setSourceContent(this.toUrl(this.path(r)),t.source.input.css))}}));else if(this.css){let e=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(e,this.css)}}applyPrevMaps(){for(let e of this.previous()){let t,r=this.toUrl(this.path(e.file)),n=e.root||It(e.file);!1===this.mapOpts.sourcesContent?(t=new Rt(e.text),t.sourcesContent&&(t.sourcesContent=t.sourcesContent.map((()=>null)))):t=e.consumer(),this.map.applySourceMap(t,r,this.toUrl(this.path(n)))}}isAnnotation(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((e=>e.annotation)))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}addAnnotation(){let e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:"function"==typeof this.mapOpts.annotation?this.mapOpts.annotation(this.opts.to,this.root):this.outputFile()+".map";let t="\n";this.css.includes("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}generateMap(){if(this.root)this.generateString();else if(1===this.previous().length){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Pt.fromSourceMap(e)}else this.map=new Pt({file:this.outputFile()}),this.map.addMapping({source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>",generated:{line:1,column:0},original:{line:1,column:0}});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}path(e){if(0===e.indexOf("<"))return e;if(/^\w+:\/\//.test(e))return e;if(this.mapOpts.absolute)return e;let t=this.opts.to?It(this.opts.to):".";return"string"==typeof this.mapOpts.annotation&&(t=It(Nt(t,this.mapOpts.annotation))),e=Ft(t,e)}toUrl(e){return"\\"===jt&&(e=e.replace(/\\/g,"/")),encodeURI(e).replace(/[#?]/g,encodeURIComponent)}sourcePath(e){if(this.mapOpts.from)return this.toUrl(this.mapOpts.from);if(this.mapOpts.absolute){if(Ut)return Ut(e.source.input.from).toString();throw new Error("`map.absolute` option is not available in this PostCSS build")}return this.toUrl(this.path(e.source.input.from))}generateString(){this.css="",this.map=new Pt({file:this.outputFile()});let e,t,r=1,n=1,s="<no source>",i={source:"",generated:{line:0,column:0},original:{line:0,column:0}};this.stringify(this.root,((o,a,l)=>{if(this.css+=o,a&&"end"!==l&&(i.generated.line=r,i.generated.column=n-1,a.source&&a.source.start?(i.source=this.sourcePath(a),i.original.line=a.source.start.line,i.original.column=a.source.start.column-1,this.map.addMapping(i)):(i.source=s,i.original.line=1,i.original.column=0,this.map.addMapping(i))),e=o.match(/\n/g),e?(r+=e.length,t=o.lastIndexOf("\n"),n=o.length-t):n+=o.length,a&&"start"!==l){let e=a.parent||{raws:{}};("decl"!==a.type||a!==e.last||e.raws.semicolon)&&(a.source&&a.source.end?(i.source=this.sourcePath(a),i.original.line=a.source.end.line,i.original.column=a.source.end.column-1,i.generated.line=r,i.generated.column=n-2,this.map.addMapping(i)):(i.source=s,i.original.line=1,i.original.column=0,i.generated.line=r,i.generated.column=n-1,this.map.addMapping(i)))}}))}generate(){if(this.clearAnnotation(),Tt&&Bt&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,(t=>{e+=t})),[e]}}};let Gt=ge;class zt extends Gt{constructor(e){super(e),this.type="comment"}}var Wt=zt;zt.default=zt;let Vt,Jt,qt,{isClean:Yt,my:Qt}=te,Zt=ye,Ht=Wt,Kt=ge;function Xt(e){return e.map((e=>(e.nodes&&(e.nodes=Xt(e.nodes)),delete e.source,e)))}function er(e){if(e[Yt]=!1,e.proxyOf.nodes)for(let t of e.proxyOf.nodes)er(t)}class tr extends Kt{push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}each(e){if(!this.proxyOf.nodes)return;let t,r,n=this.getIterator();for(;this.indexes[n]<this.proxyOf.nodes.length&&(t=this.indexes[n],r=e(this.proxyOf.nodes[t],t),!1!==r);)this.indexes[n]+=1;return delete this.indexes[n],r}walk(e){return this.each(((t,r)=>{let n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n}))}walkDecls(e,t){return t?e instanceof RegExp?this.walk(((r,n)=>{if("decl"===r.type&&e.test(r.prop))return t(r,n)})):this.walk(((r,n)=>{if("decl"===r.type&&r.prop===e)return t(r,n)})):(t=e,this.walk(((e,r)=>{if("decl"===e.type)return t(e,r)})))}walkRules(e,t){return t?e instanceof RegExp?this.walk(((r,n)=>{if("rule"===r.type&&e.test(r.selector))return t(r,n)})):this.walk(((r,n)=>{if("rule"===r.type&&r.selector===e)return t(r,n)})):(t=e,this.walk(((e,r)=>{if("rule"===e.type)return t(e,r)})))}walkAtRules(e,t){return t?e instanceof RegExp?this.walk(((r,n)=>{if("atrule"===r.type&&e.test(r.name))return t(r,n)})):this.walk(((r,n)=>{if("atrule"===r.type&&r.name===e)return t(r,n)})):(t=e,this.walk(((e,r)=>{if("atrule"===e.type)return t(e,r)})))}walkComments(e){return this.walk(((t,r)=>{if("comment"===t.type)return e(t,r)}))}append(...e){for(let t of e){let e=this.normalize(t,this.last);for(let t of e)this.proxyOf.nodes.push(t)}return this.markDirty(),this}prepend(...e){e=e.reverse();for(let t of e){let e=this.normalize(t,this.first,"prepend").reverse();for(let t of e)this.proxyOf.nodes.unshift(t);for(let t in this.indexes)this.indexes[t]=this.indexes[t]+e.length}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}insertBefore(e,t){let r,n=0===(e=this.index(e))&&"prepend",s=this.normalize(t,this.proxyOf.nodes[e],n).reverse();for(let t of s)this.proxyOf.nodes.splice(e,0,t);for(let t in this.indexes)r=this.indexes[t],e<=r&&(this.indexes[t]=r+s.length);return this.markDirty(),this}insertAfter(e,t){e=this.index(e);let r,n=this.normalize(t,this.proxyOf.nodes[e]).reverse();for(let t of n)this.proxyOf.nodes.splice(e+1,0,t);for(let t in this.indexes)r=this.indexes[t],e<r&&(this.indexes[t]=r+n.length);return this.markDirty(),this}removeChild(e){let t;e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);for(let r in this.indexes)t=this.indexes[r],t>=e&&(this.indexes[r]=t-1);return this.markDirty(),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}replaceValues(e,t,r){return r||(r=t,t={}),this.walkDecls((n=>{t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))})),this.markDirty(),this}every(e){return this.nodes.every(e)}some(e){return this.nodes.some(e)}index(e){return"number"==typeof e?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}normalize(e,t){if("string"==typeof e)e=Xt(Vt(e).nodes);else if(Array.isArray(e)){e=e.slice(0);for(let t of e)t.parent&&t.parent.removeChild(t,"ignore")}else if("root"===e.type&&"document"!==this.type){e=e.nodes.slice(0);for(let t of e)t.parent&&t.parent.removeChild(t,"ignore")}else if(e.type)e=[e];else if(e.prop){if(void 0===e.value)throw new Error("Value field is missed in node creation");"string"!=typeof e.value&&(e.value=String(e.value)),e=[new Zt(e)]}else if(e.selector)e=[new Jt(e)];else if(e.name)e=[new qt(e)];else{if(!e.text)throw new Error("Unknown node type in node creation");e=[new Ht(e)]}return e.map((e=>(e[Qt]||tr.rebuild(e),(e=e.proxyOf).parent&&e.parent.removeChild(e),e[Yt]&&er(e),void 0===e.raws.before&&t&&void 0!==t.raws.before&&(e.raws.before=t.raws.before.replace(/\S/g,"")),e.parent=this,e)))}getProxyProcessor(){return{set:(e,t,r)=>(e[t]===r||(e[t]=r,"name"!==t&&"params"!==t&&"selector"!==t||e.markDirty()),!0),get:(e,t)=>"proxyOf"===t?e:e[t]?"each"===t||"string"==typeof t&&t.startsWith("walk")?(...r)=>e[t](...r.map((e=>"function"==typeof e?(t,r)=>e(t.toProxy(),r):e))):"every"===t||"some"===t?r=>e[t](((e,...t)=>r(e.toProxy(),...t))):"root"===t?()=>e.root().toProxy():"nodes"===t?e.nodes.map((e=>e.toProxy())):"first"===t||"last"===t?e[t].toProxy():e[t]:e[t]}}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}}tr.registerParse=e=>{Vt=e},tr.registerRule=e=>{Jt=e},tr.registerAtRule=e=>{qt=e};var rr=tr;tr.default=tr,tr.rebuild=e=>{"atrule"===e.type?Object.setPrototypeOf(e,qt.prototype):"rule"===e.type?Object.setPrototypeOf(e,Jt.prototype):"decl"===e.type?Object.setPrototypeOf(e,Zt.prototype):"comment"===e.type&&Object.setPrototypeOf(e,Ht.prototype),e[Qt]=!0,e.nodes&&e.nodes.forEach((e=>{tr.rebuild(e)}))};let nr,sr,ir=rr;class or extends ir{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new nr(new sr,this,e).stringify()}}or.registerLazyResult=e=>{nr=e},or.registerProcessor=e=>{sr=e};var ar=or;or.default=or;let lr={};var ur=function(e){lr[e]||(lr[e]=!0,"undefined"!=typeof console&&console.warn&&console.warn(e))};class cr{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let e=t.node.rangeBy(t);this.line=e.start.line,this.column=e.start.column,this.endLine=e.end.line,this.endColumn=e.end.column}for(let e in t)this[e]=t[e]}toString(){return this.node?this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}}var hr=cr;cr.default=cr;let pr=hr;class fr{constructor(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let r=new pr(e,t);return this.messages.push(r),r}warnings(){return this.messages.filter((e=>"warning"===e.type))}get content(){return this.css}}var dr=fr;fr.default=fr;let gr=rr;class mr extends gr{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}}var wr=mr;mr.default=mr,gr.registerAtRule(mr);let yr,vr,br=rr;class Sr extends br{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}removeChild(e,t){let r=this.index(e);return!t&&0===r&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[r].raws.before),super.removeChild(e)}normalize(e,t,r){let n=super.normalize(e);if(t)if("prepend"===r)this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let e of n)e.raws.before=t.raws.before;return n}toResult(e={}){return new yr(new vr,this,e).stringify()}}Sr.registerLazyResult=e=>{yr=e},Sr.registerProcessor=e=>{vr=e};var Cr=Sr;Sr.default=Sr;let _r={split(e,t,r){let n=[],s="",i=!1,o=0,a=!1,l=!1;for(let r of e)l?l=!1:"\\"===r?l=!0:a?r===a&&(a=!1):'"'===r||"'"===r?a=r:"("===r?o+=1:")"===r?o>0&&(o-=1):0===o&&t.includes(r)&&(i=!0),i?(""!==s&&n.push(s.trim()),s="",i=!1):s+=r;return(r||""!==s)&&n.push(s.trim()),n},space:e=>_r.split(e,[" ","\n","\t"]),comma:e=>_r.split(e,[","],!0)};var xr=_r;_r.default=_r;let Or=rr,Ar=xr;class Mr extends Or{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return Ar.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}var kr=Mr;Mr.default=Mr,Or.registerRule(Mr);let Er=ye,Lr=z,Rr=Wt,Pr=wr,Ir=Cr,Nr=kr;var Fr=class{constructor(e){this.input=e,this.root=new Ir,this.current=this.root,this.spaces="",this.semicolon=!1,this.customProperty=!1,this.createTokenizer(),this.root.source={input:e,start:{offset:0,line:1,column:1}}}createTokenizer(){this.tokenizer=Lr(this.input)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}comment(e){let t=new Rr;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]);let r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{let e=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=e[2],t.raws.left=e[1],t.raws.right=e[3]}}emptyRule(e){let t=new Nr;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}other(e){let t=!1,r=null,n=!1,s=null,i=[],o=e[1].startsWith("--"),a=[],l=e;for(;l;){if(r=l[0],a.push(l),"("===r||"["===r)s||(s=l),i.push("("===r?")":"]");else if(o&&n&&"{"===r)s||(s=l),i.push("}");else if(0===i.length){if(";"===r){if(n)return void this.decl(a,o);break}if("{"===r)return void this.rule(a);if("}"===r){this.tokenizer.back(a.pop()),t=!0;break}":"===r&&(n=!0)}else r===i[i.length-1]&&(i.pop(),0===i.length&&(s=null));l=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(s),t&&n){for(;a.length&&(l=a[a.length-1][0],"space"===l||"comment"===l);)this.tokenizer.back(a.pop());this.decl(a,o)}else this.unknownWord(a)}rule(e){e.pop();let t=new Nr;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}decl(e,t){let r=new Er;this.init(r,e[0][2]);let n,s=e[e.length-1];for(";"===s[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(s[3]||s[2]);"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){let t=e[0][0];if(":"===t||"space"===t||"comment"===t)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(n=e.shift(),":"===n[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));let i=this.spacesAndCommentsFromStart(e);this.precheckMissedSemicolon(e);for(let t=e.length-1;t>=0;t--){if(n=e[t],"!important"===n[1].toLowerCase()){r.important=!0;let n=this.stringFrom(e,t);n=this.spacesFromEnd(e)+n," !important"!==n&&(r.raws.important=n);break}if("important"===n[1].toLowerCase()){let n=e.slice(0),s="";for(let e=t;e>0;e--){let t=n[e][0];if(0===s.trim().indexOf("!")&&"space"!==t)break;s=n.pop()[1]+s}0===s.trim().indexOf("!")&&(r.important=!0,r.raws.important=s,e=n)}if("space"!==n[0]&&"comment"!==n[0])break}let o=e.some((e=>"space"!==e[0]&&"comment"!==e[0]));this.raw(r,"value",e),o?r.raws.between+=i:r.value=i+r.value,r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}atrule(e){let t,r,n,s=new Pr;s.name=e[1].slice(1),""===s.name&&this.unnamedAtrule(s,e),this.init(s,e[2]);let i=!1,o=!1,a=[],l=[];for(;!this.tokenizer.endOfFile();){if(t=(e=this.tokenizer.nextToken())[0],"("===t||"["===t?l.push("("===t?")":"]"):"{"===t&&l.length>0?l.push("}"):t===l[l.length-1]&&l.pop(),0===l.length){if(";"===t){s.source.end=this.getPosition(e[2]),this.semicolon=!0;break}if("{"===t){o=!0;break}if("}"===t){if(a.length>0){for(n=a.length-1,r=a[n];r&&"space"===r[0];)r=a[--n];r&&(s.source.end=this.getPosition(r[3]||r[2]))}this.end(e);break}a.push(e)}else a.push(e);if(this.tokenizer.endOfFile()){i=!0;break}}s.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(s.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(s,"params",a),i&&(e=a[a.length-1],s.source.end=this.getPosition(e[3]||e[2]),this.spaces=s.raws.between,s.raws.between="")):(s.raws.afterName="",s.params=""),o&&(s.nodes=[],this.current=s)}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let e=this.current.nodes[this.current.nodes.length-1];e&&"rule"===e.type&&!e.raws.ownSemicolon&&(e.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{offset:e,line:t.line,column:t.col}}init(e,t){this.current.push(e),e.source={start:this.getPosition(t),input:this.input},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}raw(e,t,r){let n,s,i,o,a=r.length,l="",u=!0,c=/^([#.|])?(\w)+/i;for(let t=0;t<a;t+=1)n=r[t],s=n[0],"comment"!==s||"rule"!==e.type?"comment"===s||"space"===s&&t===a-1?u=!1:l+=n[1]:(o=r[t-1],i=r[t+1],"space"!==o[0]&&"space"!==i[0]&&c.test(o[1])&&c.test(i[1])?l+=n[1]:u=!1);if(!u){let n=r.reduce(((e,t)=>e+t[1]),"");e.raws[t]={value:l,raw:n}}e[t]=l}spacesAndCommentsFromEnd(e){let t,r="";for(;e.length&&(t=e[e.length-1][0],"space"===t||"comment"===t);)r=e.pop()[1]+r;return r}spacesAndCommentsFromStart(e){let t,r="";for(;e.length&&(t=e[0][0],"space"===t||"comment"===t);)r+=e.shift()[1];return r}spacesFromEnd(e){let t,r="";for(;e.length&&(t=e[e.length-1][0],"space"===t);)r=e.pop()[1]+r;return r}stringFrom(e,t){let r="";for(let n=t;n<e.length;n++)r+=e[n][1];return e.splice(t,e.length-t),r}colon(e){let t,r,n,s=0;for(let[i,o]of e.entries()){if(t=o,r=t[0],"("===r&&(s+=1),")"===r&&(s-=1),0===s&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return i}this.doubleColon(t)}n=t}return!1}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word",{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}unnamedAtrule(e,t){throw this.input.error("At-rule without name",{offset:t[2]},{offset:t[2]+t[1].length})}precheckMissedSemicolon(){}checkMissedSemicolon(e){let t=this.colon(e);if(!1===t)return;let r,n=0;for(let s=t-1;s>=0&&(r=e[s],"space"===r[0]||(n+=1,2!==n));s--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}};let jr=rr,Ur=Fr,Dr=Lt;function Br(e,t){let r=new Dr(e,t),n=new Ur(r);try{n.parse()}catch(e){throw"production"!==process.env.NODE_ENV&&"CssSyntaxError"===e.name&&t&&t.from&&(/\.scss$/i.test(t.from)?e.message+="\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser":/\.sass/i.test(t.from)?e.message+="\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser":/\.less$/i.test(t.from)&&(e.message+="\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser")),e}return n.root}var Tr=Br;Br.default=Br,jr.registerParse(Br);let{isClean:$r,my:Gr}=te,zr=$t,Wr=ae,Vr=rr,Jr=ar,qr=ur,Yr=dr,Qr=Tr,Zr=Cr;const Hr={document:"Document",root:"Root",atrule:"AtRule",rule:"Rule",decl:"Declaration",comment:"Comment"},Kr={postcssPlugin:!0,prepare:!0,Once:!0,Document:!0,Root:!0,Declaration:!0,Rule:!0,AtRule:!0,Comment:!0,DeclarationExit:!0,RuleExit:!0,AtRuleExit:!0,CommentExit:!0,RootExit:!0,DocumentExit:!0,OnceExit:!0},Xr={postcssPlugin:!0,prepare:!0,Once:!0};function en(e){return"object"==typeof e&&"function"==typeof e.then}function tn(e){let t=!1,r=Hr[e.type];return"decl"===e.type?t=e.prop.toLowerCase():"atrule"===e.type&&(t=e.name.toLowerCase()),t&&e.append?[r,r+"-"+t,0,r+"Exit",r+"Exit-"+t]:t?[r,r+"-"+t,r+"Exit",r+"Exit-"+t]:e.append?[r,0,r+"Exit"]:[r,r+"Exit"]}function rn(e){let t;return t="document"===e.type?["Document",0,"DocumentExit"]:"root"===e.type?["Root",0,"RootExit"]:tn(e),{node:e,events:t,eventIndex:0,visitors:[],visitorIndex:0,iterator:0}}function nn(e){return e[$r]=!1,e.nodes&&e.nodes.forEach((e=>nn(e))),e}let sn={};class on{constructor(e,t,r){let n;if(this.stringified=!1,this.processed=!1,"object"!=typeof t||null===t||"root"!==t.type&&"document"!==t.type)if(t instanceof on||t instanceof Yr)n=nn(t.root),t.map&&(void 0===r.map&&(r.map={}),r.map.inline||(r.map.inline=!1),r.map.prev=t.map);else{let e=Qr;r.syntax&&(e=r.syntax.parse),r.parser&&(e=r.parser),e.parse&&(e=e.parse);try{n=e(t,r)}catch(e){this.processed=!0,this.error=e}n&&!n[Gr]&&Vr.rebuild(n)}else n=nn(t);this.result=new Yr(e,n,r),this.helpers={...sn,result:this.result,postcss:sn},this.plugins=this.processor.plugins.map((e=>"object"==typeof e&&e.prepare?{...e,...e.prepare(this.result)}:e))}get[Symbol.toStringTag](){return"LazyResult"}get processor(){return this.result.processor}get opts(){return this.result.opts}get css(){return this.stringify().css}get content(){return this.stringify().content}get map(){return this.stringify().map}get root(){return this.sync().root}get messages(){return this.sync().messages}warnings(){return this.sync().warnings()}toString(){return this.css}then(e,t){return"production"!==process.env.NODE_ENV&&("from"in this.opts||qr("Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.")),this.async().then(e,t)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){if(en(this.runOnRoot(e)))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[$r];)e[$r]=!0,this.walkSync(e);if(this.listeners.OnceExit)if("document"===e.type)for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=Wr;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let r=new zr(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result}walkSync(e){e[$r]=!0;let t=tn(e);for(let r of t)if(0===r)e.nodes&&e.each((e=>{e[$r]||this.walkSync(e)}));else{let t=this.listeners[r];if(t&&this.visitSync(t,e.toProxy()))return}}visitSync(e,t){for(let[r,n]of e){let e;this.result.lastPlugin=r;try{e=n(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(en(e))throw this.getAsyncError()}}runOnRoot(e){this.result.lastPlugin=e;try{if("object"==typeof e&&e.Once){if("document"===this.result.root.type){let t=this.result.root.nodes.map((t=>e.Once(t,this.helpers)));return en(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let r=this.result.lastPlugin;try{if(t&&t.addToError(e),this.error=e,"CssSyntaxError"!==e.name||e.plugin){if(r.postcssVersion&&"production"!==process.env.NODE_ENV){let e=r.postcssPlugin,t=r.postcssVersion,n=this.result.processor.version,s=t.split("."),i=n.split(".");(s[0]!==i[0]||parseInt(s[1])>parseInt(i[1]))&&console.error("Unknown error from PostCSS plugin. Your current PostCSS version is "+n+", but "+e+" uses "+t+". Perhaps this is the source of the error below.")}}else e.plugin=r.postcssPlugin,e.setMessage()}catch(e){console&&console.error&&console.error(e)}return e}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let t=this.plugins[e],r=this.runOnRoot(t);if(en(r))try{await r}catch(e){throw this.handleError(e)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[$r];){e[$r]=!0;let t=[rn(e)];for(;t.length>0;){let e=this.visitTick(t);if(en(e))try{await e}catch(e){let r=t[t.length-1].node;throw this.handleError(e,r)}}}if(this.listeners.OnceExit)for(let[t,r]of this.listeners.OnceExit){this.result.lastPlugin=t;try{if("document"===e.type){let t=e.nodes.map((e=>r(e,this.helpers)));await Promise.all(t)}else await r(e,this.helpers)}catch(e){throw this.handleError(e)}}}return this.processed=!0,this.stringify()}prepareVisitors(){this.listeners={};let e=(e,t,r)=>{this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push([e,r])};for(let t of this.plugins)if("object"==typeof t)for(let r in t){if(!Kr[r]&&/^[A-Z]/.test(r))throw new Error(`Unknown event ${r} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Xr[r])if("object"==typeof t[r])for(let n in t[r])e(t,"*"===n?r:r+"-"+n.toLowerCase(),t[r][n]);else"function"==typeof t[r]&&e(t,r,t[r])}this.hasListener=Object.keys(this.listeners).length>0}visitTick(e){let t=e[e.length-1],{node:r,visitors:n}=t;if("root"!==r.type&&"document"!==r.type&&!r.parent)return void e.pop();if(n.length>0&&t.visitorIndex<n.length){let[e,s]=n[t.visitorIndex];t.visitorIndex+=1,t.visitorIndex===n.length&&(t.visitors=[],t.visitorIndex=0),this.result.lastPlugin=e;try{return s(r.toProxy(),this.helpers)}catch(e){throw this.handleError(e,r)}}if(0!==t.iterator){let n,s=t.iterator;for(;n=r.nodes[r.indexes[s]];)if(r.indexes[s]+=1,!n[$r])return n[$r]=!0,void e.push(rn(n));t.iterator=0,delete r.indexes[s]}let s=t.events;for(;t.eventIndex<s.length;){let e=s[t.eventIndex];if(t.eventIndex+=1,0===e)return void(r.nodes&&r.nodes.length&&(r[$r]=!0,t.iterator=r.getIterator()));if(this.listeners[e])return void(t.visitors=this.listeners[e])}e.pop()}}on.registerPostcss=e=>{sn=e};var an=on;on.default=on,Zr.registerLazyResult(on),Jr.registerLazyResult(on);let ln=$t,un=ae,cn=ur,hn=Tr;const pn=dr;class fn{constructor(e,t,r){let n;t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=r,this._map=void 0;let s=un;this.result=new pn(this._processor,n,this._opts),this.result.css=t;let i=this;Object.defineProperty(this.result,"root",{get:()=>i.root});let o=new ln(s,n,this._opts,t);if(o.isMap()){let[e,t]=o.generate();e&&(this.result.css=e),t&&(this.result.map=t)}}get[Symbol.toStringTag](){return"NoWorkResult"}get processor(){return this.result.processor}get opts(){return this.result.opts}get css(){return this.result.css}get content(){return this.result.css}get map(){return this.result.map}get root(){if(this._root)return this._root;let e,t=hn;try{e=t(this._css,this._opts)}catch(e){this.error=e}return this._root=e,e}get messages(){return[]}warnings(){return[]}toString(){return this._css}then(e,t){return"production"!==process.env.NODE_ENV&&("from"in this._opts||cn("Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.")),this.async().then(e,t)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}sync(){if(this.error)throw this.error;return this.result}}var dn=fn;fn.default=fn;let gn=dn,mn=an,wn=ar,yn=Cr;class vn{constructor(e=[]){this.version="8.4.5",this.plugins=this.normalize(e)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}process(e,t={}){return 0===this.plugins.length&&void 0===t.parser&&void 0===t.stringifier&&void 0===t.syntax?new gn(this,e,t):new mn(this,e,t)}normalize(e){let t=[];for(let r of e)if(!0===r.postcss?r=r():r.postcss&&(r=r.postcss),"object"==typeof r&&Array.isArray(r.plugins))t=t.concat(r.plugins);else if("object"==typeof r&&r.postcssPlugin)t.push(r);else if("function"==typeof r)t.push(r);else{if("object"!=typeof r||!r.parse&&!r.stringify)throw new Error(r+" is not a PostCSS plugin");if("production"!==process.env.NODE_ENV)throw new Error("PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.")}return t}}var bn=vn;vn.default=vn,yn.registerProcessor(vn),wn.registerProcessor(vn);let Sn=ye,Cn=gt,_n=Wt,xn=wr,On=Lt,An=Cr,Mn=kr;function kn(e,t){if(Array.isArray(e))return e.map((e=>kn(e)));let{inputs:r,...n}=e;if(r){t=[];for(let e of r){let r={...e,__proto__:On.prototype};r.map&&(r.map={...r.map,__proto__:Cn.prototype}),t.push(r)}}if(n.nodes&&(n.nodes=e.nodes.map((e=>kn(e,t)))),n.source){let{inputId:e,...r}=n.source;n.source=r,null!=e&&(n.source.input=t[e])}if("root"===n.type)return new An(n);if("decl"===n.type)return new Sn(n);if("rule"===n.type)return new Mn(n);if("comment"===n.type)return new _n(n);if("atrule"===n.type)return new xn(n);throw new Error("Unknown node type: "+e.type)}var En=kn;kn.default=kn;let Ln=ee,Rn=ye,Pn=an,In=rr,Nn=bn,Fn=ae,jn=En,Un=ar,Dn=hr,Bn=Wt,Tn=wr,$n=dr,Gn=Lt,zn=Tr,Wn=xr,Vn=kr,Jn=Cr,qn=ge;function Yn(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),new Nn(e)}Yn.plugin=function(e,t){function r(...r){let n=t(...r);return n.postcssPlugin=e,n.postcssVersion=(new Nn).version,n}let n;return console&&console.warn&&(console.warn(e+": postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration"),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+": 里面 postcss.plugin 被弃用. 迁移指南:\nhttps://www.w3ctech.com/topic/2226")),Object.defineProperty(r,"postcss",{get:()=>(n||(n=r()),n)}),r.process=function(e,t,n){return Yn([r(n)]).process(e,t)},r},Yn.stringify=Fn,Yn.parse=zn,Yn.fromJSON=jn,Yn.list=Wn,Yn.comment=e=>new Bn(e),Yn.atRule=e=>new Tn(e),Yn.decl=e=>new Rn(e),Yn.rule=e=>new Vn(e),Yn.root=e=>new Jn(e),Yn.document=e=>new Un(e),Yn.CssSyntaxError=Ln,Yn.Declaration=Rn,Yn.Container=In,Yn.Processor=Nn,Yn.Document=Un,Yn.Comment=Bn,Yn.Warning=Dn,Yn.AtRule=Tn,Yn.Result=$n,Yn.Input=Gn,Yn.Rule=Vn,Yn.Root=Jn,Yn.Node=qn,Pn.registerPostcss(Yn);var Qn=Yn;async function Zn(){return new Promise((e=>{let t="",r=!1;if(setTimeout((()=>{r=!0,e("")}),1e4),process.stdin.isTTY){if(r)return;e(t)}else process.stdin.setEncoding("utf8"),process.stdin.on("readable",(()=>{let e;for(;e=process.stdin.read();)t+=e})),process.stdin.on("end",(()=>{r||e(t)}))}))}Yn.default=Yn,async function(e,t,n){const s=function(e,t,r){const n=e.map((e=>e.trim())).filter((e=>!!e)),s={stdin:!1,stdout:!1,output:null,outputDir:null,inputs:[],inlineMap:!0,externalMap:!1,replace:!1,pluginOptions:{},debug:!1};let i=null,o=!1;for(let e=0;e<n.length;e++){const t=n[e];switch(t){case"-o":case"--output":s.output=n[e+1],e++,o=!0;break;case"-m":case"--map":s.externalMap=!0,s.inlineMap=!1,o=!0;break;case"--no-map":s.externalMap=!1,s.inlineMap=!1,o=!0;break;case"-r":case"--replace":s.replace=!0,o=!0;break;case"--debug":s.debug=!0,o=!0;break;case"-d":case"--dir":s.outputDir=n[e+1],e++,o=!0;break;case"-p":case"--plugin-options":i=n[e+1],e++,o=!0;break;default:if(0===t.indexOf("-"))return console.warn(`[error] unknown argument : ${t}\n`),r(),f.InvalidArguments;if(!o){s.inputs.push(t);break}return r(),f.InvalidArguments}}if(s.replace&&(s.output=null,s.outputDir=null),s.outputDir&&(s.output=null),s.inputs.length>1&&s.output)return console.warn('[error] omit "--output" when processing multiple inputs\n'),r(),f.InvalidArguments;0===s.inputs.length&&(s.stdin=!0),s.output||s.outputDir||s.replace||(s.stdout=!0),s.stdout&&(s.externalMap=!1);let a={};if(i)try{a=JSON.parse(i)}catch(e){return console.warn("[error] plugin options must be valid JSON\n"),r(),f.InvalidArguments}for(const e in a){const n=a[e];if(!t.includes(e))return console.warn(`[error] unknown plugin option: ${e}\n`),r(),f.InvalidArguments;s.pluginOptions[e]=n}return s}(process.argv.slice(2),t,n);s===f.InvalidArguments&&process.exit(1);const o=e(s.pluginOptions);s.stdin&&s.stdout?await async function(e,t,r){let n="";try{const s=await Zn();s||(r(),process.exit(1)),n=(await Qn([e]).process(s,{from:"stdin",to:"stdout",map:!!t.inlineMap&&{inline:!0}})).css}catch(e){console.error(t.debug?e:e.message),process.exit(1)}process.stdout.write(n+(t.inlineMap?"\n":"")),process.exit(0)}(o,s,n):s.stdin?await async function(e,t,n){let s=t.output;!s&&t.outputDir&&(s=r.join(t.outputDir,"output.css"));try{const r=await Zn();r||(n(),process.exit(1));const o=await Qn([e]).process(r,{from:"stdin",to:s,map:!(!t.inlineMap&&!t.externalMap)&&{inline:t.inlineMap}});t.externalMap&&o.map?await Promise.all([await i.writeFile(s,o.css+(t.inlineMap?"\n":"")),await i.writeFile(`${s}.map`,o.map.toString())]):await i.writeFile(s,o.css+(t.inlineMap?"\n":""))}catch(e){console.error(t.debug?e:e.message),process.exit(1)}console.log(`CSS was written to "${r.normalize(s)}"`),process.exit(0)}(o,s,n):s.stdout?await async function(e,t){let r=[];try{r=await Promise.all(t.inputs.map((async t=>{const r=await i.readFile(t);return(await Qn([e]).process(r,{from:t,to:"stdout",map:!1})).css})))}catch(e){console.error(t.debug?e:e.message),process.exit(1)}for(const e of r)process.stdout.write(e);process.exit(0)}(o,s):await async function(e,t){try{await Promise.all(t.inputs.map((async n=>{let s=t.output;t.outputDir&&(s=r.join(t.outputDir,r.basename(n))),t.replace&&(s=n);const o=await i.readFile(n),a=await Qn([e]).process(o,{from:n,to:s,map:!(!t.inlineMap&&!t.externalMap)&&{inline:t.inlineMap}});t.externalMap&&a.map?await Promise.all([await i.writeFile(s,a.css+(t.inlineMap?"\n":"")),await i.writeFile(`${s}.map`,a.map.toString())]):await i.writeFile(s,a.css+(t.inlineMap?"\n":"")),console.log(`CSS was written to "${r.normalize(s)}"`)})))}catch(e){console.error(t.debug?e:e.message),process.exit(1)}process.exit(0)}(o,s)}(p,["preserve"],function(e,t,r,n=null){let s=[];if(n){const e=Math.max(...Object.keys(n).map((e=>e.length))),t=new Array(e).fill(" ").join("");t.length&&(s=["\nPlugin Options:",...Object.keys(n).map((e=>` ${(e+t).slice(0,t.length)} ${typeof n[e]}`))],s.push(`\n ${JSON.stringify(n,null,2).split("\n").join("\n ")}`))}const i=[`${t}\n`,` ${r}\n`,"Usage:",` ${e} [input.css] [OPTIONS] [-o|--output output.css]`,` ${e} <input.css>... [OPTIONS] --dir <output-directory>`,` ${e} <input.css>... [OPTIONS] --replace`,"\nOptions:"," -o, --output Output file"," -d, --dir Output directory"," -r, --replace Replace (overwrite) the input file"," -m, --map Create an external sourcemap"," --no-map Disable the default inline sourcemaps"," -p, --plugin-options Stringified JSON object with plugin options"];return s.length>0&&i.push(...s),()=>{console.warn(i.join("\n"))}}("postcss-color-functional-notation","PostCSS Color Functional Notation","Lets you use space and slash separated color notation in CSS, following the [CSS Color] specification.",{preserve:!0}));
@@ -0,0 +1,2 @@
1
+ import type { Node } from 'postcss';
2
+ export declare function hasSupportsAtRuleAncestor(node: Node): boolean;
package/dist/index.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=e(require("postcss-value-parser"));function n(e){const n=e.value;let i=e.nodes;"rgb"!==n&&"hsl"!==n||(i=function(e){let r=0;for(let n=0;n<e.length;n++){const t=e[n];if("div"===t.type&&","===t.value){if(r<2&&(t.value=" ",t.type="space"),2===r&&(t.value="/"),r>2)return;r++}}return e}(i));const s=i.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let f=null;if("hsl"===n||"hsla"===n?f=function(e){if(!function(e){if(!e||"word"!==e.type)return!1;if(!o(e))return!1;const n=r.default.unit(e.value);if(!n)return!1;return!!n.number&&("deg"===n.unit||"grad"===n.unit||"rad"===n.unit||"turn"===n.unit||""===n.unit)}(e[0]))return null;if(!t(e[1]))return null;if(!t(e[2]))return null;const n={h:r.default.unit(e[0].value),hNode:e[0],s:r.default.unit(e[1].value),sNode:e[1],l:r.default.unit(e[2].value),lNode:e[2]};if(function(e){switch(e.unit){case"deg":return void(e.unit="");case"rad":return e.unit="",void(e.number=Math.round(180*parseFloat(e.number)/Math.PI).toString());case"grad":return e.unit="",void(e.number=Math.round(.9*parseFloat(e.number)).toString());case"turn":e.unit="",e.number=Math.round(360*parseFloat(e.number)).toString()}}(n.h),""!==n.h.unit)return null;n.hNode.value=n.h.number,l(e[3])&&(n.slash=e[3]);(t(e[4])||u(e[4])||a(e[4]))&&(n.alpha=e[4]);return n}(s):"rgb"!==n&&"rgba"!==n||(f=function(e){if(!t(e[0]))return null;if(!t(e[1]))return null;if(!t(e[2]))return null;const n={r:r.default.unit(e[0].value),rNode:e[0],g:r.default.unit(e[1].value),gNode:e[1],b:r.default.unit(e[2].value),bNode:e[2]};"%"===n.r.unit&&(n.r.number=String(Math.floor(Number(n.r.number)/100*255)),n.rNode.value=n.r.number);"%"===n.g.unit&&(n.g.number=String(Math.floor(Number(n.g.number)/100*255)),n.gNode.value=n.g.number);"%"===n.b.unit&&(n.b.number=String(Math.floor(Number(n.b.number)/100*255)),n.bNode.value=n.b.number);l(e[3])&&(n.slash=e[3]);(t(e[4])||u(e[4])||a(e[4]))&&(n.alpha=e[4]);return n}(s)),!f)return;if(s.length>3&&(!f.slash||!f.alpha))return;!function(e,n,t){"hsl"===e.value||"hsla"===e.value?e.value="hsl":"rgb"!==e.value&&"rgba"!==e.value||(e.value="rgb");if(!n||!t)return;"hsl"===e.value?e.value="hsla":e.value="rgba";if(n.value=",",n.before="",!function(e){if(!e||"word"!==e.type)return!1;if(!o(e))return!1;const n=r.default.unit(e.value);if(!n)return!1;return!!n.number}(t))return;const u=r.default.unit(t.value);if(!u)return;"%"===u.unit&&(u.number=String(parseFloat(u.number)/100),t.value=String(u.number))}(e,f.slash,f.alpha);const[c,d]=function(e){if(function(e){if(void 0!==e.r)return!0;return!1}(e))return[e.rNode,e.gNode,e.bNode];return[e.hNode,e.sNode,e.lNode]}(f);e.nodes.splice(e.nodes.indexOf(c)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.splice(e.nodes.indexOf(d)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""})}function t(e){if(!e||"word"!==e.type)return!1;if(!o(e))return!1;const n=r.default.unit(e.value);return!!n&&("%"===n.unit||""===n.unit)}function u(e){return e&&"function"===e.type&&"calc"===e.value}function a(e){return e&&"function"===e.type&&"var"===e.value}function l(e){return e&&"div"===e.type&&"/"===e.value}function o(e){if(!e||!e.value)return!1;try{return!1!==r.default.unit(e.value)}catch(e){return!1}}const i=e=>{const t="preserve"in Object(e)&&Boolean(e.preserve);return{postcssPlugin:"postcss-color-functional-notation",Declaration:(e,{result:u,postcss:a})=>{if(t&&function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if("supports"===r.name&&-1!==r.params.indexOf("(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))"))return!0;r=r.parent}else r=r.parent;return!1}(e))return;const l=e.value;if(!/(^|[^\w-])(hsla?|rgba?)\(/i.test(l))return;let o;try{o=r.default(l)}catch(r){e.warn(u,`Failed to parse value '${l}' as a hsl or rgb function. Leaving the original value intact.`)}if(void 0===o)return;o.walk((e=>{e.type&&"function"===e.type&&("hsl"!==e.value&&"hsla"!==e.value&&"rgb"!==e.value&&"rgba"!==e.value||n(e))}));const i=String(o);if(i!==l)if(t&&e.variable){const r=e.parent,n="(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))",t=a.atRule({name:"supports",params:n,source:e.source}),u=r.clone();u.removeAll(),u.append(e.clone()),t.append(u);let l=r,o=r.next();for(;l&&o&&"atrule"===o.type&&"supports"===o.name&&o.params===n;)l=o,o=o.next();l.after(t),e.value=i}else t?e.cloneBefore({value:i}):e.value=i}}};i.postcss=!0,module.exports=i;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/on-css-function.ts","../src/index.ts","../src/has-supports-at-rule-ancestor.ts"],"sourcesContent":["import valueParser from 'postcss-value-parser';\nimport type { FunctionNode, Dimension, Node, DivNode, WordNode, SpaceNode } from 'postcss-value-parser';\n\nfunction onCSSFunction(node: FunctionNode) {\n\tconst value = node.value;\n\tlet rawNodes = node.nodes;\n\tif (value === 'rgb' || value === 'hsl') {\n\t\trawNodes = convertOldSyntaxToNewSyntaxBeforeTransform(rawNodes);\n\t}\n\n\tconst relevantNodes = rawNodes.slice().filter((x) => {\n\t\treturn x.type !== 'comment' && x.type !== 'space';\n\t});\n\n\tlet nodes: Rgb | Hsl | null = null;\n\tif (value === 'hsl' || value === 'hsla') {\n\t\tnodes = hslFunctionContents(relevantNodes);\n\t} else if (value === 'rgb' || value === 'rgba') {\n\t\tnodes = rgbFunctionContents(relevantNodes);\n\t}\n\n\tif (!nodes) {\n\t\treturn;\n\t}\n\n\tif (relevantNodes.length > 3 && (!nodes.slash || !nodes.alpha)) {\n\t\treturn;\n\t}\n\n\ttransformAlpha(node, nodes.slash, nodes.alpha);\n\n\t/** Extracted Color channels. */\n\tconst [channelNode1, channelNode2] = channelNodes(nodes);\n\n\tnode.nodes.splice(node.nodes.indexOf(channelNode1) + 1, 0, commaNode());\n\tnode.nodes.splice(node.nodes.indexOf(channelNode2) + 1, 0, commaNode());\n}\n\nexport default onCSSFunction;\n\nfunction commaNode(): DivNode {\n\treturn {\n\t\tsourceIndex: 0,\n\t\tsourceEndIndex: 1,\n\t\tvalue: ',',\n\t\ttype: 'div',\n\t\tbefore: '',\n\t\tafter: '',\n\t};\n}\n\nfunction isNumericNode(node: Node): node is WordNode {\n\tif (!node || node.type !== 'word') {\n\t\treturn false;\n\t}\n\n\tif (!canParseAsUnit(node)) {\n\t\treturn false;\n\t}\n\n\tconst unitAndValue = valueParser.unit(node.value);\n\tif (!unitAndValue) {\n\t\treturn false;\n\t}\n\n\treturn !!unitAndValue.number;\n}\n\nfunction isNumericNodeHueLike(node: Node): node is WordNode {\n\tif (!node || node.type !== 'word') {\n\t\treturn false;\n\t}\n\n\tif (!canParseAsUnit(node)) {\n\t\treturn false;\n\t}\n\n\tconst unitAndValue = valueParser.unit(node.value);\n\tif (!unitAndValue) {\n\t\treturn false;\n\t}\n\n\treturn !!unitAndValue.number && (\n\t\tunitAndValue.unit === 'deg' ||\n\t\tunitAndValue.unit === 'grad' ||\n\t\tunitAndValue.unit === 'rad' ||\n\t\tunitAndValue.unit === 'turn' ||\n\t\tunitAndValue.unit === ''\n\t);\n}\n\nfunction isNumericNodePercentageOrNumber(node: Node): node is WordNode {\n\tif (!node || node.type !== 'word') {\n\t\treturn false;\n\t}\n\n\tif (!canParseAsUnit(node)) {\n\t\treturn false;\n\t}\n\n\tconst unitAndValue = valueParser.unit(node.value);\n\tif (!unitAndValue) {\n\t\treturn false;\n\t}\n\n\treturn unitAndValue.unit === '%' || unitAndValue.unit === '';\n}\n\nfunction isCalcNode(node: Node): node is FunctionNode {\n\treturn node && node.type === 'function' && node.value === 'calc';\n}\n\nfunction isVarNode(node: Node): node is FunctionNode {\n\treturn node && node.type === 'function' && node.value === 'var';\n}\n\nfunction isSlashNode(node: Node): node is DivNode {\n\treturn node && node.type === 'div' && node.value === '/';\n}\n\ntype Hsl = {\n\th: Dimension,\n\thNode: Node,\n\ts: Dimension,\n\tsNode: Node,\n\tl: Dimension,\n\tlNode: Node,\n\tslash?: DivNode,\n\talpha?: WordNode|FunctionNode,\n}\n\nfunction hslFunctionContents(nodes): Hsl|null {\n\tif (!isNumericNodeHueLike(nodes[0])) {\n\t\treturn null;\n\t}\n\n\tif (!isNumericNodePercentageOrNumber(nodes[1])) {\n\t\treturn null;\n\t}\n\n\tif (!isNumericNodePercentageOrNumber(nodes[2])) {\n\t\treturn null;\n\t}\n\n\tconst out: Hsl = {\n\t\th: valueParser.unit(nodes[0].value) as Dimension,\n\t\thNode: nodes[0],\n\t\ts: valueParser.unit(nodes[1].value) as Dimension,\n\t\tsNode: nodes[1],\n\t\tl: valueParser.unit(nodes[2].value) as Dimension,\n\t\tlNode: nodes[2],\n\t};\n\n\tnormalizeHueNode(out.h);\n\tif (out.h.unit !== '') {\n\t\treturn null;\n\t}\n\n\tout.hNode.value = out.h.number;\n\n\tif (isSlashNode(nodes[3])) {\n\t\tout.slash = nodes[3];\n\t}\n\n\tif ((isNumericNodePercentageOrNumber(nodes[4]) || isCalcNode(nodes[4]) || isVarNode(nodes[4]))) {\n\t\tout.alpha = nodes[4];\n\t}\n\n\treturn out;\n}\n\ntype Rgb = {\n\tr: Dimension,\n\trNode: Node,\n\tg: Dimension,\n\tgNode: Node,\n\tb: Dimension,\n\tbNode: Node,\n\tslash?: DivNode,\n\talpha?: WordNode | FunctionNode,\n}\n\nfunction rgbFunctionContents(nodes): Rgb|null {\n\tif (!isNumericNodePercentageOrNumber(nodes[0])) {\n\t\treturn null;\n\t}\n\n\tif (!isNumericNodePercentageOrNumber(nodes[1])) {\n\t\treturn null;\n\t}\n\n\tif (!isNumericNodePercentageOrNumber(nodes[2])) {\n\t\treturn null;\n\t}\n\n\tconst out: Rgb = {\n\t\tr: valueParser.unit(nodes[0].value) as Dimension,\n\t\trNode: nodes[0],\n\t\tg: valueParser.unit(nodes[1].value) as Dimension,\n\t\tgNode: nodes[1],\n\t\tb: valueParser.unit(nodes[2].value) as Dimension,\n\t\tbNode: nodes[2],\n\t};\n\n\tif (out.r.unit === '%') {\n\t\tout.r.number = String(Math.floor(Number(out.r.number) / 100 * 255));\n\t\tout.rNode.value = out.r.number;\n\t}\n\n\tif (out.g.unit === '%') {\n\t\tout.g.number = String(Math.floor(Number(out.g.number) / 100 * 255));\n\t\tout.gNode.value = out.g.number;\n\t}\n\n\tif (out.b.unit === '%') {\n\t\tout.b.number = String(Math.floor(Number(out.b.number) / 100 * 255));\n\t\tout.bNode.value = out.b.number;\n\t}\n\n\tif (isSlashNode(nodes[3])) {\n\t\tout.slash = nodes[3];\n\t}\n\n\tif ((isNumericNodePercentageOrNumber(nodes[4]) || isCalcNode(nodes[4]) || isVarNode(nodes[4]))) {\n\t\tout.alpha = nodes[4];\n\t}\n\n\treturn out;\n}\n\nfunction isRgb(x: Hsl | Rgb): x is Rgb {\n\tif (typeof (x as Rgb).r !== 'undefined') {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction channelNodes(x: Hsl | Rgb): [Node, Node, Node] {\n\tif (isRgb(x)) {\n\t\treturn [x.rNode, x.gNode, x.bNode];\n\t}\n\n\treturn [x.hNode, x.sNode, x.lNode];\n}\n\nfunction transformAlpha(node: FunctionNode, slashNode: DivNode | undefined, alphaNode: WordNode | FunctionNode | undefined) {\n\tif (node.value === 'hsl' || node.value === 'hsla') {\n\t\tnode.value = 'hsl';\n\t} else if (node.value === 'rgb' || node.value === 'rgba') {\n\t\tnode.value = 'rgb';\n\t}\n\n\tif (!slashNode || !alphaNode) {\n\t\treturn;\n\t}\n\n\tif (node.value === 'hsl') {\n\t\tnode.value = 'hsla';\n\t} else {\n\t\tnode.value = 'rgba';\n\t}\n\n\tslashNode.value = ',';\n\tslashNode.before = '';\n\n\tif (!isNumericNode(alphaNode)) {\n\t\treturn;\n\t}\n\n\tconst unitAndValue = valueParser.unit(alphaNode.value);\n\tif (!unitAndValue) {\n\t\treturn;\n\t}\n\n\tif (unitAndValue.unit === '%') {\n\t\t// transform the Alpha channel from a Percentage to (0-1) Number\n\t\tunitAndValue.number = String(parseFloat(unitAndValue.number) / 100);\n\t\talphaNode.value = String(unitAndValue.number);\n\t}\n}\n\nfunction normalizeHueNode(dimension: Dimension) {\n\tswitch (dimension.unit) {\n\t\tcase 'deg':\n\t\t\tdimension.unit = '';\n\t\t\treturn;\n\t\tcase 'rad':\n\t\t\t// radians -> degrees\n\t\t\tdimension.unit = '';\n\t\t\tdimension.number = Math.round(parseFloat(dimension.number) * 180 / Math.PI).toString();\n\t\t\treturn;\n\n\t\tcase 'grad':\n\t\t\t// grades -> degrees\n\t\t\tdimension.unit = '';\n\t\t\tdimension.number = Math.round(parseFloat(dimension.number) * 0.9).toString();\n\t\t\treturn;\n\n\t\tcase 'turn':\n\t\t\t// turns -> degrees\n\t\t\tdimension.unit = '';\n\t\t\tdimension.number = Math.round(parseFloat(dimension.number) * 360).toString();\n\t\t\treturn;\n\t}\n}\n\nfunction canParseAsUnit(node : Node): boolean {\n\tif (!node || !node.value) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\treturn valueParser.unit(node.value) !== false;\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\nfunction convertOldSyntaxToNewSyntaxBeforeTransform(nodes: Array<Node>): Array<Node> {\n\t// https://www.w3.org/TR/css-color-4/#rgb-functions\n\t// For legacy reasons, rgb() also supports an alternate syntax that separates all of its arguments with commas:\n\t// This also allows alpha values in comma separated `rgb` / `hsl` functions.\n\t//\n\t// This function replaces the first two comma's with spaces and the third with a slash.\n\t// Subsequent comma's are ignored as they are invalid in this syntax.\n\n\tlet commaCounter = 0;\n\tfor (let i = 0; i < nodes.length; i++) {\n\t\tconst node = nodes[i];\n\t\tif (node.type === 'div' && node.value === ',') {\n\t\t\tif (commaCounter < 2) {\n\t\t\t\tnode.value = ' ';\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\t((node as any) as SpaceNode).type = 'space';\n\t\t\t}\n\n\t\t\tif (commaCounter === 2) {\n\t\t\t\tnode.value = '/';\n\t\t\t}\n\n\t\t\tif (commaCounter > 2) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcommaCounter++;\n\t\t}\n\t}\n\n\treturn nodes;\n}\n","import valueParser from 'postcss-value-parser';\nimport type { ParsedValue, FunctionNode } from 'postcss-value-parser';\nimport type { Declaration, Postcss, Result } from 'postcss';\nimport onCSSFunction from './on-css-function';\n\nimport type { PluginCreator } from 'postcss';\nimport { hasSupportsAtRuleAncestor } from './has-supports-at-rule-ancestor';\n\n/** Transform lab() and lch() functions in CSS. */\nconst postcssPlugin: PluginCreator<{ preserve: boolean }> = (opts?: { preserve: boolean }) => {\n\tconst preserve = 'preserve' in Object(opts) ? Boolean(opts.preserve) : false;\n\n\treturn {\n\t\tpostcssPlugin: 'postcss-color-functional-notation',\n\t\tDeclaration: (decl: Declaration, { result, postcss }: { result: Result, postcss: Postcss }) => {\n\t\t\tif (preserve && hasSupportsAtRuleAncestor(decl)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst originalValue = decl.value;\n\t\t\tif (!(/(^|[^\\w-])(hsla?|rgba?)\\(/i.test(originalValue))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet valueAST: ParsedValue|undefined;\n\n\t\t\ttry {\n\t\t\t\tvalueAST = valueParser(originalValue);\n\t\t\t} catch (error) {\n\t\t\t\tdecl.warn(\n\t\t\t\t\tresult,\n\t\t\t\t\t`Failed to parse value '${originalValue}' as a hsl or rgb function. Leaving the original value intact.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof valueAST === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvalueAST.walk((node) => {\n\t\t\t\tif (!node.type || node.type !== 'function') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnode.value !== 'hsl' &&\n\t\t\t\t\tnode.value !== 'hsla' &&\n\t\t\t\t\tnode.value !== 'rgb' &&\n\t\t\t\t\tnode.value !== 'rgba'\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonCSSFunction(node as FunctionNode);\n\t\t\t});\n\t\t\tconst modifiedValue = String(valueAST);\n\n\t\t\tif (modifiedValue === originalValue) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (preserve && decl.variable) {\n\t\t\t\tconst parent = decl.parent;\n\t\t\t\tconst atSupportsParams = '(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))';\n\t\t\t\tconst atSupports = postcss.atRule({ name: 'supports', params: atSupportsParams, source: decl.source });\n\n\t\t\t\tconst parentClone = parent.clone();\n\t\t\t\tparentClone.removeAll();\n\n\t\t\t\tparentClone.append(decl.clone());\n\t\t\t\tatSupports.append(parentClone);\n\n\t\t\t\t// Ensure correct order of @supports rules\n\t\t\t\t// Find the last one created by us or the current parent and insert after.\n\t\t\t\tlet insertAfter = parent;\n\t\t\t\tlet nextInsertAfter = parent.next();\n\t\t\t\twhile (\n\t\t\t\t\tinsertAfter &&\n\t\t\t\t\tnextInsertAfter &&\n\t\t\t\t\tnextInsertAfter.type === 'atrule' &&\n\t\t\t\t\tnextInsertAfter.name === 'supports' &&\n\t\t\t\t\tnextInsertAfter.params === atSupportsParams\n\t\t\t\t) {\n\t\t\t\t\tinsertAfter = nextInsertAfter;\n\t\t\t\t\tnextInsertAfter = nextInsertAfter.next();\n\t\t\t\t}\n\n\t\t\t\tinsertAfter.after(atSupports);\n\n\t\t\t\tdecl.value = modifiedValue;\n\t\t\t} else if (preserve) {\n\t\t\t\tdecl.cloneBefore({ value: modifiedValue });\n\t\t\t} else {\n\t\t\t\tdecl.value = modifiedValue;\n\t\t\t}\n\t\t},\n\t};\n};\n\npostcssPlugin.postcss = true;\n\nexport default postcssPlugin;\n","import type { Node, AtRule } from 'postcss';\n\nexport function hasSupportsAtRuleAncestor(node: Node): boolean {\n\tlet parent = node.parent;\n\twhile (parent) {\n\t\tif (parent.type !== 'atrule') {\n\t\t\tparent = parent.parent;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ((parent as AtRule).name === 'supports' && (parent as AtRule).params.indexOf('(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))') !== -1) {\n\t\t\treturn true;\n\t\t}\n\n\t\tparent = parent.parent;\n\t}\n\n\treturn false;\n}\n"],"names":["onCSSFunction","node","value","rawNodes","nodes","commaCounter","i","length","type","convertOldSyntaxToNewSyntaxBeforeTransform","relevantNodes","slice","filter","x","canParseAsUnit","unitAndValue","valueParser","unit","number","isNumericNodeHueLike","isNumericNodePercentageOrNumber","out","h","hNode","s","sNode","l","lNode","dimension","Math","round","parseFloat","PI","toString","normalizeHueNode","isSlashNode","slash","isCalcNode","isVarNode","alpha","hslFunctionContents","r","rNode","g","gNode","b","bNode","String","floor","Number","rgbFunctionContents","slashNode","alphaNode","before","isNumericNode","transformAlpha","channelNode1","channelNode2","isRgb","channelNodes","splice","indexOf","sourceIndex","sourceEndIndex","after","e","postcssPlugin","opts","preserve","Object","Boolean","Declaration","decl","result","postcss","parent","name","params","hasSupportsAtRuleAncestor","originalValue","test","valueAST","error","warn","walk","modifiedValue","variable","atSupportsParams","atSupports","atRule","source","parentClone","clone","removeAll","append","insertAfter","nextInsertAfter","next","cloneBefore"],"mappings":"8HAGA,SAASA,EAAcC,GACtB,MAAMC,EAAQD,EAAKC,MACnB,IAAIC,EAAWF,EAAKG,MACN,QAAVF,GAA6B,QAAVA,IACtBC,EAwTF,SAAoDC,GAQnD,IAAIC,EAAe,EACnB,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAMG,OAAQD,IAAK,CACtC,MAAML,EAAOG,EAAME,GACnB,GAAkB,QAAdL,EAAKO,MAAiC,MAAfP,EAAKC,MAAe,CAW9C,GAVIG,EAAe,IAClBJ,EAAKC,MAAQ,IAEXD,EAA2BO,KAAO,SAGhB,IAAjBH,IACHJ,EAAKC,MAAQ,KAGVG,EAAe,EAClB,OAGDA,KAIF,OAAOD,EAtVKK,CAA2CN,IAGvD,MAAMO,EAAgBP,EAASQ,QAAQC,QAAQC,GAC5B,YAAXA,EAAEL,MAAiC,UAAXK,EAAEL,OAGlC,IAAIJ,EAA0B,KAO9B,GANc,QAAVF,GAA6B,SAAVA,EACtBE,EAmHF,SAA6BA,GAC5B,IAhED,SAA8BH,GAC7B,IAAKA,GAAsB,SAAdA,EAAKO,KACjB,OAAO,EAGR,IAAKM,EAAeb,GACnB,OAAO,EAGR,MAAMc,EAAeC,UAAYC,KAAKhB,EAAKC,OAC3C,IAAKa,EACJ,OAAO,EAGR,QAASA,EAAaG,SACC,QAAtBH,EAAaE,MACS,SAAtBF,EAAaE,MACS,QAAtBF,EAAaE,MACS,SAAtBF,EAAaE,MACS,KAAtBF,EAAaE,MA6CTE,CAAqBf,EAAM,IAC/B,OAAO,KAGR,IAAKgB,EAAgChB,EAAM,IAC1C,OAAO,KAGR,IAAKgB,EAAgChB,EAAM,IAC1C,OAAO,KAGR,MAAMiB,EAAW,CAChBC,EAAGN,UAAYC,KAAKb,EAAM,GAAGF,OAC7BqB,MAAOnB,EAAM,GACboB,EAAGR,UAAYC,KAAKb,EAAM,GAAGF,OAC7BuB,MAAOrB,EAAM,GACbsB,EAAGV,UAAYC,KAAKb,EAAM,GAAGF,OAC7ByB,MAAOvB,EAAM,IAId,GAgID,SAA0BwB,GACzB,OAAQA,EAAUX,MACjB,IAAK,MAEJ,YADAW,EAAUX,KAAO,IAElB,IAAK,MAIJ,OAFAW,EAAUX,KAAO,QACjBW,EAAUV,OAASW,KAAKC,MAAqC,IAA/BC,WAAWH,EAAUV,QAAgBW,KAAKG,IAAIC,YAG7E,IAAK,OAIJ,OAFAL,EAAUX,KAAO,QACjBW,EAAUV,OAASW,KAAKC,MAAqC,GAA/BC,WAAWH,EAAUV,SAAee,YAGnE,IAAK,OAEJL,EAAUX,KAAO,GACjBW,EAAUV,OAASW,KAAKC,MAAqC,IAA/BC,WAAWH,EAAUV,SAAee,YArJpEC,CAAiBb,EAAIC,GACF,KAAfD,EAAIC,EAAEL,KACT,OAAO,KAGRI,EAAIE,MAAMrB,MAAQmB,EAAIC,EAAEJ,OAEpBiB,EAAY/B,EAAM,MACrBiB,EAAIe,MAAQhC,EAAM,KAGdgB,EAAgChB,EAAM,KAAOiC,EAAWjC,EAAM,KAAOkC,EAAUlC,EAAM,OACzFiB,EAAIkB,MAAQnC,EAAM,IAGnB,OAAOiB,EAxJEmB,CAAoB9B,GACR,QAAVR,GAA6B,SAAVA,IAC7BE,EAoKF,SAA6BA,GAC5B,IAAKgB,EAAgChB,EAAM,IAC1C,OAAO,KAGR,IAAKgB,EAAgChB,EAAM,IAC1C,OAAO,KAGR,IAAKgB,EAAgChB,EAAM,IAC1C,OAAO,KAGR,MAAMiB,EAAW,CAChBoB,EAAGzB,UAAYC,KAAKb,EAAM,GAAGF,OAC7BwC,MAAOtC,EAAM,GACbuC,EAAG3B,UAAYC,KAAKb,EAAM,GAAGF,OAC7B0C,MAAOxC,EAAM,GACbyC,EAAG7B,UAAYC,KAAKb,EAAM,GAAGF,OAC7B4C,MAAO1C,EAAM,IAGK,MAAfiB,EAAIoB,EAAExB,OACTI,EAAIoB,EAAEvB,OAAS6B,OAAOlB,KAAKmB,MAAMC,OAAO5B,EAAIoB,EAAEvB,QAAU,IAAM,MAC9DG,EAAIqB,MAAMxC,MAAQmB,EAAIoB,EAAEvB,QAGN,MAAfG,EAAIsB,EAAE1B,OACTI,EAAIsB,EAAEzB,OAAS6B,OAAOlB,KAAKmB,MAAMC,OAAO5B,EAAIsB,EAAEzB,QAAU,IAAM,MAC9DG,EAAIuB,MAAM1C,MAAQmB,EAAIsB,EAAEzB,QAGN,MAAfG,EAAIwB,EAAE5B,OACTI,EAAIwB,EAAE3B,OAAS6B,OAAOlB,KAAKmB,MAAMC,OAAO5B,EAAIwB,EAAE3B,QAAU,IAAM,MAC9DG,EAAIyB,MAAM5C,MAAQmB,EAAIwB,EAAE3B,QAGrBiB,EAAY/B,EAAM,MACrBiB,EAAIe,MAAQhC,EAAM,KAGdgB,EAAgChB,EAAM,KAAOiC,EAAWjC,EAAM,KAAOkC,EAAUlC,EAAM,OACzFiB,EAAIkB,MAAQnC,EAAM,IAGnB,OAAOiB,EAjNE6B,CAAoBxC,KAGxBN,EACJ,OAGD,GAAIM,EAAcH,OAAS,KAAOH,EAAMgC,QAAUhC,EAAMmC,OACvD,QA4NF,SAAwBtC,EAAoBkD,EAAgCC,GACxD,QAAfnD,EAAKC,OAAkC,SAAfD,EAAKC,MAChCD,EAAKC,MAAQ,MACY,QAAfD,EAAKC,OAAkC,SAAfD,EAAKC,QACvCD,EAAKC,MAAQ,OAGd,IAAKiD,IAAcC,EAClB,OAGkB,QAAfnD,EAAKC,MACRD,EAAKC,MAAQ,OAEbD,EAAKC,MAAQ,OAMd,GAHAiD,EAAUjD,MAAQ,IAClBiD,EAAUE,OAAS,IArNpB,SAAuBpD,GACtB,IAAKA,GAAsB,SAAdA,EAAKO,KACjB,OAAO,EAGR,IAAKM,EAAeb,GACnB,OAAO,EAGR,MAAMc,EAAeC,UAAYC,KAAKhB,EAAKC,OAC3C,IAAKa,EACJ,OAAO,EAGR,QAASA,EAAaG,OAyMjBoC,CAAcF,GAClB,OAGD,MAAMrC,EAAeC,UAAYC,KAAKmC,EAAUlD,OAChD,IAAKa,EACJ,OAGyB,MAAtBA,EAAaE,OAEhBF,EAAaG,OAAS6B,OAAOhB,WAAWhB,EAAaG,QAAU,KAC/DkC,EAAUlD,MAAQ6C,OAAOhC,EAAaG,SAzPvCqC,CAAetD,EAAMG,EAAMgC,MAAOhC,EAAMmC,OAGxC,MAAOiB,EAAcC,GA8MtB,SAAsB5C,GACrB,GATD,SAAeA,GACd,QAA4B,IAAhBA,EAAU4B,EACrB,OAAO,EAGR,OAAO,EAIHiB,CAAM7C,GACT,MAAO,CAACA,EAAE6B,MAAO7B,EAAE+B,MAAO/B,EAAEiC,OAG7B,MAAO,CAACjC,EAAEU,MAAOV,EAAEY,MAAOZ,EAAEc,OAnNSgC,CAAavD,GAElDH,EAAKG,MAAMwD,OAAO3D,EAAKG,MAAMyD,QAAQL,GAAgB,EAAG,EAOjD,CACNM,YAAa,EACbC,eAAgB,EAChB7D,MAAO,IACPM,KAAM,MACN6C,OAAQ,GACRW,MAAO,KAZR/D,EAAKG,MAAMwD,OAAO3D,EAAKG,MAAMyD,QAAQJ,GAAgB,EAAG,EAMjD,CACNK,YAAa,EACbC,eAAgB,EAChB7D,MAAO,IACPM,KAAM,MACN6C,OAAQ,GACRW,MAAO,KA4CT,SAAS5C,EAAgCnB,GACxC,IAAKA,GAAsB,SAAdA,EAAKO,KACjB,OAAO,EAGR,IAAKM,EAAeb,GACnB,OAAO,EAGR,MAAMc,EAAeC,UAAYC,KAAKhB,EAAKC,OAC3C,QAAKa,IAIwB,MAAtBA,EAAaE,MAAsC,KAAtBF,EAAaE,MAGlD,SAASoB,EAAWpC,GACnB,OAAOA,GAAsB,aAAdA,EAAKO,MAAsC,SAAfP,EAAKC,MAGjD,SAASoC,EAAUrC,GAClB,OAAOA,GAAsB,aAAdA,EAAKO,MAAsC,QAAfP,EAAKC,MAGjD,SAASiC,EAAYlC,GACpB,OAAOA,GAAsB,QAAdA,EAAKO,MAAiC,MAAfP,EAAKC,MA8L5C,SAASY,EAAeb,GACvB,IAAKA,IAASA,EAAKC,MAClB,OAAO,EAGR,IACC,OAAwC,IAAjCc,UAAYC,KAAKhB,EAAKC,OAC5B,MAAO+D,GACR,OAAO,SClTHC,EAAuDC,IAC5D,MAAMC,EAAW,aAAcC,OAAOF,IAAQG,QAAQH,EAAKC,UAE3D,MAAO,CACNF,cAAe,oCACfK,YAAa,CAACC,GAAqBC,OAAAA,EAAQC,QAAAA,MAC1C,GAAIN,YCbmCnE,GACzC,IAAI0E,EAAS1E,EAAK0E,OAClB,KAAOA,GACN,GAAoB,WAAhBA,EAAOnE,KAAX,CAKA,GAAgC,aAA3BmE,EAAkBC,OAA2H,IAAnGD,EAAkBE,OAAOhB,QAAQ,6DAC/E,OAAO,EAGRc,EAASA,EAAOA,YARfA,EAASA,EAAOA,OAWlB,OAAO,EDFWG,CAA0BN,GACzC,OAGD,MAAMO,EAAgBP,EAAKtE,MAC3B,IAAM,6BAA6B8E,KAAKD,GACvC,OAGD,IAAIE,EAEJ,IACCA,EAAWjE,UAAY+D,GACtB,MAAOG,GACRV,EAAKW,KACJV,EACA,0BAA0BM,mEAI5B,QAAwB,IAAbE,EACV,OAGDA,EAASG,MAAMnF,IACTA,EAAKO,MAAsB,aAAdP,EAAKO,OAKP,QAAfP,EAAKC,OACU,SAAfD,EAAKC,OACU,QAAfD,EAAKC,OACU,SAAfD,EAAKC,OAKNF,EAAcC,OAEf,MAAMoF,EAAgBtC,OAAOkC,GAE7B,GAAII,IAAkBN,EAItB,GAAIX,GAAYI,EAAKc,SAAU,CAC9B,MAAMX,EAASH,EAAKG,OACdY,EAAmB,4DACnBC,EAAad,EAAQe,OAAO,CAAEb,KAAM,WAAYC,OAAQU,EAAkBG,OAAQlB,EAAKkB,SAEvFC,EAAchB,EAAOiB,QAC3BD,EAAYE,YAEZF,EAAYG,OAAOtB,EAAKoB,SACxBJ,EAAWM,OAAOH,GAIlB,IAAII,EAAcpB,EACdqB,EAAkBrB,EAAOsB,OAC7B,KACCF,GACAC,GACyB,WAAzBA,EAAgBxF,MACS,aAAzBwF,EAAgBpB,MAChBoB,EAAgBnB,SAAWU,GAE3BQ,EAAcC,EACdA,EAAkBA,EAAgBC,OAGnCF,EAAY/B,MAAMwB,GAElBhB,EAAKtE,MAAQmF,OACHjB,EACVI,EAAK0B,YAAY,CAAEhG,MAAOmF,IAE1Bb,EAAKtE,MAAQmF,KAMjBnB,EAAcQ,SAAU"}
@@ -0,0 +1,6 @@
1
+ import type { PluginCreator } from 'postcss';
2
+ /** Transform lab() and lch() functions in CSS. */
3
+ declare const postcssPlugin: PluginCreator<{
4
+ preserve: boolean;
5
+ }>;
6
+ export default postcssPlugin;
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import e from"postcss-value-parser";function r(r){const o=r.value;let i=r.nodes;"rgb"!==o&&"hsl"!==o||(i=function(e){let r=0;for(let n=0;n<e.length;n++){const t=e[n];if("div"===t.type&&","===t.value){if(r<2&&(t.value=" ",t.type="space"),2===r&&(t.value="/"),r>2)return;r++}}return e}(i));const s=i.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let c=null;if("hsl"===o||"hsla"===o?c=function(r){if(!function(r){if(!r||"word"!==r.type)return!1;if(!l(r))return!1;const n=e.unit(r.value);if(!n)return!1;return!!n.number&&("deg"===n.unit||"grad"===n.unit||"rad"===n.unit||"turn"===n.unit||""===n.unit)}(r[0]))return null;if(!n(r[1]))return null;if(!n(r[2]))return null;const o={h:e.unit(r[0].value),hNode:r[0],s:e.unit(r[1].value),sNode:r[1],l:e.unit(r[2].value),lNode:r[2]};if(function(e){switch(e.unit){case"deg":return void(e.unit="");case"rad":return e.unit="",void(e.number=Math.round(180*parseFloat(e.number)/Math.PI).toString());case"grad":return e.unit="",void(e.number=Math.round(.9*parseFloat(e.number)).toString());case"turn":e.unit="",e.number=Math.round(360*parseFloat(e.number)).toString()}}(o.h),""!==o.h.unit)return null;o.hNode.value=o.h.number,a(r[3])&&(o.slash=r[3]);(n(r[4])||t(r[4])||u(r[4]))&&(o.alpha=r[4]);return o}(s):"rgb"!==o&&"rgba"!==o||(c=function(r){if(!n(r[0]))return null;if(!n(r[1]))return null;if(!n(r[2]))return null;const l={r:e.unit(r[0].value),rNode:r[0],g:e.unit(r[1].value),gNode:r[1],b:e.unit(r[2].value),bNode:r[2]};"%"===l.r.unit&&(l.r.number=String(Math.floor(Number(l.r.number)/100*255)),l.rNode.value=l.r.number);"%"===l.g.unit&&(l.g.number=String(Math.floor(Number(l.g.number)/100*255)),l.gNode.value=l.g.number);"%"===l.b.unit&&(l.b.number=String(Math.floor(Number(l.b.number)/100*255)),l.bNode.value=l.b.number);a(r[3])&&(l.slash=r[3]);(n(r[4])||t(r[4])||u(r[4]))&&(l.alpha=r[4]);return l}(s)),!c)return;if(s.length>3&&(!c.slash||!c.alpha))return;!function(r,n,t){"hsl"===r.value||"hsla"===r.value?r.value="hsl":"rgb"!==r.value&&"rgba"!==r.value||(r.value="rgb");if(!n||!t)return;"hsl"===r.value?r.value="hsla":r.value="rgba";if(n.value=",",n.before="",!function(r){if(!r||"word"!==r.type)return!1;if(!l(r))return!1;const n=e.unit(r.value);if(!n)return!1;return!!n.number}(t))return;const u=e.unit(t.value);if(!u)return;"%"===u.unit&&(u.number=String(parseFloat(u.number)/100),t.value=String(u.number))}(r,c.slash,c.alpha);const[f,v]=function(e){if(function(e){if(void 0!==e.r)return!0;return!1}(e))return[e.rNode,e.gNode,e.bNode];return[e.hNode,e.sNode,e.lNode]}(c);r.nodes.splice(r.nodes.indexOf(f)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),r.nodes.splice(r.nodes.indexOf(v)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""})}function n(r){if(!r||"word"!==r.type)return!1;if(!l(r))return!1;const n=e.unit(r.value);return!!n&&("%"===n.unit||""===n.unit)}function t(e){return e&&"function"===e.type&&"calc"===e.value}function u(e){return e&&"function"===e.type&&"var"===e.value}function a(e){return e&&"div"===e.type&&"/"===e.value}function l(r){if(!r||!r.value)return!1;try{return!1!==e.unit(r.value)}catch(e){return!1}}const o=n=>{const t="preserve"in Object(n)&&Boolean(n.preserve);return{postcssPlugin:"postcss-color-functional-notation",Declaration:(n,{result:u,postcss:a})=>{if(t&&function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if("supports"===r.name&&-1!==r.params.indexOf("(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))"))return!0;r=r.parent}else r=r.parent;return!1}(n))return;const l=n.value;if(!/(^|[^\w-])(hsla?|rgba?)\(/i.test(l))return;let o;try{o=e(l)}catch(e){n.warn(u,`Failed to parse value '${l}' as a hsl or rgb function. Leaving the original value intact.`)}if(void 0===o)return;o.walk((e=>{e.type&&"function"===e.type&&("hsl"!==e.value&&"hsla"!==e.value&&"rgb"!==e.value&&"rgba"!==e.value||r(e))}));const i=String(o);if(i!==l)if(t&&n.variable){const e=n.parent,r="(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))",t=a.atRule({name:"supports",params:r,source:n.source}),u=e.clone();u.removeAll(),u.append(n.clone()),t.append(u);let l=e,o=e.next();for(;l&&o&&"atrule"===o.type&&"supports"===o.name&&o.params===r;)l=o,o=o.next();l.after(t),n.value=i}else t?n.cloneBefore({value:i}):n.value=i}}};o.postcss=!0;export{o as default};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/on-css-function.ts","../src/index.ts","../src/has-supports-at-rule-ancestor.ts"],"sourcesContent":["import valueParser from 'postcss-value-parser';\nimport type { FunctionNode, Dimension, Node, DivNode, WordNode, SpaceNode } from 'postcss-value-parser';\n\nfunction onCSSFunction(node: FunctionNode) {\n\tconst value = node.value;\n\tlet rawNodes = node.nodes;\n\tif (value === 'rgb' || value === 'hsl') {\n\t\trawNodes = convertOldSyntaxToNewSyntaxBeforeTransform(rawNodes);\n\t}\n\n\tconst relevantNodes = rawNodes.slice().filter((x) => {\n\t\treturn x.type !== 'comment' && x.type !== 'space';\n\t});\n\n\tlet nodes: Rgb | Hsl | null = null;\n\tif (value === 'hsl' || value === 'hsla') {\n\t\tnodes = hslFunctionContents(relevantNodes);\n\t} else if (value === 'rgb' || value === 'rgba') {\n\t\tnodes = rgbFunctionContents(relevantNodes);\n\t}\n\n\tif (!nodes) {\n\t\treturn;\n\t}\n\n\tif (relevantNodes.length > 3 && (!nodes.slash || !nodes.alpha)) {\n\t\treturn;\n\t}\n\n\ttransformAlpha(node, nodes.slash, nodes.alpha);\n\n\t/** Extracted Color channels. */\n\tconst [channelNode1, channelNode2] = channelNodes(nodes);\n\n\tnode.nodes.splice(node.nodes.indexOf(channelNode1) + 1, 0, commaNode());\n\tnode.nodes.splice(node.nodes.indexOf(channelNode2) + 1, 0, commaNode());\n}\n\nexport default onCSSFunction;\n\nfunction commaNode(): DivNode {\n\treturn {\n\t\tsourceIndex: 0,\n\t\tsourceEndIndex: 1,\n\t\tvalue: ',',\n\t\ttype: 'div',\n\t\tbefore: '',\n\t\tafter: '',\n\t};\n}\n\nfunction isNumericNode(node: Node): node is WordNode {\n\tif (!node || node.type !== 'word') {\n\t\treturn false;\n\t}\n\n\tif (!canParseAsUnit(node)) {\n\t\treturn false;\n\t}\n\n\tconst unitAndValue = valueParser.unit(node.value);\n\tif (!unitAndValue) {\n\t\treturn false;\n\t}\n\n\treturn !!unitAndValue.number;\n}\n\nfunction isNumericNodeHueLike(node: Node): node is WordNode {\n\tif (!node || node.type !== 'word') {\n\t\treturn false;\n\t}\n\n\tif (!canParseAsUnit(node)) {\n\t\treturn false;\n\t}\n\n\tconst unitAndValue = valueParser.unit(node.value);\n\tif (!unitAndValue) {\n\t\treturn false;\n\t}\n\n\treturn !!unitAndValue.number && (\n\t\tunitAndValue.unit === 'deg' ||\n\t\tunitAndValue.unit === 'grad' ||\n\t\tunitAndValue.unit === 'rad' ||\n\t\tunitAndValue.unit === 'turn' ||\n\t\tunitAndValue.unit === ''\n\t);\n}\n\nfunction isNumericNodePercentageOrNumber(node: Node): node is WordNode {\n\tif (!node || node.type !== 'word') {\n\t\treturn false;\n\t}\n\n\tif (!canParseAsUnit(node)) {\n\t\treturn false;\n\t}\n\n\tconst unitAndValue = valueParser.unit(node.value);\n\tif (!unitAndValue) {\n\t\treturn false;\n\t}\n\n\treturn unitAndValue.unit === '%' || unitAndValue.unit === '';\n}\n\nfunction isCalcNode(node: Node): node is FunctionNode {\n\treturn node && node.type === 'function' && node.value === 'calc';\n}\n\nfunction isVarNode(node: Node): node is FunctionNode {\n\treturn node && node.type === 'function' && node.value === 'var';\n}\n\nfunction isSlashNode(node: Node): node is DivNode {\n\treturn node && node.type === 'div' && node.value === '/';\n}\n\ntype Hsl = {\n\th: Dimension,\n\thNode: Node,\n\ts: Dimension,\n\tsNode: Node,\n\tl: Dimension,\n\tlNode: Node,\n\tslash?: DivNode,\n\talpha?: WordNode|FunctionNode,\n}\n\nfunction hslFunctionContents(nodes): Hsl|null {\n\tif (!isNumericNodeHueLike(nodes[0])) {\n\t\treturn null;\n\t}\n\n\tif (!isNumericNodePercentageOrNumber(nodes[1])) {\n\t\treturn null;\n\t}\n\n\tif (!isNumericNodePercentageOrNumber(nodes[2])) {\n\t\treturn null;\n\t}\n\n\tconst out: Hsl = {\n\t\th: valueParser.unit(nodes[0].value) as Dimension,\n\t\thNode: nodes[0],\n\t\ts: valueParser.unit(nodes[1].value) as Dimension,\n\t\tsNode: nodes[1],\n\t\tl: valueParser.unit(nodes[2].value) as Dimension,\n\t\tlNode: nodes[2],\n\t};\n\n\tnormalizeHueNode(out.h);\n\tif (out.h.unit !== '') {\n\t\treturn null;\n\t}\n\n\tout.hNode.value = out.h.number;\n\n\tif (isSlashNode(nodes[3])) {\n\t\tout.slash = nodes[3];\n\t}\n\n\tif ((isNumericNodePercentageOrNumber(nodes[4]) || isCalcNode(nodes[4]) || isVarNode(nodes[4]))) {\n\t\tout.alpha = nodes[4];\n\t}\n\n\treturn out;\n}\n\ntype Rgb = {\n\tr: Dimension,\n\trNode: Node,\n\tg: Dimension,\n\tgNode: Node,\n\tb: Dimension,\n\tbNode: Node,\n\tslash?: DivNode,\n\talpha?: WordNode | FunctionNode,\n}\n\nfunction rgbFunctionContents(nodes): Rgb|null {\n\tif (!isNumericNodePercentageOrNumber(nodes[0])) {\n\t\treturn null;\n\t}\n\n\tif (!isNumericNodePercentageOrNumber(nodes[1])) {\n\t\treturn null;\n\t}\n\n\tif (!isNumericNodePercentageOrNumber(nodes[2])) {\n\t\treturn null;\n\t}\n\n\tconst out: Rgb = {\n\t\tr: valueParser.unit(nodes[0].value) as Dimension,\n\t\trNode: nodes[0],\n\t\tg: valueParser.unit(nodes[1].value) as Dimension,\n\t\tgNode: nodes[1],\n\t\tb: valueParser.unit(nodes[2].value) as Dimension,\n\t\tbNode: nodes[2],\n\t};\n\n\tif (out.r.unit === '%') {\n\t\tout.r.number = String(Math.floor(Number(out.r.number) / 100 * 255));\n\t\tout.rNode.value = out.r.number;\n\t}\n\n\tif (out.g.unit === '%') {\n\t\tout.g.number = String(Math.floor(Number(out.g.number) / 100 * 255));\n\t\tout.gNode.value = out.g.number;\n\t}\n\n\tif (out.b.unit === '%') {\n\t\tout.b.number = String(Math.floor(Number(out.b.number) / 100 * 255));\n\t\tout.bNode.value = out.b.number;\n\t}\n\n\tif (isSlashNode(nodes[3])) {\n\t\tout.slash = nodes[3];\n\t}\n\n\tif ((isNumericNodePercentageOrNumber(nodes[4]) || isCalcNode(nodes[4]) || isVarNode(nodes[4]))) {\n\t\tout.alpha = nodes[4];\n\t}\n\n\treturn out;\n}\n\nfunction isRgb(x: Hsl | Rgb): x is Rgb {\n\tif (typeof (x as Rgb).r !== 'undefined') {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction channelNodes(x: Hsl | Rgb): [Node, Node, Node] {\n\tif (isRgb(x)) {\n\t\treturn [x.rNode, x.gNode, x.bNode];\n\t}\n\n\treturn [x.hNode, x.sNode, x.lNode];\n}\n\nfunction transformAlpha(node: FunctionNode, slashNode: DivNode | undefined, alphaNode: WordNode | FunctionNode | undefined) {\n\tif (node.value === 'hsl' || node.value === 'hsla') {\n\t\tnode.value = 'hsl';\n\t} else if (node.value === 'rgb' || node.value === 'rgba') {\n\t\tnode.value = 'rgb';\n\t}\n\n\tif (!slashNode || !alphaNode) {\n\t\treturn;\n\t}\n\n\tif (node.value === 'hsl') {\n\t\tnode.value = 'hsla';\n\t} else {\n\t\tnode.value = 'rgba';\n\t}\n\n\tslashNode.value = ',';\n\tslashNode.before = '';\n\n\tif (!isNumericNode(alphaNode)) {\n\t\treturn;\n\t}\n\n\tconst unitAndValue = valueParser.unit(alphaNode.value);\n\tif (!unitAndValue) {\n\t\treturn;\n\t}\n\n\tif (unitAndValue.unit === '%') {\n\t\t// transform the Alpha channel from a Percentage to (0-1) Number\n\t\tunitAndValue.number = String(parseFloat(unitAndValue.number) / 100);\n\t\talphaNode.value = String(unitAndValue.number);\n\t}\n}\n\nfunction normalizeHueNode(dimension: Dimension) {\n\tswitch (dimension.unit) {\n\t\tcase 'deg':\n\t\t\tdimension.unit = '';\n\t\t\treturn;\n\t\tcase 'rad':\n\t\t\t// radians -> degrees\n\t\t\tdimension.unit = '';\n\t\t\tdimension.number = Math.round(parseFloat(dimension.number) * 180 / Math.PI).toString();\n\t\t\treturn;\n\n\t\tcase 'grad':\n\t\t\t// grades -> degrees\n\t\t\tdimension.unit = '';\n\t\t\tdimension.number = Math.round(parseFloat(dimension.number) * 0.9).toString();\n\t\t\treturn;\n\n\t\tcase 'turn':\n\t\t\t// turns -> degrees\n\t\t\tdimension.unit = '';\n\t\t\tdimension.number = Math.round(parseFloat(dimension.number) * 360).toString();\n\t\t\treturn;\n\t}\n}\n\nfunction canParseAsUnit(node : Node): boolean {\n\tif (!node || !node.value) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\treturn valueParser.unit(node.value) !== false;\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\nfunction convertOldSyntaxToNewSyntaxBeforeTransform(nodes: Array<Node>): Array<Node> {\n\t// https://www.w3.org/TR/css-color-4/#rgb-functions\n\t// For legacy reasons, rgb() also supports an alternate syntax that separates all of its arguments with commas:\n\t// This also allows alpha values in comma separated `rgb` / `hsl` functions.\n\t//\n\t// This function replaces the first two comma's with spaces and the third with a slash.\n\t// Subsequent comma's are ignored as they are invalid in this syntax.\n\n\tlet commaCounter = 0;\n\tfor (let i = 0; i < nodes.length; i++) {\n\t\tconst node = nodes[i];\n\t\tif (node.type === 'div' && node.value === ',') {\n\t\t\tif (commaCounter < 2) {\n\t\t\t\tnode.value = ' ';\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\t((node as any) as SpaceNode).type = 'space';\n\t\t\t}\n\n\t\t\tif (commaCounter === 2) {\n\t\t\t\tnode.value = '/';\n\t\t\t}\n\n\t\t\tif (commaCounter > 2) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcommaCounter++;\n\t\t}\n\t}\n\n\treturn nodes;\n}\n","import valueParser from 'postcss-value-parser';\nimport type { ParsedValue, FunctionNode } from 'postcss-value-parser';\nimport type { Declaration, Postcss, Result } from 'postcss';\nimport onCSSFunction from './on-css-function';\n\nimport type { PluginCreator } from 'postcss';\nimport { hasSupportsAtRuleAncestor } from './has-supports-at-rule-ancestor';\n\n/** Transform lab() and lch() functions in CSS. */\nconst postcssPlugin: PluginCreator<{ preserve: boolean }> = (opts?: { preserve: boolean }) => {\n\tconst preserve = 'preserve' in Object(opts) ? Boolean(opts.preserve) : false;\n\n\treturn {\n\t\tpostcssPlugin: 'postcss-color-functional-notation',\n\t\tDeclaration: (decl: Declaration, { result, postcss }: { result: Result, postcss: Postcss }) => {\n\t\t\tif (preserve && hasSupportsAtRuleAncestor(decl)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst originalValue = decl.value;\n\t\t\tif (!(/(^|[^\\w-])(hsla?|rgba?)\\(/i.test(originalValue))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet valueAST: ParsedValue|undefined;\n\n\t\t\ttry {\n\t\t\t\tvalueAST = valueParser(originalValue);\n\t\t\t} catch (error) {\n\t\t\t\tdecl.warn(\n\t\t\t\t\tresult,\n\t\t\t\t\t`Failed to parse value '${originalValue}' as a hsl or rgb function. Leaving the original value intact.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof valueAST === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvalueAST.walk((node) => {\n\t\t\t\tif (!node.type || node.type !== 'function') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tnode.value !== 'hsl' &&\n\t\t\t\t\tnode.value !== 'hsla' &&\n\t\t\t\t\tnode.value !== 'rgb' &&\n\t\t\t\t\tnode.value !== 'rgba'\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonCSSFunction(node as FunctionNode);\n\t\t\t});\n\t\t\tconst modifiedValue = String(valueAST);\n\n\t\t\tif (modifiedValue === originalValue) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (preserve && decl.variable) {\n\t\t\t\tconst parent = decl.parent;\n\t\t\t\tconst atSupportsParams = '(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))';\n\t\t\t\tconst atSupports = postcss.atRule({ name: 'supports', params: atSupportsParams, source: decl.source });\n\n\t\t\t\tconst parentClone = parent.clone();\n\t\t\t\tparentClone.removeAll();\n\n\t\t\t\tparentClone.append(decl.clone());\n\t\t\t\tatSupports.append(parentClone);\n\n\t\t\t\t// Ensure correct order of @supports rules\n\t\t\t\t// Find the last one created by us or the current parent and insert after.\n\t\t\t\tlet insertAfter = parent;\n\t\t\t\tlet nextInsertAfter = parent.next();\n\t\t\t\twhile (\n\t\t\t\t\tinsertAfter &&\n\t\t\t\t\tnextInsertAfter &&\n\t\t\t\t\tnextInsertAfter.type === 'atrule' &&\n\t\t\t\t\tnextInsertAfter.name === 'supports' &&\n\t\t\t\t\tnextInsertAfter.params === atSupportsParams\n\t\t\t\t) {\n\t\t\t\t\tinsertAfter = nextInsertAfter;\n\t\t\t\t\tnextInsertAfter = nextInsertAfter.next();\n\t\t\t\t}\n\n\t\t\t\tinsertAfter.after(atSupports);\n\n\t\t\t\tdecl.value = modifiedValue;\n\t\t\t} else if (preserve) {\n\t\t\t\tdecl.cloneBefore({ value: modifiedValue });\n\t\t\t} else {\n\t\t\t\tdecl.value = modifiedValue;\n\t\t\t}\n\t\t},\n\t};\n};\n\npostcssPlugin.postcss = true;\n\nexport default postcssPlugin;\n","import type { Node, AtRule } from 'postcss';\n\nexport function hasSupportsAtRuleAncestor(node: Node): boolean {\n\tlet parent = node.parent;\n\twhile (parent) {\n\t\tif (parent.type !== 'atrule') {\n\t\t\tparent = parent.parent;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ((parent as AtRule).name === 'supports' && (parent as AtRule).params.indexOf('(color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5))') !== -1) {\n\t\t\treturn true;\n\t\t}\n\n\t\tparent = parent.parent;\n\t}\n\n\treturn false;\n}\n"],"names":["onCSSFunction","node","value","rawNodes","nodes","commaCounter","i","length","type","convertOldSyntaxToNewSyntaxBeforeTransform","relevantNodes","slice","filter","x","canParseAsUnit","unitAndValue","valueParser","unit","number","isNumericNodeHueLike","isNumericNodePercentageOrNumber","out","h","hNode","s","sNode","l","lNode","dimension","Math","round","parseFloat","PI","toString","normalizeHueNode","isSlashNode","slash","isCalcNode","isVarNode","alpha","hslFunctionContents","r","rNode","g","gNode","b","bNode","String","floor","Number","rgbFunctionContents","slashNode","alphaNode","before","isNumericNode","transformAlpha","channelNode1","channelNode2","isRgb","channelNodes","splice","indexOf","sourceIndex","sourceEndIndex","after","e","postcssPlugin","opts","preserve","Object","Boolean","Declaration","decl","result","postcss","parent","name","params","hasSupportsAtRuleAncestor","originalValue","test","valueAST","error","warn","walk","modifiedValue","variable","atSupportsParams","atSupports","atRule","source","parentClone","clone","removeAll","append","insertAfter","nextInsertAfter","next","cloneBefore"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FunctionNode } from 'postcss-value-parser';
2
+ declare function onCSSFunction(node: FunctionNode): void;
3
+ export default onCSSFunction;
package/package.json CHANGED
@@ -1,82 +1,44 @@
1
1
  {
2
2
  "name": "postcss-color-functional-notation",
3
- "version": "4.0.0",
3
+ "version": "4.2.0",
4
4
  "description": "Use space and slash separated color notation in CSS",
5
5
  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
6
6
  "license": "CC0-1.0",
7
- "repository": "csstools/postcss-color-functional-notation",
8
- "homepage": "https://github.com/csstools/postcss-color-functional-notation#readme",
9
- "bugs": "https://github.com/csstools/postcss-color-functional-notation/issues",
10
- "main": "dist/index.cjs.js",
11
- "module": "dist/index.esm.mjs",
7
+ "homepage": "https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-functional-notation#readme",
8
+ "bugs": "https://github.com/csstools/postcss-plugins/issues",
9
+ "main": "dist/index.cjs",
10
+ "module": "dist/index.mjs",
11
+ "types": "./dist/index.d.ts",
12
12
  "files": [
13
+ "CHANGELOG.md",
14
+ "INSTALL.md",
15
+ "LICENSE.md",
16
+ "README.md",
13
17
  "dist"
14
18
  ],
19
+ "bin": {
20
+ "postcss-color-functional-notation": "dist/cli.mjs"
21
+ },
15
22
  "scripts": {
16
- "build": "npx rollup -c .rollup.js",
17
- "build:watch": "npx rollup -c .rollup.js --watch",
18
- "lint": "npx eslint --cache src",
19
- "lint:fix": "npx eslint --cache --fix",
20
- "pretest": "npm install && npm run build",
21
- "test": "npm run lint && npm run tape",
22
- "tape": "npx postcss-tape",
23
- "prepublishOnly": "npm test"
23
+ "build": "rollup -c ../../rollup/default.js",
24
+ "clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true });\"",
25
+ "lint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern",
26
+ "prepublishOnly": "npm run clean && npm run build && npm run test",
27
+ "stryker": "stryker run --logLevel error",
28
+ "test": "postcss-tape --ci"
24
29
  },
25
30
  "engines": {
26
- "node": ">=12"
31
+ "node": "^12 || ^14 || >=16"
27
32
  },
28
33
  "dependencies": {
29
- "postcss-values-parser": "6.0.0"
30
- },
31
- "peerDependencies": {
32
- "postcss": "^8.3"
34
+ "postcss-value-parser": "^4.2.0"
33
35
  },
34
36
  "devDependencies": {
35
- "@babel/core": "7.15.5",
36
- "@babel/preset-env": "7.15.6",
37
- "eslint": "7.32.0",
38
- "postcss": "8.3.6",
39
- "postcss-tape": "6.0.1",
40
- "pre-commit": "1.2.2",
41
- "rollup": "2.56.3",
42
- "rollup-plugin-babel": "4.4.0"
43
- },
44
- "babel": {
45
- "presets": [
46
- [
47
- "@babel/env",
48
- {
49
- "targets": "maintained node versions"
50
- }
51
- ]
52
- ]
37
+ "postcss": "^8.3.6",
38
+ "postcss-tape": "^6.0.1"
53
39
  },
54
- "eslintConfig": {
55
- "env": {
56
- "es6": true,
57
- "node": true
58
- },
59
- "extends": "eslint:recommended",
60
- "parserOptions": {
61
- "sourceType": "module"
62
- }
63
- },
64
- "rollup": {
65
- "input": "src/index.js",
66
- "plugins": [
67
- "rollup-plugin-babel"
68
- ],
69
- "output": [
70
- {
71
- "exports": "default",
72
- "file": "dist/index.cjs.js",
73
- "format": "cjs"
74
- },
75
- {
76
- "file": "dist/index.esm.js",
77
- "format": "esm"
78
- }
79
- ]
40
+ "peerDependencies": {
41
+ "postcss": "^8.3"
80
42
  },
81
43
  "keywords": [
82
44
  "postcss",
@@ -95,5 +57,13 @@
95
57
  "syntax",
96
58
  "space",
97
59
  "comma"
98
- ]
60
+ ],
61
+ "repository": {
62
+ "type": "git",
63
+ "url": "https://github.com/csstools/postcss-plugins.git",
64
+ "directory": "plugins/postcss-color-functional-notation"
65
+ },
66
+ "volta": {
67
+ "extends": "../../package.json"
68
+ }
99
69
  }
package/dist/index.cjs.js DELETED
@@ -1,213 +0,0 @@
1
- 'use strict';
2
-
3
- var postcssValuesParser = require('postcss-values-parser');
4
-
5
- /** @type {(decl: CSSFunction) => void} Transform a space and slash separated color function. */
6
-
7
- const onCSSFunction = node => {
8
- /** @type {{ name: string, nodes: CSSNode[] }} */
9
- const {
10
- name,
11
- nodes
12
- } = node;
13
-
14
- if (isColorFunctionName(name)) {
15
- const isHsl = isHslColorFunctionName(name) && isHslFunctionContents(nodes);
16
- const isRgbWithNumbers = isRgbColorFunctionName(name) && isRgbNumberFunctionContents(nodes);
17
- const isRgbWithPercents = isRgbColorFunctionName(name) && isRgbPercentFunctionContents(nodes);
18
-
19
- if (isHsl || isRgbWithNumbers || isRgbWithPercents) {
20
- // rename the Color function to `hsl` or `rgb`
21
- Object.assign(node, {
22
- name: isHsl ? 'hsl' : 'rgb'
23
- });
24
- /** @type {CSSPunctuation} Slash punctuation before the Alpha channel. */
25
-
26
- const slashNode = nodes[3];
27
- /** @type {CSSNumber} Alpha channel. */
28
-
29
- const alphaNode = nodes[4];
30
-
31
- if (alphaNode) {
32
- if (isPercentage(alphaNode) && !isCalc(alphaNode)) {
33
- // transform the Alpha channel from a Percentage to (0-1) Number
34
- Object.assign(alphaNode, {
35
- value: String(alphaNode.value / 100),
36
- unit: ''
37
- });
38
- } // if the color is fully opaque (i.e. the Alpha channel is `1`)
39
-
40
-
41
- if (alphaNode.value === '1') {
42
- // remove the Slash and Alpha channel
43
- slashNode.remove();
44
- alphaNode.remove();
45
- } else {
46
- // otherwise, rename the Color function to `hsla` or `rgba`
47
- Object.assign(node, {
48
- name: isHsl ? 'hsla' : 'rgba'
49
- });
50
- }
51
- } // replace a remaining Slash with a Comma
52
-
53
-
54
- if (slashNode && isSlash(slashNode)) {
55
- slashNode.replaceWith(commaNode.clone());
56
- }
57
- /** Extracted Color channels. */
58
-
59
-
60
- let [channelNode1, channelNode2, channelNode3] = nodes;
61
-
62
- if (isRgbWithPercents) {
63
- Object.assign(channelNode1, {
64
- value: to255ColorValue(channelNode1.value),
65
- unit: ''
66
- });
67
- Object.assign(channelNode2, {
68
- value: to255ColorValue(channelNode2.value),
69
- unit: ''
70
- });
71
- Object.assign(channelNode3, {
72
- value: to255ColorValue(channelNode3.value),
73
- unit: ''
74
- });
75
- }
76
-
77
- channelNode2.after(commaNode.clone());
78
- channelNode1.after(commaNode.clone());
79
- }
80
- }
81
- };
82
- const commaNode = postcssValuesParser.parse(',').first;
83
- /** Return a value transformed from a scale of 0-100 to a scale of 0-255 */
84
-
85
- function to255ColorValue(value) {
86
- return String(Math.floor(value * 255 / 100));
87
- }
88
- /** @type {(value: RegExp) => (value: string) => boolean} Return a function that checks whether the expression exists in a value. */
89
-
90
-
91
- const createRegExpTest$1 = Function.bind.bind(RegExp.prototype.test);
92
- /** Return whether the function name is `hsl()`, `hsla()`, `rgb()`, or `rgba()`. */
93
-
94
- const isColorFunctionName = createRegExpTest$1(/^(hsl|rgb)a?$/i);
95
- /** Return whether the function name is `hsl()` or `hsla()`. */
96
-
97
- const isHslColorFunctionName = createRegExpTest$1(/^hsla?$/i);
98
- /** Return whether the function name is `rgb()` or `rgba()`. */
99
-
100
- const isRgbColorFunctionName = createRegExpTest$1(/^rgba?$/i);
101
- /** Return whether the function name is `calc`. */
102
-
103
- const isCalcFunctionName = createRegExpTest$1(/^calc$/i);
104
- /** Return whether the unit is alpha-like. */
105
-
106
- const isAlphaLikeUnit = createRegExpTest$1(/^%?$/i);
107
- /** Return whether the unit is hue-like. */
108
-
109
- const isHueLikeUnit = createRegExpTest$1(/^(deg|grad|rad|turn)?$/i);
110
- /** @type {(node: CSSNumber) => boolean} Return whether the node is an Alpha-like unit. */
111
-
112
- const isAlphaValue = node => isCalc(node) || node.type === 'numeric' && isAlphaLikeUnit(node.unit);
113
- /** @type {(node: CSSFunction) => boolean} Return whether the node is a calc() function. */
114
-
115
-
116
- const isCalc = node => node.type === 'func' && isCalcFunctionName(node.name);
117
- /** @type {(node: CSSNumber) => boolean} Return whether the node is a Hue-like unit. */
118
-
119
-
120
- const isHue = node => isCalc(node) || node.type === 'numeric' && isHueLikeUnit(node.unit);
121
- /** @type {(node: CSSNumber) => boolean} Return whether the node is a Number unit. */
122
-
123
-
124
- const isNumber = node => isCalc(node) || node.type === 'numeric' && node.unit === '';
125
- /** @type {(node: CSSNumber) => boolean} Return whether the node is a Percentage unit. */
126
-
127
-
128
- const isPercentage = node => isCalc(node) || node.type === 'numeric' && (node.unit === '%' || node.unit === '' && node.value === '0');
129
- /** @type {(node: CSSOperator) => boolean} Return whether the node is a Slash delimiter. */
130
-
131
-
132
- const isSlash = node => node.type === 'operator' && node.value === '/';
133
- /** @type {(nodes: Node[]) => boolean} Return whether a set of nodes is an hsl() function. */
134
-
135
-
136
- const isHslFunctionContents = nodes => nodes.every((node, index) => typeof hslFunctionContents[index] === 'function' && hslFunctionContents[index](node));
137
- /** Set of nodes in a lab() function. */
138
-
139
-
140
- const hslFunctionContents = [isHue, isPercentage, isPercentage, isSlash, isAlphaValue];
141
- /** @type {(nodes: Node[]) => boolean} Return whether a set of nodes is an rgb() function with numbers. */
142
-
143
- const isRgbNumberFunctionContents = nodes => nodes.every((node, index) => typeof rgbNumberFunctionContents[index] === 'function' && rgbNumberFunctionContents[index](node));
144
- /** Set of nodes in a rgb() function with numbers. */
145
-
146
-
147
- const rgbNumberFunctionContents = [isNumber, isNumber, isNumber, isSlash, isAlphaValue];
148
- /** @type {(nodes: Node[]) => boolean} Return whether a set of nodes is an rgb() function with percentages. */
149
-
150
- const isRgbPercentFunctionContents = nodes => nodes.every((node, index) => typeof rgbPercentFunctionContents[index] === 'function' && rgbPercentFunctionContents[index](node));
151
- /** Set of nodes in a rgb() function with percentages. */
152
-
153
-
154
- const rgbPercentFunctionContents = [isPercentage, isPercentage, isPercentage, isSlash, isAlphaValue];
155
- /** @typedef {import('postcss-values-parser').Func} CSSFunction */
156
-
157
- /** @typedef {import('postcss-values-parser').Node} CSSNode */
158
-
159
- /** @typedef {import('postcss-values-parser').Numeric} CSSNumber */
160
-
161
- /** @typedef {import('postcss-values-parser').Operator} CSSOperator */
162
-
163
- /** @typedef {import('postcss-values-parser').Punctuation} CSSPunctuation */
164
-
165
- var options = {
166
- /** Whether to preserve the original functional color declaration. */
167
- preserve: false
168
- };
169
-
170
- /** @type {(decl: CSSDeclaration) => void} Transform space and slash separated color functions in CSS Declarations. */
171
-
172
- const onCSSDeclaration = decl => {
173
- const {
174
- value: originalValue
175
- } = decl;
176
-
177
- if (hasAnyColorFunction(originalValue)) {
178
- const valueAST = postcssValuesParser.parse(originalValue);
179
- valueAST.walkType('func', onCSSFunction);
180
- const modifiedValue = String(valueAST);
181
-
182
- if (modifiedValue !== originalValue) {
183
- if (options.preserve) decl.cloneBefore({
184
- value: modifiedValue
185
- });else decl.value = modifiedValue;
186
- }
187
- }
188
- };
189
- /** @type {(value: RegExp) => (value: string) => boolean} Return a function that checks whether the expression exists in a value. */
190
-
191
- const createRegExpTest = Function.bind.bind(RegExp.prototype.test);
192
- /** Return whether the value has an `hsl()`, `hsla()`, `rgb()`, or `rgba()` function. */
193
-
194
- const hasAnyColorFunction = createRegExpTest(/(^|[^\w-])(hsla?|rgba?)\(/i);
195
- /** @typedef {import('postcss').Declaration} CSSDeclaration */
196
-
197
- /** Transform space and slash separated color functions in CSS. */
198
-
199
- function postcssColorFunctionalNotation(opts) {
200
- options.preserve = 'preserve' in Object(opts) ? Boolean(opts.preserve) : false;
201
- return {
202
- postcssPlugin: 'postcss-color-functional-notation',
203
- Declaration: onCSSDeclaration
204
- };
205
- }
206
- postcssColorFunctionalNotation.postcss = true;
207
- /** @typedef {import('postcss').Root} CSSRoot */
208
-
209
- /** @typedef {(root: CSSRoot) => void} PostCSSTransformCallback */
210
-
211
- /** @typedef {(opts: options) => PostCSSTransformCallback} PostCSSPluginInitializer */
212
-
213
- module.exports = postcssColorFunctionalNotation;
package/dist/index.esm.js DELETED
@@ -1,211 +0,0 @@
1
- import { parse } from 'postcss-values-parser';
2
-
3
- /** @type {(decl: CSSFunction) => void} Transform a space and slash separated color function. */
4
-
5
- const onCSSFunction = node => {
6
- /** @type {{ name: string, nodes: CSSNode[] }} */
7
- const {
8
- name,
9
- nodes
10
- } = node;
11
-
12
- if (isColorFunctionName(name)) {
13
- const isHsl = isHslColorFunctionName(name) && isHslFunctionContents(nodes);
14
- const isRgbWithNumbers = isRgbColorFunctionName(name) && isRgbNumberFunctionContents(nodes);
15
- const isRgbWithPercents = isRgbColorFunctionName(name) && isRgbPercentFunctionContents(nodes);
16
-
17
- if (isHsl || isRgbWithNumbers || isRgbWithPercents) {
18
- // rename the Color function to `hsl` or `rgb`
19
- Object.assign(node, {
20
- name: isHsl ? 'hsl' : 'rgb'
21
- });
22
- /** @type {CSSPunctuation} Slash punctuation before the Alpha channel. */
23
-
24
- const slashNode = nodes[3];
25
- /** @type {CSSNumber} Alpha channel. */
26
-
27
- const alphaNode = nodes[4];
28
-
29
- if (alphaNode) {
30
- if (isPercentage(alphaNode) && !isCalc(alphaNode)) {
31
- // transform the Alpha channel from a Percentage to (0-1) Number
32
- Object.assign(alphaNode, {
33
- value: String(alphaNode.value / 100),
34
- unit: ''
35
- });
36
- } // if the color is fully opaque (i.e. the Alpha channel is `1`)
37
-
38
-
39
- if (alphaNode.value === '1') {
40
- // remove the Slash and Alpha channel
41
- slashNode.remove();
42
- alphaNode.remove();
43
- } else {
44
- // otherwise, rename the Color function to `hsla` or `rgba`
45
- Object.assign(node, {
46
- name: isHsl ? 'hsla' : 'rgba'
47
- });
48
- }
49
- } // replace a remaining Slash with a Comma
50
-
51
-
52
- if (slashNode && isSlash(slashNode)) {
53
- slashNode.replaceWith(commaNode.clone());
54
- }
55
- /** Extracted Color channels. */
56
-
57
-
58
- let [channelNode1, channelNode2, channelNode3] = nodes;
59
-
60
- if (isRgbWithPercents) {
61
- Object.assign(channelNode1, {
62
- value: to255ColorValue(channelNode1.value),
63
- unit: ''
64
- });
65
- Object.assign(channelNode2, {
66
- value: to255ColorValue(channelNode2.value),
67
- unit: ''
68
- });
69
- Object.assign(channelNode3, {
70
- value: to255ColorValue(channelNode3.value),
71
- unit: ''
72
- });
73
- }
74
-
75
- channelNode2.after(commaNode.clone());
76
- channelNode1.after(commaNode.clone());
77
- }
78
- }
79
- };
80
- const commaNode = parse(',').first;
81
- /** Return a value transformed from a scale of 0-100 to a scale of 0-255 */
82
-
83
- function to255ColorValue(value) {
84
- return String(Math.floor(value * 255 / 100));
85
- }
86
- /** @type {(value: RegExp) => (value: string) => boolean} Return a function that checks whether the expression exists in a value. */
87
-
88
-
89
- const createRegExpTest$1 = Function.bind.bind(RegExp.prototype.test);
90
- /** Return whether the function name is `hsl()`, `hsla()`, `rgb()`, or `rgba()`. */
91
-
92
- const isColorFunctionName = createRegExpTest$1(/^(hsl|rgb)a?$/i);
93
- /** Return whether the function name is `hsl()` or `hsla()`. */
94
-
95
- const isHslColorFunctionName = createRegExpTest$1(/^hsla?$/i);
96
- /** Return whether the function name is `rgb()` or `rgba()`. */
97
-
98
- const isRgbColorFunctionName = createRegExpTest$1(/^rgba?$/i);
99
- /** Return whether the function name is `calc`. */
100
-
101
- const isCalcFunctionName = createRegExpTest$1(/^calc$/i);
102
- /** Return whether the unit is alpha-like. */
103
-
104
- const isAlphaLikeUnit = createRegExpTest$1(/^%?$/i);
105
- /** Return whether the unit is hue-like. */
106
-
107
- const isHueLikeUnit = createRegExpTest$1(/^(deg|grad|rad|turn)?$/i);
108
- /** @type {(node: CSSNumber) => boolean} Return whether the node is an Alpha-like unit. */
109
-
110
- const isAlphaValue = node => isCalc(node) || node.type === 'numeric' && isAlphaLikeUnit(node.unit);
111
- /** @type {(node: CSSFunction) => boolean} Return whether the node is a calc() function. */
112
-
113
-
114
- const isCalc = node => node.type === 'func' && isCalcFunctionName(node.name);
115
- /** @type {(node: CSSNumber) => boolean} Return whether the node is a Hue-like unit. */
116
-
117
-
118
- const isHue = node => isCalc(node) || node.type === 'numeric' && isHueLikeUnit(node.unit);
119
- /** @type {(node: CSSNumber) => boolean} Return whether the node is a Number unit. */
120
-
121
-
122
- const isNumber = node => isCalc(node) || node.type === 'numeric' && node.unit === '';
123
- /** @type {(node: CSSNumber) => boolean} Return whether the node is a Percentage unit. */
124
-
125
-
126
- const isPercentage = node => isCalc(node) || node.type === 'numeric' && (node.unit === '%' || node.unit === '' && node.value === '0');
127
- /** @type {(node: CSSOperator) => boolean} Return whether the node is a Slash delimiter. */
128
-
129
-
130
- const isSlash = node => node.type === 'operator' && node.value === '/';
131
- /** @type {(nodes: Node[]) => boolean} Return whether a set of nodes is an hsl() function. */
132
-
133
-
134
- const isHslFunctionContents = nodes => nodes.every((node, index) => typeof hslFunctionContents[index] === 'function' && hslFunctionContents[index](node));
135
- /** Set of nodes in a lab() function. */
136
-
137
-
138
- const hslFunctionContents = [isHue, isPercentage, isPercentage, isSlash, isAlphaValue];
139
- /** @type {(nodes: Node[]) => boolean} Return whether a set of nodes is an rgb() function with numbers. */
140
-
141
- const isRgbNumberFunctionContents = nodes => nodes.every((node, index) => typeof rgbNumberFunctionContents[index] === 'function' && rgbNumberFunctionContents[index](node));
142
- /** Set of nodes in a rgb() function with numbers. */
143
-
144
-
145
- const rgbNumberFunctionContents = [isNumber, isNumber, isNumber, isSlash, isAlphaValue];
146
- /** @type {(nodes: Node[]) => boolean} Return whether a set of nodes is an rgb() function with percentages. */
147
-
148
- const isRgbPercentFunctionContents = nodes => nodes.every((node, index) => typeof rgbPercentFunctionContents[index] === 'function' && rgbPercentFunctionContents[index](node));
149
- /** Set of nodes in a rgb() function with percentages. */
150
-
151
-
152
- const rgbPercentFunctionContents = [isPercentage, isPercentage, isPercentage, isSlash, isAlphaValue];
153
- /** @typedef {import('postcss-values-parser').Func} CSSFunction */
154
-
155
- /** @typedef {import('postcss-values-parser').Node} CSSNode */
156
-
157
- /** @typedef {import('postcss-values-parser').Numeric} CSSNumber */
158
-
159
- /** @typedef {import('postcss-values-parser').Operator} CSSOperator */
160
-
161
- /** @typedef {import('postcss-values-parser').Punctuation} CSSPunctuation */
162
-
163
- var options = {
164
- /** Whether to preserve the original functional color declaration. */
165
- preserve: false
166
- };
167
-
168
- /** @type {(decl: CSSDeclaration) => void} Transform space and slash separated color functions in CSS Declarations. */
169
-
170
- const onCSSDeclaration = decl => {
171
- const {
172
- value: originalValue
173
- } = decl;
174
-
175
- if (hasAnyColorFunction(originalValue)) {
176
- const valueAST = parse(originalValue);
177
- valueAST.walkType('func', onCSSFunction);
178
- const modifiedValue = String(valueAST);
179
-
180
- if (modifiedValue !== originalValue) {
181
- if (options.preserve) decl.cloneBefore({
182
- value: modifiedValue
183
- });else decl.value = modifiedValue;
184
- }
185
- }
186
- };
187
- /** @type {(value: RegExp) => (value: string) => boolean} Return a function that checks whether the expression exists in a value. */
188
-
189
- const createRegExpTest = Function.bind.bind(RegExp.prototype.test);
190
- /** Return whether the value has an `hsl()`, `hsla()`, `rgb()`, or `rgba()` function. */
191
-
192
- const hasAnyColorFunction = createRegExpTest(/(^|[^\w-])(hsla?|rgba?)\(/i);
193
- /** @typedef {import('postcss').Declaration} CSSDeclaration */
194
-
195
- /** Transform space and slash separated color functions in CSS. */
196
-
197
- function postcssColorFunctionalNotation(opts) {
198
- options.preserve = 'preserve' in Object(opts) ? Boolean(opts.preserve) : false;
199
- return {
200
- postcssPlugin: 'postcss-color-functional-notation',
201
- Declaration: onCSSDeclaration
202
- };
203
- }
204
- postcssColorFunctionalNotation.postcss = true;
205
- /** @typedef {import('postcss').Root} CSSRoot */
206
-
207
- /** @typedef {(root: CSSRoot) => void} PostCSSTransformCallback */
208
-
209
- /** @typedef {(opts: options) => PostCSSTransformCallback} PostCSSPluginInitializer */
210
-
211
- export { postcssColorFunctionalNotation as default };