@csstools/postcss-color-function 1.0.2 → 1.1.1

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 CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changes to PostCSS Color Function
2
2
 
3
+ ### 1.1.1 (July 8, 2022)
4
+
5
+ - Fix case insensitive matching.
6
+
7
+ ### 1.1.0 (April 4, 2022)
8
+
9
+ - Allow percentage units in XYZ color spaces.
10
+
11
+ ```css
12
+ .percentages {
13
+ color-1: color(xyz-d50 64.331% 19.245% 16.771%);
14
+ color-2: color(xyz-d65 64.331% 19.245% 16.771%);
15
+ color-3: color(xyz 64.331% 19.245% 16.771%);
16
+
17
+ /* becomes */
18
+
19
+ color-1: rgb(245,0,135);
20
+ color-2: rgb(253,0,127);
21
+ color-3: rgb(253,0,127);
22
+ }
23
+ ```
24
+
25
+ ### 1.0.3 (March 8, 2022)
26
+
27
+ - Fix gamut mapping giving overly unsaturated colors.
28
+ - Implement powerless color components in gamut mapping.
29
+
3
30
  ### 1.0.2 (February 12, 2022)
4
31
 
5
32
  - Updated `@csstools/postcss-progressive-custom-properties` to `1.1.0`.
package/README.md CHANGED
@@ -1,23 +1,27 @@
1
1
  # PostCSS Color Function [<img src="https://postcss.github.io/postcss/logo.svg" alt="PostCSS Logo" width="90" height="90" align="right">][postcss]
2
2
 
3
- [<img alt="npm version" src="https://img.shields.io/npm/v/@csstools/postcss-color-function.svg" height="20">][npm-url]
4
- [<img alt="CSS Standard Status" src="https://cssdb.org/images/badges/color-function.svg" height="20">][css-url]
5
- [<img alt="Build Status" src="https://github.com/csstools/postcss-plugins/workflows/test/badge.svg" height="20">][cli-url]
6
- [<img alt="Discord" src="https://shields.io/badge/Discord-5865F2?logo=discord&logoColor=white">][discord]
7
-
3
+ [<img alt="npm version" src="https://img.shields.io/npm/v/@csstools/postcss-color-function.svg" height="20">][npm-url] [<img alt="CSS Standard Status" src="https://cssdb.org/images/badges/color-function.svg" height="20">][css-url] [<img alt="Build Status" src="https://github.com/csstools/postcss-plugins/workflows/test/badge.svg" height="20">][cli-url] [<img alt="Discord" src="https://shields.io/badge/Discord-5865F2?logo=discord&logoColor=white">][discord]
8
4
 
9
5
  [PostCSS Color Function] lets you use the `color` function in
10
6
  CSS, following the [CSS Color] specification.
11
7
 
12
8
  ```pcss
13
9
  .color {
14
- color: color(display-p3 0.64331 0.19245 0.16771);
10
+ color: color(display-p3 0.64331 0.19245 0.16771);
11
+ }
12
+
13
+ :root {
14
+ --a-color: color(srgb 0.64331 0.19245 0.16771);
15
15
  }
16
16
 
17
17
  /* becomes */
18
18
 
19
19
  .color {
20
- color: rgb(179,35,35);
20
+ color: rgb(179,35,35);
21
+ }
22
+
23
+ :root {
24
+ --a-color: rgb(164,49,43);
21
25
  }
22
26
  ```
23
27
 
@@ -36,7 +40,7 @@ const postcss = require('postcss');
36
40
  const postcssColorFunction = require('@csstools/postcss-color-function');
37
41
 
38
42
  postcss([
39
- postcssColorFunction(/* pluginOptions */)
43
+ postcssColorFunction(/* pluginOptions */)
40
44
  ]).process(YOUR_CSS /*, processOptions */);
41
45
  ```
42
46
 
@@ -59,14 +63,28 @@ postcssColorFunction({ preserve: true })
59
63
 
60
64
  ```pcss
61
65
  .color {
62
- color: color(display-p3 0.64331 0.19245 0.16771);
66
+ color: color(display-p3 0.64331 0.19245 0.16771);
67
+ }
68
+
69
+ :root {
70
+ --a-color: color(srgb 0.64331 0.19245 0.16771);
63
71
  }
64
72
 
65
73
  /* becomes */
66
74
 
67
75
  .color {
68
- color: rgb(179,35,35);
69
- color: color(display-p3 0.64331 0.19245 0.16771);
76
+ color: rgb(179,35,35);
77
+ color: color(display-p3 0.64331 0.19245 0.16771);
78
+ }
79
+
80
+ :root {
81
+ --a-color: rgb(164,49,43);
82
+ }
83
+
84
+ @supports (color: color(srgb 0 0 0)) {
85
+ :root {
86
+ --a-color: color(srgb 0.64331 0.19245 0.16771);
87
+ }
70
88
  }
71
89
  ```
72
90
 
@@ -82,18 +100,29 @@ postcssColorFunction({ enableProgressiveCustomProperties: false })
82
100
  ```
83
101
 
84
102
  ```pcss
103
+ .color {
104
+ color: color(display-p3 0.64331 0.19245 0.16771);
105
+ }
106
+
85
107
  :root {
86
- --one: color(srgb 0.64331 0.19245 0.16771);
108
+ --a-color: color(srgb 0.64331 0.19245 0.16771);
87
109
  }
88
110
 
89
111
  /* becomes */
90
112
 
113
+ .color {
114
+ color: rgb(179,35,35);
115
+ color: color(display-p3 0.64331 0.19245 0.16771);
116
+ }
117
+
91
118
  :root {
92
- --one: rgb(164,49,43); /* will never be used, not even in older browser */
93
- --one: color(srgb 0.64331 0.19245 0.16771);
119
+ --a-color: rgb(164,49,43);
120
+ --a-color: color(srgb 0.64331 0.19245 0.16771);
94
121
  }
95
122
  ```
96
123
 
124
+ _Custom properties do not fallback to the previous declaration_
125
+
97
126
  ## Supported Color Spaces
98
127
 
99
128
  ```css
@@ -133,9 +162,9 @@ This software or document includes material copied from or derived from https://
133
162
  [discord]: https://discord.gg/bUadyRwkJS
134
163
  [npm-url]: https://www.npmjs.com/package/@csstools/postcss-color-function
135
164
 
136
- [CSS Color]: https://www.w3.org/TR/css-color-4/#funcdef-color
137
165
  [Gulp PostCSS]: https://github.com/postcss/gulp-postcss
138
166
  [Grunt PostCSS]: https://github.com/nDmitry/grunt-postcss
139
167
  [PostCSS]: https://github.com/postcss/postcss
140
168
  [PostCSS Loader]: https://github.com/postcss/postcss-loader
141
169
  [PostCSS Color Function]: https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-function
170
+ [CSS Color]: https://www.w3.org/TR/css-color-4/#funcdef-color
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var e=require("@csstools/postcss-progressive-custom-properties"),t=require("postcss-value-parser");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=r(e),u=r(t);
1
+ "use strict";var e=require("@csstools/postcss-progressive-custom-properties"),r=require("postcss-value-parser");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e),u=t(r);
2
2
  /**
3
3
  * Simple matrix (and vector) multiplication
4
4
  * Warning: No error handling for incompatible dimensions!
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/multiply-matrices.js
13
13
  */
14
- function a(e,t){const r=e.length;let n,u;n=Array.isArray(e[0])?e:[e],Array.isArray(t[0])||(u=t.map((e=>[e])));const a=u[0].length,o=u[0].map(((e,t)=>u.map((e=>e[t]))));let s=n.map((e=>o.map((t=>Array.isArray(e)?e.reduce(((e,r,n)=>e+r*(t[n]||0)),0):t.reduce(((t,r)=>t+r*e),0)))));return 1===r&&(s=s[0]),1===a?s.map((e=>e[0])):s}
14
+ function o(e,r){const t=e.length;let n,u;n=Array.isArray(e[0])?e:[e],Array.isArray(r[0])||(u=r.map((e=>[e])));const o=u[0].length,a=u[0].map(((e,r)=>u.map((e=>e[r]))));let s=n.map((e=>a.map((r=>Array.isArray(e)?e.reduce(((e,t,n)=>e+t*(r[n]||0)),0):r.reduce(((r,t)=>r+t*e),0)))));return 1===t&&(s=s[0]),1===o?s.map((e=>e[0])):s}
15
15
  /**
16
16
  * @license W3C
17
17
  * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
@@ -19,7 +19,7 @@ function a(e,t){const r=e.length;let n,u;n=Array.isArray(e[0])?e:[e],Array.isArr
19
19
  * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).
20
20
  *
21
21
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js
22
- */function o(e){return e.map((function(e){const t=e<0?-1:1,r=Math.abs(e);return r<.04045?e/12.92:t*Math.pow((r+.055)/1.055,2.4)}))}function s(e){return e.map((function(e){const t=e<0?-1:1,r=Math.abs(e);return r>.0031308?t*(1.055*Math.pow(r,1/2.4)-.055):12.92*e}))}function c(e){return a([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function i(e){return a([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function l(e){return a([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],e)}function p(e){const t=a([[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],e);return a([[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],t.map((e=>Math.cbrt(e))))}function f(e){const t=a([[.9999999984505198,.39633779217376786,.2158037580607588],[1.0000000088817609,-.10556134232365635,-.06385417477170591],[1.0000000546724108,-.08948418209496575,-1.2914855378640917]],e);return a([[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],t.map((e=>e**3)))}function d(e){const t=180*Math.atan2(e[2],e[1])/Math.PI;return[e[0],Math.sqrt(e[1]**2+e[2]**2),t>=0?t:t+360]}function v(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}
22
+ */function a(e){return e.map((function(e){const r=e<0?-1:1,t=Math.abs(e);return t<.04045?e/12.92:r*Math.pow((t+.055)/1.055,2.4)}))}function s(e){return e.map((function(e){const r=e<0?-1:1,t=Math.abs(e);return t>.0031308?r*(1.055*Math.pow(t,1/2.4)-.055):12.92*e}))}function c(e){return o([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function i(e){return o([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function l(e){return o([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],e)}function p(e){const r=o([[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],e);return o([[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],r.map((e=>Math.cbrt(e))))}function f(e){const r=o([[.9999999984505198,.39633779217376786,.2158037580607588],[1.0000000088817609,-.10556134232365635,-.06385417477170591],[1.0000000546724108,-.08948418209496575,-1.2914855378640917]],e);return o([[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],r.map((e=>e**3)))}function d(e){const r=180*Math.atan2(e[2],e[1])/Math.PI;return[e[0],Math.sqrt(e[1]**2+e[2]**2),r>=0?r:r+360]}function v(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}
23
23
  /**
24
24
  * @license W3C
25
25
  * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
@@ -27,4 +27,4 @@ function a(e,t){const r=e.length;let n,u;n=Array.isArray(e[0])?e:[e],Array.isArr
27
27
  * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).
28
28
  *
29
29
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js
30
- */function h(e,t){const[r,n,u]=e,[a,o,s]=t,c=r-a,i=n-o,l=u-s;return Math.sqrt(c**2+i**2+l**2)}function m(e,t,r){return function(e,t,r){let n=0,u=e[1];const a=e;for(;u-n>1e-4;){h(a,r(b(t(a))))-.02<1e-4?n=a[1]:u=a[1],a[1]=(u+n)/2}return b(t([...a]))}(e,t,r)}function b(e){return e.map((e=>e<0?0:e>1?1:e))}function y(e){const[t,r,n]=e;return t>=-1e-4&&t<=1.0001&&r>=-1e-4&&r<=1.0001&&n>=-1e-4&&n<=1.0001}function g(e){let t=e.slice();t=t.map((function(e){const t=e<0?-1:1,r=Math.abs(e);return t*Math.pow(r,563/256)})),t=a([[.5766690429101305,.1855582379065463,.1882286462349947],[.29734497525053605,.6273635662554661,.07529145849399788],[.02703136138641234,.07068885253582723,.9913375368376388]],t);let r=t.slice();return r=p(r),r=d(r),t=i(t),t=s(t),y(t)?b(t):m(r,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=o(e))))))}function x(e){let t=e.slice();t=l(t);let r=t.slice();return r=p(r),r=d(r),t=i(t),t=s(t),y(t)?b(t):m(r,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=o(e))))))}function M(e){let t=e.slice(),r=t.slice();return r=p(r),r=d(r),t=i(t),t=s(t),y(t)?b(t):m(r,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=o(e))))))}function w(e){let t=e.slice();t=o(t),t=a([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],t);let r=t.slice();return r=p(r),r=d(r),t=i(t),t=s(t),y(t)?b(t):m(r,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=o(e))))))}function I(e){let t=e.slice();t=t.map((function(e){const t=e<0?-1:1;return Math.abs(e)<=.03125?e/16:t*Math.pow(e,1.8)})),t=a([[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],t),t=l(t);let r=t.slice();return r=p(r),r=d(r),t=i(t),t=s(t),y(t)?b(t):m(r,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=o(e))))))}function S(e){let t=e.slice();t=function(e){const t=1.09929682680944;return e.map((function(e){const r=e<0?-1:1,n=Math.abs(e);return n<.08124285829863151?e/4.5:r*Math.pow((n+t-1)/t,1/.45)}))}(t),t=a([[.6369580483012914,.14461690358620832,.1688809751641721],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],t);let r=t.slice();return r=p(r),r=d(r),t=i(t),t=s(t),y(t)?b(t):m(r,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=o(e))))))}function k(e){let t=e.slice();t=c(t);let r=t.slice();return r=p(r),r=d(r),t=i(t),t=s(t),y(t)?b(t):m(r,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=o(e))))))}function P(e){let t=e.slice();t=o(t),t=c(t);let r=t.slice();return r=p(r),r=d(r),t=i(t),t=s(t),y(t)?b(t):m(r,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=o(e))))))}function z(e,t,r,n){const a=u.default.stringify(e),o=e.value,s=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let c,i=null;if("color"===o&&(i=function(e){if(!function(e){if(!e||"word"!==e.type)return!1;switch(e.value){case"srgb":case"srgb-linear":case"display-p3":case"a98-rgb":case"prophoto-rgb":case"rec2020":case"xyz-d50":case"xyz-d65":case"xyz":return!0;default:return!1}}(e[0]))return null;const t={colorSpace:e[0].value,colorSpaceNode:e[0],parameters:[]};for(let r=1;r<e.length;r++)if(F(e[r]))t.slash=e[r];else{if(t.slash&&(E(e[r])||A(e[r])||q(e[r]))){t.alpha=e[r];break}if(!t.colorSpace.startsWith("xyz")&&E(e[r])){const n=u.default.unit(e[r].value);"%"===n.unit&&(n.number=String(parseFloat(n.number)/100),n.unit="",e[r].value=String(n.number)),t.parameters.push({value:n,node:e[r]})}else{if(!t.colorSpace.startsWith("xyz")||!E(e[r]))return null;{const n=u.default.unit(e[r].value);if(""!==n.unit)return null;t.parameters.push({value:n,node:e[r]})}}}if(0===t.parameters.length)return t;t.parameters.length<3&&(t.parameters=[...t.parameters,{node:{sourceIndex:0,sourceEndIndex:1,value:"0",type:"word"},value:{number:"0",unit:""}},{node:{sourceIndex:0,sourceEndIndex:1,value:"0",type:"word"},value:{number:"0",unit:""}}]);t.parameters.length>3&&(t.parameters=t.parameters.slice(0,3));return t}(s)),!i)return;switch(e.value="rgb",function(e,t,r){if(!t||!r)return;if(e.value="rgba",t.value=",",t.before="",!function(e){if(!e||"word"!==e.type)return!1;if(!O(e))return!1;const t=u.default.unit(e.value);if(!t)return!1;return!!t.number}(r))return;const n=u.default.unit(r.value);if(!n)return;"%"===n.unit&&(n.number=String(parseFloat(n.number)/100),r.value=String(n.number))}(e,i.slash,i.alpha),i.colorSpace){case"srgb":c=P;break;case"srgb-linear":c=k;break;case"a98-rgb":c=g;break;case"prophoto-rgb":c=I;break;case"display-p3":c=w;break;case"rec2020":c=S;break;case"xyz-d50":c=x;break;case"xyz-d65":case"xyz":c=M;break;default:return}const l=(p=i,p.parameters.map((e=>e.value))).map((e=>parseFloat(e.number)));var p;const f=c(l);!y(l)&&n&&t.warn(r,`"${a}" is out of gamut for "${i.colorSpace}". Given "preserve: true" is set, this will lead to unexpected results in some browsers.`),e.nodes=[{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[0])),type:"word"},{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""},{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[1])),type:"word"},{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""},{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[2])),type:"word"}],i.alpha&&(e.nodes.push({sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.push(i.alpha))}function E(e){if(!e||"word"!==e.type)return!1;if(!O(e))return!1;const t=u.default.unit(e.value);return!!t&&("%"===t.unit||""===t.unit)}function A(e){return e&&"function"===e.type&&"calc"===e.value}function q(e){return e&&"function"===e.type&&"var"===e.value}function F(e){return e&&"div"===e.type&&"/"===e.value}function O(e){if(!e||!e.value)return!1;try{return!1!==u.default.unit(e.value)}catch(e){return!1}}const j=e=>{const t="preserve"in Object(e)&&Boolean(e.preserve);return{postcssPlugin:"postcss-color-function",Declaration:(e,{result:r})=>{if(function(e){const t=e.parent;if(!t)return!1;const r=t.index(e);for(let n=0;n<r;n++){const r=t.nodes[n];if("decl"===r.type&&r.prop===e.prop)return!0}return!1}(e))return;if(function(e){let t=e.parent;for(;t;)if("atrule"===t.type){if("supports"===t.name&&-1!==t.params.indexOf("color("))return!0;t=t.parent}else t=t.parent;return!1}(e))return;const n=e.value;if(-1===n.indexOf("color("))return;const a=function(e,t,r,n){let a;try{a=u.default(e)}catch(n){t.warn(r,`Failed to parse value '${e}' as a color function. Leaving the original value intact.`)}if(void 0===a)return;a.walk((e=>{e.type&&"function"===e.type&&"color"===e.value&&z(e,t,r,n)}));const o=String(a);return o!==e?o:void 0}(n,e,r,t);void 0!==a&&(t?e.cloneBefore({value:a}):e.value=a)}}};j.postcss=!0;const $=e=>{const t=Object.assign({preserve:!1,enableProgressiveCustomProperties:!0},e);return t.enableProgressiveCustomProperties&&t.preserve?{postcssPlugin:"postcss-color-function",plugins:[n.default(),j(t)]}:j(t)};$.postcss=!0,module.exports=$;
30
+ */function m(e,r){const[t,n,u]=e,[o,a,s]=r,c=t-o,i=n-a,l=u-s;return Math.sqrt(c**2+i**2+l**2)}function h(e,r,t){return function(e,r,t){let n=0,u=e[1];const o=e;for(;u-n>1e-4;){const e=b(r(o));m(v(o),v(t(e)))-.02<1e-4?n=o[1]:u=o[1],o[1]=(u+n)/2}return b(r([...o]))}(e,r,t)}function b(e){return e.map((e=>e<0?0:e>1?1:e))}function y(e){const[r,t,n]=e;return r>=-1e-4&&r<=1.0001&&t>=-1e-4&&t<=1.0001&&n>=-1e-4&&n<=1.0001}function g(e){let r=e.slice();r=r.map((function(e){const r=e<0?-1:1,t=Math.abs(e);return r*Math.pow(t,563/256)})),r=o([[.5766690429101305,.1855582379065463,.1882286462349947],[.29734497525053605,.6273635662554661,.07529145849399788],[.02703136138641234,.07068885253582723,.9913375368376388]],r);let t=r.slice();return t=p(t),t=d(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=i(r),r=s(r),y(r)?b(r):h(t,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=a(e))))))}function w(e){let r=e.slice();r=l(r);let t=r.slice();return t=p(t),t=d(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=i(r),r=s(r),y(r)?b(r):h(t,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=a(e))))))}function x(e){let r=e.slice(),t=r.slice();return t=p(t),t=d(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=i(r),r=s(r),y(r)?b(r):h(t,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=a(e))))))}function M(e){let r=e.slice();r=a(r),r=o([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],r);let t=r.slice();return t=p(t),t=d(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=i(r),r=s(r),y(r)?b(r):h(t,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=a(e))))))}function I(e){let r=e.slice();r=r.map((function(e){const r=e<0?-1:1;return Math.abs(e)<=.03125?e/16:r*Math.pow(e,1.8)})),r=o([[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],r),r=l(r);let t=r.slice();return t=p(t),t=d(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=i(r),r=s(r),y(r)?b(r):h(t,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=a(e))))))}function S(e){let r=e.slice();r=function(e){const r=1.09929682680944;return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n<.08124285829863151?e/4.5:t*Math.pow((n+r-1)/r,1/.45)}))}(r),r=o([[.6369580483012914,.14461690358620832,.1688809751641721],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],r);let t=r.slice();return t=p(t),t=d(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=i(r),r=s(r),y(r)?b(r):h(t,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=a(e))))))}function C(e){let r=e.slice();r=c(r);let t=r.slice();return t=p(t),t=d(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=i(r),r=s(r),y(r)?b(r):h(t,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=a(e))))))}function k(e){let r=e.slice();r=a(r),r=c(r);let t=r.slice();return t=p(t),t=d(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=i(r),r=s(r),y(r)?b(r):h(t,(e=>s(e=i(e=f(e=v(e))))),(e=>d(e=p(e=c(e=a(e))))))}function L(e,r,t,n){const o=u.default.stringify(e),a=e.value,s=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let c,i=null;if("color"===a.toLowerCase()&&(i=function(e){if(!function(e){if(!e||"word"!==e.type)return!1;switch(e.value.toLowerCase()){case"srgb":case"srgb-linear":case"display-p3":case"a98-rgb":case"prophoto-rgb":case"rec2020":case"xyz-d50":case"xyz-d65":case"xyz":return!0;default:return!1}}(e[0]))return null;const r={colorSpace:e[0].value.toLowerCase(),colorSpaceNode:e[0],parameters:[]};for(let t=1;t<e.length;t++)if(A(e[t]))r.slash=e[t];else{if(r.slash&&(P(e[t])||E(e[t])||z(e[t]))){r.alpha=e[t];break}if(!P(e[t]))return null;{const n=u.default.unit(e[t].value);"%"===n.unit&&(n.number=String(parseFloat(n.number)/100),n.unit="",e[t].value=String(n.number)),r.parameters.push({value:n,node:e[t]})}}if(0===r.parameters.length)return r;r.parameters.length<3&&(r.parameters=[...r.parameters,{node:{sourceIndex:0,sourceEndIndex:1,value:"0",type:"word"},value:{number:"0",unit:""}},{node:{sourceIndex:0,sourceEndIndex:1,value:"0",type:"word"},value:{number:"0",unit:""}}]);r.parameters.length>3&&(r.parameters=r.parameters.slice(0,3));return r}(s)),!i)return;switch(e.value="rgb",function(e,r,t){if(!r||!t)return;if(e.value="rgba",r.value=",",r.before="",!function(e){if(!e||"word"!==e.type)return!1;if(!q(e))return!1;const r=u.default.unit(e.value);if(!r)return!1;return!!r.number}(t))return;const n=u.default.unit(t.value);if(!n)return;"%"===n.unit&&(n.number=String(parseFloat(n.number)/100),t.value=String(n.number))}(e,i.slash,i.alpha),i.colorSpace){case"srgb":c=k;break;case"srgb-linear":c=C;break;case"a98-rgb":c=g;break;case"prophoto-rgb":c=I;break;case"display-p3":c=M;break;case"rec2020":c=S;break;case"xyz-d50":c=w;break;case"xyz-d65":case"xyz":c=x;break;default:return}const l=(p=i,p.parameters.map((e=>e.value))).map((e=>parseFloat(e.number)));var p;const f=c(l);!y(l)&&n&&r.warn(t,`"${o}" is out of gamut for "${i.colorSpace}". Given "preserve: true" is set, this will lead to unexpected results in some browsers.`),e.nodes=[{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[0])),type:"word"},{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""},{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[1])),type:"word"},{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""},{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[2])),type:"word"}],i.alpha&&(e.nodes.push({sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.push(i.alpha))}function P(e){if(!e||"word"!==e.type)return!1;if(!q(e))return!1;const r=u.default.unit(e.value);return!!r&&("%"===r.unit||""===r.unit)}function E(e){return e&&"function"===e.type&&"calc"===e.value.toLowerCase()}function z(e){return e&&"function"===e.type&&"var"===e.value.toLowerCase()}function A(e){return e&&"div"===e.type&&"/"===e.value}function q(e){if(!e||!e.value)return!1;try{return!1!==u.default.unit(e.value)}catch(e){return!1}}const F=e=>{const r="preserve"in Object(e)&&Boolean(e.preserve);return{postcssPlugin:"postcss-color-function",Declaration:(e,{result:t})=>{if(function(e){const r=e.parent;if(!r)return!1;const t=e.prop.toLowerCase(),n=r.index(e);for(let e=0;e<n;e++){const n=r.nodes[e];if("decl"===n.type&&n.prop.toLowerCase()===t)return!0}return!1}(e))return;if(function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if("supports"===r.name&&-1!==r.params.indexOf("color("))return!0;r=r.parent}else r=r.parent;return!1}(e))return;const n=e.value;if(!n.toLowerCase().includes("color("))return;const o=function(e,r,t,n){let o;try{o=u.default(e)}catch(n){r.warn(t,`Failed to parse value '${e}' as a color function. Leaving the original value intact.`)}if(void 0===o)return;o.walk((e=>{e.type&&"function"===e.type&&"color"===e.value.toLowerCase()&&L(e,r,t,n)}));const a=String(o);return a!==e?a:void 0}(n,e,t,r);void 0!==o&&(e.cloneBefore({value:o}),r||e.remove())}}};F.postcss=!0;const j=e=>{const r=Object.assign({preserve:!1,enableProgressiveCustomProperties:!0},e);return r.enableProgressiveCustomProperties&&r.preserve?{postcssPlugin:"postcss-color-function",plugins:[n.default(),F(r)]}:F(r)};j.postcss=!0,module.exports=j;
package/dist/index.mjs CHANGED
@@ -11,7 +11,7 @@ import e from"@csstools/postcss-progressive-custom-properties";import r from"pos
11
11
  *
12
12
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/multiply-matrices.js
13
13
  */
14
- function t(e,r){const t=e.length;let n,u;n=Array.isArray(e[0])?e:[e],Array.isArray(r[0])||(u=r.map((e=>[e])));const o=u[0].length,a=u[0].map(((e,r)=>u.map((e=>e[r]))));let s=n.map((e=>a.map((r=>Array.isArray(e)?e.reduce(((e,t,n)=>e+t*(r[n]||0)),0):r.reduce(((r,t)=>r+t*e),0)))));return 1===t&&(s=s[0]),1===o?s.map((e=>e[0])):s}
14
+ function t(e,r){const t=e.length;let n,o;n=Array.isArray(e[0])?e:[e],Array.isArray(r[0])||(o=r.map((e=>[e])));const u=o[0].length,a=o[0].map(((e,r)=>o.map((e=>e[r]))));let s=n.map((e=>a.map((r=>Array.isArray(e)?e.reduce(((e,t,n)=>e+t*(r[n]||0)),0):r.reduce(((r,t)=>r+t*e),0)))));return 1===t&&(s=s[0]),1===u?s.map((e=>e[0])):s}
15
15
  /**
16
16
  * @license W3C
17
17
  * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
@@ -19,7 +19,7 @@ function t(e,r){const t=e.length;let n,u;n=Array.isArray(e[0])?e:[e],Array.isArr
19
19
  * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).
20
20
  *
21
21
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js
22
- */function n(e){return e.map((function(e){const r=e<0?-1:1,t=Math.abs(e);return t<.04045?e/12.92:r*Math.pow((t+.055)/1.055,2.4)}))}function u(e){return e.map((function(e){const r=e<0?-1:1,t=Math.abs(e);return t>.0031308?r*(1.055*Math.pow(t,1/2.4)-.055):12.92*e}))}function o(e){return t([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function a(e){return t([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function s(e){return t([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],e)}function c(e){const r=t([[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],e);return t([[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],r.map((e=>Math.cbrt(e))))}function i(e){const r=t([[.9999999984505198,.39633779217376786,.2158037580607588],[1.0000000088817609,-.10556134232365635,-.06385417477170591],[1.0000000546724108,-.08948418209496575,-1.2914855378640917]],e);return t([[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],r.map((e=>e**3)))}function l(e){const r=180*Math.atan2(e[2],e[1])/Math.PI;return[e[0],Math.sqrt(e[1]**2+e[2]**2),r>=0?r:r+360]}function p(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}
22
+ */function n(e){return e.map((function(e){const r=e<0?-1:1,t=Math.abs(e);return t<.04045?e/12.92:r*Math.pow((t+.055)/1.055,2.4)}))}function o(e){return e.map((function(e){const r=e<0?-1:1,t=Math.abs(e);return t>.0031308?r*(1.055*Math.pow(t,1/2.4)-.055):12.92*e}))}function u(e){return t([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function a(e){return t([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function s(e){return t([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],e)}function c(e){const r=t([[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],e);return t([[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],r.map((e=>Math.cbrt(e))))}function i(e){const r=t([[.9999999984505198,.39633779217376786,.2158037580607588],[1.0000000088817609,-.10556134232365635,-.06385417477170591],[1.0000000546724108,-.08948418209496575,-1.2914855378640917]],e);return t([[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],r.map((e=>e**3)))}function l(e){const r=180*Math.atan2(e[2],e[1])/Math.PI;return[e[0],Math.sqrt(e[1]**2+e[2]**2),r>=0?r:r+360]}function p(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}
23
23
  /**
24
24
  * @license W3C
25
25
  * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
@@ -27,4 +27,4 @@ function t(e,r){const t=e.length;let n,u;n=Array.isArray(e[0])?e:[e],Array.isArr
27
27
  * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).
28
28
  *
29
29
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js
30
- */function f(e,r){const[t,n,u]=e,[o,a,s]=r,c=t-o,i=n-a,l=u-s;return Math.sqrt(c**2+i**2+l**2)}function d(e,r,t){return function(e,r,t){let n=0,u=e[1];const o=e;for(;u-n>1e-4;){f(o,t(v(r(o))))-.02<1e-4?n=o[1]:u=o[1],o[1]=(u+n)/2}return v(r([...o]))}(e,r,t)}function v(e){return e.map((e=>e<0?0:e>1?1:e))}function m(e){const[r,t,n]=e;return r>=-1e-4&&r<=1.0001&&t>=-1e-4&&t<=1.0001&&n>=-1e-4&&n<=1.0001}function h(e){let r=e.slice();r=r.map((function(e){const r=e<0?-1:1,t=Math.abs(e);return r*Math.pow(t,563/256)})),r=t([[.5766690429101305,.1855582379065463,.1882286462349947],[.29734497525053605,.6273635662554661,.07529145849399788],[.02703136138641234,.07068885253582723,.9913375368376388]],r);let s=r.slice();return s=c(s),s=l(s),r=a(r),r=u(r),m(r)?v(r):d(s,(e=>u(e=a(e=i(e=p(e))))),(e=>l(e=c(e=o(e=n(e))))))}function b(e){let r=e.slice();r=s(r);let t=r.slice();return t=c(t),t=l(t),r=a(r),r=u(r),m(r)?v(r):d(t,(e=>u(e=a(e=i(e=p(e))))),(e=>l(e=c(e=o(e=n(e))))))}function y(e){let r=e.slice(),t=r.slice();return t=c(t),t=l(t),r=a(r),r=u(r),m(r)?v(r):d(t,(e=>u(e=a(e=i(e=p(e))))),(e=>l(e=c(e=o(e=n(e))))))}function g(e){let r=e.slice();r=n(r),r=t([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],r);let s=r.slice();return s=c(s),s=l(s),r=a(r),r=u(r),m(r)?v(r):d(s,(e=>u(e=a(e=i(e=p(e))))),(e=>l(e=c(e=o(e=n(e))))))}function x(e){let r=e.slice();r=r.map((function(e){const r=e<0?-1:1;return Math.abs(e)<=.03125?e/16:r*Math.pow(e,1.8)})),r=t([[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],r),r=s(r);let f=r.slice();return f=c(f),f=l(f),r=a(r),r=u(r),m(r)?v(r):d(f,(e=>u(e=a(e=i(e=p(e))))),(e=>l(e=c(e=o(e=n(e))))))}function M(e){let r=e.slice();r=function(e){const r=1.09929682680944;return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n<.08124285829863151?e/4.5:t*Math.pow((n+r-1)/r,1/.45)}))}(r),r=t([[.6369580483012914,.14461690358620832,.1688809751641721],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],r);let s=r.slice();return s=c(s),s=l(s),r=a(r),r=u(r),m(r)?v(r):d(s,(e=>u(e=a(e=i(e=p(e))))),(e=>l(e=c(e=o(e=n(e))))))}function w(e){let r=e.slice();r=o(r);let t=r.slice();return t=c(t),t=l(t),r=a(r),r=u(r),m(r)?v(r):d(t,(e=>u(e=a(e=i(e=p(e))))),(e=>l(e=c(e=o(e=n(e))))))}function I(e){let r=e.slice();r=n(r),r=o(r);let t=r.slice();return t=c(t),t=l(t),r=a(r),r=u(r),m(r)?v(r):d(t,(e=>u(e=a(e=i(e=p(e))))),(e=>l(e=c(e=o(e=n(e))))))}function S(e,t,n,u){const o=r.stringify(e),a=e.value,s=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let c,i=null;if("color"===a&&(i=function(e){if(!function(e){if(!e||"word"!==e.type)return!1;switch(e.value){case"srgb":case"srgb-linear":case"display-p3":case"a98-rgb":case"prophoto-rgb":case"rec2020":case"xyz-d50":case"xyz-d65":case"xyz":return!0;default:return!1}}(e[0]))return null;const t={colorSpace:e[0].value,colorSpaceNode:e[0],parameters:[]};for(let n=1;n<e.length;n++)if(E(e[n]))t.slash=e[n];else{if(t.slash&&(k(e[n])||P(e[n])||z(e[n]))){t.alpha=e[n];break}if(!t.colorSpace.startsWith("xyz")&&k(e[n])){const u=r.unit(e[n].value);"%"===u.unit&&(u.number=String(parseFloat(u.number)/100),u.unit="",e[n].value=String(u.number)),t.parameters.push({value:u,node:e[n]})}else{if(!t.colorSpace.startsWith("xyz")||!k(e[n]))return null;{const u=r.unit(e[n].value);if(""!==u.unit)return null;t.parameters.push({value:u,node:e[n]})}}}if(0===t.parameters.length)return t;t.parameters.length<3&&(t.parameters=[...t.parameters,{node:{sourceIndex:0,sourceEndIndex:1,value:"0",type:"word"},value:{number:"0",unit:""}},{node:{sourceIndex:0,sourceEndIndex:1,value:"0",type:"word"},value:{number:"0",unit:""}}]);t.parameters.length>3&&(t.parameters=t.parameters.slice(0,3));return t}(s)),!i)return;switch(e.value="rgb",function(e,t,n){if(!t||!n)return;if(e.value="rgba",t.value=",",t.before="",!function(e){if(!e||"word"!==e.type)return!1;if(!A(e))return!1;const t=r.unit(e.value);if(!t)return!1;return!!t.number}(n))return;const u=r.unit(n.value);if(!u)return;"%"===u.unit&&(u.number=String(parseFloat(u.number)/100),n.value=String(u.number))}(e,i.slash,i.alpha),i.colorSpace){case"srgb":c=I;break;case"srgb-linear":c=w;break;case"a98-rgb":c=h;break;case"prophoto-rgb":c=x;break;case"display-p3":c=g;break;case"rec2020":c=M;break;case"xyz-d50":c=b;break;case"xyz-d65":case"xyz":c=y;break;default:return}const l=(p=i,p.parameters.map((e=>e.value))).map((e=>parseFloat(e.number)));var p;const f=c(l);!m(l)&&u&&t.warn(n,`"${o}" is out of gamut for "${i.colorSpace}". Given "preserve: true" is set, this will lead to unexpected results in some browsers.`),e.nodes=[{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[0])),type:"word"},{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""},{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[1])),type:"word"},{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""},{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[2])),type:"word"}],i.alpha&&(e.nodes.push({sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.push(i.alpha))}function k(e){if(!e||"word"!==e.type)return!1;if(!A(e))return!1;const t=r.unit(e.value);return!!t&&("%"===t.unit||""===t.unit)}function P(e){return e&&"function"===e.type&&"calc"===e.value}function z(e){return e&&"function"===e.type&&"var"===e.value}function E(e){return e&&"div"===e.type&&"/"===e.value}function A(e){if(!e||!e.value)return!1;try{return!1!==r.unit(e.value)}catch(e){return!1}}const F=e=>{const t="preserve"in Object(e)&&Boolean(e.preserve);return{postcssPlugin:"postcss-color-function",Declaration:(e,{result:n})=>{if(function(e){const r=e.parent;if(!r)return!1;const t=r.index(e);for(let n=0;n<t;n++){const t=r.nodes[n];if("decl"===t.type&&t.prop===e.prop)return!0}return!1}(e))return;if(function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if("supports"===r.name&&-1!==r.params.indexOf("color("))return!0;r=r.parent}else r=r.parent;return!1}(e))return;const u=e.value;if(-1===u.indexOf("color("))return;const o=function(e,t,n,u){let o;try{o=r(e)}catch(r){t.warn(n,`Failed to parse value '${e}' as a color function. Leaving the original value intact.`)}if(void 0===o)return;o.walk((e=>{e.type&&"function"===e.type&&"color"===e.value&&S(e,t,n,u)}));const a=String(o);return a!==e?a:void 0}(u,e,n,t);void 0!==o&&(t?e.cloneBefore({value:o}):e.value=o)}}};F.postcss=!0;const O=r=>{const t=Object.assign({preserve:!1,enableProgressiveCustomProperties:!0},r);return t.enableProgressiveCustomProperties&&t.preserve?{postcssPlugin:"postcss-color-function",plugins:[e(),F(t)]}:F(t)};O.postcss=!0;export{O as default};
30
+ */function f(e,r){const[t,n,o]=e,[u,a,s]=r,c=t-u,i=n-a,l=o-s;return Math.sqrt(c**2+i**2+l**2)}function d(e,r,t){return function(e,r,t){let n=0,o=e[1];const u=e;for(;o-n>1e-4;){const e=v(r(u));f(p(u),p(t(e)))-.02<1e-4?n=u[1]:o=u[1],u[1]=(o+n)/2}return v(r([...u]))}(e,r,t)}function v(e){return e.map((e=>e<0?0:e>1?1:e))}function m(e){const[r,t,n]=e;return r>=-1e-4&&r<=1.0001&&t>=-1e-4&&t<=1.0001&&n>=-1e-4&&n<=1.0001}function h(e){let r=e.slice();r=r.map((function(e){const r=e<0?-1:1,t=Math.abs(e);return r*Math.pow(t,563/256)})),r=t([[.5766690429101305,.1855582379065463,.1882286462349947],[.29734497525053605,.6273635662554661,.07529145849399788],[.02703136138641234,.07068885253582723,.9913375368376388]],r);let s=r.slice();return s=c(s),s=l(s),s[0]<1e-6&&(s=[0,0,0]),s[0]>.999999&&(s=[1,0,0]),r=a(r),r=o(r),m(r)?v(r):d(s,(e=>o(e=a(e=i(e=p(e))))),(e=>l(e=c(e=u(e=n(e))))))}function b(e){let r=e.slice();r=s(r);let t=r.slice();return t=c(t),t=l(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=a(r),r=o(r),m(r)?v(r):d(t,(e=>o(e=a(e=i(e=p(e))))),(e=>l(e=c(e=u(e=n(e))))))}function y(e){let r=e.slice(),t=r.slice();return t=c(t),t=l(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=a(r),r=o(r),m(r)?v(r):d(t,(e=>o(e=a(e=i(e=p(e))))),(e=>l(e=c(e=u(e=n(e))))))}function g(e){let r=e.slice();r=n(r),r=t([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],r);let s=r.slice();return s=c(s),s=l(s),s[0]<1e-6&&(s=[0,0,0]),s[0]>.999999&&(s=[1,0,0]),r=a(r),r=o(r),m(r)?v(r):d(s,(e=>o(e=a(e=i(e=p(e))))),(e=>l(e=c(e=u(e=n(e))))))}function w(e){let r=e.slice();r=r.map((function(e){const r=e<0?-1:1;return Math.abs(e)<=.03125?e/16:r*Math.pow(e,1.8)})),r=t([[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],r),r=s(r);let f=r.slice();return f=c(f),f=l(f),f[0]<1e-6&&(f=[0,0,0]),f[0]>.999999&&(f=[1,0,0]),r=a(r),r=o(r),m(r)?v(r):d(f,(e=>o(e=a(e=i(e=p(e))))),(e=>l(e=c(e=u(e=n(e))))))}function x(e){let r=e.slice();r=function(e){const r=1.09929682680944;return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n<.08124285829863151?e/4.5:t*Math.pow((n+r-1)/r,1/.45)}))}(r),r=t([[.6369580483012914,.14461690358620832,.1688809751641721],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],r);let s=r.slice();return s=c(s),s=l(s),s[0]<1e-6&&(s=[0,0,0]),s[0]>.999999&&(s=[1,0,0]),r=a(r),r=o(r),m(r)?v(r):d(s,(e=>o(e=a(e=i(e=p(e))))),(e=>l(e=c(e=u(e=n(e))))))}function M(e){let r=e.slice();r=u(r);let t=r.slice();return t=c(t),t=l(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=a(r),r=o(r),m(r)?v(r):d(t,(e=>o(e=a(e=i(e=p(e))))),(e=>l(e=c(e=u(e=n(e))))))}function I(e){let r=e.slice();r=n(r),r=u(r);let t=r.slice();return t=c(t),t=l(t),t[0]<1e-6&&(t=[0,0,0]),t[0]>.999999&&(t=[1,0,0]),r=a(r),r=o(r),m(r)?v(r):d(t,(e=>o(e=a(e=i(e=p(e))))),(e=>l(e=c(e=u(e=n(e))))))}function S(e,t,n,o){const u=r.stringify(e),a=e.value,s=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let c,i=null;if("color"===a.toLowerCase()&&(i=function(e){if(!function(e){if(!e||"word"!==e.type)return!1;switch(e.value.toLowerCase()){case"srgb":case"srgb-linear":case"display-p3":case"a98-rgb":case"prophoto-rgb":case"rec2020":case"xyz-d50":case"xyz-d65":case"xyz":return!0;default:return!1}}(e[0]))return null;const t={colorSpace:e[0].value.toLowerCase(),colorSpaceNode:e[0],parameters:[]};for(let n=1;n<e.length;n++)if(P(e[n]))t.slash=e[n];else{if(t.slash&&(C(e[n])||k(e[n])||L(e[n]))){t.alpha=e[n];break}if(!C(e[n]))return null;{const o=r.unit(e[n].value);"%"===o.unit&&(o.number=String(parseFloat(o.number)/100),o.unit="",e[n].value=String(o.number)),t.parameters.push({value:o,node:e[n]})}}if(0===t.parameters.length)return t;t.parameters.length<3&&(t.parameters=[...t.parameters,{node:{sourceIndex:0,sourceEndIndex:1,value:"0",type:"word"},value:{number:"0",unit:""}},{node:{sourceIndex:0,sourceEndIndex:1,value:"0",type:"word"},value:{number:"0",unit:""}}]);t.parameters.length>3&&(t.parameters=t.parameters.slice(0,3));return t}(s)),!i)return;switch(e.value="rgb",function(e,t,n){if(!t||!n)return;if(e.value="rgba",t.value=",",t.before="",!function(e){if(!e||"word"!==e.type)return!1;if(!E(e))return!1;const t=r.unit(e.value);if(!t)return!1;return!!t.number}(n))return;const o=r.unit(n.value);if(!o)return;"%"===o.unit&&(o.number=String(parseFloat(o.number)/100),n.value=String(o.number))}(e,i.slash,i.alpha),i.colorSpace){case"srgb":c=I;break;case"srgb-linear":c=M;break;case"a98-rgb":c=h;break;case"prophoto-rgb":c=w;break;case"display-p3":c=g;break;case"rec2020":c=x;break;case"xyz-d50":c=b;break;case"xyz-d65":case"xyz":c=y;break;default:return}const l=(p=i,p.parameters.map((e=>e.value))).map((e=>parseFloat(e.number)));var p;const f=c(l);!m(l)&&o&&t.warn(n,`"${u}" is out of gamut for "${i.colorSpace}". Given "preserve: true" is set, this will lead to unexpected results in some browsers.`),e.nodes=[{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[0])),type:"word"},{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""},{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[1])),type:"word"},{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""},{sourceIndex:0,sourceEndIndex:1,value:String(Math.round(255*f[2])),type:"word"}],i.alpha&&(e.nodes.push({sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.push(i.alpha))}function C(e){if(!e||"word"!==e.type)return!1;if(!E(e))return!1;const t=r.unit(e.value);return!!t&&("%"===t.unit||""===t.unit)}function k(e){return e&&"function"===e.type&&"calc"===e.value.toLowerCase()}function L(e){return e&&"function"===e.type&&"var"===e.value.toLowerCase()}function P(e){return e&&"div"===e.type&&"/"===e.value}function E(e){if(!e||!e.value)return!1;try{return!1!==r.unit(e.value)}catch(e){return!1}}const z=e=>{const t="preserve"in Object(e)&&Boolean(e.preserve);return{postcssPlugin:"postcss-color-function",Declaration:(e,{result:n})=>{if(function(e){const r=e.parent;if(!r)return!1;const t=e.prop.toLowerCase(),n=r.index(e);for(let e=0;e<n;e++){const n=r.nodes[e];if("decl"===n.type&&n.prop.toLowerCase()===t)return!0}return!1}(e))return;if(function(e){let r=e.parent;for(;r;)if("atrule"===r.type){if("supports"===r.name&&-1!==r.params.indexOf("color("))return!0;r=r.parent}else r=r.parent;return!1}(e))return;const o=e.value;if(!o.toLowerCase().includes("color("))return;const u=function(e,t,n,o){let u;try{u=r(e)}catch(r){t.warn(n,`Failed to parse value '${e}' as a color function. Leaving the original value intact.`)}if(void 0===u)return;u.walk((e=>{e.type&&"function"===e.type&&"color"===e.value.toLowerCase()&&S(e,t,n,o)}));const a=String(u);return a!==e?a:void 0}(o,e,n,t);void 0!==u&&(e.cloneBefore({value:u}),t||e.remove())}}};z.postcss=!0;const A=r=>{const t=Object.assign({preserve:!1,enableProgressiveCustomProperties:!0},r);return t.enableProgressiveCustomProperties&&t.preserve?{postcssPlugin:"postcss-color-function",plugins:[e(),z(t)]}:z(t)};A.postcss=!0;export{A as default};
package/package.json CHANGED
@@ -1,73 +1,85 @@
1
1
  {
2
- "name": "@csstools/postcss-color-function",
3
- "version": "1.0.2",
4
- "description": "Use the color() function in CSS",
5
- "author": "Jonathan Neal <jonathantneal@hotmail.com>",
6
- "license": "CC0-1.0",
7
- "homepage": "https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-function#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
- "exports": {
13
- ".": {
14
- "import": "./dist/index.mjs",
15
- "require": "./dist/index.cjs",
16
- "default": "./dist/index.mjs"
17
- }
18
- },
19
- "files": [
20
- "CHANGELOG.md",
21
- "LICENSE.md",
22
- "README.md",
23
- "dist"
24
- ],
25
- "scripts": {
26
- "build": "rollup -c ../../rollup/default.js",
27
- "clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true });\"",
28
- "lint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern",
29
- "prepublishOnly": "npm run clean && npm run build && npm run test",
30
- "stryker": "stryker run --logLevel error",
31
- "test": "node .tape.mjs && npm run test:exports",
32
- "test:rewrite-expects": "REWRITE_EXPECTS=true node .tape.mjs",
33
- "test:exports": "node ./test/_import.mjs && node ./test/_require.cjs"
34
- },
35
- "engines": {
36
- "node": "^12 || ^14 || >=16"
37
- },
38
- "dependencies": {
39
- "@csstools/postcss-progressive-custom-properties": "^1.1.0",
40
- "postcss-value-parser": "^4.2.0"
41
- },
42
- "devDependencies": {
43
- "postcss-lab-function": "^4.0.3"
44
- },
45
- "peerDependencies": {
46
- "postcss": "^8.4"
47
- },
48
- "keywords": [
49
- "postcss",
50
- "css",
51
- "postcss-plugin",
52
- "color",
53
- "colors",
54
- "rgb",
55
- "rgba",
56
- "color",
57
- "display-p3",
58
- "prophoto-rgb",
59
- "xyz",
60
- "rec2020",
61
- "srgb-linear",
62
- "design",
63
- "syntax"
64
- ],
65
- "repository": {
66
- "type": "git",
67
- "url": "https://github.com/csstools/postcss-plugins.git",
68
- "directory": "plugins/postcss-color-function"
69
- },
70
- "volta": {
71
- "extends": "../../package.json"
72
- }
2
+ "name": "@csstools/postcss-color-function",
3
+ "description": "Use the color() function in CSS",
4
+ "version": "1.1.1",
5
+ "author": "Jonathan Neal <jonathantneal@hotmail.com>",
6
+ "license": "CC0-1.0",
7
+ "funding": {
8
+ "type": "opencollective",
9
+ "url": "https://opencollective.com/csstools"
10
+ },
11
+ "engines": {
12
+ "node": "^12 || ^14 || >=16"
13
+ },
14
+ "main": "dist/index.cjs",
15
+ "module": "dist/index.mjs",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "import": "./dist/index.mjs",
20
+ "require": "./dist/index.cjs",
21
+ "default": "./dist/index.mjs"
22
+ }
23
+ },
24
+ "files": [
25
+ "CHANGELOG.md",
26
+ "LICENSE.md",
27
+ "README.md",
28
+ "dist"
29
+ ],
30
+ "dependencies": {
31
+ "@csstools/postcss-progressive-custom-properties": "^1.1.0",
32
+ "postcss-value-parser": "^4.2.0"
33
+ },
34
+ "peerDependencies": {
35
+ "postcss": "^8.2"
36
+ },
37
+ "devDependencies": {
38
+ "postcss-lab-function": "^4.0.3"
39
+ },
40
+ "scripts": {
41
+ "build": "rollup -c ../../rollup/default.js",
42
+ "clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true });\"",
43
+ "docs": "node ../../.github/bin/generate-docs/install.mjs && node ../../.github/bin/generate-docs/readme.mjs",
44
+ "lint": "npm run lint:eslint && npm run lint:package-json",
45
+ "lint:eslint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern",
46
+ "lint:package-json": "node ../../.github/bin/format-package-json.mjs",
47
+ "prepublishOnly": "npm run clean && npm run build && npm run test",
48
+ "test": "node .tape.mjs && npm run test:exports",
49
+ "test:exports": "node ./test/_import.mjs && node ./test/_require.cjs",
50
+ "test:rewrite-expects": "REWRITE_EXPECTS=true node .tape.mjs"
51
+ },
52
+ "homepage": "https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-color-function#readme",
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "https://github.com/csstools/postcss-plugins.git",
56
+ "directory": "plugins/postcss-color-function"
57
+ },
58
+ "bugs": "https://github.com/csstools/postcss-plugins/issues",
59
+ "keywords": [
60
+ "color",
61
+ "color",
62
+ "colors",
63
+ "css",
64
+ "design",
65
+ "display-p3",
66
+ "postcss",
67
+ "postcss-plugin",
68
+ "prophoto-rgb",
69
+ "rec2020",
70
+ "rgb",
71
+ "rgba",
72
+ "srgb-linear",
73
+ "syntax",
74
+ "xyz"
75
+ ],
76
+ "csstools": {
77
+ "cssdbId": "color-function",
78
+ "exportName": "postcssColorFunction",
79
+ "humanReadableName": "PostCSS Color Function",
80
+ "specUrl": "https://www.w3.org/TR/css-color-4/#funcdef-color"
81
+ },
82
+ "volta": {
83
+ "extends": "../../package.json"
84
+ }
73
85
  }