@csstools/postcss-oklab-function 1.0.1 → 1.0.2
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 +5 -0
- package/README.md +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.mjs +1 -1
- package/package.json +69 -63
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changes to PostCSS OKLab Function
|
|
2
2
|
|
|
3
|
+
### 1.0.2 (March 8, 2022)
|
|
4
|
+
|
|
5
|
+
- Fix gamut mapping giving overly unsaturated colors.
|
|
6
|
+
- Implement powerless color components in gamut mapping.
|
|
7
|
+
|
|
3
8
|
### 1.0.1 (February 12, 2022)
|
|
4
9
|
|
|
5
10
|
- Updated `@csstools/postcss-progressive-custom-properties` to `1.1.0`.
|
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# PostCSS OKLab Function [<img src="https://postcss.github.io/postcss/logo.svg" alt="PostCSS Logo" width="90" height="90" align="right">][postcss]
|
|
2
2
|
|
|
3
3
|
[<img alt="npm version" src="https://img.shields.io/npm/v/@csstools/postcss-oklab-function.svg" height="20">][npm-url]
|
|
4
|
+
[<img alt="CSS Standard Status" src="https://cssdb.org/images/badges/oklab-function.svg" height="20">][css-url]
|
|
4
5
|
[<img alt="Build Status" src="https://github.com/csstools/postcss-plugins/workflows/test/badge.svg" height="20">][cli-url]
|
|
5
6
|
[<img alt="Discord" src="https://shields.io/badge/Discord-5865F2?logo=discord&logoColor=white">][discord]
|
|
6
|
-
<!-- [<img alt="CSS Standard Status" src="https://cssdb.org/images/badges/oklab-function.svg" height="20">][css-url] -->
|
|
7
7
|
|
|
8
8
|
[PostCSS OKLab Function] lets you use `oklab` and `oklch` color functions in
|
|
9
9
|
CSS, following the [CSS Color] specification.
|
package/dist/index.cjs
CHANGED
|
@@ -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
|
|
14
|
+
function o(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 o=u[0].length,a=u[0].map(((e,t)=>u.map((e=>e[t]))));let i=r.map((e=>a.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&&(i=i[0]),1===o?i.map((e=>e[0])):i}
|
|
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 n=e.length;let r,u;r=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
|
|
22
|
+
*/function a(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 s(e){return o([[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],e)}function l(e){return o([[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],e)}function c(e){return a(e)}function f(e){return i(e)}function d(e){return o([[.4865709486482162,.26566769316909306,.1982172852343625],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],e)}function p(e){return o([[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],e)}function v(e){const t=o([[.8190224432164319,.3619062562801221,-.12887378261216414],[.0329836671980271,.9292868468965546,.03614466816999844],[.048177199566046255,.26423952494422764,.6335478258136937]],e);return o([[.2104542553,.793617785,-.0040720468],[1.9779984951,-2.428592205,.4505937099],[.0259040371,.7827717662,-.808675766]],t.map((e=>Math.cbrt(e))))}function b(e){const t=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]],t.map((e=>e**3)))}function h(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 m(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 n=e.length;let r,u;r=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 y(e,t){const[n,r,u]=e,[a,
|
|
30
|
+
*/function y(e,t){const[n,r,u]=e,[o,a,i]=t,s=n-o,l=r-a,c=u-i;return Math.sqrt(s**2+l**2+c**2)}function g(e,t,n){return function(e,t,n){let r=0,u=e[1];const o=e;for(;u-r>1e-4;){const e=x(t(o));y(m(o),m(n(e)))-.02<1e-4?r=o[1]:u=o[1],o[1]=(u+r)/2}return x(t([...o]))}(e,t,n)}function x(e){return e.map((e=>e<0?0:e>1?1:e))}function M(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 k(e){const[t,n,r]=e;let u=[Math.max(t,0)/100,n,r],o=h(u);return o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),u=b(u),u=p(u),u=f(u),M(u)?[x(u),!0]:[g(o,(e=>f(e=p(e=b(e=m(e))))),(e=>h(e=v(e=d(e=c(e)))))),!1]}function P(e){const[t,n,r]=e,u=[Math.max(t,0)/100,n,r%360];let o=u;return o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),o=m(o),o=b(o),o=p(o),o=f(o),M(o)?[x(o),!0]:[g(u,(e=>f(e=p(e=b(e=m(e))))),(e=>h(e=v(e=d(e=c(e)))))),!1]}function w(e){const[t,n,r]=e;let u=[Math.max(t,0)/100,n,r],o=h(u);return o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),u=b(u),u=l(u),u=i(u),M(u)?x(u).map((e=>Math.round(255*e))):g(o,(e=>i(e=l(e=b(e=m(e))))),(e=>h(e=v(e=s(e=a(e)))))).map((e=>Math.round(255*e)))}function F(e){const[t,n,r]=e,u=[Math.max(t,0)/100,n,r%360];let o=u;return o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),o=m(o),o=b(o),o=l(o),o=i(o),M(o)?x(o).map((e=>Math.round(255*e))):g(u,(e=>i(e=l(e=b(e=m(e))))),(e=>h(e=v(e=s(e=a(e)))))).map((e=>Math.round(255*e)))}function I(e){const t=e.value,n=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let r=null;if("oklab"===t?r=j(n):"oklch"===t&&(r=E(n)),!r)return;if(n.length>3&&(!r.slash||!r.alpha))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(!L(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[o,a,i]=$(r),[s,l,c]=D(r),f=("oklab"===t?w:F)([s.number,l.number,c.number].map((e=>parseFloat(e))));e.nodes.splice(e.nodes.indexOf(o)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.splice(e.nodes.indexOf(a)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),G(e.nodes,o,{...o,value:String(f[0])}),G(e.nodes,a,{...a,value:String(f[1])}),G(e.nodes,i,{...i,value:String(f[2])})}function N(e){if(!e||"word"!==e.type)return!1;if(!L(e))return!1;const t=u.default.unit(e.value);return!!t&&(!!t.number&&""===t.unit)}function S(e){if(!e||"word"!==e.type)return!1;if(!L(e))return!1;const t=u.default.unit(e.value);return!!t&&"%"===t.unit}function O(e){if(!e||"word"!==e.type)return!1;if(!L(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 B(e){return e&&"div"===e.type&&"/"===e.value}function E(e){if(!S(e[0]))return null;if(!N(e[1]))return null;if(!function(e){if(!e||"word"!==e.type)return!1;if(!L(e))return!1;const t=u.default.unit(e.value);return!(!t||!t.number||"deg"!==t.unit&&"grad"!==t.unit&&"rad"!==t.unit&&"turn"!==t.unit&&""!==t.unit)}(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){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:(B(e[3])&&(t.slash=e[3]),(O(e[4])||A(e[4])||q(e[4]))&&(t.alpha=e[4]),t)}function j(e){if(!S(e[0]))return null;if(!N(e[1]))return null;if(!N(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 B(e[3])&&(t.slash=e[3]),(O(e[4])||A(e[4])||q(e[4]))&&(t.alpha=e[4]),t}function C(e){return void 0!==e.a}function $(e){return C(e)?[e.lNode,e.aNode,e.bNode]:[e.lNode,e.cNode,e.hNode]}function D(e){return C(e)?[e.l,e.a,e.b]:[e.l,e.c,e.h]}function G(e,t,n){const r=e.indexOf(t);e[r]=n}function L(e){if(!e||!e.value)return!1;try{return!1!==u.default.unit(e.value)}catch(e){return!1}}function z(e,t,n,r){let o;try{o=u.default(e)}catch(r){t.warn(n,`Failed to parse value '${e}' as an oklab or oklch function. Leaving the original value intact.`)}if(void 0===o)return;o.walk((e=>{e.type&&"function"===e.type&&("oklab"!==e.value&&"oklch"!==e.value||I(e))}));const a=String(o);if(a===e)return;const i=u.default(e);i.walk((e=>{e.type&&"function"===e.type&&("oklab"!==e.value&&"oklch"!==e.value||function(e,t,n,r){const o=u.default.stringify(e),a=e.value,i=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let s=null;if("oklab"===a?s=j(i):"oklch"===a&&(s=E(i)),!s)return;if(i.length>3&&(!s.slash||!s.alpha))return;e.value="color";const[l,c,f]=$(s),[d,p,v]=D(s),b="oklab"===a?k:P,h=[d.number,p.number,v.number].map((e=>parseFloat(e))),[m,y]=b(h);!y&&r&&t.warn(n,`"${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"}),G(e.nodes,l,{...l,value:m[0].toFixed(5)}),G(e.nodes,c,{...c,value:m[1].toFixed(5)}),G(e.nodes,f,{...f,value:m[2].toFixed(5)})}(e,t,n,r))}));return{rgb:a,displayP3:String(i)}}const H=e=>({postcssPlugin:"postcss-oklab-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===e.prop)return!0}return!1}(t))return;if(function(e){let t=e.parent;for(;t;)if("atrule"===t.type){if("supports"===t.name){if(-1!==t.params.indexOf("oklab("))return!0;if(-1!==t.params.indexOf("oklch("))return!0}t=t.parent}else t=t.parent;return!1}(t))return;const r=t.value;if(!/(^|[^\w-])(oklab|oklch)\(/i.test(r))return;const u=z(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()))}});H.postcss=!0;const J=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-oklab-function",plugins:[r.default(),H(t)]}:H(t)};J.postcss=!0,module.exports=J;
|
package/dist/index.mjs
CHANGED
|
@@ -27,4 +27,4 @@ function t(e,n){const t=e.length;let r,u;r=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 m(e,n){const[t,r,u]=e,[o,a,i]=n,s=t-o,l=r-a,c=u-i;return Math.sqrt(s**2+l**2+c**2)}function
|
|
30
|
+
*/function m(e,n){const[t,r,u]=e,[o,a,i]=n,s=t-o,l=r-a,c=u-i;return Math.sqrt(s**2+l**2+c**2)}function b(e,n,t){return function(e,n,t){let r=0,u=e[1];const o=e;for(;u-r>1e-4;){const e=h(n(o));m(v(o),v(t(e)))-.02<1e-4?r=o[1]:u=o[1],o[1]=(u+r)/2}return h(n([...o]))}(e,n,t)}function h(e){return e.map((e=>e<0?0:e>1?1:e))}function y(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 g(e){const[n,t,r]=e;let u=[Math.max(n,0)/100,t,r],o=d(u);return o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),u=p(u),u=c(u),u=s(u),y(u)?[h(u),!0]:[b(o,(e=>s(e=c(e=p(e=v(e))))),(e=>d(e=f(e=l(e=i(e)))))),!1]}function x(e){const[n,t,r]=e,u=[Math.max(n,0)/100,t,r%360];let o=u;return o[0]<1e-6&&(o=[0,0,0]),o[0]>.999999&&(o=[1,0,0]),o=v(o),o=p(o),o=c(o),o=s(o),y(o)?[h(o),!0]:[b(u,(e=>s(e=c(e=p(e=v(e))))),(e=>d(e=f(e=l(e=i(e)))))),!1]}function M(e){const[n,t,i]=e;let s=[Math.max(n,0)/100,t,i],l=d(s);return l[0]<1e-6&&(l=[0,0,0]),l[0]>.999999&&(l=[1,0,0]),s=p(s),s=a(s),s=u(s),y(s)?h(s).map((e=>Math.round(255*e))):b(l,(e=>u(e=a(e=p(e=v(e))))),(e=>d(e=f(e=o(e=r(e)))))).map((e=>Math.round(255*e)))}function k(e){const[n,t,i]=e,s=[Math.max(n,0)/100,t,i%360];let l=s;return l[0]<1e-6&&(l=[0,0,0]),l[0]>.999999&&(l=[1,0,0]),l=v(l),l=p(l),l=a(l),l=u(l),y(l)?h(l).map((e=>Math.round(255*e))):b(s,(e=>u(e=a(e=p(e=v(e))))),(e=>d(e=f(e=o(e=r(e)))))).map((e=>Math.round(255*e)))}function P(e){const t=e.value,r=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let u=null;if("oklab"===t?u=B(r):"oklch"===t&&(u=A(r)),!u)return;if(r.length>3&&(!u.slash||!u.alpha))return;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(!$(e))return!1;const t=n.unit(e.value);if(!t)return!1;return!!t.number}(r))return;const u=n.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[o,a,i]=j(u),[s,l,c]=q(u),f=("oklab"===t?M:k)([s.number,l.number,c.number].map((e=>parseFloat(e))));e.nodes.splice(e.nodes.indexOf(o)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),e.nodes.splice(e.nodes.indexOf(a)+1,0,{sourceIndex:0,sourceEndIndex:1,value:",",type:"div",before:"",after:""}),C(e.nodes,o,{...o,value:String(f[0])}),C(e.nodes,a,{...a,value:String(f[1])}),C(e.nodes,i,{...i,value:String(f[2])})}function w(e){if(!e||"word"!==e.type)return!1;if(!$(e))return!1;const t=n.unit(e.value);return!!t&&(!!t.number&&""===t.unit)}function F(e){if(!e||"word"!==e.type)return!1;if(!$(e))return!1;const t=n.unit(e.value);return!!t&&"%"===t.unit}function I(e){if(!e||"word"!==e.type)return!1;if(!$(e))return!1;const t=n.unit(e.value);return!!t&&("%"===t.unit||""===t.unit)}function N(e){return e&&"function"===e.type&&"calc"===e.value}function S(e){return e&&"function"===e.type&&"var"===e.value}function O(e){return e&&"div"===e.type&&"/"===e.value}function A(e){if(!F(e[0]))return null;if(!w(e[1]))return null;if(!function(e){if(!e||"word"!==e.type)return!1;if(!$(e))return!1;const t=n.unit(e.value);return!(!t||!t.number||"deg"!==t.unit&&"grad"!==t.unit&&"rad"!==t.unit&&"turn"!==t.unit&&""!==t.unit)}(e[2]))return null;const t={l:n.unit(e[0].value),lNode:e[0],c:n.unit(e[1].value),cNode:e[1],h:n.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()}}(t.h),""!==t.h.unit?null:(O(e[3])&&(t.slash=e[3]),(I(e[4])||N(e[4])||S(e[4]))&&(t.alpha=e[4]),t)}function B(e){if(!F(e[0]))return null;if(!w(e[1]))return null;if(!w(e[2]))return null;const t={l:n.unit(e[0].value),lNode:e[0],a:n.unit(e[1].value),aNode:e[1],b:n.unit(e[2].value),bNode:e[2]};return O(e[3])&&(t.slash=e[3]),(I(e[4])||N(e[4])||S(e[4]))&&(t.alpha=e[4]),t}function E(e){return void 0!==e.a}function j(e){return E(e)?[e.lNode,e.aNode,e.bNode]:[e.lNode,e.cNode,e.hNode]}function q(e){return E(e)?[e.l,e.a,e.b]:[e.l,e.c,e.h]}function C(e,n,t){const r=e.indexOf(n);e[r]=t}function $(e){if(!e||!e.value)return!1;try{return!1!==n.unit(e.value)}catch(e){return!1}}function D(e,t,r,u){let o;try{o=n(e)}catch(n){t.warn(r,`Failed to parse value '${e}' as an oklab or oklch function. Leaving the original value intact.`)}if(void 0===o)return;o.walk((e=>{e.type&&"function"===e.type&&("oklab"!==e.value&&"oklch"!==e.value||P(e))}));const a=String(o);if(a===e)return;const i=n(e);i.walk((e=>{e.type&&"function"===e.type&&("oklab"!==e.value&&"oklch"!==e.value||function(e,t,r,u){const o=n.stringify(e),a=e.value,i=e.nodes.slice().filter((e=>"comment"!==e.type&&"space"!==e.type));let s=null;if("oklab"===a?s=B(i):"oklch"===a&&(s=A(i)),!s)return;if(i.length>3&&(!s.slash||!s.alpha))return;e.value="color";const[l,c,f]=j(s),[p,d,v]=q(s),m="oklab"===a?g:x,b=[p.number,d.number,v.number].map((e=>parseFloat(e))),[h,y]=m(b);!y&&u&&t.warn(r,`"${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"}),C(e.nodes,l,{...l,value:h[0].toFixed(5)}),C(e.nodes,c,{...c,value:h[1].toFixed(5)}),C(e.nodes,f,{...f,value:h[2].toFixed(5)})}(e,t,r,u))}));return{rgb:a,displayP3:String(i)}}const G=e=>({postcssPlugin:"postcss-oklab-function",Declaration:(n,{result:t})=>{if(function(e){const n=e.parent;if(!n)return!1;const t=n.index(e);for(let r=0;r<t;r++){const t=n.nodes[r];if("decl"===t.type&&t.prop===e.prop)return!0}return!1}(n))return;if(function(e){let n=e.parent;for(;n;)if("atrule"===n.type){if("supports"===n.name){if(-1!==n.params.indexOf("oklab("))return!0;if(-1!==n.params.indexOf("oklch("))return!0}n=n.parent}else n=n.parent;return!1}(n))return;const r=n.value;if(!/(^|[^\w-])(oklab|oklch)\(/i.test(r))return;const u=D(r,n,t,e.preserve);void 0!==u&&(e.preserve?(n.cloneBefore({value:u.rgb}),e.subFeatures.displayP3&&n.cloneBefore({value:u.displayP3})):(n.cloneBefore({value:u.rgb}),e.subFeatures.displayP3&&n.cloneBefore({value:u.displayP3}),n.remove()))}});G.postcss=!0;const L=n=>{const t=Object.assign({enableProgressiveCustomProperties:!0,preserve:!1,subFeatures:{displayP3:!0}},n);return t.subFeatures=Object.assign({displayP3:!0},t.subFeatures),t.enableProgressiveCustomProperties&&(t.preserve||t.subFeatures.displayP3)?{postcssPlugin:"postcss-oklab-function",plugins:[e(),G(t)]}:G(t)};L.postcss=!0;export{L as default};
|
package/package.json
CHANGED
|
@@ -1,65 +1,71 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
2
|
+
"name": "@csstools/postcss-oklab-function",
|
|
3
|
+
"description": "Use oklab() and oklch() color functions in CSS",
|
|
4
|
+
"version": "1.0.2",
|
|
5
|
+
"author": "Jonathan Neal <jonathantneal@hotmail.com>",
|
|
6
|
+
"license": "CC0-1.0",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": "^12 || ^14 || >=16"
|
|
9
|
+
},
|
|
10
|
+
"main": "dist/index.cjs",
|
|
11
|
+
"module": "dist/index.mjs",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"import": "./dist/index.mjs",
|
|
16
|
+
"require": "./dist/index.cjs",
|
|
17
|
+
"default": "./dist/index.mjs"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"CHANGELOG.md",
|
|
22
|
+
"LICENSE.md",
|
|
23
|
+
"README.md",
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@csstools/postcss-progressive-custom-properties": "^1.1.0",
|
|
28
|
+
"postcss-value-parser": "^4.2.0"
|
|
29
|
+
},
|
|
30
|
+
"peerDependencies": {
|
|
31
|
+
"postcss": "^8.4"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "rollup -c ../../rollup/default.js",
|
|
35
|
+
"clean": "node -e \"fs.rmSync('./dist', { recursive: true, force: true });\"",
|
|
36
|
+
"docs": "node ../../.github/bin/generate-docs/install.mjs",
|
|
37
|
+
"lint": "npm run lint:eslint && npm run lint:package-json",
|
|
38
|
+
"lint:eslint": "eslint ./src --ext .js --ext .ts --ext .mjs --no-error-on-unmatched-pattern",
|
|
39
|
+
"lint:package-json": "node ../../.github/bin/format-package-json.mjs",
|
|
40
|
+
"prepublishOnly": "npm run clean && npm run build && npm run test",
|
|
41
|
+
"test": "node .tape.mjs && npm run test:exports",
|
|
42
|
+
"test:exports": "node ./test/_import.mjs && node ./test/_require.cjs",
|
|
43
|
+
"test:rewrite-expects": "REWRITE_EXPECTS=true node .tape.mjs"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-oklab-function#readme",
|
|
46
|
+
"repository": {
|
|
47
|
+
"type": "git",
|
|
48
|
+
"url": "https://github.com/csstools/postcss-plugins.git",
|
|
49
|
+
"directory": "plugins/postcss-oklab-function"
|
|
50
|
+
},
|
|
51
|
+
"bugs": "https://github.com/csstools/postcss-plugins/issues",
|
|
52
|
+
"keywords": [
|
|
53
|
+
"color",
|
|
54
|
+
"colors",
|
|
55
|
+
"css",
|
|
56
|
+
"design",
|
|
57
|
+
"display-p3",
|
|
58
|
+
"oklab",
|
|
59
|
+
"oklch",
|
|
60
|
+
"postcss",
|
|
61
|
+
"postcss-plugin",
|
|
62
|
+
"syntax"
|
|
63
|
+
],
|
|
64
|
+
"csstools": {
|
|
65
|
+
"exportName": "postcssOKLabFunction",
|
|
66
|
+
"humanReadableName": "PostCSS OKLab Function"
|
|
67
|
+
},
|
|
68
|
+
"volta": {
|
|
69
|
+
"extends": "../../package.json"
|
|
70
|
+
}
|
|
65
71
|
}
|