gradiente 2.2.0 → 2.3.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/dist/gradiente.global.iife.js +61 -3
- package/dist/index.d.ts +13 -2
- package/dist/index.js +349 -66
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var gradiente=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){let n=10**t;return Math.round(e*n)/n}function n(e,t){let n=10**t;return Math.floor(e*n)/n}function r(e,t){let n=10**t;return Math.ceil(e*n)/n}function i(e,t){let n=10**t;return Math.trunc(e*n)/n}function a(e,t,n){return Math.min(Math.max(e,t),n)}function o(e){return e/100}function s(e){return e*100}function c(e){return e===`deg`||e===`rad`||e===`turn`||e===`grad`}function l(e){try{return typeof u(e)==`number`}catch{return!1}}function u(e){let t=e.match(/^([+-]?(?:\d+\.?\d*|\.\d+))(deg|rad|turn|grad)$/);if(t===null)throw Error(`Invalid angle value: "${e}"`);if(!c(t[2]))throw Error(`Unsupported angle unit: "${t[2]}"`);if(!Number.isFinite(+t[1]))throw SyntaxError(`Invalid angle value: "${t[1]}"`);let n=Number(t[1]);switch(t[2]){case`deg`:return d(n);case`rad`:return n;case`turn`:return p(n);case`grad`:return m(n)}}function d(e){return e*Math.PI/180}function f(e){return e*180/Math.PI}function p(e){return e*Math.PI*2}function m(e){return e*Math.PI/200}function h(e,n=3){return t((e%360+360)%360,n)}function g(e,n=6){let r=Math.PI*2;return t((e%r+r)%r,n)}let _=(e,t)=>{if(typeof e==`number`){if(t===3)return{mode:`rgb`,r:(e>>8&15|e>>4&240)/255,g:(e>>4&15|e&240)/255,b:(e&15|e<<4&240)/255};if(t===4)return{mode:`rgb`,r:(e>>12&15|e>>8&240)/255,g:(e>>8&15|e>>4&240)/255,b:(e>>4&15|e&240)/255,alpha:(e&15|e<<4&240)/255};if(t===6)return{mode:`rgb`,r:(e>>16&255)/255,g:(e>>8&255)/255,b:(e&255)/255};if(t===8)return{mode:`rgb`,r:(e>>24&255)/255,g:(e>>16&255)/255,b:(e>>8&255)/255,alpha:(e&255)/255}}},v={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},y=e=>_(v[e.toLowerCase()],6),b=/^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i,x=e=>{let t;return(t=e.match(b))?_(parseInt(t[1],16),t[1].length):void 0},S=`([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)`;`${S}`;let C=`${S}%`;`${S}`;let w=`(?:${S}%|${S})`,T=`(?:${S}%|${S}|none)`,ee=`(?:${S}(deg|grad|rad|turn)|${S})`;`${S}${S}`;let E=`\\s*,\\s*`;RegExp(`^`+T+`$`);let D=RegExp(`^rgba?\\(\\s*${S}${E}${S}${E}${S}\\s*(?:,\\s*${w}\\s*)?\\)$`),te=RegExp(`^rgba?\\(\\s*${C}${E}${C}${E}${C}\\s*(?:,\\s*${w}\\s*)?\\)$`),ne=e=>{let t={mode:`rgb`},n;if(n=e.match(D))n[1]!==void 0&&(t.r=n[1]/255),n[2]!==void 0&&(t.g=n[2]/255),n[3]!==void 0&&(t.b=n[3]/255);else if(n=e.match(te))n[1]!==void 0&&(t.r=n[1]/100),n[2]!==void 0&&(t.g=n[2]/100),n[3]!==void 0&&(t.b=n[3]/100);else return;return n[4]===void 0?n[5]!==void 0&&(t.alpha=Math.max(0,Math.min(1,+n[5]))):t.alpha=Math.max(0,Math.min(1,n[4]/100)),t},re=(e,t)=>e===void 0?void 0:typeof e==`object`?e.mode===void 0?t?{...e,mode:t}:void 0:e:xe(e),O=(e=`rgb`)=>t=>(t=re(t,e))===void 0?void 0:t.mode===e?t:k[t.mode][e]?k[t.mode][e](t):e===`rgb`?k[t.mode].rgb(t):k.rgb[e](k[t.mode].rgb(t)),k={},ie={},A=[],ae={},oe=e=>e,j=e=>(k[e.mode]={...k[e.mode],...e.toMode},Object.keys(e.fromMode||{}).forEach(t=>{k[t]||(k[t]={}),k[t][e.mode]=e.fromMode[t]}),e.ranges||={},e.difference||={},e.channels.forEach(t=>{if(e.ranges[t]===void 0&&(e.ranges[t]=[0,1]),!e.interpolate[t])throw Error(`Missing interpolator for: ${t}`);typeof e.interpolate[t]==`function`&&(e.interpolate[t]={use:e.interpolate[t]}),e.interpolate[t].fixup||(e.interpolate[t].fixup=oe)}),ie[e.mode]=e,(e.parse||[]).forEach(t=>{ce(t,e.mode)}),O(e.mode)),se=e=>ie[e],ce=(e,t)=>{if(typeof e==`string`){if(!t)throw Error(`'mode' required when 'parser' is a string`);ae[e]=t}else typeof e==`function`&&A.indexOf(e)<0&&A.push(e)},le=/[^\x00-\x7F]|[a-zA-Z_]/,ue=/[^\x00-\x7F]|[-\w]/,M={Function:`function`,Ident:`ident`,Number:`number`,Percentage:`percentage`,ParenClose:`)`,None:`none`,Hue:`hue`,Alpha:`alpha`},N=0;function de(e){let t=e[N],n=e[N+1];return t===`-`||t===`+`?/\d/.test(n)||n===`.`&&/\d/.test(e[N+2]):t===`.`?/\d/.test(n):/\d/.test(t)}function fe(e){if(N>=e.length)return!1;let t=e[N];if(le.test(t))return!0;if(t===`-`){if(e.length-N<2)return!1;let t=e[N+1];return!!(t===`-`||le.test(t))}return!1}let pe={deg:1,rad:180/Math.PI,grad:9/10,turn:360};function P(e){let t=``;if((e[N]===`-`||e[N]===`+`)&&(t+=e[N++]),t+=me(e),e[N]===`.`&&/\d/.test(e[N+1])&&(t+=e[N++]+me(e)),(e[N]===`e`||e[N]===`E`)&&((e[N+1]===`-`||e[N+1]===`+`)&&/\d/.test(e[N+2])?t+=e[N++]+e[N++]+me(e):/\d/.test(e[N+1])&&(t+=e[N++]+me(e))),fe(e)){let n=he(e);return n===`deg`||n===`rad`||n===`turn`||n===`grad`?{type:M.Hue,value:t*pe[n]}:void 0}return e[N]===`%`?(N++,{type:M.Percentage,value:+t}):{type:M.Number,value:+t}}function me(e){let t=``;for(;/\d/.test(e[N]);)t+=e[N++];return t}function he(e){let t=``;for(;N<e.length&&ue.test(e[N]);)t+=e[N++];return t}function ge(e){let t=he(e);return e[N]===`(`?(N++,{type:M.Function,value:t}):t===`none`?{type:M.None,value:void 0}:{type:M.Ident,value:t}}function _e(e=``){let t=e.trim(),n=[],r;for(N=0;N<t.length;){if(r=t[N++],r===`
|
|
2
2
|
`||r===` `||r===` `){for(;N<t.length&&(t[N]===`
|
|
3
3
|
`||t[N]===` `||t[N]===` `);)N++;continue}if(r===`,`)return;if(r===`)`){n.push({type:M.ParenClose});continue}if(r===`+`){if(N--,de(t)){n.push(P(t));continue}return}if(r===`-`){if(N--,de(t)){n.push(P(t));continue}if(fe(t)){n.push({type:M.Ident,value:he(t)});continue}return}if(r===`.`){if(N--,de(t)){n.push(P(t));continue}return}if(r===`/`){for(;N<t.length&&(t[N]===`
|
|
4
|
-
`||t[N]===` `||t[N]===` `);)N++;let e;if(de(t)&&(e=P(t),e.type!==M.Hue)){n.push({type:M.Alpha,value:e});continue}if(fe(t)&&he(t)===`none`){n.push({type:M.Alpha,value:{type:M.None,value:void 0}});continue}return}if(/\d/.test(r)){N--,n.push(P(t));continue}if(le.test(r)){N--,n.push(ge(t));continue}return}return n}function ve(e){e._i=0;let t=e[e._i++];if(!t||t.type!==M.Function||t.value!==`color`||(t=e[e._i++],t.type!==M.Ident))return;let n=ae[t.value];if(!n)return;let r={mode:n},i=ye(e,!1);if(!i)return;let a=se(n).channels;for(let e=0,t,n;e<a.length;e++)t=i[e],n=a[e],t.type!==M.None&&(r[n]=t.type===M.Number?t.value:t.value/100,n===`alpha`&&(r[n]=Math.max(0,Math.min(1,r[n]))));return r}function ye(e,t){let n=[],r;for(;e._i<e.length;){if(r=e[e._i++],r.type===M.None||r.type===M.Number||r.type===M.Alpha||r.type===M.Percentage||t&&r.type===M.Hue){n.push(r);continue}if(r.type===M.ParenClose){if(e._i<e.length)return;continue}return}if(!(n.length<3||n.length>4)){if(n.length===4){if(n[3].type!==M.Alpha)return;n[3]=n[3].value}return n.length===3&&n.push({type:M.None,value:void 0}),n.every(e=>e.type!==M.Alpha)?n:void 0}}function be(e,t){e._i=0;let n=e[e._i++];if(!n||n.type!==M.Function)return;let r=ye(e,t);if(r)return r.unshift(n.value),r}let xe=e=>{if(typeof e!=`string`)return;let t=_e(e),n=t?be(t,!0):void 0,r,i=0,a=A.length;for(;i<a;)if((r=A[i++](e,n))!==void 0)return r;return t?ve(t):void 0};function Se(e,t){if(!t||t[0]!==`rgb`&&t[0]!==`rgba`)return;let n={mode:`rgb`},[,r,i,a,o]=t;if(!(r.type===M.Hue||i.type===M.Hue||a.type===M.Hue))return r.type!==M.None&&(n.r=r.type===M.Number?r.value/255:r.value/100),i.type!==M.None&&(n.g=i.type===M.Number?i.value/255:i.value/100),a.type!==M.None&&(n.b=a.type===M.Number?a.value/255:a.value/100),o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let Ce=e=>e===`transparent`?{mode:`rgb`,r:0,g:0,b:0,alpha:0}:void 0,we=(e,t,n)=>e+n*(t-e),Te=e=>{let t=[];for(let n=0;n<e.length-1;n++){let r=e[n],i=e[n+1];r===void 0&&i===void 0?t.push(void 0):r!==void 0&&i!==void 0?t.push([r,i]):t.push(r===void 0?[i,i]:[r,r])}return t},F=(e=>t=>{let n=Te(t);return t=>{let r=t*n.length,i=t>=1?n.length-1:Math.max(Math.floor(r),0),a=n[i];return a===void 0?void 0:e(a[0],a[1],r-i)}})(we),I=e=>{let t=!1,n=e.map(e=>e===void 0?1:(t=!0,e));return t?n:e},L={mode:`rgb`,channels:[`r`,`g`,`b`,`alpha`],parse:[Se,x,ne,y,Ce,`srgb`],serialize:`srgb`,interpolate:{r:F,g:F,b:F,alpha:{use:F,fixup:I}},gamut:!0,white:{r:1,g:1,b:1},black:{r:0,g:0,b:0}},Ee=(e=0)=>Math.abs(e)**(563/256)*Math.sign(e),De=e=>{let t=Ee(e.r),n=Ee(e.g),r=Ee(e.b),i={mode:`xyz65`,x:.5766690429101305*t+.1855582379065463*n+.1882286462349947*r,y:.297344975250536*t+.6273635662554661*n+.0752914584939979*r,z:.0270313613864123*t+.0706888525358272*n+.9913375368376386*r};return e.alpha!==void 0&&(i.alpha=e.alpha),i},Oe=e=>Math.abs(e)**(256/563)*Math.sign(e),ke=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`a98`,r:Oe(e*2.0415879038107465-t*.5650069742788597-.3447313507783297*n),g:Oe(e*-.9692436362808798+t*1.8759675015077206+.0415550574071756*n),b:Oe(e*.0134442806320312-t*.1183623922310184+1.0151749943912058*n)};return r!==void 0&&(i.alpha=r),i},Ae=(e=0)=>{let t=Math.abs(e);return t<=.04045?e/12.92:(Math.sign(e)||1)*((t+.055)/1.055)**2.4},R=({r:e,g:t,b:n,alpha:r})=>{let i={mode:`lrgb`,r:Ae(e),g:Ae(t),b:Ae(n)};return r!==void 0&&(i.alpha=r),i},z=e=>{let{r:t,g:n,b:r,alpha:i}=R(e),a={mode:`xyz65`,x:.4123907992659593*t+.357584339383878*n+.1804807884018343*r,y:.2126390058715102*t+.715168678767756*n+.0721923153607337*r,z:.0193308187155918*t+.119194779794626*n+.9505321522496607*r};return i!==void 0&&(a.alpha=i),a},je=(e=0)=>{let t=Math.abs(e);return t>.0031308?(Math.sign(e)||1)*(1.055*t**(1/2.4)-.055):e*12.92},B=({r:e,g:t,b:n,alpha:r},i=`rgb`)=>{let a={mode:i,r:je(e),g:je(t),b:je(n)};return r!==void 0&&(a.alpha=r),a},V=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=B({r:e*3.2409699419045226-t*1.537383177570094-.4986107602930034*n,g:e*-.9692436362808796+t*1.8759675015077204+.0415550574071756*n,b:e*.0556300796969936-t*.2039769588889765+1.0569715142428784*n});return r!==void 0&&(i.alpha=r),i},Me={...L,mode:`a98`,parse:[`a98-rgb`],serialize:`a98-rgb`,fromMode:{rgb:e=>ke(z(e)),xyz65:ke},toMode:{rgb:e=>V(De(e)),xyz65:De}},H=e=>(e%=360)<0?e+360:e,Ne=(e,t)=>e.map((n,r,i)=>{if(n===void 0)return n;let a=H(n);return r===0||e[r-1]===void 0?a:t(a-H(i[r-1]))}).reduce((e,t)=>!e.length||t===void 0||e[e.length-1]===void 0?(e.push(t),e):(e.push(t+e[e.length-1]),e),[]),U=e=>Ne(e,e=>Math.abs(e)<=180?e:e-360*Math.sign(e)),Pe=e=>Ne(e,e=>Math.abs(e)>=180||e===0?e:e-360*Math.sign(e)),Fe=e=>Ne(e,e=>e>=0?e:e+360),Ie=e=>Ne(e,e=>e<=0?e:e-360),W=[-.14861,1.78277,-.29227,-.90649,1.97294,0],Le=Math.PI/180,Re=180/Math.PI,ze=W[3]*W[4],Be=W[1]*W[4],Ve=W[1]*W[2]-W[0]*W[3],He=({r:e,g:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(Ve*n+e*ze-t*Be)/(Ve+ze-Be),a=n-i,o=(W[4]*(t-i)-W[2]*a)/W[3],s={mode:`cubehelix`,l:i,s:i===0||i===1?void 0:Math.sqrt(a*a+o*o)/(W[4]*i*(1-i))};return s.s&&(s.h=Math.atan2(o,a)*Re-120),r!==void 0&&(s.alpha=r),s},Ue=({h:e,s:t,l:n,alpha:r})=>{let i={mode:`rgb`};e=(e===void 0?0:e+120)*Le,n===void 0&&(n=0);let a=t===void 0?0:t*n*(1-n),o=Math.cos(e),s=Math.sin(e);return i.r=n+a*(W[0]*o+W[1]*s),i.g=n+a*(W[2]*o+W[3]*s),i.b=n+a*(W[4]*o+W[5]*s),r!==void 0&&(i.alpha=r),i},We=(e,t)=>{if(e.h===void 0||t.h===void 0||!e.s||!t.s)return 0;let n=H(e.h),r=H(t.h),i=Math.sin((r-n+360)/2*Math.PI/180);return 2*Math.sqrt(e.s*t.s)*i},Ge=(e,t)=>{if(e.h===void 0||t.h===void 0)return 0;let n=H(e.h),r=H(t.h);return Math.abs(r-n)>180?n-(r-360*Math.sign(r-n)):r-n},Ke=(e,t)=>{if(e.h===void 0||t.h===void 0||!e.c||!t.c)return 0;let n=H(e.h),r=H(t.h),i=Math.sin((r-n+360)/2*Math.PI/180);return 2*Math.sqrt(e.c*t.c)*i},G=e=>{let t=e.reduce((e,t)=>{if(t!==void 0){let n=t*Math.PI/180;e.sin+=Math.sin(n),e.cos+=Math.cos(n)}return e},{sin:0,cos:0}),n=Math.atan2(t.sin,t.cos)*180/Math.PI;return n<0?360+n:n},qe={mode:`cubehelix`,channels:[`h`,`s`,`l`,`alpha`],parse:[`--cubehelix`],serialize:`--cubehelix`,ranges:{h:[0,360],s:[0,4.614],l:[0,1]},fromMode:{rgb:He},toMode:{rgb:Ue},interpolate:{h:{use:F,fixup:U},s:F,l:F,alpha:{use:F,fixup:I}},difference:{h:We},average:{h:G}},K=({l:e,a:t,b:n,alpha:r},i=`lch`)=>{t===void 0&&(t=0),n===void 0&&(n=0);let a=Math.sqrt(t*t+n*n),o={mode:i,l:e,c:a};return a&&(o.h=H(Math.atan2(n,t)*180/Math.PI)),r!==void 0&&(o.alpha=r),o},q=({l:e,c:t,h:n,alpha:r},i=`lab`)=>{n===void 0&&(n=0);let a={mode:i,l:e,a:t?t*Math.cos(n/180*Math.PI):0,b:t?t*Math.sin(n/180*Math.PI):0};return r!==void 0&&(a.alpha=r),a},Je=29**3/3**3,Ye=6**3/29**3,J={X:.3457/.3585,Y:1,Z:.2958/.3585},Y={X:.3127/.329,Y:1,Z:.3583/.329},Xe=e=>e**3>Ye?e**3:(116*e-16)/Je,Ze=({l:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(e+16)/116,a=t/500+i,o=i-n/200,s={mode:`xyz65`,x:Xe(a)*Y.X,y:Xe(i)*Y.Y,z:Xe(o)*Y.Z};return r!==void 0&&(s.alpha=r),s},Qe=e=>V(Ze(e)),$e=e=>e>Ye?Math.cbrt(e):(Je*e+16)/116,et=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=$e(e/Y.X),a=$e(t/Y.Y),o=$e(n/Y.Z),s={mode:`lab65`,l:116*a-16,a:500*(i-a),b:200*(a-o)};return r!==void 0&&(s.alpha=r),s},tt=e=>{let t=et(z(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},X=26/180*Math.PI,nt=Math.cos(X),rt=Math.sin(X),it=100/Math.log(139/100),at=({l:e,c:t,h:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`lab65`,l:(Math.exp(e*1/it)-1)/.0039},a=(Math.exp(.0435*t*1*1)-1)/.075,o=a*Math.cos(n/180*Math.PI-X),s=a*Math.sin(n/180*Math.PI-X);return i.a=o*nt-s/.83*rt,i.b=o*rt+s/.83*nt,r!==void 0&&(i.alpha=r),i},ot=({l:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=t*nt+n*rt,a=.83*(n*nt-t*rt),o=Math.sqrt(i*i+a*a),s={mode:`dlch`,l:it/1*Math.log(1+.0039*e),c:Math.log(1+.075*o)/(.0435*1*1)};return s.c&&(s.h=H((Math.atan2(a,i)+X)/Math.PI*180)),r!==void 0&&(s.alpha=r),s},st=e=>at(K(e,`dlch`)),ct=e=>q(ot(e),`dlab`),lt={mode:`dlab`,parse:[`--din99o-lab`],serialize:`--din99o-lab`,toMode:{lab65:st,rgb:e=>Qe(st(e))},fromMode:{lab65:ct,rgb:e=>ct(tt(e))},channels:[`l`,`a`,`b`,`alpha`],ranges:{l:[0,100],a:[-40.09,45.501],b:[-40.469,44.344]},interpolate:{l:F,a:F,b:F,alpha:{use:F,fixup:I}}},ut={mode:`dlch`,parse:[`--din99o-lch`],serialize:`--din99o-lch`,toMode:{lab65:at,dlab:e=>q(e,`dlab`),rgb:e=>Qe(at(e))},fromMode:{lab65:ot,dlab:e=>K(e,`dlch`),rgb:e=>ot(tt(e))},channels:[`l`,`c`,`h`,`alpha`],ranges:{l:[0,100],c:[0,51.484],h:[0,360]},interpolate:{l:F,c:F,h:{use:F,fixup:U},alpha:{use:F,fixup:I}},difference:{h:Ke},average:{h:G}};function dt({h:e,s:t,i:n,alpha:r}){e=H(e===void 0?0:e),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.abs(e/60%2-1),a;switch(Math.floor(e/60)){case 0:a={r:n*(1+t*(3/(2-i)-1)),g:n*(1+t*(3*(1-i)/(2-i)-1)),b:n*(1-t)};break;case 1:a={r:n*(1+t*(3*(1-i)/(2-i)-1)),g:n*(1+t*(3/(2-i)-1)),b:n*(1-t)};break;case 2:a={r:n*(1-t),g:n*(1+t*(3/(2-i)-1)),b:n*(1+t*(3*(1-i)/(2-i)-1))};break;case 3:a={r:n*(1-t),g:n*(1+t*(3*(1-i)/(2-i)-1)),b:n*(1+t*(3/(2-i)-1))};break;case 4:a={r:n*(1+t*(3*(1-i)/(2-i)-1)),g:n*(1-t),b:n*(1+t*(3/(2-i)-1))};break;case 5:a={r:n*(1+t*(3/(2-i)-1)),g:n*(1-t),b:n*(1+t*(3*(1-i)/(2-i)-1))};break;default:a={r:n*(1-t),g:n*(1-t),b:n*(1-t)}}return a.mode=`rgb`,r!==void 0&&(a.alpha=r),a}function ft({r:e,g:t,b:n,alpha:r}){e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.max(e,t,n),a=Math.min(e,t,n),o={mode:`hsi`,s:e+t+n===0?0:1-3*a/(e+t+n),i:(e+t+n)/3};return i-a!==0&&(o.h=(i===e?(t-n)/(i-a)+(t<n)*6:i===t?(n-e)/(i-a)+2:(e-t)/(i-a)+4)*60),r!==void 0&&(o.alpha=r),o}let pt={mode:`hsi`,toMode:{rgb:dt},parse:[`--hsi`],serialize:`--hsi`,fromMode:{rgb:ft},channels:[`h`,`s`,`i`,`alpha`],ranges:{h:[0,360]},gamut:`rgb`,interpolate:{h:{use:F,fixup:U},s:F,i:F,alpha:{use:F,fixup:I}},difference:{h:We},average:{h:G}};function mt({h:e,s:t,l:n,alpha:r}){e=H(e===void 0?0:e),t===void 0&&(t=0),n===void 0&&(n=0);let i=n+t*(n<.5?n:1-n),a=i-(i-n)*2*Math.abs(e/60%2-1),o;switch(Math.floor(e/60)){case 0:o={r:i,g:a,b:2*n-i};break;case 1:o={r:a,g:i,b:2*n-i};break;case 2:o={r:2*n-i,g:i,b:a};break;case 3:o={r:2*n-i,g:a,b:i};break;case 4:o={r:a,g:2*n-i,b:i};break;case 5:o={r:i,g:2*n-i,b:a};break;default:o={r:2*n-i,g:2*n-i,b:2*n-i}}return o.mode=`rgb`,r!==void 0&&(o.alpha=r),o}function ht({r:e,g:t,b:n,alpha:r}){e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.max(e,t,n),a=Math.min(e,t,n),o={mode:`hsl`,s:i===a?0:(i-a)/(1-Math.abs(i+a-1)),l:.5*(i+a)};return i-a!==0&&(o.h=(i===e?(t-n)/(i-a)+(t<n)*6:i===t?(n-e)/(i-a)+2:(e-t)/(i-a)+4)*60),r!==void 0&&(o.alpha=r),o}let gt=(e,t)=>{switch(t){case`deg`:return+e;case`rad`:return e/Math.PI*180;case`grad`:return e/10*9;case`turn`:return e*360}},_t=RegExp(`^hsla?\\(\\s*${ee}${E}${C}${E}${C}\\s*(?:,\\s*${w}\\s*)?\\)$`),vt=e=>{let t=e.match(_t);if(!t)return;let n={mode:`hsl`};return t[3]===void 0?t[1]!==void 0&&t[2]!==void 0&&(n.h=gt(t[1],t[2])):n.h=+t[3],t[4]!==void 0&&(n.s=Math.min(Math.max(0,t[4]/100),1)),t[5]!==void 0&&(n.l=Math.min(Math.max(0,t[5]/100),1)),t[6]===void 0?t[7]!==void 0&&(n.alpha=Math.max(0,Math.min(1,+t[7]))):n.alpha=Math.max(0,Math.min(1,t[6]/100)),n};function yt(e,t){if(!t||t[0]!==`hsl`&&t[0]!==`hsla`)return;let n={mode:`hsl`},[,r,i,a,o]=t;if(r.type!==M.None){if(r.type===M.Percentage)return;n.h=r.value}if(i.type!==M.None){if(i.type===M.Hue)return;n.s=i.value/100}if(a.type!==M.None){if(a.type===M.Hue)return;n.l=a.value/100}return o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let bt={mode:`hsl`,toMode:{rgb:mt},fromMode:{rgb:ht},channels:[`h`,`s`,`l`,`alpha`],ranges:{h:[0,360]},gamut:`rgb`,parse:[yt,vt],serialize:e=>`hsl(${e.h===void 0?`none`:e.h} ${e.s===void 0?`none`:e.s*100+`%`} ${e.l===void 0?`none`:e.l*100+`%`}${e.alpha<1?` / ${e.alpha}`:``})`,interpolate:{h:{use:F,fixup:U},s:F,l:F,alpha:{use:F,fixup:I}},difference:{h:We},average:{h:G}};function xt({h:e,s:t,v:n,alpha:r}){e=H(e===void 0?0:e),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.abs(e/60%2-1),a;switch(Math.floor(e/60)){case 0:a={r:n,g:n*(1-t*i),b:n*(1-t)};break;case 1:a={r:n*(1-t*i),g:n,b:n*(1-t)};break;case 2:a={r:n*(1-t),g:n,b:n*(1-t*i)};break;case 3:a={r:n*(1-t),g:n*(1-t*i),b:n};break;case 4:a={r:n*(1-t*i),g:n*(1-t),b:n};break;case 5:a={r:n,g:n*(1-t),b:n*(1-t*i)};break;default:a={r:n*(1-t),g:n*(1-t),b:n*(1-t)}}return a.mode=`rgb`,r!==void 0&&(a.alpha=r),a}function St({r:e,g:t,b:n,alpha:r}){e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.max(e,t,n),a=Math.min(e,t,n),o={mode:`hsv`,s:i===0?0:1-a/i,v:i};return i-a!==0&&(o.h=(i===e?(t-n)/(i-a)+(t<n)*6:i===t?(n-e)/(i-a)+2:(e-t)/(i-a)+4)*60),r!==void 0&&(o.alpha=r),o}let Ct={mode:`hsv`,toMode:{rgb:xt},parse:[`--hsv`],serialize:`--hsv`,fromMode:{rgb:St},channels:[`h`,`s`,`v`,`alpha`],ranges:{h:[0,360]},gamut:`rgb`,interpolate:{h:{use:F,fixup:U},s:F,v:F,alpha:{use:F,fixup:I}},difference:{h:We},average:{h:G}};function wt({h:e,w:t,b:n,alpha:r}){if(t===void 0&&(t=0),n===void 0&&(n=0),t+n>1){let e=t+n;t/=e,n/=e}return xt({h:e,s:n===1?1:1-t/(1-n),v:1-n,alpha:r})}function Tt(e){let t=St(e);if(t===void 0)return;let n=t.s===void 0?0:t.s,r=t.v===void 0?0:t.v,i={mode:`hwb`,w:(1-n)*r,b:1-r};return t.h!==void 0&&(i.h=t.h),t.alpha!==void 0&&(i.alpha=t.alpha),i}function Et(e,t){if(!t||t[0]!==`hwb`)return;let n={mode:`hwb`},[,r,i,a,o]=t;if(r.type!==M.None){if(r.type===M.Percentage)return;n.h=r.value}if(i.type!==M.None){if(i.type===M.Hue)return;n.w=i.value/100}if(a.type!==M.None){if(a.type===M.Hue)return;n.b=a.value/100}return o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let Dt={mode:`hwb`,toMode:{rgb:wt},fromMode:{rgb:Tt},channels:[`h`,`w`,`b`,`alpha`],ranges:{h:[0,360]},gamut:`rgb`,parse:[Et],serialize:e=>`hwb(${e.h===void 0?`none`:e.h} ${e.w===void 0?`none`:e.w*100+`%`} ${e.b===void 0?`none`:e.b*100+`%`}${e.alpha<1?` / ${e.alpha}`:``})`,interpolate:{h:{use:F,fixup:U},w:F,b:F,alpha:{use:F,fixup:I}},difference:{h:Ge},average:{h:G}},Ot=.1593017578125,kt=78.84375,At=.8359375,jt=18.8515625,Mt=18.6875;function Nt(e){if(e<0)return 0;let t=e**(1/kt);return 1e4*(Math.max(0,t-At)/(jt-Mt*t))**(1/Ot)}function Pt(e){if(e<0)return 0;let t=(e/1e4)**Ot;return((At+jt*t)/(1+Mt*t))**+kt}let Ft=e=>Math.max(e/203,0),It=({i:e,t,p:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Nt(e+.008609037037932761*t+.11102962500302593*n),a=Nt(e-.00860903703793275*t-.11102962500302599*n),o=Nt(e+.5600313357106791*t-.32062717498731885*n),s={mode:`xyz65`,x:Ft(2.070152218389422*i-1.3263473389671556*a+.2066510476294051*o),y:Ft(.3647385209748074*i+.680566024947227*a-.0453045459220346*o),z:Ft(-.049747207535812*i-.0492609666966138*a+1.1880659249923042*o)};return r!==void 0&&(s.alpha=r),s},Lt=(e=0)=>Math.max(e*203,0),Rt=({x:e,y:t,z:n,alpha:r})=>{let i=Lt(e),a=Lt(t),o=Lt(n),s=Pt(.3592832590121217*i+.6976051147779502*a-.0358915932320289*o),c=Pt(-.1920808463704995*i+1.1004767970374323*a+.0753748658519118*o),l=Pt(.0070797844607477*i+.0748396662186366*a+.8433265453898765*o),u={mode:`itp`,i:.5*s+.5*c,t:1.61376953125*s-3.323486328125*c+1.709716796875*l,p:4.378173828125*s-4.24560546875*c-.132568359375*l};return r!==void 0&&(u.alpha=r),u},zt={mode:`itp`,channels:[`i`,`t`,`p`,`alpha`],parse:[`--ictcp`],serialize:`--ictcp`,toMode:{xyz65:It,rgb:e=>V(It(e))},fromMode:{xyz65:Rt,rgb:e=>Rt(z(e))},ranges:{i:[0,.581],t:[-.369,.272],p:[-.164,.331]},interpolate:{i:F,t:F,p:F,alpha:{use:F,fixup:I}}},Bt=e=>{if(e<0)return 0;let t=(e/1e4)**Ot;return((At+jt*t)/(1+Mt*t))**134.03437499999998},Vt=(e=0)=>Math.max(e*203,0),Ht=({x:e,y:t,z:n,alpha:r})=>{e=Vt(e),t=Vt(t),n=Vt(n);let i=1.15*e-.15*n,a=.66*t+.34*e,o=Bt(.41478972*i+.579999*a+.014648*n),s=Bt(-.20151*i+1.120649*a+.0531008*n),c=Bt(-.0166008*i+.2648*a+.6684799*n),l=(o+s)/2,u={mode:`jab`,j:.44*l/(1-.56*l)-16295499532821565e-27,a:3.524*o-4.066708*s+.542708*c,b:.199076*o+1.096799*s-1.295875*c};return r!==void 0&&(u.alpha=r),u},Ut=16295499532821565e-27,Wt=e=>{if(e<0)return 0;let t=e**(1/134.03437499999998);return 1e4*((At-t)/(Mt*t-jt))**(1/Ot)},Gt=e=>e/203,Kt=({j:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(e+Ut)/(.44+.56*(e+Ut)),a=Wt(i+.13860504*t+.058047316*n),o=Wt(i-.13860504*t-.058047316*n),s=Wt(i-.096019242*t-.8118919*n),c={mode:`xyz65`,x:Gt(1.661373024652174*a-.914523081304348*o+.23136208173913045*s),y:Gt(-.3250758611844533*a+1.571847026732543*o-.21825383453227928*s),z:Gt(-.090982811*a-.31272829*o+1.5227666*s)};return r!==void 0&&(c.alpha=r),c},qt=e=>{let t=Ht(z(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},Jt=e=>V(Kt(e)),Yt={mode:`jab`,channels:[`j`,`a`,`b`,`alpha`],parse:[`--jzazbz`],serialize:`--jzazbz`,fromMode:{rgb:qt,xyz65:Ht},toMode:{rgb:Jt,xyz65:Kt},ranges:{j:[0,.222],a:[-.109,.129],b:[-.185,.134]},interpolate:{j:F,a:F,b:F,alpha:{use:F,fixup:I}}},Xt=({j:e,a:t,b:n,alpha:r})=>{t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.sqrt(t*t+n*n),a={mode:`jch`,j:e,c:i};return i&&(a.h=H(Math.atan2(n,t)*180/Math.PI)),r!==void 0&&(a.alpha=r),a},Zt=({j:e,c:t,h:n,alpha:r})=>{n===void 0&&(n=0);let i={mode:`jab`,j:e,a:t?t*Math.cos(n/180*Math.PI):0,b:t?t*Math.sin(n/180*Math.PI):0};return r!==void 0&&(i.alpha=r),i},Qt={mode:`jch`,parse:[`--jzczhz`],serialize:`--jzczhz`,toMode:{jab:Zt,rgb:e=>Jt(Zt(e))},fromMode:{rgb:e=>Xt(qt(e)),jab:Xt},channels:[`j`,`c`,`h`,`alpha`],ranges:{j:[0,.221],c:[0,.19],h:[0,360]},interpolate:{h:{use:F,fixup:U},c:F,j:F,alpha:{use:F,fixup:I}},difference:{h:Ke},average:{h:G}},$t=29**3/3**3,en=6**3/29**3,tn=e=>e**3>en?e**3:(116*e-16)/$t,nn=({l:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(e+16)/116,a=t/500+i,o=i-n/200,s={mode:`xyz50`,x:tn(a)*J.X,y:tn(i)*J.Y,z:tn(o)*J.Z};return r!==void 0&&(s.alpha=r),s},rn=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=B({r:e*3.1341359569958707-t*1.6173863321612538-.4906619460083532*n,g:e*-.978795502912089+t*1.916254567259524+.03344273116131949*n,b:e*.07195537988411677-t*.2289768264158322+1.405386058324125*n});return r!==void 0&&(i.alpha=r),i},an=e=>rn(nn(e)),on=e=>{let{r:t,g:n,b:r,alpha:i}=R(e),a={mode:`xyz50`,x:.436065742824811*t+.3851514688337912*n+.14307845442264197*r,y:.22249319175623702*t+.7168870538238823*n+.06061979053616537*r,z:.013923904500943465*t+.09708128566574634*n+.7140993584005155*r};return i!==void 0&&(a.alpha=i),a},sn=e=>e>en?Math.cbrt(e):($t*e+16)/116,cn=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=sn(e/J.X),a=sn(t/J.Y),o=sn(n/J.Z),s={mode:`lab`,l:116*a-16,a:500*(i-a),b:200*(a-o)};return r!==void 0&&(s.alpha=r),s},ln=e=>{let t=cn(on(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t};function un(e,t){if(!t||t[0]!==`lab`)return;let n={mode:`lab`},[,r,i,a,o]=t;if(!(r.type===M.Hue||i.type===M.Hue||a.type===M.Hue))return r.type!==M.None&&(n.l=Math.min(Math.max(0,r.value),100)),i.type!==M.None&&(n.a=i.type===M.Number?i.value:i.value*125/100),a.type!==M.None&&(n.b=a.type===M.Number?a.value:a.value*125/100),o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let dn={mode:`lab`,toMode:{xyz50:nn,rgb:an},fromMode:{xyz50:cn,rgb:ln},channels:[`l`,`a`,`b`,`alpha`],ranges:{l:[0,100],a:[-125,125],b:[-125,125]},parse:[un],serialize:e=>`lab(${e.l===void 0?`none`:e.l} ${e.a===void 0?`none`:e.a} ${e.b===void 0?`none`:e.b}${e.alpha<1?` / ${e.alpha}`:``})`,interpolate:{l:F,a:F,b:F,alpha:{use:F,fixup:I}}},fn={...dn,mode:`lab65`,parse:[`--lab-d65`],serialize:`--lab-d65`,toMode:{xyz65:Ze,rgb:Qe},fromMode:{xyz65:et,rgb:tt},ranges:{l:[0,100],a:[-125,125],b:[-125,125]}};function pn(e,t){if(!t||t[0]!==`lch`)return;let n={mode:`lch`},[,r,i,a,o]=t;if(r.type!==M.None){if(r.type===M.Hue)return;n.l=Math.min(Math.max(0,r.value),100)}if(i.type!==M.None&&(n.c=Math.max(0,i.type===M.Number?i.value:i.value*150/100)),a.type!==M.None){if(a.type===M.Percentage)return;n.h=a.value}return o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let mn={mode:`lch`,toMode:{lab:q,rgb:e=>an(q(e))},fromMode:{rgb:e=>K(ln(e)),lab:K},channels:[`l`,`c`,`h`,`alpha`],ranges:{l:[0,100],c:[0,150],h:[0,360]},parse:[pn],serialize:e=>`lch(${e.l===void 0?`none`:e.l} ${e.c===void 0?`none`:e.c} ${e.h===void 0?`none`:e.h}${e.alpha<1?` / ${e.alpha}`:``})`,interpolate:{h:{use:F,fixup:U},c:F,l:F,alpha:{use:F,fixup:I}},difference:{h:Ke},average:{h:G}},hn={...mn,mode:`lch65`,parse:[`--lch-d65`],serialize:`--lch-d65`,toMode:{lab65:e=>q(e,`lab65`),rgb:e=>Qe(q(e,`lab65`))},fromMode:{rgb:e=>K(tt(e),`lch65`),lab65:e=>K(e,`lch65`)},ranges:{l:[0,100],c:[0,150],h:[0,360]}},gn=({l:e,u:t,v:n,alpha:r})=>{t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.sqrt(t*t+n*n),a={mode:`lchuv`,l:e,c:i};return i&&(a.h=H(Math.atan2(n,t)*180/Math.PI)),r!==void 0&&(a.alpha=r),a},_n=({l:e,c:t,h:n,alpha:r})=>{n===void 0&&(n=0);let i={mode:`luv`,l:e,u:t?t*Math.cos(n/180*Math.PI):0,v:t?t*Math.sin(n/180*Math.PI):0};return r!==void 0&&(i.alpha=r),i},vn=(e,t,n)=>4*e/(e+15*t+3*n),yn=(e,t,n)=>9*t/(e+15*t+3*n),bn=vn(J.X,J.Y,J.Z),xn=yn(J.X,J.Y,J.Z),Sn=e=>e<=en?$t*e:116*Math.cbrt(e)-16,Cn=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Sn(t/J.Y),a=vn(e,t,n),o=yn(e,t,n);!isFinite(a)||!isFinite(o)?i=a=o=0:(a=13*i*(a-bn),o=13*i*(o-xn));let s={mode:`luv`,l:i,u:a,v:o};return r!==void 0&&(s.alpha=r),s},wn=(e,t,n)=>4*e/(e+15*t+3*n),Tn=(e,t,n)=>9*t/(e+15*t+3*n),En=wn(J.X,J.Y,J.Z),Dn=Tn(J.X,J.Y,J.Z),On=({l:e,u:t,v:n,alpha:r})=>{if(e===void 0&&(e=0),e===0)return{mode:`xyz50`,x:0,y:0,z:0};t===void 0&&(t=0),n===void 0&&(n=0);let i=t/(13*e)+En,a=n/(13*e)+Dn,o=J.Y*(e<=8?e/$t:((e+16)/116)**3),s={mode:`xyz50`,x:9*i*o/(4*a),y:o,z:o*(12-3*i-20*a)/(4*a)};return r!==void 0&&(s.alpha=r),s},kn={mode:`lchuv`,toMode:{luv:_n,rgb:e=>rn(On(_n(e)))},fromMode:{rgb:e=>gn(Cn(on(e))),luv:gn},channels:[`l`,`c`,`h`,`alpha`],parse:[`--lchuv`],serialize:`--lchuv`,ranges:{l:[0,100],c:[0,176.956],h:[0,360]},interpolate:{h:{use:F,fixup:U},c:F,l:F,alpha:{use:F,fixup:I}},difference:{h:Ke},average:{h:G}},An={...L,mode:`lrgb`,toMode:{rgb:B},fromMode:{rgb:R},parse:[`srgb-linear`],serialize:`srgb-linear`},jn={mode:`luv`,toMode:{xyz50:On,rgb:e=>rn(On(e))},fromMode:{xyz50:Cn,rgb:e=>Cn(on(e))},channels:[`l`,`u`,`v`,`alpha`],parse:[`--luv`],serialize:`--luv`,ranges:{l:[0,100],u:[-84.936,175.042],v:[-125.882,87.243]},interpolate:{l:F,u:F,v:F,alpha:{use:F,fixup:I}}},Mn=({r:e,g:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.cbrt(.412221469470763*e+.5363325372617348*t+.0514459932675022*n),a=Math.cbrt(.2119034958178252*e+.6806995506452344*t+.1073969535369406*n),o=Math.cbrt(.0883024591900564*e+.2817188391361215*t+.6299787016738222*n),s={mode:`oklab`,l:.210454268309314*i+.7936177747023054*a-.0040720430116193*o,a:1.9779985324311684*i-2.42859224204858*a+.450593709617411*o,b:.0259040424655478*i+.7827717124575296*a-.8086757549230774*o};return r!==void 0&&(s.alpha=r),s},Nn=e=>{let t=Mn(R(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},Pn=({l:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(e+.3963377773761749*t+.2158037573099136*n)**3,a=(e-.1055613458156586*t-.0638541728258133*n)**3,o=(e-.0894841775298119*t-1.2914855480194092*n)**3,s={mode:`lrgb`,r:4.076741636075957*i-3.3077115392580616*a+.2309699031821044*o,g:-1.2684379732850317*i+2.6097573492876887*a-.3413193760026573*o,b:-.0041960761386756*i-.7034186179359362*a+1.7076146940746117*o};return r!==void 0&&(s.alpha=r),s},Fn=e=>B(Pn(e));function In(e){let t=.206,n=.03,r=(1+t)/(1+n);return .5*(r*e-t+Math.sqrt((r*e-t)*(r*e-t)+4*n*r*e))}function Ln(e){let t=.206,n=.03;return(1+t)/(1+n),(e*e+t*e)/(1.170873786407767*(e+n))}function Rn(e,t){let n,r,i,a,o,s,c,l;-1.88170328*e-.80936493*t>1?(n=1.19086277,r=1.76576728,i=.59662641,a=.75515197,o=.56771245,s=4.0767416621,c=-3.3077115913,l=.2309699292):1.81444104*e-1.19445276*t>1?(n=.73956515,r=-.45954404,i=.08285427,a=.1254107,o=.14503204,s=-1.2684380046,c=2.6097574011,l=-.3413193965):(n=1.35733652,r=-.00915799,i=-1.1513021,a=-.50559606,o=.00692167,s=-.0041960863,c=-.7034186147,l=1.707614701);let u=n+r*e+i*t+a*e*e+o*e*t,d=.3963377774*e+.2158037573*t,f=-.1055613458*e-.0638541728*t,p=-.0894841775*e-1.291485548*t;{let e=1+u*d,t=1+u*f,n=1+u*p,r=e*e*e,i=t*t*t,a=n*n*n,o=3*d*e*e,m=3*f*t*t,h=3*p*n*n,g=6*d*d*e,_=6*f*f*t,v=6*p*p*n,y=s*r+c*i+l*a,b=s*o+c*m+l*h,x=s*g+c*_+l*v;u-=y*b/(b*b-.5*y*x)}return u}function zn(e,t){let n=Rn(e,t),r=Pn({l:1,a:n*e,b:n*t}),i=Math.cbrt(1/Math.max(r.r,r.g,r.b));return[i,i*n]}function Bn(e,t,n,r,i,a=null){a||=zn(e,t);let o;if((n-i)*a[1]-(a[0]-i)*r<=0)o=a[1]*i/(r*a[0]+a[1]*(i-n));else{o=a[1]*(i-1)/(r*(a[0]-1)+a[1]*(i-n));{let a=n-i,s=r,c=.3963377774*e+.2158037573*t,l=-.1055613458*e-.0638541728*t,u=-.0894841775*e-1.291485548*t,d=a+s*c,f=a+s*l,p=a+s*u;{let e=i*(1-o)+o*n,t=o*r,a=e+t*c,s=e+t*l,m=e+t*u,h=a*a*a,g=s*s*s,_=m*m*m,v=3*d*a*a,y=3*f*s*s,b=3*p*m*m,x=6*d*d*a,S=6*f*f*s,C=6*p*p*m,w=4.0767416621*h-3.3077115913*g+.2309699292*_-1,T=4.0767416621*v-3.3077115913*y+.2309699292*b,ee=4.0767416621*x-3.3077115913*S+.2309699292*C,E=T/(T*T-.5*w*ee),D=-w*E,te=-1.2684380046*h+2.6097574011*g-.3413193965*_-1,ne=-1.2684380046*v+2.6097574011*y-.3413193965*b,re=-1.2684380046*x+2.6097574011*S-.3413193965*C,O=ne/(ne*ne-.5*te*re),k=-te*O,ie=-.0041960863*h-.7034186147*g+1.707614701*_-1,A=-.0041960863*v-.7034186147*y+1.707614701*b,ae=-.0041960863*x-.7034186147*S+1.707614701*C,oe=A/(A*A-.5*ie*ae),j=-ie*oe;D=E>=0?D:1e6,k=O>=0?k:1e6,j=oe>=0?j:1e6,o+=Math.min(D,Math.min(k,j))}}}return o}function Vn(e,t,n=null){n||=zn(e,t);let r=n[0],i=n[1];return[i/r,i/(1-r)]}function Hn(e,t,n){let r=zn(t,n),i=Bn(t,n,e,1,e,r),a=Vn(t,n,r),o=.11516993+1/(7.4477897+4.1590124*n+t*(-2.19557347+1.75198401*n+t*(-2.13704948-10.02301043*n+t*(-4.24894561+5.38770819*n+4.69891013*t)))),s=.11239642+1/(1.6132032-.68124379*n+t*(.40370612+.90148123*n+t*(-.27087943+.6122399*n+t*(.00299215-.45399568*n-.14661872*t)))),c=i/Math.min(e*a[0],(1-e)*a[1]),l=e*o,u=(1-e)*s,d=.9*c*Math.sqrt(Math.sqrt(1/(1/(l*l*l*l)+1/(u*u*u*u))));return l=e*.4,u=(1-e)*.8,[Math.sqrt(1/(1/(l*l)+1/(u*u))),d,i]}function Un(e){let t=e.l===void 0?0:e.l,n=e.a===void 0?0:e.a,r=e.b===void 0?0:e.b,i={mode:`okhsl`,l:In(t)};e.alpha!==void 0&&(i.alpha=e.alpha);let a=Math.sqrt(n*n+r*r);if(!a)return i.s=0,i;let[o,s,c]=Hn(t,n/a,r/a),l;if(a<s){let e=.8*o,t=1-e/s;l=(a-0)/(e+t*(a-0))*.8}else{let e=s,t=.2*s*s*1.25*1.25/o,n=1-t/(c-s);l=.8+.2*((a-e)/(t+n*(a-e)))}return l&&(i.s=l,i.h=H(Math.atan2(r,n)*180/Math.PI)),i}function Wn(e){let t=e.h===void 0?0:e.h,n=e.s===void 0?0:e.s,r=e.l===void 0?0:e.l,i={mode:`oklab`,l:Ln(r)};if(e.alpha!==void 0&&(i.alpha=e.alpha),!n||r===1)return i.a=i.b=0,i;let a=Math.cos(t/180*Math.PI),o=Math.sin(t/180*Math.PI),[s,c,l]=Hn(i.l,a,o),u,d,f,p;n<.8?(u=1.25*n,d=0,f=.8*s,p=1-f/c):(u=5*(n-.8),d=c,f=.2*c*c*1.25*1.25/s,p=1-f/(l-c));let m=d+u*f/(1-p*u);return i.a=m*a,i.b=m*o,i}let Gn={...bt,mode:`okhsl`,channels:[`h`,`s`,`l`,`alpha`],parse:[`--okhsl`],serialize:`--okhsl`,fromMode:{oklab:Un,rgb:e=>Un(Nn(e))},toMode:{oklab:Wn,rgb:e=>Fn(Wn(e))}};function Kn(e){let t=e.l===void 0?0:e.l,n=e.a===void 0?0:e.a,r=e.b===void 0?0:e.b,i=Math.sqrt(n*n+r*r),a=i?n/i:1,o=i?r/i:1,[s,c]=Vn(a,o),l=.5,u=1-l/s,d=c/(i+t*c),f=d*t,p=d*i,m=Ln(f),h=p*m/f,g=Pn({l:m,a:a*h,b:o*h}),_=Math.cbrt(1/Math.max(g.r,g.g,g.b,0));t/=_,i=i/_*In(t)/t,t=In(t);let v={mode:`okhsv`,s:i?(l+c)*p/(c*l+c*u*p):0,v:t?t/f:0};return v.s&&(v.h=H(Math.atan2(r,n)*180/Math.PI)),e.alpha!==void 0&&(v.alpha=e.alpha),v}function qn(e){let t={mode:`oklab`};e.alpha!==void 0&&(t.alpha=e.alpha);let n=e.h===void 0?0:e.h,r=e.s===void 0?0:e.s,i=e.v===void 0?0:e.v,a=Math.cos(n/180*Math.PI),o=Math.sin(n/180*Math.PI),[s,c]=Vn(a,o),l=.5,u=1-l/s,d=1-r*l/(l+c-c*u*r),f=r*c*l/(l+c-c*u*r),p=Ln(d),m=f*p/d,h=Pn({l:p,a:a*m,b:o*m}),g=Math.cbrt(1/Math.max(h.r,h.g,h.b,0)),_=Ln(i*d),v=f*_/d;return t.l=_*g,t.a=v*a*g,t.b=v*o*g,t}let Jn={...Ct,mode:`okhsv`,channels:[`h`,`s`,`v`,`alpha`],parse:[`--okhsv`],serialize:`--okhsv`,fromMode:{oklab:Kn,rgb:e=>Kn(Nn(e))},toMode:{oklab:qn,rgb:e=>Fn(qn(e))}};function Yn(e,t){if(!t||t[0]!==`oklab`)return;let n={mode:`oklab`},[,r,i,a,o]=t;if(!(r.type===M.Hue||i.type===M.Hue||a.type===M.Hue))return r.type!==M.None&&(n.l=Math.min(Math.max(0,r.type===M.Number?r.value:r.value/100),1)),i.type!==M.None&&(n.a=i.type===M.Number?i.value:i.value*.4/100),a.type!==M.None&&(n.b=a.type===M.Number?a.value:a.value*.4/100),o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let Xn={...dn,mode:`oklab`,toMode:{lrgb:Pn,rgb:Fn},fromMode:{lrgb:Mn,rgb:Nn},ranges:{l:[0,1],a:[-.4,.4],b:[-.4,.4]},parse:[Yn],serialize:e=>`oklab(${e.l===void 0?`none`:e.l} ${e.a===void 0?`none`:e.a} ${e.b===void 0?`none`:e.b}${e.alpha<1?` / ${e.alpha}`:``})`};function Zn(e,t){if(!t||t[0]!==`oklch`)return;let n={mode:`oklch`},[,r,i,a,o]=t;if(r.type!==M.None){if(r.type===M.Hue)return;n.l=Math.min(Math.max(0,r.type===M.Number?r.value:r.value/100),1)}if(i.type!==M.None&&(n.c=Math.max(0,i.type===M.Number?i.value:i.value*.4/100)),a.type!==M.None){if(a.type===M.Percentage)return;n.h=a.value}return o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let Qn={...mn,mode:`oklch`,toMode:{oklab:e=>q(e,`oklab`),rgb:e=>Fn(q(e,`oklab`))},fromMode:{rgb:e=>K(Nn(e),`oklch`),oklab:e=>K(e,`oklch`)},parse:[Zn],serialize:e=>`oklch(${e.l===void 0?`none`:e.l} ${e.c===void 0?`none`:e.c} ${e.h===void 0?`none`:e.h}${e.alpha<1?` / ${e.alpha}`:``})`,ranges:{l:[0,1],c:[0,.4],h:[0,360]}},$n=e=>{let{r:t,g:n,b:r,alpha:i}=R(e),a={mode:`xyz65`,x:.486570948648216*t+.265667693169093*n+.1982172852343625*r,y:.2289745640697487*t+.6917385218365062*n+.079286914093745*r,z:0*t+.0451133818589026*n+1.043944368900976*r};return i!==void 0&&(a.alpha=i),a},er=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=B({r:e*2.4934969119414263-t*.9313836179191242-.402710784450717*n,g:e*-.8294889695615749+t*1.7626640603183465+.0236246858419436*n,b:e*.0358458302437845-t*.0761723892680418+.9568845240076871*n},`p3`);return r!==void 0&&(i.alpha=r),i},tr={...L,mode:`p3`,parse:[`display-p3`],serialize:`display-p3`,fromMode:{rgb:e=>er(z(e)),xyz65:er},toMode:{rgb:e=>V($n(e)),xyz65:$n}},nr=e=>{let t=Math.abs(e);return t>=1/512?Math.sign(e)*t**(1/1.8):16*e},rr=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`prophoto`,r:nr(e*1.3457868816471585-t*.2555720873797946-.0511018649755453*n),g:nr(e*-.5446307051249019+t*1.5082477428451466+.0205274474364214*n),b:nr(e*0+t*0+1.2119675456389452*n)};return r!==void 0&&(i.alpha=r),i},ir=(e=0)=>{let t=Math.abs(e);return t>=16/512?Math.sign(e)*t**1.8:e/16},ar=e=>{let t=ir(e.r),n=ir(e.g),r=ir(e.b),i={mode:`xyz50`,x:.7977666449006423*t+.1351812974005331*n+.0313477341283922*r,y:.2880748288194013*t+.7118352342418731*n+899369387256e-16*r,z:0*t+0*n+.8251046025104602*r};return e.alpha!==void 0&&(i.alpha=e.alpha),i},or={...L,mode:`prophoto`,parse:[`prophoto-rgb`],serialize:`prophoto-rgb`,fromMode:{xyz50:rr,rgb:e=>rr(on(e))},toMode:{xyz50:ar,rgb:e=>rn(ar(e))}},sr=1.09929682680944,cr=e=>{let t=Math.abs(e);return t>.018053968510807?(Math.sign(e)||1)*(sr*t**.45-(sr-1)):4.5*e},lr=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`rec2020`,r:cr(e*1.7166511879712683-t*.3556707837763925-.2533662813736599*n),g:cr(e*-.6666843518324893+t*1.6164812366349395+.0157685458139111*n),b:cr(e*.0176398574453108-t*.0427706132578085+.9421031212354739*n)};return r!==void 0&&(i.alpha=r),i},ur=1.09929682680944,dr=(e=0)=>{let t=Math.abs(e);return t<.018053968510807*4.5?e/4.5:(Math.sign(e)||1)*((t+ur-1)/ur)**(1/.45)},fr=e=>{let t=dr(e.r),n=dr(e.g),r=dr(e.b),i={mode:`xyz65`,x:.6369580483012911*t+.1446169035862083*n+.1688809751641721*r,y:.262700212011267*t+.6779980715188708*n+.059301716469862*r,z:0*t+.0280726930490874*n+1.0609850577107909*r};return e.alpha!==void 0&&(i.alpha=e.alpha),i},pr={...L,mode:`rec2020`,fromMode:{xyz65:lr,rgb:e=>lr(z(e))},toMode:{xyz65:fr,rgb:e=>V(fr(e))},parse:[`rec2020`],serialize:`rec2020`},Z=.0037930732552754493,mr=Math.cbrt(Z),hr=e=>Math.cbrt(e)-mr,gr=e=>{let{r:t,g:n,b:r,alpha:i}=R(e),a=hr(.3*t+.622*n+.078*r+Z),o=hr(.23*t+.692*n+.078*r+Z),s=hr(.2434226892454782*t+.2047674442449682*n+.5518098665095535*r+Z),c={mode:`xyb`,x:(a-o)/2,y:(a+o)/2,b:s-(a+o)/2};return i!==void 0&&(c.alpha=i),c},_r=e=>(e+mr)**3,vr={mode:`xyb`,channels:[`x`,`y`,`b`,`alpha`],parse:[`--xyb`],serialize:`--xyb`,toMode:{rgb:({x:e,y:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=_r(e+t)-Z,a=_r(t-e)-Z,o=_r(n+t)-Z,s=B({r:11.031566904639861*i-9.866943908131562*a-.16462299650829934*o,g:-3.2541473810744237*i+4.418770377582723*a-.16462299650829934*o,b:-3.6588512867136815*i+2.7129230459360922*a+1.9459282407775895*o});return r!==void 0&&(s.alpha=r),s}},fromMode:{rgb:gr},ranges:{x:[-.0154,.0281],y:[0,.8453],b:[-.2778,.388]},interpolate:{x:F,y:F,b:F,alpha:{use:F,fixup:I}}},yr={mode:`xyz50`,parse:[`xyz-d50`],serialize:`xyz-d50`,toMode:{rgb:rn,lab:cn},fromMode:{rgb:on,lab:nn},channels:[`x`,`y`,`z`,`alpha`],ranges:{x:[0,.964],y:[0,.999],z:[0,.825]},interpolate:{x:F,y:F,z:F,alpha:{use:F,fixup:I}}},br={mode:`xyz65`,toMode:{rgb:V,xyz50:e=>{let{x:t,y:n,z:r,alpha:i}=e;t===void 0&&(t=0),n===void 0&&(n=0),r===void 0&&(r=0);let a={mode:`xyz50`,x:1.0479298208405488*t+.0229467933410191*n-.0501922295431356*r,y:.0296278156881593*t+.990434484573249*n-.0170738250293851*r,z:-.0092430581525912*t+.0150551448965779*n+.7518742899580008*r};return i!==void 0&&(a.alpha=i),a}},fromMode:{rgb:z,xyz50:e=>{let{x:t,y:n,z:r,alpha:i}=e;t===void 0&&(t=0),n===void 0&&(n=0),r===void 0&&(r=0);let a={mode:`xyz65`,x:.9554734527042182*t-.0230985368742614*n+.0632593086610217*r,y:-.0283697069632081*t+1.0099954580058226*n+.021041398966943*r,z:.0123140016883199*t-.0205076964334779*n+1.3303659366080753*r};return i!==void 0&&(a.alpha=i),a}},ranges:{x:[0,.95],y:[0,1],z:[0,1.088]},channels:[`x`,`y`,`z`,`alpha`],parse:[`xyz`,`xyz-d65`],serialize:`xyz-d65`,interpolate:{x:F,y:F,z:F,alpha:{use:F,fixup:I}}},xr={mode:`yiq`,toMode:{rgb:({y:e,i:t,q:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`rgb`,r:e+.95608445*t+.6208885*n,g:e-.27137664*t-.6486059*n,b:e-1.10561724*t+1.70250126*n};return r!==void 0&&(i.alpha=r),i}},fromMode:{rgb:({r:e,g:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`yiq`,y:.29889531*e+.58662247*t+.11448223*n,i:.59597799*e-.2741761*t-.32180189*n,q:.21147017*e-.52261711*t+.31114694*n};return r!==void 0&&(i.alpha=r),i}},channels:[`y`,`i`,`q`,`alpha`],parse:[`--yiq`],serialize:`--yiq`,ranges:{i:[-.595,.595],q:[-.522,.522]},interpolate:{y:F,i:F,q:F,alpha:{use:F,fixup:I}}},Sr=(e,t)=>Math.round(e*(t=10**t))/t,Cr=((e=4)=>t=>typeof t==`number`?Sr(t,e):t)(2),wr=e=>Math.max(0,Math.min(1,e||0)),Tr=e=>Math.round(wr(e)*255),Er=O(`rgb`),Dr=e=>{if(e===void 0)return;let t=Tr(e.r),n=Tr(e.g),r=Tr(e.b);return e.alpha===void 0||e.alpha===1?`rgb(${t}, ${n}, ${r})`:`rgba(${t}, ${n}, ${r}, ${Cr(wr(e.alpha))})`},Q=e=>Dr(Er(e)),Or=(e,t=`rgb`,n=!1)=>{let r=t?se(t).channels:null,i=t?O(t):re;return a=>{let o=i(a);if(!o)return;let s=(r||se(o.mode).channels).reduce((n,r)=>{let i=e(o[r],r,o,t);return i!==void 0&&!isNaN(i)&&(n[r]=i),n},{mode:o.mode});if(!n)return s;let c=re(a);return c&&c.mode!==s.mode?O(c.mode)(s):s}},kr=(e,t,n)=>t===`alpha`?e:(e||0)*(n.alpha===void 0?1:n.alpha),Ar=(e,t,n)=>t!==`alpha`&&n.alpha!==0?(e||0)/(n.alpha===void 0?1:n.alpha):e,jr=e=>{e[0]===void 0&&(e[0]=0),e[e.length-1]===void 0&&(e[e.length-1]=1);let t=1,n,r,i,a;for(;t<e.length;){if(e[t]===void 0){for(r=t,i=e[t-1],n=t;e[n]===void 0;)n++;for(a=(e[n]-i)/(n-t+1);t<n;)e[t]=i+(t+1-r)*a,t++}else e[t]<e[t-1]&&(e[t]=e[t-1]);t++}return e},Mr=(e=.5)=>t=>e<=0?1:e>=1?0:t**+(Math.log(.5)/Math.log(e)),Nr=e=>typeof e==`function`,$=e=>e&&typeof e==`object`,Pr=e=>typeof e==`number`,Fr=(e,t=`rgb`,n,r)=>{let i=se(t),a=O(t),o=[],s=[],c={};e.forEach(e=>{Array.isArray(e)?(o.push(a(e[0])),s.push(e[1])):Pr(e)||Nr(e)?c[s.length]=e:(o.push(a(e)),s.push(void 0))}),jr(s);let l=i.channels.reduce((e,t)=>{let r;return r=$(n)&&$(n[t])&&n[t].fixup?n[t].fixup:$(i.interpolate[t])&&i.interpolate[t].fixup?i.interpolate[t].fixup:e=>e,e[t]=r(o.map(e=>e[t])),e},{});if(r){let e=o.map((e,n)=>i.channels.reduce((e,t)=>(e[t]=l[t][n],e),{mode:t}));l=i.channels.reduce((n,i)=>(n[i]=e.map(e=>{let n=r(e[i],i,e,t);return isNaN(n)?void 0:n}),n),{})}let u=i.channels.reduce((e,t)=>{let r;return Nr(n)?r=n:$(n)&&Nr(n[t])?r=n[t]:$(n)&&$(n[t])&&n[t].use?r=n[t].use:Nr(i.interpolate[t])?r=i.interpolate[t]:$(i.interpolate[t])&&(r=i.interpolate[t].use),e[t]=r(l[t]),e},{}),d=o.length-1;return e=>{if(e=Math.min(Math.max(0,e),1),e<=s[0])return o[0];if(e>s[d])return o[d];let n=0;for(;s[n]<e;)n++;let r=s[n-1],a=s[n]-r,l=(e-r)/a,f=c[n]||c[0];f!==void 0&&(Pr(f)&&(f=Mr((f-r)/a)),l=f(l));let p=(n-1+l)/d;return i.channels.reduce((e,t)=>{let n=u[t](p);return n!==void 0&&(e[t]=n),e},{mode:t})}},Ir=(e,t=`rgb`,n)=>Fr(e,t,n);((e,t)=>(n,r=`rgb`,i)=>{let a=t?Or(t,r):void 0,o=Fr(n,r,i,e);return a?e=>a(o(e)):o})(kr,Ar),j(Me),j(qe),j(lt),j(ut),j(pt),j(bt),j(Ct),j(Dt),j(zt),j(Yt),j(Qt),j(dn),j(fn),j(mn),j(hn),j(kn),j(An),j(jn),j(Gn),j(Jn),j(Xn),j(Qn),j(tr),j(or),j(pr),j(L),j(vr),j(yr),j(br),j(xr);let Lr=function(e){return e.START=`^`,e.END=`.`,e.GROUP_OPEN=`(`,e.GROUP_CLOSE=`)`,e.COMMA=`,`,e.SEQUENCE_OPEN=`[`,e.SEQUENCE_CLOSE=`]`,e.OR=`|`,e.AND=`&`,e.NOT=`!`,e.REPEAT=`~`,e.CONFIG=`config`,e.COLOR_STOP=`color-stop`,e.COLOR_HINT=`color-hint`,e}({});function Rr(e,t,n,r){let i=n,a=r;for(;a<t.length;){let o=t[a];if(o===`.`||o===`)`||o===`]`||o===`|`)break;if(o===`,`){a+=1;continue}let s=Br(e,t,i,a);if(!s.matched)return{matched:!1,nextInputIndex:n,nextPatternIndex:r};i=s.nextInputIndex,a=s.nextPatternIndex}return{matched:!0,nextInputIndex:i,nextPatternIndex:a}}function zr(e,t,n,r){let i=t[r],a=e[n];if(i!==`config`&&i!==`color-stop`&&i!==`color-hint`)throw Error(`Expected entity token at pattern index ${r}`);return!a||a.type!==i?{matched:!1,nextInputIndex:n,nextPatternIndex:r}:{matched:!0,nextInputIndex:n+1,nextPatternIndex:r+1}}function Br(e,t,n,r){let i=t[r];if(i===`config`||i===`color-stop`||i===`color-hint`)return zr(e,t,n,r);if(i===`[`)return Hr(e,t,n,r);if(i===`(`)return Wr(e,t,n,r);if(i===`~`)return Gr(e,t,n,r);throw Error(`Unsupported primary token "${i}" at pattern index ${r}`)}function Vr(e,t,n,r){if(e[t]!==n)throw Error(`Expected "${n}" at pattern index ${t}, got "${e[t]}"`);let i=0;for(let a=t;a<e.length;a+=1){let t=e[a];if(t===n){i+=1;continue}if(t===r&&(--i,i===0))return a}throw Error(`Unclosed token pair "${n}${r}"`)}function Hr(e,t,n,r){if(t[r]!==`[`)throw Error(`Expected "[" at pattern index ${r}`);let i=Vr(t,r,`[`,`]`),a=n,o=r+1;for(;o<i;){if(t[o]===`,`){o+=1;continue}let i=Br(e,t,a,o);if(!i.matched)return{matched:!1,nextInputIndex:n,nextPatternIndex:r};a=i.nextInputIndex,o=i.nextPatternIndex}return{matched:!0,nextInputIndex:a,nextPatternIndex:i+1}}function Ur(e){let t=[],n=[],r=0,i=0;for(let a=0;a<e.length;a+=1){let o=e[a];if(o===`(`){r+=1,n.push(o);continue}if(o===`)`){--r,n.push(o);continue}if(o===`[`){i+=1,n.push(o);continue}if(o===`]`){--i,n.push(o);continue}if(o===`|`&&r===0&&i===0){t.push(n),n=[];continue}n.push(o)}return n.length>0&&t.push(n),t}function Wr(e,t,n,r){if(t[r]!==`(`)throw Error(`Expected "(" at pattern index ${r}`);let i=Vr(t,r,`(`,`)`),a=Ur(t.slice(r+1,i));for(let t of a){let r=Rr(e,t,n,0);if(r.matched)return{matched:!0,nextInputIndex:r.nextInputIndex,nextPatternIndex:i+1}}return{matched:!1,nextInputIndex:n,nextPatternIndex:r}}function Gr(e,t,n,r){if(t[r]!==`~`)throw Error(`Expected "~" at pattern index ${r}`);let i=n,a=r+1;for(;;){let n=Br(e,t,i,a);if(!n.matched)break;if(n.nextInputIndex===i)throw Error(`Repeat expression did not consume input`);i=n.nextInputIndex}let o=Kr(t,a);return{matched:!0,nextInputIndex:i,nextPatternIndex:o}}function Kr(e,t){let n=e[t];if(n===`config`||n===`color-stop`||n===`color-hint`)return t+1;if(n===`[`)return Vr(e,t,`[`,`]`)+1;if(n===`(`)return Vr(e,t,`(`,`)`)+1;if(n===`~`)return Kr(e,t+1);throw Error(`Unsupported token "${n}" in getPrimaryEndIndex`)}function qr(e){return Yr(e),Qr(e),$r(e),!0}function Jr(e){try{return qr(e),!0}catch{return!1}}function Yr(e){let t=ei(e);if(t.length===0)throw Error(`Pattern cannot be empty`);if(t[0]!==`^`)throw Error(`Pattern must start with ^`);if(t[t.length-1]!==`.`)throw Error(`Pattern must end with "."`);let n=0,r=0;for(let e=0;e<t.length;e+=1){let i=t[e];if(i===`(`){n+=1;continue}if(i===`)`){if(--n,n<0)throw Error(`Unexpected ")" at token index ${e}`);continue}if(i===`[`){r+=1;continue}if(i===`]`){if(--r,r<0)throw Error(`Unexpected "]" at token index ${e}`);continue}}if(n!==0)throw Error(`Unclosed group "()" in pattern`);if(r!==0)throw Error(`Unclosed sequence "[]" in pattern`);return!0}function Xr(e){try{return Yr(e),!0}catch{return!1}}let Zr={"^":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"(":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"[":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"|":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"&":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"!":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"~":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],",":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],config:[`,`,`|`,`&`,`)`,`]`,`.`],"color-stop":[`,`,`|`,`&`,`)`,`]`,`.`],"color-hint":[`,`,`|`,`&`,`)`,`]`,`.`],")":[`,`,`|`,`&`,`)`,`]`,`.`],"]":[`,`,`|`,`&`,`)`,`]`,`.`],".":[]};function Qr(e){let t=ei(e);if(t.length===0)throw Error(`Pattern cannot be empty`);for(let e=0;e<t.length-1;e+=1){let n=t[e],r=t[e+1],i=Zr[n];if(!i)throw Error(`No semantic transition rule defined for token "${n}"`);if(!i.includes(r))throw Error(`Token "${r}" is not allowed after "${n}" at index ${e+1}`)}return!0}function $r(e){let t=ei(e);for(let e=0;e<t.length;e+=1){let n=t[e],r=t[e+1],i=t[e-1];if(n===`(`&&r===`)`)throw Error(`Empty group "()" is not allowed at token index ${e}`);if(n===`[`&&r===`]`)throw Error(`Empty sequence "[]" is not allowed at token index ${e}`);if(n===`,`){if(i===void 0||r===void 0)throw Error(`Unexpected "," at token index ${e}`);if(i===`[`)throw Error(`Sequence cannot start with "," at token index ${e}`);if(r===`]`)throw Error(`Sequence cannot end with "," at token index ${e}`);if(i===`,`||r===`,`)throw Error(`Unexpected consecutive "," at token index ${e}`)}}return!0}function ei(e){let t=e.trim(),n=[],r=0;for(;r<t.length;){let e=t.slice(r),i=t[r];if(/\s/.test(i)){r+=1;continue}if(e.startsWith(`color-stop`)){n.push(`color-stop`),r+=10;continue}if(e.startsWith(`color-hint`)){n.push(`color-hint`),r+=10;continue}if(e.startsWith(`config`)){n.push(`config`),r+=6;continue}if(i===`^`||i===`.`||i===`(`||i===`)`||i===`[`||i===`]`||i===`,`||i===`|`||i===`&`||i===`!`||i===`~`){n.push(i),r+=1;continue}throw Error(`Unexpected token near "${e}" at index ${r}`)}return n}function ti(e,t){try{return ni(e,t),!0}catch{return!1}}function ni(e,t){qr(t);let n=ei(t).slice(1,-1),r=Rr(e,n,0,0);if(!r.matched)throw Error(`Input does not match pattern`);if(r.nextInputIndex!==e.length)throw Error(`Pattern did not consume all inputs`);if(r.nextPatternIndex!==n.length)throw Error(`Input ended before pattern was fully matched`);return!0}function ri(e,t=`^[([config,color-stop,([color-hint,color-stop]|color-stop)]|color-stop),~([color-hint,color-stop]|color-stop)].`){let n=e.trim();if(n.length===0)throw Error(`Expected function call, received empty string`);let{functionName:r,isRepeating:i,inputs:a}=ci(n),o=si(a);return ni(o,t),{functionName:r,isRepeating:i,inputs:o}}function ii(e){return/^-?\d*\.?\d+(%|deg|rad|turn|grad|px|em|rem|vh|vw|vmin|vmax|cm|mm|in|pt|pc|q)?$/i.test(e.trim())}function ai(e){try{let t=fi(e)[0];return xe(t)!==void 0}catch{return!1}}function oi(e){return!ii(e)&&!ai(e)}function si(e){let t=e.map(e=>e.trim()).filter(e=>e.length>0);return t.length===0?[]:t.map((e,t)=>t===0&&!ai(e)?{type:`config`,value:e}:ai(e)?{type:`color-stop`,value:e}:ii(e)?{type:`color-hint`,value:e}:{type:`config`,value:e})}function ci(e){let t=e.indexOf(`(`);if(t<=0)throw Error(`Expected function opening parenthesis`);let n=e.slice(0,t).trim();if(n.length===0)throw Error(`Expected function name before "("`);let r=n.startsWith(`repeating-`);r&&(n=n.slice(10));let i=li(e,t);if(i===-1)throw Error(`Unclosed function parenthesis`);let a=ui(e.slice(t+1,i));return{functionName:n,isRepeating:r,inputs:a}}function li(e,t){let n=0;for(let r=t;r<e.length;r+=1){let t=e[r];if(t===`(`){n+=1;continue}if(t===`)`){if(--n,n===0)return r;if(n<0)return-1}}return-1}function ui(e){let t=[],n=``,r=0,i=0,a=0;for(let o=0;o<e.length;o+=1){let s=e[o];if(s===`(`){r+=1,n+=s;continue}if(s===`)`){--r,n+=s;continue}if(s===`{`){i+=1,n+=s;continue}if(s===`}`){--i,n+=s;continue}if(s===`[`){a+=1,n+=s;continue}if(s===`]`){--a,n+=s;continue}if(s===`,`&&r===0&&i===0&&a===0){di(t,n),n=``;continue}n+=s}return di(t,n),t}function di(e,t){let n=t.trim();n.length>0&&e.push(n)}function fi(e){let t=e.trim(),n=[],r=``,i=0,a=0,o=0;for(let e=0;e<t.length;e+=1){let s=t[e];if(s===`(`){i+=1,r+=s;continue}if(s===`)`){--i,r+=s;continue}if(s===`{`){a+=1,r+=s;continue}if(s===`}`){--a,r+=s;continue}if(s===`[`){o+=1,r+=s;continue}if(s===`]`){--o,r+=s;continue}if(/\s/.test(s)&&i===0&&a===0&&o===0){r.trim().length>0&&(n.push(r.trim()),r=``);continue}r+=s}return r.trim().length>0&&n.push(r.trim()),n}let pi=[`oklab`,`lch`,`oklch`,`hsl`,`hwb`,`lab`,`srgb`,`srgb-linear`,`xyz`,`display-p3`,`a98-rgb`,`prophoto-rgb`,`rec2020`],mi=[`shorter`,`longer`,`increasing`,`decreasing`],hi=[`hsl`,`hwb`,`lch`,`oklch`];function gi(e){return mi.includes(e)}function _i(e){return pi.includes(e)}function vi(e){return hi.includes(e)}var yi=class{_isRepeating;_config;_stops;constructor(e){this._isRepeating=e.isRepeating,this._config=this._cloneConfig(e.config),this._stops=this._getSortedStops(this._cloneStops(e.stops)),this._validateConfig(this._config),this._validateStops(this._stops)}get isRepeating(){return this._isRepeating}get config(){return this._cloneConfig(this._config)}get stops(){return this._cloneStops(this._stops)}toJSON(){return{type:this.type,isRepeating:this.isRepeating,config:this._cloneConfig(this.config),stops:this._cloneStops(this.stops)}}addStop(e){let t=[...this._cloneStops(this._stops),...this._cloneStops([e])],n=this._getSortedStops(t);this._validateStops(n),this._stops=n}static fromString(e){throw Error(`Not implimented`)}static fromAbi(e){throw Error(`Not implimented`)}removeStop(e){if(!Number.isInteger(e))throw TypeError(`Gradient stop index must be an integer`);if(e<0||e>=this._stops.length)throw RangeError(`Gradient stop index is out of bounds`);if(this._stops.filter(e=>e.type===`color-stop`).length<=this._minColorStopsCount())throw Error(`Color stop count should be greather than ${this._minColorStopsCount()}`);let t=e+1>this._stops.length-1?this._stops.length-1:e+1,n=e-1>=0?e-1:0;e!==t&&this._stops[t].type===`color-hint`&&this._stops.splice(t,1),this._stops.splice(e,1),e!==n&&this._stops[n].type===`color-hint`&&this._stops.splice(n,1)}equals(e){if(this.type!==e.type||this.isRepeating!==e.isRepeating||JSON.stringify(this.config)!==JSON.stringify(e.config)||this.stops.length!==e.stops.length)return!1;for(let t=0;t<this.stops.length;t++){let n=this.stops[t],r=e.stops[t];if(n.type!==r.type||n.value!==r.value||n.position!==r.position)return!1}return!0}_minColorStopsCount(){return 0}_getSortedStops(e){return e.map((e,t)=>({stop:e,index:t})).sort((e,t)=>e.stop.position===t.stop.position?e.index-t.index:e.stop.position-t.stop.position).map(e=>e.stop)}_validateStops(e){this._validateStopsShape(e),this._validateStopsSequence(e)}_validateStopsShape(e){if(!Array.isArray(e))throw TypeError(`Gradient stops must be an array`);for(let t of e){if(typeof t!=`object`||!t)throw TypeError(`Gradient stop must be an object`);if(t.type!==`color-stop`&&t.type!==`color-hint`)throw TypeError(`Invalid gradient stop type: ${String(t.type)}`);if(typeof t.value!=`string`)throw TypeError(`Gradient stop value must be a string`);if(typeof t.position!=`number`||Number.isNaN(t.position))throw TypeError(`Gradient stop position must be a valid number`)}}_validateStopsSequence(e){if(e.length<this._minColorStopsCount())throw TypeError(`Gradient must contain at least ${this._minColorStopsCount()} stop`);if(e[0].type!==`color-stop`)throw TypeError(`Gradient stop sequence must start with a color-stop`);if(e[e.length-1].type===`color-hint`)throw TypeError(`Gradient stop sequence cannot end with a color-hint`);for(let t=1;t<e.length;t++){let n=e[t-1],r=e[t];if(n.type===`color-hint`&&r.type!==`color-stop`)throw TypeError(`A color-hint must be followed by a color-stop`)}}_cloneStops(e){return structuredClone(e)}_cloneConfig(e){return structuredClone(e)}_buildSerializedStopTokens(){let e=[];for(let t=0;t<this.stops.length;t++){let n=this.stops[t];if(n.type===`color-hint`){e.push({type:`color-hint`,position:n.position});continue}let r=this.stops[t+1];if(r&&r.type===`color-stop`&&r.value===n.value){e.push({type:`color-stop`,value:n.value,positions:[n.position,r.position]}),t+=1;continue}e.push({type:`color-stop`,value:n.value,positions:[n.position]})}return e}_canOmitAllStopPositions(e){let t=e.filter(e=>e.type===`color-stop`);if(e.some(e=>e.type===`color-hint`)||t.some(e=>e.positions.length!==1)||t.length<=1)return!1;for(let e=0;e<t.length;e++){let n=e/(t.length-1),r=t[e].positions[0];if(Math.abs(r-n)>1e-6)return!1}return!0}_serializeStopsCompact(){let e=this._buildSerializedStopTokens();return this._canOmitAllStopPositions(e)?e.map(e=>{if(e.type!==`color-stop`)throw Error(`Unexpected color-hint token in compact stop serialization`);return e.value}):e.map(e=>e.type===`color-hint`?`${this._formatPercent(e.position)}%`:e.positions.length===2?`${e.value} ${this._formatPercent(e.positions[0])}% ${this._formatPercent(e.positions[1])}%`:`${e.value} ${this._formatPercent(e.positions[0])}%`)}_formatPercent(e){return t(e*100,3)}static _normalizeAbiInputsToStops(e){let t=[];for(let n of e){if(n.type===`color-hint`){t.push({type:`color-hint`,value:n.value,position:this._parsePosition(n.value)});continue}if(n.type===`color-stop`){let e=this._parseColorStopInput(n.value);t.push(...e);continue}throw SyntaxError(`Unsupported linear gradient ABI input type: "${n.type}"`)}return this._resolvePendingStops(t)}static _parsePosition(e){let t=e.trim().toLowerCase().match(/^([+-]?(?:\d+\.?\d*|\.\d+))%$/);if(t===null)throw SyntaxError(`Invalid gradient stop position: "${e}"`);let n=Number(t[1]);if(!Number.isFinite(n))throw SyntaxError(`Invalid gradient stop position: "${e}"`);return n/100}static _parseColorStopInput(e){let t=fi(e);if(t.length===0)throw SyntaxError(`Color-stop input cannot be empty`);let n=[];for(;t.length>0;){let e=t[t.length-1];if(!/%$/.test(e)||(n.unshift(this._parsePosition(e)),t.pop(),n.length===2))break}let r=t.join(` `).trim();if(r.length===0)throw SyntaxError(`Color-stop is missing color value: "${e}"`);return n.length===0?[{type:`color-stop`,value:r}]:n.length===1?[{type:`color-stop`,value:r,position:n[0]}]:[{type:`color-stop`,value:r,position:n[0]},{type:`color-stop`,value:r,position:n[1]}]}static _resolvePendingStops(e){if(e.length===0)throw SyntaxError(`Linear gradient must contain at least one stop`);let t=e.map(e=>({...e})),n=t.findIndex(e=>e.type===`color-stop`),r=[...t].reverse().findIndex(e=>e.type===`color-stop`);if(n===-1)throw SyntaxError(`Linear gradient must contain at least one color-stop`);let i=t.length-1-r;t[n].position===void 0&&(t[n].position=0),t[i].position===void 0&&(t[i].position=1);let a=-1;for(let e=0;e<t.length;e++){let n=t[e];if(n.position!==void 0){if(a!==-1){let r=t[a],i=n,o=e-a;for(let e=1;e<o;e++){let n=t[a+e];n.position===void 0&&(n.position=r.position+(i.position-r.position)*e/o)}}a=e}}return t.map(e=>{if(e.position===void 0)throw SyntaxError(`Failed to resolve gradient stop position`);return{type:e.type,value:e.value,position:e.position}})}},bi=class e extends yi{type=`linear-gradient`;constructor(t){t.config.angle=g(t.config.angle),t.config.interpolation&&(t.config.interpolation=e._normalizeConfigInterpolation(t.config.interpolation)),super(t)}static normalizeConfig(t){let n=e._tokenizeConfigInput(t),r=new Set;for(let e of n){if(r.has(e.type))throw SyntaxError(`Duplicate linear gradient config token: "${e.type}"`);r.add(e.type)}let i=n.find(e=>e.type===`angle`),a=n.find(e=>e.type===`colorSpace`),o=n.find(e=>e.type===`hue`),s={angle:3.141593,interpolation:{hue:`shorter`,colorSpace:`oklab`}};if(i){let e=i.value;if(e.startsWith(`to `)){let t=e.trim().toLowerCase().split(/\s+/).filter(Boolean);if(t.length===0)throw SyntaxError(`Linear gradient angle keyword cannot be empty`);if(t[0]!==`to`)throw SyntaxError(`Linear gradient keyword direction must start with "to"`);let n=t.slice(1);if(n.length===0||n.length>2)throw SyntaxError(`Linear gradient keyword direction must contain one or two direction tokens`);let r=new Set([`top`,`right`,`bottom`,`left`]);for(let e of n)if(!r.has(e))throw SyntaxError(`Invalid linear gradient direction token: "${e}"`);if(new Set(n).size!==n.length)throw SyntaxError(`Linear gradient keyword direction cannot contain duplicate tokens`);let i=n.includes(`top`),a=n.includes(`right`),o=n.includes(`bottom`),c=n.includes(`left`);if(i&&o||c&&a)throw SyntaxError(`Linear gradient keyword direction contains conflicting tokens`);if(i&&c)s.angle=d(315);else if(i&&a)s.angle=d(45);else if(o&&c)s.angle=d(225);else if(o&&a)s.angle=d(135);else if(i)s.angle=d(0);else if(a)s.angle=d(90);else if(o)s.angle=d(180);else if(c)s.angle=d(270);else throw SyntaxError(`Unsupported linear gradient keyword direction: "${e}"`)}else s.angle=g(u(e))}return a&&(s.interpolation.colorSpace=a.value),o&&(s.interpolation.hue=o.value),s}static fromString(t){return e.fromAbi(ri(t))}static fromAbi(t){let n={angle:3.141592};if(t.inputs[0].type===`config`){let r=t.inputs[0].value.trim().toLowerCase();if(r.length===0)throw SyntaxError(`Linear gradient config cannot be empty`);n=e.normalizeConfig(r)}let r=t.inputs[0]?.type===`config`?t.inputs.slice(1):t.inputs,i=e._normalizeAbiInputsToStops(r);return new e({isRepeating:t.isRepeating,config:n,stops:i})}clone(){return new e(this.toJSON())}toString(){return`${this.isRepeating?`repeating-${this.type}`:this.type}(${[this._parseConfigToString(this.config),...this._serializeStopsCompact()].filter(Boolean).join(`, `)})`}_validateConfig(e){}static _normalizeConfigInterpolation(e){let{colorSpace:t,hue:n}=e;return n===void 0||!vi(t)?{colorSpace:t}:{colorSpace:t,hue:n}}_parseConfigToString(e){let{angle:t,interpolation:n}=e,r=[],i=this._parseAngleToString(t);return i.length>0&&r.push(i),n!==void 0&&r.push(this._parseInterpolationToString(n)),r.join(` `)}_parseAngleToString(e){let t=h(f(e),3);switch(t){case 0:return`to top`;case 45:return`to top right`;case 90:return`to right`;case 135:return`to bottom right`;case 180:return``;case 225:return`to bottom left`;case 270:return`to left`;case 315:return`to top left`;default:return`${t}deg`}}_parseInterpolationToString(e){let{colorSpace:t,hue:n}=e;return n===void 0?`in ${t}`:`in ${t} ${n} hue`}static _tokenizeConfigInput(e){let t=e.trim().toLowerCase();if(t.length===0)throw SyntaxError(`Linear gradient config cannot be empty`);let n=t.split(/\s+/),r=[];for(let e=0;e<n.length;e+=1){let t=n[e];if(t===`in`){let t=n[e+1];if(t===void 0||!_i(t))throw SyntaxError(`Expected color space after "in"`);r.push({type:`colorSpace`,value:t}),e+=1;continue}if(l(t)){r.push({type:`angle`,value:t});continue}if(t===`to`){let t=[],i=n[e+1],a=n[e+2];i!==void 0&&t.push(i),(a===`left`||a===`right`)&&t.push(a);let o=`to ${t.join(` `)}`;r.push({type:`angle`,value:o}),e+=t.length;continue}if(gi(t)){if(n[e+1]!==`hue`)throw SyntaxError(`Expected "hue" after "${t}"`);r.push({type:`hue`,value:t}),e+=1;continue}throw SyntaxError(`Unknown linear gradient config token: "${t}"`)}return r}},xi=class e extends yi{static DEFAULT_CONFIG={isRepeating:!1,stops:[{type:`color-stop`,value:`red`,position:0},{type:`color-stop`,value:`blue`,position:1}],config:{shape:`ellipse`,size:{kind:`extent`,value:`farthest-corner`},position:{kind:`keywords`,x:`center`,y:`center`}}};type=`radial-gradient`;constructor(t){let n={...e.DEFAULT_CONFIG,...t};n.config.interpolation&&(n.config.interpolation=e._normalizeConfigInterpolation(n.config.interpolation)),super(n)}static fromString(t){return e.fromAbi(ri(t))}static fromAbi(t){if(t.functionName!==`radial-gradient`)throw Error(`Invalid function name for RadialGradient`);let n=this._parseConfig(t.inputs),r=t.inputs[0]?.type===`config`?t.inputs.slice(1):t.inputs,i=this._normalizeAbiInputsToStops(r);return new e({isRepeating:t.isRepeating,config:n,stops:i})}clone(){return new e(this.toJSON())}toString(){return`${this.isRepeating?`repeating-${this.type}`:this.type}(${[this._parseConfigToString(this.config),...this._serializeStopsCompact()].filter(Boolean).join(`, `)})`}_validateConfig(e){if(e.shape!==`circle`&&e.shape!==`ellipse`)throw Error(`Invalid shape`);if(!e.position)throw Error(`Position is required`);if(!e.size)throw Error(`Size is required`)}_parseConfigToString(e){let t=[],n=this._parseRadialConfigToString(e);return n.length>0&&t.push(n),e.interpolation!==void 0&&t.push(this._parseInterpolationToString(e.interpolation)),t.join(` `)}_parseRadialConfigToString(e){let t=[];return this._isDefaultRadialShape(e.shape)||t.push(e.shape),this._isDefaultRadialSize(e.size)||t.push(this._parseRadialSizeToString(e.size)),this._isDefaultRadialPosition(e.position)||t.push(`at ${this._serializePosition(e.position)}`),t.join(` `)}_parseRadialSizeToString(e){if(e.kind===`extent`)return e.value;let t=this._formatLengthPercentage(e.x);return e.y===void 0?t:`${t} ${this._formatLengthPercentage(e.y)}`}_parseInterpolationToString(e){let{colorSpace:t,hue:n}=e;return n===void 0?`in ${t}`:`in ${t} ${n} hue`}_isDefaultRadialShape(e){return e===`ellipse`}_isDefaultRadialSize(e){return e.kind===`extent`&&e.value===`farthest-corner`}_isDefaultRadialPosition(e){return e.kind===`keywords`&&e.x===`center`&&e.y===`center`}_serializePosition(e){if(e.kind===`keywords`)return`${e.x} ${e.y}`;let t=this._formatLengthPercentage(e.x),n=e.y?this._formatLengthPercentage(e.y):``;return n===``?t:`${t} ${n}`}_formatLengthPercentage(e){return e.kind===`percent`?`${e.value}%`:`${e.value}${e.unit}`}static _parseConfig(e){let t=`ellipse`,n={kind:`extent`,value:`farthest-corner`},r={kind:`keywords`,x:`center`,y:`center`},i,a=e=>e===void 0?!1:e.endsWith(`%`)||/^-?\d*\.?\d+[a-zA-Z]+$/.test(e);for(let o of e){if(o.type!==`config`)continue;let e=fi(o.value);for(let o=0;o<e.length;o++){let s=e[o];if(s===`circle`||s===`ellipse`){t=s;continue}if(s===`closest-side`||s===`closest-corner`||s===`farthest-side`||s===`farthest-corner`){n={kind:`extent`,value:s};continue}if(a(s)){let r=e[o+1];if(t===`ellipse`&&a(r)){n={kind:`explicit`,x:this._parseLengthPercentage(s),y:this._parseLengthPercentage(r)},o+=1;continue}n={kind:`explicit`,x:this._parseLengthPercentage(s)};continue}if(s===`at`){let t=e[o+1],n=e[o+2];if(t===`center`&&(n===void 0||n===`in`)){r={kind:`keywords`,x:`center`,y:`center`},o+=1;continue}if((t===`left`||t===`right`)&&(n===void 0||n===`in`)){r={kind:`keywords`,x:t,y:`center`},o+=1;continue}if((t===`top`||t===`bottom`)&&(n===void 0||n===`in`)){r={kind:`keywords`,x:`center`,y:t},o+=1;continue}if((t===`left`||t===`center`||t===`right`)&&(n===`top`||n===`center`||n===`bottom`)){r={kind:`keywords`,x:t,y:n},o+=2;continue}if(a(t)&&a(n)){r={kind:`values`,x:this._parseLengthPercentage(t),y:this._parseLengthPercentage(n)},o+=2;continue}throw Error(`Invalid radial-gradient position: ${t??``} ${n??``}`)}if(s===`in`){let t=e[o+1],n=e[o+2],r=e[o+3];if(!t)throw Error(`Invalid radial-gradient interpolation: missing color space`);if(n!==void 0&&r===`hue`){i=this._normalizeConfigInterpolation({colorSpace:t,hue:n}),o+=3;continue}i=this._normalizeConfigInterpolation({colorSpace:t}),o+=1;continue}}}return{shape:t,size:n,position:r,interpolation:i}}static _parseLengthPercentage(e){if(e.endsWith(`%`))return{kind:`percent`,value:parseFloat(e)};let t=e.match(/^(-?\d*\.?\d+)([a-zA-Z]+)$/);if(!t)throw Error(`Invalid length-percentage: ${e}`);return{kind:`length`,value:parseFloat(t[1]),unit:t[2]}}static _normalizeConfigInterpolation(e){let{colorSpace:t,hue:n}=e;return n===void 0||!vi(t)?{colorSpace:t}:{colorSpace:t,hue:n}}},Si=class e extends yi{type=`conic-gradient`;constructor(e){super(e)}clone(){return new e(this.toJSON())}toString(){return`${this.isRepeating?`repeating-${this.type}`:this.type}(${[this._serializeConfig(),...this._serializeStopsCompact()].filter(Boolean).join(`, `)})`}static fromString(e){return this.fromAbi(ri(e))}static fromAbi(t){if(t.functionName!==`conic-gradient`)throw Error(`Invalid function name for ConicGradient`);let n=t.inputs.find(e=>e.type===`config`),r=t.inputs.filter(e=>e.type!==`config`),i=this._parseConfig(n?.value),a=this._normalizeAbiInputsToStops(r);return new e({isRepeating:t.isRepeating,config:i,stops:a})}_validateConfig(e){}_serializeConfig(){let e=[],t=this.config.from;if(e.push(`from ${t.value}${t.unit}`),e.push(`at ${this._serializePosition(this.config.position)}`),this.config.interpolation){let t=this.config.interpolation;if(t.kind===`rectangular`)e.push(`in ${t.space}`);else{let n=`in ${t.space}`;t.hueMethod&&(n+=` ${t.hueMethod} hue`),e.push(n)}}return e.join(` `)}_serializePosition(e){if(e.kind===`keywords`)return`${e.x} ${e.y}`;let t=this._formatLengthPercentage(e.x),n=e.y?this._formatLengthPercentage(e.y):``;return n===``?t:`${t} ${n}`}_formatLengthPercentage(e){return e.kind===`percent`?`${e.value}%`:`${e.value}${e.unit}`}static _parseConfig(e){let t={from:{kind:`angle`,value:0,unit:`deg`},position:{kind:`keywords`,x:`center`,y:`center`}};if(!e)return t;let n=fi(e);for(let e=0;e<n.length;e++){let r=n[e];if(r===`from`){t.from=this._parseAngle(n[e+1]),e+=1;continue}if(r===`at`){let r=n[e+1],i=n[e+2];(r===`left`||r===`center`||r===`right`)&&(i===`top`||i===`center`||i===`bottom`)?t.position={kind:`keywords`,x:r,y:i}:t.position={kind:`values`,x:this._parseLengthPercentage(r),y:this._parseLengthPercentage(i)},e+=2;continue}if(r===`in`){let r=n[e+1],i=n[e+2];if(n[e+3]===`hue`&&(i===`shorter`||i===`longer`||i===`increasing`||i===`decreasing`)){t.interpolation={kind:`polar`,space:r,hueMethod:i},e+=3;continue}t.interpolation={kind:`rectangular`,space:r},e+=1}}return t}static _parseLengthPercentage(e){if(e.endsWith(`%`))return{kind:`percent`,value:parseFloat(e)};let t=e.match(/^(-?\d*\.?\d+)([a-zA-Z]+)$/);if(!t)throw Error(`Invalid length-percentage: ${e}`);return{kind:`length`,value:parseFloat(t[1]),unit:t[2]}}static _parseAngle(e){let t=e.match(/^(-?\d*\.?\d+)(deg|rad|turn|grad)$/);if(!t)throw Error(`Invalid angle: ${e}`);return{kind:`angle`,value:Number(t[1]),unit:t[2]}}},Ci=class{target=`css`;gradientType=`linear-gradient`;to(e){if(!(e instanceof bi))throw Error(`Expected LinearGradient`);return e.toString()}},wi=class{target=`css`;gradientType=`radial-gradient`;to(e){if(!(e instanceof xi))throw Error(`Expected RadialGradient`);return e.toString()}},Ti=class{target=`css`;gradientType=`conic-gradient`;to(e){if(!(e instanceof Si))throw Error(`Expected ConicGradient`);return e.toString()}};function Ei(e,t){return(e%t+t)%t}function Di(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length===0)throw Error(`Cannot sample color from empty stops.`);if(t<=n[0].position)return n[0].value;let r=n[n.length-1];if(t>=r.position)return r.value;for(let e=0;e<n.length-1;e+=1){let r=n[e],i=n[e+1];if(t>=r.position&&t<=i.position){let e=i.position-r.position||1,n=(t-r.position)/e;return Q(Ir([r.value,i.value],`rgb`)(n))}}return r.value}function Oi(e,t,n,r){return Di(e,n+Ei(t-n,r))}function ki(e,t,n){let r=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(r.length<2)return r;let i=r[0].position,a=r[r.length-1].position-i;if(a<=0)return r;let o=[],s=0;o.push({type:`color-stop`,value:Oi(r,t,i,a),position:t,_order:s}),s+=1;let c=Math.floor((t-i)/a)-1,l=Math.ceil((n-i)/a)+1;for(let e=c;e<=l;e+=1){let i=e*a;for(let e of r){let r=e.position+i;r<=t||r>=n||(o.push({...e,position:r,_order:s}),s+=1)}}return o.push({type:`color-stop`,value:Oi(r,n,i,a),position:n,_order:s}),o.sort((e,t)=>e.position===t.position?e._order-t._order:e.position-t.position).map(({_order:e,...t})=>t)}function Ai(e){return ki(e,0,1)}function ji(e,t,n,r){return Math.max(...[{x:0,y:0},{x:n,y:0},{x:0,y:r},{x:n,y:r}].map(n=>{let r=(n.x-e.x)/Math.max(t.x,1e-4),i=(n.y-e.y)/Math.max(t.y,1e-4);return Math.sqrt(r*r+i*i)}))}function Mi(e){switch(e){case`longer`:return Pe;case`increasing`:return Fe;case`decreasing`:return Ie;default:return U}}function Ni(e){switch(e){case`a98-rgb`:return`a98`;case`display-p3`:return`p3`;case`prophoto-rgb`:return`prophoto`;case`xyz`:return`xyz65`;case`srgb`:case`srgb-linear`:return`rgb`;default:return e}}function Pi(e){if(e.hue!==void 0)return{h:{fixup:Mi(e.hue)}}}function Fi(e){let t=e.filter(e=>e.type===`color-stop`);return t.length===0?[]:t.length===1?[{...t[0],position:t[0].position??0}]:t.map((e,n)=>e.position==null?n===0?{...e,position:0}:n===t.length-1?{...e,position:1}:{...e,position:n/(t.length-1)}:e)}function Ii(e){let t=Li(e);if(!t)throw Error(`Failed to convert interpolated color to rgb.`);return Q(t)}let Li=O(`rgb`);function Ri(e,t=64){let n=Fi(e.stops),r=e.config.interpolation;if(n.length<2)return n;if(r===void 0)return e.isRepeating?Ai(n):n;let i=[],a=Ni(r.colorSpace),o=Pi(r);for(let e=0;e<n.length-1;e+=1){let r=n[e],s=n[e+1],c=r.position,l=s.position,u=Ir([r.value,s.value],a,o);for(let n=0;n<=t;n+=1){if(e>0&&n===0)continue;let r=n/t,a=c+(l-c)*r,o=u(r);i.push({type:`color-stop`,value:Ii(o),position:a})}}return e.isRepeating?Ai(i):i}let zi=O(`rgb`);function Bi(e){let t=zi(e);if(!t)throw Error(`Failed to convert color: ${e}`);return Q(t)}function Vi(e){let t=e.filter(e=>e.type===`color-stop`&&e.position!=null);return t.length?{min:Math.min(...t.map(e=>e.position)),max:Math.max(...t.map(e=>e.position)),stops:t}:{min:0,max:1,stops:[]}}function Hi(e,t,n){let r=n-t||1;return e.filter(e=>e.type===`color-stop`&&e.position!=null).map(e=>({...e,position:(e.position-t)/r}))}var Ui=class{target=`canvas-2d`;gradientType=`linear-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=t.config.angle,a=Math.sin(i),o=-Math.cos(i),s=n/2,c=r/2,l=Math.abs(n*a)+Math.abs(r*o),u=s-a*l/2,d=c-o*l/2,f=s+a*l/2,p=c+o*l/2,{min:m,max:h,stops:g}=Vi(Ri(t)),_=g;if(m<0||h>1){let e=f-u,t=p-d,n=u,r=d;u=n+e*m,d=r+t*m,f=n+e*h,p=r+t*h,_=Hi(g,m,h)}let v=e.createLinearGradient(u,d,f,p);for(let e of _)v.addColorStop(e.position,Bi(e.value));e.clearRect(0,0,n,r),e.fillStyle=v,e.fillRect(0,0,n,r)}}}};let Wi=O(`rgb`);function Gi(e){let t=Wi(e);if(!t)throw Error(`Failed to convert color: ${e}`);return Q(t)}function Ki(e){let t=e.filter(e=>e.type===`color-stop`&&e.position!=null);return t.length?{min:Math.min(...t.map(e=>e.position)),max:Math.max(...t.map(e=>e.position)),stops:t}:{min:0,max:1,stops:[]}}function qi(e,t,n){let r=n-t||1;return e.map(e=>({...e,position:(e.position-t)/r}))}function Ji(e,t,n,r){return r===`left`?e.x:r===`right`?t-e.x:r===`top`?e.y:n-e.y}function Yi(e,t){let n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}function Xi(e,t,n){return[{dx:-e.x,dy:-e.y},{dx:t-e.x,dy:-e.y},{dx:-e.x,dy:n-e.y},{dx:t-e.x,dy:n-e.y}]}function Zi(e,t,n,r){let i=Math.max(e,1e-4),a=Math.max(t,1e-4),o=Math.sqrt(n*n/(i*i)+r*r/(a*a));return{x:i*o,y:a*o}}var Qi=class{target=`canvas-2d`;gradientType=`radial-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=this._resolveCenter(t.config.position,n,r),a=this._resolveRadialRadii(t.config.size,t.config.shape,i,n,r),o=ji(i,a,n,r),s=Ri(t,128),{min:c,max:l,stops:u}=Ki(t.isRepeating?ki(s,0,o):s),d=u,f=0,p=t.isRepeating?o:1;if(t.isRepeating?d=qi(u,0,o):(c<0||l>1)&&(d=qi(u,c,l),f=c,p=l),t.config.shape===`circle`){let t=a.x,o=Math.max(0,t*f),s=Math.max(o+1e-4,t*p),c=e.createRadialGradient(i.x,i.y,o,i.x,i.y,s);for(let e of d)c.addColorStop(e.position,Gi(e.value));e.fillStyle=c,e.fillRect(0,0,n,r);return}let m=Math.max(a.x,a.y),h=a.x/m,g=a.y/m,_=Math.max(0,m*f),v=Math.max(_+1e-4,m*p);e.save(),e.translate(i.x,i.y),e.scale(h,g);let y=e.createRadialGradient(0,0,_,0,0,v);for(let e of d)y.addColorStop(e.position,Gi(e.value));e.fillStyle=y;let b=v+2;e.fillRect(-b/h*2,-b/g*2,b/h*4,b/g*4),e.restore()}}}_resolveCenter(e,t,n){return e.kind===`keywords`?{x:this._resolveKeywordX(e.x,t),y:this._resolveKeywordY(e.y,n)}:{x:this._resolve(e.x,t),y:this._resolve(e.y,n)}}_resolveKeywordX(e,t){return e===`left`?0:e===`center`?t/2:t}_resolveKeywordY(e,t){return e===`top`?0:e===`center`?t/2:t}_resolveRadialRadii(e,t,n,r,i){if(e.kind===`explicit`){let n=this._resolve(e.x,r),a=e.y?this._resolve(e.y,i):n;return{x:Math.max(n,1e-4),y:Math.max(t===`circle`?n:a,1e-4)}}let a=Ji(n,r,i,`left`),o=Ji(n,r,i,`right`),s=Ji(n,r,i,`top`),c=Ji(n,r,i,`bottom`);if(t===`circle`){let t=[{x:0,y:0},{x:r,y:0},{x:0,y:i},{x:r,y:i}].map(e=>Yi(n,e));if(e.value===`closest-side`){let e=Math.min(a,o,s,c);return{x:e,y:e}}if(e.value===`farthest-side`){let e=Math.max(a,o,s,c);return{x:e,y:e}}if(e.value===`closest-corner`){let e=Math.min(...t);return{x:e,y:e}}let l=Math.max(...t);return{x:l,y:l}}let l=Math.min(a,o),u=Math.min(s,c),d=Math.max(a,o),f=Math.max(s,c);if(e.value===`closest-side`)return{x:Math.max(l,1e-4),y:Math.max(u,1e-4)};if(e.value===`farthest-side`)return{x:Math.max(d,1e-4),y:Math.max(f,1e-4)};let p=Xi(n,r,i);return e.value===`closest-corner`?p.map(e=>Zi(l,u,e.dx,e.dy)).reduce((e,t)=>{let n=e.x*e.y;return t.x*t.y<n?t:e}):p.map(e=>Zi(d,f,e.dx,e.dy)).reduce((e,t)=>{let n=e.x*e.y;return t.x*t.y>n?t:e})}_resolve(e,t){return e.kind===`percent`?e.value/100*t:(e.unit,e.value)}};let $i=O(`rgb`);var ea=class{target=`canvas-2d`;gradientType=`conic-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=e.createImageData(n,r),a=i.data,{x:o,y:s}=this._resolvePosition(t.config.position,n,r),c=this._toRad(t.config.from),l=this._normalizeStops(t.stops);if(l.length===0){e.putImageData(i,0,0);return}for(let e=0;e<r;e++)for(let t=0;t<n;t++){let r=t-o,i=e-s,u=Math.atan2(i,r)+Math.PI/2-c;for(;u<0;)u+=Math.PI*2;for(;u>=Math.PI*2;)u-=Math.PI*2;let d=u/(Math.PI*2),f=this._sampleColor(l,d),p=(e*n+t)*4;a[p]=f.r,a[p+1]=f.g,a[p+2]=f.b,a[p+3]=f.a}e.putImageData(i,0,0)}}}_resolvePosition(e,t,n){return e.kind===`keywords`?{x:this._resolveKeywordX(e.x,t),y:this._resolveKeywordY(e.y,n)}:{x:this._resolve(e.x,t),y:this._resolve(e.y,n)}}_resolve(e,t){return e.kind===`percent`?e.value/100*t:(e.unit,e.value)}_resolveKeywordX(e,t){return e===`left`?0:e===`right`?t:t/2}_resolveKeywordY(e,t){return e===`top`?0:e===`bottom`?t:t/2}_toRad(e){return e.unit===`deg`?d(e.value):e.unit===`turn`?p(e.value):e.unit===`grad`?m(e.value):e.value}_normalizeStops(e){return e.filter(e=>e.type===`color-stop`&&e.position!=null).map(e=>({position:this._clamp01(e.position),color:this._parseColor(e.value)})).sort((e,t)=>e.position-t.position)}_sampleColor(e,t){if(e.length===1)return e[0].color;let n=e[0],r=[...e,{...n,position:n.position+1}],i=t;i<n.position&&(i+=1);for(let e=0;e<r.length-1;e++){let t=r[e],n=r[e+1];if(i>=t.position&&i<=n.position){let e=n.position-t.position||1,r=(i-t.position)/e;return this._mixColor(t.color,n.color,r)}}return e[e.length-1].color}_mixColor(e,t,n){return{r:Math.round(e.r+(t.r-e.r)*n),g:Math.round(e.g+(t.g-e.g)*n),b:Math.round(e.b+(t.b-e.b)*n),a:Math.round(e.a+(t.a-e.a)*n)}}_parseColor(e){let t=$i(e);if(!t)throw Error(`Failed to convert color: ${e}`);return{r:Math.round((t.r??0)*255),g:Math.round((t.g??0)*255),b:Math.round((t.b??0)*255),a:Math.round((t.alpha??1)*255)}}_clamp01(e){return Math.max(0,Math.min(1,e))}};let ta=O(`rgb`);function na(e){let t=ta(e);if(!t)throw Error(`Failed to convert color: ${e}`);return[t.r??0,t.g??0,t.b??0,t.alpha??1]}function ra(e){let t=e.filter(e=>e.type===`color-stop`&&e.position!=null);return t.length?{min:Math.min(...t.map(e=>e.position)),max:Math.max(...t.map(e=>e.position)),stops:t}:{min:0,max:1,stops:[]}}function ia(e,t,n){let r=n-t||1;return e.filter(e=>e.type===`color-stop`&&e.position!=null).map(e=>({...e,position:(e.position-t)/r}))}function aa(e,t,n){let r=e.createShader(t);if(!r)throw Error(`Failed to create WebGL shader.`);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(r);throw e.deleteShader(r),Error(`WebGL shader compile error: ${t}`)}return r}function oa(e,t,n){let r=aa(e,e.VERTEX_SHADER,t),i=aa(e,e.FRAGMENT_SHADER,n),a=e.createProgram();if(!a)throw Error(`Failed to create WebGL program.`);if(e.attachShader(a,r),e.attachShader(a,i),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS)){let t=e.getProgramInfoLog(a);throw e.deleteProgram(a),Error(`WebGL program link error: ${t}`)}return a}function sa(e){return e.filter(e=>e.type===`color-stop`).length}function ca(e,t){let n=sa(e.stops),r=Math.max(1,n-1);return Math.max(2,Math.floor((t-1)/r))}function la(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length===0)throw Error(`Cannot sample color from empty gradient stops.`);if(t<=n[0].position)return n[0].value;let r=n[n.length-1];if(t>=r.position)return r.value;for(let e=0;e<n.length-1;e+=1){let r=n[e],i=n[e+1];if(t>=r.position&&t<=i.position){let e=i.position-r.position||1,n=(t-r.position)/e;return Q(Ir([r.value,i.value],`rgb`)(n))}}return r.value}function ua(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length<=t)return n;let r=[];for(let e=0;e<t;e+=1){let i=e/(t-1);r.push({type:`color-stop`,value:la(n,i),position:i})}return r}var da=class{target=`canvas-webgl`;gradientType=`linear-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=e.getContext(`webgl`);if(!i)throw Error(`WebGL is not supported.`);e.width=n,e.height=r,i.viewport(0,0,n,r);let a=oa(i,`
|
|
4
|
+
`||t[N]===` `||t[N]===` `);)N++;let e;if(de(t)&&(e=P(t),e.type!==M.Hue)){n.push({type:M.Alpha,value:e});continue}if(fe(t)&&he(t)===`none`){n.push({type:M.Alpha,value:{type:M.None,value:void 0}});continue}return}if(/\d/.test(r)){N--,n.push(P(t));continue}if(le.test(r)){N--,n.push(ge(t));continue}return}return n}function ve(e){e._i=0;let t=e[e._i++];if(!t||t.type!==M.Function||t.value!==`color`||(t=e[e._i++],t.type!==M.Ident))return;let n=ae[t.value];if(!n)return;let r={mode:n},i=ye(e,!1);if(!i)return;let a=se(n).channels;for(let e=0,t,n;e<a.length;e++)t=i[e],n=a[e],t.type!==M.None&&(r[n]=t.type===M.Number?t.value:t.value/100,n===`alpha`&&(r[n]=Math.max(0,Math.min(1,r[n]))));return r}function ye(e,t){let n=[],r;for(;e._i<e.length;){if(r=e[e._i++],r.type===M.None||r.type===M.Number||r.type===M.Alpha||r.type===M.Percentage||t&&r.type===M.Hue){n.push(r);continue}if(r.type===M.ParenClose){if(e._i<e.length)return;continue}return}if(!(n.length<3||n.length>4)){if(n.length===4){if(n[3].type!==M.Alpha)return;n[3]=n[3].value}return n.length===3&&n.push({type:M.None,value:void 0}),n.every(e=>e.type!==M.Alpha)?n:void 0}}function be(e,t){e._i=0;let n=e[e._i++];if(!n||n.type!==M.Function)return;let r=ye(e,t);if(r)return r.unshift(n.value),r}let xe=e=>{if(typeof e!=`string`)return;let t=_e(e),n=t?be(t,!0):void 0,r,i=0,a=A.length;for(;i<a;)if((r=A[i++](e,n))!==void 0)return r;return t?ve(t):void 0};function Se(e,t){if(!t||t[0]!==`rgb`&&t[0]!==`rgba`)return;let n={mode:`rgb`},[,r,i,a,o]=t;if(!(r.type===M.Hue||i.type===M.Hue||a.type===M.Hue))return r.type!==M.None&&(n.r=r.type===M.Number?r.value/255:r.value/100),i.type!==M.None&&(n.g=i.type===M.Number?i.value/255:i.value/100),a.type!==M.None&&(n.b=a.type===M.Number?a.value/255:a.value/100),o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let Ce=e=>e===`transparent`?{mode:`rgb`,r:0,g:0,b:0,alpha:0}:void 0,we=(e,t,n)=>e+n*(t-e),Te=e=>{let t=[];for(let n=0;n<e.length-1;n++){let r=e[n],i=e[n+1];r===void 0&&i===void 0?t.push(void 0):r!==void 0&&i!==void 0?t.push([r,i]):t.push(r===void 0?[i,i]:[r,r])}return t},F=(e=>t=>{let n=Te(t);return t=>{let r=t*n.length,i=t>=1?n.length-1:Math.max(Math.floor(r),0),a=n[i];return a===void 0?void 0:e(a[0],a[1],r-i)}})(we),I=e=>{let t=!1,n=e.map(e=>e===void 0?1:(t=!0,e));return t?n:e},L={mode:`rgb`,channels:[`r`,`g`,`b`,`alpha`],parse:[Se,x,ne,y,Ce,`srgb`],serialize:`srgb`,interpolate:{r:F,g:F,b:F,alpha:{use:F,fixup:I}},gamut:!0,white:{r:1,g:1,b:1},black:{r:0,g:0,b:0}},Ee=(e=0)=>Math.abs(e)**(563/256)*Math.sign(e),De=e=>{let t=Ee(e.r),n=Ee(e.g),r=Ee(e.b),i={mode:`xyz65`,x:.5766690429101305*t+.1855582379065463*n+.1882286462349947*r,y:.297344975250536*t+.6273635662554661*n+.0752914584939979*r,z:.0270313613864123*t+.0706888525358272*n+.9913375368376386*r};return e.alpha!==void 0&&(i.alpha=e.alpha),i},Oe=e=>Math.abs(e)**(256/563)*Math.sign(e),ke=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`a98`,r:Oe(e*2.0415879038107465-t*.5650069742788597-.3447313507783297*n),g:Oe(e*-.9692436362808798+t*1.8759675015077206+.0415550574071756*n),b:Oe(e*.0134442806320312-t*.1183623922310184+1.0151749943912058*n)};return r!==void 0&&(i.alpha=r),i},Ae=(e=0)=>{let t=Math.abs(e);return t<=.04045?e/12.92:(Math.sign(e)||1)*((t+.055)/1.055)**2.4},R=({r:e,g:t,b:n,alpha:r})=>{let i={mode:`lrgb`,r:Ae(e),g:Ae(t),b:Ae(n)};return r!==void 0&&(i.alpha=r),i},z=e=>{let{r:t,g:n,b:r,alpha:i}=R(e),a={mode:`xyz65`,x:.4123907992659593*t+.357584339383878*n+.1804807884018343*r,y:.2126390058715102*t+.715168678767756*n+.0721923153607337*r,z:.0193308187155918*t+.119194779794626*n+.9505321522496607*r};return i!==void 0&&(a.alpha=i),a},je=(e=0)=>{let t=Math.abs(e);return t>.0031308?(Math.sign(e)||1)*(1.055*t**(1/2.4)-.055):e*12.92},B=({r:e,g:t,b:n,alpha:r},i=`rgb`)=>{let a={mode:i,r:je(e),g:je(t),b:je(n)};return r!==void 0&&(a.alpha=r),a},V=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=B({r:e*3.2409699419045226-t*1.537383177570094-.4986107602930034*n,g:e*-.9692436362808796+t*1.8759675015077204+.0415550574071756*n,b:e*.0556300796969936-t*.2039769588889765+1.0569715142428784*n});return r!==void 0&&(i.alpha=r),i},Me={...L,mode:`a98`,parse:[`a98-rgb`],serialize:`a98-rgb`,fromMode:{rgb:e=>ke(z(e)),xyz65:ke},toMode:{rgb:e=>V(De(e)),xyz65:De}},H=e=>(e%=360)<0?e+360:e,Ne=(e,t)=>e.map((n,r,i)=>{if(n===void 0)return n;let a=H(n);return r===0||e[r-1]===void 0?a:t(a-H(i[r-1]))}).reduce((e,t)=>!e.length||t===void 0||e[e.length-1]===void 0?(e.push(t),e):(e.push(t+e[e.length-1]),e),[]),U=e=>Ne(e,e=>Math.abs(e)<=180?e:e-360*Math.sign(e)),Pe=e=>Ne(e,e=>Math.abs(e)>=180||e===0?e:e-360*Math.sign(e)),Fe=e=>Ne(e,e=>e>=0?e:e+360),Ie=e=>Ne(e,e=>e<=0?e:e-360),W=[-.14861,1.78277,-.29227,-.90649,1.97294,0],Le=Math.PI/180,Re=180/Math.PI,ze=W[3]*W[4],Be=W[1]*W[4],Ve=W[1]*W[2]-W[0]*W[3],He=({r:e,g:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(Ve*n+e*ze-t*Be)/(Ve+ze-Be),a=n-i,o=(W[4]*(t-i)-W[2]*a)/W[3],s={mode:`cubehelix`,l:i,s:i===0||i===1?void 0:Math.sqrt(a*a+o*o)/(W[4]*i*(1-i))};return s.s&&(s.h=Math.atan2(o,a)*Re-120),r!==void 0&&(s.alpha=r),s},Ue=({h:e,s:t,l:n,alpha:r})=>{let i={mode:`rgb`};e=(e===void 0?0:e+120)*Le,n===void 0&&(n=0);let a=t===void 0?0:t*n*(1-n),o=Math.cos(e),s=Math.sin(e);return i.r=n+a*(W[0]*o+W[1]*s),i.g=n+a*(W[2]*o+W[3]*s),i.b=n+a*(W[4]*o+W[5]*s),r!==void 0&&(i.alpha=r),i},We=(e,t)=>{if(e.h===void 0||t.h===void 0||!e.s||!t.s)return 0;let n=H(e.h),r=H(t.h),i=Math.sin((r-n+360)/2*Math.PI/180);return 2*Math.sqrt(e.s*t.s)*i},Ge=(e,t)=>{if(e.h===void 0||t.h===void 0)return 0;let n=H(e.h),r=H(t.h);return Math.abs(r-n)>180?n-(r-360*Math.sign(r-n)):r-n},Ke=(e,t)=>{if(e.h===void 0||t.h===void 0||!e.c||!t.c)return 0;let n=H(e.h),r=H(t.h),i=Math.sin((r-n+360)/2*Math.PI/180);return 2*Math.sqrt(e.c*t.c)*i},G=e=>{let t=e.reduce((e,t)=>{if(t!==void 0){let n=t*Math.PI/180;e.sin+=Math.sin(n),e.cos+=Math.cos(n)}return e},{sin:0,cos:0}),n=Math.atan2(t.sin,t.cos)*180/Math.PI;return n<0?360+n:n},qe={mode:`cubehelix`,channels:[`h`,`s`,`l`,`alpha`],parse:[`--cubehelix`],serialize:`--cubehelix`,ranges:{h:[0,360],s:[0,4.614],l:[0,1]},fromMode:{rgb:He},toMode:{rgb:Ue},interpolate:{h:{use:F,fixup:U},s:F,l:F,alpha:{use:F,fixup:I}},difference:{h:We},average:{h:G}},K=({l:e,a:t,b:n,alpha:r},i=`lch`)=>{t===void 0&&(t=0),n===void 0&&(n=0);let a=Math.sqrt(t*t+n*n),o={mode:i,l:e,c:a};return a&&(o.h=H(Math.atan2(n,t)*180/Math.PI)),r!==void 0&&(o.alpha=r),o},q=({l:e,c:t,h:n,alpha:r},i=`lab`)=>{n===void 0&&(n=0);let a={mode:i,l:e,a:t?t*Math.cos(n/180*Math.PI):0,b:t?t*Math.sin(n/180*Math.PI):0};return r!==void 0&&(a.alpha=r),a},Je=29**3/3**3,Ye=6**3/29**3,J={X:.3457/.3585,Y:1,Z:.2958/.3585},Y={X:.3127/.329,Y:1,Z:.3583/.329},Xe=e=>e**3>Ye?e**3:(116*e-16)/Je,Ze=({l:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(e+16)/116,a=t/500+i,o=i-n/200,s={mode:`xyz65`,x:Xe(a)*Y.X,y:Xe(i)*Y.Y,z:Xe(o)*Y.Z};return r!==void 0&&(s.alpha=r),s},Qe=e=>V(Ze(e)),$e=e=>e>Ye?Math.cbrt(e):(Je*e+16)/116,et=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=$e(e/Y.X),a=$e(t/Y.Y),o=$e(n/Y.Z),s={mode:`lab65`,l:116*a-16,a:500*(i-a),b:200*(a-o)};return r!==void 0&&(s.alpha=r),s},tt=e=>{let t=et(z(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},nt=26/180*Math.PI,rt=Math.cos(nt),it=Math.sin(nt),at=100/Math.log(139/100),ot=({l:e,c:t,h:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`lab65`,l:(Math.exp(e*1/at)-1)/.0039},a=(Math.exp(.0435*t*1*1)-1)/.075,o=a*Math.cos(n/180*Math.PI-nt),s=a*Math.sin(n/180*Math.PI-nt);return i.a=o*rt-s/.83*it,i.b=o*it+s/.83*rt,r!==void 0&&(i.alpha=r),i},st=({l:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=t*rt+n*it,a=.83*(n*rt-t*it),o=Math.sqrt(i*i+a*a),s={mode:`dlch`,l:at/1*Math.log(1+.0039*e),c:Math.log(1+.075*o)/(.0435*1*1)};return s.c&&(s.h=H((Math.atan2(a,i)+nt)/Math.PI*180)),r!==void 0&&(s.alpha=r),s},ct=e=>ot(K(e,`dlch`)),lt=e=>q(st(e),`dlab`),ut={mode:`dlab`,parse:[`--din99o-lab`],serialize:`--din99o-lab`,toMode:{lab65:ct,rgb:e=>Qe(ct(e))},fromMode:{lab65:lt,rgb:e=>lt(tt(e))},channels:[`l`,`a`,`b`,`alpha`],ranges:{l:[0,100],a:[-40.09,45.501],b:[-40.469,44.344]},interpolate:{l:F,a:F,b:F,alpha:{use:F,fixup:I}}},dt={mode:`dlch`,parse:[`--din99o-lch`],serialize:`--din99o-lch`,toMode:{lab65:ot,dlab:e=>q(e,`dlab`),rgb:e=>Qe(ot(e))},fromMode:{lab65:st,dlab:e=>K(e,`dlch`),rgb:e=>st(tt(e))},channels:[`l`,`c`,`h`,`alpha`],ranges:{l:[0,100],c:[0,51.484],h:[0,360]},interpolate:{l:F,c:F,h:{use:F,fixup:U},alpha:{use:F,fixup:I}},difference:{h:Ke},average:{h:G}};function ft({h:e,s:t,i:n,alpha:r}){e=H(e===void 0?0:e),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.abs(e/60%2-1),a;switch(Math.floor(e/60)){case 0:a={r:n*(1+t*(3/(2-i)-1)),g:n*(1+t*(3*(1-i)/(2-i)-1)),b:n*(1-t)};break;case 1:a={r:n*(1+t*(3*(1-i)/(2-i)-1)),g:n*(1+t*(3/(2-i)-1)),b:n*(1-t)};break;case 2:a={r:n*(1-t),g:n*(1+t*(3/(2-i)-1)),b:n*(1+t*(3*(1-i)/(2-i)-1))};break;case 3:a={r:n*(1-t),g:n*(1+t*(3*(1-i)/(2-i)-1)),b:n*(1+t*(3/(2-i)-1))};break;case 4:a={r:n*(1+t*(3*(1-i)/(2-i)-1)),g:n*(1-t),b:n*(1+t*(3/(2-i)-1))};break;case 5:a={r:n*(1+t*(3/(2-i)-1)),g:n*(1-t),b:n*(1+t*(3*(1-i)/(2-i)-1))};break;default:a={r:n*(1-t),g:n*(1-t),b:n*(1-t)}}return a.mode=`rgb`,r!==void 0&&(a.alpha=r),a}function pt({r:e,g:t,b:n,alpha:r}){e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.max(e,t,n),a=Math.min(e,t,n),o={mode:`hsi`,s:e+t+n===0?0:1-3*a/(e+t+n),i:(e+t+n)/3};return i-a!==0&&(o.h=(i===e?(t-n)/(i-a)+(t<n)*6:i===t?(n-e)/(i-a)+2:(e-t)/(i-a)+4)*60),r!==void 0&&(o.alpha=r),o}let mt={mode:`hsi`,toMode:{rgb:ft},parse:[`--hsi`],serialize:`--hsi`,fromMode:{rgb:pt},channels:[`h`,`s`,`i`,`alpha`],ranges:{h:[0,360]},gamut:`rgb`,interpolate:{h:{use:F,fixup:U},s:F,i:F,alpha:{use:F,fixup:I}},difference:{h:We},average:{h:G}};function ht({h:e,s:t,l:n,alpha:r}){e=H(e===void 0?0:e),t===void 0&&(t=0),n===void 0&&(n=0);let i=n+t*(n<.5?n:1-n),a=i-(i-n)*2*Math.abs(e/60%2-1),o;switch(Math.floor(e/60)){case 0:o={r:i,g:a,b:2*n-i};break;case 1:o={r:a,g:i,b:2*n-i};break;case 2:o={r:2*n-i,g:i,b:a};break;case 3:o={r:2*n-i,g:a,b:i};break;case 4:o={r:a,g:2*n-i,b:i};break;case 5:o={r:i,g:2*n-i,b:a};break;default:o={r:2*n-i,g:2*n-i,b:2*n-i}}return o.mode=`rgb`,r!==void 0&&(o.alpha=r),o}function gt({r:e,g:t,b:n,alpha:r}){e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.max(e,t,n),a=Math.min(e,t,n),o={mode:`hsl`,s:i===a?0:(i-a)/(1-Math.abs(i+a-1)),l:.5*(i+a)};return i-a!==0&&(o.h=(i===e?(t-n)/(i-a)+(t<n)*6:i===t?(n-e)/(i-a)+2:(e-t)/(i-a)+4)*60),r!==void 0&&(o.alpha=r),o}let _t=(e,t)=>{switch(t){case`deg`:return+e;case`rad`:return e/Math.PI*180;case`grad`:return e/10*9;case`turn`:return e*360}},vt=RegExp(`^hsla?\\(\\s*${ee}${E}${C}${E}${C}\\s*(?:,\\s*${w}\\s*)?\\)$`),yt=e=>{let t=e.match(vt);if(!t)return;let n={mode:`hsl`};return t[3]===void 0?t[1]!==void 0&&t[2]!==void 0&&(n.h=_t(t[1],t[2])):n.h=+t[3],t[4]!==void 0&&(n.s=Math.min(Math.max(0,t[4]/100),1)),t[5]!==void 0&&(n.l=Math.min(Math.max(0,t[5]/100),1)),t[6]===void 0?t[7]!==void 0&&(n.alpha=Math.max(0,Math.min(1,+t[7]))):n.alpha=Math.max(0,Math.min(1,t[6]/100)),n};function bt(e,t){if(!t||t[0]!==`hsl`&&t[0]!==`hsla`)return;let n={mode:`hsl`},[,r,i,a,o]=t;if(r.type!==M.None){if(r.type===M.Percentage)return;n.h=r.value}if(i.type!==M.None){if(i.type===M.Hue)return;n.s=i.value/100}if(a.type!==M.None){if(a.type===M.Hue)return;n.l=a.value/100}return o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let xt={mode:`hsl`,toMode:{rgb:ht},fromMode:{rgb:gt},channels:[`h`,`s`,`l`,`alpha`],ranges:{h:[0,360]},gamut:`rgb`,parse:[bt,yt],serialize:e=>`hsl(${e.h===void 0?`none`:e.h} ${e.s===void 0?`none`:e.s*100+`%`} ${e.l===void 0?`none`:e.l*100+`%`}${e.alpha<1?` / ${e.alpha}`:``})`,interpolate:{h:{use:F,fixup:U},s:F,l:F,alpha:{use:F,fixup:I}},difference:{h:We},average:{h:G}};function St({h:e,s:t,v:n,alpha:r}){e=H(e===void 0?0:e),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.abs(e/60%2-1),a;switch(Math.floor(e/60)){case 0:a={r:n,g:n*(1-t*i),b:n*(1-t)};break;case 1:a={r:n*(1-t*i),g:n,b:n*(1-t)};break;case 2:a={r:n*(1-t),g:n,b:n*(1-t*i)};break;case 3:a={r:n*(1-t),g:n*(1-t*i),b:n};break;case 4:a={r:n*(1-t*i),g:n*(1-t),b:n};break;case 5:a={r:n,g:n*(1-t),b:n*(1-t*i)};break;default:a={r:n*(1-t),g:n*(1-t),b:n*(1-t)}}return a.mode=`rgb`,r!==void 0&&(a.alpha=r),a}function Ct({r:e,g:t,b:n,alpha:r}){e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.max(e,t,n),a=Math.min(e,t,n),o={mode:`hsv`,s:i===0?0:1-a/i,v:i};return i-a!==0&&(o.h=(i===e?(t-n)/(i-a)+(t<n)*6:i===t?(n-e)/(i-a)+2:(e-t)/(i-a)+4)*60),r!==void 0&&(o.alpha=r),o}let wt={mode:`hsv`,toMode:{rgb:St},parse:[`--hsv`],serialize:`--hsv`,fromMode:{rgb:Ct},channels:[`h`,`s`,`v`,`alpha`],ranges:{h:[0,360]},gamut:`rgb`,interpolate:{h:{use:F,fixup:U},s:F,v:F,alpha:{use:F,fixup:I}},difference:{h:We},average:{h:G}};function Tt({h:e,w:t,b:n,alpha:r}){if(t===void 0&&(t=0),n===void 0&&(n=0),t+n>1){let e=t+n;t/=e,n/=e}return St({h:e,s:n===1?1:1-t/(1-n),v:1-n,alpha:r})}function Et(e){let t=Ct(e);if(t===void 0)return;let n=t.s===void 0?0:t.s,r=t.v===void 0?0:t.v,i={mode:`hwb`,w:(1-n)*r,b:1-r};return t.h!==void 0&&(i.h=t.h),t.alpha!==void 0&&(i.alpha=t.alpha),i}function Dt(e,t){if(!t||t[0]!==`hwb`)return;let n={mode:`hwb`},[,r,i,a,o]=t;if(r.type!==M.None){if(r.type===M.Percentage)return;n.h=r.value}if(i.type!==M.None){if(i.type===M.Hue)return;n.w=i.value/100}if(a.type!==M.None){if(a.type===M.Hue)return;n.b=a.value/100}return o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let Ot={mode:`hwb`,toMode:{rgb:Tt},fromMode:{rgb:Et},channels:[`h`,`w`,`b`,`alpha`],ranges:{h:[0,360]},gamut:`rgb`,parse:[Dt],serialize:e=>`hwb(${e.h===void 0?`none`:e.h} ${e.w===void 0?`none`:e.w*100+`%`} ${e.b===void 0?`none`:e.b*100+`%`}${e.alpha<1?` / ${e.alpha}`:``})`,interpolate:{h:{use:F,fixup:U},w:F,b:F,alpha:{use:F,fixup:I}},difference:{h:Ge},average:{h:G}},kt=.1593017578125,At=78.84375,jt=.8359375,Mt=18.8515625,Nt=18.6875;function Pt(e){if(e<0)return 0;let t=e**(1/At);return 1e4*(Math.max(0,t-jt)/(Mt-Nt*t))**(1/kt)}function Ft(e){if(e<0)return 0;let t=(e/1e4)**kt;return((jt+Mt*t)/(1+Nt*t))**+At}let It=e=>Math.max(e/203,0),Lt=({i:e,t,p:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Pt(e+.008609037037932761*t+.11102962500302593*n),a=Pt(e-.00860903703793275*t-.11102962500302599*n),o=Pt(e+.5600313357106791*t-.32062717498731885*n),s={mode:`xyz65`,x:It(2.070152218389422*i-1.3263473389671556*a+.2066510476294051*o),y:It(.3647385209748074*i+.680566024947227*a-.0453045459220346*o),z:It(-.049747207535812*i-.0492609666966138*a+1.1880659249923042*o)};return r!==void 0&&(s.alpha=r),s},Rt=(e=0)=>Math.max(e*203,0),zt=({x:e,y:t,z:n,alpha:r})=>{let i=Rt(e),a=Rt(t),o=Rt(n),s=Ft(.3592832590121217*i+.6976051147779502*a-.0358915932320289*o),c=Ft(-.1920808463704995*i+1.1004767970374323*a+.0753748658519118*o),l=Ft(.0070797844607477*i+.0748396662186366*a+.8433265453898765*o),u={mode:`itp`,i:.5*s+.5*c,t:1.61376953125*s-3.323486328125*c+1.709716796875*l,p:4.378173828125*s-4.24560546875*c-.132568359375*l};return r!==void 0&&(u.alpha=r),u},Bt={mode:`itp`,channels:[`i`,`t`,`p`,`alpha`],parse:[`--ictcp`],serialize:`--ictcp`,toMode:{xyz65:Lt,rgb:e=>V(Lt(e))},fromMode:{xyz65:zt,rgb:e=>zt(z(e))},ranges:{i:[0,.581],t:[-.369,.272],p:[-.164,.331]},interpolate:{i:F,t:F,p:F,alpha:{use:F,fixup:I}}},Vt=e=>{if(e<0)return 0;let t=(e/1e4)**kt;return((jt+Mt*t)/(1+Nt*t))**134.03437499999998},Ht=(e=0)=>Math.max(e*203,0),Ut=({x:e,y:t,z:n,alpha:r})=>{e=Ht(e),t=Ht(t),n=Ht(n);let i=1.15*e-.15*n,a=.66*t+.34*e,o=Vt(.41478972*i+.579999*a+.014648*n),s=Vt(-.20151*i+1.120649*a+.0531008*n),c=Vt(-.0166008*i+.2648*a+.6684799*n),l=(o+s)/2,u={mode:`jab`,j:.44*l/(1-.56*l)-16295499532821565e-27,a:3.524*o-4.066708*s+.542708*c,b:.199076*o+1.096799*s-1.295875*c};return r!==void 0&&(u.alpha=r),u},Wt=16295499532821565e-27,Gt=e=>{if(e<0)return 0;let t=e**(1/134.03437499999998);return 1e4*((jt-t)/(Nt*t-Mt))**(1/kt)},Kt=e=>e/203,qt=({j:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(e+Wt)/(.44+.56*(e+Wt)),a=Gt(i+.13860504*t+.058047316*n),o=Gt(i-.13860504*t-.058047316*n),s=Gt(i-.096019242*t-.8118919*n),c={mode:`xyz65`,x:Kt(1.661373024652174*a-.914523081304348*o+.23136208173913045*s),y:Kt(-.3250758611844533*a+1.571847026732543*o-.21825383453227928*s),z:Kt(-.090982811*a-.31272829*o+1.5227666*s)};return r!==void 0&&(c.alpha=r),c},Jt=e=>{let t=Ut(z(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},Yt=e=>V(qt(e)),Xt={mode:`jab`,channels:[`j`,`a`,`b`,`alpha`],parse:[`--jzazbz`],serialize:`--jzazbz`,fromMode:{rgb:Jt,xyz65:Ut},toMode:{rgb:Yt,xyz65:qt},ranges:{j:[0,.222],a:[-.109,.129],b:[-.185,.134]},interpolate:{j:F,a:F,b:F,alpha:{use:F,fixup:I}}},Zt=({j:e,a:t,b:n,alpha:r})=>{t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.sqrt(t*t+n*n),a={mode:`jch`,j:e,c:i};return i&&(a.h=H(Math.atan2(n,t)*180/Math.PI)),r!==void 0&&(a.alpha=r),a},Qt=({j:e,c:t,h:n,alpha:r})=>{n===void 0&&(n=0);let i={mode:`jab`,j:e,a:t?t*Math.cos(n/180*Math.PI):0,b:t?t*Math.sin(n/180*Math.PI):0};return r!==void 0&&(i.alpha=r),i},$t={mode:`jch`,parse:[`--jzczhz`],serialize:`--jzczhz`,toMode:{jab:Qt,rgb:e=>Yt(Qt(e))},fromMode:{rgb:e=>Zt(Jt(e)),jab:Zt},channels:[`j`,`c`,`h`,`alpha`],ranges:{j:[0,.221],c:[0,.19],h:[0,360]},interpolate:{h:{use:F,fixup:U},c:F,j:F,alpha:{use:F,fixup:I}},difference:{h:Ke},average:{h:G}},en=29**3/3**3,tn=6**3/29**3,nn=e=>e**3>tn?e**3:(116*e-16)/en,rn=({l:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(e+16)/116,a=t/500+i,o=i-n/200,s={mode:`xyz50`,x:nn(a)*J.X,y:nn(i)*J.Y,z:nn(o)*J.Z};return r!==void 0&&(s.alpha=r),s},an=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=B({r:e*3.1341359569958707-t*1.6173863321612538-.4906619460083532*n,g:e*-.978795502912089+t*1.916254567259524+.03344273116131949*n,b:e*.07195537988411677-t*.2289768264158322+1.405386058324125*n});return r!==void 0&&(i.alpha=r),i},on=e=>an(rn(e)),sn=e=>{let{r:t,g:n,b:r,alpha:i}=R(e),a={mode:`xyz50`,x:.436065742824811*t+.3851514688337912*n+.14307845442264197*r,y:.22249319175623702*t+.7168870538238823*n+.06061979053616537*r,z:.013923904500943465*t+.09708128566574634*n+.7140993584005155*r};return i!==void 0&&(a.alpha=i),a},cn=e=>e>tn?Math.cbrt(e):(en*e+16)/116,ln=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=cn(e/J.X),a=cn(t/J.Y),o=cn(n/J.Z),s={mode:`lab`,l:116*a-16,a:500*(i-a),b:200*(a-o)};return r!==void 0&&(s.alpha=r),s},un=e=>{let t=ln(sn(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t};function dn(e,t){if(!t||t[0]!==`lab`)return;let n={mode:`lab`},[,r,i,a,o]=t;if(!(r.type===M.Hue||i.type===M.Hue||a.type===M.Hue))return r.type!==M.None&&(n.l=Math.min(Math.max(0,r.value),100)),i.type!==M.None&&(n.a=i.type===M.Number?i.value:i.value*125/100),a.type!==M.None&&(n.b=a.type===M.Number?a.value:a.value*125/100),o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let fn={mode:`lab`,toMode:{xyz50:rn,rgb:on},fromMode:{xyz50:ln,rgb:un},channels:[`l`,`a`,`b`,`alpha`],ranges:{l:[0,100],a:[-125,125],b:[-125,125]},parse:[dn],serialize:e=>`lab(${e.l===void 0?`none`:e.l} ${e.a===void 0?`none`:e.a} ${e.b===void 0?`none`:e.b}${e.alpha<1?` / ${e.alpha}`:``})`,interpolate:{l:F,a:F,b:F,alpha:{use:F,fixup:I}}},pn={...fn,mode:`lab65`,parse:[`--lab-d65`],serialize:`--lab-d65`,toMode:{xyz65:Ze,rgb:Qe},fromMode:{xyz65:et,rgb:tt},ranges:{l:[0,100],a:[-125,125],b:[-125,125]}};function mn(e,t){if(!t||t[0]!==`lch`)return;let n={mode:`lch`},[,r,i,a,o]=t;if(r.type!==M.None){if(r.type===M.Hue)return;n.l=Math.min(Math.max(0,r.value),100)}if(i.type!==M.None&&(n.c=Math.max(0,i.type===M.Number?i.value:i.value*150/100)),a.type!==M.None){if(a.type===M.Percentage)return;n.h=a.value}return o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let hn={mode:`lch`,toMode:{lab:q,rgb:e=>on(q(e))},fromMode:{rgb:e=>K(un(e)),lab:K},channels:[`l`,`c`,`h`,`alpha`],ranges:{l:[0,100],c:[0,150],h:[0,360]},parse:[mn],serialize:e=>`lch(${e.l===void 0?`none`:e.l} ${e.c===void 0?`none`:e.c} ${e.h===void 0?`none`:e.h}${e.alpha<1?` / ${e.alpha}`:``})`,interpolate:{h:{use:F,fixup:U},c:F,l:F,alpha:{use:F,fixup:I}},difference:{h:Ke},average:{h:G}},gn={...hn,mode:`lch65`,parse:[`--lch-d65`],serialize:`--lch-d65`,toMode:{lab65:e=>q(e,`lab65`),rgb:e=>Qe(q(e,`lab65`))},fromMode:{rgb:e=>K(tt(e),`lch65`),lab65:e=>K(e,`lch65`)},ranges:{l:[0,100],c:[0,150],h:[0,360]}},_n=({l:e,u:t,v:n,alpha:r})=>{t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.sqrt(t*t+n*n),a={mode:`lchuv`,l:e,c:i};return i&&(a.h=H(Math.atan2(n,t)*180/Math.PI)),r!==void 0&&(a.alpha=r),a},vn=({l:e,c:t,h:n,alpha:r})=>{n===void 0&&(n=0);let i={mode:`luv`,l:e,u:t?t*Math.cos(n/180*Math.PI):0,v:t?t*Math.sin(n/180*Math.PI):0};return r!==void 0&&(i.alpha=r),i},yn=(e,t,n)=>4*e/(e+15*t+3*n),bn=(e,t,n)=>9*t/(e+15*t+3*n),xn=yn(J.X,J.Y,J.Z),Sn=bn(J.X,J.Y,J.Z),Cn=e=>e<=tn?en*e:116*Math.cbrt(e)-16,wn=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Cn(t/J.Y),a=yn(e,t,n),o=bn(e,t,n);!isFinite(a)||!isFinite(o)?i=a=o=0:(a=13*i*(a-xn),o=13*i*(o-Sn));let s={mode:`luv`,l:i,u:a,v:o};return r!==void 0&&(s.alpha=r),s},Tn=(e,t,n)=>4*e/(e+15*t+3*n),En=(e,t,n)=>9*t/(e+15*t+3*n),Dn=Tn(J.X,J.Y,J.Z),On=En(J.X,J.Y,J.Z),kn=({l:e,u:t,v:n,alpha:r})=>{if(e===void 0&&(e=0),e===0)return{mode:`xyz50`,x:0,y:0,z:0};t===void 0&&(t=0),n===void 0&&(n=0);let i=t/(13*e)+Dn,a=n/(13*e)+On,o=J.Y*(e<=8?e/en:((e+16)/116)**3),s={mode:`xyz50`,x:9*i*o/(4*a),y:o,z:o*(12-3*i-20*a)/(4*a)};return r!==void 0&&(s.alpha=r),s},An={mode:`lchuv`,toMode:{luv:vn,rgb:e=>an(kn(vn(e)))},fromMode:{rgb:e=>_n(wn(sn(e))),luv:_n},channels:[`l`,`c`,`h`,`alpha`],parse:[`--lchuv`],serialize:`--lchuv`,ranges:{l:[0,100],c:[0,176.956],h:[0,360]},interpolate:{h:{use:F,fixup:U},c:F,l:F,alpha:{use:F,fixup:I}},difference:{h:Ke},average:{h:G}},jn={...L,mode:`lrgb`,toMode:{rgb:B},fromMode:{rgb:R},parse:[`srgb-linear`],serialize:`srgb-linear`},Mn={mode:`luv`,toMode:{xyz50:kn,rgb:e=>an(kn(e))},fromMode:{xyz50:wn,rgb:e=>wn(sn(e))},channels:[`l`,`u`,`v`,`alpha`],parse:[`--luv`],serialize:`--luv`,ranges:{l:[0,100],u:[-84.936,175.042],v:[-125.882,87.243]},interpolate:{l:F,u:F,v:F,alpha:{use:F,fixup:I}}},Nn=({r:e,g:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=Math.cbrt(.412221469470763*e+.5363325372617348*t+.0514459932675022*n),a=Math.cbrt(.2119034958178252*e+.6806995506452344*t+.1073969535369406*n),o=Math.cbrt(.0883024591900564*e+.2817188391361215*t+.6299787016738222*n),s={mode:`oklab`,l:.210454268309314*i+.7936177747023054*a-.0040720430116193*o,a:1.9779985324311684*i-2.42859224204858*a+.450593709617411*o,b:.0259040424655478*i+.7827717124575296*a-.8086757549230774*o};return r!==void 0&&(s.alpha=r),s},Pn=e=>{let t=Nn(R(e));return e.r===e.b&&e.b===e.g&&(t.a=t.b=0),t},Fn=({l:e,a:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=(e+.3963377773761749*t+.2158037573099136*n)**3,a=(e-.1055613458156586*t-.0638541728258133*n)**3,o=(e-.0894841775298119*t-1.2914855480194092*n)**3,s={mode:`lrgb`,r:4.076741636075957*i-3.3077115392580616*a+.2309699031821044*o,g:-1.2684379732850317*i+2.6097573492876887*a-.3413193760026573*o,b:-.0041960761386756*i-.7034186179359362*a+1.7076146940746117*o};return r!==void 0&&(s.alpha=r),s},In=e=>B(Fn(e));function Ln(e){let t=.206,n=.03,r=(1+t)/(1+n);return .5*(r*e-t+Math.sqrt((r*e-t)*(r*e-t)+4*n*r*e))}function Rn(e){let t=.206,n=.03;return(1+t)/(1+n),(e*e+t*e)/(1.170873786407767*(e+n))}function zn(e,t){let n,r,i,a,o,s,c,l;-1.88170328*e-.80936493*t>1?(n=1.19086277,r=1.76576728,i=.59662641,a=.75515197,o=.56771245,s=4.0767416621,c=-3.3077115913,l=.2309699292):1.81444104*e-1.19445276*t>1?(n=.73956515,r=-.45954404,i=.08285427,a=.1254107,o=.14503204,s=-1.2684380046,c=2.6097574011,l=-.3413193965):(n=1.35733652,r=-.00915799,i=-1.1513021,a=-.50559606,o=.00692167,s=-.0041960863,c=-.7034186147,l=1.707614701);let u=n+r*e+i*t+a*e*e+o*e*t,d=.3963377774*e+.2158037573*t,f=-.1055613458*e-.0638541728*t,p=-.0894841775*e-1.291485548*t;{let e=1+u*d,t=1+u*f,n=1+u*p,r=e*e*e,i=t*t*t,a=n*n*n,o=3*d*e*e,m=3*f*t*t,h=3*p*n*n,g=6*d*d*e,_=6*f*f*t,v=6*p*p*n,y=s*r+c*i+l*a,b=s*o+c*m+l*h,x=s*g+c*_+l*v;u-=y*b/(b*b-.5*y*x)}return u}function Bn(e,t){let n=zn(e,t),r=Fn({l:1,a:n*e,b:n*t}),i=Math.cbrt(1/Math.max(r.r,r.g,r.b));return[i,i*n]}function Vn(e,t,n,r,i,a=null){a||=Bn(e,t);let o;if((n-i)*a[1]-(a[0]-i)*r<=0)o=a[1]*i/(r*a[0]+a[1]*(i-n));else{o=a[1]*(i-1)/(r*(a[0]-1)+a[1]*(i-n));{let a=n-i,s=r,c=.3963377774*e+.2158037573*t,l=-.1055613458*e-.0638541728*t,u=-.0894841775*e-1.291485548*t,d=a+s*c,f=a+s*l,p=a+s*u;{let e=i*(1-o)+o*n,t=o*r,a=e+t*c,s=e+t*l,m=e+t*u,h=a*a*a,g=s*s*s,_=m*m*m,v=3*d*a*a,y=3*f*s*s,b=3*p*m*m,x=6*d*d*a,S=6*f*f*s,C=6*p*p*m,w=4.0767416621*h-3.3077115913*g+.2309699292*_-1,T=4.0767416621*v-3.3077115913*y+.2309699292*b,ee=4.0767416621*x-3.3077115913*S+.2309699292*C,E=T/(T*T-.5*w*ee),D=-w*E,te=-1.2684380046*h+2.6097574011*g-.3413193965*_-1,ne=-1.2684380046*v+2.6097574011*y-.3413193965*b,re=-1.2684380046*x+2.6097574011*S-.3413193965*C,O=ne/(ne*ne-.5*te*re),k=-te*O,ie=-.0041960863*h-.7034186147*g+1.707614701*_-1,A=-.0041960863*v-.7034186147*y+1.707614701*b,ae=-.0041960863*x-.7034186147*S+1.707614701*C,oe=A/(A*A-.5*ie*ae),j=-ie*oe;D=E>=0?D:1e6,k=O>=0?k:1e6,j=oe>=0?j:1e6,o+=Math.min(D,Math.min(k,j))}}}return o}function Hn(e,t,n=null){n||=Bn(e,t);let r=n[0],i=n[1];return[i/r,i/(1-r)]}function Un(e,t,n){let r=Bn(t,n),i=Vn(t,n,e,1,e,r),a=Hn(t,n,r),o=.11516993+1/(7.4477897+4.1590124*n+t*(-2.19557347+1.75198401*n+t*(-2.13704948-10.02301043*n+t*(-4.24894561+5.38770819*n+4.69891013*t)))),s=.11239642+1/(1.6132032-.68124379*n+t*(.40370612+.90148123*n+t*(-.27087943+.6122399*n+t*(.00299215-.45399568*n-.14661872*t)))),c=i/Math.min(e*a[0],(1-e)*a[1]),l=e*o,u=(1-e)*s,d=.9*c*Math.sqrt(Math.sqrt(1/(1/(l*l*l*l)+1/(u*u*u*u))));return l=e*.4,u=(1-e)*.8,[Math.sqrt(1/(1/(l*l)+1/(u*u))),d,i]}function Wn(e){let t=e.l===void 0?0:e.l,n=e.a===void 0?0:e.a,r=e.b===void 0?0:e.b,i={mode:`okhsl`,l:Ln(t)};e.alpha!==void 0&&(i.alpha=e.alpha);let a=Math.sqrt(n*n+r*r);if(!a)return i.s=0,i;let[o,s,c]=Un(t,n/a,r/a),l;if(a<s){let e=.8*o,t=1-e/s;l=(a-0)/(e+t*(a-0))*.8}else{let e=s,t=.2*s*s*1.25*1.25/o,n=1-t/(c-s);l=.8+.2*((a-e)/(t+n*(a-e)))}return l&&(i.s=l,i.h=H(Math.atan2(r,n)*180/Math.PI)),i}function Gn(e){let t=e.h===void 0?0:e.h,n=e.s===void 0?0:e.s,r=e.l===void 0?0:e.l,i={mode:`oklab`,l:Rn(r)};if(e.alpha!==void 0&&(i.alpha=e.alpha),!n||r===1)return i.a=i.b=0,i;let a=Math.cos(t/180*Math.PI),o=Math.sin(t/180*Math.PI),[s,c,l]=Un(i.l,a,o),u,d,f,p;n<.8?(u=1.25*n,d=0,f=.8*s,p=1-f/c):(u=5*(n-.8),d=c,f=.2*c*c*1.25*1.25/s,p=1-f/(l-c));let m=d+u*f/(1-p*u);return i.a=m*a,i.b=m*o,i}let Kn={...xt,mode:`okhsl`,channels:[`h`,`s`,`l`,`alpha`],parse:[`--okhsl`],serialize:`--okhsl`,fromMode:{oklab:Wn,rgb:e=>Wn(Pn(e))},toMode:{oklab:Gn,rgb:e=>In(Gn(e))}};function qn(e){let t=e.l===void 0?0:e.l,n=e.a===void 0?0:e.a,r=e.b===void 0?0:e.b,i=Math.sqrt(n*n+r*r),a=i?n/i:1,o=i?r/i:1,[s,c]=Hn(a,o),l=.5,u=1-l/s,d=c/(i+t*c),f=d*t,p=d*i,m=Rn(f),h=p*m/f,g=Fn({l:m,a:a*h,b:o*h}),_=Math.cbrt(1/Math.max(g.r,g.g,g.b,0));t/=_,i=i/_*Ln(t)/t,t=Ln(t);let v={mode:`okhsv`,s:i?(l+c)*p/(c*l+c*u*p):0,v:t?t/f:0};return v.s&&(v.h=H(Math.atan2(r,n)*180/Math.PI)),e.alpha!==void 0&&(v.alpha=e.alpha),v}function Jn(e){let t={mode:`oklab`};e.alpha!==void 0&&(t.alpha=e.alpha);let n=e.h===void 0?0:e.h,r=e.s===void 0?0:e.s,i=e.v===void 0?0:e.v,a=Math.cos(n/180*Math.PI),o=Math.sin(n/180*Math.PI),[s,c]=Hn(a,o),l=.5,u=1-l/s,d=1-r*l/(l+c-c*u*r),f=r*c*l/(l+c-c*u*r),p=Rn(d),m=f*p/d,h=Fn({l:p,a:a*m,b:o*m}),g=Math.cbrt(1/Math.max(h.r,h.g,h.b,0)),_=Rn(i*d),v=f*_/d;return t.l=_*g,t.a=v*a*g,t.b=v*o*g,t}let Yn={...wt,mode:`okhsv`,channels:[`h`,`s`,`v`,`alpha`],parse:[`--okhsv`],serialize:`--okhsv`,fromMode:{oklab:qn,rgb:e=>qn(Pn(e))},toMode:{oklab:Jn,rgb:e=>In(Jn(e))}};function Xn(e,t){if(!t||t[0]!==`oklab`)return;let n={mode:`oklab`},[,r,i,a,o]=t;if(!(r.type===M.Hue||i.type===M.Hue||a.type===M.Hue))return r.type!==M.None&&(n.l=Math.min(Math.max(0,r.type===M.Number?r.value:r.value/100),1)),i.type!==M.None&&(n.a=i.type===M.Number?i.value:i.value*.4/100),a.type!==M.None&&(n.b=a.type===M.Number?a.value:a.value*.4/100),o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let Zn={...fn,mode:`oklab`,toMode:{lrgb:Fn,rgb:In},fromMode:{lrgb:Nn,rgb:Pn},ranges:{l:[0,1],a:[-.4,.4],b:[-.4,.4]},parse:[Xn],serialize:e=>`oklab(${e.l===void 0?`none`:e.l} ${e.a===void 0?`none`:e.a} ${e.b===void 0?`none`:e.b}${e.alpha<1?` / ${e.alpha}`:``})`};function Qn(e,t){if(!t||t[0]!==`oklch`)return;let n={mode:`oklch`},[,r,i,a,o]=t;if(r.type!==M.None){if(r.type===M.Hue)return;n.l=Math.min(Math.max(0,r.type===M.Number?r.value:r.value/100),1)}if(i.type!==M.None&&(n.c=Math.max(0,i.type===M.Number?i.value:i.value*.4/100)),a.type!==M.None){if(a.type===M.Percentage)return;n.h=a.value}return o.type!==M.None&&(n.alpha=Math.min(1,Math.max(0,o.type===M.Number?o.value:o.value/100))),n}let $n={...hn,mode:`oklch`,toMode:{oklab:e=>q(e,`oklab`),rgb:e=>In(q(e,`oklab`))},fromMode:{rgb:e=>K(Pn(e),`oklch`),oklab:e=>K(e,`oklch`)},parse:[Qn],serialize:e=>`oklch(${e.l===void 0?`none`:e.l} ${e.c===void 0?`none`:e.c} ${e.h===void 0?`none`:e.h}${e.alpha<1?` / ${e.alpha}`:``})`,ranges:{l:[0,1],c:[0,.4],h:[0,360]}},er=e=>{let{r:t,g:n,b:r,alpha:i}=R(e),a={mode:`xyz65`,x:.486570948648216*t+.265667693169093*n+.1982172852343625*r,y:.2289745640697487*t+.6917385218365062*n+.079286914093745*r,z:0*t+.0451133818589026*n+1.043944368900976*r};return i!==void 0&&(a.alpha=i),a},tr=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=B({r:e*2.4934969119414263-t*.9313836179191242-.402710784450717*n,g:e*-.8294889695615749+t*1.7626640603183465+.0236246858419436*n,b:e*.0358458302437845-t*.0761723892680418+.9568845240076871*n},`p3`);return r!==void 0&&(i.alpha=r),i},nr={...L,mode:`p3`,parse:[`display-p3`],serialize:`display-p3`,fromMode:{rgb:e=>tr(z(e)),xyz65:tr},toMode:{rgb:e=>V(er(e)),xyz65:er}},rr=e=>{let t=Math.abs(e);return t>=1/512?Math.sign(e)*t**(1/1.8):16*e},ir=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`prophoto`,r:rr(e*1.3457868816471585-t*.2555720873797946-.0511018649755453*n),g:rr(e*-.5446307051249019+t*1.5082477428451466+.0205274474364214*n),b:rr(e*0+t*0+1.2119675456389452*n)};return r!==void 0&&(i.alpha=r),i},ar=(e=0)=>{let t=Math.abs(e);return t>=16/512?Math.sign(e)*t**1.8:e/16},or=e=>{let t=ar(e.r),n=ar(e.g),r=ar(e.b),i={mode:`xyz50`,x:.7977666449006423*t+.1351812974005331*n+.0313477341283922*r,y:.2880748288194013*t+.7118352342418731*n+899369387256e-16*r,z:0*t+0*n+.8251046025104602*r};return e.alpha!==void 0&&(i.alpha=e.alpha),i},sr={...L,mode:`prophoto`,parse:[`prophoto-rgb`],serialize:`prophoto-rgb`,fromMode:{xyz50:ir,rgb:e=>ir(sn(e))},toMode:{xyz50:or,rgb:e=>an(or(e))}},cr=1.09929682680944,lr=e=>{let t=Math.abs(e);return t>.018053968510807?(Math.sign(e)||1)*(cr*t**.45-(cr-1)):4.5*e},ur=({x:e,y:t,z:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`rec2020`,r:lr(e*1.7166511879712683-t*.3556707837763925-.2533662813736599*n),g:lr(e*-.6666843518324893+t*1.6164812366349395+.0157685458139111*n),b:lr(e*.0176398574453108-t*.0427706132578085+.9421031212354739*n)};return r!==void 0&&(i.alpha=r),i},dr=1.09929682680944,fr=(e=0)=>{let t=Math.abs(e);return t<.018053968510807*4.5?e/4.5:(Math.sign(e)||1)*((t+dr-1)/dr)**(1/.45)},pr=e=>{let t=fr(e.r),n=fr(e.g),r=fr(e.b),i={mode:`xyz65`,x:.6369580483012911*t+.1446169035862083*n+.1688809751641721*r,y:.262700212011267*t+.6779980715188708*n+.059301716469862*r,z:0*t+.0280726930490874*n+1.0609850577107909*r};return e.alpha!==void 0&&(i.alpha=e.alpha),i},mr={...L,mode:`rec2020`,fromMode:{xyz65:ur,rgb:e=>ur(z(e))},toMode:{xyz65:pr,rgb:e=>V(pr(e))},parse:[`rec2020`],serialize:`rec2020`},X=.0037930732552754493,hr=Math.cbrt(X),gr=e=>Math.cbrt(e)-hr,_r=e=>{let{r:t,g:n,b:r,alpha:i}=R(e),a=gr(.3*t+.622*n+.078*r+X),o=gr(.23*t+.692*n+.078*r+X),s=gr(.2434226892454782*t+.2047674442449682*n+.5518098665095535*r+X),c={mode:`xyb`,x:(a-o)/2,y:(a+o)/2,b:s-(a+o)/2};return i!==void 0&&(c.alpha=i),c},vr=e=>(e+hr)**3,yr={mode:`xyb`,channels:[`x`,`y`,`b`,`alpha`],parse:[`--xyb`],serialize:`--xyb`,toMode:{rgb:({x:e,y:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i=vr(e+t)-X,a=vr(t-e)-X,o=vr(n+t)-X,s=B({r:11.031566904639861*i-9.866943908131562*a-.16462299650829934*o,g:-3.2541473810744237*i+4.418770377582723*a-.16462299650829934*o,b:-3.6588512867136815*i+2.7129230459360922*a+1.9459282407775895*o});return r!==void 0&&(s.alpha=r),s}},fromMode:{rgb:_r},ranges:{x:[-.0154,.0281],y:[0,.8453],b:[-.2778,.388]},interpolate:{x:F,y:F,b:F,alpha:{use:F,fixup:I}}},br={mode:`xyz50`,parse:[`xyz-d50`],serialize:`xyz-d50`,toMode:{rgb:an,lab:ln},fromMode:{rgb:sn,lab:rn},channels:[`x`,`y`,`z`,`alpha`],ranges:{x:[0,.964],y:[0,.999],z:[0,.825]},interpolate:{x:F,y:F,z:F,alpha:{use:F,fixup:I}}},xr={mode:`xyz65`,toMode:{rgb:V,xyz50:e=>{let{x:t,y:n,z:r,alpha:i}=e;t===void 0&&(t=0),n===void 0&&(n=0),r===void 0&&(r=0);let a={mode:`xyz50`,x:1.0479298208405488*t+.0229467933410191*n-.0501922295431356*r,y:.0296278156881593*t+.990434484573249*n-.0170738250293851*r,z:-.0092430581525912*t+.0150551448965779*n+.7518742899580008*r};return i!==void 0&&(a.alpha=i),a}},fromMode:{rgb:z,xyz50:e=>{let{x:t,y:n,z:r,alpha:i}=e;t===void 0&&(t=0),n===void 0&&(n=0),r===void 0&&(r=0);let a={mode:`xyz65`,x:.9554734527042182*t-.0230985368742614*n+.0632593086610217*r,y:-.0283697069632081*t+1.0099954580058226*n+.021041398966943*r,z:.0123140016883199*t-.0205076964334779*n+1.3303659366080753*r};return i!==void 0&&(a.alpha=i),a}},ranges:{x:[0,.95],y:[0,1],z:[0,1.088]},channels:[`x`,`y`,`z`,`alpha`],parse:[`xyz`,`xyz-d65`],serialize:`xyz-d65`,interpolate:{x:F,y:F,z:F,alpha:{use:F,fixup:I}}},Sr={mode:`yiq`,toMode:{rgb:({y:e,i:t,q:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`rgb`,r:e+.95608445*t+.6208885*n,g:e-.27137664*t-.6486059*n,b:e-1.10561724*t+1.70250126*n};return r!==void 0&&(i.alpha=r),i}},fromMode:{rgb:({r:e,g:t,b:n,alpha:r})=>{e===void 0&&(e=0),t===void 0&&(t=0),n===void 0&&(n=0);let i={mode:`yiq`,y:.29889531*e+.58662247*t+.11448223*n,i:.59597799*e-.2741761*t-.32180189*n,q:.21147017*e-.52261711*t+.31114694*n};return r!==void 0&&(i.alpha=r),i}},channels:[`y`,`i`,`q`,`alpha`],parse:[`--yiq`],serialize:`--yiq`,ranges:{i:[-.595,.595],q:[-.522,.522]},interpolate:{y:F,i:F,q:F,alpha:{use:F,fixup:I}}},Cr=(e,t)=>Math.round(e*(t=10**t))/t,wr=((e=4)=>t=>typeof t==`number`?Cr(t,e):t)(2),Tr=e=>Math.max(0,Math.min(1,e||0)),Er=e=>Math.round(Tr(e)*255),Dr=O(`rgb`),Or=e=>{if(e===void 0)return;let t=Er(e.r),n=Er(e.g),r=Er(e.b);return e.alpha===void 0||e.alpha===1?`rgb(${t}, ${n}, ${r})`:`rgba(${t}, ${n}, ${r}, ${wr(Tr(e.alpha))})`},Z=e=>Or(Dr(e)),kr=(e,t=`rgb`,n=!1)=>{let r=t?se(t).channels:null,i=t?O(t):re;return a=>{let o=i(a);if(!o)return;let s=(r||se(o.mode).channels).reduce((n,r)=>{let i=e(o[r],r,o,t);return i!==void 0&&!isNaN(i)&&(n[r]=i),n},{mode:o.mode});if(!n)return s;let c=re(a);return c&&c.mode!==s.mode?O(c.mode)(s):s}},Ar=(e,t,n)=>t===`alpha`?e:(e||0)*(n.alpha===void 0?1:n.alpha),jr=(e,t,n)=>t!==`alpha`&&n.alpha!==0?(e||0)/(n.alpha===void 0?1:n.alpha):e,Mr=e=>{e[0]===void 0&&(e[0]=0),e[e.length-1]===void 0&&(e[e.length-1]=1);let t=1,n,r,i,a;for(;t<e.length;){if(e[t]===void 0){for(r=t,i=e[t-1],n=t;e[n]===void 0;)n++;for(a=(e[n]-i)/(n-t+1);t<n;)e[t]=i+(t+1-r)*a,t++}else e[t]<e[t-1]&&(e[t]=e[t-1]);t++}return e},Nr=(e=.5)=>t=>e<=0?1:e>=1?0:t**+(Math.log(.5)/Math.log(e)),Pr=e=>typeof e==`function`,Q=e=>e&&typeof e==`object`,Fr=e=>typeof e==`number`,Ir=(e,t=`rgb`,n,r)=>{let i=se(t),a=O(t),o=[],s=[],c={};e.forEach(e=>{Array.isArray(e)?(o.push(a(e[0])),s.push(e[1])):Fr(e)||Pr(e)?c[s.length]=e:(o.push(a(e)),s.push(void 0))}),Mr(s);let l=i.channels.reduce((e,t)=>{let r;return r=Q(n)&&Q(n[t])&&n[t].fixup?n[t].fixup:Q(i.interpolate[t])&&i.interpolate[t].fixup?i.interpolate[t].fixup:e=>e,e[t]=r(o.map(e=>e[t])),e},{});if(r){let e=o.map((e,n)=>i.channels.reduce((e,t)=>(e[t]=l[t][n],e),{mode:t}));l=i.channels.reduce((n,i)=>(n[i]=e.map(e=>{let n=r(e[i],i,e,t);return isNaN(n)?void 0:n}),n),{})}let u=i.channels.reduce((e,t)=>{let r;return Pr(n)?r=n:Q(n)&&Pr(n[t])?r=n[t]:Q(n)&&Q(n[t])&&n[t].use?r=n[t].use:Pr(i.interpolate[t])?r=i.interpolate[t]:Q(i.interpolate[t])&&(r=i.interpolate[t].use),e[t]=r(l[t]),e},{}),d=o.length-1;return e=>{if(e=Math.min(Math.max(0,e),1),e<=s[0])return o[0];if(e>s[d])return o[d];let n=0;for(;s[n]<e;)n++;let r=s[n-1],a=s[n]-r,l=(e-r)/a,f=c[n]||c[0];f!==void 0&&(Fr(f)&&(f=Nr((f-r)/a)),l=f(l));let p=(n-1+l)/d;return i.channels.reduce((e,t)=>{let n=u[t](p);return n!==void 0&&(e[t]=n),e},{mode:t})}},Lr=(e,t=`rgb`,n)=>Ir(e,t,n);((e,t)=>(n,r=`rgb`,i)=>{let a=t?kr(t,r):void 0,o=Ir(n,r,i,e);return a?e=>a(o(e)):o})(Ar,jr),j(Me),j(qe),j(ut),j(dt),j(mt),j(xt),j(wt),j(Ot),j(Bt),j(Xt),j($t),j(fn),j(pn),j(hn),j(gn),j(An),j(jn),j(Mn),j(Kn),j(Yn),j(Zn),j($n),j(nr),j(sr),j(mr),j(L),j(yr),j(br),j(xr),j(Sr);let Rr=function(e){return e.START=`^`,e.END=`.`,e.GROUP_OPEN=`(`,e.GROUP_CLOSE=`)`,e.COMMA=`,`,e.SEQUENCE_OPEN=`[`,e.SEQUENCE_CLOSE=`]`,e.OR=`|`,e.AND=`&`,e.NOT=`!`,e.REPEAT=`~`,e.CONFIG=`config`,e.COLOR_STOP=`color-stop`,e.COLOR_HINT=`color-hint`,e}({});function zr(e,t,n,r){let i=n,a=r;for(;a<t.length;){let o=t[a];if(o===`.`||o===`)`||o===`]`||o===`|`)break;if(o===`,`){a+=1;continue}let s=Vr(e,t,i,a);if(!s.matched)return{matched:!1,nextInputIndex:n,nextPatternIndex:r};i=s.nextInputIndex,a=s.nextPatternIndex}return{matched:!0,nextInputIndex:i,nextPatternIndex:a}}function Br(e,t,n,r){let i=t[r],a=e[n];if(i!==`config`&&i!==`color-stop`&&i!==`color-hint`)throw Error(`Expected entity token at pattern index ${r}`);return!a||a.type!==i?{matched:!1,nextInputIndex:n,nextPatternIndex:r}:{matched:!0,nextInputIndex:n+1,nextPatternIndex:r+1}}function Vr(e,t,n,r){let i=t[r];if(i===`config`||i===`color-stop`||i===`color-hint`)return Br(e,t,n,r);if(i===`[`)return Ur(e,t,n,r);if(i===`(`)return Gr(e,t,n,r);if(i===`~`)return Kr(e,t,n,r);throw Error(`Unsupported primary token "${i}" at pattern index ${r}`)}function Hr(e,t,n,r){if(e[t]!==n)throw Error(`Expected "${n}" at pattern index ${t}, got "${e[t]}"`);let i=0;for(let a=t;a<e.length;a+=1){let t=e[a];if(t===n){i+=1;continue}if(t===r&&(--i,i===0))return a}throw Error(`Unclosed token pair "${n}${r}"`)}function Ur(e,t,n,r){if(t[r]!==`[`)throw Error(`Expected "[" at pattern index ${r}`);let i=Hr(t,r,`[`,`]`),a=n,o=r+1;for(;o<i;){if(t[o]===`,`){o+=1;continue}let i=Vr(e,t,a,o);if(!i.matched)return{matched:!1,nextInputIndex:n,nextPatternIndex:r};a=i.nextInputIndex,o=i.nextPatternIndex}return{matched:!0,nextInputIndex:a,nextPatternIndex:i+1}}function Wr(e){let t=[],n=[],r=0,i=0;for(let a=0;a<e.length;a+=1){let o=e[a];if(o===`(`){r+=1,n.push(o);continue}if(o===`)`){--r,n.push(o);continue}if(o===`[`){i+=1,n.push(o);continue}if(o===`]`){--i,n.push(o);continue}if(o===`|`&&r===0&&i===0){t.push(n),n=[];continue}n.push(o)}return n.length>0&&t.push(n),t}function Gr(e,t,n,r){if(t[r]!==`(`)throw Error(`Expected "(" at pattern index ${r}`);let i=Hr(t,r,`(`,`)`),a=Wr(t.slice(r+1,i));for(let t of a){let r=zr(e,t,n,0);if(r.matched)return{matched:!0,nextInputIndex:r.nextInputIndex,nextPatternIndex:i+1}}return{matched:!1,nextInputIndex:n,nextPatternIndex:r}}function Kr(e,t,n,r){if(t[r]!==`~`)throw Error(`Expected "~" at pattern index ${r}`);let i=n,a=r+1;for(;;){let n=Vr(e,t,i,a);if(!n.matched)break;if(n.nextInputIndex===i)throw Error(`Repeat expression did not consume input`);i=n.nextInputIndex}let o=qr(t,a);return{matched:!0,nextInputIndex:i,nextPatternIndex:o}}function qr(e,t){let n=e[t];if(n===`config`||n===`color-stop`||n===`color-hint`)return t+1;if(n===`[`)return Hr(e,t,`[`,`]`)+1;if(n===`(`)return Hr(e,t,`(`,`)`)+1;if(n===`~`)return qr(e,t+1);throw Error(`Unsupported token "${n}" in getPrimaryEndIndex`)}function Jr(e){return Xr(e),$r(e),ei(e),!0}function Yr(e){try{return Jr(e),!0}catch{return!1}}function Xr(e){let t=ti(e);if(t.length===0)throw Error(`Pattern cannot be empty`);if(t[0]!==`^`)throw Error(`Pattern must start with ^`);if(t[t.length-1]!==`.`)throw Error(`Pattern must end with "."`);let n=0,r=0;for(let e=0;e<t.length;e+=1){let i=t[e];if(i===`(`){n+=1;continue}if(i===`)`){if(--n,n<0)throw Error(`Unexpected ")" at token index ${e}`);continue}if(i===`[`){r+=1;continue}if(i===`]`){if(--r,r<0)throw Error(`Unexpected "]" at token index ${e}`);continue}}if(n!==0)throw Error(`Unclosed group "()" in pattern`);if(r!==0)throw Error(`Unclosed sequence "[]" in pattern`);return!0}function Zr(e){try{return Xr(e),!0}catch{return!1}}let Qr={"^":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"(":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"[":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"|":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"&":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"!":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],"~":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],",":[`(`,`[`,`!`,`~`,`config`,`color-stop`,`color-hint`],config:[`,`,`|`,`&`,`)`,`]`,`.`],"color-stop":[`,`,`|`,`&`,`)`,`]`,`.`],"color-hint":[`,`,`|`,`&`,`)`,`]`,`.`],")":[`,`,`|`,`&`,`)`,`]`,`.`],"]":[`,`,`|`,`&`,`)`,`]`,`.`],".":[]};function $r(e){let t=ti(e);if(t.length===0)throw Error(`Pattern cannot be empty`);for(let e=0;e<t.length-1;e+=1){let n=t[e],r=t[e+1],i=Qr[n];if(!i)throw Error(`No semantic transition rule defined for token "${n}"`);if(!i.includes(r))throw Error(`Token "${r}" is not allowed after "${n}" at index ${e+1}`)}return!0}function ei(e){let t=ti(e);for(let e=0;e<t.length;e+=1){let n=t[e],r=t[e+1],i=t[e-1];if(n===`(`&&r===`)`)throw Error(`Empty group "()" is not allowed at token index ${e}`);if(n===`[`&&r===`]`)throw Error(`Empty sequence "[]" is not allowed at token index ${e}`);if(n===`,`){if(i===void 0||r===void 0)throw Error(`Unexpected "," at token index ${e}`);if(i===`[`)throw Error(`Sequence cannot start with "," at token index ${e}`);if(r===`]`)throw Error(`Sequence cannot end with "," at token index ${e}`);if(i===`,`||r===`,`)throw Error(`Unexpected consecutive "," at token index ${e}`)}}return!0}function ti(e){let t=e.trim(),n=[],r=0;for(;r<t.length;){let e=t.slice(r),i=t[r];if(/\s/.test(i)){r+=1;continue}if(e.startsWith(`color-stop`)){n.push(`color-stop`),r+=10;continue}if(e.startsWith(`color-hint`)){n.push(`color-hint`),r+=10;continue}if(e.startsWith(`config`)){n.push(`config`),r+=6;continue}if(i===`^`||i===`.`||i===`(`||i===`)`||i===`[`||i===`]`||i===`,`||i===`|`||i===`&`||i===`!`||i===`~`){n.push(i),r+=1;continue}throw Error(`Unexpected token near "${e}" at index ${r}`)}return n}function ni(e,t){try{return ri(e,t),!0}catch{return!1}}function ri(e,t){Jr(t);let n=ti(t).slice(1,-1),r=zr(e,n,0,0);if(!r.matched)throw Error(`Input does not match pattern`);if(r.nextInputIndex!==e.length)throw Error(`Pattern did not consume all inputs`);if(r.nextPatternIndex!==n.length)throw Error(`Input ended before pattern was fully matched`);return!0}function ii(e,t=`^[([config,color-stop,([color-hint,color-stop]|color-stop)]|color-stop),~([color-hint,color-stop]|color-stop)].`){let n=e.trim();if(n.length===0)throw Error(`Expected function call, received empty string`);let{functionName:r,isRepeating:i,inputs:a}=li(n),o=ci(a);return ri(o,t),{functionName:r,isRepeating:i,inputs:o}}function ai(e){return/^-?\d*\.?\d+(%|deg|rad|turn|grad|px|em|rem|vh|vw|vmin|vmax|cm|mm|in|pt|pc|q)?$/i.test(e.trim())}function oi(e){try{let t=pi(e)[0];return xe(t)!==void 0}catch{return!1}}function si(e){return!ai(e)&&!oi(e)}function ci(e){let t=e.map(e=>e.trim()).filter(e=>e.length>0);return t.length===0?[]:t.map((e,t)=>t===0&&!oi(e)?{type:`config`,value:e}:oi(e)?{type:`color-stop`,value:e}:ai(e)?{type:`color-hint`,value:e}:{type:`config`,value:e})}function li(e){let t=e.indexOf(`(`);if(t<=0)throw Error(`Expected function opening parenthesis`);let n=e.slice(0,t).trim();if(n.length===0)throw Error(`Expected function name before "("`);let r=n.startsWith(`repeating-`);r&&(n=n.slice(10));let i=ui(e,t);if(i===-1)throw Error(`Unclosed function parenthesis`);let a=di(e.slice(t+1,i));return{functionName:n,isRepeating:r,inputs:a}}function ui(e,t){let n=0;for(let r=t;r<e.length;r+=1){let t=e[r];if(t===`(`){n+=1;continue}if(t===`)`){if(--n,n===0)return r;if(n<0)return-1}}return-1}function di(e){let t=[],n=``,r=0,i=0,a=0;for(let o=0;o<e.length;o+=1){let s=e[o];if(s===`(`){r+=1,n+=s;continue}if(s===`)`){--r,n+=s;continue}if(s===`{`){i+=1,n+=s;continue}if(s===`}`){--i,n+=s;continue}if(s===`[`){a+=1,n+=s;continue}if(s===`]`){--a,n+=s;continue}if(s===`,`&&r===0&&i===0&&a===0){fi(t,n),n=``;continue}n+=s}return fi(t,n),t}function fi(e,t){let n=t.trim();n.length>0&&e.push(n)}function pi(e){let t=e.trim(),n=[],r=``,i=0,a=0,o=0;for(let e=0;e<t.length;e+=1){let s=t[e];if(s===`(`){i+=1,r+=s;continue}if(s===`)`){--i,r+=s;continue}if(s===`{`){a+=1,r+=s;continue}if(s===`}`){--a,r+=s;continue}if(s===`[`){o+=1,r+=s;continue}if(s===`]`){--o,r+=s;continue}if(/\s/.test(s)&&i===0&&a===0&&o===0){r.trim().length>0&&(n.push(r.trim()),r=``);continue}r+=s}return r.trim().length>0&&n.push(r.trim()),n}let mi=[`oklab`,`lch`,`oklch`,`hsl`,`hwb`,`lab`,`srgb`,`srgb-linear`,`xyz`,`display-p3`,`a98-rgb`,`prophoto-rgb`,`rec2020`],hi=[`shorter`,`longer`,`increasing`,`decreasing`],gi=[`hsl`,`hwb`,`lch`,`oklch`];function _i(e){return hi.includes(e)}function vi(e){return mi.includes(e)}function yi(e){return gi.includes(e)}var bi=class{_isRepeating;_config;_stops;constructor(e){this._isRepeating=e.isRepeating,this._config=this._cloneConfig(e.config),this._stops=this._getSortedStops(this._cloneStops(e.stops)),this._validateConfig(this._config),this._validateStops(this._stops)}get isRepeating(){return this._isRepeating}get config(){return this._cloneConfig(this._config)}get stops(){return this._cloneStops(this._stops)}toJSON(){return{type:this.type,isRepeating:this.isRepeating,config:this._cloneConfig(this.config),stops:this._cloneStops(this.stops)}}addStop(e){let t=[...this._cloneStops(this._stops),...this._cloneStops([e])],n=this._getSortedStops(t);this._validateStops(n),this._stops=n}static fromString(e){throw Error(`Not implimented`)}static fromAbi(e){throw Error(`Not implimented`)}removeStop(e){if(!Number.isInteger(e))throw TypeError(`Gradient stop index must be an integer`);if(e<0||e>=this._stops.length)throw RangeError(`Gradient stop index is out of bounds`);if(this._stops.filter(e=>e.type===`color-stop`).length<=this._minColorStopsCount())throw Error(`Color stop count should be greather than ${this._minColorStopsCount()}`);let t=e+1>this._stops.length-1?this._stops.length-1:e+1,n=e-1>=0?e-1:0;e!==t&&this._stops[t].type===`color-hint`&&this._stops.splice(t,1),this._stops.splice(e,1),e!==n&&this._stops[n].type===`color-hint`&&this._stops.splice(n,1)}equals(e){if(this.type!==e.type||this.isRepeating!==e.isRepeating||JSON.stringify(this.config)!==JSON.stringify(e.config)||this.stops.length!==e.stops.length)return!1;for(let t=0;t<this.stops.length;t++){let n=this.stops[t],r=e.stops[t];if(n.type!==r.type||n.value!==r.value||n.position!==r.position)return!1}return!0}_minColorStopsCount(){return 0}_getSortedStops(e){return e.map((e,t)=>({stop:e,index:t})).sort((e,t)=>e.stop.position===t.stop.position?e.index-t.index:e.stop.position-t.stop.position).map(e=>e.stop)}_validateStops(e){this._validateStopsShape(e),this._validateStopsSequence(e)}_validateStopsShape(e){if(!Array.isArray(e))throw TypeError(`Gradient stops must be an array`);for(let t of e){if(typeof t!=`object`||!t)throw TypeError(`Gradient stop must be an object`);if(t.type!==`color-stop`&&t.type!==`color-hint`)throw TypeError(`Invalid gradient stop type: ${String(t.type)}`);if(typeof t.value!=`string`)throw TypeError(`Gradient stop value must be a string`);if(typeof t.position!=`number`||Number.isNaN(t.position))throw TypeError(`Gradient stop position must be a valid number`)}}_validateStopsSequence(e){if(e.length<this._minColorStopsCount())throw TypeError(`Gradient must contain at least ${this._minColorStopsCount()} stop`);if(e[0].type!==`color-stop`)throw TypeError(`Gradient stop sequence must start with a color-stop`);if(e[e.length-1].type===`color-hint`)throw TypeError(`Gradient stop sequence cannot end with a color-hint`);for(let t=1;t<e.length;t++){let n=e[t-1],r=e[t];if(n.type===`color-hint`&&r.type!==`color-stop`)throw TypeError(`A color-hint must be followed by a color-stop`)}}_cloneStops(e){return structuredClone(e)}_cloneConfig(e){return structuredClone(e)}_buildSerializedStopTokens(){let e=[];for(let t=0;t<this.stops.length;t++){let n=this.stops[t];if(n.type===`color-hint`){e.push({type:`color-hint`,position:n.position});continue}let r=this.stops[t+1];if(r&&r.type===`color-stop`&&r.value===n.value){e.push({type:`color-stop`,value:n.value,positions:[n.position,r.position]}),t+=1;continue}e.push({type:`color-stop`,value:n.value,positions:[n.position]})}return e}_canOmitAllStopPositions(e){let t=e.filter(e=>e.type===`color-stop`);if(e.some(e=>e.type===`color-hint`)||t.some(e=>e.positions.length!==1)||t.length<=1)return!1;for(let e=0;e<t.length;e++){let n=e/(t.length-1),r=t[e].positions[0];if(Math.abs(r-n)>1e-6)return!1}return!0}_serializeStopsCompact(){let e=this._buildSerializedStopTokens();return this._canOmitAllStopPositions(e)?e.map(e=>{if(e.type!==`color-stop`)throw Error(`Unexpected color-hint token in compact stop serialization`);return e.value}):e.map(e=>e.type===`color-hint`?`${this._formatPercent(e.position)}%`:e.positions.length===2?`${e.value} ${this._formatPercent(e.positions[0])}% ${this._formatPercent(e.positions[1])}%`:`${e.value} ${this._formatPercent(e.positions[0])}%`)}_formatPercent(e){return t(e*100,3)}static _normalizeAbiInputsToStops(e){let t=[];for(let n of e){if(n.type===`color-hint`){t.push({type:`color-hint`,value:n.value,position:this._parsePosition(n.value)});continue}if(n.type===`color-stop`){let e=this._parseColorStopInput(n.value);t.push(...e);continue}throw SyntaxError(`Unsupported linear gradient ABI input type: "${n.type}"`)}return this._resolvePendingStops(t)}static _parsePosition(e){let t=e.trim().toLowerCase().match(/^([+-]?(?:\d+\.?\d*|\.\d+))%$/);if(t===null)throw SyntaxError(`Invalid gradient stop position: "${e}"`);let n=Number(t[1]);if(!Number.isFinite(n))throw SyntaxError(`Invalid gradient stop position: "${e}"`);return n/100}static _parseColorStopInput(e){let t=pi(e);if(t.length===0)throw SyntaxError(`Color-stop input cannot be empty`);let n=[];for(;t.length>0;){let e=t[t.length-1];if(!/%$/.test(e)||(n.unshift(this._parsePosition(e)),t.pop(),n.length===2))break}let r=t.join(` `).trim();if(r.length===0)throw SyntaxError(`Color-stop is missing color value: "${e}"`);return n.length===0?[{type:`color-stop`,value:r}]:n.length===1?[{type:`color-stop`,value:r,position:n[0]}]:[{type:`color-stop`,value:r,position:n[0]},{type:`color-stop`,value:r,position:n[1]}]}static _resolvePendingStops(e){if(e.length===0)throw SyntaxError(`Linear gradient must contain at least one stop`);let t=e.map(e=>({...e})),n=t.findIndex(e=>e.type===`color-stop`),r=[...t].reverse().findIndex(e=>e.type===`color-stop`);if(n===-1)throw SyntaxError(`Linear gradient must contain at least one color-stop`);let i=t.length-1-r;t[n].position===void 0&&(t[n].position=0),t[i].position===void 0&&(t[i].position=1);let a=-1;for(let e=0;e<t.length;e++){let n=t[e];if(n.position!==void 0){if(a!==-1){let r=t[a],i=n,o=e-a;for(let e=1;e<o;e++){let n=t[a+e];n.position===void 0&&(n.position=r.position+(i.position-r.position)*e/o)}}a=e}}return t.map(e=>{if(e.position===void 0)throw SyntaxError(`Failed to resolve gradient stop position`);return{type:e.type,value:e.value,position:e.position}})}},xi=class e extends bi{type=`linear-gradient`;constructor(t){t.config.angle=g(t.config.angle),t.config.interpolation&&(t.config.interpolation=e._normalizeConfigInterpolation(t.config.interpolation)),super(t)}static normalizeConfig(t){let n=e._tokenizeConfigInput(t),r=new Set;for(let e of n){if(r.has(e.type))throw SyntaxError(`Duplicate linear gradient config token: "${e.type}"`);r.add(e.type)}let i=n.find(e=>e.type===`angle`),a=n.find(e=>e.type===`colorSpace`),o=n.find(e=>e.type===`hue`),s={angle:3.141593,interpolation:{hue:`shorter`,colorSpace:`oklab`}};if(i){let e=i.value;if(e.startsWith(`to `)){let t=e.trim().toLowerCase().split(/\s+/).filter(Boolean);if(t.length===0)throw SyntaxError(`Linear gradient angle keyword cannot be empty`);if(t[0]!==`to`)throw SyntaxError(`Linear gradient keyword direction must start with "to"`);let n=t.slice(1);if(n.length===0||n.length>2)throw SyntaxError(`Linear gradient keyword direction must contain one or two direction tokens`);let r=new Set([`top`,`right`,`bottom`,`left`]);for(let e of n)if(!r.has(e))throw SyntaxError(`Invalid linear gradient direction token: "${e}"`);if(new Set(n).size!==n.length)throw SyntaxError(`Linear gradient keyword direction cannot contain duplicate tokens`);let i=n.includes(`top`),a=n.includes(`right`),o=n.includes(`bottom`),c=n.includes(`left`);if(i&&o||c&&a)throw SyntaxError(`Linear gradient keyword direction contains conflicting tokens`);if(i&&c)s.angle=d(315);else if(i&&a)s.angle=d(45);else if(o&&c)s.angle=d(225);else if(o&&a)s.angle=d(135);else if(i)s.angle=d(0);else if(a)s.angle=d(90);else if(o)s.angle=d(180);else if(c)s.angle=d(270);else throw SyntaxError(`Unsupported linear gradient keyword direction: "${e}"`)}else s.angle=g(u(e))}return a&&(s.interpolation.colorSpace=a.value),o&&(s.interpolation.hue=o.value),s}static fromString(t){return e.fromAbi(ii(t))}static fromAbi(t){let n={angle:3.141592};if(t.inputs[0].type===`config`){let r=t.inputs[0].value.trim().toLowerCase();if(r.length===0)throw SyntaxError(`Linear gradient config cannot be empty`);n=e.normalizeConfig(r)}let r=t.inputs[0]?.type===`config`?t.inputs.slice(1):t.inputs,i=e._normalizeAbiInputsToStops(r);return new e({isRepeating:t.isRepeating,config:n,stops:i})}clone(){return new e(this.toJSON())}toString(){return`${this.isRepeating?`repeating-${this.type}`:this.type}(${[this._parseConfigToString(this.config),...this._serializeStopsCompact()].filter(Boolean).join(`, `)})`}_validateConfig(e){}static _normalizeConfigInterpolation(e){let{colorSpace:t,hue:n}=e;return n===void 0||!yi(t)?{colorSpace:t}:{colorSpace:t,hue:n}}_parseConfigToString(e){let{angle:t,interpolation:n}=e,r=[],i=this._parseAngleToString(t);return i.length>0&&r.push(i),n!==void 0&&r.push(this._parseInterpolationToString(n)),r.join(` `)}_parseAngleToString(e){let t=h(f(e),3);switch(t){case 0:return`to top`;case 45:return`to top right`;case 90:return`to right`;case 135:return`to bottom right`;case 180:return``;case 225:return`to bottom left`;case 270:return`to left`;case 315:return`to top left`;default:return`${t}deg`}}_parseInterpolationToString(e){let{colorSpace:t,hue:n}=e;return n===void 0?`in ${t}`:`in ${t} ${n} hue`}static _tokenizeConfigInput(e){let t=e.trim().toLowerCase();if(t.length===0)throw SyntaxError(`Linear gradient config cannot be empty`);let n=t.split(/\s+/),r=[];for(let e=0;e<n.length;e+=1){let t=n[e];if(t===`in`){let t=n[e+1];if(t===void 0||!vi(t))throw SyntaxError(`Expected color space after "in"`);r.push({type:`colorSpace`,value:t}),e+=1;continue}if(l(t)){r.push({type:`angle`,value:t});continue}if(t===`to`){let t=[],i=n[e+1],a=n[e+2];i!==void 0&&t.push(i),(a===`left`||a===`right`)&&t.push(a);let o=`to ${t.join(` `)}`;r.push({type:`angle`,value:o}),e+=t.length;continue}if(_i(t)){if(n[e+1]!==`hue`)throw SyntaxError(`Expected "hue" after "${t}"`);r.push({type:`hue`,value:t}),e+=1;continue}throw SyntaxError(`Unknown linear gradient config token: "${t}"`)}return r}},Si=class e extends bi{static DEFAULT_CONFIG={isRepeating:!1,stops:[{type:`color-stop`,value:`red`,position:0},{type:`color-stop`,value:`blue`,position:1}],config:{shape:`ellipse`,size:{kind:`extent`,value:`farthest-corner`},position:{kind:`keywords`,x:`center`,y:`center`}}};type=`radial-gradient`;constructor(t){let n={...e.DEFAULT_CONFIG,...t};n.config.interpolation&&(n.config.interpolation=e._normalizeConfigInterpolation(n.config.interpolation)),super(n)}static fromString(t){return e.fromAbi(ii(t))}static fromAbi(t){if(t.functionName!==`radial-gradient`)throw Error(`Invalid function name for RadialGradient`);let n=this._parseConfig(t.inputs),r=t.inputs[0]?.type===`config`?t.inputs.slice(1):t.inputs,i=this._normalizeAbiInputsToStops(r);return new e({isRepeating:t.isRepeating,config:n,stops:i})}clone(){return new e(this.toJSON())}toString(){return`${this.isRepeating?`repeating-${this.type}`:this.type}(${[this._parseConfigToString(this.config),...this._serializeStopsCompact()].filter(Boolean).join(`, `)})`}_validateConfig(e){if(e.shape!==`circle`&&e.shape!==`ellipse`)throw Error(`Invalid shape`);if(!e.position)throw Error(`Position is required`);if(!e.size)throw Error(`Size is required`)}_parseConfigToString(e){let t=[],n=this._parseRadialConfigToString(e);return n.length>0&&t.push(n),e.interpolation!==void 0&&t.push(this._parseInterpolationToString(e.interpolation)),t.join(` `)}_parseRadialConfigToString(e){let t=[];return this._isDefaultRadialShape(e.shape)||t.push(e.shape),this._isDefaultRadialSize(e.size)||t.push(this._parseRadialSizeToString(e.size)),this._isDefaultRadialPosition(e.position)||t.push(`at ${this._serializePosition(e.position)}`),t.join(` `)}_parseRadialSizeToString(e){if(e.kind===`extent`)return e.value;let t=this._formatLengthPercentage(e.x);return e.y===void 0?t:`${t} ${this._formatLengthPercentage(e.y)}`}_parseInterpolationToString(e){let{colorSpace:t,hue:n}=e;return n===void 0?`in ${t}`:`in ${t} ${n} hue`}_isDefaultRadialShape(e){return e===`ellipse`}_isDefaultRadialSize(e){return e.kind===`extent`&&e.value===`farthest-corner`}_isDefaultRadialPosition(e){return e.kind===`keywords`&&e.x===`center`&&e.y===`center`}_serializePosition(e){if(e.kind===`keywords`)return`${e.x} ${e.y}`;let t=this._formatLengthPercentage(e.x),n=e.y?this._formatLengthPercentage(e.y):``;return n===``?t:`${t} ${n}`}_formatLengthPercentage(e){return e.kind===`percent`?`${e.value}%`:`${e.value}${e.unit}`}static _parseConfig(e){let t=`ellipse`,n={kind:`extent`,value:`farthest-corner`},r={kind:`keywords`,x:`center`,y:`center`},i,a=e=>e===void 0?!1:e.endsWith(`%`)||/^-?\d*\.?\d+[a-zA-Z]+$/.test(e);for(let o of e){if(o.type!==`config`)continue;let e=pi(o.value);for(let o=0;o<e.length;o++){let s=e[o];if(s===`circle`||s===`ellipse`){t=s;continue}if(s===`closest-side`||s===`closest-corner`||s===`farthest-side`||s===`farthest-corner`){n={kind:`extent`,value:s};continue}if(a(s)){let r=e[o+1];if(t===`ellipse`&&a(r)){n={kind:`explicit`,x:this._parseLengthPercentage(s),y:this._parseLengthPercentage(r)},o+=1;continue}n={kind:`explicit`,x:this._parseLengthPercentage(s)};continue}if(s===`at`){let t=e[o+1],n=e[o+2];if(t===`center`&&(n===void 0||n===`in`)){r={kind:`keywords`,x:`center`,y:`center`},o+=1;continue}if((t===`left`||t===`right`)&&(n===void 0||n===`in`)){r={kind:`keywords`,x:t,y:`center`},o+=1;continue}if((t===`top`||t===`bottom`)&&(n===void 0||n===`in`)){r={kind:`keywords`,x:`center`,y:t},o+=1;continue}if((t===`left`||t===`center`||t===`right`)&&(n===`top`||n===`center`||n===`bottom`)){r={kind:`keywords`,x:t,y:n},o+=2;continue}if(a(t)&&a(n)){r={kind:`values`,x:this._parseLengthPercentage(t),y:this._parseLengthPercentage(n)},o+=2;continue}throw Error(`Invalid radial-gradient position: ${t??``} ${n??``}`)}if(s===`in`){let t=e[o+1],n=e[o+2],r=e[o+3];if(!t)throw Error(`Invalid radial-gradient interpolation: missing color space`);if(n!==void 0&&r===`hue`){i=this._normalizeConfigInterpolation({colorSpace:t,hue:n}),o+=3;continue}i=this._normalizeConfigInterpolation({colorSpace:t}),o+=1;continue}}}return{shape:t,size:n,position:r,interpolation:i}}static _parseLengthPercentage(e){if(e.endsWith(`%`))return{kind:`percent`,value:parseFloat(e)};let t=e.match(/^(-?\d*\.?\d+)([a-zA-Z]+)$/);if(!t)throw Error(`Invalid length-percentage: ${e}`);return{kind:`length`,value:parseFloat(t[1]),unit:t[2]}}static _normalizeConfigInterpolation(e){let{colorSpace:t,hue:n}=e;return n===void 0||!yi(t)?{colorSpace:t}:{colorSpace:t,hue:n}}},Ci=class e extends bi{type=`conic-gradient`;constructor(e){super(e)}clone(){return new e(this.toJSON())}toString(){return`${this.isRepeating?`repeating-${this.type}`:this.type}(${[this._serializeConfig(),...this._serializeStopsCompact()].filter(Boolean).join(`, `)})`}static fromString(e){return this.fromAbi(ii(e))}static fromAbi(t){if(t.functionName!==`conic-gradient`)throw Error(`Invalid function name for ConicGradient`);let n=t.inputs.find(e=>e.type===`config`),r=t.inputs.filter(e=>e.type!==`config`),i=this._parseConfig(n?.value),a=this._normalizeAbiInputsToStops(r);return new e({isRepeating:t.isRepeating,config:i,stops:a})}_validateConfig(e){}_serializeConfig(){let e=[];if(!this._isDefaultFrom(this.config.from)){let t=this.config.from;e.push(`from ${t.value}${t.unit}`)}return this._isDefaultPosition(this.config.position)||e.push(`at ${this._serializePosition(this.config.position)}`),this.config.interpolation!==void 0&&e.push(this._serializeInterpolation(this.config.interpolation)),e.join(` `)}_serializePosition(e){if(e.kind===`keywords`)return`${e.x} ${e.y}`;let t=this._formatLengthPercentage(e.x),n=e.y?this._formatLengthPercentage(e.y):``;return n===``?t:`${t} ${n}`}_formatLengthPercentage(e){return e.kind===`percent`?`${e.value}%`:`${e.value}${e.unit}`}_serializeInterpolation(e){let{colorSpace:t,hue:n}=e;return n===void 0?`in ${t}`:`in ${t} ${n} hue`}_isDefaultFrom(e){return e.value===0&&e.unit===`deg`}_isDefaultPosition(e){return e.kind===`keywords`&&e.x===`center`&&e.y===`center`}static _parseConfig(e){let t={from:{kind:`angle`,value:0,unit:`deg`},position:{kind:`keywords`,x:`center`,y:`center`}};if(!e)return t;let n=pi(e),r=e=>e===void 0?!1:e.endsWith(`%`)||/^-?\d*\.?\d+[a-zA-Z]+$/.test(e);for(let e=0;e<n.length;e++){let i=n[e];if(i===`from`){let r=n[e+1];if(r===void 0)throw Error(`Invalid conic-gradient config: missing angle after from`);t.from=this._parseAngle(r),e+=1;continue}if(i===`at`){let i=n[e+1],a=n[e+2];if(i===void 0)throw Error(`Invalid conic-gradient config: missing position after at`);if(i===`center`&&(a===void 0||a===`in`)){t.position={kind:`keywords`,x:`center`,y:`center`},e+=1;continue}if((i===`left`||i===`right`)&&(a===void 0||a===`in`)){t.position={kind:`keywords`,x:i,y:`center`},e+=1;continue}if((i===`top`||i===`bottom`)&&(a===void 0||a===`in`)){t.position={kind:`keywords`,x:`center`,y:i},e+=1;continue}if((i===`left`||i===`center`||i===`right`)&&(a===`top`||a===`center`||a===`bottom`)){t.position={kind:`keywords`,x:i,y:a},e+=2;continue}if(r(i)&&r(a)){t.position={kind:`values`,x:this._parseLengthPercentage(i),y:this._parseLengthPercentage(a)},e+=2;continue}throw Error(`Invalid conic-gradient position: ${i} ${a??``}`)}if(i===`in`){let r=n[e+1],i=n[e+2],a=n[e+3];if(r===void 0)throw Error(`Invalid conic-gradient interpolation: missing color space`);if(a===`hue`&&(i===`shorter`||i===`longer`||i===`increasing`||i===`decreasing`)){t.interpolation={colorSpace:r,hue:i},e+=3;continue}t.interpolation={colorSpace:r},e+=1;continue}}return t}static _parseLengthPercentage(e){if(e.endsWith(`%`))return{kind:`percent`,value:parseFloat(e)};let t=e.match(/^(-?\d*\.?\d+)([a-zA-Z]+)$/);if(!t)throw Error(`Invalid length-percentage: ${e}`);return{kind:`length`,value:parseFloat(t[1]),unit:t[2]}}static _parseAngle(e){let t=e.match(/^(-?\d*\.?\d+)(deg|rad|turn|grad)$/);if(!t)throw Error(`Invalid angle: ${e}`);return{kind:`angle`,value:Number(t[1]),unit:t[2]}}},wi=class{target=`css`;gradientType=`linear-gradient`;to(e){if(!(e instanceof xi))throw Error(`Expected LinearGradient`);return e.toString()}},Ti=class{target=`css`;gradientType=`radial-gradient`;to(e){if(!(e instanceof Si))throw Error(`Expected RadialGradient`);return e.toString()}},Ei=class{target=`css`;gradientType=`conic-gradient`;to(e){if(!(e instanceof Ci))throw Error(`Expected ConicGradient`);return e.toString()}};function Di(e,t){return(e%t+t)%t}function Oi(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length===0)throw Error(`Cannot sample color from empty stops.`);if(t<=n[0].position)return n[0].value;let r=n[n.length-1];if(t>=r.position)return r.value;for(let e=0;e<n.length-1;e+=1){let r=n[e],i=n[e+1];if(t>=r.position&&t<=i.position){let e=i.position-r.position||1,n=(t-r.position)/e;return Z(Lr([r.value,i.value],`rgb`)(n))}}return r.value}function ki(e,t,n,r){return Oi(e,n+Di(t-n,r))}function Ai(e,t,n){let r=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(r.length<2)return r;let i=r[0].position,a=r[r.length-1].position-i;if(a<=0)return r;let o=[],s=0;o.push({type:`color-stop`,value:ki(r,t,i,a),position:t,_order:s}),s+=1;let c=Math.floor((t-i)/a)-1,l=Math.ceil((n-i)/a)+1;for(let e=c;e<=l;e+=1){let i=e*a;for(let e of r){let r=e.position+i;r<=t||r>=n||(o.push({...e,position:r,_order:s}),s+=1)}}return o.push({type:`color-stop`,value:ki(r,n,i,a),position:n,_order:s}),o.sort((e,t)=>e.position===t.position?e._order-t._order:e.position-t.position).map(({_order:e,...t})=>t)}function ji(e){return Ai(e,0,1)}function Mi(e,t,n,r){return Math.max(...[{x:0,y:0},{x:n,y:0},{x:0,y:r},{x:n,y:r}].map(n=>{let r=(n.x-e.x)/Math.max(t.x,1e-4),i=(n.y-e.y)/Math.max(t.y,1e-4);return Math.sqrt(r*r+i*i)}))}function Ni(e){switch(e){case`longer`:return Pe;case`increasing`:return Fe;case`decreasing`:return Ie;default:return U}}function Pi(e){switch(e){case`a98-rgb`:return`a98`;case`display-p3`:return`p3`;case`prophoto-rgb`:return`prophoto`;case`xyz`:return`xyz65`;case`srgb`:case`srgb-linear`:return`rgb`;default:return e}}function Fi(e){if(e.hue!==void 0)return{h:{fixup:Ni(e.hue)}}}function Ii(e){let t=e.filter(e=>e.type===`color-stop`);return t.length===0?[]:t.length===1?[{...t[0],position:t[0].position??0}]:t.map((e,n)=>e.position==null?n===0?{...e,position:0}:n===t.length-1?{...e,position:1}:{...e,position:n/(t.length-1)}:e)}function Li(e){let t=Ri(e);if(!t)throw Error(`Failed to convert interpolated color to rgb.`);return Z(t)}let Ri=O(`rgb`);function $(e,t=64){let n=Ii(e.stops),r=e.config.interpolation;if(n.length<2)return n;if(r===void 0)return e.isRepeating?ji(n):n;let i=[],a=Pi(r.colorSpace),o=Fi(r);for(let e=0;e<n.length-1;e+=1){let r=n[e],s=n[e+1],c=r.position,l=s.position,u=Lr([r.value,s.value],a,o);for(let n=0;n<=t;n+=1){if(e>0&&n===0)continue;let r=n/t,a=c+(l-c)*r,o=u(r);i.push({type:`color-stop`,value:Li(o),position:a})}}return e.isRepeating?ji(i):i}let zi=O(`rgb`);function Bi(e){let t=zi(e);if(!t)throw Error(`Failed to convert color: ${e}`);return Z(t)}function Vi(e){let t=e.filter(e=>e.type===`color-stop`&&e.position!=null);return t.length?{min:Math.min(...t.map(e=>e.position)),max:Math.max(...t.map(e=>e.position)),stops:t}:{min:0,max:1,stops:[]}}function Hi(e,t,n){let r=n-t||1;return e.filter(e=>e.type===`color-stop`&&e.position!=null).map(e=>({...e,position:(e.position-t)/r}))}var Ui=class{target=`canvas-2d`;gradientType=`linear-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=t.config.angle,a=Math.sin(i),o=-Math.cos(i),s=n/2,c=r/2,l=Math.abs(n*a)+Math.abs(r*o),u=s-a*l/2,d=c-o*l/2,f=s+a*l/2,p=c+o*l/2,{min:m,max:h,stops:g}=Vi($(t)),_=g;if(m<0||h>1){let e=f-u,t=p-d,n=u,r=d;u=n+e*m,d=r+t*m,f=n+e*h,p=r+t*h,_=Hi(g,m,h)}let v=e.createLinearGradient(u,d,f,p);for(let e of _)v.addColorStop(e.position,Bi(e.value));e.clearRect(0,0,n,r),e.fillStyle=v,e.fillRect(0,0,n,r)}}}};let Wi=O(`rgb`);function Gi(e){let t=Wi(e);if(!t)throw Error(`Failed to convert color: ${e}`);return Z(t)}function Ki(e){let t=e.filter(e=>e.type===`color-stop`&&e.position!=null);return t.length?{min:Math.min(...t.map(e=>e.position)),max:Math.max(...t.map(e=>e.position)),stops:t}:{min:0,max:1,stops:[]}}function qi(e,t,n){let r=n-t||1;return e.map(e=>({...e,position:(e.position-t)/r}))}function Ji(e,t,n,r){return r===`left`?e.x:r===`right`?t-e.x:r===`top`?e.y:n-e.y}function Yi(e,t){let n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}function Xi(e,t,n){return[{dx:-e.x,dy:-e.y},{dx:t-e.x,dy:-e.y},{dx:-e.x,dy:n-e.y},{dx:t-e.x,dy:n-e.y}]}function Zi(e,t,n,r){let i=Math.max(e,1e-4),a=Math.max(t,1e-4),o=Math.sqrt(n*n/(i*i)+r*r/(a*a));return{x:i*o,y:a*o}}var Qi=class{target=`canvas-2d`;gradientType=`radial-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=this._resolveCenter(t.config.position,n,r),a=this._resolveRadialRadii(t.config.size,t.config.shape,i,n,r),o=Mi(i,a,n,r),s=$(t,128),{min:c,max:l,stops:u}=Ki(t.isRepeating?Ai(s,0,o):s),d=u,f=0,p=t.isRepeating?o:1;if(t.isRepeating?d=qi(u,0,o):(c<0||l>1)&&(d=qi(u,c,l),f=c,p=l),t.config.shape===`circle`){let t=a.x,o=Math.max(0,t*f),s=Math.max(o+1e-4,t*p),c=e.createRadialGradient(i.x,i.y,o,i.x,i.y,s);for(let e of d)c.addColorStop(e.position,Gi(e.value));e.fillStyle=c,e.fillRect(0,0,n,r);return}let m=Math.max(a.x,a.y),h=a.x/m,g=a.y/m,_=Math.max(0,m*f),v=Math.max(_+1e-4,m*p);e.save(),e.translate(i.x,i.y),e.scale(h,g);let y=e.createRadialGradient(0,0,_,0,0,v);for(let e of d)y.addColorStop(e.position,Gi(e.value));e.fillStyle=y;let b=v+2;e.fillRect(-b/h*2,-b/g*2,b/h*4,b/g*4),e.restore()}}}_resolveCenter(e,t,n){return e.kind===`keywords`?{x:this._resolveKeywordX(e.x,t),y:this._resolveKeywordY(e.y,n)}:{x:this._resolve(e.x,t),y:this._resolve(e.y,n)}}_resolveKeywordX(e,t){return e===`left`?0:e===`center`?t/2:t}_resolveKeywordY(e,t){return e===`top`?0:e===`center`?t/2:t}_resolveRadialRadii(e,t,n,r,i){if(e.kind===`explicit`){let n=this._resolve(e.x,r),a=e.y?this._resolve(e.y,i):n;return{x:Math.max(n,1e-4),y:Math.max(t===`circle`?n:a,1e-4)}}let a=Ji(n,r,i,`left`),o=Ji(n,r,i,`right`),s=Ji(n,r,i,`top`),c=Ji(n,r,i,`bottom`);if(t===`circle`){let t=[{x:0,y:0},{x:r,y:0},{x:0,y:i},{x:r,y:i}].map(e=>Yi(n,e));if(e.value===`closest-side`){let e=Math.min(a,o,s,c);return{x:e,y:e}}if(e.value===`farthest-side`){let e=Math.max(a,o,s,c);return{x:e,y:e}}if(e.value===`closest-corner`){let e=Math.min(...t);return{x:e,y:e}}let l=Math.max(...t);return{x:l,y:l}}let l=Math.min(a,o),u=Math.min(s,c),d=Math.max(a,o),f=Math.max(s,c);if(e.value===`closest-side`)return{x:Math.max(l,1e-4),y:Math.max(u,1e-4)};if(e.value===`farthest-side`)return{x:Math.max(d,1e-4),y:Math.max(f,1e-4)};let p=Xi(n,r,i);return e.value===`closest-corner`?p.map(e=>Zi(l,u,e.dx,e.dy)).reduce((e,t)=>{let n=e.x*e.y;return t.x*t.y<n?t:e}):p.map(e=>Zi(d,f,e.dx,e.dy)).reduce((e,t)=>{let n=e.x*e.y;return t.x*t.y>n?t:e})}_resolve(e,t){return e.kind===`percent`?e.value/100*t:(e.unit,e.value)}};let $i=O(`rgb`);var ea=class{target=`canvas-2d`;gradientType=`conic-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=e.createImageData(n,r),a=i.data,{x:o,y:s}=this._resolvePosition(t.config.position,n,r),c=this._toRad(t.config.from),l=$(t,128),u=this._normalizeStops(l);if(u.length===0){e.putImageData(i,0,0);return}for(let e=0;e<r;e++)for(let t=0;t<n;t++){let r=t-o,i=e-s,l=Math.atan2(i,r)+Math.PI/2-c;for(;l<0;)l+=Math.PI*2;for(;l>=Math.PI*2;)l-=Math.PI*2;let d=l/(Math.PI*2),f=this._sampleColor(u,d),p=(e*n+t)*4;a[p]=f.r,a[p+1]=f.g,a[p+2]=f.b,a[p+3]=f.a}e.putImageData(i,0,0)}}}_resolvePosition(e,t,n){return e.kind===`keywords`?{x:this._resolveKeywordX(e.x,t),y:this._resolveKeywordY(e.y,n)}:{x:this._resolve(e.x,t),y:this._resolve(e.y,n)}}_resolve(e,t){return e.kind===`percent`?e.value/100*t:(e.unit,e.value)}_resolveKeywordX(e,t){return e===`left`?0:e===`right`?t:t/2}_resolveKeywordY(e,t){return e===`top`?0:e===`bottom`?t:t/2}_toRad(e){return e.unit===`deg`?d(e.value):e.unit===`turn`?p(e.value):e.unit===`grad`?m(e.value):e.value}_normalizeStops(e){return e.filter(e=>e.type===`color-stop`&&e.position!=null).map(e=>({position:this._clamp01(e.position),color:this._parseColor(e.value)})).sort((e,t)=>e.position-t.position)}_sampleColor(e,t){if(e.length===1)return e[0].color;let n=e[0],r=[...e,{...n,position:n.position+1}],i=t;i<n.position&&(i+=1);for(let e=0;e<r.length-1;e++){let t=r[e],n=r[e+1];if(i>=t.position&&i<=n.position){let e=n.position-t.position||1,r=(i-t.position)/e;return this._mixColor(t.color,n.color,r)}}return e[e.length-1].color}_mixColor(e,t,n){return{r:Math.round(e.r+(t.r-e.r)*n),g:Math.round(e.g+(t.g-e.g)*n),b:Math.round(e.b+(t.b-e.b)*n),a:Math.round(e.a+(t.a-e.a)*n)}}_parseColor(e){let t=$i(e);if(!t)throw Error(`Failed to convert color: ${e}`);return{r:Math.round((t.r??0)*255),g:Math.round((t.g??0)*255),b:Math.round((t.b??0)*255),a:Math.round((t.alpha??1)*255)}}_clamp01(e){return Math.max(0,Math.min(1,e))}};let ta=O(`rgb`);function na(e){let t=ta(e);if(!t)throw Error(`Failed to convert color: ${e}`);return[t.r??0,t.g??0,t.b??0,t.alpha??1]}function ra(e){let t=e.filter(e=>e.type===`color-stop`&&e.position!=null);return t.length?{min:Math.min(...t.map(e=>e.position)),max:Math.max(...t.map(e=>e.position)),stops:t}:{min:0,max:1,stops:[]}}function ia(e,t,n){let r=n-t||1;return e.filter(e=>e.type===`color-stop`&&e.position!=null).map(e=>({...e,position:(e.position-t)/r}))}function aa(e,t,n){let r=e.createShader(t);if(!r)throw Error(`Failed to create WebGL shader.`);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(r);throw e.deleteShader(r),Error(`WebGL shader compile error: ${t}`)}return r}function oa(e,t,n){let r=aa(e,e.VERTEX_SHADER,t),i=aa(e,e.FRAGMENT_SHADER,n),a=e.createProgram();if(!a)throw Error(`Failed to create WebGL program.`);if(e.attachShader(a,r),e.attachShader(a,i),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS)){let t=e.getProgramInfoLog(a);throw e.deleteProgram(a),Error(`WebGL program link error: ${t}`)}return a}function sa(e){return e.filter(e=>e.type===`color-stop`).length}function ca(e,t){let n=sa(e.stops),r=Math.max(1,n-1);return Math.max(2,Math.floor((t-1)/r))}function la(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length===0)throw Error(`Cannot sample color from empty gradient stops.`);if(t<=n[0].position)return n[0].value;let r=n[n.length-1];if(t>=r.position)return r.value;for(let e=0;e<n.length-1;e+=1){let r=n[e],i=n[e+1];if(t>=r.position&&t<=i.position){let e=i.position-r.position||1,n=(t-r.position)/e;return Z(Lr([r.value,i.value],`rgb`)(n))}}return r.value}function ua(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length<=t)return n;let r=[];for(let e=0;e<t;e+=1){let i=e/(t-1);r.push({type:`color-stop`,value:la(n,i),position:i})}return r}var da=class{target=`canvas-webgl`;gradientType=`linear-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=e.getContext(`webgl`);if(!i)throw Error(`WebGL is not supported.`);e.width=n,e.height=r,i.viewport(0,0,n,r);let a=oa(i,`
|
|
5
5
|
attribute vec2 a_position;
|
|
6
6
|
varying vec2 v_uv;
|
|
7
7
|
|
|
@@ -57,7 +57,65 @@ var gradiente=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Mo
|
|
|
57
57
|
|
|
58
58
|
gl_FragColor = getGradientColor(t);
|
|
59
59
|
}
|
|
60
|
-
`);i.useProgram(a);let o=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),i.STATIC_DRAW);let s=i.getAttribLocation(a,`a_position`);i.enableVertexAttribArray(s),i.vertexAttribPointer(s,2,i.FLOAT,!1,0,0);let c=t.config.angle,l=Math.sin(c),u=-Math.cos(c),d=n/2,f=r/2,p=Math.abs(n*l)+Math.abs(r*u),m=d-l*p/2,h=f-u*p/2,g=d+l*p/2,_=f+u*p/2,{min:v,max:y,stops:b}=ra(
|
|
60
|
+
`);i.useProgram(a);let o=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),i.STATIC_DRAW);let s=i.getAttribLocation(a,`a_position`);i.enableVertexAttribArray(s),i.vertexAttribPointer(s,2,i.FLOAT,!1,0,0);let c=t.config.angle,l=Math.sin(c),u=-Math.cos(c),d=n/2,f=r/2,p=Math.abs(n*l)+Math.abs(r*u),m=d-l*p/2,h=f-u*p/2,g=d+l*p/2,_=f+u*p/2,{min:v,max:y,stops:b}=ra($(t,ca(t,128))),x=b;if(v<0||y>1){let e=g-m,t=_-h,n=m,r=h;m=n+e*v,h=r+t*v,g=n+e*y,_=r+t*y,x=ia(b,v,y)}let S=m/n,C=1-h/r,w=g/n,T=1-_/r,ee=ua(x,128),E=new Float32Array(128),D=new Float32Array(512);ee.forEach((e,t)=>{let n=na(e.value);E[t]=e.position,D[t*4+0]=n[0],D[t*4+1]=n[1],D[t*4+2]=n[2],D[t*4+3]=n[3]}),i.uniform2f(i.getUniformLocation(a,`u_start`),S,C),i.uniform2f(i.getUniformLocation(a,`u_end`),w,T),i.uniform1i(i.getUniformLocation(a,`u_stopCount`),ee.length),i.uniform1fv(i.getUniformLocation(a,`u_positions`),E),i.uniform4fv(i.getUniformLocation(a,`u_colors`),D),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT),i.drawArrays(i.TRIANGLES,0,6)}}}};let fa=O(`rgb`),pa=Math.PI*2;function ma(e){let t=fa(e);if(!t)throw Error(`Failed to convert color: ${e}`);return[t.r??0,t.g??0,t.b??0,t.alpha??1]}function ha(e,t,n){let r=e.createShader(t);if(!r)throw Error(`Failed to create WebGL shader.`);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(r);throw e.deleteShader(r),Error(`WebGL shader compile error: ${t}`)}return r}function ga(e,t,n){let r=ha(e,e.VERTEX_SHADER,t),i=ha(e,e.FRAGMENT_SHADER,n),a=e.createProgram();if(!a)throw Error(`Failed to create WebGL program.`);if(e.attachShader(a,r),e.attachShader(a,i),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS)){let t=e.getProgramInfoLog(a);throw e.deleteProgram(a),Error(`WebGL program link error: ${t}`)}return a}function _a(e){return e.filter(e=>e.type===`color-stop`).length}function va(e,t){let n=_a(e.stops),r=Math.max(1,n-1);return Math.max(2,Math.floor((t-1)/r))}function ya(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length===0)throw Error(`Cannot sample color from empty gradient stops.`);if(t<=n[0].position)return n[0].value;let r=n[n.length-1];if(t>=r.position)return r.value;for(let e=0;e<n.length-1;e+=1){let r=n[e],i=n[e+1];if(t>=r.position&&t<=i.position){let e=i.position-r.position||1,n=(t-r.position)/e;return Z(Lr([r.value,i.value],`rgb`)(n))}}return r.value}function ba(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length<=t)return n;let r=[];for(let e=0;e<t;e+=1){let i=e/(t-1);r.push({type:`color-stop`,value:ya(n,i),position:i})}return r}function xa(e,t){if(e.kind===`percent`)return e.value/100*t;if(e.kind===`length`){if(e.unit===`px`)return e.value;throw Error(`Unsupported gradient length unit for WebGL conic gradient: ${e.unit}`)}return e}function Sa(e){return e.unit===`rad`?e.value:e.unit===`deg`?e.value/360*pa:e.unit===`turn`?e.value*pa:e.unit===`grad`?e.value/400*pa:e.unit}function Ca(e,t){return e===`left`?0:e===`center`?t/2:e===`right`?t:t/2}function wa(e,t){return e===`top`?0:e===`center`?t/2:e===`bottom`?t:t/2}function Ta(e,t,n){return e.kind===`keywords`?{x:Ca(e.x,t),y:wa(e.y,n)}:e.kind===`values`?{x:xa(e.x,t),y:xa(e.y,n)}:{x:t/2,y:n/2}}var Ea=class{target=`canvas-webgl`;gradientType=`conic-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=e.getContext(`webgl`);if(!i)throw Error(`WebGL is not supported.`);e.width=n,e.height=r,i.viewport(0,0,n,r);let a=ga(i,`
|
|
61
|
+
attribute vec2 a_position;
|
|
62
|
+
varying vec2 v_uv;
|
|
63
|
+
|
|
64
|
+
void main() {
|
|
65
|
+
v_uv = a_position * 0.5 + 0.5;
|
|
66
|
+
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
67
|
+
}
|
|
68
|
+
`,`
|
|
69
|
+
precision mediump float;
|
|
70
|
+
|
|
71
|
+
const float PI = 3.141592653589793;
|
|
72
|
+
const float TWO_PI = 6.283185307179586;
|
|
73
|
+
|
|
74
|
+
varying vec2 v_uv;
|
|
75
|
+
|
|
76
|
+
uniform vec2 u_center;
|
|
77
|
+
uniform float u_startAngle;
|
|
78
|
+
uniform int u_stopCount;
|
|
79
|
+
uniform float u_positions[128];
|
|
80
|
+
uniform vec4 u_colors[128];
|
|
81
|
+
|
|
82
|
+
vec4 getGradientColor(float t) {
|
|
83
|
+
vec4 result = u_colors[0];
|
|
84
|
+
|
|
85
|
+
for (int i = 0; i < 127; i++) {
|
|
86
|
+
if (i >= u_stopCount - 1) {
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
float currentPosition = u_positions[i];
|
|
91
|
+
float nextPosition = u_positions[i + 1];
|
|
92
|
+
|
|
93
|
+
if (t <= currentPosition) {
|
|
94
|
+
return u_colors[i];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (t >= currentPosition && t <= nextPosition) {
|
|
98
|
+
float localT = (t - currentPosition) / max(nextPosition - currentPosition, 0.00001);
|
|
99
|
+
return mix(u_colors[i], u_colors[i + 1], localT);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
result = u_colors[i + 1];
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
void main() {
|
|
109
|
+
vec2 delta = v_uv - u_center;
|
|
110
|
+
|
|
111
|
+
float angle = atan(delta.y, delta.x);
|
|
112
|
+
float cssAngle = mod((PI * 0.5) - angle + TWO_PI, TWO_PI);
|
|
113
|
+
|
|
114
|
+
float t = mod(cssAngle - u_startAngle + TWO_PI, TWO_PI) / TWO_PI;
|
|
115
|
+
|
|
116
|
+
gl_FragColor = getGradientColor(t);
|
|
117
|
+
}
|
|
118
|
+
`);i.useProgram(a);let o=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),i.STATIC_DRAW);let s=i.getAttribLocation(a,`a_position`);i.enableVertexAttribArray(s),i.vertexAttribPointer(s,2,i.FLOAT,!1,0,0);let c=Ta(t.config.position,n,r),l=ba($(t,va(t,128)),128),u=new Float32Array(128),d=new Float32Array(512);l.forEach((e,t)=>{let n=ma(e.value);u[t]=e.position,d[t*4+0]=n[0],d[t*4+1]=n[1],d[t*4+2]=n[2],d[t*4+3]=n[3]}),i.uniform2f(i.getUniformLocation(a,`u_center`),c.x/n,1-c.y/r),i.uniform1f(i.getUniformLocation(a,`u_startAngle`),Sa(t.config.from)),i.uniform1i(i.getUniformLocation(a,`u_stopCount`),l.length),i.uniform1fv(i.getUniformLocation(a,`u_positions`),u),i.uniform4fv(i.getUniformLocation(a,`u_colors`),d),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT),i.drawArrays(i.TRIANGLES,0,6)}}}};let Da=O(`rgb`);function Oa(e){let t=Da(e);if(!t)throw Error(`Failed to convert color: ${e}`);return[t.r??0,t.g??0,t.b??0,t.alpha??1]}function ka(e,t,n){let r=e.createShader(t);if(!r)throw Error(`Failed to create WebGL shader.`);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(r);throw e.deleteShader(r),Error(`WebGL shader compile error: ${t}`)}return r}function Aa(e,t,n){let r=ka(e,e.VERTEX_SHADER,t),i=ka(e,e.FRAGMENT_SHADER,n),a=e.createProgram();if(!a)throw Error(`Failed to create WebGL program.`);if(e.attachShader(a,r),e.attachShader(a,i),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS)){let t=e.getProgramInfoLog(a);throw e.deleteProgram(a),Error(`WebGL program link error: ${t}`)}return a}function ja(e){return e.filter(e=>e.type===`color-stop`).length}function Ma(e,t){let n=ja(e.stops),r=Math.max(1,n-1);return Math.max(2,Math.floor((t-1)/r))}function Na(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length===0)throw Error(`Cannot sample color from empty gradient stops.`);if(t<=n[0].position)return n[0].value;let r=n[n.length-1];if(t>=r.position)return r.value;for(let e=0;e<n.length-1;e+=1){let r=n[e],i=n[e+1];if(t>=r.position&&t<=i.position){let e=i.position-r.position||1,n=(t-r.position)/e;return Z(Lr([r.value,i.value],`rgb`)(n))}}return r.value}function Pa(e,t){let n=e.filter(e=>e.type===`color-stop`&&e.position!=null).sort((e,t)=>e.position-t.position);if(n.length<=t)return n;let r=[];for(let e=0;e<t;e+=1){let i=e/(t-1);r.push({type:`color-stop`,value:Na(n,i),position:i})}return r}function Fa(e,t){if(e.kind===`percent`)return e.value/100*t;if(e.kind===`length`){if(e.unit===`px`)return e.value;throw Error(`Unsupported gradient length unit for WebGL radial gradient: ${e.unit}`)}return e}function Ia(e,t){return e===`left`?0:e===`center`?t/2:e===`right`?t:t/2}function La(e,t){return e===`top`?0:e===`center`?t/2:e===`bottom`?t:t/2}function Ra(e,t,n){return e.kind===`keywords`?{x:Ia(e.x,t),y:La(e.y,n)}:e.kind===`values`?{x:Fa(e.x,t),y:Fa(e.y,n)}:{x:t/2,y:n/2}}function za(e,t,n,r){return r===`left`?e.x:r===`right`?t-e.x:r===`top`?e.y:n-e.y}function Ba(e,t){let n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}function Va(e,t,n){let r=n-t||1;return e.filter(e=>e.type===`color-stop`&&e.position!=null).map(e=>({...e,position:(e.position-t)/r}))}function Ha(e,t,n){return[{dx:-e.x,dy:-e.y},{dx:t-e.x,dy:-e.y},{dx:-e.x,dy:n-e.y},{dx:t-e.x,dy:n-e.y}]}function Ua(e,t,n,r){let i=Math.max(e,1e-4),a=Math.max(t,1e-4),o=Math.sqrt(n*n/(i*i)+r*r/(a*a));return{x:i*o,y:a*o}}function Wa(e,t,n,r,i){if(e.kind===`explicit`){let n=Fa(e.x,r),a=e.y?Fa(e.y,i):n;return{x:Math.max(n,1e-4),y:Math.max(t===`circle`?n:a,1e-4)}}let a=za(n,r,i,`left`),o=za(n,r,i,`right`),s=za(n,r,i,`top`),c=za(n,r,i,`bottom`);if(t===`circle`){let t=[{x:0,y:0},{x:r,y:0},{x:0,y:i},{x:r,y:i}].map(e=>Ba(n,e));if(e.value===`closest-side`){let e=Math.max(Math.min(a,o,s,c),1e-4);return{x:e,y:e}}if(e.value===`farthest-side`){let e=Math.max(Math.max(a,o,s,c),1e-4);return{x:e,y:e}}if(e.value===`closest-corner`){let e=Math.max(Math.min(...t),1e-4);return{x:e,y:e}}let l=Math.max(Math.max(...t),1e-4);return{x:l,y:l}}let l=Math.min(a,o),u=Math.min(s,c),d=Math.max(a,o),f=Math.max(s,c);if(e.value===`closest-side`)return{x:Math.max(l,1e-4),y:Math.max(u,1e-4)};if(e.value===`farthest-side`)return{x:Math.max(d,1e-4),y:Math.max(f,1e-4)};let p=Ha(n,r,i);return e.value===`closest-corner`?p.map(e=>Ua(l,u,e.dx,e.dy)).reduce((e,t)=>{let n=e.x*e.y;return t.x*t.y<n?t:e}):p.map(e=>Ua(d,f,e.dx,e.dy)).reduce((e,t)=>{let n=e.x*e.y;return t.x*t.y>n?t:e})}var Ga=class{target=`canvas-webgl`;gradientType=`radial-gradient`;to(e){let t=e;return{draw:(e,n,r)=>{let i=e.getContext(`webgl`);if(!i)throw Error(`WebGL is not supported.`);e.width=n,e.height=r,i.viewport(0,0,n,r);let a=Aa(i,`
|
|
61
119
|
attribute vec2 a_position;
|
|
62
120
|
varying vec2 v_uv;
|
|
63
121
|
|
|
@@ -113,4 +171,4 @@ var gradiente=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Mo
|
|
|
113
171
|
|
|
114
172
|
gl_FragColor = getGradientColor(t);
|
|
115
173
|
}
|
|
116
|
-
`);i.useProgram(a);let o=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),i.STATIC_DRAW);let s=i.getAttribLocation(a,`a_position`);i.enableVertexAttribArray(s),i.vertexAttribPointer(s,2,i.FLOAT,!1,0,0);let c=
|
|
174
|
+
`);i.useProgram(a);let o=i.createBuffer();i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),i.STATIC_DRAW);let s=i.getAttribLocation(a,`a_position`);i.enableVertexAttribArray(s),i.vertexAttribPointer(s,2,i.FLOAT,!1,0,0);let c=Ra(t.config.position,n,r),l=Wa(t.config.size,t.config.shape,c,n,r),u=Mi(c,l,n,r),d=$(t,Ma(t,128)),f=Math.min(u,16),p=t.isRepeating?f:1,m=t.isRepeating?Ai(d,0,f):d,h=Pa(t.isRepeating?Va(m,0,f):m,128),g=new Float32Array(128),_=new Float32Array(512);h.forEach((e,t)=>{let n=Oa(e.value);g[t]=e.position,_[t*4+0]=n[0],_[t*4+1]=n[1],_[t*4+2]=n[2],_[t*4+3]=n[3]}),i.uniform2f(i.getUniformLocation(a,`u_center`),c.x/n,1-c.y/r),i.uniform2f(i.getUniformLocation(a,`u_radius`),l.x/n,l.y/r),i.uniform1f(i.getUniformLocation(a,`u_tMax`),p),i.uniform1i(i.getUniformLocation(a,`u_stopCount`),h.length),i.uniform1fv(i.getUniformLocation(a,`u_positions`),g),i.uniform4fv(i.getUniformLocation(a,`u_colors`),_),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT),i.drawArrays(i.TRIANGLES,0,6)}}}},Ka=class{static _modules=new Map;static _initialized=!1;static add(e){this._ensureInitialized(),this._modules.set(this._getKey(e.target,e.gradientType),e)}static get(e,t){return this._ensureInitialized(),this._modules.get(this._getKey(e,t))??null}static remove(e,t){return this._ensureInitialized(),this._modules.delete(this._getKey(e,t))}static to(e,t){let n=typeof t==`string`?qa.create(t):t,r=this.get(e,n.type);if(!r)throw Error(`No transformer registered for target "${e}" and gradient "${n.type}"`);return r.to(n)}static from(e,t,n){let r=this.get(e,t);if(!r||!r.from)throw Error(`No reverse transformer registered for target "${e}" and gradient "${t}"`);return r.from(n)}static _ensureInitialized(){this._initialized||(this._initialized=!0,this.add(new wi),this.add(new Ti),this.add(new Ei),this.add(new Ui),this.add(new Qi),this.add(new ea),this.add(new da),this.add(new Ga),this.add(new Ea))}static _getKey(e,t){return`${e}:${t}`}},qa=class{static _registry=new Map;static _initialized=!1;static add(e,t){this._ensureInitialized(),this._registry.set(e,t)}static get(e){return this._ensureInitialized(),this._registry.get(e)??null}static remove(e){return this._registry.delete(e)}static create(e){let t=typeof e==`string`?ii(e):e,n=this.get(t.functionName);if(!n)throw Error(`No gradient registered for: ${t.functionName}`);return n.fromAbi(t)}static isValid(e){try{return this.create(e),!0}catch{return!1}}static _ensureInitialized(){this._initialized||(this._initialized=!0,this.add(`linear-gradient`,xi),this.add(`radial-gradient`,Si),this.add(`conic-gradient`,Ci))}};function Ja(e){return qa.create(e)}function Ya(e){return qa.isValid(e)}function Xa(e){return typeof e==`string`?Ja(e).toString():e.toString()}function Za(e,t){let n=typeof t==`string`?Ja(t):t;return Ka.to(e,n)}function Qa(e,t,n){return Ka.from(e,t,n)}return e.ConicGradient=Ci,e.GRADIENT_COLOR_SPACE=mi,e.GRADIENT_HUE_INTERPOLATIONS=hi,e.GRADIENT_POLAR_COLOR_SPACES=gi,e.GradientBase=bi,e.GradientFactory=qa,e.GradientTransformer=Ka,e.LinearGradient=xi,e.ModuleTransformerConicGradientToCanvas=ea,e.ModuleTransformerConicGradientToCanvasWebGL=Ea,e.ModuleTransformerConicGradientToCss=Ei,e.ModuleTransformerLinearGradientToCanvas=Ui,e.ModuleTransformerLinearGradientToCanvasWebGL=da,e.ModuleTransformerLinearGradientToCss=wi,e.ModuleTransformerRadialGradientToCanvas=Qi,e.ModuleTransformerRadialGradientToCanvasWebGL=Ga,e.ModuleTransformerRadialGradientToCss=Ti,e.PatternTokenKind=Rr,e.RadialGradient=Si,e.angleValueFromString=u,e.ceilTo=r,e.clamp=a,e.degToRad=d,e.floorTo=n,e.format=Xa,e.fromPercent=s,e.gradToRad=m,e.isAngle=l,e.isAngleUnit=c,e.isColorHint=ai,e.isColorStop=oi,e.isConfig=si,e.isGradient=Ya,e.isGradientColorSpace=vi,e.isGradientHueInterpolation=_i,e.isGradientPolarColorSpace=yi,e.isPatternSyntaxValid=Zr,e.isPatternValid=Yr,e.isValid=ni,e.matchExpression=zr,e.normalizeAngleDeg=h,e.normalizeAngleRad=g,e.parse=Ja,e.parseStringToAbi=ii,e.radToDeg=f,e.roundTo=t,e.splitTopLevelByWhitespace=pi,e.toPercent=o,e.tokenizePattern=ti,e.transformFrom=Qa,e.transformTo=Za,e.truncTo=i,e.turnToRad=p,e.validate=ri,e.validatePattern=Jr,e.validatePatternSemantic=$r,e.validatePatternStructure=ei,e.validatePatternSyntax=Xr,e})({});
|
package/dist/index.d.ts
CHANGED
|
@@ -311,9 +311,10 @@ declare class RadialGradient extends GradientBase<RadialGradientConfig> {
|
|
|
311
311
|
}
|
|
312
312
|
//#endregion
|
|
313
313
|
//#region src/gradients/ConicGradient.d.ts
|
|
314
|
-
type ConicGradientConfig =
|
|
314
|
+
type ConicGradientConfig = {
|
|
315
315
|
from: GradientAngleValue;
|
|
316
316
|
position: GradientPosition;
|
|
317
|
+
interpolation?: GradientInterpolation;
|
|
317
318
|
};
|
|
318
319
|
declare class ConicGradient extends GradientBase<ConicGradientConfig> {
|
|
319
320
|
readonly type = "conic-gradient";
|
|
@@ -326,6 +327,9 @@ declare class ConicGradient extends GradientBase<ConicGradientConfig> {
|
|
|
326
327
|
private _serializeConfig;
|
|
327
328
|
private _serializePosition;
|
|
328
329
|
private _formatLengthPercentage;
|
|
330
|
+
private _serializeInterpolation;
|
|
331
|
+
private _isDefaultFrom;
|
|
332
|
+
private _isDefaultPosition;
|
|
329
333
|
private static _parseConfig;
|
|
330
334
|
private static _parseLengthPercentage;
|
|
331
335
|
private static _parseAngle;
|
|
@@ -433,6 +437,13 @@ declare class ModuleTransformerLinearGradientToCanvasWebGL implements IGradientT
|
|
|
433
437
|
to(input: GradientBase<any>): IWebGLPaintResult;
|
|
434
438
|
}
|
|
435
439
|
//#endregion
|
|
440
|
+
//#region src/gradient-transformer/modules/webgl/ModuleTransformerConicGradientToWebgl.d.ts
|
|
441
|
+
declare class ModuleTransformerConicGradientToCanvasWebGL implements IGradientTransformerModule<IWebGLPaintResult> {
|
|
442
|
+
readonly target = "canvas-webgl";
|
|
443
|
+
readonly gradientType = "conic-gradient";
|
|
444
|
+
to(input: GradientBase<any>): IWebGLPaintResult;
|
|
445
|
+
}
|
|
446
|
+
//#endregion
|
|
436
447
|
//#region src/gradient-transformer/modules/webgl/ModuleTransformerRadialGradientToWebgl.d.ts
|
|
437
448
|
declare class ModuleTransformerRadialGradientToCanvasWebGL implements IGradientTransformerModule<IWebGLPaintResult> {
|
|
438
449
|
readonly target = "canvas-webgl";
|
|
@@ -453,4 +464,4 @@ declare class GradientTransformer {
|
|
|
453
464
|
private static _getKey;
|
|
454
465
|
}
|
|
455
466
|
//#endregion
|
|
456
|
-
export { AbiInputType, AngleUnit, AnyGradient, ConicGradient, ConicGradientConfig, GRADIENT_COLOR_SPACE, GRADIENT_HUE_INTERPOLATIONS, GRADIENT_POLAR_COLOR_SPACES, GradientAbi, GradientAbiInput, GradientAngleUnit, GradientAngleValue, GradientBase, GradientColorHint, GradientColorInterpolation, GradientColorSpace, GradientColorStop, GradientCommonConfig, GradientData, GradientFactory, GradientHueInterpolation, GradientHueInterpolationMethod, GradientInterpolation, GradientLengthPercentage, GradientLengthUnit, GradientLengthValue, GradientNumberValue, GradientPercentValue, GradientPolarColorSpace, GradientPosition, GradientPositionKeywordX, GradientPositionKeywordY, GradientRectangularColorSpace, GradientStop, GradientTransformer, GradientType, ICanvasPaintResult, IGradientBase, IGradientStatic, IGradientTransformerModule, LinearGradient, LinearGradientConfig, ModuleTransformerConicGradientToCanvas, ModuleTransformerConicGradientToCss, ModuleTransformerLinearGradientToCanvas, ModuleTransformerLinearGradientToCanvasWebGL, ModuleTransformerLinearGradientToCss, ModuleTransformerRadialGradientToCanvas, ModuleTransformerRadialGradientToCanvasWebGL, ModuleTransformerRadialGradientToCss, PatternTokenKind, RadialGradient, RadialGradientConfig, RadialGradientExtent, RadialGradientShape, RadialGradientSize, angleValueFromString, ceilTo, clamp, degToRad, floorTo, format, fromPercent, gradToRad, isAngle, isAngleUnit, isColorHint, isColorStop, isConfig, isGradient, isGradientColorSpace, isGradientHueInterpolation, isGradientPolarColorSpace, isPatternSyntaxValid, isPatternValid, isValid, matchExpression, normalizeAngleDeg, normalizeAngleRad, parse, parseStringToAbi, radToDeg, roundTo, splitTopLevelByWhitespace, toPercent, tokenizePattern, transformFrom, transformTo, truncTo, turnToRad, validate, validatePattern, validatePatternSemantic, validatePatternStructure, validatePatternSyntax };
|
|
467
|
+
export { AbiInputType, AngleUnit, AnyGradient, ConicGradient, ConicGradientConfig, GRADIENT_COLOR_SPACE, GRADIENT_HUE_INTERPOLATIONS, GRADIENT_POLAR_COLOR_SPACES, GradientAbi, GradientAbiInput, GradientAngleUnit, GradientAngleValue, GradientBase, GradientColorHint, GradientColorInterpolation, GradientColorSpace, GradientColorStop, GradientCommonConfig, GradientData, GradientFactory, GradientHueInterpolation, GradientHueInterpolationMethod, GradientInterpolation, GradientLengthPercentage, GradientLengthUnit, GradientLengthValue, GradientNumberValue, GradientPercentValue, GradientPolarColorSpace, GradientPosition, GradientPositionKeywordX, GradientPositionKeywordY, GradientRectangularColorSpace, GradientStop, GradientTransformer, GradientType, ICanvasPaintResult, IGradientBase, IGradientStatic, IGradientTransformerModule, LinearGradient, LinearGradientConfig, ModuleTransformerConicGradientToCanvas, ModuleTransformerConicGradientToCanvasWebGL, ModuleTransformerConicGradientToCss, ModuleTransformerLinearGradientToCanvas, ModuleTransformerLinearGradientToCanvasWebGL, ModuleTransformerLinearGradientToCss, ModuleTransformerRadialGradientToCanvas, ModuleTransformerRadialGradientToCanvasWebGL, ModuleTransformerRadialGradientToCss, PatternTokenKind, RadialGradient, RadialGradientConfig, RadialGradientExtent, RadialGradientShape, RadialGradientSize, angleValueFromString, ceilTo, clamp, degToRad, floorTo, format, fromPercent, gradToRad, isAngle, isAngleUnit, isColorHint, isColorStop, isConfig, isGradient, isGradientColorSpace, isGradientHueInterpolation, isGradientPolarColorSpace, isPatternSyntaxValid, isPatternValid, isValid, matchExpression, normalizeAngleDeg, normalizeAngleRad, parse, parseStringToAbi, radToDeg, roundTo, splitTopLevelByWhitespace, toPercent, tokenizePattern, transformFrom, transformTo, truncTo, turnToRad, validate, validatePattern, validatePatternSemantic, validatePatternStructure, validatePatternSyntax };
|
package/dist/index.js
CHANGED
|
@@ -1460,18 +1460,12 @@ var ConicGradient = class ConicGradient extends GradientBase {
|
|
|
1460
1460
|
_validateConfig(config) {}
|
|
1461
1461
|
_serializeConfig() {
|
|
1462
1462
|
const parts = [];
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
if (this.config.interpolation) {
|
|
1467
|
-
const i = this.config.interpolation;
|
|
1468
|
-
if (i.kind === "rectangular") parts.push(`in ${i.space}`);
|
|
1469
|
-
else {
|
|
1470
|
-
let str = `in ${i.space}`;
|
|
1471
|
-
if (i.hueMethod) str += ` ${i.hueMethod} hue`;
|
|
1472
|
-
parts.push(str);
|
|
1473
|
-
}
|
|
1463
|
+
if (!this._isDefaultFrom(this.config.from)) {
|
|
1464
|
+
const angle = this.config.from;
|
|
1465
|
+
parts.push(`from ${angle.value}${angle.unit}`);
|
|
1474
1466
|
}
|
|
1467
|
+
if (!this._isDefaultPosition(this.config.position)) parts.push(`at ${this._serializePosition(this.config.position)}`);
|
|
1468
|
+
if (this.config.interpolation !== void 0) parts.push(this._serializeInterpolation(this.config.interpolation));
|
|
1475
1469
|
return parts.join(" ");
|
|
1476
1470
|
}
|
|
1477
1471
|
_serializePosition(position) {
|
|
@@ -1484,6 +1478,17 @@ var ConicGradient = class ConicGradient extends GradientBase {
|
|
|
1484
1478
|
if (value.kind === "percent") return `${value.value}%`;
|
|
1485
1479
|
return `${value.value}${value.unit}`;
|
|
1486
1480
|
}
|
|
1481
|
+
_serializeInterpolation(interpolation) {
|
|
1482
|
+
const { colorSpace, hue } = interpolation;
|
|
1483
|
+
if (hue === void 0) return `in ${colorSpace}`;
|
|
1484
|
+
return `in ${colorSpace} ${hue} hue`;
|
|
1485
|
+
}
|
|
1486
|
+
_isDefaultFrom(from) {
|
|
1487
|
+
return from.value === 0 && from.unit === "deg";
|
|
1488
|
+
}
|
|
1489
|
+
_isDefaultPosition(position) {
|
|
1490
|
+
return position.kind === "keywords" && position.x === "center" && position.y === "center";
|
|
1491
|
+
}
|
|
1487
1492
|
static _parseConfig(input) {
|
|
1488
1493
|
const config = {
|
|
1489
1494
|
from: {
|
|
@@ -1499,46 +1504,86 @@ var ConicGradient = class ConicGradient extends GradientBase {
|
|
|
1499
1504
|
};
|
|
1500
1505
|
if (!input) return config;
|
|
1501
1506
|
const tokens = splitTopLevelByWhitespace(input);
|
|
1507
|
+
const isLengthPercentage = (value) => {
|
|
1508
|
+
if (value === void 0) return false;
|
|
1509
|
+
return value.endsWith("%") || /^-?\d*\.?\d+[a-zA-Z]+$/.test(value);
|
|
1510
|
+
};
|
|
1502
1511
|
for (let i = 0; i < tokens.length; i++) {
|
|
1503
1512
|
const token = tokens[i];
|
|
1504
1513
|
if (token === "from") {
|
|
1505
|
-
|
|
1514
|
+
const angleToken = tokens[i + 1];
|
|
1515
|
+
if (angleToken === void 0) throw new Error("Invalid conic-gradient config: missing angle after from");
|
|
1516
|
+
config.from = this._parseAngle(angleToken);
|
|
1506
1517
|
i += 1;
|
|
1507
1518
|
continue;
|
|
1508
1519
|
}
|
|
1509
1520
|
if (token === "at") {
|
|
1510
1521
|
const xToken = tokens[i + 1];
|
|
1511
1522
|
const yToken = tokens[i + 2];
|
|
1512
|
-
if (
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
}
|
|
1522
|
-
|
|
1523
|
-
|
|
1523
|
+
if (xToken === void 0) throw new Error("Invalid conic-gradient config: missing position after at");
|
|
1524
|
+
if (xToken === "center" && (yToken === void 0 || yToken === "in")) {
|
|
1525
|
+
config.position = {
|
|
1526
|
+
kind: "keywords",
|
|
1527
|
+
x: "center",
|
|
1528
|
+
y: "center"
|
|
1529
|
+
};
|
|
1530
|
+
i += 1;
|
|
1531
|
+
continue;
|
|
1532
|
+
}
|
|
1533
|
+
if ((xToken === "left" || xToken === "right") && (yToken === void 0 || yToken === "in")) {
|
|
1534
|
+
config.position = {
|
|
1535
|
+
kind: "keywords",
|
|
1536
|
+
x: xToken,
|
|
1537
|
+
y: "center"
|
|
1538
|
+
};
|
|
1539
|
+
i += 1;
|
|
1540
|
+
continue;
|
|
1541
|
+
}
|
|
1542
|
+
if ((xToken === "top" || xToken === "bottom") && (yToken === void 0 || yToken === "in")) {
|
|
1543
|
+
config.position = {
|
|
1544
|
+
kind: "keywords",
|
|
1545
|
+
x: "center",
|
|
1546
|
+
y: xToken
|
|
1547
|
+
};
|
|
1548
|
+
i += 1;
|
|
1549
|
+
continue;
|
|
1550
|
+
}
|
|
1551
|
+
if ((xToken === "left" || xToken === "center" || xToken === "right") && (yToken === "top" || yToken === "center" || yToken === "bottom")) {
|
|
1552
|
+
config.position = {
|
|
1553
|
+
kind: "keywords",
|
|
1554
|
+
x: xToken,
|
|
1555
|
+
y: yToken
|
|
1556
|
+
};
|
|
1557
|
+
i += 2;
|
|
1558
|
+
continue;
|
|
1559
|
+
}
|
|
1560
|
+
if (isLengthPercentage(xToken) && isLengthPercentage(yToken)) {
|
|
1561
|
+
config.position = {
|
|
1562
|
+
kind: "values",
|
|
1563
|
+
x: this._parseLengthPercentage(xToken),
|
|
1564
|
+
y: this._parseLengthPercentage(yToken)
|
|
1565
|
+
};
|
|
1566
|
+
i += 2;
|
|
1567
|
+
continue;
|
|
1568
|
+
}
|
|
1569
|
+
throw new Error(`Invalid conic-gradient position: ${xToken} ${yToken ?? ""}`);
|
|
1524
1570
|
}
|
|
1525
1571
|
if (token === "in") {
|
|
1526
|
-
const
|
|
1527
|
-
const
|
|
1528
|
-
|
|
1572
|
+
const colorSpace = tokens[i + 1];
|
|
1573
|
+
const maybeHue = tokens[i + 2];
|
|
1574
|
+
const maybeHueKeyword = tokens[i + 3];
|
|
1575
|
+
if (colorSpace === void 0) throw new Error("Invalid conic-gradient interpolation: missing color space");
|
|
1576
|
+
if (maybeHueKeyword === "hue" && (maybeHue === "shorter" || maybeHue === "longer" || maybeHue === "increasing" || maybeHue === "decreasing")) {
|
|
1529
1577
|
config.interpolation = {
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
hueMethod
|
|
1578
|
+
colorSpace,
|
|
1579
|
+
hue: maybeHue
|
|
1533
1580
|
};
|
|
1534
1581
|
i += 3;
|
|
1535
1582
|
continue;
|
|
1536
1583
|
}
|
|
1537
|
-
config.interpolation = {
|
|
1538
|
-
kind: "rectangular",
|
|
1539
|
-
space
|
|
1540
|
-
};
|
|
1584
|
+
config.interpolation = { colorSpace };
|
|
1541
1585
|
i += 1;
|
|
1586
|
+
continue;
|
|
1542
1587
|
}
|
|
1543
1588
|
}
|
|
1544
1589
|
return config;
|
|
@@ -1738,12 +1783,12 @@ function getColorStopsWithPositions(stops) {
|
|
|
1738
1783
|
});
|
|
1739
1784
|
}
|
|
1740
1785
|
function formatColorForCanvas(input) {
|
|
1741
|
-
const color = toRgb$
|
|
1786
|
+
const color = toRgb$6(input);
|
|
1742
1787
|
if (!color) throw new Error("Failed to convert interpolated color to rgb.");
|
|
1743
1788
|
return formatRgb(color);
|
|
1744
1789
|
}
|
|
1745
1790
|
const DEFAULT_SAMPLE_COUNT = 64;
|
|
1746
|
-
const toRgb$
|
|
1791
|
+
const toRgb$6 = converter("rgb");
|
|
1747
1792
|
function resolveRenderableGradientStops(gradient, sampleCount = DEFAULT_SAMPLE_COUNT) {
|
|
1748
1793
|
const colorStops = getColorStopsWithPositions(gradient.stops);
|
|
1749
1794
|
const interpolation = gradient.config.interpolation;
|
|
@@ -1774,9 +1819,9 @@ function resolveRenderableGradientStops(gradient, sampleCount = DEFAULT_SAMPLE_C
|
|
|
1774
1819
|
}
|
|
1775
1820
|
//#endregion
|
|
1776
1821
|
//#region src/gradient-transformer/modules/canvas/ModuleTransformerLinearGradientToCanvas.ts
|
|
1777
|
-
const toRgb$
|
|
1822
|
+
const toRgb$5 = converter("rgb");
|
|
1778
1823
|
function toCanvasColor$1(input) {
|
|
1779
|
-
const color = toRgb$
|
|
1824
|
+
const color = toRgb$5(input);
|
|
1780
1825
|
if (!color) throw new Error(`Failed to convert color: ${input}`);
|
|
1781
1826
|
return formatRgb(color);
|
|
1782
1827
|
}
|
|
@@ -1839,10 +1884,10 @@ var ModuleTransformerLinearGradientToCanvas = class {
|
|
|
1839
1884
|
};
|
|
1840
1885
|
//#endregion
|
|
1841
1886
|
//#region src/gradient-transformer/modules/canvas/ModuleTransformerRadialGradientToCanvas.ts
|
|
1842
|
-
const toRgb$
|
|
1887
|
+
const toRgb$4 = converter("rgb");
|
|
1843
1888
|
const RADIAL_GRADIENT_SAMPLE_COUNT = 128;
|
|
1844
1889
|
function toCanvasColor(input) {
|
|
1845
|
-
const color = toRgb$
|
|
1890
|
+
const color = toRgb$4(input);
|
|
1846
1891
|
if (!color) throw new Error(`Failed to convert color: ${input}`);
|
|
1847
1892
|
return formatRgb(color);
|
|
1848
1893
|
}
|
|
@@ -2061,7 +2106,8 @@ var ModuleTransformerRadialGradientToCanvas = class {
|
|
|
2061
2106
|
};
|
|
2062
2107
|
//#endregion
|
|
2063
2108
|
//#region src/gradient-transformer/modules/canvas/ModuleTransformerConicGradientToCanvas.ts
|
|
2064
|
-
const
|
|
2109
|
+
const CONIC_GRADIENT_SAMPLE_COUNT = 128;
|
|
2110
|
+
const toRgb$3 = converter("rgb");
|
|
2065
2111
|
var ModuleTransformerConicGradientToCanvas = class {
|
|
2066
2112
|
target = "canvas-2d";
|
|
2067
2113
|
gradientType = "conic-gradient";
|
|
@@ -2072,7 +2118,8 @@ var ModuleTransformerConicGradientToCanvas = class {
|
|
|
2072
2118
|
const data = imageData.data;
|
|
2073
2119
|
const { x: cx, y: cy } = this._resolvePosition(gradient.config.position, width, height);
|
|
2074
2120
|
const from = this._toRad(gradient.config.from);
|
|
2075
|
-
const
|
|
2121
|
+
const renderStops = resolveRenderableGradientStops(gradient, CONIC_GRADIENT_SAMPLE_COUNT);
|
|
2122
|
+
const stops = this._normalizeStops(renderStops);
|
|
2076
2123
|
if (stops.length === 0) {
|
|
2077
2124
|
ctx.putImageData(imageData, 0, 0);
|
|
2078
2125
|
return;
|
|
@@ -2160,7 +2207,7 @@ var ModuleTransformerConicGradientToCanvas = class {
|
|
|
2160
2207
|
};
|
|
2161
2208
|
}
|
|
2162
2209
|
_parseColor(input) {
|
|
2163
|
-
const color = toRgb$
|
|
2210
|
+
const color = toRgb$3(input);
|
|
2164
2211
|
if (!color) throw new Error(`Failed to convert color: ${input}`);
|
|
2165
2212
|
return {
|
|
2166
2213
|
r: Math.round((color.r ?? 0) * 255),
|
|
@@ -2175,10 +2222,10 @@ var ModuleTransformerConicGradientToCanvas = class {
|
|
|
2175
2222
|
};
|
|
2176
2223
|
//#endregion
|
|
2177
2224
|
//#region src/gradient-transformer/modules/webgl/ModuleTransformerLinearGradientToWebgl.ts
|
|
2178
|
-
const toRgb$
|
|
2179
|
-
const MAX_STOPS$
|
|
2180
|
-
function toWebGLColor$
|
|
2181
|
-
const color = toRgb$
|
|
2225
|
+
const toRgb$2 = converter("rgb");
|
|
2226
|
+
const MAX_STOPS$2 = 128;
|
|
2227
|
+
function toWebGLColor$2(input) {
|
|
2228
|
+
const color = toRgb$2(input);
|
|
2182
2229
|
if (!color) throw new Error(`Failed to convert color: ${input}`);
|
|
2183
2230
|
return [
|
|
2184
2231
|
color.r ?? 0,
|
|
@@ -2207,7 +2254,7 @@ function normalizeStops$1(stops, min, max) {
|
|
|
2207
2254
|
position: (stop.position - min) / range
|
|
2208
2255
|
}));
|
|
2209
2256
|
}
|
|
2210
|
-
function createShader$
|
|
2257
|
+
function createShader$2(gl, type, source) {
|
|
2211
2258
|
const shader = gl.createShader(type);
|
|
2212
2259
|
if (!shader) throw new Error("Failed to create WebGL shader.");
|
|
2213
2260
|
gl.shaderSource(shader, source);
|
|
@@ -2219,9 +2266,9 @@ function createShader$1(gl, type, source) {
|
|
|
2219
2266
|
}
|
|
2220
2267
|
return shader;
|
|
2221
2268
|
}
|
|
2222
|
-
function createProgram$
|
|
2223
|
-
const vertexShader = createShader$
|
|
2224
|
-
const fragmentShader = createShader$
|
|
2269
|
+
function createProgram$2(gl, vertexSource, fragmentSource) {
|
|
2270
|
+
const vertexShader = createShader$2(gl, gl.VERTEX_SHADER, vertexSource);
|
|
2271
|
+
const fragmentShader = createShader$2(gl, gl.FRAGMENT_SHADER, fragmentSource);
|
|
2225
2272
|
const program = gl.createProgram();
|
|
2226
2273
|
if (!program) throw new Error("Failed to create WebGL program.");
|
|
2227
2274
|
gl.attachShader(program, vertexShader);
|
|
@@ -2234,15 +2281,15 @@ function createProgram$1(gl, vertexSource, fragmentSource) {
|
|
|
2234
2281
|
}
|
|
2235
2282
|
return program;
|
|
2236
2283
|
}
|
|
2237
|
-
function getColorStopCount$
|
|
2284
|
+
function getColorStopCount$2(stops) {
|
|
2238
2285
|
return stops.filter((stop) => stop.type === "color-stop").length;
|
|
2239
2286
|
}
|
|
2240
|
-
function getWebGLSampleCount$
|
|
2241
|
-
const colorStopCount = getColorStopCount$
|
|
2287
|
+
function getWebGLSampleCount$2(gradient, maxStops) {
|
|
2288
|
+
const colorStopCount = getColorStopCount$2(gradient.stops);
|
|
2242
2289
|
const segmentCount = Math.max(1, colorStopCount - 1);
|
|
2243
2290
|
return Math.max(2, Math.floor((maxStops - 1) / segmentCount));
|
|
2244
2291
|
}
|
|
2245
|
-
function getColorAtPosition$
|
|
2292
|
+
function getColorAtPosition$2(stops, position) {
|
|
2246
2293
|
const colorStops = stops.filter((stop) => stop.type === "color-stop" && stop.position != null).sort((a, b) => a.position - b.position);
|
|
2247
2294
|
if (colorStops.length === 0) throw new Error("Cannot sample color from empty gradient stops.");
|
|
2248
2295
|
if (position <= colorStops[0].position) return colorStops[0].value;
|
|
@@ -2259,7 +2306,7 @@ function getColorAtPosition$1(stops, position) {
|
|
|
2259
2306
|
}
|
|
2260
2307
|
return lastStop.value;
|
|
2261
2308
|
}
|
|
2262
|
-
function fitStopsToWebGLLimit$
|
|
2309
|
+
function fitStopsToWebGLLimit$2(stops, maxStops) {
|
|
2263
2310
|
const colorStops = stops.filter((stop) => stop.type === "color-stop" && stop.position != null).sort((a, b) => a.position - b.position);
|
|
2264
2311
|
if (colorStops.length <= maxStops) return colorStops;
|
|
2265
2312
|
const sampledStops = [];
|
|
@@ -2267,7 +2314,7 @@ function fitStopsToWebGLLimit$1(stops, maxStops) {
|
|
|
2267
2314
|
const position = index / (maxStops - 1);
|
|
2268
2315
|
sampledStops.push({
|
|
2269
2316
|
type: "color-stop",
|
|
2270
|
-
value: getColorAtPosition$
|
|
2317
|
+
value: getColorAtPosition$2(colorStops, position),
|
|
2271
2318
|
position
|
|
2272
2319
|
});
|
|
2273
2320
|
}
|
|
@@ -2284,7 +2331,7 @@ var ModuleTransformerLinearGradientToCanvasWebGL = class {
|
|
|
2284
2331
|
canvas.width = width;
|
|
2285
2332
|
canvas.height = height;
|
|
2286
2333
|
gl.viewport(0, 0, width, height);
|
|
2287
|
-
const program = createProgram$
|
|
2334
|
+
const program = createProgram$2(gl, `
|
|
2288
2335
|
attribute vec2 a_position;
|
|
2289
2336
|
varying vec2 v_uv;
|
|
2290
2337
|
|
|
@@ -2300,13 +2347,13 @@ var ModuleTransformerLinearGradientToCanvasWebGL = class {
|
|
|
2300
2347
|
uniform vec2 u_start;
|
|
2301
2348
|
uniform vec2 u_end;
|
|
2302
2349
|
uniform int u_stopCount;
|
|
2303
|
-
uniform float u_positions[${MAX_STOPS$
|
|
2304
|
-
uniform vec4 u_colors[${MAX_STOPS$
|
|
2350
|
+
uniform float u_positions[${MAX_STOPS$2}];
|
|
2351
|
+
uniform vec4 u_colors[${MAX_STOPS$2}];
|
|
2305
2352
|
|
|
2306
2353
|
vec4 getGradientColor(float t) {
|
|
2307
2354
|
vec4 result = u_colors[0];
|
|
2308
2355
|
|
|
2309
|
-
for (int i = 0; i < ${MAX_STOPS$
|
|
2356
|
+
for (int i = 0; i < ${MAX_STOPS$2 - 1}; i++) {
|
|
2310
2357
|
if (i >= u_stopCount - 1) {
|
|
2311
2358
|
break;
|
|
2312
2359
|
}
|
|
@@ -2371,7 +2418,7 @@ var ModuleTransformerLinearGradientToCanvasWebGL = class {
|
|
|
2371
2418
|
let startY = centerY - dirY * lineLength / 2;
|
|
2372
2419
|
let endX = centerX + dirX * lineLength / 2;
|
|
2373
2420
|
let endY = centerY + dirY * lineLength / 2;
|
|
2374
|
-
const { min, max, stops } = getStopRange(resolveRenderableGradientStops(gradient, getWebGLSampleCount$
|
|
2421
|
+
const { min, max, stops } = getStopRange(resolveRenderableGradientStops(gradient, getWebGLSampleCount$2(gradient, MAX_STOPS$2)));
|
|
2375
2422
|
let normalizedStops = stops;
|
|
2376
2423
|
if (min < 0 || max > 1) {
|
|
2377
2424
|
const vx = endX - startX;
|
|
@@ -2388,7 +2435,242 @@ var ModuleTransformerLinearGradientToCanvasWebGL = class {
|
|
|
2388
2435
|
const startV = 1 - startY / height;
|
|
2389
2436
|
const endU = endX / width;
|
|
2390
2437
|
const endV = 1 - endY / height;
|
|
2391
|
-
const limitedStops = fitStopsToWebGLLimit$
|
|
2438
|
+
const limitedStops = fitStopsToWebGLLimit$2(normalizedStops, MAX_STOPS$2);
|
|
2439
|
+
const positions = new Float32Array(MAX_STOPS$2);
|
|
2440
|
+
const colors = new Float32Array(MAX_STOPS$2 * 4);
|
|
2441
|
+
limitedStops.forEach((stop, index) => {
|
|
2442
|
+
const color = toWebGLColor$2(stop.value);
|
|
2443
|
+
positions[index] = stop.position;
|
|
2444
|
+
colors[index * 4 + 0] = color[0];
|
|
2445
|
+
colors[index * 4 + 1] = color[1];
|
|
2446
|
+
colors[index * 4 + 2] = color[2];
|
|
2447
|
+
colors[index * 4 + 3] = color[3];
|
|
2448
|
+
});
|
|
2449
|
+
gl.uniform2f(gl.getUniformLocation(program, "u_start"), startU, startV);
|
|
2450
|
+
gl.uniform2f(gl.getUniformLocation(program, "u_end"), endU, endV);
|
|
2451
|
+
gl.uniform1i(gl.getUniformLocation(program, "u_stopCount"), limitedStops.length);
|
|
2452
|
+
gl.uniform1fv(gl.getUniformLocation(program, "u_positions"), positions);
|
|
2453
|
+
gl.uniform4fv(gl.getUniformLocation(program, "u_colors"), colors);
|
|
2454
|
+
gl.clearColor(0, 0, 0, 0);
|
|
2455
|
+
gl.clear(gl.COLOR_BUFFER_BIT);
|
|
2456
|
+
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
|
2457
|
+
} };
|
|
2458
|
+
}
|
|
2459
|
+
};
|
|
2460
|
+
//#endregion
|
|
2461
|
+
//#region src/gradient-transformer/modules/webgl/ModuleTransformerConicGradientToWebgl.ts
|
|
2462
|
+
const toRgb$1 = converter("rgb");
|
|
2463
|
+
const MAX_STOPS$1 = 128;
|
|
2464
|
+
const TWO_PI = Math.PI * 2;
|
|
2465
|
+
function toWebGLColor$1(input) {
|
|
2466
|
+
const color = toRgb$1(input);
|
|
2467
|
+
if (!color) throw new Error(`Failed to convert color: ${input}`);
|
|
2468
|
+
return [
|
|
2469
|
+
color.r ?? 0,
|
|
2470
|
+
color.g ?? 0,
|
|
2471
|
+
color.b ?? 0,
|
|
2472
|
+
color.alpha ?? 1
|
|
2473
|
+
];
|
|
2474
|
+
}
|
|
2475
|
+
function createShader$1(gl, type, source) {
|
|
2476
|
+
const shader = gl.createShader(type);
|
|
2477
|
+
if (!shader) throw new Error("Failed to create WebGL shader.");
|
|
2478
|
+
gl.shaderSource(shader, source);
|
|
2479
|
+
gl.compileShader(shader);
|
|
2480
|
+
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
2481
|
+
const error = gl.getShaderInfoLog(shader);
|
|
2482
|
+
gl.deleteShader(shader);
|
|
2483
|
+
throw new Error(`WebGL shader compile error: ${error}`);
|
|
2484
|
+
}
|
|
2485
|
+
return shader;
|
|
2486
|
+
}
|
|
2487
|
+
function createProgram$1(gl, vertexSource, fragmentSource) {
|
|
2488
|
+
const vertexShader = createShader$1(gl, gl.VERTEX_SHADER, vertexSource);
|
|
2489
|
+
const fragmentShader = createShader$1(gl, gl.FRAGMENT_SHADER, fragmentSource);
|
|
2490
|
+
const program = gl.createProgram();
|
|
2491
|
+
if (!program) throw new Error("Failed to create WebGL program.");
|
|
2492
|
+
gl.attachShader(program, vertexShader);
|
|
2493
|
+
gl.attachShader(program, fragmentShader);
|
|
2494
|
+
gl.linkProgram(program);
|
|
2495
|
+
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
2496
|
+
const error = gl.getProgramInfoLog(program);
|
|
2497
|
+
gl.deleteProgram(program);
|
|
2498
|
+
throw new Error(`WebGL program link error: ${error}`);
|
|
2499
|
+
}
|
|
2500
|
+
return program;
|
|
2501
|
+
}
|
|
2502
|
+
function getColorStopCount$1(stops) {
|
|
2503
|
+
return stops.filter((stop) => stop.type === "color-stop").length;
|
|
2504
|
+
}
|
|
2505
|
+
function getWebGLSampleCount$1(gradient, maxStops) {
|
|
2506
|
+
const colorStopCount = getColorStopCount$1(gradient.stops);
|
|
2507
|
+
const segmentCount = Math.max(1, colorStopCount - 1);
|
|
2508
|
+
return Math.max(2, Math.floor((maxStops - 1) / segmentCount));
|
|
2509
|
+
}
|
|
2510
|
+
function getColorAtPosition$1(stops, position) {
|
|
2511
|
+
const colorStops = stops.filter((stop) => stop.type === "color-stop" && stop.position != null).sort((a, b) => a.position - b.position);
|
|
2512
|
+
if (colorStops.length === 0) throw new Error("Cannot sample color from empty gradient stops.");
|
|
2513
|
+
if (position <= colorStops[0].position) return colorStops[0].value;
|
|
2514
|
+
const lastStop = colorStops[colorStops.length - 1];
|
|
2515
|
+
if (position >= lastStop.position) return lastStop.value;
|
|
2516
|
+
for (let index = 0; index < colorStops.length - 1; index += 1) {
|
|
2517
|
+
const current = colorStops[index];
|
|
2518
|
+
const next = colorStops[index + 1];
|
|
2519
|
+
if (position >= current.position && position <= next.position) {
|
|
2520
|
+
const range = next.position - current.position || 1;
|
|
2521
|
+
const localT = (position - current.position) / range;
|
|
2522
|
+
return formatRgb(interpolate([current.value, next.value], "rgb")(localT));
|
|
2523
|
+
}
|
|
2524
|
+
}
|
|
2525
|
+
return lastStop.value;
|
|
2526
|
+
}
|
|
2527
|
+
function fitStopsToWebGLLimit$1(stops, maxStops) {
|
|
2528
|
+
const colorStops = stops.filter((stop) => stop.type === "color-stop" && stop.position != null).sort((a, b) => a.position - b.position);
|
|
2529
|
+
if (colorStops.length <= maxStops) return colorStops;
|
|
2530
|
+
const sampledStops = [];
|
|
2531
|
+
for (let index = 0; index < maxStops; index += 1) {
|
|
2532
|
+
const position = index / (maxStops - 1);
|
|
2533
|
+
sampledStops.push({
|
|
2534
|
+
type: "color-stop",
|
|
2535
|
+
value: getColorAtPosition$1(colorStops, position),
|
|
2536
|
+
position
|
|
2537
|
+
});
|
|
2538
|
+
}
|
|
2539
|
+
return sampledStops;
|
|
2540
|
+
}
|
|
2541
|
+
function resolveLengthPercentage(value, reference) {
|
|
2542
|
+
if (value.kind === "percent") return value.value / 100 * reference;
|
|
2543
|
+
if (value.kind === "length") {
|
|
2544
|
+
if (value.unit === "px") return value.value;
|
|
2545
|
+
throw new Error(`Unsupported gradient length unit for WebGL conic gradient: ${value.unit}`);
|
|
2546
|
+
}
|
|
2547
|
+
return value;
|
|
2548
|
+
}
|
|
2549
|
+
function resolveAngleToRadians(angle) {
|
|
2550
|
+
if (angle.unit === "rad") return angle.value;
|
|
2551
|
+
if (angle.unit === "deg") return angle.value / 360 * TWO_PI;
|
|
2552
|
+
if (angle.unit === "turn") return angle.value * TWO_PI;
|
|
2553
|
+
if (angle.unit === "grad") return angle.value / 400 * TWO_PI;
|
|
2554
|
+
return angle.unit;
|
|
2555
|
+
}
|
|
2556
|
+
function resolveKeywordPositionX$1(x, width) {
|
|
2557
|
+
if (x === "left") return 0;
|
|
2558
|
+
if (x === "center") return width / 2;
|
|
2559
|
+
if (x === "right") return width;
|
|
2560
|
+
return width / 2;
|
|
2561
|
+
}
|
|
2562
|
+
function resolveKeywordPositionY$1(y, height) {
|
|
2563
|
+
if (y === "top") return 0;
|
|
2564
|
+
if (y === "center") return height / 2;
|
|
2565
|
+
if (y === "bottom") return height;
|
|
2566
|
+
return height / 2;
|
|
2567
|
+
}
|
|
2568
|
+
function resolveConicCenter(position, width, height) {
|
|
2569
|
+
if (position.kind === "keywords") return {
|
|
2570
|
+
x: resolveKeywordPositionX$1(position.x, width),
|
|
2571
|
+
y: resolveKeywordPositionY$1(position.y, height)
|
|
2572
|
+
};
|
|
2573
|
+
if (position.kind === "values") return {
|
|
2574
|
+
x: resolveLengthPercentage(position.x, width),
|
|
2575
|
+
y: resolveLengthPercentage(position.y, height)
|
|
2576
|
+
};
|
|
2577
|
+
return {
|
|
2578
|
+
x: width / 2,
|
|
2579
|
+
y: height / 2
|
|
2580
|
+
};
|
|
2581
|
+
}
|
|
2582
|
+
var ModuleTransformerConicGradientToCanvasWebGL = class {
|
|
2583
|
+
target = "canvas-webgl";
|
|
2584
|
+
gradientType = "conic-gradient";
|
|
2585
|
+
to(input) {
|
|
2586
|
+
const gradient = input;
|
|
2587
|
+
return { draw: (canvas, width, height) => {
|
|
2588
|
+
const gl = canvas.getContext("webgl");
|
|
2589
|
+
if (!gl) throw new Error("WebGL is not supported.");
|
|
2590
|
+
canvas.width = width;
|
|
2591
|
+
canvas.height = height;
|
|
2592
|
+
gl.viewport(0, 0, width, height);
|
|
2593
|
+
const program = createProgram$1(gl, `
|
|
2594
|
+
attribute vec2 a_position;
|
|
2595
|
+
varying vec2 v_uv;
|
|
2596
|
+
|
|
2597
|
+
void main() {
|
|
2598
|
+
v_uv = a_position * 0.5 + 0.5;
|
|
2599
|
+
gl_Position = vec4(a_position, 0.0, 1.0);
|
|
2600
|
+
}
|
|
2601
|
+
`, `
|
|
2602
|
+
precision mediump float;
|
|
2603
|
+
|
|
2604
|
+
const float PI = 3.141592653589793;
|
|
2605
|
+
const float TWO_PI = 6.283185307179586;
|
|
2606
|
+
|
|
2607
|
+
varying vec2 v_uv;
|
|
2608
|
+
|
|
2609
|
+
uniform vec2 u_center;
|
|
2610
|
+
uniform float u_startAngle;
|
|
2611
|
+
uniform int u_stopCount;
|
|
2612
|
+
uniform float u_positions[${MAX_STOPS$1}];
|
|
2613
|
+
uniform vec4 u_colors[${MAX_STOPS$1}];
|
|
2614
|
+
|
|
2615
|
+
vec4 getGradientColor(float t) {
|
|
2616
|
+
vec4 result = u_colors[0];
|
|
2617
|
+
|
|
2618
|
+
for (int i = 0; i < ${MAX_STOPS$1 - 1}; i++) {
|
|
2619
|
+
if (i >= u_stopCount - 1) {
|
|
2620
|
+
break;
|
|
2621
|
+
}
|
|
2622
|
+
|
|
2623
|
+
float currentPosition = u_positions[i];
|
|
2624
|
+
float nextPosition = u_positions[i + 1];
|
|
2625
|
+
|
|
2626
|
+
if (t <= currentPosition) {
|
|
2627
|
+
return u_colors[i];
|
|
2628
|
+
}
|
|
2629
|
+
|
|
2630
|
+
if (t >= currentPosition && t <= nextPosition) {
|
|
2631
|
+
float localT = (t - currentPosition) / max(nextPosition - currentPosition, 0.00001);
|
|
2632
|
+
return mix(u_colors[i], u_colors[i + 1], localT);
|
|
2633
|
+
}
|
|
2634
|
+
|
|
2635
|
+
result = u_colors[i + 1];
|
|
2636
|
+
}
|
|
2637
|
+
|
|
2638
|
+
return result;
|
|
2639
|
+
}
|
|
2640
|
+
|
|
2641
|
+
void main() {
|
|
2642
|
+
vec2 delta = v_uv - u_center;
|
|
2643
|
+
|
|
2644
|
+
float angle = atan(delta.y, delta.x);
|
|
2645
|
+
float cssAngle = mod((PI * 0.5) - angle + TWO_PI, TWO_PI);
|
|
2646
|
+
|
|
2647
|
+
float t = mod(cssAngle - u_startAngle + TWO_PI, TWO_PI) / TWO_PI;
|
|
2648
|
+
|
|
2649
|
+
gl_FragColor = getGradientColor(t);
|
|
2650
|
+
}
|
|
2651
|
+
`);
|
|
2652
|
+
gl.useProgram(program);
|
|
2653
|
+
const positionBuffer = gl.createBuffer();
|
|
2654
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
|
|
2655
|
+
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
|
|
2656
|
+
-1,
|
|
2657
|
+
-1,
|
|
2658
|
+
1,
|
|
2659
|
+
-1,
|
|
2660
|
+
-1,
|
|
2661
|
+
1,
|
|
2662
|
+
-1,
|
|
2663
|
+
1,
|
|
2664
|
+
1,
|
|
2665
|
+
-1,
|
|
2666
|
+
1,
|
|
2667
|
+
1
|
|
2668
|
+
]), gl.STATIC_DRAW);
|
|
2669
|
+
const positionLocation = gl.getAttribLocation(program, "a_position");
|
|
2670
|
+
gl.enableVertexAttribArray(positionLocation);
|
|
2671
|
+
gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0);
|
|
2672
|
+
const center = resolveConicCenter(gradient.config.position, width, height);
|
|
2673
|
+
const limitedStops = fitStopsToWebGLLimit$1(resolveRenderableGradientStops(gradient, getWebGLSampleCount$1(gradient, MAX_STOPS$1)), MAX_STOPS$1);
|
|
2392
2674
|
const positions = new Float32Array(MAX_STOPS$1);
|
|
2393
2675
|
const colors = new Float32Array(MAX_STOPS$1 * 4);
|
|
2394
2676
|
limitedStops.forEach((stop, index) => {
|
|
@@ -2399,8 +2681,8 @@ var ModuleTransformerLinearGradientToCanvasWebGL = class {
|
|
|
2399
2681
|
colors[index * 4 + 2] = color[2];
|
|
2400
2682
|
colors[index * 4 + 3] = color[3];
|
|
2401
2683
|
});
|
|
2402
|
-
gl.uniform2f(gl.getUniformLocation(program, "
|
|
2403
|
-
gl.
|
|
2684
|
+
gl.uniform2f(gl.getUniformLocation(program, "u_center"), center.x / width, 1 - center.y / height);
|
|
2685
|
+
gl.uniform1f(gl.getUniformLocation(program, "u_startAngle"), resolveAngleToRadians(gradient.config.from));
|
|
2404
2686
|
gl.uniform1i(gl.getUniformLocation(program, "u_stopCount"), limitedStops.length);
|
|
2405
2687
|
gl.uniform1fv(gl.getUniformLocation(program, "u_positions"), positions);
|
|
2406
2688
|
gl.uniform4fv(gl.getUniformLocation(program, "u_colors"), colors);
|
|
@@ -2810,6 +3092,7 @@ var GradientTransformer = class {
|
|
|
2810
3092
|
this.add(new ModuleTransformerConicGradientToCanvas());
|
|
2811
3093
|
this.add(new ModuleTransformerLinearGradientToCanvasWebGL());
|
|
2812
3094
|
this.add(new ModuleTransformerRadialGradientToCanvasWebGL());
|
|
3095
|
+
this.add(new ModuleTransformerConicGradientToCanvasWebGL());
|
|
2813
3096
|
}
|
|
2814
3097
|
static _getKey(target, gradientType) {
|
|
2815
3098
|
return `${target}:${gradientType}`;
|
|
@@ -2871,4 +3154,4 @@ function transformFrom(target, gradientType, input) {
|
|
|
2871
3154
|
return GradientTransformer.from(target, gradientType, input);
|
|
2872
3155
|
}
|
|
2873
3156
|
//#endregion
|
|
2874
|
-
export { ConicGradient, GRADIENT_COLOR_SPACE, GRADIENT_HUE_INTERPOLATIONS, GRADIENT_POLAR_COLOR_SPACES, GradientBase, GradientFactory, GradientTransformer, LinearGradient, ModuleTransformerConicGradientToCanvas, ModuleTransformerConicGradientToCss, ModuleTransformerLinearGradientToCanvas, ModuleTransformerLinearGradientToCanvasWebGL, ModuleTransformerLinearGradientToCss, ModuleTransformerRadialGradientToCanvas, ModuleTransformerRadialGradientToCanvasWebGL, ModuleTransformerRadialGradientToCss, PatternTokenKind, RadialGradient, angleValueFromString, ceilTo, clamp, degToRad, floorTo, format, fromPercent, gradToRad, isAngle, isAngleUnit, isColorHint, isColorStop, isConfig, isGradient, isGradientColorSpace, isGradientHueInterpolation, isGradientPolarColorSpace, isPatternSyntaxValid, isPatternValid, isValid, matchExpression, normalizeAngleDeg, normalizeAngleRad, parse, parseStringToAbi, radToDeg, roundTo, splitTopLevelByWhitespace, toPercent, tokenizePattern, transformFrom, transformTo, truncTo, turnToRad, validate, validatePattern, validatePatternSemantic, validatePatternStructure, validatePatternSyntax };
|
|
3157
|
+
export { ConicGradient, GRADIENT_COLOR_SPACE, GRADIENT_HUE_INTERPOLATIONS, GRADIENT_POLAR_COLOR_SPACES, GradientBase, GradientFactory, GradientTransformer, LinearGradient, ModuleTransformerConicGradientToCanvas, ModuleTransformerConicGradientToCanvasWebGL, ModuleTransformerConicGradientToCss, ModuleTransformerLinearGradientToCanvas, ModuleTransformerLinearGradientToCanvasWebGL, ModuleTransformerLinearGradientToCss, ModuleTransformerRadialGradientToCanvas, ModuleTransformerRadialGradientToCanvasWebGL, ModuleTransformerRadialGradientToCss, PatternTokenKind, RadialGradient, angleValueFromString, ceilTo, clamp, degToRad, floorTo, format, fromPercent, gradToRad, isAngle, isAngleUnit, isColorHint, isColorStop, isConfig, isGradient, isGradientColorSpace, isGradientHueInterpolation, isGradientPolarColorSpace, isPatternSyntaxValid, isPatternValid, isValid, matchExpression, normalizeAngleDeg, normalizeAngleRad, parse, parseStringToAbi, radToDeg, roundTo, splitTopLevelByWhitespace, toPercent, tokenizePattern, transformFrom, transformTo, truncTo, turnToRad, validate, validatePattern, validatePatternSemantic, validatePatternStructure, validatePatternSyntax };
|