You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
11 KiB
31 lines
11 KiB
2 years ago
|
"use strict";var e=require("@csstools/postcss-progressive-custom-properties"),n=require("postcss-value-parser");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e),u=t(n);
|
||
|
/**
|
||
|
* Simple matrix (and vector) multiplication
|
||
|
* Warning: No error handling for incompatible dimensions!
|
||
|
* @author Lea Verou 2020 MIT License
|
||
|
*
|
||
|
* @license W3C
|
||
|
* https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
|
||
|
*
|
||
|
* @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).
|
||
|
*
|
||
|
* @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/multiply-matrices.js
|
||
|
*/
|
||
|
function a(e,n){const t=e.length;let r,u;r=Array.isArray(e[0])?e:[e],Array.isArray(n[0])||(u=n.map((e=>[e])));const a=u[0].length,o=u[0].map(((e,n)=>u.map((e=>e[n]))));let i=r.map((e=>o.map((n=>Array.isArray(e)?e.reduce(((e,t,r)=>e+t*(n[r]||0)),0):n.reduce(((n,t)=>n+t*e),0)))));return 1===t&&(i=i[0]),1===a?i.map((e=>e[0])):i}
|
||
|
/**
|
||
|
* @license W3C
|
||
|
* https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
|
||
|
*
|
||
|
* @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).
|
||
|
*
|
||
|
* @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js
|
||
|
*/function o(e){return e.map((function(e){const n=e<0?-1:1,t=Math.abs(e);return t<.04045?e/12.92:n*Math.pow((t+.055)/1.055,2.4)}))}function i(e){return e.map((function(e){const n=e<0?-1:1,t=Math.abs(e);return t>.0031308?n*(1.055*Math.pow(t,1/2.4)-.055):12.92*e}))}function l(e){return a([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function s(e){return a([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function c(e){return o(e)}function f(e){return i(e)}function p(e){return a([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],e)}function d(e){return a([[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],e)}function b(e){const n=a([[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],e);return a([[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],n.map((e=>Math.cbrt(e))))}function v(e){const n=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]],n.map((e=>e**3)))}function m(e){const n=180*Math.atan2(e[2],e[1])/Math.PI;return[e[0],Math.sqrt(e[1]**2+e[2]**2),n>=0?n:n+360]}function h(e){return[e[0],e[1]*Math.cos(e[2]*Math.PI/180),e[1]*Math.sin(e[2]*Math.PI/180)]}
|
||
|
/**
|
||
|
* @license W3C
|
||
|
* https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
|
||
|
*
|
||
|
* @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).
|
||
|
*
|
||
|
* @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js
|
||
|
*/function y(e,n){const[t,r,u]=e,[a,o,i]=n,l=t-a,s=r-o,c=u-i;return Math.sqrt(l**2+s**2+c**2)}function g(e,n,t){return function(e,n,t){let r=0,u=e[1];const a=e;for(;u-r>1e-4;){const e=x(n(a));y(h(a),h(t(e)))-.02<1e-4?r=a[1]:u=a[1],a[1]=(u+r)/2}return x(n([...a]))}(e,n,t)}function x(e){return e.map((e=>e<0?0:e>1?1:e))}function F(e){const[n,t,r]=e;return n>=-1e-4&&n<=1.0001&&t>=-1e-4&&t<=1.0001&&r>=-1e-4&&r<=1.0001}function M(e){const[n,t,r]=e;let u=[Math.max(n,0),t,r],a=m(u);return a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),u=v(u),u=d(u),u=f(u),F(u)?[x(u),!0]:[g(a,(e=>f(e=d(e=v(e=h(e))))),(e=>m(e=b(e=p(e=c(e)))))),!1]}function k(e){const[n,t,r]=e,u=[Math.max(n,0),t,r%360];let a=u;return a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),a=h(a),a=v(a),a=d(a),a=f(a),F(a)?[x(a),!0]:[g(u,(e=>f(e=d(e=v(e=h(e))))),(e=>m(e=b(e=p(e=c(e)))))),!1]}function P(e){const[n,t,r]=e;let u=[Math.max(n,0),t,r],a=m(u);return a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),u=v(u),u=s(u),u=i(u),F(u)?x(u).map((e=>Math.round(255*e))):g(a,(e=>i(e=s(e=v(e=h(e))))),(e=>m(e=b(e=l(e=o(e)))))).map((e=>Math.round(255*e)))}function w(e){const[n,t,r]=e,u=[Math.max(n,0),t,r%360];let a=u;return a[0]<1e-6&&(a=[0,0,0]),a[0]>.999999&&(a=[1,0,0]),a=h(a),a=v(a),a=s(a),a=i(a),F(a)?x(a).map((e=>Math.round(255*e))):g(u,(e=>i(e=s(e=v(e=h(e))))),(e=>m(e=b(e=l(e=o(e)))))).map((e=>Math.round(255*e)))}function I(e){const n=e.value,t=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let r=null;if("oklab"===n?r=B(t):"oklch"===n&&(r=q(t)),!r)return;e.value="rgb",function(e,n,t){if(!n||!t)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=u.default.unit(e.value);if(!n)return!1;return!!n.number}(t))return;const r=u.default.unit(t.value);if(!r)return;"%"===r.unit&&(r.number=String(parseFloat(r.number)/100),t.value=String(r.number))}(e,r.slash,r.alpha);const[a,o,i]=j(r),[l,s,c]=C(r),f=("oklab"===n?P:w)([l.number,s.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(f[0])}),$(e.nodes,o,{...o,value:String(f[1])}),$(e.nodes,i,{...i,value:String(f[2])})}function N(e){if(!e||"word"!==e.type)return!1;if(!D(e))return!1;const n=u.default.unit(e.value);return!!n&&("%"===n.unit||""===n.unit)}function S(e){return e&&"function"===e.type&&"calc"===e.value}function O(e){return e&&"function"===e.type&&"var"===e.value}function A(e){return e&&"div"===e.type&&"/"===e.value}function q(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=u.default.unit(e.value);return!(!n||!n.number||"deg"!==n.unit&&"grad"!==n.unit&&"rad"!==n.unit&&"turn"!==n.unit&&""!==n.unit)}(e[2]))return null;const n={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){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.l.number=(parseFloat(n.l.number)/100).toFixed(10)),"%"===n.c.unit&&(n.c.unit="",n.c.number=(parseFloat(n.c.number)/100*.4).toFixed(10)),n):null)}function B(e){if(!N(e[0]))return null;if(!N(e[1]))return null;if(!N(e[2]))return null;const n={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 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.l.number=(parseFloat(n.l.number)/100).toFixe
|