postcss-lab-function 4.2.1 → 5.0.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 CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changes to PostCSS Lab Function
2
2
 
3
+ ### 5.0.0 (January 24, 2023)
4
+
5
+ - Updated: Support for Node v14+ (major).
6
+
3
7
  ### 4.2.1 (July 8, 2022)
4
8
 
5
9
  - Fix case insensitive matching.
package/README.md CHANGED
@@ -53,8 +53,8 @@ postcss([
53
53
  [PostCSS Lab Function] runs in all Node environments, with special
54
54
  instructions for:
55
55
 
56
- | [Node](INSTALL.md#node) | [PostCSS CLI](INSTALL.md#postcss-cli) | [Webpack](INSTALL.md#webpack) | [Create React App](INSTALL.md#create-react-app) | [Gulp](INSTALL.md#gulp) | [Grunt](INSTALL.md#grunt) |
57
- | --- | --- | --- | --- | --- | --- |
56
+ | [Node](INSTALL.md#node) | [PostCSS CLI](INSTALL.md#postcss-cli) | [Webpack](INSTALL.md#webpack) | [Gulp](INSTALL.md#gulp) | [Grunt](INSTALL.md#grunt) |
57
+ | --- | --- | --- | --- | --- |
58
58
 
59
59
  ## Options
60
60
 
@@ -1,3 +1,3 @@
1
- declare type color = [number, number, number];
1
+ type color = [number, number, number];
2
2
  export declare function labToDisplayP3(labRaw: color): [color, boolean];
3
3
  export {};
@@ -1,3 +1,3 @@
1
- declare type color = [number, number, number];
1
+ type color = [number, number, number];
2
2
  export declare function labToSRgb(labRaw: color): color;
3
3
  export {};
@@ -1,3 +1,3 @@
1
- declare type color = [number, number, number];
1
+ type color = [number, number, number];
2
2
  export declare function lchToDisplayP3(lchRaw: color): [color, boolean];
3
3
  export {};
@@ -1,3 +1,3 @@
1
- declare type color = [number, number, number];
1
+ type color = [number, number, number];
2
2
  export declare function lchToSRgb(lchRaw: color): color;
3
3
  export {};
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js
8
8
  */
9
- declare type color = [number, number, number];
9
+ type color = [number, number, number];
10
10
  export declare const D50: number[];
11
11
  export declare const D65: number[];
12
12
  export declare function lin_sRGB(RGB: color): color;
@@ -6,6 +6,6 @@
6
6
  *
7
7
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js
8
8
  */
9
- declare type color = [number, number, number];
9
+ type color = [number, number, number];
10
10
  export declare function deltaEOK(reference: color, sample: color): number;
11
11
  export {};
@@ -1,4 +1,4 @@
1
- declare type color = [number, number, number];
1
+ type color = [number, number, number];
2
2
  export declare function mapGamut(startOKLCH: color, toDestination: (x: color) => color, fromDestination: (x: color) => color): color;
3
3
  export declare function clip(color: color): color;
4
4
  export declare function inGamut(x: color): boolean;
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/utilities.js
8
8
  */
9
- declare type color = [number, number, number];
9
+ type color = [number, number, number];
10
10
  export declare function sRGB_to_luminance(RGB: color): number;
11
11
  export declare function contrast(RGB1: color, RGB2: color): number;
12
12
  export declare function sRGB_to_LCH(RGB: color): 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 n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=n(e),u=n(t);
1
+ "use strict";var e=require("@csstools/postcss-progressive-custom-properties"),t=require("postcss-value-parser");function hasFallback(e){const t=e.parent;if(!t)return!1;const n=t.index(e);for(let a=0;a<n;a++){const n=t.nodes[a];if("decl"===n.type&&n.prop.toLowerCase()===e.prop.toLowerCase())return!0}return!1}function hasSupportsAtRuleAncestor(e){let t=e.parent;for(;t;)if("atrule"===t.type){if("supports"===t.name.toLowerCase()){if(-1!==t.params.toLowerCase().indexOf("lab("))return!0;if(-1!==t.params.toLowerCase().indexOf("lch("))return!0}t=t.parent}else t=t.parent;return!1}
2
2
  /**
3
3
  * Simple matrix (and vector) multiplication
4
4
  * Warning: No error handling for incompatible dimensions!
@@ -10,8 +10,7 @@
10
10
  * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/multiply-matrices.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).
11
11
  *
12
12
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/multiply-matrices.js
13
- */
14
- function a(e,t){const n=e.length;let r,u;r=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=r.map((e=>o.map((t=>Array.isArray(e)?e.reduce(((e,n,r)=>e+n*(t[r]||0)),0):t.reduce(((t,n)=>t+n*e),0)))));return 1===n&&(s=s[0]),1===a?s.map((e=>e[0])):s}
13
+ */function multiplyMatrices(e,t){const n=e.length;let a,r;a=Array.isArray(e[0])?e:[e],Array.isArray(t[0])||(r=t.map((e=>[e])));const o=r[0].length,u=r[0].map(((e,t)=>r.map((e=>e[t]))));let i=a.map((e=>u.map((t=>Array.isArray(e)?e.reduce(((e,n,a)=>e+n*(t[a]||0)),0):t.reduce(((t,n)=>t+n*e),0)))));return 1===n&&(i=i[0]),1===o?i.map((e=>e[0])):i}
15
14
  /**
16
15
  * @license W3C
17
16
  * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
@@ -19,7 +18,7 @@ function a(e,t){const n=e.length;let r,u;r=Array.isArray(e[0])?e:[e],Array.isArr
19
18
  * @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
19
  *
21
20
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js
22
- */const o=[.3457/.3585,1,.2958/.3585];function s(e){return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n<.04045?e/12.92:t*Math.pow((n+.055)/1.055,2.4)}))}function i(e){return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n>.0031308?t*(1.055*Math.pow(n,1/2.4)-.055):12.92*e}))}function l(e){return a([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function c(e){return a([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function f(e){return s(e)}function p(e){return i(e)}function d(e){return a([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],e)}function h(e){return a([[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],e)}function m(e){return a([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],e)}function v(e){const t=24389/27,n=216/24389,r=[];r[1]=(e[0]+16)/116,r[0]=e[1]/500+r[1],r[2]=r[1]-e[2]/200;return[Math.pow(r[0],3)>n?Math.pow(r[0],3):(116*r[0]-16)/t,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/t,Math.pow(r[2],3)>n?Math.pow(r[2],3):(116*r[2]-16)/t].map(((e,t)=>e*o[t]))}function b(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}function y(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 M(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 g(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 w(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}
21
+ */const n=[.3457/.3585,1,.2958/.3585];function lin_sRGB(e){return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n<.04045?e/12.92:t*Math.pow((n+.055)/1.055,2.4)}))}function gam_sRGB(e){return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n>.0031308?t*(1.055*Math.pow(n,1/2.4)-.055):12.92*e}))}function lin_sRGB_to_XYZ(e){return multiplyMatrices([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function XYZ_to_lin_sRGB(e){return multiplyMatrices([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function lin_P3(e){return lin_sRGB(e)}function gam_P3(e){return gam_sRGB(e)}function lin_P3_to_XYZ(e){return multiplyMatrices([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],e)}function XYZ_to_lin_P3(e){return multiplyMatrices([[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],e)}function D50_to_D65(e){return multiplyMatrices([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],e)}function Lab_to_XYZ(e){const t=24389/27,a=216/24389,r=[];r[1]=(e[0]+16)/116,r[0]=e[1]/500+r[1],r[2]=r[1]-e[2]/200;return[Math.pow(r[0],3)>a?Math.pow(r[0],3):(116*r[0]-16)/t,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/t,Math.pow(r[2],3)>a?Math.pow(r[2],3):(116*r[2]-16)/t].map(((e,t)=>e*n[t]))}function LCH_to_Lab(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}function XYZ_to_OKLab(e){const t=multiplyMatrices([[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],e);return multiplyMatrices([[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],t.map((e=>Math.cbrt(e))))}function OKLab_to_XYZ(e){const t=multiplyMatrices([[.9999999984505198,.39633779217376786,.2158037580607588],[1.0000000088817609,-.10556134232365635,-.06385417477170591],[1.0000000546724108,-.08948418209496575,-1.2914855378640917]],e);return multiplyMatrices([[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],t.map((e=>e**3)))}function OKLab_to_OKLCH(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 OKLCH_to_OKLab(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}
23
22
  /**
24
23
  * @license W3C
25
24
  * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
@@ -27,4 +26,4 @@ function a(e,t){const n=e.length;let r,u;r=Array.isArray(e[0])?e:[e],Array.isArr
27
26
  * @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
27
  *
29
28
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js
30
- */function x(e,t){const[n,r,u]=e,[a,o,s]=t,i=n-a,l=r-o,c=u-s;return Math.sqrt(i**2+l**2+c**2)}function F(e,t,n){return function(e,t,n){let r=0,u=e[1];const a=e;for(;u-r>1e-4;){const e=P(t(a));x(w(a),w(n(e)))-.02<1e-4?r=a[1]:u=a[1],a[1]=(u+r)/2}return P(t([...a]))}(e,t,n)}function P(e){return e.map((e=>e<0?0:e>1?1:e))}function C(e){const[t,n,r]=e;return t>=-1e-4&&t<=1.0001&&n>=-1e-4&&n<=1.0001&&r>=-1e-4&&r<=1.0001}function L(e){const[t,n,r]=e;let u=[Math.max(t,0),Math.min(Math.max(n,-160),160),Math.min(Math.max(r,-160),160)];u=v(u);let a=u.slice();return a=m(a),a=y(a),a=g(a),a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),u=m(u),u=h(u),u=p(u),C(u)?[P(u),!0]:[F(a,(e=>p(e=h(e=M(e=w(e))))),(e=>g(e=y(e=d(e=f(e)))))),!1]}function I(e){const[t,n,r]=e;let u=[Math.max(t,0),Math.min(Math.max(n,-160),160),Math.min(Math.max(r,-160),160)];u=v(u);let a=u.slice();return a=m(a),a=y(a),a=g(a),a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),u=m(u),u=c(u),u=i(u),C(u)?P(u).map((e=>Math.round(255*e))):F(a,(e=>i(e=c(e=M(e=w(e))))),(e=>g(e=y(e=l(e=s(e)))))).map((e=>Math.round(255*e)))}function N(e){const[t,n,r]=e;let u=[Math.max(t,0),n,r%360];u=b(u),u=v(u);let a=u.slice();return a=m(a),a=y(a),a=g(a),a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),u=m(u),u=h(u),u=p(u),C(u)?[P(u),!0]:[F(a,(e=>p(e=h(e=M(e=w(e))))),(e=>g(e=y(e=d(e=f(e)))))),!1]}function S(e){const[t,n,r]=e;let u=[Math.max(t,0),n,r%360];u=b(u),u=v(u);let a=u.slice();return a=m(a),a=y(a),a=g(a),a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),u=m(u),u=c(u),u=i(u),C(u)?P(u).map((e=>Math.round(255*e))):F(a,(e=>i(e=c(e=M(e=w(e))))),(e=>g(e=y(e=l(e=s(e)))))).map((e=>Math.round(255*e)))}function O(e){const t=e.value.toLowerCase(),n=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let r=null;if("lab"===t?r=k(n):"lch"===t&&(r=j(n)),!r)return;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(!H(e))return!1;const t=u.default.unit(e.value);if(!t)return!1;return!!t.number}(n))return;const r=u.default.unit(n.value);if(!r)return;"%"===r.unit&&(r.number=String(parseFloat(r.number)/100),n.value=String(r.number))}(e,r.slash,r.alpha);const[a,o,s]=D(r),[i,l,c]=G(r),f=("lab"===t?I:S)([i.number,l.number,c.number].map((e=>parseFloat(e))));e.nodes.splice(e.nodes.indexOf(a)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.splice(e.nodes.indexOf(o)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),z(e.nodes,a,{...a,value:String(f[0])}),z(e.nodes,o,{...o,value:String(f[1])}),z(e.nodes,s,{...s,value:String(f[2])})}function A(e){if(!e||"word"!==e.type)return!1;if(!H(e))return!1;const t=u.default.unit(e.value);return!!t&&("%"===t.unit||""===t.unit)}function q(e){return e&&"function"===e.type&&"calc"===e.value.toLowerCase()}function B(e){return e&&"function"===e.type&&"var"===e.value.toLowerCase()}function E(e){return e&&"div"===e.type&&"/"===e.value}function j(e){if(!A(e[0]))return null;if(!A(e[1]))return null;if(!function(e){if(!e||"word"!==e.type)return!1;if(!H(e))return!1;const t=u.default.unit(e.value);if(!t)return!1;const n=t.unit.toLowerCase();return!!t.number&&("deg"===n||"grad"===n||"rad"===n||"turn"===n||""===n)}(e[2]))return null;const t={l:u.default.unit(e[0].value),lNode:e[0],c:u.default.unit(e[1].value),cNode:e[1],h:u.default.unit(e[2].value),hNode:e[2]};return function(e){switch(e.unit.toLowerCase()){case"deg":return void(e.unit="");case"rad":return e.unit="",void(e.number=(180*parseFloat(e.number)/Math.PI).toString());case"grad":return e.unit="",void(e.number=(.9*parseFloat(e.number)).toString());case"turn":e.unit="",e.number=(360*parseFloat(e.number)).toString()}}(t.h),""!==t.h.unit?null:(E(e[3])&&(t.slash=e[3]),(A(e[4])||q(e[4])||B(e[4]))&&(t.alpha=e[4]),!(e.length>3)||t.slash&&t.alpha?("%"===t.l.unit&&(t.l.unit=""),"%"===t.c.unit&&(t.c.unit="",t.c.number=(parseFloat(t.c.number)/100*150).toFixed(10)),t):null)}function k(e){if(!A(e[0]))return null;if(!A(e[1]))return null;if(!A(e[2]))return null;const t={l:u.default.unit(e[0].value),lNode:e[0],a:u.default.unit(e[1].value),aNode:e[1],b:u.default.unit(e[2].value),bNode:e[2]};return E(e[3])&&(t.slash=e[3]),(A(e[4])||q(e[4])||B(e[4]))&&(t.alpha=e[4]),!(e.length>3)||t.slash&&t.alpha?("%"===t.l.unit&&(t.l.unit=""),"%"===t.a.unit&&(t.a.unit="",t.a.number=(parseFloat(t.a.number)/100*125).toFixed(10)),"%"===t.b.unit&&(t.b.unit="",t.b.number=(parseFloat(t.b.number)/100*125).toFixed(10)),t):null}function $(e){return void 0!==e.a}function D(e){return $(e)?[e.lNode,e.aNode,e.bNode]:[e.lNode,e.cNode,e.hNode]}function G(e){return $(e)?[e.l,e.a,e.b]:[e.l,e.c,e.h]}function z(e,t,n){const r=e.indexOf(t);e[r]=n}function H(e){if(!e||!e.value)return!1;try{return!1!==u.default.unit(e.value)}catch(e){return!1}}function J(e,t,n,r){let a;try{a=u.default(e)}catch(r){t.warn(n,`Failed to parse value '${e}' as a lab or lch function. Leaving the original value intact.`)}if(void 0===a)return;a.walk((e=>{e.type&&"function"===e.type&&("lab"!==e.value.toLowerCase()&&"lch"!==e.value.toLowerCase()||O(e))}));const o=String(a);if(o===e)return;const s=u.default(e);s.walk((e=>{e.type&&"function"===e.type&&("lab"!==e.value.toLowerCase()&&"lch"!==e.value.toLowerCase()||function(e,t,n,r){const a=u.default.stringify(e),o=e.value.toLowerCase(),s=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let i=null;if("lab"===o?i=k(s):"lch"===o&&(i=j(s)),!i)return;if(s.length>3&&(!i.slash||!i.alpha))return;e.value="color";const[l,c,f]=D(i),[p,d,h]=G(i),m="lab"===o?L:N,v=[p.number,d.number,h.number].map((e=>parseFloat(e))),[b,y]=m(v);!y&&r&&t.warn(n,`"${a}" is out of gamut for "display-p3". Given "preserve: true" is set, this will lead to unexpected results in some browsers.`),e.nodes.splice(0,0,{sourceIndex:0,sourceEndIndex:10,value:"display-p3",type:"word"}),e.nodes.splice(1,0,{sourceIndex:0,sourceEndIndex:1,value:" ",type:"space"}),z(e.nodes,l,{...l,value:b[0].toFixed(5)}),z(e.nodes,c,{...c,value:b[1].toFixed(5)}),z(e.nodes,f,{...f,value:b[2].toFixed(5)})}(e,t,n,r))}));return{rgb:o,displayP3:String(s)}}const K=e=>({postcssPlugin:"postcss-lab-function",Declaration:(t,{result:n})=>{if(function(e){const t=e.parent;if(!t)return!1;const n=t.index(e);for(let r=0;r<n;r++){const n=t.nodes[r];if("decl"===n.type&&n.prop.toLowerCase()===e.prop.toLowerCase())return!0}return!1}(t))return;if(function(e){let t=e.parent;for(;t;)if("atrule"===t.type){if("supports"===t.name.toLowerCase()){if(-1!==t.params.toLowerCase().indexOf("lab("))return!0;if(-1!==t.params.toLowerCase().indexOf("lch("))return!0}t=t.parent}else t=t.parent;return!1}(t))return;const r=t.value;if(!/(^|[^\w-])(lab|lch)\(/i.test(r.toLowerCase()))return;const u=J(r,t,n,e.preserve);void 0!==u&&(e.preserve?(t.cloneBefore({value:u.rgb}),e.subFeatures.displayP3&&t.cloneBefore({value:u.displayP3})):(t.cloneBefore({value:u.rgb}),e.subFeatures.displayP3&&t.cloneBefore({value:u.displayP3}),t.remove()))}});K.postcss=!0;const Q=e=>{const t=Object.assign({enableProgressiveCustomProperties:!0,preserve:!1,subFeatures:{displayP3:!0}},e);return t.subFeatures=Object.assign({displayP3:!0},t.subFeatures),t.enableProgressiveCustomProperties&&(t.preserve||t.subFeatures.displayP3)?{postcssPlugin:"postcss-lab-function",plugins:[r.default(),K(t)]}:K(t)};Q.postcss=!0,module.exports=Q;
29
+ */function deltaEOK(e,t){const[n,a,r]=e,[o,u,i]=t,s=n-o,l=a-u,c=r-i;return Math.sqrt(s**2+l**2+c**2)}function mapGamut(e,t,n){return binarySearchGamut(e,t,n)}function binarySearchGamut(e,t,n){let a=0,r=e[1];const o=e;for(;r-a>1e-4;){const e=clip(t(o));deltaEOK(OKLCH_to_OKLab(o),OKLCH_to_OKLab(n(e)))-.02<1e-4?a=o[1]:r=o[1],o[1]=(r+a)/2}return clip(t([...o]))}function clip(e){return e.map((e=>e<0?0:e>1?1:e))}function inGamut(e){const[t,n,a]=e;return t>=-1e-4&&t<=1.0001&&n>=-1e-4&&n<=1.0001&&a>=-1e-4&&a<=1.0001}function labToDisplayP3(e){const[t,n,a]=e;let r=[Math.max(t,0),Math.min(Math.max(n,-160),160),Math.min(Math.max(a,-160),160)];r=Lab_to_XYZ(r);let o=r.slice();return o=D50_to_D65(o),o=XYZ_to_OKLab(o),o=OKLab_to_OKLCH(o),o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),r=D50_to_D65(r),r=XYZ_to_lin_P3(r),r=gam_P3(r),inGamut(r)?[clip(r),!0]:[mapGamut(o,(e=>gam_P3(e=XYZ_to_lin_P3(e=OKLab_to_XYZ(e=OKLCH_to_OKLab(e))))),(e=>OKLab_to_OKLCH(e=XYZ_to_OKLab(e=lin_P3_to_XYZ(e=lin_P3(e)))))),!1]}function labToSRgb(e){const[t,n,a]=e;let r=[Math.max(t,0),Math.min(Math.max(n,-160),160),Math.min(Math.max(a,-160),160)];r=Lab_to_XYZ(r);let o=r.slice();return o=D50_to_D65(o),o=XYZ_to_OKLab(o),o=OKLab_to_OKLCH(o),o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),r=D50_to_D65(r),r=XYZ_to_lin_sRGB(r),r=gam_sRGB(r),inGamut(r)?clip(r).map((e=>Math.round(255*e))):mapGamut(o,(e=>gam_sRGB(e=XYZ_to_lin_sRGB(e=OKLab_to_XYZ(e=OKLCH_to_OKLab(e))))),(e=>OKLab_to_OKLCH(e=XYZ_to_OKLab(e=lin_sRGB_to_XYZ(e=lin_sRGB(e)))))).map((e=>Math.round(255*e)))}function lchToDisplayP3(e){const[t,n,a]=e;let r=[Math.max(t,0),n,a%360];r=LCH_to_Lab(r),r=Lab_to_XYZ(r);let o=r.slice();return o=D50_to_D65(o),o=XYZ_to_OKLab(o),o=OKLab_to_OKLCH(o),o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),r=D50_to_D65(r),r=XYZ_to_lin_P3(r),r=gam_P3(r),inGamut(r)?[clip(r),!0]:[mapGamut(o,(e=>gam_P3(e=XYZ_to_lin_P3(e=OKLab_to_XYZ(e=OKLCH_to_OKLab(e))))),(e=>OKLab_to_OKLCH(e=XYZ_to_OKLab(e=lin_P3_to_XYZ(e=lin_P3(e)))))),!1]}function lchToSRgb(e){const[t,n,a]=e;let r=[Math.max(t,0),n,a%360];r=LCH_to_Lab(r),r=Lab_to_XYZ(r);let o=r.slice();return o=D50_to_D65(o),o=XYZ_to_OKLab(o),o=OKLab_to_OKLCH(o),o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),r=D50_to_D65(r),r=XYZ_to_lin_sRGB(r),r=gam_sRGB(r),inGamut(r)?clip(r).map((e=>Math.round(255*e))):mapGamut(o,(e=>gam_sRGB(e=XYZ_to_lin_sRGB(e=OKLab_to_XYZ(e=OKLCH_to_OKLab(e))))),(e=>OKLab_to_OKLCH(e=XYZ_to_OKLab(e=lin_sRGB_to_XYZ(e=lin_sRGB(e)))))).map((e=>Math.round(255*e)))}function onCSSFunctionSRgb(e){const t=e.value.toLowerCase(),n=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let a=null;if("lab"===t?a=labFunctionContents(n):"lch"===t&&(a=lchFunctionContents(n)),!a)return;e.value="rgb",transformAlpha(e,a.slash,a.alpha);const[r,o,u]=channelNodes(a),[i,s,l]=channelDimensions(a),c=("lab"===t?labToSRgb:lchToSRgb)([i.number,s.number,l.number].map((e=>parseFloat(e))));e.nodes.splice(e.nodes.indexOf(r)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.splice(e.nodes.indexOf(o)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),replaceWith(e.nodes,r,{...r,value:String(c[0])}),replaceWith(e.nodes,o,{...o,value:String(c[1])}),replaceWith(e.nodes,u,{...u,value:String(c[2])})}function onCSSFunctionDisplayP3(e,n,a,r){const o=t.stringify(e),u=e.value.toLowerCase(),i=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let s=null;if("lab"===u?s=labFunctionContents(i):"lch"===u&&(s=lchFunctionContents(i)),!s)return;if(i.length>3&&(!s.slash||!s.alpha))return;e.value="color";const[l,c,_]=channelNodes(s),[p,m,b]=channelDimensions(s),d="lab"===u?labToDisplayP3:lchToDisplayP3,f=[p.number,m.number,b.number].map((e=>parseFloat(e))),[h,L]=d(f);!L&&r&&n.warn(a,`"${o}" is out of gamut for "display-p3". Given "preserve: true" is set, this will lead to unexpected results in some browsers.`),e.nodes.splice(0,0,{sourceIndex:0,sourceEndIndex:10,value:"display-p3",type:"word"}),e.nodes.splice(1,0,{sourceIndex:0,sourceEndIndex:1,value:" ",type:"space"}),replaceWith(e.nodes,l,{...l,value:h[0].toFixed(5)}),replaceWith(e.nodes,c,{...c,value:h[1].toFixed(5)}),replaceWith(e.nodes,_,{..._,value:h[2].toFixed(5)})}function isNumericNode(e){if(!e||"word"!==e.type)return!1;if(!canParseAsUnit(e))return!1;const n=t.unit(e.value);return!!n&&!!n.number}function isNumericNodeHueLike(e){if(!e||"word"!==e.type)return!1;if(!canParseAsUnit(e))return!1;const n=t.unit(e.value);if(!n)return!1;const a=n.unit.toLowerCase();return!!n.number&&("deg"===a||"grad"===a||"rad"===a||"turn"===a||""===a)}function isNumericNodePercentageOrNumber(e){if(!e||"word"!==e.type)return!1;if(!canParseAsUnit(e))return!1;const n=t.unit(e.value);return!!n&&("%"===n.unit||""===n.unit)}function isCalcNode(e){return e&&"function"===e.type&&"calc"===e.value.toLowerCase()}function isVarNode(e){return e&&"function"===e.type&&"var"===e.value.toLowerCase()}function isSlashNode(e){return e&&"div"===e.type&&"/"===e.value}function lchFunctionContents(e){if(!isNumericNodePercentageOrNumber(e[0]))return null;if(!isNumericNodePercentageOrNumber(e[1]))return null;if(!isNumericNodeHueLike(e[2]))return null;const n={l:t.unit(e[0].value),lNode:e[0],c:t.unit(e[1].value),cNode:e[1],h:t.unit(e[2].value),hNode:e[2]};return normalizeHueNode(n.h),""!==n.h.unit?null:(isSlashNode(e[3])&&(n.slash=e[3]),(isNumericNodePercentageOrNumber(e[4])||isCalcNode(e[4])||isVarNode(e[4]))&&(n.alpha=e[4]),!(e.length>3)||n.slash&&n.alpha?("%"===n.l.unit&&(n.l.unit=""),"%"===n.c.unit&&(n.c.unit="",n.c.number=(parseFloat(n.c.number)/100*150).toFixed(10)),n):null)}function labFunctionContents(e){if(!isNumericNodePercentageOrNumber(e[0]))return null;if(!isNumericNodePercentageOrNumber(e[1]))return null;if(!isNumericNodePercentageOrNumber(e[2]))return null;const n={l:t.unit(e[0].value),lNode:e[0],a:t.unit(e[1].value),aNode:e[1],b:t.unit(e[2].value),bNode:e[2]};return isSlashNode(e[3])&&(n.slash=e[3]),(isNumericNodePercentageOrNumber(e[4])||isCalcNode(e[4])||isVarNode(e[4]))&&(n.alpha=e[4]),!(e.length>3)||n.slash&&n.alpha?("%"===n.l.unit&&(n.l.unit=""),"%"===n.a.unit&&(n.a.unit="",n.a.number=(parseFloat(n.a.number)/100*125).toFixed(10)),"%"===n.b.unit&&(n.b.unit="",n.b.number=(parseFloat(n.b.number)/100*125).toFixed(10)),n):null}function isLab(e){return void 0!==e.a}function channelNodes(e){return isLab(e)?[e.lNode,e.aNode,e.bNode]:[e.lNode,e.cNode,e.hNode]}function channelDimensions(e){return isLab(e)?[e.l,e.a,e.b]:[e.l,e.c,e.h]}function transformAlpha(e,n,a){if(!n||!a)return;if(e.value="rgba",n.value=",",n.before="",!isNumericNode(a))return;const r=t.unit(a.value);r&&"%"===r.unit&&(r.number=String(parseFloat(r.number)/100),a.value=String(r.number))}function replaceWith(e,t,n){const a=e.indexOf(t);e[a]=n}function normalizeHueNode(e){switch(e.unit.toLowerCase()){case"deg":return void(e.unit="");case"rad":return e.unit="",void(e.number=(180*parseFloat(e.number)/Math.PI).toString());case"grad":return e.unit="",void(e.number=(.9*parseFloat(e.number)).toString());case"turn":return e.unit="",void(e.number=(360*parseFloat(e.number)).toString())}}function canParseAsUnit(e){if(!e||!e.value)return!1;try{return!1!==t.unit(e.value)}catch(e){return!1}}function modifiedValues(e,n,a,r){let o;try{o=t(e)}catch(t){n.warn(a,`Failed to parse value '${e}' as a lab or lch function. Leaving the original value intact.`)}if(void 0===o)return;o.walk((e=>{e.type&&"function"===e.type&&("lab"!==e.value.toLowerCase()&&"lch"!==e.value.toLowerCase()||onCSSFunctionSRgb(e))}));const u=String(o);if(u===e)return;const i=t(e);i.walk((e=>{e.type&&"function"===e.type&&("lab"!==e.value.toLowerCase()&&"lch"!==e.value.toLowerCase()||onCSSFunctionDisplayP3(e,n,a,r))}));return{rgb:u,displayP3:String(i)}}const basePlugin=e=>({postcssPlugin:"postcss-lab-function",Declaration:(t,{result:n})=>{if(hasFallback(t))return;if(hasSupportsAtRuleAncestor(t))return;const a=t.value;if(!/(^|[^\w-])(lab|lch)\(/i.test(a.toLowerCase()))return;const r=modifiedValues(a,t,n,e.preserve);void 0!==r&&(e.preserve?(t.cloneBefore({value:r.rgb}),e.subFeatures.displayP3&&t.cloneBefore({value:r.displayP3})):(t.cloneBefore({value:r.rgb}),e.subFeatures.displayP3&&t.cloneBefore({value:r.displayP3}),t.remove()))}});basePlugin.postcss=!0;const postcssPlugin=t=>{const n=Object.assign({enableProgressiveCustomProperties:!0,preserve:!1,subFeatures:{displayP3:!0}},t);return n.subFeatures=Object.assign({displayP3:!0},n.subFeatures),n.enableProgressiveCustomProperties&&(n.preserve||n.subFeatures.displayP3)?{postcssPlugin:"postcss-lab-function",plugins:[e(),basePlugin(n)]}:basePlugin(n)};postcssPlugin.postcss=!0,module.exports=postcssPlugin;
package/dist/index.d.ts CHANGED
@@ -1,8 +1,13 @@
1
1
  import type { PluginCreator } from 'postcss';
2
- declare type pluginOptions = {
3
- enableProgressiveCustomProperties?: boolean;
2
+ /** postcss-lab-function plugin options */
3
+ export type pluginOptions = {
4
+ /** Preserve the original notation. default: false */
4
5
  preserve?: boolean;
6
+ /** Enable "@csstools/postcss-progressive-custom-properties". default: true */
7
+ enableProgressiveCustomProperties?: boolean;
8
+ /** Toggle sub features. default: { displayP3: true } */
5
9
  subFeatures?: {
10
+ /** Enable displayP3 fallbacks. default: true */
6
11
  displayP3?: boolean;
7
12
  };
8
13
  };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import e from"@csstools/postcss-progressive-custom-properties";import t from"postcss-value-parser";
1
+ import e from"@csstools/postcss-progressive-custom-properties";import t from"postcss-value-parser";function hasFallback(e){const t=e.parent;if(!t)return!1;const n=t.index(e);for(let a=0;a<n;a++){const n=t.nodes[a];if("decl"===n.type&&n.prop.toLowerCase()===e.prop.toLowerCase())return!0}return!1}function hasSupportsAtRuleAncestor(e){let t=e.parent;for(;t;)if("atrule"===t.type){if("supports"===t.name.toLowerCase()){if(-1!==t.params.toLowerCase().indexOf("lab("))return!0;if(-1!==t.params.toLowerCase().indexOf("lch("))return!0}t=t.parent}else t=t.parent;return!1}
2
2
  /**
3
3
  * Simple matrix (and vector) multiplication
4
4
  * Warning: No error handling for incompatible dimensions!
@@ -10,8 +10,7 @@ import e from"@csstools/postcss-progressive-custom-properties";import t from"pos
10
10
  * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/multiply-matrices.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).
11
11
  *
12
12
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/multiply-matrices.js
13
- */
14
- function n(e,t){const n=e.length;let r,u;r=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=r.map((e=>o.map((t=>Array.isArray(e)?e.reduce(((e,n,r)=>e+n*(t[r]||0)),0):t.reduce(((t,n)=>t+n*e),0)))));return 1===n&&(s=s[0]),1===a?s.map((e=>e[0])):s}
13
+ */function multiplyMatrices(e,t){const n=e.length;let a,r;a=Array.isArray(e[0])?e:[e],Array.isArray(t[0])||(r=t.map((e=>[e])));const o=r[0].length,u=r[0].map(((e,t)=>r.map((e=>e[t]))));let i=a.map((e=>u.map((t=>Array.isArray(e)?e.reduce(((e,n,a)=>e+n*(t[a]||0)),0):t.reduce(((t,n)=>t+n*e),0)))));return 1===n&&(i=i[0]),1===o?i.map((e=>e[0])):i}
15
14
  /**
16
15
  * @license W3C
17
16
  * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
@@ -19,7 +18,7 @@ function n(e,t){const n=e.length;let r,u;r=Array.isArray(e[0])?e:[e],Array.isArr
19
18
  * @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
19
  *
21
20
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js
22
- */const r=[.3457/.3585,1,.2958/.3585];function u(e){return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n<.04045?e/12.92:t*Math.pow((n+.055)/1.055,2.4)}))}function a(e){return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n>.0031308?t*(1.055*Math.pow(n,1/2.4)-.055):12.92*e}))}function o(e){return n([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function s(e){return n([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function i(e){return u(e)}function l(e){return a(e)}function c(e){return n([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],e)}function p(e){return n([[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],e)}function f(e){return n([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],e)}function d(e){const t=24389/27,n=216/24389,u=[];u[1]=(e[0]+16)/116,u[0]=e[1]/500+u[1],u[2]=u[1]-e[2]/200;return[Math.pow(u[0],3)>n?Math.pow(u[0],3):(116*u[0]-16)/t,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/t,Math.pow(u[2],3)>n?Math.pow(u[2],3):(116*u[2]-16)/t].map(((e,t)=>e*r[t]))}function h(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}function m(e){const t=n([[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],e);return n([[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],t.map((e=>Math.cbrt(e))))}function v(e){const t=n([[.9999999984505198,.39633779217376786,.2158037580607588],[1.0000000088817609,-.10556134232365635,-.06385417477170591],[1.0000000546724108,-.08948418209496575,-1.2914855378640917]],e);return n([[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],t.map((e=>e**3)))}function b(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 y(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}
21
+ */const n=[.3457/.3585,1,.2958/.3585];function lin_sRGB(e){return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n<.04045?e/12.92:t*Math.pow((n+.055)/1.055,2.4)}))}function gam_sRGB(e){return e.map((function(e){const t=e<0?-1:1,n=Math.abs(e);return n>.0031308?t*(1.055*Math.pow(n,1/2.4)-.055):12.92*e}))}function lin_sRGB_to_XYZ(e){return multiplyMatrices([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function XYZ_to_lin_sRGB(e){return multiplyMatrices([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function lin_P3(e){return lin_sRGB(e)}function gam_P3(e){return gam_sRGB(e)}function lin_P3_to_XYZ(e){return multiplyMatrices([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],e)}function XYZ_to_lin_P3(e){return multiplyMatrices([[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],e)}function D50_to_D65(e){return multiplyMatrices([[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],e)}function Lab_to_XYZ(e){const t=24389/27,a=216/24389,r=[];r[1]=(e[0]+16)/116,r[0]=e[1]/500+r[1],r[2]=r[1]-e[2]/200;return[Math.pow(r[0],3)>a?Math.pow(r[0],3):(116*r[0]-16)/t,e[0]>8?Math.pow((e[0]+16)/116,3):e[0]/t,Math.pow(r[2],3)>a?Math.pow(r[2],3):(116*r[2]-16)/t].map(((e,t)=>e*n[t]))}function LCH_to_Lab(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}function XYZ_to_OKLab(e){const t=multiplyMatrices([[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],e);return multiplyMatrices([[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],t.map((e=>Math.cbrt(e))))}function OKLab_to_XYZ(e){const t=multiplyMatrices([[.9999999984505198,.39633779217376786,.2158037580607588],[1.0000000088817609,-.10556134232365635,-.06385417477170591],[1.0000000546724108,-.08948418209496575,-1.2914855378640917]],e);return multiplyMatrices([[1.2268798733741557,-.5578149965554813,.28139105017721583],[-.04057576262431372,1.1122868293970594,-.07171106666151701],[-.07637294974672142,-.4214933239627914,1.5869240244272418]],t.map((e=>e**3)))}function OKLab_to_OKLCH(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 OKLCH_to_OKLab(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}
23
22
  /**
24
23
  * @license W3C
25
24
  * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
@@ -27,4 +26,4 @@ function n(e,t){const n=e.length;let r,u;r=Array.isArray(e[0])?e:[e],Array.isArr
27
26
  * @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
27
  *
29
28
  * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js
30
- */function M(e,t){const[n,r,u]=e,[a,o,s]=t,i=n-a,l=r-o,c=u-s;return Math.sqrt(i**2+l**2+c**2)}function g(e,t,n){return function(e,t,n){let r=0,u=e[1];const a=e;for(;u-r>1e-4;){const e=w(t(a));M(y(a),y(n(e)))-.02<1e-4?r=a[1]:u=a[1],a[1]=(u+r)/2}return w(t([...a]))}(e,t,n)}function w(e){return e.map((e=>e<0?0:e>1?1:e))}function x(e){const[t,n,r]=e;return t>=-1e-4&&t<=1.0001&&n>=-1e-4&&n<=1.0001&&r>=-1e-4&&r<=1.0001}function F(e){const[t,n,r]=e;let u=[Math.max(t,0),Math.min(Math.max(n,-160),160),Math.min(Math.max(r,-160),160)];u=d(u);let a=u.slice();return a=f(a),a=m(a),a=b(a),a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),u=f(u),u=p(u),u=l(u),x(u)?[w(u),!0]:[g(a,(e=>l(e=p(e=v(e=y(e))))),(e=>b(e=m(e=c(e=i(e)))))),!1]}function P(e){const[t,n,r]=e;let i=[Math.max(t,0),Math.min(Math.max(n,-160),160),Math.min(Math.max(r,-160),160)];i=d(i);let l=i.slice();return l=f(l),l=m(l),l=b(l),l[0]<1e-6&&(l=[0,0,0]),l[0]>.999999&&(l=[1,0,0]),i=f(i),i=s(i),i=a(i),x(i)?w(i).map((e=>Math.round(255*e))):g(l,(e=>a(e=s(e=v(e=y(e))))),(e=>b(e=m(e=o(e=u(e)))))).map((e=>Math.round(255*e)))}function C(e){const[t,n,r]=e;let u=[Math.max(t,0),n,r%360];u=h(u),u=d(u);let a=u.slice();return a=f(a),a=m(a),a=b(a),a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),u=f(u),u=p(u),u=l(u),x(u)?[w(u),!0]:[g(a,(e=>l(e=p(e=v(e=y(e))))),(e=>b(e=m(e=c(e=i(e)))))),!1]}function L(e){const[t,n,r]=e;let i=[Math.max(t,0),n,r%360];i=h(i),i=d(i);let l=i.slice();return l=f(l),l=m(l),l=b(l),l[0]<1e-6&&(l=[0,0,0]),l[0]>.999999&&(l=[1,0,0]),i=f(i),i=s(i),i=a(i),x(i)?w(i).map((e=>Math.round(255*e))):g(l,(e=>a(e=s(e=v(e=y(e))))),(e=>b(e=m(e=o(e=u(e)))))).map((e=>Math.round(255*e)))}function I(e){const n=e.value.toLowerCase(),r=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let u=null;if("lab"===n?u=E(r):"lch"===n&&(u=B(r)),!u)return;e.value="rgb",function(e,n,r){if(!n||!r)return;if(e.value="rgba",n.value=",",n.before="",!function(e){if(!e||"word"!==e.type)return!1;if(!D(e))return!1;const n=t.unit(e.value);if(!n)return!1;return!!n.number}(r))return;const u=t.unit(r.value);if(!u)return;"%"===u.unit&&(u.number=String(parseFloat(u.number)/100),r.value=String(u.number))}(e,u.slash,u.alpha);const[a,o,s]=k(u),[i,l,c]=q(u),p=("lab"===n?P:L)([i.number,l.number,c.number].map((e=>parseFloat(e))));e.nodes.splice(e.nodes.indexOf(a)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.splice(e.nodes.indexOf(o)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),$(e.nodes,a,{...a,value:String(p[0])}),$(e.nodes,o,{...o,value:String(p[1])}),$(e.nodes,s,{...s,value:String(p[2])})}function N(e){if(!e||"word"!==e.type)return!1;if(!D(e))return!1;const n=t.unit(e.value);return!!n&&("%"===n.unit||""===n.unit)}function S(e){return e&&"function"===e.type&&"calc"===e.value.toLowerCase()}function O(e){return e&&"function"===e.type&&"var"===e.value.toLowerCase()}function A(e){return e&&"div"===e.type&&"/"===e.value}function B(e){if(!N(e[0]))return null;if(!N(e[1]))return null;if(!function(e){if(!e||"word"!==e.type)return!1;if(!D(e))return!1;const n=t.unit(e.value);if(!n)return!1;const r=n.unit.toLowerCase();return!!n.number&&("deg"===r||"grad"===r||"rad"===r||"turn"===r||""===r)}(e[2]))return null;const n={l:t.unit(e[0].value),lNode:e[0],c:t.unit(e[1].value),cNode:e[1],h:t.unit(e[2].value),hNode:e[2]};return function(e){switch(e.unit.toLowerCase()){case"deg":return void(e.unit="");case"rad":return e.unit="",void(e.number=(180*parseFloat(e.number)/Math.PI).toString());case"grad":return e.unit="",void(e.number=(.9*parseFloat(e.number)).toString());case"turn":e.unit="",e.number=(360*parseFloat(e.number)).toString()}}(n.h),""!==n.h.unit?null:(A(e[3])&&(n.slash=e[3]),(N(e[4])||S(e[4])||O(e[4]))&&(n.alpha=e[4]),!(e.length>3)||n.slash&&n.alpha?("%"===n.l.unit&&(n.l.unit=""),"%"===n.c.unit&&(n.c.unit="",n.c.number=(parseFloat(n.c.number)/100*150).toFixed(10)),n):null)}function E(e){if(!N(e[0]))return null;if(!N(e[1]))return null;if(!N(e[2]))return null;const n={l:t.unit(e[0].value),lNode:e[0],a:t.unit(e[1].value),aNode:e[1],b:t.unit(e[2].value),bNode:e[2]};return A(e[3])&&(n.slash=e[3]),(N(e[4])||S(e[4])||O(e[4]))&&(n.alpha=e[4]),!(e.length>3)||n.slash&&n.alpha?("%"===n.l.unit&&(n.l.unit=""),"%"===n.a.unit&&(n.a.unit="",n.a.number=(parseFloat(n.a.number)/100*125).toFixed(10)),"%"===n.b.unit&&(n.b.unit="",n.b.number=(parseFloat(n.b.number)/100*125).toFixed(10)),n):null}function j(e){return void 0!==e.a}function k(e){return j(e)?[e.lNode,e.aNode,e.bNode]:[e.lNode,e.cNode,e.hNode]}function q(e){return j(e)?[e.l,e.a,e.b]:[e.l,e.c,e.h]}function $(e,t,n){const r=e.indexOf(t);e[r]=n}function D(e){if(!e||!e.value)return!1;try{return!1!==t.unit(e.value)}catch(e){return!1}}function G(e,n,r,u){let a;try{a=t(e)}catch(t){n.warn(r,`Failed to parse value '${e}' as a lab or lch function. Leaving the original value intact.`)}if(void 0===a)return;a.walk((e=>{e.type&&"function"===e.type&&("lab"!==e.value.toLowerCase()&&"lch"!==e.value.toLowerCase()||I(e))}));const o=String(a);if(o===e)return;const s=t(e);s.walk((e=>{e.type&&"function"===e.type&&("lab"!==e.value.toLowerCase()&&"lch"!==e.value.toLowerCase()||function(e,n,r,u){const a=t.stringify(e),o=e.value.toLowerCase(),s=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let i=null;if("lab"===o?i=E(s):"lch"===o&&(i=B(s)),!i)return;if(s.length>3&&(!i.slash||!i.alpha))return;e.value="color";const[l,c,p]=k(i),[f,d,h]=q(i),m="lab"===o?F:C,v=[f.number,d.number,h.number].map((e=>parseFloat(e))),[b,y]=m(v);!y&&u&&n.warn(r,`"${a}" is out of gamut for "display-p3". Given "preserve: true" is set, this will lead to unexpected results in some browsers.`),e.nodes.splice(0,0,{sourceIndex:0,sourceEndIndex:10,value:"display-p3",type:"word"}),e.nodes.splice(1,0,{sourceIndex:0,sourceEndIndex:1,value:" ",type:"space"}),$(e.nodes,l,{...l,value:b[0].toFixed(5)}),$(e.nodes,c,{...c,value:b[1].toFixed(5)}),$(e.nodes,p,{...p,value:b[2].toFixed(5)})}(e,n,r,u))}));return{rgb:o,displayP3:String(s)}}const z=e=>({postcssPlugin:"postcss-lab-function",Declaration:(t,{result:n})=>{if(function(e){const t=e.parent;if(!t)return!1;const n=t.index(e);for(let r=0;r<n;r++){const n=t.nodes[r];if("decl"===n.type&&n.prop.toLowerCase()===e.prop.toLowerCase())return!0}return!1}(t))return;if(function(e){let t=e.parent;for(;t;)if("atrule"===t.type){if("supports"===t.name.toLowerCase()){if(-1!==t.params.toLowerCase().indexOf("lab("))return!0;if(-1!==t.params.toLowerCase().indexOf("lch("))return!0}t=t.parent}else t=t.parent;return!1}(t))return;const r=t.value;if(!/(^|[^\w-])(lab|lch)\(/i.test(r.toLowerCase()))return;const u=G(r,t,n,e.preserve);void 0!==u&&(e.preserve?(t.cloneBefore({value:u.rgb}),e.subFeatures.displayP3&&t.cloneBefore({value:u.displayP3})):(t.cloneBefore({value:u.rgb}),e.subFeatures.displayP3&&t.cloneBefore({value:u.displayP3}),t.remove()))}});z.postcss=!0;const H=t=>{const n=Object.assign({enableProgressiveCustomProperties:!0,preserve:!1,subFeatures:{displayP3:!0}},t);return n.subFeatures=Object.assign({displayP3:!0},n.subFeatures),n.enableProgressiveCustomProperties&&(n.preserve||n.subFeatures.displayP3)?{postcssPlugin:"postcss-lab-function",plugins:[e(),z(n)]}:z(n)};H.postcss=!0;export{H as default};
29
+ */function deltaEOK(e,t){const[n,a,r]=e,[o,u,i]=t,s=n-o,l=a-u,c=r-i;return Math.sqrt(s**2+l**2+c**2)}function mapGamut(e,t,n){return binarySearchGamut(e,t,n)}function binarySearchGamut(e,t,n){let a=0,r=e[1];const o=e;for(;r-a>1e-4;){const e=clip(t(o));deltaEOK(OKLCH_to_OKLab(o),OKLCH_to_OKLab(n(e)))-.02<1e-4?a=o[1]:r=o[1],o[1]=(r+a)/2}return clip(t([...o]))}function clip(e){return e.map((e=>e<0?0:e>1?1:e))}function inGamut(e){const[t,n,a]=e;return t>=-1e-4&&t<=1.0001&&n>=-1e-4&&n<=1.0001&&a>=-1e-4&&a<=1.0001}function labToDisplayP3(e){const[t,n,a]=e;let r=[Math.max(t,0),Math.min(Math.max(n,-160),160),Math.min(Math.max(a,-160),160)];r=Lab_to_XYZ(r);let o=r.slice();return o=D50_to_D65(o),o=XYZ_to_OKLab(o),o=OKLab_to_OKLCH(o),o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),r=D50_to_D65(r),r=XYZ_to_lin_P3(r),r=gam_P3(r),inGamut(r)?[clip(r),!0]:[mapGamut(o,(e=>gam_P3(e=XYZ_to_lin_P3(e=OKLab_to_XYZ(e=OKLCH_to_OKLab(e))))),(e=>OKLab_to_OKLCH(e=XYZ_to_OKLab(e=lin_P3_to_XYZ(e=lin_P3(e)))))),!1]}function labToSRgb(e){const[t,n,a]=e;let r=[Math.max(t,0),Math.min(Math.max(n,-160),160),Math.min(Math.max(a,-160),160)];r=Lab_to_XYZ(r);let o=r.slice();return o=D50_to_D65(o),o=XYZ_to_OKLab(o),o=OKLab_to_OKLCH(o),o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),r=D50_to_D65(r),r=XYZ_to_lin_sRGB(r),r=gam_sRGB(r),inGamut(r)?clip(r).map((e=>Math.round(255*e))):mapGamut(o,(e=>gam_sRGB(e=XYZ_to_lin_sRGB(e=OKLab_to_XYZ(e=OKLCH_to_OKLab(e))))),(e=>OKLab_to_OKLCH(e=XYZ_to_OKLab(e=lin_sRGB_to_XYZ(e=lin_sRGB(e)))))).map((e=>Math.round(255*e)))}function lchToDisplayP3(e){const[t,n,a]=e;let r=[Math.max(t,0),n,a%360];r=LCH_to_Lab(r),r=Lab_to_XYZ(r);let o=r.slice();return o=D50_to_D65(o),o=XYZ_to_OKLab(o),o=OKLab_to_OKLCH(o),o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),r=D50_to_D65(r),r=XYZ_to_lin_P3(r),r=gam_P3(r),inGamut(r)?[clip(r),!0]:[mapGamut(o,(e=>gam_P3(e=XYZ_to_lin_P3(e=OKLab_to_XYZ(e=OKLCH_to_OKLab(e))))),(e=>OKLab_to_OKLCH(e=XYZ_to_OKLab(e=lin_P3_to_XYZ(e=lin_P3(e)))))),!1]}function lchToSRgb(e){const[t,n,a]=e;let r=[Math.max(t,0),n,a%360];r=LCH_to_Lab(r),r=Lab_to_XYZ(r);let o=r.slice();return o=D50_to_D65(o),o=XYZ_to_OKLab(o),o=OKLab_to_OKLCH(o),o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),r=D50_to_D65(r),r=XYZ_to_lin_sRGB(r),r=gam_sRGB(r),inGamut(r)?clip(r).map((e=>Math.round(255*e))):mapGamut(o,(e=>gam_sRGB(e=XYZ_to_lin_sRGB(e=OKLab_to_XYZ(e=OKLCH_to_OKLab(e))))),(e=>OKLab_to_OKLCH(e=XYZ_to_OKLab(e=lin_sRGB_to_XYZ(e=lin_sRGB(e)))))).map((e=>Math.round(255*e)))}function onCSSFunctionSRgb(e){const t=e.value.toLowerCase(),n=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let a=null;if("lab"===t?a=labFunctionContents(n):"lch"===t&&(a=lchFunctionContents(n)),!a)return;e.value="rgb",transformAlpha(e,a.slash,a.alpha);const[r,o,u]=channelNodes(a),[i,s,l]=channelDimensions(a),c=("lab"===t?labToSRgb:lchToSRgb)([i.number,s.number,l.number].map((e=>parseFloat(e))));e.nodes.splice(e.nodes.indexOf(r)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.splice(e.nodes.indexOf(o)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),replaceWith(e.nodes,r,{...r,value:String(c[0])}),replaceWith(e.nodes,o,{...o,value:String(c[1])}),replaceWith(e.nodes,u,{...u,value:String(c[2])})}function onCSSFunctionDisplayP3(e,n,a,r){const o=t.stringify(e),u=e.value.toLowerCase(),i=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let s=null;if("lab"===u?s=labFunctionContents(i):"lch"===u&&(s=lchFunctionContents(i)),!s)return;if(i.length>3&&(!s.slash||!s.alpha))return;e.value="color";const[l,c,_]=channelNodes(s),[p,m,b]=channelDimensions(s),d="lab"===u?labToDisplayP3:lchToDisplayP3,f=[p.number,m.number,b.number].map((e=>parseFloat(e))),[h,L]=d(f);!L&&r&&n.warn(a,`"${o}" is out of gamut for "display-p3". Given "preserve: true" is set, this will lead to unexpected results in some browsers.`),e.nodes.splice(0,0,{sourceIndex:0,sourceEndIndex:10,value:"display-p3",type:"word"}),e.nodes.splice(1,0,{sourceIndex:0,sourceEndIndex:1,value:" ",type:"space"}),replaceWith(e.nodes,l,{...l,value:h[0].toFixed(5)}),replaceWith(e.nodes,c,{...c,value:h[1].toFixed(5)}),replaceWith(e.nodes,_,{..._,value:h[2].toFixed(5)})}function isNumericNode(e){if(!e||"word"!==e.type)return!1;if(!canParseAsUnit(e))return!1;const n=t.unit(e.value);return!!n&&!!n.number}function isNumericNodeHueLike(e){if(!e||"word"!==e.type)return!1;if(!canParseAsUnit(e))return!1;const n=t.unit(e.value);if(!n)return!1;const a=n.unit.toLowerCase();return!!n.number&&("deg"===a||"grad"===a||"rad"===a||"turn"===a||""===a)}function isNumericNodePercentageOrNumber(e){if(!e||"word"!==e.type)return!1;if(!canParseAsUnit(e))return!1;const n=t.unit(e.value);return!!n&&("%"===n.unit||""===n.unit)}function isCalcNode(e){return e&&"function"===e.type&&"calc"===e.value.toLowerCase()}function isVarNode(e){return e&&"function"===e.type&&"var"===e.value.toLowerCase()}function isSlashNode(e){return e&&"div"===e.type&&"/"===e.value}function lchFunctionContents(e){if(!isNumericNodePercentageOrNumber(e[0]))return null;if(!isNumericNodePercentageOrNumber(e[1]))return null;if(!isNumericNodeHueLike(e[2]))return null;const n={l:t.unit(e[0].value),lNode:e[0],c:t.unit(e[1].value),cNode:e[1],h:t.unit(e[2].value),hNode:e[2]};return normalizeHueNode(n.h),""!==n.h.unit?null:(isSlashNode(e[3])&&(n.slash=e[3]),(isNumericNodePercentageOrNumber(e[4])||isCalcNode(e[4])||isVarNode(e[4]))&&(n.alpha=e[4]),!(e.length>3)||n.slash&&n.alpha?("%"===n.l.unit&&(n.l.unit=""),"%"===n.c.unit&&(n.c.unit="",n.c.number=(parseFloat(n.c.number)/100*150).toFixed(10)),n):null)}function labFunctionContents(e){if(!isNumericNodePercentageOrNumber(e[0]))return null;if(!isNumericNodePercentageOrNumber(e[1]))return null;if(!isNumericNodePercentageOrNumber(e[2]))return null;const n={l:t.unit(e[0].value),lNode:e[0],a:t.unit(e[1].value),aNode:e[1],b:t.unit(e[2].value),bNode:e[2]};return isSlashNode(e[3])&&(n.slash=e[3]),(isNumericNodePercentageOrNumber(e[4])||isCalcNode(e[4])||isVarNode(e[4]))&&(n.alpha=e[4]),!(e.length>3)||n.slash&&n.alpha?("%"===n.l.unit&&(n.l.unit=""),"%"===n.a.unit&&(n.a.unit="",n.a.number=(parseFloat(n.a.number)/100*125).toFixed(10)),"%"===n.b.unit&&(n.b.unit="",n.b.number=(parseFloat(n.b.number)/100*125).toFixed(10)),n):null}function isLab(e){return void 0!==e.a}function channelNodes(e){return isLab(e)?[e.lNode,e.aNode,e.bNode]:[e.lNode,e.cNode,e.hNode]}function channelDimensions(e){return isLab(e)?[e.l,e.a,e.b]:[e.l,e.c,e.h]}function transformAlpha(e,n,a){if(!n||!a)return;if(e.value="rgba",n.value=",",n.before="",!isNumericNode(a))return;const r=t.unit(a.value);r&&"%"===r.unit&&(r.number=String(parseFloat(r.number)/100),a.value=String(r.number))}function replaceWith(e,t,n){const a=e.indexOf(t);e[a]=n}function normalizeHueNode(e){switch(e.unit.toLowerCase()){case"deg":return void(e.unit="");case"rad":return e.unit="",void(e.number=(180*parseFloat(e.number)/Math.PI).toString());case"grad":return e.unit="",void(e.number=(.9*parseFloat(e.number)).toString());case"turn":return e.unit="",void(e.number=(360*parseFloat(e.number)).toString())}}function canParseAsUnit(e){if(!e||!e.value)return!1;try{return!1!==t.unit(e.value)}catch(e){return!1}}function modifiedValues(e,n,a,r){let o;try{o=t(e)}catch(t){n.warn(a,`Failed to parse value '${e}' as a lab or lch function. Leaving the original value intact.`)}if(void 0===o)return;o.walk((e=>{e.type&&"function"===e.type&&("lab"!==e.value.toLowerCase()&&"lch"!==e.value.toLowerCase()||onCSSFunctionSRgb(e))}));const u=String(o);if(u===e)return;const i=t(e);i.walk((e=>{e.type&&"function"===e.type&&("lab"!==e.value.toLowerCase()&&"lch"!==e.value.toLowerCase()||onCSSFunctionDisplayP3(e,n,a,r))}));return{rgb:u,displayP3:String(i)}}const basePlugin=e=>({postcssPlugin:"postcss-lab-function",Declaration:(t,{result:n})=>{if(hasFallback(t))return;if(hasSupportsAtRuleAncestor(t))return;const a=t.value;if(!/(^|[^\w-])(lab|lch)\(/i.test(a.toLowerCase()))return;const r=modifiedValues(a,t,n,e.preserve);void 0!==r&&(e.preserve?(t.cloneBefore({value:r.rgb}),e.subFeatures.displayP3&&t.cloneBefore({value:r.displayP3})):(t.cloneBefore({value:r.rgb}),e.subFeatures.displayP3&&t.cloneBefore({value:r.displayP3}),t.remove()))}});basePlugin.postcss=!0;const postcssPlugin=t=>{const n=Object.assign({enableProgressiveCustomProperties:!0,preserve:!1,subFeatures:{displayP3:!0}},t);return n.subFeatures=Object.assign({displayP3:!0},n.subFeatures),n.enableProgressiveCustomProperties&&(n.preserve||n.subFeatures.displayP3)?{postcssPlugin:"postcss-lab-function",plugins:[e(),basePlugin(n)]}:basePlugin(n)};postcssPlugin.postcss=!0;export{postcssPlugin as default};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "postcss-lab-function",
3
3
  "description": "Use lab() and lch() color functions in CSS",
4
- "version": "4.2.1",
4
+ "version": "5.0.0",
5
5
  "author": "Jonathan Neal <jonathantneal@hotmail.com>",
6
6
  "license": "CC0-1.0",
7
7
  "funding": {
@@ -9,7 +9,7 @@
9
9
  "url": "https://opencollective.com/csstools"
10
10
  },
11
11
  "engines": {
12
- "node": "^12 || ^14 || >=16"
12
+ "node": "^14 || ^16 || >=18"
13
13
  },
14
14
  "main": "dist/index.cjs",
15
15
  "module": "dist/index.mjs",
@@ -28,15 +28,16 @@
28
28
  "dist"
29
29
  ],
30
30
  "dependencies": {
31
- "@csstools/postcss-progressive-custom-properties": "^1.1.0",
31
+ "@csstools/postcss-progressive-custom-properties": "^2.0.0",
32
32
  "postcss-value-parser": "^4.2.0"
33
33
  },
34
34
  "peerDependencies": {
35
- "postcss": "^8.2"
35
+ "postcss": "^8.4"
36
36
  },
37
37
  "scripts": {
38
- "build": "rollup -c ../../rollup/default.js",
39
- "clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true });\"",
38
+ "prebuild": "npm run clean",
39
+ "build": "rollup -c ../../rollup/default.mjs",
40
+ "clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true }); fs.mkdirSync('./dist');\"",
40
41
  "docs": "node ../../.github/bin/generate-docs/install.mjs",
41
42
  "lint": "npm run lint:eslint && npm run lint:package-json",
42
43
  "lint:eslint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern",
@@ -55,7 +56,6 @@
55
56
  "bugs": "https://github.com/csstools/postcss-plugins/issues",
56
57
  "keywords": [
57
58
  "color",
58
- "colors",
59
59
  "comma",
60
60
  "css",
61
61
  "design",