@flux-ui/dashboard 3.0.0-next.7 → 3.0.0-next.70

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.
Files changed (44) hide show
  1. package/README.md +26 -35
  2. package/dist/component/FluxDashboard.vue.d.ts +11 -23
  3. package/dist/component/FluxDashboardContent.vue.d.ts +8 -12
  4. package/dist/component/FluxDashboardHeader.vue.d.ts +10 -13
  5. package/dist/component/FluxDashboardMenu.vue.d.ts +13 -15
  6. package/dist/component/FluxDashboardNavigation.vue.d.ts +8 -16
  7. package/dist/component/FluxDashboardSide.vue.d.ts +12 -14
  8. package/dist/component/FluxDashboardTopBar.vue.d.ts +8 -12
  9. package/dist/component/index.d.ts +0 -1
  10. package/dist/composable/index.d.ts +0 -1
  11. package/dist/composable/useDashboardInjection.d.ts +0 -1
  12. package/dist/data/index.d.ts +0 -1
  13. package/dist/index.css +427 -1
  14. package/dist/index.d.ts +0 -1
  15. package/dist/index.js +3894 -219
  16. package/dist/index.js.map +1 -1
  17. package/dist/types.d.ts +13 -0
  18. package/package.json +19 -17
  19. package/src/component/FluxDashboard.vue +4 -4
  20. package/src/component/FluxDashboardContent.vue +2 -2
  21. package/src/component/FluxDashboardHeader.vue +1 -1
  22. package/src/component/FluxDashboardMenu.vue +6 -4
  23. package/src/component/FluxDashboardNavigation.vue +2 -2
  24. package/src/component/FluxDashboardSide.vue +1 -1
  25. package/src/component/FluxDashboardTopBar.vue +2 -2
  26. package/src/composable/useDashboardInjection.ts +1 -1
  27. package/src/css/component/Dashboard.module.scss +5 -4
  28. package/src/css/component/DashboardContent.module.scss +9 -9
  29. package/src/css/component/DashboardNavigation.module.scss +13 -11
  30. package/src/css/component/DashboardPane.module.scss +7 -7
  31. package/src/css/component/DashboardTopBar.module.scss +7 -7
  32. package/dist/component/FluxDashboard.vue.d.ts.map +0 -1
  33. package/dist/component/FluxDashboardContent.vue.d.ts.map +0 -1
  34. package/dist/component/FluxDashboardHeader.vue.d.ts.map +0 -1
  35. package/dist/component/FluxDashboardMenu.vue.d.ts.map +0 -1
  36. package/dist/component/FluxDashboardNavigation.vue.d.ts.map +0 -1
  37. package/dist/component/FluxDashboardSide.vue.d.ts.map +0 -1
  38. package/dist/component/FluxDashboardTopBar.vue.d.ts.map +0 -1
  39. package/dist/component/index.d.ts.map +0 -1
  40. package/dist/composable/index.d.ts.map +0 -1
  41. package/dist/composable/useDashboardInjection.d.ts.map +0 -1
  42. package/dist/data/index.d.ts.map +0 -1
  43. package/dist/index.d.ts.map +0 -1
  44. package/tsconfig.json +0 -45
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../internals/dist/index.js","../src/data/index.ts","../src/component/FluxDashboard.vue","../src/composable/useDashboardInjection.ts","../src/component/FluxDashboardContent.vue","../src/component/FluxDashboardTopBar.vue","../src/component/FluxDashboardHeader.vue","../src/component/FluxDashboardMenu.vue","../src/component/FluxDashboardNavigation.vue"],"sourcesContent":["import{computed as E,ref as _,unref as b}from\"vue\";function N(e,t){let o=_(!1),n=_(e),s=E(()=>{let c=[],m=b(n).month,h=b(n).startOf(\"month\");do c.push(h),h=h.plus({day:1});while(h.month===m);let y=c[0],T=c[c.length-1];for(let x=1;x<y.weekday;++x)c.unshift(y.minus({day:x}));for(let x=T.weekday+1;x<=7;++x)c.push(T.plus({day:x-T.weekday}));while(c.length/7<6){let x=c[c.length-1];for(let S=1;S<=7;++S)c.push(x.plus({day:S}))}return c}),r=E(()=>b(s).slice(0,7).map((c)=>c.toLocaleString({weekday:t?.weekDayLength??\"short\"}))),i=E(()=>b(n).plus({month:1})),a=E(()=>b(n).minus({month:1})),f=E(()=>b(n).toLocaleString({month:t?.monthLength??\"long\"})),l=E(()=>b(n).year.toString());function u(c){o.value=n.value>c,n.value=c}function v(){u(b(n).plus({month:1}))}function L(){u(b(n).minus({month:1}))}return{isTransitioningToPast:o,viewDate:n,viewDateNext:i,viewDatePrevious:a,viewMonth:f,viewYear:l,dates:s,days:r,setViewDate:u,nextMonth:v,previousMonth:L}}import{computed as me,unref as xe}from\"vue\";function U(e,t){return{months:me(()=>{let n=[],s=xe(e),r=s.startOf(\"year\");while(r.month<=12&&r.year===s.year)n.push({date:r,label:r.toLocaleString({month:t})}),r=r.plus({months:1});return n})}}import{computed as be,ref as he,unref as P,watch as ye}from\"vue\";function K(e,t=10){let o=he(0),n=be(()=>{let i=P(e).year,a=[],f=i-i%t+P(o)*t;for(let l=0;l<t;++l)a.push(f+l);return a});function s(){++o.value}function r(){--o.value}return ye(e,()=>o.value=0),{years:n,next:s,previous:r}}import{onMounted as De,onUnmounted as Ae,ref as Se,unref as Y,watchEffect as Ie}from\"vue\";import{Fragment as Te}from\"vue\";function z(e){let t=[];for(let o of e){if(o.type===Te&&Array.isArray(o.children)){t.push(...o.children);continue}t.push(o)}return t}import{isHtmlElement as ve}from\"@basmilius/utils\";var Ee=[\"a:not([disabled])\",\"button:not([disabled])\",\"input[type=checkbox]:not([disabled])\",\"input[type=radio]:not([disabled])\",\"input[type=text]:not([disabled])\",'[tabindex]:not([disabled]):not([tabindex=\"-1\"])'].join(\",\");function d(e){return Array.from(e.querySelectorAll(Ee)).filter(ve).filter((t)=>t.offsetWidth>0||t.offsetHeight>0||t===document.activeElement)}function M(e,t,o){let n=d(e),s=n.indexOf(t);if(s===-1)return null;let r=Le(n);ge(r,s,o);let i=we(s,o,r,n);if(!i){if(o===\"up\"||o===\"left\")i=n[s-1];if(o===\"down\"||o===\"right\")i=n[s+1]}return i}function ge(e,t,o){let n=e[t];e.forEach((s)=>{let r=s.center;switch(o){case\"up\":r={x:r.x,y:s.top+s.height};break;case\"down\":r={x:r.x,y:s.top};break;case\"left\":r={x:s.left+s.width,y:r.y};break;case\"right\":r={x:s.left,y:r.y};break}s.distance=Math.sqrt(Math.pow(n.center.x-r.x,2)+Math.pow(n.center.y-r.y,2))})}function we(e,t,o,n){let s=o[e],r=[];switch(t){case\"up\":r=o.map((a,f)=>f===e||a.top+a.height>s.top?Number.MAX_SAFE_INTEGER:a.distance);break;case\"down\":r=o.map((a,f)=>f===e||a.top<s.top+s.height?Number.MAX_SAFE_INTEGER:a.distance);break;case\"left\":r=o.map((a,f)=>f===e||a.left+a.width>s.left?Number.MAX_SAFE_INTEGER:a.distance);break;case\"right\":r=o.map((a,f)=>f===e||a.left<s.left+s.width?Number.MAX_SAFE_INTEGER:a.distance);break}let i=r.indexOf(Math.min(...r));if(r[i]!==Number.MAX_SAFE_INTEGER)return n[i];return null}function Le(e){return e.map((t)=>t.getBoundingClientRect()).map((t)=>({height:t.height,width:t.width,top:t.top,left:t.left,right:t.right,bottom:t.bottom,center:{x:t.left+t.width/2,y:t.top+t.height/2},distance:0}))}function B(e){let t=\"UnknownComponent\";if(e.type&&e.type.__name)t=e.type.__name;return t}import{camelCase as Me}from\"lodash-es\";function V(e){return Object.fromEntries(Object.entries(e.props??{}).map(([t,o])=>[Me(t),o]))}function q(e,t){if(!e.exposed||!(t in e.exposed))throw new Error(`'${t}' was not exposed by the component.`);return e.exposed[t]}import{isHtmlElement as Re}from\"@basmilius/utils\";function R(e,t,o=void 0){let n=d(e),s=o||document.activeElement;if(!s||!Re(s))return n[0]||void 0;let r=n.indexOf(s);return n[r+t]||void 0}function F(e){return Array.from(e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])')).filter((t)=>!t.hasAttribute(\"disabled\")||t.getAttribute(\"disabled\")!==\"true\").filter((t)=>!t.hasAttribute(\"aria-disabled\")||t.getAttribute(\"aria-disabled\")!==\"true\")}import{isHtmlElement as Fe}from\"@basmilius/utils\";import{unref as ke}from\"vue\";function p(e){let t=ke(e);if(Fe(t))return t;return t?.$el}function W(...e){console.warn(\"[Flux]\",...e)}function g(e,t,o=!1){let n=He(e),s=t.compareDocumentPosition(e),r;if(s&&Node.DOCUMENT_POSITION_PRECEDING||o)r=n.firstChild();else r=n.lastChild();(r!==null?r:e).focus()}function He(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:(t)=>t.tabIndex>=0&&!t.disabled?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})}class G{get active(){return this.current?.isEnabled??!1}get current(){return this.#e[this.#e.length-1]??null}#t=[];#e=[];add(e,t,o=!0){let n={id:e,setEnabled:t,isEnabled:!0};if(this.current&&this.toggle(this.current,!1),this.#e.push(n),o)this.toggle(n,!0),this.emit()}remove(e){let t=this.#e.find((s)=>s.id===e);t&&this.toggle(t,!1);let n=this.current?.id===e;this.#e=this.#e.filter((s)=>s.id!==e),n&&this.current&&this.toggle(this.current,!0),this.emit()}emit(){this.#t.forEach((e)=>e(this.active,this.#e))}subscribe(e){return this.#t.push(e),e(this.active,this.#e),()=>this.#t=this.#t.filter((t)=>t!==e)}toggle(e,t){e.setEnabled(t),e.isEnabled=t}}var w=new G;var X=!globalThis.document;function j(e,t,o){let n=Se([]);De(()=>{document.addEventListener(\"pointerdown\",s)}),Ae(()=>{document.removeEventListener(\"pointerdown\",s)});function s(r){if(!Y(t))return;!Y(n).some((a)=>a.contains(r.target))&&o(r)}Ie(()=>{let r=[];(Array.isArray(e)?e:[e]).forEach((i)=>{let a=p(i);a&&r.push(a)}),n.value=r})}import{computed as Oe,getCurrentInstance as Ce}from\"vue\";function Z(){let e=Ce();return Oe(()=>e?.uid??(e?.proxy)._uid??0)}import{customRef as _e,isRef as $,ref as Ne,watch as Ue}from\"vue\";function J(e,t,o=!1){let n=Ne($(e)?e.value:e),s=_e((r,i)=>({get(){return r(),n.value},set:Pe((a)=>{n.value=a,i()},t,o)}));if($(e))Ue(e,(r)=>s.value=r);return s}function Pe(e,t,o=!1){let n;return(...s)=>{if(o&&!n)e(...s);clearTimeout(n),n=setTimeout(()=>requestAnimationFrame(()=>e(...s)),t)}}import{watch as Ke}from\"vue\";function k(e,t,o,n={passive:!0}){Ke(e,(s,r,i)=>{if(!s)return;s.addEventListener(t,o,n),i(()=>s.removeEventListener(t,o))},{immediate:!0})}import{onMounted as ze,onUnmounted as Be,ref as Ve,unref as qe}from\"vue\";function Q(e,t){let o=Ve();ze(()=>{s()}),Be(()=>{clearTimeout(o.value)});function n(){o.value=setTimeout(()=>requestAnimationFrame(s),qe(e))}function s(){n(),t()}}import{ref as We,watch as Ge}from\"vue\";function ee(e,t={}){let o=We(t.initial??!1);return Ge(e,(n,s,r)=>{let i=p(e);if(!i)return;let a=new IntersectionObserver((f)=>o.value=f[0]?.isIntersecting??!1,t);a.observe(i),r(()=>a.disconnect())},{immediate:!0}),o}import{onScopeDispose as Xe,watch as Ye}from\"vue\";function H(e,t,o){o??={attributes:!0};let n,s=Ye(()=>p(e),(a)=>{if(r(),!a)return;n=new MutationObserver(t),n.observe(a,o)},{immediate:!0});function r(){if(!n)return;n.disconnect(),n=void 0}function i(){r(),s()}Xe(i)}import{DateTime as te}from\"luxon\";import{ref as je,watch as Ze}from\"vue\";function oe(e,t){let o=`flux/${e}`,n=je(s()??t);function s(){if(o in localStorage){let r=JSON.parse(localStorage.getItem(o));if(Array.isArray(r)&&r[0]===\"DateTime\")r=te.fromISO(r[1]);return r}return null}return Ze(n,(r)=>{let i=r;if(te.isDateTime(r))i=[\"DateTime\",r.toISO({includeOffset:!0,extendedZone:!0})];localStorage.setItem(o,JSON.stringify(i))}),n}import{ref as I,unref as $e}from\"vue\";function ne(e){let t=I(0),o=I(0);if(!e)e=I(document);return k(e,\"scroll\",()=>{let n=$e(e);if(n instanceof Document)n=n.scrollingElement;t.value=n?.scrollLeft??0,o.value=n?.scrollTop??0}),{x:t,y:o}}import{ref as ie,watch as ce}from\"vue\";import{onMounted as Je,onUnmounted as Qe,ref as re,unref as se}from\"vue\";var et=0;function D(e=!1){let t=re(`focus-trap-${++et}`),o=re(!1);return Je(()=>w.add(se(t),(n)=>o.value=n,e)),Qe(()=>w.remove(se(t))),o}import{onUnmounted as tt,ref as ot,unref as ae}from\"vue\";function A(e){let t=ot(document.activeElement);tt(()=>{if(ae(e))return;requestAnimationFrame(()=>ae(t)?.focus())})}function le(e,t={}){if(X)return;let{disable:o=ie(!1),disableReturn:n=ie(!1),attachTo:s=null}=t,r=D(!o);A(n),ce(e,(i,a,f)=>{let l=p(e),u=s||document;if(r.value&&l&&document.activeElement&&!l.contains(document.activeElement)&&!l.querySelector(\"[autofocus]\"))g(l,document.activeElement,!0);function v(c){if(!r.value||!l)return;let m=c.target||document.body;if(l.contains(m))return;c.preventDefault(),c.stopImmediatePropagation(),g(l,m)}function L(c){if(!r.value||!l)return;if(!c.relatedTarget||c.relatedTarget===document.body)c.preventDefault(),l.focus();let m=c.target||document.body;if(l.contains(m))return;g(l,m)}if(u.addEventListener(\"focusin\",v,{capture:!0}),u.addEventListener(\"focusout\",L,{capture:!0}),l){let c=d(l),m=c.findIndex((T)=>T.classList.contains(\"is-active\")),h=c.findIndex((T)=>!T.hasAttribute(\"aria-disabled\")),y=c[0];if(m>-1)y=c[m];if(h>-1)y=c[h];if(y)y.focus()}f(()=>{u.removeEventListener(\"focusin\",v),u.removeEventListener(\"focusout\",L)})},{immediate:!0}),ce(()=>o,()=>{let i=p(e);if(r.value=!o,o||!i)return;let a=d(i);if(a.includes(document.activeElement))return;a[0]?.focus()},{immediate:!0})}import{onMounted as nt,onUnmounted as rt,ref as st}from\"vue\";function fe(e){let t=st(null);nt(()=>t.value=w.subscribe(e)),rt(()=>t.value?.())}import{watch as at}from\"vue\";function pe(e,{cycle:t=!0,direction:o=\"bidirectional\"}={}){H(e,()=>s(n(),!1));function n(){let i=p(e),a=d(i),f=a.findIndex((u)=>u.classList.contains(\"is-active\")),l=a.findIndex((u)=>!u.hasAttribute(\"aria-disabled\"));if(f>-1)return f;if(l>-1)return l;return 0}function s(i,a=!0){let f=p(e),l=d(f);l.forEach((u,v)=>u.tabIndex=v===i?0:-1),a&&l[i]?.focus()}function r(i){let a=p(e),f=d(a);if([\"Enter\",\" \"].includes(i.key))return;switch(o){case\"bidirectional\":it(i,a,f,s);break;case\"horizontal\":case\"vertical\":ct(i,a,t,o,f,s);break}}at(e,(i,a,f)=>{let l=p(e);if(!l)return;l.addEventListener(\"keydown\",r),s(n(),!1),f(()=>l.removeEventListener(\"keydown\",r))},{immediate:!0})}function it(e,t,o,n){let s;switch(e.key){case\"ArrowUp\":s=\"up\";break;case\"ArrowDown\":s=\"down\";break;case\"ArrowLeft\":s=\"left\";break;case\"ArrowRight\":s=\"right\";break;default:return}let r=M(t,document.activeElement,s);if(r)n(o.indexOf(r));e.preventDefault()}function ct(e,t,o,n,s,r){let i;if(e.key===(n===\"horizontal\"?\"ArrowLeft\":\"ArrowUp\"))i=-1;else if(e.key===(n===\"horizontal\"?\"ArrowRight\":\"ArrowDown\"))i=1;else return;let a=R(t,i);if(a)r(s.indexOf(a));else if(o)r(i===1?0:s.length-1);e.preventDefault()}var nn=\"#f8fafc\",rn=\"#f1f5f9\",sn=\"#e2e8f0\",an=\"#cbd5e1\",cn=\"#94a3b8\",ln=\"#64748b\",fn=\"#475569\",pn=\"#334155\",un=\"#1e293b\",dn=\"#0f172a\",mn=\"#020617\",xn=\"#f9fafb\",bn=\"#f3f4f6\",hn=\"#e5e7eb\",yn=\"#d1d5db\",Tn=\"#9ca3af\",vn=\"#6b7280\",En=\"#4b5563\",gn=\"#374151\",wn=\"#1f2937\",Ln=\"#111827\",Mn=\"#030712\",Rn=\"#fafafa\",Fn=\"#f4f4f5\",kn=\"#e4e4e7\",Hn=\"#d4d4d8\",Dn=\"#a1a1aa\",An=\"#71717a\",Sn=\"#52525b\",In=\"#3f3f46\",On=\"#27272a\",Cn=\"#18181b\",_n=\"#09090b\",Nn=\"#fafafa\",Un=\"#f5f5f5\",Pn=\"#e5e5e5\",Kn=\"#d4d4d4\",zn=\"#a3a3a3\",Bn=\"#737373\",Vn=\"#525252\",qn=\"#404040\",Wn=\"#262626\",Gn=\"#171717\",Xn=\"#0a0a0a\",Yn=\"#fafaf9\",jn=\"#f5f5f4\",Zn=\"#e7e5e4\",$n=\"#d6d3d1\",Jn=\"#a8a29e\",Qn=\"#78716c\",er=\"#57534e\",tr=\"#44403c\",or=\"#292524\",nr=\"#1c1917\",rr=\"#0c0a09\",sr=\"#fef2f2\",ar=\"#fee2e2\",ir=\"#fecaca\",cr=\"#fca5a5\",lr=\"#f87171\",fr=\"#ef4444\",pr=\"#dc2626\",ur=\"#b91c1c\",dr=\"#991b1b\",mr=\"#7f1d1d\",xr=\"#450a0a\",br=\"#fff7ed\",hr=\"#ffedd5\",yr=\"#fed7aa\",Tr=\"#fdba74\",vr=\"#fb923c\",Er=\"#f97316\",gr=\"#ea580c\",wr=\"#c2410c\",Lr=\"#9a3412\",Mr=\"#7c2d12\",Rr=\"#431407\",Fr=\"#fffbeb\",kr=\"#fef3c7\",Hr=\"#fde68a\",Dr=\"#fcd34d\",Ar=\"#fbbf24\",Sr=\"#f59e0b\",Ir=\"#d97706\",Or=\"#b45309\",Cr=\"#92400e\",_r=\"#78350f\",Nr=\"#451a03\",Ur=\"#fefce8\",Pr=\"#fef9c3\",Kr=\"#fef08a\",zr=\"#fde047\",Br=\"#facc15\",Vr=\"#eab308\",qr=\"#ca8a04\",Wr=\"#a16207\",Gr=\"#854d0e\",Xr=\"#713f12\",Yr=\"#422006\",jr=\"#f7fee7\",Zr=\"#ecfccb\",$r=\"#d9f99d\",Jr=\"#bef264\",Qr=\"#a3e635\",es=\"#84cc16\",ts=\"#65a30d\",os=\"#4d7c0f\",ns=\"#3f6212\",rs=\"#365314\",ss=\"#1a2e05\",as=\"#f0fdf4\",is=\"#dcfce7\",cs=\"#bbf7d0\",ls=\"#86efac\",fs=\"#4ade80\",ps=\"#22c55e\",us=\"#16a34a\",ds=\"#15803d\",ms=\"#166534\",xs=\"#14532d\",bs=\"#052e16\",hs=\"#ecfdf5\",ys=\"#d1fae5\",Ts=\"#a7f3d0\",vs=\"#6ee7b7\",Es=\"#34d399\",gs=\"#10b981\",ws=\"#059669\",Ls=\"#047857\",Ms=\"#065f46\",Rs=\"#064e3b\",Fs=\"#022c22\",ks=\"#f0fdfa\",Hs=\"#ccfbf1\",Ds=\"#99f6e4\",As=\"#5eead4\",Ss=\"#2dd4bf\",Is=\"#14b8a6\",Os=\"#0d9488\",Cs=\"#0f766e\",_s=\"#115e59\",Ns=\"#134e4a\",Us=\"#042f2e\",Ps=\"#ecfeff\",Ks=\"#cffafe\",zs=\"#a5f3fc\",Bs=\"#67e8f9\",Vs=\"#22d3ee\",qs=\"#06b6d4\",Ws=\"#0891b2\",Gs=\"#0e7490\",Xs=\"#155e75\",Ys=\"#164e63\",js=\"#083344\",Zs=\"#f0f9ff\",$s=\"#e0f2fe\",Js=\"#bae6fd\",Qs=\"#7dd3fc\",ea=\"#38bdf8\",ta=\"#0ea5e9\",oa=\"#0284c7\",na=\"#0369a1\",ra=\"#075985\",sa=\"#0c4a6e\",aa=\"#082f49\",ia=\"#eff6ff\",ca=\"#dbeafe\",la=\"#bfdbfe\",fa=\"#93c5fd\",pa=\"#60a5fa\",ua=\"#3b82f6\",da=\"#2563eb\",ma=\"#1d4ed8\",xa=\"#1e40af\",ba=\"#1e3a8a\",ha=\"#172554\",ya=\"#eef2ff\",Ta=\"#e0e7ff\",va=\"#c7d2fe\",Ea=\"#a5b4fc\",ga=\"#818cf8\",wa=\"#6366f1\",La=\"#4f46e5\",Ma=\"#4338ca\",Ra=\"#3730a3\",Fa=\"#312e81\",ka=\"#1e1b4b\",Ha=\"#f5f3ff\",Da=\"#ede9fe\",Aa=\"#ddd6fe\",Sa=\"#c4b5fd\",Ia=\"#a78bfa\",Oa=\"#8b5cf6\",Ca=\"#7c3aed\",_a=\"#6d28d9\",Na=\"#5b21b6\",Ua=\"#4c1d95\",Pa=\"#2e1065\",Ka=\"#faf5ff\",za=\"#f3e8ff\",Ba=\"#e9d5ff\",Va=\"#d8b4fe\",qa=\"#c084fc\",Wa=\"#a855f7\",Ga=\"#9333ea\",Xa=\"#7e22ce\",Ya=\"#6b21a8\",ja=\"#581c87\",Za=\"#3b0764\",$a=\"#fdf4ff\",Ja=\"#fae8ff\",Qa=\"#f5d0fe\",ei=\"#f0abfc\",ti=\"#e879f9\",oi=\"#d946ef\",ni=\"#c026d3\",ri=\"#a21caf\",si=\"#86198f\",ai=\"#701a75\",ii=\"#4a044e\",ci=\"#fdf2f8\",li=\"#fce7f3\",fi=\"#fbcfe8\",pi=\"#f9a8d4\",ui=\"#f472b6\",di=\"#ec4899\",mi=\"#db2777\",xi=\"#be185d\",bi=\"#9d174d\",hi=\"#831843\",yi=\"#500724\",Ti=\"#fff1f2\",vi=\"#ffe4e6\",Ei=\"#fecdd3\",gi=\"#fda4af\",wi=\"#fb7185\",Li=\"#f43f5e\",Mi=\"#e11d48\",Ri=\"#be123c\",Fi=\"#9f1239\",ki=\"#881337\",Hi=\"#4c0519\";class ue{#t;#e;constructor(e){this.#e=[],this.#t=e,this.onKeyDown=this.onKeyDown.bind(this)}focusElement(e,t=!0){if(!this.#e[e])return;for(let o=0;o<this.#e.length;++o)this.#e[o].tabIndex=o===e?0:-1;if(t)this.#e[e]?.focus()}register(){this.#e=F(this.#t),this.#t.addEventListener(\"keydown\",this.onKeyDown),this.focusElement(0,!1)}unregister(){this.#t.removeEventListener(\"keydown\",this.onKeyDown)}onKeyDown(e){let t=this.#t.querySelector('[tabindex=\"0\"]'),o=this.#e.findIndex((n)=>n===t)??0;switch(e.key){case\"ArrowUp\":case\"ArrowLeft\":this.focusElement(o-1);break;case\"ArrowDown\":case\"ArrowRight\":this.focusElement(o+1);break;default:return}e.preventDefault(),e.stopPropagation()}}var lt={beforeUnmount(e){O.get(e)?.unregister(),O.delete(e)},mounted(e){let t=new ue(e);t.register(),O.set(e,t)}},O=new WeakMap;class de{#t;#e;constructor(e){this.#t=e,this.#e=new MutationObserver(this.onMutation.bind(this))}register(){this.#e.observe(this.#t,{childList:!0,subtree:!0}),requestAnimationFrame(this.onMutation.bind(this))}unregister(){this.#e.disconnect()}onMutation(){let{height:e}=getComputedStyle(this.#t);this.#t.style.height=\"auto\";let{height:t}=getComputedStyle(this.#t);if(this.#t.style.height=e,t===e)return;getComputedStyle(this.#t),requestAnimationFrame(()=>requestAnimationFrame(()=>this.#t.style.height=t))}}var ft={beforeUnmount(e){C.get(e)?.unregister(),C.delete(e)},mounted(e){let t=new de(e);t.register(),C.set(e,t)}},C=new WeakMap;export{_n as zinc950,Cn as zinc900,On as zinc800,In as zinc700,Sn as zinc600,An as zinc500,Rn as zinc50,Dn as zinc400,Hn as zinc300,kn as zinc200,Fn as zinc100,Yr as yellow950,Xr as yellow900,Gr as yellow800,Wr as yellow700,qr as yellow600,Vr as yellow500,Ur as yellow50,Br as yellow400,zr as yellow300,Kr as yellow200,Pr as yellow100,g as wrapFocus,W as warn,Pa as violet950,Ua as violet900,Na as violet800,_a as violet700,Ca as violet600,Oa as violet500,Ha as violet50,Ia as violet400,Sa as violet300,Aa as violet200,Da as violet100,ft as vHeightTransition,lt as vFocusTrap,ne as useScrollPosition,oe as useRemembered,H as useMutationObserver,Q as useInterval,ee as useInView,pe as useFocusZone,fe as useFocusTrapSubscription,A as useFocusTrapReturn,D as useFocusTrapLock,le as useFocusTrap,k as useEventListener,J as useDebouncedRef,Z as useComponentId,j as useClickOutside,K as useCalendarYearSwitcher,U as useCalendarMonthSwitcher,N as useCalendar,p as unrefTemplateElement,Us as teal950,Ns as teal900,_s as teal800,Cs as teal700,Os as teal600,Is as teal500,ks as teal50,Ss as teal400,As as teal300,Ds as teal200,Hs as teal100,rr as stone950,nr as stone900,or as stone800,tr as stone700,er as stone600,Qn as stone500,Yn as stone50,Jn as stone400,$n as stone300,Zn as stone200,jn as stone100,mn as slate950,dn as slate900,un as slate800,pn as slate700,fn as slate600,ln as slate500,nn as slate50,cn as slate400,an as slate300,sn as slate200,rn as slate100,aa as sky950,sa as sky900,ra as sky800,na as sky700,oa as sky600,ta as sky500,Zs as sky50,ea as sky400,Qs as sky300,Js as sky200,$s as sky100,Hi as rose950,ki as rose900,Fi as rose800,Ri as rose700,Mi as rose600,Li as rose500,Ti as rose50,wi as rose400,gi as rose300,Ei as rose200,vi as rose100,xr as red950,mr as red900,dr as red800,ur as red700,pr as red600,fr as red500,sr as red50,lr as red400,cr as red300,ir as red200,ar as red100,Za as purple950,ja as purple900,Ya as purple800,Xa as purple700,Ga as purple600,Wa as purple500,Ka as purple50,qa as purple400,Va as purple300,Ba as purple200,za as purple100,yi as pink950,hi as pink900,bi as pink800,xi as pink700,mi as pink600,di as pink500,ci as pink50,ui as pink400,pi as pink300,fi as pink200,li as pink100,Rr as orange950,Mr as orange900,Lr as orange800,wr as orange700,gr as orange600,Er as orange500,br as orange50,vr as orange400,Tr as orange300,yr as orange200,hr as orange100,Xn as neutral950,Gn as neutral900,Wn as neutral800,qn as neutral700,Vn as neutral600,Bn as neutral500,Nn as neutral50,zn as neutral400,Kn as neutral300,Pn as neutral200,Un as neutral100,ss as lime950,rs as lime900,ns as lime800,os as lime700,ts as lime600,es as lime500,jr as lime50,Qr as lime400,Jr as lime300,$r as lime200,Zr as lime100,X as isSSR,ka as indigo950,Fa as indigo900,Ra as indigo800,Ma as indigo700,La as indigo600,wa as indigo500,ya as indigo50,ga as indigo400,Ea as indigo300,va as indigo200,Ta as indigo100,bs as green950,xs as green900,ms as green800,ds as green700,us as green600,ps as green500,as as green50,fs as green400,ls as green300,cs as green200,is as green100,Mn as gray950,Ln as gray900,wn as gray800,gn as gray700,En as gray600,vn as gray500,xn as gray50,Tn as gray400,yn as gray300,hn as gray200,bn as gray100,F as getKeyboardFocusableElements,d as getFocusableElements,R as getFocusableElement,q as getExposedRef,V as getComponentProps,B as getComponentName,M as getBidirectionalFocusElement,ii as fuchsia950,ai as fuchsia900,si as fuchsia800,ri as fuchsia700,ni as fuchsia600,oi as fuchsia500,$a as fuchsia50,ti as fuchsia400,ei as fuchsia300,Qa as fuchsia200,Ja as fuchsia100,z as flattenVNodeTree,Fs as emerald950,Rs as emerald900,Ms as emerald800,Ls as emerald700,ws as emerald600,gs as emerald500,hs as emerald50,Es as emerald400,vs as emerald300,Ts as emerald200,ys as emerald100,js as cyan950,Ys as cyan900,Xs as cyan800,Gs as cyan700,Ws as cyan600,qs as cyan500,Ps as cyan50,Vs as cyan400,Bs as cyan300,zs as cyan200,Ks as cyan100,ha as blue950,ba as blue900,xa as blue800,ma as blue700,da as blue600,ua as blue500,ia as blue50,pa as blue400,fa as blue300,la as blue200,ca as blue100,Nr as amber950,_r as amber900,Cr as amber800,Or as amber700,Ir as amber600,Sr as amber500,Fr as amber50,Ar as amber400,Dr as amber300,Hr as amber200,kr as amber100,w as FOCUS_TRAP_LOCKS};\n\n//# debugId=87BCF3546FF8C71064756E2164756E21\n//# sourceMappingURL=index.js.map\n","import type { InjectionKey, Ref } from 'vue';\n\nexport const FluxDashboardInjectionKey: InjectionKey<FluxDashboardInjection> = Symbol();\n\nexport type FluxDashboardInjection = {\n readonly isMenuCollapsed: Ref<boolean>;\n readonly isNavigationCollapsed: Ref<boolean>;\n};\n","<template>\n <div :class=\"[$style.dashboard, isResizing && $style.isResizing]\">\n <slot name=\"navigation\"/>\n <slot name=\"menu\"/>\n\n <div :class=\"$style.dashboardMount\">\n <slot name=\"header\"/>\n <slot/>\n </div>\n\n <slot name=\"side\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useRemembered } from '@flux-ui/internals';\n import { provide, ref, VNode, watch } from 'vue';\n import { FluxDashboardInjectionKey } from '$fluxDashboard/data';\n import $style from '$fluxDashboard/css/component/Dashboard.module.scss';\n\n defineSlots<{\n default(): VNode;\n header?(): VNode;\n navigation?(): VNode;\n menu?(): VNode;\n side?(): VNode;\n }>();\n\n const isMenuCollapsed = useRemembered('dashboard-menu-collapsed', true);\n const isNavigationCollapsed = useRemembered('dashboard-navigation-collapsed', true);\n const isResizing = ref(false);\n\n provide(FluxDashboardInjectionKey, {\n isMenuCollapsed,\n isNavigationCollapsed\n });\n\n watch(isNavigationCollapsed, (_, __, onCleanup) => {\n let timeout: NodeJS.Timeout;\n\n function onResize(): void {\n clearTimeout(timeout);\n isResizing.value = true;\n timeout = setTimeout(() => isResizing.value = false, 10);\n }\n\n window.addEventListener('resize', onResize, {passive: true});\n\n onCleanup(() => window.removeEventListener('resize', onResize));\n }, {immediate: true});\n</script>\n","import { inject } from 'vue';\nimport { FluxDashboardInjection, FluxDashboardInjectionKey } from '$fluxDashboard/data';\n\nexport default function (): FluxDashboardInjection {\n const injection = inject(FluxDashboardInjectionKey);\n\n if (!injection) {\n throw new Error('[Flux] useDashboardInjection() was used outside a FluxDashboard component.');\n }\n\n return injection;\n}\n","<template>\n <main :class=\"[$style.dashboardContent, !isMenuCollapsed && $style.dashboardContentCollapsed]\">\n <slot/>\n </main>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardContent.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <header :class=\"[$style.dashboardTopBar, !isMenuCollapsed && $style.dashboardTopBarCollapsed]\">\n <slot/>\n </header>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <FluxDashboardTopBar :class=\"y > 0 ? $style.dashboardHeaderScrolled : $style.dashboardHeader\">\n <slot name=\"start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"end\"/>\n </FluxDashboardTopBar>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import { useScrollPosition } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardTopBar.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {y} = useScrollPosition();\n</script>\n","<template>\n <aside :class=\"[$style.dashboardMenu, isMenuCollapsed && $style.dashboardMenuCollapsed]\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1>{{ title }}</h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <div :class=\"$style.dashboardMenuBody\">\n <slot/>\n </div>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import type { FluxIconName } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '$fluxDashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title: string;\n }>();\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <nav\n v-bind=\"$attrs\"\n :class=\"isNavigationCollapsed ? $style.dashboardNavigationCollapsed : $style.dashboardNavigation\">\n <header :class=\"$style.dashboardNavigationHeader\">\n <FluxMenuItem\n icon-leading=\"bars\"\n @click=\"isNavigationCollapsed = !isNavigationCollapsed\"/>\n\n <router-link\n v-if=\"slots.logo\"\n :class=\"$style.dashboardNavigationLogo\"\n :to=\"logoLocation || '/'\">\n <slot\n name=\"logo\"\n v-bind=\"{isNavigationCollapsed}\"/>\n </router-link>\n\n <FluxMenuItem\n icon-leading=\"ellipsis-h\"\n @click=\"isMenuCollapsed = !isMenuCollapsed\"/>\n </header>\n\n <div\n v-for=\"index of 2\"\n :key=\"index\"\n :class=\"$style.dashboardNavigationRoundingFix\"/>\n\n <main :class=\"$style.dashboardNavigationNav\">\n <slot/>\n </main>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxMenuItem } from '@flux-ui/components';\n import type { FluxTo } from '@flux-ui/types';\n import { useDashboardInjection } from '$fluxDashboard/composable';\n import $style from '$fluxDashboard/css/component/DashboardNavigation.module.scss';\n\n defineOptions({\n inheritAttrs: false\n });\n\n defineProps<{\n logoLocation?: FluxTo\n }>();\n\n const slots = defineSlots<{\n default(): any;\n logo?(): any;\n }>();\n\n const {\n isMenuCollapsed,\n isNavigationCollapsed\n } = useDashboardInjection();\n</script>\n"],"names":["k","e","t","n","Ke","s","r","i","oe","je","te","Ze","ne","I","$e","FluxDashboardInjectionKey","isMenuCollapsed","useRemembered","isNavigationCollapsed","isResizing","ref","provide","watch","_","__","onCleanup","timeout","onResize","useDashboardInjection","injection","inject","y","useScrollPosition","slots","_useSlots"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["num","hue","num","definition","linearize","gamma","fn","fn","definition","rgb","definition","k","e","k","e","fn","e","k","f","e","k","definition","definition","definition","hue","definition","definition","definition","parseHwb","definition","p","d0","n","n","definition","definition","k","k","k","definition","definition","lab","definition","definition","lch","u_fn","v_fn","un","vn","k","k","definition","definition","rgb","definition","modeHsl","modeHsv","definition","lab","definition","lch","definition","rgb","gamma","linearize","definition","rgb","α","β","definition","rgb","transfer","definition","definition","definition","modeA98","modeCubehelix","modeDlab","modeDlch","modeHsi","modeHsl","modeHsv","modeHwb","modeItp","modeJab","modeJch","modeLab","modeLab65","modeLch","modeLch65","modeLchuv","modeLrgb","modeLuv","modeOklab","modeOklch","modeP3","modeProphoto","modeRec2020","modeRgb","modeXyb","modeXyz50","modeXyz65","modeYiq","getPrototypeChain","#blob","#name","#items","#page","#pageSize","#pages","#total","#code","#error","#errorDescription","#statusCode","#errors","#params","h","k","u","m","p","f"],"sources":["../../../node_modules/.bun/@basmilius+utils@3.35.0+f2ed1ec6a4c7f7fd/node_modules/@basmilius/utils/dist/index.mjs","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rgb/parseNumber.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/colors/named.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rgb/parseNamed.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rgb/parseHex.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/util/regex.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rgb/parseRgbLegacy.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/_prepare.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/converter.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/modes.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/parse.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rgb/parseRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rgb/parseTransparent.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/interpolate/lerp.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/interpolate/piecewise.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/interpolate/linear.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/fixup/alpha.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rgb/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/a98/convertA98ToXyz65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/a98/convertXyz65ToA98.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lrgb/convertRgbToLrgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz65/convertRgbToXyz65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lrgb/convertLrgbToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/a98/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/util/normalizeHue.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/fixup/hue.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/cubehelix/constants.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/cubehelix/convertRgbToCubehelix.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/cubehelix/convertCubehelixToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/difference.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/average.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/cubehelix/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lch/convertLabToLch.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lch/convertLchToLab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz65/constants.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/constants.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToXyz65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab65/convertLab65ToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab65/convertXyz65ToLab65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab65/convertRgbToLab65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/dlch/constants.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/dlch/convertDlchToLab65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/dlch/convertLab65ToDlch.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/dlab/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/dlch/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsi/convertHsiToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsi/convertRgbToHsi.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsi/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsl/convertHslToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsl/convertRgbToHsl.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/util/hue.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsl/parseHslLegacy.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsl/parseHsl.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsl/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsv/convertHsvToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsv/convertRgbToHsv.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hsv/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hwb/convertHwbToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hwb/convertRgbToHwb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hwb/parseHwb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hwb/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/hdr/transfer.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/itp/convertItpToXyz65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/itp/convertXyz65ToItp.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/itp/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/jab/convertXyz65ToJab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/jab/convertJabToXyz65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/jab/convertRgbToJab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/jab/convertJabToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/jab/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/jch/convertJabToJch.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/jch/convertJchToJab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/jch/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz50/constants.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab/convertLabToXyz50.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz50/convertXyz50ToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab/convertLabToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz50/convertRgbToXyz50.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab/convertXyz50ToLab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab/convertRgbToLab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab/parseLab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lab65/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lch/parseLch.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lch/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lch65/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lchuv/convertLuvToLchuv.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lchuv/convertLchuvToLuv.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/luv/convertXyz50ToLuv.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/luv/convertLuvToXyz50.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lchuv/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/lrgb/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/luv/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/oklab/convertLrgbToOklab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/oklab/convertRgbToOklab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToLrgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/oklab/convertOklabToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/okhsl/helpers.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/okhsl/convertOklabToOkhsl.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/okhsl/convertOkhslToOklab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/okhsl/modeOkhsl.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/okhsv/convertOklabToOkhsv.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/okhsv/convertOkhsvToOklab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/okhsv/modeOkhsv.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/oklab/parseOklab.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/oklab/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/oklch/parseOklch.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/oklch/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/p3/convertP3ToXyz65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/p3/convertXyz65ToP3.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/p3/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/prophoto/convertXyz50ToProphoto.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/prophoto/convertProphotoToXyz50.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/prophoto/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rec2020/convertXyz65ToRec2020.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rec2020/convertRec2020ToXyz65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/rec2020/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyb/constants.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyb/convertRgbToXyb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyb/convertXybToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyb/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz50/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz65ToXyz50.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz65/convertXyz50ToXyz65.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/xyz65/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/yiq/convertRgbToYiq.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/yiq/convertYiqToRgb.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/yiq/definition.js","../../../node_modules/.bun/culori@4.0.2/node_modules/culori/src/index.js","../../../node_modules/.bun/@basmilius+http-client@3.35.0+f97c77f67c914c00/node_modules/@basmilius/http-client/dist/index.mjs","../../../node_modules/.bun/@basmilius+common@3.35.0+a138cef3648bd96f/node_modules/@basmilius/common/dist/index.mjs","../../internals/dist/composable-5ooZTjm_.js","../src/data/index.ts","../src/css/component/Dashboard.module.scss","../src/component/FluxDashboard.vue","../src/component/FluxDashboard.vue","../src/composable/useDashboardInjection.ts","../src/css/component/DashboardContent.module.scss","../src/component/FluxDashboardContent.vue","../src/component/FluxDashboardContent.vue","../src/css/component/DashboardTopBar.module.scss","../src/component/FluxDashboardTopBar.vue","../src/component/FluxDashboardTopBar.vue","../src/component/FluxDashboardHeader.vue","../src/component/FluxDashboardHeader.vue","../src/css/component/DashboardPane.module.scss","../src/component/FluxDashboardMenu.vue","../src/component/FluxDashboardMenu.vue","../src/css/component/DashboardNavigation.module.scss","../src/component/FluxDashboardNavigation.vue","../src/component/FluxDashboardNavigation.vue","../src/component/FluxDashboardSide.vue","../src/component/FluxDashboardSide.vue"],"sourcesContent":["import{DateTime as e}from\"luxon\";function t(e,t){return Math.round(e/t)*t}function n(e,n,r,i){return Math.max(n,Math.min(r,+t(e*(r-n)+n,i).toPrecision(4)))}function r(e){return e.toString().split(`.`)[1]?.length??0}function i(e,t,n){let r=[],i=[],a;return(...o)=>(clearTimeout(a),a=setTimeout(async()=>{try{let t=await e.apply(n,o);r.forEach(e=>e(t))}catch(e){i.forEach(t=>t(e))}r=[],i=[]},t),new Promise((e,t)=>{r.push(e),i.push(t)}))}function a(e,t){if(!e.startsWith(`https://`)&&!e.startsWith(`http://`)&&!e.startsWith(`blob:`))throw Error(`Unsupported URL scheme for download: ${e}`);let n=document.createElement(`a`);n.download=t,n.href=e,document.body.appendChild(n),n.click(),document.body.removeChild(n)}function o(e,t){let n=URL.createObjectURL(e);a(n,t),URL.revokeObjectURL(n)}function s(e,t,n){o(new Blob([e],{type:n}),t)}function c(e){return e.toLocaleString({year:`numeric`,month:`long`,day:`numeric`})}function l(e){return e.toLocaleString({weekday:`long`,day:`numeric`,month:`long`})}function u(e){return e.toLocaleString({year:`numeric`,month:`long`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function d(e){return e.toLocaleString({month:`long`})}function f(e){return e.toLocaleString({month:`long`,year:`numeric`})}function p(e,t=0){let n=typeof navigator<`u`?navigator.language:`nl-NL`;return new Intl.NumberFormat(n,{maximumFractionDigits:t,minimumFractionDigits:t}).format(e)}function m(e){return new Intl.NumberFormat(navigator.language,{maximumFractionDigits:1,minimumFractionDigits:0,style:`percent`}).format(e)}function h(e){return e.toLocaleString({hour:`2-digit`,minute:`2-digit`})}function g(e,t,n=5,r){let i=[1,5,10,25,50,100,250,500,1e3,2500,5e3,1e4],a=[.1,.5,...i],o=t-e,s=r?a:i;for(let r of s){let i=Math.floor(o/r),a=[];if(!(i>n+1)){a.push(e);for(let t=1;t<i;++t)a.push(t*r+e);return a.push(t),a}}let c=10**(o.toString().length-1),l=[];for(let t=0;t<o;t+=c)l.push(t+e);return l}function _(e){return e.hour>=6&&e.hour<10?`alert`:e.hour>=10&&e.hour<18?`focused`:e.hour>=18&&e.hour<22?`wind_down`:`sleep`}function v(e){return e.hour>=5&&e.hour<12?`morning`:e.hour>=12&&e.hour<17?`afternoon`:e.hour>=17&&e.hour<22?`evening`:`night`}function y(t){let n=e.now();switch(t){case`afternoon`:return[n.set({hour:12,minute:0,second:0,millisecond:0}),n.set({hour:17,minute:0,second:0,millisecond:0})];case`evening`:return[n.set({hour:17,minute:0,second:0,millisecond:0}),n.set({hour:22,minute:0,second:0,millisecond:0})];case`morning`:return[n.set({hour:5,minute:0,second:0,millisecond:0}),n.set({hour:12,minute:0,second:0,millisecond:0})];case`night`:return[n.set({hour:22,minute:0,second:0,millisecond:0}),n.set({hour:22,minute:0,second:0,millisecond:0}).plus({hours:7})]}}function b(e){let t=e.year%100;t%=19,t>9&&(t-=19),t=t*11%30+e.month+e.day,e.month<3&&(t+=2),e.year<2e3?t-=4:t-=8.3,t=Math.floor(t+.5)%30;let n=(t<0?t+30:t)/29.530588853;return n<.03||n>.97?`new_moon`:n<.22?`waxing_crescent`:n<.28?`first_quarter`:n<.47?`waxing_gibbous`:n<.53?`full_moon`:n<.72?`waning_gibbous`:n<.78?`last_quarter`:`waning_crescent`}function x(e){let t={};do{if(e.name===``)break;for(let[n,r]of Object.entries(Object.getOwnPropertyDescriptors(e.prototype)))[`constructor`,`clone`,`toJSON`].includes(n)||!r.get&&!r.set||(t[n]=r)}while(e=Object.getPrototypeOf(e));return t}const S={af:[`Afghanistan`,33,65],ax:[`Åland Islands`,60.116667,19.9],al:[`Albania`,41,20],dz:[`Algeria`,28,3],as:[`American Samoa`,-14.3333,-170],ad:[`Andorra`,42.5,1.6],ao:[`Angola`,-12.5,18.5],ai:[`Anguilla`,18.25,-63.1667],aq:[`Antarctica`,-90,0],ag:[`Antigua and Barbuda`,17.05,-61.8],ar:[`Argentina`,-34,-64],am:[`Armenia`,40,45],aw:[`Aruba`,12.5,-69.9667],au:[`Australia`,-27,133],at:[`Austria`,47.3333,13.3333],az:[`Azerbaijan`,40.5,47.5],bs:[`Bahamas`,24.25,-76],bh:[`Bahrain`,26,50.55],bd:[`Bangladesh`,24,90],bb:[`Barbados`,13.1667,-59.5333],by:[`Belarus`,53,28],be:[`Belgium`,50.8333,4],bz:[`Belize`,17.25,-88.75],bj:[`Benin`,9.5,2.25],bm:[`Bermuda`,32.3333,-64.75],bt:[`Bhutan`,27.5,90.5],bo:[`Bolivia`,-17,-65],bq:[`Bonaire, Sint Eustatius and Saba`,12.183333,-68.233333],ba:[`Bosnia and Herzegovina`,44,18],bw:[`Botswana`,-22,24],bv:[`Bouvet Island`,-54.4333,3.4],br:[`Brazil`,-10,-55],io:[`British Indian Ocean Territory`,-6,71.5],bn:[`Brunei`,4.5,114.6667],bg:[`Bulgaria`,43,25],bf:[`Burkina Faso`,13,-2],bi:[`Burundi`,-3.5,30],kh:[`Cambodia`,13,105],cm:[`Cameroon`,6,12],ca:[`Canada`,60,-95],cv:[`Cape Verde`,16,-24],ky:[`Cayman Islands`,19.5,-80.5],cf:[`Central African Republic`,7,21],td:[`Chad`,15,19],cl:[`Chile`,-30,-71],cn:[`China`,35,105],cx:[`Christmas Island`,-10.5,105.6667],cc:[`Cocos (Keeling) Islands`,-12.5,96.8333],co:[`Colombia`,4,-72],km:[`Comoros`,-12.1667,44.25],cd:[`Congo, Democratic Republic of the`,0,25],cg:[`Congo`,-1,15],ck:[`Cook Islands`,-21.2333,-159.7667],cr:[`Costa Rica`,10,-84],ci:[`Côte d'Ivoire`,8,-5],hr:[`Croatia`,45.1667,15.5],cu:[`Cuba`,21.5,-80],cw:[`Curaçao`,12.166667,-68.966667],cy:[`Cyprus`,35,33],cz:[`Czech Republic`,49.75,15.5],dk:[`Denmark`,56,10],dj:[`Djibouti`,11.5,43],dm:[`Dominica`,15.4167,-61.3333],do:[`Dominican Republic`,19,-70.6667],ec:[`Ecuador`,-2,-77.5],eg:[`Egypt`,27,30],sv:[`El Salvador`,13.8333,-88.9167],gq:[`Equatorial Guinea`,2,10],er:[`Eritrea`,15,39],ee:[`Estonia`,59,26],et:[`Ethiopia`,8,38],fk:[`Falkland Islands (Malvinas)`,-51.75,-59],fo:[`Faroe Islands`,62,-7],fj:[`Fiji`,-18,175],fi:[`Finland`,64,26],fr:[`France`,46,2],gf:[`French Guiana`,4,-53],pf:[`French Polynesia`,-15,-140],tf:[`French Southern Territories`,-43,67],ga:[`Gabon`,-1,11.75],gm:[`Gambia`,13.4667,-16.5667],ge:[`Georgia`,42,43.5],de:[`Germany`,51,9],gh:[`Ghana`,8,-2],gi:[`Gibraltar`,36.1833,-5.3667],gr:[`Greece`,39,22],gl:[`Greenland`,72,-40],gd:[`Grenada`,12.1167,-61.6667],gp:[`Guadeloupe`,16.25,-61.5833],gu:[`Guam`,13.4667,144.7833],gt:[`Guatemala`,15.5,-90.25],gg:[`Guernsey`,49.5,-2.56],gw:[`Guinea-Bissau`,12,-15],gn:[`Guinea`,11,-10],gy:[`Guyana`,5,-59],ht:[`Haiti`,19,-72.4167],hm:[`Heard Island and McDonald Islands`,-53.1,72.5167],va:[`Holy See`,41.9,12.45],hn:[`Honduras`,15,-86.5],hk:[`Hong Kong`,22.25,114.1667],hu:[`Hungary`,47,20],is:[`Iceland`,65,-18],in:[`India`,20,77],id:[`Indonesia`,-5,120],ir:[`Iran`,32,53],iq:[`Iraq`,33,44],ie:[`Ireland`,53,-8],im:[`Isle of Man`,54.23,-4.55],il:[`Israel`,31.5,34.75],it:[`Italy`,42.8333,12.8333],jm:[`Jamaica`,18.25,-77.5],jp:[`Japan`,36,138],je:[`Jersey`,49.21,-2.13],jo:[`Jordan`,31,36],kz:[`Kazakhstan`,48,68],ke:[`Kenya`,1,38],ki:[`Kiribati`,1.4167,173],kp:[`Korea, North`,40,127],kr:[`Korea, South`,37,127.5],xk:[`Kosovo`,42.583333,21],kw:[`Kuwait`,29.3375,47.6581],kg:[`Kyrgyzstan`,41,75],la:[`Laos`,18,105],lv:[`Latvia`,57,25],lb:[`Lebanon`,33.8333,35.8333],ls:[`Lesotho`,-29.5,28.5],lr:[`Liberia`,6.5,-9.5],ly:[`Libya`,25,17],li:[`Liechtenstein`,47.1667,9.5333],lt:[`Lithuania`,56,24],lu:[`Luxembourg`,49.75,6.1667],mo:[`Macao`,22.1667,113.55],mk:[`North Macedonia`,41.8333,22],mg:[`Madagascar`,-20,47],mw:[`Malawi`,-13.5,34],my:[`Malaysia`,2.5,112.5],mv:[`Maldives`,3.25,73],ml:[`Mali`,17,-4],mt:[`Malta`,35.8333,14.5833],mh:[`Marshall Islands`,9,168],mq:[`Martinique`,14.6667,-61],mr:[`Mauritania`,20,-12],mu:[`Mauritius`,-20.2833,57.55],yt:[`Mayotte`,-12.8333,45.1667],mx:[`Mexico`,23,-102],fm:[`Micronesia`,6.9167,158.25],md:[`Moldova`,47,29],mc:[`Monaco`,43.7333,7.4],mn:[`Mongolia`,46,105],me:[`Montenegro`,42,19],ms:[`Montserrat`,16.75,-62.2],ma:[`Morocco`,32,-5],mz:[`Mozambique`,-18.25,35],mm:[`Myanmar`,22,98],na:[`Namibia`,-22,17],nr:[`Nauru`,-.5333,166.9167],np:[`Nepal`,28,84],nl:[`Netherlands`,52.5,5.75],nc:[`New Caledonia`,-21.5,165.5],nz:[`New Zealand`,-41,174],ni:[`Nicaragua`,13,-85],ne:[`Niger`,16,8],ng:[`Nigeria`,10,8],nu:[`Niue`,-19.0333,-169.8667],nf:[`Norfolk Island`,-29.0333,167.95],mp:[`Northern Mariana Islands`,15.2,145.75],no:[`Norway`,62,10],om:[`Oman`,21,57],pk:[`Pakistan`,30,70],pw:[`Palau`,7.5,134.5],ps:[`Palestine`,32,35.25],pa:[`Panama`,9,-80],pg:[`Papua New Guinea`,-6,147],py:[`Paraguay`,-23,-58],pe:[`Peru`,-10,-76],ph:[`Philippines`,13,122],pn:[`Pitcairn`,-24.7,-127.4],pl:[`Poland`,52,20],pt:[`Portugal`,39.5,-8],pr:[`Puerto Rico`,18.25,-66.5],qa:[`Qatar`,25.5,51.25],re:[`Réunion`,-21.1,55.6],ro:[`Romania`,46,25],ru:[`Russia`,60,100],rw:[`Rwanda`,-2,30],bl:[`Saint Barthélemy`,17.897728,-62.834244],sh:[`Saint Helena`,-15.9333,-5.7],kn:[`Saint Kitts and Nevis`,17.3333,-62.75],lc:[`Saint Lucia`,13.8833,-61.1333],mf:[`Saint Martin`,18.075278,-63.06],pm:[`Saint Pierre and Miquelon`,46.8333,-56.3333],vc:[`Saint Vincent and the Grenadines`,13.25,-61.2],ws:[`Samoa`,-13.5833,-172.3333],sm:[`San Marino`,43.7667,12.4167],st:[`Sao Tome and Principe`,1,7],sa:[`Saudi Arabia`,25,45],sn:[`Senegal`,14,-14],rs:[`Serbia`,44,21],sc:[`Seychelles`,-4.5833,55.6667],sl:[`Sierra Leone`,8.5,-11.5],sg:[`Singapore`,1.3667,103.8],sx:[`Sint Maarten`,18.033333,-63.05],sk:[`Slovakia`,48.6667,19.5],si:[`Slovenia`,46,15],sb:[`Solomon Islands`,-8,159],so:[`Somalia`,10,49],za:[`South Africa`,-29,24],gs:[`South Georgia and the South Sandwich Islands`,-54.5,-37],ss:[`South Sudan`,8,30],es:[`Spain`,40,-4],lk:[`Sri Lanka`,7,81],sd:[`Sudan`,15,30],sr:[`Suriname`,4,-56],sj:[`Svalbard and Jan Mayen`,78,20],sz:[`Swaziland`,-26.5,31.5],se:[`Sweden`,62,15],ch:[`Switzerland`,47,8],sy:[`Syria`,35,38],tw:[`Taiwan`,23.5,121],tj:[`Tajikistan`,39,71],tz:[`Tanzania`,-6,35],th:[`Thailand`,15,100],tl:[`Timor-Leste`,-8.55,125.5167],tg:[`Togo`,8,1.1667],tk:[`Tokelau`,-9,-172],to:[`Tonga`,-20,-175],tt:[`Trinidad and Tobago`,11,-61],tn:[`Tunisia`,34,9],tr:[`Turkey`,39,35],tm:[`Turkmenistan`,40,60],tc:[`Turks and Caicos Islands`,21.75,-71.5833],tv:[`Tuvalu`,-8,178],ug:[`Uganda`,1,32],ua:[`Ukraine`,49,32],ae:[`United Arab Emirates`,24,54],gb:[`United Kingdom`,54,-2],um:[`United States Minor Outlying Islands`,19.2833,166.6],us:[`United States`,38,-97],uy:[`Uruguay`,-33,-56],uz:[`Uzbekistan`,41,64],vu:[`Vanuatu`,-16,167],ve:[`Venezuela`,8,-66],vn:[`Vietnam`,16,106],vg:[`Virgin Islands, British`,18.5,-64.5],vi:[`Virgin Islands, U.S.`,18.3333,-64.8333],wf:[`Wallis and Futuna`,-13.3,-176.2],eh:[`Western Sahara`,24.5,-13],ye:[`Yemen`,15,48],zm:[`Zambia`,-15,30],zw:[`Zimbabwe`,-20,30]};function C(e){return S[e]??null}function w(e){let t=C(e);if(!t)return null;let[,n]=t;return n>=0}const T={autumn:[9,10,11],spring:[3,4,5],summer:[6,7,8],winter:[12,1,2]},E={autumn:[3,4,5],spring:[9,10,11],summer:[12,1,2],winter:[6,7,8]};function D(e,t){let n=w(e),r=t.month,i=n?T:E;for(let e of[`autumn`,`spring`,`summer`,`winter`])if(i[e].includes(r))return e;return null}function O(e){switch(e){case`spring`:return`fresh`;case`summer`:return`energetic`;case`autumn`:return`cozy`;case`winter`:return`warm`}}function k(e){return e.weekday===6||e.weekday===7?`off`:e.hour>=9&&e.hour<12?`work`:e.hour>=12&&e.hour<13?`break`:e.hour>=13&&e.hour<17?`work`:`off`}function A(e){return e.month===3&&e.day>=21||e.month===4&&e.day<=19?`aries`:e.month===4&&e.day>=20||e.month===5&&e.day<=20?`taurus`:e.month===5&&e.day>=21||e.month===6&&e.day<=20?`gemini`:e.month===6&&e.day>=21||e.month===7&&e.day<=22?`cancer`:e.month===7&&e.day>=23||e.month===8&&e.day<=22?`leo`:e.month===8&&e.day>=23||e.month===9&&e.day<=22?`virgo`:e.month===9&&e.day>=23||e.month===10&&e.day<=22?`libra`:e.month===10&&e.day>=23||e.month===11&&e.day<=21?`scorpio`:e.month===11&&e.day>=22||e.month===12&&e.day<=21?`sagittarius`:e.month===12&&e.day>=22||e.month===1&&e.day<=19?`capricorn`:e.month===1&&e.day>=20||e.month===2&&e.day<=18?`aquarius`:`pisces`}function j(e){let t=parseInt(e.startsWith(`#`)?e.substring(1):e,16);return[t>>16&255,t>>8&255,t&255]}function M(e,t,n){return n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function N(e,t,n){let r,i,a;if(e/=360,t/=100,n/=100,t===0)r=i=a=n;else{let o=n<.5?n*(1+t):n+t-n*t,s=2*n-o;r=M(s,o,e+1/3),i=M(s,o,e),a=M(s,o,e-1/3)}return r=Math.round(r*255),i=Math.round(i*255),a=Math.round(a*255),[r,i,a]}function P(e,t,n){e/=255,t/=255,n/=255;let r=Math.min(e,t,n),i=Math.max(e,t,n),a=i-r,o,s=i===0?0:a/i,c=i;return i===r?o=0:(o=i===e?(t-n)/a+(t<n?6:0):i===t?(n-e)/a+2:(e-t)/a+4,o/=6),[o,s,c]}function ee(e,t,n){return P(...N(e,t,n))}function F(e,t,n){let r=0,i=0,a=0,o=Math.floor(e*6),s=e*6-o,c=n*(1-t),l=n*(1-s*t),u=n*(1-(1-s)*t);switch(o%6){case 0:r=n,i=u,a=c;break;case 1:r=l,i=n,a=c;break;case 2:r=c,i=n,a=u;break;case 3:r=c,i=l,a=n;break;case 4:r=u,i=c,a=n;break;case 5:r=n,i=c,a=l;break}return r=Math.round(r*255),i=Math.round(i*255),a=Math.round(a*255),[r,i,a]}function I(e,t,n){e/=255,t/=255,n/=255;let r=Math.min(e,t,n),i=Math.max(e,t,n),a=i-r,o,s,c;return o=a===0?0:i===e?(t-n)/a%6:i===t?(n-e)/a+2:(e-t)/a+4,o=Math.round(o*60),o<0&&(o+=360),c=(i+r)/2,s=a===0?0:a/(1-Math.abs(2*c-1)),s=+(s*100).toFixed(1),c=+(c*100).toFixed(1),[o,s,c]}function L(e,t,n){return I(...F(e,t,n))}function R(e){return globalThis.document?e instanceof HTMLElement:!1}function z(e,t){let n=!1;for(let r=0,i=t.length-1;r<t.length;i=r++){let a=t[r][0],o=t[r][1],s=t[i][0],c=t[i][1];o>e[1]!=c>e[1]&&e[0]<(s-a)*(e[1]-o)/(c-o)+a&&(n=!n)}return n}function B(e,t){return t.hasSame(e,`day`)}function V(e){let t=new Uint32Array(1);t[0]=e;function n(){let e=t[0]=t[0]+1831565813|0,n=Math.imul(e^e>>>15,1|e);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}function r(e,t){return n()*(t-e)+e}function i(){return V(n()*2**32)}return{fork:i,next:n,nextBetween:r}}function H(e){window.location===window.parent.location?window.location.href=e:window.open(e,`_top`)}async function U(e){let t=document.createElement(`iframe`);t.style.position=`fixed`,t.style.top=`-100dvh`,t.style.left=`-100dvw`,t.style.width=`1px`,t.style.height=`1px`,document.body.appendChild(t);let n=t.contentDocument??t.contentWindow?.document;if(!n)throw document.body.removeChild(t),Error(`Cannot print, no access to the framed document.`);n.documentElement.innerHTML=e;let r=Array.from(n.getElementsByTagName(`img`));await Promise.all(r.map(e=>new Promise(t=>{e.complete?t(void 0):(e.addEventListener(`load`,t,{passive:!0}),e.addEventListener(`error`,t,{passive:!0}))}))),t.contentWindow?.print(),setTimeout(()=>{document.body.removeChild(t)},1e3)}function W(e,t,n){return`#${e.toString(16).padStart(2,`0`)}${t.toString(16).padStart(2,`0`)}${n.toString(16).padStart(2,`0`)}`}function G(e,t,n){e.prototype[t]=n}function K(e,t,n){Object.defineProperty(e,t,{value:n})}function q(e){`startViewTransition`in document?document.startViewTransition(e):e()}async function J(e){return new Promise(t=>setTimeout(t,e))}const Y=`✔`,X=`✘`,Z=`—`,Q=`–`,$=()=>void 0;export{Y as CHECK,X as CROSS,Z as MDASH,Q as NDASH,$ as NOOP,n as clampWithStepPrecision,r as countDecimals,i as debounce,o as downloadBlob,s as downloadString,a as downloadUrl,c as formatDate,l as formatDateFull,u as formatDateTime,d as formatMonth,f as formatMonthYear,p as formatNumber,m as formatPercentage,h as formatTime,g as generateStepTicks,_ as getCircadianPhase,v as getDayPeriod,y as getDayPeriodRange,b as getMoonPhase,x as getPrototypeChain,D as getSeason,O as getSeasonalMood,k as getWorkdayPeriod,A as getZodiacSign,j as hexToRGB,ee as hslToHSV,N as hslToRGB,L as hsvToHSL,F as hsvToRGB,M as hueToRGB,R as isHtmlElement,w as isNorthernHemisphere,z as isPointInPolygon,B as isToday,V as mulberry32,H as openUrl,U as printHtml,W as rgbToHEX,I as rgbToHSL,P as rgbToHSV,t as roundStep,G as setObjectMethod,K as setObjectValue,q as viewTransition,J as waitFor};\n//# sourceMappingURL=index.mjs.map","const parseNumber = (color, len) => {\n\tif (typeof color !== 'number') return;\n\n\t// hex3: #c93 -> #cc9933\n\tif (len === 3) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tg: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\tb: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex4: #c931 -> #cc993311\n\tif (len === 4) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: (((color >> 12) & 0xf) | ((color >> 8) & 0xf0)) / 255,\n\t\t\tg: (((color >> 8) & 0xf) | ((color >> 4) & 0xf0)) / 255,\n\t\t\tb: (((color >> 4) & 0xf) | (color & 0xf0)) / 255,\n\t\t\talpha: ((color & 0xf) | ((color << 4) & 0xf0)) / 255\n\t\t};\n\t}\n\n\t// hex6: #f0f1f2\n\tif (len === 6) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 16) & 0xff) / 255,\n\t\t\tg: ((color >> 8) & 0xff) / 255,\n\t\t\tb: (color & 0xff) / 255\n\t\t};\n\t}\n\n\t// hex8: #f0f1f2ff\n\tif (len === 8) {\n\t\treturn {\n\t\t\tmode: 'rgb',\n\t\t\tr: ((color >> 24) & 0xff) / 255,\n\t\t\tg: ((color >> 16) & 0xff) / 255,\n\t\t\tb: ((color >> 8) & 0xff) / 255,\n\t\t\talpha: (color & 0xff) / 255\n\t\t};\n\t}\n};\n\nexport default parseNumber;\n","const named = {\n\taliceblue: 0xf0f8ff,\n\tantiquewhite: 0xfaebd7,\n\taqua: 0x00ffff,\n\taquamarine: 0x7fffd4,\n\tazure: 0xf0ffff,\n\tbeige: 0xf5f5dc,\n\tbisque: 0xffe4c4,\n\tblack: 0x000000,\n\tblanchedalmond: 0xffebcd,\n\tblue: 0x0000ff,\n\tblueviolet: 0x8a2be2,\n\tbrown: 0xa52a2a,\n\tburlywood: 0xdeb887,\n\tcadetblue: 0x5f9ea0,\n\tchartreuse: 0x7fff00,\n\tchocolate: 0xd2691e,\n\tcoral: 0xff7f50,\n\tcornflowerblue: 0x6495ed,\n\tcornsilk: 0xfff8dc,\n\tcrimson: 0xdc143c,\n\tcyan: 0x00ffff,\n\tdarkblue: 0x00008b,\n\tdarkcyan: 0x008b8b,\n\tdarkgoldenrod: 0xb8860b,\n\tdarkgray: 0xa9a9a9,\n\tdarkgreen: 0x006400,\n\tdarkgrey: 0xa9a9a9,\n\tdarkkhaki: 0xbdb76b,\n\tdarkmagenta: 0x8b008b,\n\tdarkolivegreen: 0x556b2f,\n\tdarkorange: 0xff8c00,\n\tdarkorchid: 0x9932cc,\n\tdarkred: 0x8b0000,\n\tdarksalmon: 0xe9967a,\n\tdarkseagreen: 0x8fbc8f,\n\tdarkslateblue: 0x483d8b,\n\tdarkslategray: 0x2f4f4f,\n\tdarkslategrey: 0x2f4f4f,\n\tdarkturquoise: 0x00ced1,\n\tdarkviolet: 0x9400d3,\n\tdeeppink: 0xff1493,\n\tdeepskyblue: 0x00bfff,\n\tdimgray: 0x696969,\n\tdimgrey: 0x696969,\n\tdodgerblue: 0x1e90ff,\n\tfirebrick: 0xb22222,\n\tfloralwhite: 0xfffaf0,\n\tforestgreen: 0x228b22,\n\tfuchsia: 0xff00ff,\n\tgainsboro: 0xdcdcdc,\n\tghostwhite: 0xf8f8ff,\n\tgold: 0xffd700,\n\tgoldenrod: 0xdaa520,\n\tgray: 0x808080,\n\tgreen: 0x008000,\n\tgreenyellow: 0xadff2f,\n\tgrey: 0x808080,\n\thoneydew: 0xf0fff0,\n\thotpink: 0xff69b4,\n\tindianred: 0xcd5c5c,\n\tindigo: 0x4b0082,\n\tivory: 0xfffff0,\n\tkhaki: 0xf0e68c,\n\tlavender: 0xe6e6fa,\n\tlavenderblush: 0xfff0f5,\n\tlawngreen: 0x7cfc00,\n\tlemonchiffon: 0xfffacd,\n\tlightblue: 0xadd8e6,\n\tlightcoral: 0xf08080,\n\tlightcyan: 0xe0ffff,\n\tlightgoldenrodyellow: 0xfafad2,\n\tlightgray: 0xd3d3d3,\n\tlightgreen: 0x90ee90,\n\tlightgrey: 0xd3d3d3,\n\tlightpink: 0xffb6c1,\n\tlightsalmon: 0xffa07a,\n\tlightseagreen: 0x20b2aa,\n\tlightskyblue: 0x87cefa,\n\tlightslategray: 0x778899,\n\tlightslategrey: 0x778899,\n\tlightsteelblue: 0xb0c4de,\n\tlightyellow: 0xffffe0,\n\tlime: 0x00ff00,\n\tlimegreen: 0x32cd32,\n\tlinen: 0xfaf0e6,\n\tmagenta: 0xff00ff,\n\tmaroon: 0x800000,\n\tmediumaquamarine: 0x66cdaa,\n\tmediumblue: 0x0000cd,\n\tmediumorchid: 0xba55d3,\n\tmediumpurple: 0x9370db,\n\tmediumseagreen: 0x3cb371,\n\tmediumslateblue: 0x7b68ee,\n\tmediumspringgreen: 0x00fa9a,\n\tmediumturquoise: 0x48d1cc,\n\tmediumvioletred: 0xc71585,\n\tmidnightblue: 0x191970,\n\tmintcream: 0xf5fffa,\n\tmistyrose: 0xffe4e1,\n\tmoccasin: 0xffe4b5,\n\tnavajowhite: 0xffdead,\n\tnavy: 0x000080,\n\toldlace: 0xfdf5e6,\n\tolive: 0x808000,\n\tolivedrab: 0x6b8e23,\n\torange: 0xffa500,\n\torangered: 0xff4500,\n\torchid: 0xda70d6,\n\tpalegoldenrod: 0xeee8aa,\n\tpalegreen: 0x98fb98,\n\tpaleturquoise: 0xafeeee,\n\tpalevioletred: 0xdb7093,\n\tpapayawhip: 0xffefd5,\n\tpeachpuff: 0xffdab9,\n\tperu: 0xcd853f,\n\tpink: 0xffc0cb,\n\tplum: 0xdda0dd,\n\tpowderblue: 0xb0e0e6,\n\tpurple: 0x800080,\n\n\t// Added in CSS Colors Level 4:\n\t// https://drafts.csswg.org/css-color/#changes-from-3\n\trebeccapurple: 0x663399,\n\n\tred: 0xff0000,\n\trosybrown: 0xbc8f8f,\n\troyalblue: 0x4169e1,\n\tsaddlebrown: 0x8b4513,\n\tsalmon: 0xfa8072,\n\tsandybrown: 0xf4a460,\n\tseagreen: 0x2e8b57,\n\tseashell: 0xfff5ee,\n\tsienna: 0xa0522d,\n\tsilver: 0xc0c0c0,\n\tskyblue: 0x87ceeb,\n\tslateblue: 0x6a5acd,\n\tslategray: 0x708090,\n\tslategrey: 0x708090,\n\tsnow: 0xfffafa,\n\tspringgreen: 0x00ff7f,\n\tsteelblue: 0x4682b4,\n\ttan: 0xd2b48c,\n\tteal: 0x008080,\n\tthistle: 0xd8bfd8,\n\ttomato: 0xff6347,\n\tturquoise: 0x40e0d0,\n\tviolet: 0xee82ee,\n\twheat: 0xf5deb3,\n\twhite: 0xffffff,\n\twhitesmoke: 0xf5f5f5,\n\tyellow: 0xffff00,\n\tyellowgreen: 0x9acd32\n};\n\nexport default named;\n","import parseNumber from './parseNumber.js';\nimport named from '../colors/named.js';\n\n// Also supports the `transparent` color as defined in:\n// https://drafts.csswg.org/css-color/#transparent-black\nconst parseNamed = color => {\n\treturn parseNumber(named[color.toLowerCase()], 6);\n};\n\nexport default parseNamed;\n","import parseNumber from './parseNumber.js';\n\nconst hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\nconst parseHex = color => {\n\tlet match;\n\t// eslint-disable-next-line no-cond-assign\n\treturn (match = color.match(hex))\n\t\t? parseNumber(parseInt(match[1], 16), match[1].length)\n\t\t: undefined;\n};\n\nexport default parseHex;\n","/*\n\tBasic building blocks for color regexes\n\t---------------------------------------\n\n\tThese regexes are expressed as strings\n\tto be interpolated in the color regexes.\n */\n\n// <number>\nexport const num = '([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)';\n\n// <number> or 'none'\nexport const num_none = `(?:${num}|none)`;\n\n// <percentage>\nexport const per = `${num}%`;\n\n// <percent> or 'none'\nexport const per_none = `(?:${num}%|none)`;\n\n// <number-percentage> (<alpha-value>)\nexport const num_per = `(?:${num}%|${num})`;\n\n// <number-percentage> (<alpha-value>) or 'none'\nexport const num_per_none = `(?:${num}%|${num}|none)`;\n\n// <hue>\nexport const hue = `(?:${num}(deg|grad|rad|turn)|${num})`;\n\n// <hue> or 'none'\nexport const hue_none = `(?:${num}(deg|grad|rad|turn)|${num}|none)`;\n\nexport const c = `\\\\s*,\\\\s*`; // comma\nexport const so = '\\\\s*'; // space, optional\nexport const s = `\\\\s+`; // space\n\nexport const rx_num_per_none = new RegExp('^' + num_per_none + '$');\n","import { num, per, num_per, c } from '../util/regex.js';\n\n/*\n\trgb() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#rgb-functions\n */\nconst rgb_num_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${num}${c}${num}${c}${num}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst rgb_per_old = new RegExp(\n\t`^rgba?\\\\(\\\\s*${per}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseRgbLegacy = color => {\n\tlet res = { mode: 'rgb' };\n\tlet match;\n\tif ((match = color.match(rgb_num_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 255;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 255;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 255;\n\t\t}\n\t} else if ((match = color.match(rgb_per_old))) {\n\t\tif (match[1] !== undefined) {\n\t\t\tres.r = match[1] / 100;\n\t\t}\n\t\tif (match[2] !== undefined) {\n\t\t\tres.g = match[2] / 100;\n\t\t}\n\t\tif (match[3] !== undefined) {\n\t\t\tres.b = match[3] / 100;\n\t\t}\n\t} else {\n\t\treturn undefined;\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[4] / 100));\n\t} else if (match[5] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[5]));\n\t}\n\n\treturn res;\n};\n\nexport default parseRgbLegacy;\n","import parse from './parse.js';\n\nconst prepare = (color, mode) =>\n\tcolor === undefined\n\t\t? undefined\n\t\t: typeof color !== 'object'\n\t\t? parse(color)\n\t\t: color.mode !== undefined\n\t\t? color\n\t\t: mode\n\t\t? { ...color, mode }\n\t\t: undefined;\n\nexport default prepare;\n","import { converters } from './modes.js';\nimport prepare from './_prepare.js';\n\nconst converter =\n\t(target_mode = 'rgb') =>\n\tcolor =>\n\t\t(color = prepare(color, target_mode)) !== undefined\n\t\t\t? // if the color's mode corresponds to our target mode\n\t\t\t color.mode === target_mode\n\t\t\t\t? // then just return the color\n\t\t\t\t color\n\t\t\t\t: // otherwise check to see if we have a dedicated\n\t\t\t\t// converter for the target mode\n\t\t\t\tconverters[color.mode][target_mode]\n\t\t\t\t? // and return its result...\n\t\t\t\t converters[color.mode][target_mode](color)\n\t\t\t\t: // ...otherwise pass through RGB as an intermediary step.\n\t\t\t\t// if the target mode is RGB...\n\t\t\t\ttarget_mode === 'rgb'\n\t\t\t\t? // just return the RGB\n\t\t\t\t converters[color.mode].rgb(color)\n\t\t\t\t: // otherwise convert color.mode -> RGB -> target_mode\n\t\t\t\t converters.rgb[target_mode](converters[color.mode].rgb(color))\n\t\t\t: undefined;\n\nexport default converter;\n","import converter from './converter.js';\n\nconst converters = {};\nconst modes = {};\n\nconst parsers = [];\nconst colorProfiles = {};\n\nconst identity = v => v;\n\nconst useMode = definition => {\n\tconverters[definition.mode] = {\n\t\t...converters[definition.mode],\n\t\t...definition.toMode\n\t};\n\n\tObject.keys(definition.fromMode || {}).forEach(k => {\n\t\tif (!converters[k]) {\n\t\t\tconverters[k] = {};\n\t\t}\n\t\tconverters[k][definition.mode] = definition.fromMode[k];\n\t});\n\n\t// Color space channel ranges\n\tif (!definition.ranges) {\n\t\tdefinition.ranges = {};\n\t}\n\n\tif (!definition.difference) {\n\t\tdefinition.difference = {};\n\t}\n\n\tdefinition.channels.forEach(channel => {\n\t\t// undefined channel ranges default to the [0, 1] interval\n\t\tif (definition.ranges[channel] === undefined) {\n\t\t\tdefinition.ranges[channel] = [0, 1];\n\t\t}\n\n\t\tif (!definition.interpolate[channel]) {\n\t\t\tthrow new Error(`Missing interpolator for: ${channel}`);\n\t\t}\n\n\t\tif (typeof definition.interpolate[channel] === 'function') {\n\t\t\tdefinition.interpolate[channel] = {\n\t\t\t\tuse: definition.interpolate[channel]\n\t\t\t};\n\t\t}\n\n\t\tif (!definition.interpolate[channel].fixup) {\n\t\t\tdefinition.interpolate[channel].fixup = identity;\n\t\t}\n\t});\n\n\tmodes[definition.mode] = definition;\n\t(definition.parse || []).forEach(parser => {\n\t\tuseParser(parser, definition.mode);\n\t});\n\n\treturn converter(definition.mode);\n};\n\nconst getMode = mode => modes[mode];\n\nconst useParser = (parser, mode) => {\n\tif (typeof parser === 'string') {\n\t\tif (!mode) {\n\t\t\tthrow new Error(`'mode' required when 'parser' is a string`);\n\t\t}\n\t\tcolorProfiles[parser] = mode;\n\t} else if (typeof parser === 'function') {\n\t\tif (parsers.indexOf(parser) < 0) {\n\t\t\tparsers.push(parser);\n\t\t}\n\t}\n};\n\nconst removeParser = parser => {\n\tif (typeof parser === 'string') {\n\t\tdelete colorProfiles[parser];\n\t} else if (typeof parser === 'function') {\n\t\tconst idx = parsers.indexOf(parser);\n\t\tif (idx > 0) {\n\t\t\tparsers.splice(idx, 1);\n\t\t}\n\t}\n};\n\nexport {\n\tuseMode,\n\tgetMode,\n\tuseParser,\n\tremoveParser,\n\tconverters,\n\tparsers,\n\tcolorProfiles\n};\n","import { parsers, colorProfiles, getMode } from './modes.js';\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentStartCodePoint = /[^\\x00-\\x7F]|[a-zA-Z_]/;\n\n/* eslint-disable-next-line no-control-regex */\nconst IdentCodePoint = /[^\\x00-\\x7F]|[-\\w]/;\n\nexport const Tok = {\n\tFunction: 'function',\n\tIdent: 'ident',\n\tNumber: 'number',\n\tPercentage: 'percentage',\n\tParenClose: ')',\n\tNone: 'none',\n\tHue: 'hue',\n\tAlpha: 'alpha'\n};\n\nlet _i = 0;\n\n/*\n\t4.3.10. Check if three code points would start a number\n\thttps://drafts.csswg.org/css-syntax/#starts-with-a-number\n */\nfunction is_num(chars) {\n\tlet ch = chars[_i];\n\tlet ch1 = chars[_i + 1];\n\tif (ch === '-' || ch === '+') {\n\t\treturn /\\d/.test(ch1) || (ch1 === '.' && /\\d/.test(chars[_i + 2]));\n\t}\n\tif (ch === '.') {\n\t\treturn /\\d/.test(ch1);\n\t}\n\treturn /\\d/.test(ch);\n}\n\n/*\n\tCheck if the stream starts with an identifier.\n */\n\nfunction is_ident(chars) {\n\tif (_i >= chars.length) {\n\t\treturn false;\n\t}\n\tlet ch = chars[_i];\n\tif (IdentStartCodePoint.test(ch)) {\n\t\treturn true;\n\t}\n\tif (ch === '-') {\n\t\tif (chars.length - _i < 2) {\n\t\t\treturn false;\n\t\t}\n\t\tlet ch1 = chars[_i + 1];\n\t\tif (ch1 === '-' || IdentStartCodePoint.test(ch1)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\treturn false;\n}\n\n/*\n\t4.3.3. Consume a numeric token\n\thttps://drafts.csswg.org/css-syntax/#consume-numeric-token\n */\n\nconst huenits = {\n\tdeg: 1,\n\trad: 180 / Math.PI,\n\tgrad: 9 / 10,\n\tturn: 360\n};\n\nfunction num(chars) {\n\tlet value = '';\n\tif (chars[_i] === '-' || chars[_i] === '+') {\n\t\tvalue += chars[_i++];\n\t}\n\tvalue += digits(chars);\n\tif (chars[_i] === '.' && /\\d/.test(chars[_i + 1])) {\n\t\tvalue += chars[_i++] + digits(chars);\n\t}\n\tif (chars[_i] === 'e' || chars[_i] === 'E') {\n\t\tif (\n\t\t\t(chars[_i + 1] === '-' || chars[_i + 1] === '+') &&\n\t\t\t/\\d/.test(chars[_i + 2])\n\t\t) {\n\t\t\tvalue += chars[_i++] + chars[_i++] + digits(chars);\n\t\t} else if (/\\d/.test(chars[_i + 1])) {\n\t\t\tvalue += chars[_i++] + digits(chars);\n\t\t}\n\t}\n\tif (is_ident(chars)) {\n\t\tlet id = ident(chars);\n\t\tif (id === 'deg' || id === 'rad' || id === 'turn' || id === 'grad') {\n\t\t\treturn { type: Tok.Hue, value: value * huenits[id] };\n\t\t}\n\t\treturn undefined;\n\t}\n\tif (chars[_i] === '%') {\n\t\t_i++;\n\t\treturn { type: Tok.Percentage, value: +value };\n\t}\n\treturn { type: Tok.Number, value: +value };\n}\n\n/*\n\tConsume digits.\n */\nfunction digits(chars) {\n\tlet v = '';\n\twhile (/\\d/.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an identifier.\n */\nfunction ident(chars) {\n\tlet v = '';\n\twhile (_i < chars.length && IdentCodePoint.test(chars[_i])) {\n\t\tv += chars[_i++];\n\t}\n\treturn v;\n}\n\n/*\n\tConsume an ident-like token.\n */\nfunction identlike(chars) {\n\tlet v = ident(chars);\n\tif (chars[_i] === '(') {\n\t\t_i++;\n\t\treturn { type: Tok.Function, value: v };\n\t}\n\tif (v === 'none') {\n\t\treturn { type: Tok.None, value: undefined };\n\t}\n\treturn { type: Tok.Ident, value: v };\n}\n\nexport function tokenize(str = '') {\n\tlet chars = str.trim();\n\tlet tokens = [];\n\tlet ch;\n\n\t/* reset counter */\n\t_i = 0;\n\n\twhile (_i < chars.length) {\n\t\tch = chars[_i++];\n\n\t\t/*\n\t\t\tConsume whitespace without emitting it\n\t\t */\n\t\tif (ch === '\\n' || ch === '\\t' || ch === ' ') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === ',') {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === ')') {\n\t\t\ttokens.push({ type: Tok.ParenClose });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '+') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '-') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\ttokens.push({ type: Tok.Ident, value: ident(chars) });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '.') {\n\t\t\t_i--;\n\t\t\tif (is_num(chars)) {\n\t\t\t\ttokens.push(num(chars));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (ch === '/') {\n\t\t\twhile (\n\t\t\t\t_i < chars.length &&\n\t\t\t\t(chars[_i] === '\\n' || chars[_i] === '\\t' || chars[_i] === ' ')\n\t\t\t) {\n\t\t\t\t_i++;\n\t\t\t}\n\t\t\tlet alpha;\n\t\t\tif (is_num(chars)) {\n\t\t\t\talpha = num(chars);\n\t\t\t\tif (alpha.type !== Tok.Hue) {\n\t\t\t\t\ttokens.push({ type: Tok.Alpha, value: alpha });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (is_ident(chars)) {\n\t\t\t\tif (ident(chars) === 'none') {\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\ttype: Tok.Alpha,\n\t\t\t\t\t\tvalue: { type: Tok.None, value: undefined }\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (/\\d/.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(num(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (IdentStartCodePoint.test(ch)) {\n\t\t\t_i--;\n\t\t\ttokens.push(identlike(chars));\n\t\t\tcontinue;\n\t\t}\n\n\t\t/*\n\t\t\tTreat everything not already handled as an error.\n\t\t */\n\t\treturn undefined;\n\t}\n\n\treturn tokens;\n}\n\nexport function parseColorSyntax(tokens) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function || token.value !== 'color') {\n\t\treturn undefined;\n\t}\n\ttoken = tokens[tokens._i++];\n\tif (token.type !== Tok.Ident) {\n\t\treturn undefined;\n\t}\n\tconst mode = colorProfiles[token.value];\n\tif (!mode) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode };\n\tconst coords = consumeCoords(tokens, false);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tconst channels = getMode(mode).channels;\n\tfor (let ii = 0, c, ch; ii < channels.length; ii++) {\n\t\tc = coords[ii];\n\t\tch = channels[ii];\n\t\tif (c.type !== Tok.None) {\n\t\t\tres[ch] = c.type === Tok.Number ? c.value : c.value / 100;\n\t\t\tif (ch === 'alpha') {\n\t\t\t\tres[ch] = Math.max(0, Math.min(1, res[ch]));\n\t\t\t}\n\t\t}\n\t}\n\treturn res;\n}\n\nfunction consumeCoords(tokens, includeHue) {\n\tconst coords = [];\n\tlet token;\n\twhile (tokens._i < tokens.length) {\n\t\ttoken = tokens[tokens._i++];\n\t\tif (\n\t\t\ttoken.type === Tok.None ||\n\t\t\ttoken.type === Tok.Number ||\n\t\t\ttoken.type === Tok.Alpha ||\n\t\t\ttoken.type === Tok.Percentage ||\n\t\t\t(includeHue && token.type === Tok.Hue)\n\t\t) {\n\t\t\tcoords.push(token);\n\t\t\tcontinue;\n\t\t}\n\t\tif (token.type === Tok.ParenClose) {\n\t\t\tif (tokens._i < tokens.length) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tif (coords.length < 3 || coords.length > 4) {\n\t\treturn undefined;\n\t}\n\n\tif (coords.length === 4) {\n\t\tif (coords[3].type !== Tok.Alpha) {\n\t\t\treturn undefined;\n\t\t}\n\t\tcoords[3] = coords[3].value;\n\t}\n\tif (coords.length === 3) {\n\t\tcoords.push({ type: Tok.None, value: undefined });\n\t}\n\n\treturn coords.every(c => c.type !== Tok.Alpha) ? coords : undefined;\n}\n\nexport function parseModernSyntax(tokens, includeHue) {\n\ttokens._i = 0;\n\tlet token = tokens[tokens._i++];\n\tif (!token || token.type !== Tok.Function) {\n\t\treturn undefined;\n\t}\n\tlet coords = consumeCoords(tokens, includeHue);\n\tif (!coords) {\n\t\treturn undefined;\n\t}\n\tcoords.unshift(token.value);\n\treturn coords;\n}\n\nconst parse = color => {\n\tif (typeof color !== 'string') {\n\t\treturn undefined;\n\t}\n\tconst tokens = tokenize(color);\n\tconst parsed = tokens ? parseModernSyntax(tokens, true) : undefined;\n\tlet result = undefined;\n\tlet i = 0;\n\tlet len = parsers.length;\n\twhile (i < len) {\n\t\tif ((result = parsers[i++](color, parsed)) !== undefined) {\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn tokens ? parseColorSyntax(tokens) : undefined;\n};\n\nexport default parse;\n","import { Tok } from '../parse.js';\n\nfunction parseRgb(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'rgb' && parsed[0] !== 'rgba')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'rgb' };\n\tconst [, r, g, b, alpha] = parsed;\n\tif (r.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (r.type !== Tok.None) {\n\t\tres.r = r.type === Tok.Number ? r.value / 255 : r.value / 100;\n\t}\n\tif (g.type !== Tok.None) {\n\t\tres.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseRgb;\n","const parseTransparent = c =>\n\tc === 'transparent'\n\t\t? { mode: 'rgb', r: 0, g: 0, b: 0, alpha: 0 }\n\t\t: undefined;\n\nexport default parseTransparent;\n","const lerp = (a, b, t) => a + t * (b - a);\nconst unlerp = (a, b, v) => (v - a) / (b - a);\n\nconst blerp = (a00, a01, a10, a11, tx, ty) => {\n\treturn lerp(lerp(a00, a01, tx), lerp(a10, a11, tx), ty);\n};\n\nconst trilerp = (\n\ta000,\n\ta010,\n\ta100,\n\ta110,\n\ta001,\n\ta011,\n\ta101,\n\ta111,\n\ttx,\n\tty,\n\ttz\n) => {\n\treturn lerp(\n\t\tblerp(a000, a010, a100, a110, tx, ty),\n\t\tblerp(a001, a011, a101, a111, tx, ty),\n\t\ttz\n\t);\n};\n\nexport { lerp, blerp, trilerp, unlerp };\n","const get_classes = arr => {\n\tlet classes = [];\n\tfor (let i = 0; i < arr.length - 1; i++) {\n\t\tlet a = arr[i];\n\t\tlet b = arr[i + 1];\n\t\tif (a === undefined && b === undefined) {\n\t\t\tclasses.push(undefined);\n\t\t} else if (a !== undefined && b !== undefined) {\n\t\t\tclasses.push([a, b]);\n\t\t} else {\n\t\t\tclasses.push(a !== undefined ? [a, a] : [b, b]);\n\t\t}\n\t}\n\treturn classes;\n};\n\nconst interpolatorPiecewise = interpolator => arr => {\n\tlet classes = get_classes(arr);\n\treturn t => {\n\t\tlet cls = t * classes.length;\n\t\tlet idx = t >= 1 ? classes.length - 1 : Math.max(Math.floor(cls), 0);\n\t\tlet pair = classes[idx];\n\t\treturn pair === undefined\n\t\t\t? undefined\n\t\t\t: interpolator(pair[0], pair[1], cls - idx);\n\t};\n};\n\nexport { interpolatorPiecewise };\n","import { lerp } from './lerp.js';\nimport { interpolatorPiecewise } from './piecewise.js';\n\nexport const interpolatorLinear = interpolatorPiecewise(lerp);\n","const fixupAlpha = arr => {\n\tlet some_defined = false;\n\tlet res = arr.map(v => {\n\t\tif (v !== undefined) {\n\t\t\tsome_defined = true;\n\t\t\treturn v;\n\t\t}\n\t\treturn 1;\n\t});\n\treturn some_defined ? res : arr;\n};\n\nexport { fixupAlpha };\n","import parseNamed from './parseNamed.js';\nimport parseHex from './parseHex.js';\nimport parseRgbLegacy from './parseRgbLegacy.js';\nimport parseRgb from './parseRgb.js';\nimport parseTransparent from './parseTransparent.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tsRGB color space\n */\n\nconst definition = {\n\tmode: 'rgb',\n\tchannels: ['r', 'g', 'b', 'alpha'],\n\tparse: [\n\t\tparseRgb,\n\t\tparseHex,\n\t\tparseRgbLegacy,\n\t\tparseNamed,\n\t\tparseTransparent,\n\t\t'srgb'\n\t],\n\tserialize: 'srgb',\n\tinterpolate: {\n\t\tr: interpolatorLinear,\n\t\tg: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\tgamut: true,\n\twhite: { r: 1, g: 1, b: 1 },\n\tblack: { r: 0, g: 0, b: 0 }\n};\n\nexport default definition;\n","/*\n\tConvert A98 RGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n*/\n\nconst linearize = (v = 0) => Math.pow(Math.abs(v), 563 / 256) * Math.sign(v);\n\nconst convertA98ToXyz65 = a98 => {\n\tlet r = linearize(a98.r);\n\tlet g = linearize(a98.g);\n\tlet b = linearize(a98.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.5766690429101305 * r +\n\t\t\t0.1855582379065463 * g +\n\t\t\t0.1882286462349947 * b,\n\t\ty:\n\t\t\t0.297344975250536 * r +\n\t\t\t0.6273635662554661 * g +\n\t\t\t0.0752914584939979 * b,\n\t\tz:\n\t\t\t0.0270313613864123 * r +\n\t\t\t0.0706888525358272 * g +\n\t\t\t0.9913375368376386 * b\n\t};\n\tif (a98.alpha !== undefined) {\n\t\tres.alpha = a98.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertA98ToXyz65;\n","/*\n\tConvert CIE XYZ D65 values to A98 RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => Math.pow(Math.abs(v), 256 / 563) * Math.sign(v);\n\nconst convertXyz65ToA98 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'a98',\n\t\tr: gamma(\n\t\t\tx * 2.0415879038107465 -\n\t\t\t\ty * 0.5650069742788597 -\n\t\t\t\t0.3447313507783297 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.9692436362808798 +\n\t\t\t\ty * 1.8759675015077206 +\n\t\t\t\t0.0415550574071756 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0134442806320312 -\n\t\t\t\ty * 0.1183623922310184 +\n\t\t\t\t1.0151749943912058 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToA98;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs <= 0.04045) {\n\t\treturn c / 12.92;\n\t}\n\treturn (Math.sign(c) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n};\n\nconst convertRgbToLrgb = ({ r, g, b, alpha }) => {\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToLrgb;\n","/*\n\tConvert sRGB values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.4123907992659593 * r +\n\t\t\t0.357584339383878 * g +\n\t\t\t0.1804807884018343 * b,\n\t\ty:\n\t\t\t0.2126390058715102 * r +\n\t\t\t0.715168678767756 * g +\n\t\t\t0.0721923153607337 * b,\n\t\tz:\n\t\t\t0.0193308187155918 * r +\n\t\t\t0.119194779794626 * g +\n\t\t\t0.9505321522496607 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz65;\n","const fn = (c = 0) => {\n\tconst abs = Math.abs(c);\n\tif (abs > 0.0031308) {\n\t\treturn (Math.sign(c) || 1) * (1.055 * Math.pow(abs, 1 / 2.4) - 0.055);\n\t}\n\treturn c * 12.92;\n};\n\nconst convertLrgbToRgb = ({ r, g, b, alpha }, mode = 'rgb') => {\n\tlet res = {\n\t\tmode,\n\t\tr: fn(r),\n\t\tg: fn(g),\n\t\tb: fn(b)\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLrgbToRgb;\n","/*\n\tCIE XYZ D65 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://observablehq.com/@danburzo/color-matrix-calculator\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.2409699419045226 -\n\t\t\ty * 1.5373831775700939 -\n\t\t\t0.4986107602930034 * z,\n\t\tg:\n\t\t\tx * -0.9692436362808796 +\n\t\t\ty * 1.8759675015077204 +\n\t\t\t0.0415550574071756 * z,\n\t\tb:\n\t\t\tx * 0.0556300796969936 -\n\t\t\ty * 0.2039769588889765 +\n\t\t\t1.0569715142428784 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRgb;\n","import rgb from '../rgb/definition.js';\n\nimport convertA98ToXyz65 from './convertA98ToXyz65.js';\nimport convertXyz65ToA98 from './convertXyz65ToA98.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'a98',\n\tparse: ['a98-rgb'],\n\tserialize: 'a98-rgb',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToA98(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToA98\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertA98ToXyz65(color)),\n\t\txyz65: convertA98ToXyz65\n\t}\n};\n\nexport default definition;\n","const normalizeHue = hue => ((hue = hue % 360) < 0 ? hue + 360 : hue);\n\nexport default normalizeHue;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst hue = (hues, fn) => {\n\treturn hues\n\t\t.map((hue, idx, arr) => {\n\t\t\tif (hue === undefined) {\n\t\t\t\treturn hue;\n\t\t\t}\n\t\t\tlet normalized = normalizeHue(hue);\n\t\t\tif (idx === 0 || hues[idx - 1] === undefined) {\n\t\t\t\treturn normalized;\n\t\t\t}\n\t\t\treturn fn(normalized - normalizeHue(arr[idx - 1]));\n\t\t})\n\t\t.reduce((acc, curr) => {\n\t\t\tif (\n\t\t\t\t!acc.length ||\n\t\t\t\tcurr === undefined ||\n\t\t\t\tacc[acc.length - 1] === undefined\n\t\t\t) {\n\t\t\t\tacc.push(curr);\n\t\t\t\treturn acc;\n\t\t\t}\n\t\t\tacc.push(curr + acc[acc.length - 1]);\n\t\t\treturn acc;\n\t\t}, []);\n};\n\nconst fixupHueShorter = arr =>\n\thue(arr, d => (Math.abs(d) <= 180 ? d : d - 360 * Math.sign(d)));\nconst fixupHueLonger = arr =>\n\thue(arr, d => (Math.abs(d) >= 180 || d === 0 ? d : d - 360 * Math.sign(d)));\nconst fixupHueIncreasing = arr => hue(arr, d => (d >= 0 ? d : d + 360));\nconst fixupHueDecreasing = arr => hue(arr, d => (d <= 0 ? d : d - 360));\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n};\n","export const M = [-0.14861, 1.78277, -0.29227, -0.90649, 1.97294, 0];\n\nexport const degToRad = Math.PI / 180;\nexport const radToDeg = 180 / Math.PI;\n","/*\n\tConvert a RGB color to the Cubehelix HSL color space.\n\n\tThis computation is not present in Green's paper:\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\t...but can be derived from the inverse, HSL to RGB conversion.\n\n\tIt matches the math in Mike Bostock's D3 implementation:\n\n\thttps://github.com/d3/d3-color/blob/master/src/cubehelix.js\n */\n\nimport { radToDeg, M } from './constants.js';\n\nlet DE = M[3] * M[4];\nlet BE = M[1] * M[4];\nlet BCAD = M[1] * M[2] - M[0] * M[3];\n\nconst convertRgbToCubehelix = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet l = (BCAD * b + r * DE - g * BE) / (BCAD + DE - BE);\n\tlet x = b - l;\n\tlet y = (M[4] * (g - l) - M[2] * x) / M[3];\n\n\tlet res = {\n\t\tmode: 'cubehelix',\n\t\tl: l,\n\t\ts:\n\t\t\tl === 0 || l === 1\n\t\t\t\t? undefined\n\t\t\t\t: Math.sqrt(x * x + y * y) / (M[4] * l * (1 - l))\n\t};\n\n\tif (res.s) res.h = Math.atan2(y, x) * radToDeg - 120;\n\tif (alpha !== undefined) res.alpha = alpha;\n\n\treturn res;\n};\n\nexport default convertRgbToCubehelix;\n","import { degToRad, M } from './constants.js';\n\nconst convertCubehelixToRgb = ({ h, s, l, alpha }) => {\n\tlet res = { mode: 'rgb' };\n\n\th = (h === undefined ? 0 : h + 120) * degToRad;\n\tif (l === undefined) l = 0;\n\n\tlet amp = s === undefined ? 0 : s * l * (1 - l);\n\n\tlet cosh = Math.cos(h);\n\tlet sinh = Math.sin(h);\n\n\tres.r = l + amp * (M[0] * cosh + M[1] * sinh);\n\tres.g = l + amp * (M[2] * cosh + M[3] * sinh);\n\tres.b = l + amp * (M[4] * cosh + M[5] * sinh);\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertCubehelixToRgb;\n","import { getMode } from './modes.js';\nimport converter from './converter.js';\nimport normalizeHue from './util/normalizeHue.js';\n\nconst differenceHueSaturation = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.s || !smp.s) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.s * smp.s) * dH;\n};\n\nconst differenceHueNaive = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tif (Math.abs(smp_h - std_h) > 180) {\n\t\t// todo should this be normalized once again?\n\t\treturn std_h - (smp_h - 360 * Math.sign(smp_h - std_h));\n\t}\n\treturn smp_h - std_h;\n};\n\nconst differenceHueChroma = (std, smp) => {\n\tif (std.h === undefined || smp.h === undefined || !std.c || !smp.c) {\n\t\treturn 0;\n\t}\n\tlet std_h = normalizeHue(std.h);\n\tlet smp_h = normalizeHue(smp.h);\n\tlet dH = Math.sin((((smp_h - std_h + 360) / 2) * Math.PI) / 180);\n\treturn 2 * Math.sqrt(std.c * smp.c) * dH;\n};\n\nconst differenceEuclidean = (mode = 'rgb', weights = [1, 1, 1, 0]) => {\n\tlet def = getMode(mode);\n\tlet channels = def.channels;\n\tlet diffs = def.difference;\n\tlet conv = converter(mode);\n\treturn (std, smp) => {\n\t\tlet ConvStd = conv(std);\n\t\tlet ConvSmp = conv(smp);\n\t\treturn Math.sqrt(\n\t\t\tchannels.reduce((sum, k, idx) => {\n\t\t\t\tlet delta = diffs[k]\n\t\t\t\t\t? diffs[k](ConvStd, ConvSmp)\n\t\t\t\t\t: ConvStd[k] - ConvSmp[k];\n\t\t\t\treturn (\n\t\t\t\t\tsum +\n\t\t\t\t\t(weights[idx] || 0) * Math.pow(isNaN(delta) ? 0 : delta, 2)\n\t\t\t\t);\n\t\t\t}, 0)\n\t\t);\n\t};\n};\n\nconst differenceCie76 = () => differenceEuclidean('lab65');\n\nconst differenceCie94 = (kL = 1, K1 = 0.045, K2 = 0.015) => {\n\tlet lab = converter('lab65');\n\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\t// Extract Lab values, and compute Chroma\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(kL, 2) +\n\t\t\t\tdC2 / Math.pow(1 + K1 * cStd, 2) +\n\t\t\t\tdH2 / Math.pow(1 + K2 * cStd, 2)\n\t\t);\n\t};\n};\n\n/*\n\tCIEDE2000 color difference, original Matlab implementation by Gaurav Sharma\n\tBased on \"The CIEDE2000 Color-Difference Formula: Implementation Notes, Supplementary Test Data, and Mathematical Observations\" \n\tby Gaurav Sharma, Wencheng Wu, Edul N. Dalal in Color Research and Application, vol. 30. No. 1, pp. 21-30, February 2005.\n\thttp://www2.ece.rochester.edu/~gsharma/ciede2000/\n */\n\nconst differenceCiede2000 = (Kl = 1, Kc = 1, Kh = 1) => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\tlet cAvg = (cStd + cSmp) / 2;\n\n\t\tlet G =\n\t\t\t0.5 *\n\t\t\t(1 -\n\t\t\t\tMath.sqrt(\n\t\t\t\t\tMath.pow(cAvg, 7) / (Math.pow(cAvg, 7) + Math.pow(25, 7))\n\t\t\t\t));\n\n\t\tlet apStd = aStd * (1 + G);\n\t\tlet apSmp = aSmp * (1 + G);\n\n\t\tlet cpStd = Math.sqrt(apStd * apStd + bStd * bStd);\n\t\tlet cpSmp = Math.sqrt(apSmp * apSmp + bSmp * bSmp);\n\n\t\tlet hpStd =\n\t\t\tMath.abs(apStd) + Math.abs(bStd) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bStd, apStd);\n\t\thpStd += (hpStd < 0) * 2 * Math.PI;\n\n\t\tlet hpSmp =\n\t\t\tMath.abs(apSmp) + Math.abs(bSmp) === 0\n\t\t\t\t? 0\n\t\t\t\t: Math.atan2(bSmp, apSmp);\n\t\thpSmp += (hpSmp < 0) * 2 * Math.PI;\n\n\t\tlet dL = lSmp - lStd;\n\t\tlet dC = cpSmp - cpStd;\n\n\t\tlet dhp = cpStd * cpSmp === 0 ? 0 : hpSmp - hpStd;\n\t\tdhp -= (dhp > Math.PI) * 2 * Math.PI;\n\t\tdhp += (dhp < -Math.PI) * 2 * Math.PI;\n\n\t\tlet dH = 2 * Math.sqrt(cpStd * cpSmp) * Math.sin(dhp / 2);\n\n\t\tlet Lp = (lStd + lSmp) / 2;\n\t\tlet Cp = (cpStd + cpSmp) / 2;\n\n\t\tlet hp;\n\t\tif (cpStd * cpSmp === 0) {\n\t\t\thp = hpStd + hpSmp;\n\t\t} else {\n\t\t\thp = (hpStd + hpSmp) / 2;\n\t\t\thp -= (Math.abs(hpStd - hpSmp) > Math.PI) * Math.PI;\n\t\t\thp += (hp < 0) * 2 * Math.PI;\n\t\t}\n\n\t\tlet Lpm50 = Math.pow(Lp - 50, 2);\n\t\tlet T =\n\t\t\t1 -\n\t\t\t0.17 * Math.cos(hp - Math.PI / 6) +\n\t\t\t0.24 * Math.cos(2 * hp) +\n\t\t\t0.32 * Math.cos(3 * hp + Math.PI / 30) -\n\t\t\t0.2 * Math.cos(4 * hp - (63 * Math.PI) / 180);\n\n\t\tlet Sl = 1 + (0.015 * Lpm50) / Math.sqrt(20 + Lpm50);\n\t\tlet Sc = 1 + 0.045 * Cp;\n\t\tlet Sh = 1 + 0.015 * Cp * T;\n\n\t\tlet deltaTheta =\n\t\t\t((30 * Math.PI) / 180) *\n\t\t\tMath.exp(-1 * Math.pow(((180 / Math.PI) * hp - 275) / 25, 2));\n\t\tlet Rc =\n\t\t\t2 *\n\t\t\tMath.sqrt(Math.pow(Cp, 7) / (Math.pow(Cp, 7) + Math.pow(25, 7)));\n\n\t\tlet Rt = -1 * Math.sin(2 * deltaTheta) * Rc;\n\n\t\treturn Math.sqrt(\n\t\t\tMath.pow(dL / (Kl * Sl), 2) +\n\t\t\t\tMath.pow(dC / (Kc * Sc), 2) +\n\t\t\t\tMath.pow(dH / (Kh * Sh), 2) +\n\t\t\t\t(((Rt * dC) / (Kc * Sc)) * dH) / (Kh * Sh)\n\t\t);\n\t};\n};\n\n/*\n\tCMC (l:c) difference formula\n\n\tReferences:\n\t\thttps://en.wikipedia.org/wiki/Color_difference#CMC_l:c_(1984)\n\t\thttp://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n */\nconst differenceCmc = (l = 1, c = 1) => {\n\tlet lab = converter('lab65');\n\n\t/*\n\t\tComparte two colors:\n\t\tstd - standard (first) color\n\t\tsmp - sample (second) color\n\t */\n\treturn (std, smp) => {\n\t\t// convert standard color to Lab\n\t\tlet LabStd = lab(std);\n\t\tlet lStd = LabStd.l;\n\t\tlet aStd = LabStd.a;\n\t\tlet bStd = LabStd.b;\n\n\t\t// Obtain hue/chroma\n\t\tlet cStd = Math.sqrt(aStd * aStd + bStd * bStd);\n\t\tlet hStd = Math.atan2(bStd, aStd);\n\t\thStd = hStd + 2 * Math.PI * (hStd < 0);\n\n\t\t// convert sample color to Lab, obtain LCh\n\t\tlet LabSmp = lab(smp);\n\t\tlet lSmp = LabSmp.l;\n\t\tlet aSmp = LabSmp.a;\n\t\tlet bSmp = LabSmp.b;\n\n\t\t// Obtain chroma\n\t\tlet cSmp = Math.sqrt(aSmp * aSmp + bSmp * bSmp);\n\n\t\t// lightness delta squared\n\t\tlet dL2 = Math.pow(lStd - lSmp, 2);\n\n\t\t// chroma delta squared\n\t\tlet dC2 = Math.pow(cStd - cSmp, 2);\n\n\t\t// hue delta squared\n\t\tlet dH2 = Math.pow(aStd - aSmp, 2) + Math.pow(bStd - bSmp, 2) - dC2;\n\n\t\tlet F = Math.sqrt(Math.pow(cStd, 4) / (Math.pow(cStd, 4) + 1900));\n\t\tlet T =\n\t\t\thStd >= (164 / 180) * Math.PI && hStd <= (345 / 180) * Math.PI\n\t\t\t\t? 0.56 + Math.abs(0.2 * Math.cos(hStd + (168 / 180) * Math.PI))\n\t\t\t\t: 0.36 + Math.abs(0.4 * Math.cos(hStd + (35 / 180) * Math.PI));\n\n\t\tlet Sl = lStd < 16 ? 0.511 : (0.040975 * lStd) / (1 + 0.01765 * lStd);\n\t\tlet Sc = (0.0638 * cStd) / (1 + 0.0131 * cStd) + 0.638;\n\t\tlet Sh = Sc * (F * T + 1 - F);\n\n\t\treturn Math.sqrt(\n\t\t\tdL2 / Math.pow(l * Sl, 2) +\n\t\t\t\tdC2 / Math.pow(c * Sc, 2) +\n\t\t\t\tdH2 / Math.pow(Sh, 2)\n\t\t);\n\t};\n};\n\n/*\n\n\tHyAB color difference formula, introduced in:\n\n\t\tAbasi S, Amani Tehran M, Fairchild MD. \n\t\t\"Distance metrics for very large color differences.\"\n\t\tColor Res Appl. 2019; 1–16. \n\t\thttps://doi.org/10.1002/col.22451\n\n\tPDF available at:\n\t\n\t\thttp://markfairchild.org/PDFs/PAP40.pdf\n */\nconst differenceHyab = () => {\n\tlet lab = converter('lab65');\n\treturn (std, smp) => {\n\t\tlet LabStd = lab(std);\n\t\tlet LabSmp = lab(smp);\n\t\tlet dL = LabStd.l - LabSmp.l;\n\t\tlet dA = LabStd.a - LabSmp.a;\n\t\tlet dB = LabStd.b - LabSmp.b;\n\t\treturn Math.abs(dL) + Math.sqrt(dA * dA + dB * dB);\n\t};\n};\n\n/*\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\nconst differenceKotsarenkoRamos = () =>\n\tdifferenceEuclidean('yiq', [0.5053, 0.299, 0.1957]);\n\n/*\n\tΔE_ITP, as defined in Rec. ITU-R BT.2124:\n\n\thttps://www.itu.int/rec/R-REC-BT.2124/en\n*/\nconst differenceItp = () =>\n\tdifferenceEuclidean('itp', [518400, 129600, 518400]);\n\nexport {\n\tdifferenceHueChroma,\n\tdifferenceHueSaturation,\n\tdifferenceHueNaive,\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n};\n","import converter from './converter.js';\nimport { getMode } from './modes.js';\n\nconst averageAngle = val => {\n\t// See: https://en.wikipedia.org/wiki/Mean_of_circular_quantities\n\tlet sum = val.reduce(\n\t\t(sum, val) => {\n\t\t\tif (val !== undefined) {\n\t\t\t\tlet rad = (val * Math.PI) / 180;\n\t\t\t\tsum.sin += Math.sin(rad);\n\t\t\t\tsum.cos += Math.cos(rad);\n\t\t\t}\n\t\t\treturn sum;\n\t\t},\n\t\t{ sin: 0, cos: 0 }\n\t);\n\tlet angle = (Math.atan2(sum.sin, sum.cos) * 180) / Math.PI;\n\treturn angle < 0 ? 360 + angle : angle;\n};\n\nconst averageNumber = val => {\n\tlet a = val.filter(v => v !== undefined);\n\treturn a.length ? a.reduce((sum, v) => sum + v, 0) / a.length : undefined;\n};\n\nconst isfn = o => typeof o === 'function';\n\nfunction average(colors, mode = 'rgb', overrides) {\n\tlet def = getMode(mode);\n\tlet cc = colors.map(converter(mode));\n\treturn def.channels.reduce(\n\t\t(res, ch) => {\n\t\t\tlet arr = cc.map(c => c[ch]).filter(val => val !== undefined);\n\t\t\tif (arr.length) {\n\t\t\t\tlet fn;\n\t\t\t\tif (isfn(overrides)) {\n\t\t\t\t\tfn = overrides;\n\t\t\t\t} else if (overrides && isfn(overrides[ch])) {\n\t\t\t\t\tfn = overrides[ch];\n\t\t\t\t} else if (def.average && isfn(def.average[ch])) {\n\t\t\t\t\tfn = def.average[ch];\n\t\t\t\t} else {\n\t\t\t\t\tfn = averageNumber;\n\t\t\t\t}\n\t\t\t\tres[ch] = fn(arr, ch);\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t{ mode }\n\t);\n}\n\nexport { average, averageAngle, averageNumber };\n","/* \n\tDave Green's Cubehelix\n\t----------------------\n\n\tGreen, D. A., 2011, \"A colour scheme for the display of astronomical intensity images\", \n\tBulletin of the Astronomical Society of India, 39, 289. (2011BASI...39..289G at ADS.) \n\n\thttps://www.mrao.cam.ac.uk/%7Edag/CUBEHELIX/\n\thttps://arxiv.org/pdf/1108.5083.pdf\n\n\tAlthough Cubehelix was defined to be a method to obtain a colour scheme,\n\tit actually contains a definition of a colour space, as identified by \n\tMike Bostock and implemented in D3.js.\n\n\tGreen's paper introduces the following terminology:\n\n\t* \ta `lightness` dimension in the interval [0, 1] \n\t\ton which we interpolate to obtain the colour scheme\n\t*\ta `start` colour that is analogous to a Hue in HSL space\n\t*\ta number of `rotations` around the Hue cylinder.\n\t*\ta `hue` parameter which should more appropriately be called `saturation`\n\t\n\tAs such, the original definition of the Cubehelix scheme is actually an\n\tinterpolation between two colors in the Cubehelix space:\n\n\tH: start \t\t\t\tH: start + 360 * rotations\n\tS: hue \t\t\t->\t\tS: hue\n\tL: 0\t\t\t\t\tL: 1\n\n\tWe can therefore extend the interpolation to any two colors in this space,\n\twith a variable Saturation and a Lightness interval other than the fixed 0 -> 1.\n*/\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport convertRgbToCubehelix from './convertRgbToCubehelix.js';\nimport convertCubehelixToRgb from './convertCubehelixToRgb.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'cubehelix',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--cubehelix'],\n\tserialize: '--cubehelix',\n\n\tranges: {\n\t\th: [0, 360],\n\t\ts: [0, 4.614],\n\t\tl: [0, 1]\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToCubehelix\n\t},\n\n\ttoMode: {\n\t\trgb: convertCubehelixToRgb\n\t},\n\n\tinterpolate: {\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lab-to-lch\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLabToLch = ({ l, a, b, alpha }, mode = 'lch') => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = { mode, l, c };\n\tif (c) res.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLabToLch;\n","/* \n\tReferences: \n\t\t* https://drafts.csswg.org/css-color/#lch-to-lab\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n*/\nconst convertLchToLab = ({ l, c, h, alpha }, mode = 'lab') => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode,\n\t\tl,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLchToLab;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","/*\n\tThe XYZ tristimulus values (white point)\n\tof standard illuminants for the CIE 1931 2° \n\tstandard observer.\n\n\tSee: https://en.wikipedia.org/wiki/Standard_illuminant\n */\n\nexport const D50 = {\n\tX: 0.3457 / 0.3585,\n\tY: 1,\n\tZ: (1 - 0.3457 - 0.3585) / 0.3585\n};\n\nexport const D65 = {\n\tX: 0.3127 / 0.329,\n\tY: 1,\n\tZ: (1 - 0.3127 - 0.329) / 0.329\n};\n\nexport const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLab65ToXyz65 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: fn(fx) * D65.X,\n\t\ty: fn(fy) * D65.Y,\n\t\tz: fn(fz) * D65.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLab65ToXyz65;\n","import convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst convertLab65ToRgb = lab => convertXyz65ToRgb(convertLab65ToXyz65(lab));\n\nexport default convertLab65ToRgb;\n","import { k, e } from '../xyz65/constants.js';\nimport { D65 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz65ToLab65 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D65.X);\n\tlet f1 = f(y / D65.Y);\n\tlet f2 = f(z / D65.Z);\n\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToLab65;\n","import convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\n\nconst convertRgbToLab65 = rgb => {\n\tlet res = convertXyz65ToLab65(convertRgbToXyz65(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab65;\n","export const kE = 1;\nexport const kCH = 1;\nexport const θ = (26 / 180) * Math.PI;\nexport const cosθ = Math.cos(θ);\nexport const sinθ = Math.sin(θ);\nexport const factor = 100 / Math.log(139 / 100); // ~ 303.67\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\n\n/*\n\tConvert DIN99o LCh to CIELab D65\n\t--------------------------------\n */\n\nconst convertDlchToLab65 = ({ l, c, h, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (c === undefined) c = 0;\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'lab65',\n\t\tl: (Math.exp((l * kE) / factor) - 1) / 0.0039\n\t};\n\n\tlet G = (Math.exp(0.0435 * c * kCH * kE) - 1) / 0.075;\n\tlet e = G * Math.cos((h / 180) * Math.PI - θ);\n\tlet f = G * Math.sin((h / 180) * Math.PI - θ);\n\tres.a = e * cosθ - (f / 0.83) * sinθ;\n\tres.b = e * sinθ + (f / 0.83) * cosθ;\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertDlchToLab65;\n","import { kCH, kE, sinθ, cosθ, θ, factor } from './constants.js';\nimport normalizeHue from '../util/normalizeHue.js';\n\n/*\n\tConvert CIELab D65 to DIN99o LCh\n\t================================\n */\n\nconst convertLab65ToDlch = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet e = a * cosθ + b * sinθ;\n\tlet f = 0.83 * (b * cosθ - a * sinθ);\n\tlet G = Math.sqrt(e * e + f * f);\n\tlet res = {\n\t\tmode: 'dlch',\n\t\tl: (factor / kE) * Math.log(1 + 0.0039 * l),\n\t\tc: Math.log(1 + 0.075 * G) / (0.0435 * kCH * kE)\n\t};\n\n\tif (res.c) {\n\t\tres.h = normalizeHue(((Math.atan2(f, e) + θ) / Math.PI) * 180);\n\t}\n\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertLab65ToDlch;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport convertDlchToLab65 from '../dlch/convertDlchToLab65.js';\nimport convertLab65ToDlch from '../dlch/convertLab65ToDlch.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst convertDlabToLab65 = c => convertDlchToLab65(convertLabToLch(c, 'dlch'));\nconst convertLab65ToDlab = c => convertLchToLab(convertLab65ToDlch(c), 'dlab');\n\nconst definition = {\n\tmode: 'dlab',\n\n\tparse: ['--din99o-lab'],\n\tserialize: '--din99o-lab',\n\n\ttoMode: {\n\t\tlab65: convertDlabToLab65,\n\t\trgb: c => convertLab65ToRgb(convertDlabToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlab,\n\t\trgb: c => convertLab65ToDlab(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-40.09, 45.501],\n\t\tb: [-40.469, 44.344]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertDlchToLab65 from './convertDlchToLab65.js';\nimport convertLab65ToDlch from './convertLab65ToDlch.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'dlch',\n\n\tparse: ['--din99o-lch'],\n\tserialize: '--din99o-lch',\n\n\ttoMode: {\n\t\tlab65: convertDlchToLab65,\n\t\tdlab: c => convertLchToLab(c, 'dlab'),\n\t\trgb: c => convertLab65ToRgb(convertDlchToLab65(c))\n\t},\n\n\tfromMode: {\n\t\tlab65: convertLab65ToDlch,\n\t\tdlab: c => convertLabToLch(c, 'dlch'),\n\t\trgb: c => convertLab65ToDlch(convertRgbToLab65(c))\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 51.484],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tc: interpolatorLinear,\n\t\th: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupHueShorter\n\t\t},\n\t\talpha: {\n\t\t\tuse: interpolatorLinear,\n\t\t\tfixup: fixupAlpha\n\t\t}\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsiToRgb({ h, s, i, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (i === undefined) i = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 - s)\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = {\n\t\t\t\tr: i * (1 - s),\n\t\t\t\tg: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * (3 / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = {\n\t\t\t\tr: i * (1 + s * (3 / (2 - f) - 1)),\n\t\t\t\tg: i * (1 - s),\n\t\t\t\tb: i * (1 + s * ((3 * (1 - f)) / (2 - f) - 1))\n\t\t\t};\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: i * (1 - s), g: i * (1 - s), b: i * (1 - s) };\n\t}\n\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsi({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsi',\n\t\ts: r + g + b === 0 ? 0 : 1 - (3 * m) / (r + g + b),\n\t\ti: (r + g + b) / 3\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsiToRgb from './convertHsiToRgb.js';\nimport convertRgbToHsi from './convertRgbToHsi.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsi',\n\n\ttoMode: {\n\t\trgb: convertHsiToRgb\n\t},\n\n\tparse: ['--hsi'],\n\tserialize: '--hsi',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsi\n\t},\n\n\tchannels: ['h', 's', 'i', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHslToRgb({ h, s, l, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (l === undefined) l = 0;\n\tlet m1 = l + s * (l < 0.5 ? l : 1 - l);\n\tlet m2 = m1 - (m1 - l) * 2 * Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: m1, g: m2, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: m2, g: m1, b: 2 * l - m1 };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: 2 * l - m1, g: m1, b: m2 };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: 2 * l - m1, g: m2, b: m1 };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: m2, g: 2 * l - m1, b: m1 };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: m1, g: 2 * l - m1, b: m2 };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: 2 * l - m1, g: 2 * l - m1, b: 2 * l - m1 };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsl({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsl',\n\t\ts: M === m ? 0 : (M - m) / (1 - Math.abs(M + m - 1)),\n\t\tl: 0.5 * (M + m)\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","const hueToDeg = (val, unit) => {\n\tswitch (unit) {\n\t\tcase 'deg':\n\t\t\treturn +val;\n\t\tcase 'rad':\n\t\t\treturn (val / Math.PI) * 180;\n\t\tcase 'grad':\n\t\t\treturn (val / 10) * 9;\n\t\tcase 'turn':\n\t\t\treturn val * 360;\n\t}\n};\n\nexport default hueToDeg;\n","import hueToDeg from '../util/hue.js';\nimport { hue, per, num_per, c } from '../util/regex.js';\n\n/*\n\thsl() regular expressions for legacy format\n\tReference: https://drafts.csswg.org/css-color/#the-hsl-notation\n */\nconst hsl_old = new RegExp(\n\t`^hsla?\\\\(\\\\s*${hue}${c}${per}${c}${per}\\\\s*(?:,\\\\s*${num_per}\\\\s*)?\\\\)$`\n);\n\nconst parseHslLegacy = color => {\n\tlet match = color.match(hsl_old);\n\tif (!match) return;\n\tlet res = { mode: 'hsl' };\n\n\tif (match[3] !== undefined) {\n\t\tres.h = +match[3];\n\t} else if (match[1] !== undefined && match[2] !== undefined) {\n\t\tres.h = hueToDeg(match[1], match[2]);\n\t}\n\n\tif (match[4] !== undefined) {\n\t\tres.s = Math.min(Math.max(0, match[4] / 100), 1);\n\t}\n\n\tif (match[5] !== undefined) {\n\t\tres.l = Math.min(Math.max(0, match[5] / 100), 1);\n\t}\n\n\tif (match[6] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, match[6] / 100));\n\t} else if (match[7] !== undefined) {\n\t\tres.alpha = Math.max(0, Math.min(1, +match[7]));\n\t}\n\treturn res;\n};\n\nexport default parseHslLegacy;\n","import { Tok } from '../parse.js';\n\nfunction parseHsl(color, parsed) {\n\tif (!parsed || (parsed[0] !== 'hsl' && parsed[0] !== 'hsla')) {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hsl' };\n\tconst [, h, s, l, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (s.type !== Tok.None) {\n\t\tif (s.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.s = s.value / 100;\n\t}\n\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = l.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseHsl;\n","import convertHslToRgb from './convertHslToRgb.js';\nimport convertRgbToHsl from './convertRgbToHsl.js';\nimport parseHslLegacy from './parseHslLegacy.js';\nimport parseHsl from './parseHsl.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsl',\n\n\ttoMode: {\n\t\trgb: convertHslToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHsl\n\t},\n\n\tchannels: ['h', 's', 'l', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHsl, parseHslLegacy],\n\tserialize: c =>\n\t\t`hsl(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.s !== undefined ? c.s * 100 + '%' : 'none'\n\t\t} ${c.l !== undefined ? c.l * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\n// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n\nexport default function convertHsvToRgb({ h, s, v, alpha }) {\n\th = normalizeHue(h !== undefined ? h : 0);\n\tif (s === undefined) s = 0;\n\tif (v === undefined) v = 0;\n\tlet f = Math.abs(((h / 60) % 2) - 1);\n\tlet res;\n\tswitch (Math.floor(h / 60)) {\n\t\tcase 0:\n\t\t\tres = { r: v, g: v * (1 - s * f), b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tres = { r: v * (1 - s * f), g: v, b: v * (1 - s) };\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tres = { r: v * (1 - s), g: v, b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s * f), b: v };\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tres = { r: v * (1 - s * f), g: v * (1 - s), b: v };\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tres = { r: v, g: v * (1 - s), b: v * (1 - s * f) };\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tres = { r: v * (1 - s), g: v * (1 - s), b: v * (1 - s) };\n\t}\n\tres.mode = 'rgb';\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","// Based on: https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\nexport default function convertRgbToHsv({ r, g, b, alpha }) {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tlet M = Math.max(r, g, b),\n\t\tm = Math.min(r, g, b);\n\tlet res = {\n\t\tmode: 'hsv',\n\t\ts: M === 0 ? 0 : 1 - m / M,\n\t\tv: M\n\t};\n\tif (M - m !== 0)\n\t\tres.h =\n\t\t\t(M === r\n\t\t\t\t? (g - b) / (M - m) + (g < b) * 6\n\t\t\t\t: M === g\n\t\t\t\t? (b - r) / (M - m) + 2\n\t\t\t\t: (r - g) / (M - m) + 4) * 60;\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n}\n","import convertHsvToRgb from './convertHsvToRgb.js';\nimport convertRgbToHsv from './convertRgbToHsv.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueSaturation } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hsv',\n\n\ttoMode: {\n\t\trgb: convertHsvToRgb\n\t},\n\n\tparse: ['--hsv'],\n\tserialize: '--hsv',\n\n\tfromMode: {\n\t\trgb: convertRgbToHsv\n\t},\n\n\tchannels: ['h', 's', 'v', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\ts: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueSaturation\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\tHWB to RGB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertHsvToRgb from '../hsv/convertHsvToRgb.js';\n\nexport default function convertHwbToRgb({ h, w, b, alpha }) {\n\tif (w === undefined) w = 0;\n\tif (b === undefined) b = 0;\n\t// normalize w + b to 1\n\tif (w + b > 1) {\n\t\tlet s = w + b;\n\t\tw /= s;\n\t\tb /= s;\n\t}\n\treturn convertHsvToRgb({\n\t\th: h,\n\t\ts: b === 1 ? 1 : 1 - w / (1 - b),\n\t\tv: 1 - b,\n\t\talpha: alpha\n\t});\n}\n","/*\n\tRGB to HWB converter\n\t--------------------\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#hwb-to-rgb\n\t\t* https://en.wikipedia.org/wiki/HWB_color_model\n\t\t* http://alvyray.com/Papers/CG/HWB_JGTv208.pdf\n */\n\nimport convertRgbToHsv from '../hsv/convertRgbToHsv.js';\n\nexport default function convertRgbToHwb(rgba) {\n\tlet hsv = convertRgbToHsv(rgba);\n\tif (hsv === undefined) return undefined;\n\tlet s = hsv.s !== undefined ? hsv.s : 0;\n\tlet v = hsv.v !== undefined ? hsv.v : 0;\n\tlet res = {\n\t\tmode: 'hwb',\n\t\tw: (1 - s) * v,\n\t\tb: 1 - v\n\t};\n\tif (hsv.h !== undefined) res.h = hsv.h;\n\tif (hsv.alpha !== undefined) res.alpha = hsv.alpha;\n\treturn res;\n}\n","import { Tok } from '../parse.js';\n\nfunction ParseHwb(color, parsed) {\n\tif (!parsed || parsed[0] !== 'hwb') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'hwb' };\n\tconst [, h, w, b, alpha] = parsed;\n\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\n\tif (w.type !== Tok.None) {\n\t\tif (w.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.w = w.value / 100;\n\t}\n\n\tif (b.type !== Tok.None) {\n\t\tif (b.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.b = b.value / 100;\n\t}\n\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default ParseHwb;\n","import convertHwbToRgb from './convertHwbToRgb.js';\nimport convertRgbToHwb from './convertRgbToHwb.js';\nimport parseHwb from './parseHwb.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueNaive } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'hwb',\n\n\ttoMode: {\n\t\trgb: convertHwbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToHwb\n\t},\n\n\tchannels: ['h', 'w', 'b', 'alpha'],\n\n\tranges: {\n\t\th: [0, 360]\n\t},\n\n\tgamut: 'rgb',\n\n\tparse: [parseHwb],\n\tserialize: c =>\n\t\t`hwb(${c.h !== undefined ? c.h : 'none'} ${\n\t\t\tc.w !== undefined ? c.w * 100 + '%' : 'none'\n\t\t} ${c.b !== undefined ? c.b * 100 + '%' : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tw: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueNaive\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","/*\n\thttps://en.wikipedia.org/wiki/Transfer_functions_in_imaging\n*/\n\nexport const M1 = 0.1593017578125;\nexport const M2 = 78.84375;\nexport const C1 = 0.8359375;\nexport const C2 = 18.8515625;\nexport const C3 = 18.6875;\n\n/*\n\tPerceptual Quantizer, as defined in Rec. BT 2100-2 (2018)\n\n\t* https://www.itu.int/rec/R-REC-BT.2100-2-201807-I/en\n\t* https://en.wikipedia.org/wiki/Perceptual_quantizer\n*/\n\n/* PQ EOTF, defined for `v` in [0,1]. */\nexport function transferPqDecode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v, 1 / M2);\n\treturn 1e4 * Math.pow(Math.max(0, c - C1) / (C2 - C3 * c), 1 / M1);\n}\n\n/* PQ EOTF^-1, defined for `v` in [0, 1e4]. */\nexport function transferPqEncode(v) {\n\tif (v < 0) return 0;\n\tconst c = Math.pow(v / 1e4, M1);\n\treturn Math.pow((C1 + C2 * c) / (1 + C3 * c), M2);\n}\n","import { YW } from '../hdr/constants.js';\nimport { transferPqDecode } from '../hdr/transfer.js';\n\nconst toRel = c => Math.max(c / YW, 0);\n\nconst convertItpToXyz65 = ({ i, t, p, alpha }) => {\n\tif (i === undefined) i = 0;\n\tif (t === undefined) t = 0;\n\tif (p === undefined) p = 0;\n\n\tconst l = transferPqDecode(\n\t\ti + 0.008609037037932761 * t + 0.11102962500302593 * p\n\t);\n\tconst m = transferPqDecode(\n\t\ti - 0.00860903703793275 * t - 0.11102962500302599 * p\n\t);\n\tconst s = transferPqDecode(\n\t\ti + 0.5600313357106791 * t - 0.32062717498731885 * p\n\t);\n\n\tconst res = {\n\t\tmode: 'xyz65',\n\t\tx: toRel(\n\t\t\t2.0701522183894219 * l -\n\t\t\t\t1.3263473389671556 * m +\n\t\t\t\t0.2066510476294051 * s\n\t\t),\n\t\ty: toRel(\n\t\t\t0.3647385209748074 * l +\n\t\t\t\t0.680566024947227 * m -\n\t\t\t\t0.0453045459220346 * s\n\t\t),\n\t\tz: toRel(\n\t\t\t-0.049747207535812 * l -\n\t\t\t\t0.0492609666966138 * m +\n\t\t\t\t1.1880659249923042 * s\n\t\t)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertItpToXyz65;\n","import { YW } from '../hdr/constants.js';\nimport { transferPqEncode } from '../hdr/transfer.js';\n\nconst toAbs = (c = 0) => Math.max(c * YW, 0);\n\nconst convertXyz65ToItp = ({ x, y, z, alpha }) => {\n\tconst absX = toAbs(x);\n\tconst absY = toAbs(y);\n\tconst absZ = toAbs(z);\n\tconst l = transferPqEncode(\n\t\t0.3592832590121217 * absX +\n\t\t\t0.6976051147779502 * absY -\n\t\t\t0.0358915932320289 * absZ\n\t);\n\tconst m = transferPqEncode(\n\t\t-0.1920808463704995 * absX +\n\t\t\t1.1004767970374323 * absY +\n\t\t\t0.0753748658519118 * absZ\n\t);\n\tconst s = transferPqEncode(\n\t\t0.0070797844607477 * absX +\n\t\t\t0.0748396662186366 * absY +\n\t\t\t0.8433265453898765 * absZ\n\t);\n\n\tconst i = 0.5 * l + 0.5 * m;\n\tconst t = 1.61376953125 * l - 3.323486328125 * m + 1.709716796875 * s;\n\tconst p = 4.378173828125 * l - 4.24560546875 * m - 0.132568359375 * s;\n\n\tconst res = { mode: 'itp', i, t, p };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToItp;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertItpToXyz65 from './convertItpToXyz65.js';\nimport convertXyz65ToItp from './convertXyz65ToItp.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\n/*\n ICtCp (or ITP) color space, as defined in ITU-R Recommendation BT.2100.\n\n ICtCp is drafted to be supported in CSS within\n [CSS Color HDR Module Level 1](https://drafts.csswg.org/css-color-hdr/#ICtCp) spec.\n*/\n\nconst definition = {\n\tmode: 'itp',\n\tchannels: ['i', 't', 'p', 'alpha'],\n\tparse: ['--ictcp'],\n\tserialize: '--ictcp',\n\n\ttoMode: {\n\t\txyz65: convertItpToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertItpToXyz65(color))\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToItp,\n\t\trgb: color => convertXyz65ToItp(convertRgbToXyz65(color))\n\t},\n\n\tranges: {\n\t\ti: [0, 0.581],\n\t\tt: [-0.369, 0.272],\n\t\tp: [-0.164, 0.331]\n\t},\n\n\tinterpolate: {\n\t\ti: interpolatorLinear,\n\t\tt: interpolatorLinear,\n\t\tp: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqEncode = v => {\n\tif (v < 0) return 0;\n\tlet vn = Math.pow(v / 10000, n);\n\treturn Math.pow((C1 + C2 * vn) / (1 + C3 * vn), p);\n};\n\n// Convert to Absolute XYZ\nconst abs = (v = 0) => Math.max(v * 203, 0);\n\nconst convertXyz65ToJab = ({ x, y, z, alpha }) => {\n\tx = abs(x);\n\ty = abs(y);\n\tz = abs(z);\n\n\tlet xp = 1.15 * x - 0.15 * z;\n\tlet yp = 0.66 * y + 0.34 * x;\n\n\tlet l = jabPqEncode(0.41478972 * xp + 0.579999 * yp + 0.014648 * z);\n\tlet m = jabPqEncode(-0.20151 * xp + 1.120649 * yp + 0.0531008 * z);\n\tlet s = jabPqEncode(-0.0166008 * xp + 0.2648 * yp + 0.6684799 * z);\n\n\tlet i = (l + m) / 2;\n\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj: (0.44 * i) / (1 - 0.56 * i) - d0,\n\t\ta: 3.524 * l - 4.066708 * m + 0.542708 * s,\n\t\tb: 0.199076 * l + 1.096799 * m - 1.295875 * s\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz65ToJab;\n","import { M1 as n, C1, C2, C3 } from '../hdr/transfer.js';\nconst p = 134.03437499999998; // = 1.7 * 2523 / Math.pow(2, 5);\nconst d0 = 1.6295499532821566e-11;\n\n/* \n\tThe encoding function is derived from Perceptual Quantizer.\n*/\nconst jabPqDecode = v => {\n\tif (v < 0) return 0;\n\tlet vp = Math.pow(v, 1 / p);\n\treturn 10000 * Math.pow((C1 - vp) / (C3 * vp - C2), 1 / n);\n};\n\nconst rel = v => v / 203;\n\nconst convertJabToXyz65 = ({ j, a, b, alpha }) => {\n\tif (j === undefined) j = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet i = (j + d0) / (0.44 + 0.56 * (j + d0));\n\n\tlet l = jabPqDecode(i + 0.13860504 * a + 0.058047316 * b);\n\tlet m = jabPqDecode(i - 0.13860504 * a - 0.058047316 * b);\n\tlet s = jabPqDecode(i - 0.096019242 * a - 0.8118919 * b);\n\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx: rel(\n\t\t\t1.661373024652174 * l -\n\t\t\t\t0.914523081304348 * m +\n\t\t\t\t0.23136208173913045 * s\n\t\t),\n\t\ty: rel(\n\t\t\t-0.3250758611844533 * l +\n\t\t\t\t1.571847026732543 * m -\n\t\t\t\t0.21825383453227928 * s\n\t\t),\n\t\tz: rel(-0.090982811 * l - 0.31272829 * m + 1.5227666 * s)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertJabToXyz65;\n","/*\n\tConvert sRGB to JzAzBz.\n\n\tFor achromatic sRGB colors, adjust the equivalent JzAzBz color\n\tto be achromatic as well, insteading of having a very slight chroma.\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\n\nconst convertRgbToJab = rgb => {\n\tlet res = convertXyz65ToJab(convertRgbToXyz65(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToJab;\n","import convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\n\nconst convertJabToRgb = color => convertXyz65ToRgb(convertJabToXyz65(color));\n\nexport default convertJabToRgb;\n","/*\n\tThe JzAzBz color space.\n\n\tBased on:\n\n\tMuhammad Safdar, Guihua Cui, Youn Jin Kim, and Ming Ronnier Luo, \n\t\"Perceptually uniform color space for image signals \n\tincluding high dynamic range and wide gamut,\" \n\tOpt. Express 25, 15131-15151 (2017) \n\n\thttps://doi.org/10.1364/OE.25.015131\n */\n\nimport convertXyz65ToJab from './convertXyz65ToJab.js';\nimport convertJabToXyz65 from './convertJabToXyz65.js';\nimport convertRgbToJab from './convertRgbToJab.js';\nimport convertJabToRgb from './convertJabToRgb.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'jab',\n\tchannels: ['j', 'a', 'b', 'alpha'],\n\n\tparse: ['--jzazbz'],\n\tserialize: '--jzazbz',\n\n\tfromMode: {\n\t\trgb: convertRgbToJab,\n\t\txyz65: convertXyz65ToJab\n\t},\n\n\ttoMode: {\n\t\trgb: convertJabToRgb,\n\t\txyz65: convertJabToXyz65\n\t},\n\n\tranges: {\n\t\tj: [0, 0.222],\n\t\ta: [-0.109, 0.129],\n\t\tb: [-0.185, 0.134]\n\t},\n\n\tinterpolate: {\n\t\tj: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertJabToJch = ({ j, a, b, alpha }) => {\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet c = Math.sqrt(a * a + b * b);\n\tlet res = {\n\t\tmode: 'jch',\n\t\tj,\n\t\tc\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertJabToJch;\n","const convertJchToJab = ({ j, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'jab',\n\t\tj,\n\t\ta: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tb: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertJchToJab;\n","import convertJabToJch from './convertJabToJch.js';\nimport convertJchToJab from './convertJchToJab.js';\nimport convertJabToRgb from '../jab/convertJabToRgb.js';\nimport convertRgbToJab from '../jab/convertRgbToJab.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'jch',\n\n\tparse: ['--jzczhz'],\n\tserialize: '--jzczhz',\n\n\ttoMode: {\n\t\tjab: convertJchToJab,\n\t\trgb: c => convertJabToRgb(convertJchToJab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertJabToJch(convertRgbToJab(c)),\n\t\tjab: convertJabToJch\n\t},\n\n\tchannels: ['j', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tj: [0, 0.221],\n\t\tc: [0, 0.19],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tj: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","export const k = Math.pow(29, 3) / Math.pow(3, 3);\nexport const e = Math.pow(6, 3) / Math.pow(29, 3);\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nlet fn = v => (Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k);\n\nconst convertLabToXyz50 = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\tlet fy = (l + 16) / 116;\n\tlet fx = a / 500 + fy;\n\tlet fz = fy - b / 200;\n\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx: fn(fx) * D50.X,\n\t\ty: fn(fy) * D50.Y,\n\t\tz: fn(fz) * D50.Z\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLabToXyz50;\n","/*\n\tCIE XYZ D50 values to sRGB.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz50ToRgb = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb({\n\t\tr:\n\t\t\tx * 3.1341359569958707 -\n\t\t\ty * 1.6173863321612538 -\n\t\t\t0.4906619460083532 * z,\n\t\tg:\n\t\t\tx * -0.978795502912089 +\n\t\t\ty * 1.916254567259524 +\n\t\t\t0.03344273116131949 * z,\n\t\tb:\n\t\t\tx * 0.07195537988411677 -\n\t\t\ty * 0.2289768264158322 +\n\t\t\t1.405386058324125 * z\n\t});\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToRgb;\n","import convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\n\nconst convertLabToRgb = lab => convertXyz50ToRgb(convertLabToXyz50(lab));\n\nexport default convertLabToRgb;\n","/*\n\tConvert sRGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertRgbToXyz50 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.436065742824811 * r +\n\t\t\t0.3851514688337912 * g +\n\t\t\t0.14307845442264197 * b,\n\t\ty:\n\t\t\t0.22249319175623702 * r +\n\t\t\t0.7168870538238823 * g +\n\t\t\t0.06061979053616537 * b,\n\t\tz:\n\t\t\t0.013923904500943465 * r +\n\t\t\t0.09708128566574634 * g +\n\t\t\t0.7140993584005155 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToXyz50;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nconst f = value => (value > e ? Math.cbrt(value) : (k * value + 16) / 116);\n\nconst convertXyz50ToLab = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet f0 = f(x / D50.X);\n\tlet f1 = f(y / D50.Y);\n\tlet f2 = f(z / D50.Z);\n\n\tlet res = {\n\t\tmode: 'lab',\n\t\tl: 116 * f1 - 16,\n\t\ta: 500 * (f0 - f1),\n\t\tb: 200 * (f1 - f2)\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLab;\n","import convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\n\nconst convertRgbToLab = rgb => {\n\tlet res = convertXyz50ToLab(convertRgbToXyz50(rgb));\n\n\t// Fixes achromatic RGB colors having a _slight_ chroma due to floating-point errors\n\t// and approximated computations in sRGB <-> CIELab.\n\t// See: https://github.com/d3/d3-color/pull/46\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToLab;\n","import { Tok } from '../parse.js';\n\nfunction parseLab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 125) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 125) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLab;\n","import convertLabToRgb from './convertLabToRgb.js';\nimport convertLabToXyz50 from './convertLabToXyz50.js';\nimport convertRgbToLab from './convertRgbToLab.js';\nimport convertXyz50ToLab from './convertXyz50ToLab.js';\nimport parseLab from './parseLab.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'lab',\n\n\ttoMode: {\n\t\txyz50: convertLabToXyz50,\n\t\trgb: convertLabToRgb\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLab,\n\t\trgb: convertRgbToLab\n\t},\n\n\tchannels: ['l', 'a', 'b', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t},\n\n\tparse: [parseLab],\n\tserialize: c =>\n\t\t`lab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\ta: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","import convertLab65ToRgb from './convertLab65ToRgb.js';\nimport convertLab65ToXyz65 from './convertLab65ToXyz65.js';\nimport convertRgbToLab65 from './convertRgbToLab65.js';\nimport convertXyz65ToLab65 from './convertXyz65ToLab65.js';\nimport lab from '../lab/definition.js';\n\nconst definition = {\n\t...lab,\n\tmode: 'lab65',\n\n\tparse: ['--lab-d65'],\n\tserialize: '--lab-d65',\n\n\ttoMode: {\n\t\txyz65: convertLab65ToXyz65,\n\t\trgb: convertLab65ToRgb\n\t},\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToLab65,\n\t\trgb: convertRgbToLab65\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\ta: [-125, 125],\n\t\tb: [-125, 125]\n\t}\n};\n\nexport default definition;\n","import { Tok } from '../parse.js';\n\nfunction parseLch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'lch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'lch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(Math.max(0, l.value), 100);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 150) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseLch;\n","import convertLabToLch from './convertLabToLch.js';\nimport convertLchToLab from './convertLchToLab.js';\nimport convertLabToRgb from '../lab/convertLabToRgb.js';\nimport convertRgbToLab from '../lab/convertRgbToLab.js';\nimport parseLch from './parseLch.js';\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst definition = {\n\tmode: 'lch',\n\n\ttoMode: {\n\t\tlab: convertLchToLab,\n\t\trgb: c => convertLabToRgb(convertLchToLab(c))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab(c)),\n\t\tlab: convertLabToLch\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t},\n\n\tparse: [parseLch],\n\tserialize: c =>\n\t\t`lch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertLab65ToRgb from '../lab65/convertLab65ToRgb.js';\nimport convertRgbToLab65 from '../lab65/convertRgbToLab65.js';\nimport lch from '../lch/definition.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'lch65',\n\n\tparse: ['--lch-d65'],\n\tserialize: '--lch-d65',\n\n\ttoMode: {\n\t\tlab65: c => convertLchToLab(c, 'lab65'),\n\t\trgb: c => convertLab65ToRgb(convertLchToLab(c, 'lab65'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToLab65(c), 'lch65'),\n\t\tlab65: c => convertLabToLch(c, 'lch65')\n\t},\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 150],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","import normalizeHue from '../util/normalizeHue.js';\n\nconst convertLuvToLchuv = ({ l, u, v, alpha }) => {\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\tlet c = Math.sqrt(u * u + v * v);\n\tlet res = {\n\t\tmode: 'lchuv',\n\t\tl: l,\n\t\tc: c\n\t};\n\tif (c) {\n\t\tres.h = normalizeHue((Math.atan2(v, u) * 180) / Math.PI);\n\t}\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLuvToLchuv;\n","const convertLchuvToLuv = ({ l, c, h, alpha }) => {\n\tif (h === undefined) h = 0;\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl: l,\n\t\tu: c ? c * Math.cos((h / 180) * Math.PI) : 0,\n\t\tv: c ? c * Math.sin((h / 180) * Math.PI) : 0\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertLchuvToLuv;\n","import { k, e } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst l_fn = value => (value <= e ? k * value : 116 * Math.cbrt(value) - 16);\n\nconst convertXyz50ToLuv = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet l = l_fn(y / D50.Y);\n\tlet u = u_fn(x, y, z);\n\tlet v = v_fn(x, y, z);\n\n\t// guard against NaNs produced by `xyz(0 0 0)` black\n\tif (!isFinite(u) || !isFinite(v)) {\n\t\tl = u = v = 0;\n\t} else {\n\t\tu = 13 * l * (u - un);\n\t\tv = 13 * l * (v - vn);\n\t}\n\n\tlet res = {\n\t\tmode: 'luv',\n\t\tl,\n\t\tu,\n\t\tv\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertXyz50ToLuv;\n","import { k } from '../xyz50/constants.js';\nimport { D50 } from '../constants.js';\n\nexport const u_fn = (x, y, z) => (4 * x) / (x + 15 * y + 3 * z);\nexport const v_fn = (x, y, z) => (9 * y) / (x + 15 * y + 3 * z);\n\nexport const un = u_fn(D50.X, D50.Y, D50.Z);\nexport const vn = v_fn(D50.X, D50.Y, D50.Z);\n\nconst convertLuvToXyz50 = ({ l, u, v, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (l === 0) {\n\t\treturn { mode: 'xyz50', x: 0, y: 0, z: 0 };\n\t}\n\n\tif (u === undefined) u = 0;\n\tif (v === undefined) v = 0;\n\n\tlet up = u / (13 * l) + un;\n\tlet vp = v / (13 * l) + vn;\n\tlet y = D50.Y * (l <= 8 ? l / k : Math.pow((l + 16) / 116, 3));\n\tlet x = (y * (9 * up)) / (4 * vp);\n\tlet z = (y * (12 - 3 * up - 20 * vp)) / (4 * vp);\n\n\tlet res = { mode: 'xyz50', x, y, z };\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLuvToXyz50;\n","/*\n\tCIELChuv color space\n\t--------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertLuvToLchuv from './convertLuvToLchuv.js';\nimport convertLchuvToLuv from './convertLchuvToLuv.js';\nimport convertXyz50ToLuv from '../luv/convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from '../luv/convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { fixupHueShorter } from '../fixup/hue.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { differenceHueChroma } from '../difference.js';\nimport { averageAngle } from '../average.js';\n\nconst convertRgbToLchuv = rgb =>\n\tconvertLuvToLchuv(convertXyz50ToLuv(convertRgbToXyz50(rgb)));\nconst convertLchuvToRgb = lchuv =>\n\tconvertXyz50ToRgb(convertLuvToXyz50(convertLchuvToLuv(lchuv)));\n\nconst definition = {\n\tmode: 'lchuv',\n\n\ttoMode: {\n\t\tluv: convertLchuvToLuv,\n\t\trgb: convertLchuvToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLchuv,\n\t\tluv: convertLuvToLchuv\n\t},\n\n\tchannels: ['l', 'c', 'h', 'alpha'],\n\n\tparse: ['--lchuv'],\n\tserialize: '--lchuv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tc: [0, 176.956],\n\t\th: [0, 360]\n\t},\n\n\tinterpolate: {\n\t\th: { use: interpolatorLinear, fixup: fixupHueShorter },\n\t\tc: interpolatorLinear,\n\t\tl: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t},\n\n\tdifference: {\n\t\th: differenceHueChroma\n\t},\n\n\taverage: {\n\t\th: averageAngle\n\t}\n};\n\nexport default definition;\n","import rgb from '../rgb/definition.js';\nimport convertRgbToLrgb from './convertRgbToLrgb.js';\nimport convertLrgbToRgb from './convertLrgbToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'lrgb',\n\n\ttoMode: {\n\t\trgb: convertLrgbToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToLrgb\n\t},\n\n\tparse: ['srgb-linear'],\n\tserialize: 'srgb-linear'\n};\n\nexport default definition;\n","/*\n\tCIELUV color space\n\t------------------\n\n\tReference: \n\n\t\thttps://en.wikipedia.org/wiki/CIELUV\n */\n\nimport convertXyz50ToLuv from './convertXyz50ToLuv.js';\nimport convertLuvToXyz50 from './convertLuvToXyz50.js';\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'luv',\n\n\ttoMode: {\n\t\txyz50: convertLuvToXyz50,\n\t\trgb: luv => convertXyz50ToRgb(convertLuvToXyz50(luv))\n\t},\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToLuv,\n\t\trgb: rgb => convertXyz50ToLuv(convertRgbToXyz50(rgb))\n\t},\n\n\tchannels: ['l', 'u', 'v', 'alpha'],\n\n\tparse: ['--luv'],\n\tserialize: '--luv',\n\n\tranges: {\n\t\tl: [0, 100],\n\t\tu: [-84.936, 175.042],\n\t\tv: [-125.882, 87.243]\n\t},\n\n\tinterpolate: {\n\t\tl: interpolatorLinear,\n\t\tu: interpolatorLinear,\n\t\tv: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","const convertLrgbToOklab = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.cbrt(\n\t\t0.412221469470763 * r + 0.5363325372617348 * g + 0.0514459932675022 * b\n\t);\n\tlet M = Math.cbrt(\n\t\t0.2119034958178252 * r + 0.6806995506452344 * g + 0.1073969535369406 * b\n\t);\n\tlet S = Math.cbrt(\n\t\t0.0883024591900564 * r + 0.2817188391361215 * g + 0.6299787016738222 * b\n\t);\n\n\tlet res = {\n\t\tmode: 'oklab',\n\t\tl:\n\t\t\t0.210454268309314 * L +\n\t\t\t0.7936177747023054 * M -\n\t\t\t0.0040720430116193 * S,\n\t\ta:\n\t\t\t1.9779985324311684 * L -\n\t\t\t2.4285922420485799 * M +\n\t\t\t0.450593709617411 * S,\n\t\tb:\n\t\t\t0.0259040424655478 * L +\n\t\t\t0.7827717124575296 * M -\n\t\t\t0.8086757549230774 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertLrgbToOklab;\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\n\nconst convertRgbToOklab = rgb => {\n\tlet res = convertLrgbToOklab(convertRgbToLrgb(rgb));\n\tif (rgb.r === rgb.b && rgb.b === rgb.g) {\n\t\tres.a = res.b = 0;\n\t}\n\treturn res;\n};\n\nexport default convertRgbToOklab;\n","const convertOklabToLrgb = ({ l, a, b, alpha }) => {\n\tif (l === undefined) l = 0;\n\tif (a === undefined) a = 0;\n\tif (b === undefined) b = 0;\n\n\tlet L = Math.pow(l + 0.3963377773761749 * a + 0.2158037573099136 * b, 3);\n\tlet M = Math.pow(l - 0.1055613458156586 * a - 0.0638541728258133 * b, 3);\n\tlet S = Math.pow(l - 0.0894841775298119 * a - 1.2914855480194092 * b, 3);\n\n\tlet res = {\n\t\tmode: 'lrgb',\n\t\tr:\n\t\t\t4.0767416360759574 * L -\n\t\t\t3.3077115392580616 * M +\n\t\t\t0.2309699031821044 * S,\n\t\tg:\n\t\t\t-1.2684379732850317 * L +\n\t\t\t2.6097573492876887 * M -\n\t\t\t0.3413193760026573 * S,\n\t\tb:\n\t\t\t-0.0041960761386756 * L -\n\t\t\t0.7034186179359362 * M +\n\t\t\t1.7076146940746117 * S\n\t};\n\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\n\treturn res;\n};\n\nexport default convertOklabToLrgb;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport convertOklabToLrgb from './convertOklabToLrgb.js';\n\nconst convertOklabToRgb = c => convertLrgbToRgb(convertOklabToLrgb(c));\n\nexport default convertOklabToRgb;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\n\nexport function toe(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (\n\t\t0.5 *\n\t\t(k_3 * x -\n\t\t\tk_1 +\n\t\t\tMath.sqrt((k_3 * x - k_1) * (k_3 * x - k_1) + 4 * k_2 * k_3 * x))\n\t);\n}\n\nexport function toe_inv(x) {\n\tconst k_1 = 0.206;\n\tconst k_2 = 0.03;\n\tconst k_3 = (1 + k_1) / (1 + k_2);\n\treturn (x * x + k_1 * x) / (k_3 * (x + k_2));\n}\n\n// Finds the maximum saturation possible for a given hue that fits in sRGB\n// Saturation here is defined as S = C/L\n// a and b must be normalized so a^2 + b^2 == 1\nfunction compute_max_saturation(a, b) {\n\t// Max saturation will be when one of r, g or b goes below zero.\n\n\t// Select different coefficients depending on which component goes below zero first\n\tlet k0, k1, k2, k3, k4, wl, wm, ws;\n\n\tif (-1.88170328 * a - 0.80936493 * b > 1) {\n\t\t// Red component\n\t\tk0 = +1.19086277;\n\t\tk1 = +1.76576728;\n\t\tk2 = +0.59662641;\n\t\tk3 = +0.75515197;\n\t\tk4 = +0.56771245;\n\t\twl = +4.0767416621;\n\t\twm = -3.3077115913;\n\t\tws = +0.2309699292;\n\t} else if (1.81444104 * a - 1.19445276 * b > 1) {\n\t\t// Green component\n\t\tk0 = +0.73956515;\n\t\tk1 = -0.45954404;\n\t\tk2 = +0.08285427;\n\t\tk3 = +0.1254107;\n\t\tk4 = +0.14503204;\n\t\twl = -1.2684380046;\n\t\twm = +2.6097574011;\n\t\tws = -0.3413193965;\n\t} else {\n\t\t// Blue component\n\t\tk0 = +1.35733652;\n\t\tk1 = -0.00915799;\n\t\tk2 = -1.1513021;\n\t\tk3 = -0.50559606;\n\t\tk4 = +0.00692167;\n\t\twl = -0.0041960863;\n\t\twm = -0.7034186147;\n\t\tws = +1.707614701;\n\t}\n\n\t// Approximate max saturation using a polynomial:\n\tlet S = k0 + k1 * a + k2 * b + k3 * a * a + k4 * a * b;\n\n\t// Do one step Halley's method to get closer\n\t// this gives an error less than 10e6, except for some blue hues where the dS/dh is close to infinite\n\t// this should be sufficient for most applications, otherwise do two/three steps\n\n\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t{\n\t\tlet l_ = 1 + S * k_l;\n\t\tlet m_ = 1 + S * k_m;\n\t\tlet s_ = 1 + S * k_s;\n\n\t\tlet l = l_ * l_ * l_;\n\t\tlet m = m_ * m_ * m_;\n\t\tlet s = s_ * s_ * s_;\n\n\t\tlet l_dS = 3 * k_l * l_ * l_;\n\t\tlet m_dS = 3 * k_m * m_ * m_;\n\t\tlet s_dS = 3 * k_s * s_ * s_;\n\n\t\tlet l_dS2 = 6 * k_l * k_l * l_;\n\t\tlet m_dS2 = 6 * k_m * k_m * m_;\n\t\tlet s_dS2 = 6 * k_s * k_s * s_;\n\n\t\tlet f = wl * l + wm * m + ws * s;\n\t\tlet f1 = wl * l_dS + wm * m_dS + ws * s_dS;\n\t\tlet f2 = wl * l_dS2 + wm * m_dS2 + ws * s_dS2;\n\n\t\tS = S - (f * f1) / (f1 * f1 - 0.5 * f * f2);\n\t}\n\n\treturn S;\n}\n\nexport function find_cusp(a, b) {\n\t// First, find the maximum saturation (saturation S = C/L)\n\tlet S_cusp = compute_max_saturation(a, b);\n\n\t// Convert to linear sRGB to find the first point where at least one of r,g or b >= 1:\n\tlet rgb = convertOklabToLrgb({ l: 1, a: S_cusp * a, b: S_cusp * b });\n\tlet L_cusp = Math.cbrt(1 / Math.max(rgb.r, rgb.g, rgb.b));\n\tlet C_cusp = L_cusp * S_cusp;\n\n\treturn [L_cusp, C_cusp];\n}\n\n// Finds intersection of the line defined by\n// L = L0 * (1 - t) + t * L1;\n// C = t * C1;\n// a and b must be normalized so a^2 + b^2 == 1\nfunction find_gamut_intersection(a, b, L1, C1, L0, cusp = null) {\n\tif (!cusp) {\n\t\t// Find the cusp of the gamut triangle\n\t\tcusp = find_cusp(a, b);\n\t}\n\n\t// Find the intersection for upper and lower half seprately\n\tlet t;\n\tif ((L1 - L0) * cusp[1] - (cusp[0] - L0) * C1 <= 0) {\n\t\t// Lower half\n\n\t\tt = (cusp[1] * L0) / (C1 * cusp[0] + cusp[1] * (L0 - L1));\n\t} else {\n\t\t// Upper half\n\n\t\t// First intersect with triangle\n\t\tt = (cusp[1] * (L0 - 1)) / (C1 * (cusp[0] - 1) + cusp[1] * (L0 - L1));\n\n\t\t// Then one step Halley's method\n\t\t{\n\t\t\tlet dL = L1 - L0;\n\t\t\tlet dC = C1;\n\n\t\t\tlet k_l = +0.3963377774 * a + 0.2158037573 * b;\n\t\t\tlet k_m = -0.1055613458 * a - 0.0638541728 * b;\n\t\t\tlet k_s = -0.0894841775 * a - 1.291485548 * b;\n\n\t\t\tlet l_dt = dL + dC * k_l;\n\t\t\tlet m_dt = dL + dC * k_m;\n\t\t\tlet s_dt = dL + dC * k_s;\n\n\t\t\t// If higher accuracy is required, 2 or 3 iterations of the following block can be used:\n\t\t\t{\n\t\t\t\tlet L = L0 * (1 - t) + t * L1;\n\t\t\t\tlet C = t * C1;\n\n\t\t\t\tlet l_ = L + C * k_l;\n\t\t\t\tlet m_ = L + C * k_m;\n\t\t\t\tlet s_ = L + C * k_s;\n\n\t\t\t\tlet l = l_ * l_ * l_;\n\t\t\t\tlet m = m_ * m_ * m_;\n\t\t\t\tlet s = s_ * s_ * s_;\n\n\t\t\t\tlet ldt = 3 * l_dt * l_ * l_;\n\t\t\t\tlet mdt = 3 * m_dt * m_ * m_;\n\t\t\t\tlet sdt = 3 * s_dt * s_ * s_;\n\n\t\t\t\tlet ldt2 = 6 * l_dt * l_dt * l_;\n\t\t\t\tlet mdt2 = 6 * m_dt * m_dt * m_;\n\t\t\t\tlet sdt2 = 6 * s_dt * s_dt * s_;\n\n\t\t\t\tlet r =\n\t\t\t\t\t4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s - 1;\n\t\t\t\tlet r1 =\n\t\t\t\t\t4.0767416621 * ldt -\n\t\t\t\t\t3.3077115913 * mdt +\n\t\t\t\t\t0.2309699292 * sdt;\n\t\t\t\tlet r2 =\n\t\t\t\t\t4.0767416621 * ldt2 -\n\t\t\t\t\t3.3077115913 * mdt2 +\n\t\t\t\t\t0.2309699292 * sdt2;\n\n\t\t\t\tlet u_r = r1 / (r1 * r1 - 0.5 * r * r2);\n\t\t\t\tlet t_r = -r * u_r;\n\n\t\t\t\tlet g =\n\t\t\t\t\t-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s - 1;\n\t\t\t\tlet g1 =\n\t\t\t\t\t-1.2684380046 * ldt +\n\t\t\t\t\t2.6097574011 * mdt -\n\t\t\t\t\t0.3413193965 * sdt;\n\t\t\t\tlet g2 =\n\t\t\t\t\t-1.2684380046 * ldt2 +\n\t\t\t\t\t2.6097574011 * mdt2 -\n\t\t\t\t\t0.3413193965 * sdt2;\n\n\t\t\t\tlet u_g = g1 / (g1 * g1 - 0.5 * g * g2);\n\t\t\t\tlet t_g = -g * u_g;\n\n\t\t\t\tlet b =\n\t\t\t\t\t-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s - 1;\n\t\t\t\tlet b1 =\n\t\t\t\t\t-0.0041960863 * ldt -\n\t\t\t\t\t0.7034186147 * mdt +\n\t\t\t\t\t1.707614701 * sdt;\n\t\t\t\tlet b2 =\n\t\t\t\t\t-0.0041960863 * ldt2 -\n\t\t\t\t\t0.7034186147 * mdt2 +\n\t\t\t\t\t1.707614701 * sdt2;\n\n\t\t\t\tlet u_b = b1 / (b1 * b1 - 0.5 * b * b2);\n\t\t\t\tlet t_b = -b * u_b;\n\n\t\t\t\tt_r = u_r >= 0 ? t_r : 10e5;\n\t\t\t\tt_g = u_g >= 0 ? t_g : 10e5;\n\t\t\t\tt_b = u_b >= 0 ? t_b : 10e5;\n\n\t\t\t\tt += Math.min(t_r, Math.min(t_g, t_b));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn t;\n}\n\nexport function get_ST_max(a_, b_, cusp = null) {\n\tif (!cusp) {\n\t\tcusp = find_cusp(a_, b_);\n\t}\n\tlet L = cusp[0];\n\tlet C = cusp[1];\n\treturn [C / L, C / (1 - L)];\n}\n\nexport function get_ST_mid(a_, b_) {\n\tlet S =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\treturn [S, T];\n}\n\nexport function get_Cs(L, a_, b_) {\n\tlet cusp = find_cusp(a_, b_);\n\n\tlet C_max = find_gamut_intersection(a_, b_, L, 1, L, cusp);\n\tlet ST_max = get_ST_max(a_, b_, cusp);\n\n\tlet S_mid =\n\t\t0.11516993 +\n\t\t1 /\n\t\t\t(+7.4477897 +\n\t\t\t\t4.1590124 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(-2.19557347 +\n\t\t\t\t\t\t1.75198401 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-2.13704948 -\n\t\t\t\t\t\t\t\t10.02301043 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(-4.24894561 +\n\t\t\t\t\t\t\t\t\t\t5.38770819 * b_ +\n\t\t\t\t\t\t\t\t\t\t4.69891013 * a_))));\n\n\tlet T_mid =\n\t\t0.11239642 +\n\t\t1 /\n\t\t\t(+1.6132032 -\n\t\t\t\t0.68124379 * b_ +\n\t\t\t\ta_ *\n\t\t\t\t\t(+0.40370612 +\n\t\t\t\t\t\t0.90148123 * b_ +\n\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t(-0.27087943 +\n\t\t\t\t\t\t\t\t0.6122399 * b_ +\n\t\t\t\t\t\t\t\ta_ *\n\t\t\t\t\t\t\t\t\t(+0.00299215 -\n\t\t\t\t\t\t\t\t\t\t0.45399568 * b_ -\n\t\t\t\t\t\t\t\t\t\t0.14661872 * a_))));\n\n\tlet k = C_max / Math.min(L * ST_max[0], (1 - L) * ST_max[1]);\n\n\tlet C_a = L * S_mid;\n\tlet C_b = (1 - L) * T_mid;\n\tlet C_mid =\n\t\t0.9 *\n\t\tk *\n\t\tMath.sqrt(\n\t\t\tMath.sqrt(\n\t\t\t\t1 / (1 / (C_a * C_a * C_a * C_a) + 1 / (C_b * C_b * C_b * C_b))\n\t\t\t)\n\t\t);\n\n\tC_a = L * 0.4;\n\tC_b = (1 - L) * 0.8;\n\tlet C_0 = Math.sqrt(1 / (1 / (C_a * C_a) + 1 / (C_b * C_b)));\n\treturn [C_0, C_mid, C_max];\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport { get_Cs, toe } from './helpers.js';\n\nexport default function convertOklabToOkhsl(lab) {\n\tconst l = lab.l !== undefined ? lab.l : 0;\n\tconst a = lab.a !== undefined ? lab.a : 0;\n\tconst b = lab.b !== undefined ? lab.b : 0;\n\n\tconst ret = { mode: 'okhsl', l: toe(l) };\n\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\tlet c = Math.sqrt(a * a + b * b);\n\tif (!c) {\n\t\tret.s = 0;\n\t\treturn ret;\n\t}\n\tlet [C_0, C_mid, C_max] = get_Cs(l, a / c, b / c);\n\tlet s;\n\tif (c < C_mid) {\n\t\tlet k_0 = 0;\n\t\tlet k_1 = 0.8 * C_0;\n\t\tlet k_2 = 1 - k_1 / C_mid;\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = t * 0.8;\n\t} else {\n\t\tlet k_0 = C_mid;\n\t\tlet k_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tlet k_2 = 1 - k_1 / (C_max - C_mid);\n\t\tlet t = (c - k_0) / (k_1 + k_2 * (c - k_0));\n\t\ts = 0.8 + 0.2 * t;\n\t}\n\tif (s) {\n\t\tret.s = s;\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\treturn ret;\n}\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport { toe_inv, get_Cs } from './helpers.js';\n\nexport default function convertOkhslToOklab(hsl) {\n\tlet h = hsl.h !== undefined ? hsl.h : 0;\n\tlet s = hsl.s !== undefined ? hsl.s : 0;\n\tlet l = hsl.l !== undefined ? hsl.l : 0;\n\n\tconst ret = { mode: 'oklab', l: toe_inv(l) };\n\n\tif (hsl.alpha !== undefined) {\n\t\tret.alpha = hsl.alpha;\n\t}\n\n\tif (!s || l === 1) {\n\t\tret.a = ret.b = 0;\n\t\treturn ret;\n\t}\n\n\tlet a_ = Math.cos((h / 180) * Math.PI);\n\tlet b_ = Math.sin((h / 180) * Math.PI);\n\tlet [C_0, C_mid, C_max] = get_Cs(ret.l, a_, b_);\n\tlet t, k_0, k_1, k_2;\n\tif (s < 0.8) {\n\t\tt = 1.25 * s;\n\t\tk_0 = 0;\n\t\tk_1 = 0.8 * C_0;\n\t\tk_2 = 1 - k_1 / C_mid;\n\t} else {\n\t\tt = 5 * (s - 0.8);\n\t\tk_0 = C_mid;\n\t\tk_1 = (0.2 * C_mid * C_mid * 1.25 * 1.25) / C_0;\n\t\tk_2 = 1 - k_1 / (C_max - C_mid);\n\t}\n\tlet C = k_0 + (t * k_1) / (1 - k_2 * t);\n\tret.a = C * a_;\n\tret.b = C * b_;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsl from './convertOklabToOkhsl.js';\nimport convertOkhslToOklab from './convertOkhslToOklab.js';\n\nimport modeHsl from '../hsl/definition.js';\n\nconst modeOkhsl = {\n\t...modeHsl,\n\tmode: 'okhsl',\n\tchannels: ['h', 's', 'l', 'alpha'],\n\tparse: ['--okhsl'],\n\tserialize: '--okhsl',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsl,\n\t\trgb: c => convertOklabToOkhsl(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhslToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhslToOklab(c))\n\t}\n};\n\nexport default modeOkhsl;\n","/*\n\tAdapted from code by Björn Ottosson,\n\treleased under the MIT license:\n\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport normalizeHue from '../util/normalizeHue.js';\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv, toe } from '../okhsl/helpers.js';\n\nexport default function convertOklabToOkhsv(lab) {\n\tlet l = lab.l !== undefined ? lab.l : 0;\n\tlet a = lab.a !== undefined ? lab.a : 0;\n\tlet b = lab.b !== undefined ? lab.b : 0;\n\n\tlet c = Math.sqrt(a * a + b * b);\n\n\t// TODO: c = 0\n\tlet a_ = c ? a / c : 1;\n\tlet b_ = c ? b / c : 1;\n\n\tlet [S_max, T] = get_ST_max(a_, b_);\n\tlet S_0 = 0.5;\n\tlet k = 1 - S_0 / S_max;\n\n\tlet t = T / (c + l * T);\n\tlet L_v = t * l;\n\tlet C_v = t * c;\n\n\tlet L_vt = toe_inv(L_v);\n\tlet C_vt = (C_v * L_vt) / L_v;\n\n\tlet rgb_scale = convertOklabToLrgb({ l: L_vt, a: a_ * C_vt, b: b_ * C_vt });\n\tlet scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tl = l / scale_L;\n\tc = ((c / scale_L) * toe(l)) / l;\n\tl = toe(l);\n\n\tconst ret = {\n\t\tmode: 'okhsv',\n\t\ts: c ? ((S_0 + T) * C_v) / (T * S_0 + T * k * C_v) : 0,\n\t\tv: l ? l / L_v : 0\n\t};\n\tif (ret.s) {\n\t\tret.h = normalizeHue((Math.atan2(b, a) * 180) / Math.PI);\n\t}\n\tif (lab.alpha !== undefined) {\n\t\tret.alpha = lab.alpha;\n\t}\n\treturn ret;\n}\n","/*\n\tCopyright (c) 2021 Björn Ottosson\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files (the \"Software\"), to deal in\n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n\tof the Software, and to permit persons to whom the Software is furnished to do\n\tso, subject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\tSOFTWARE.\n */\n\nimport convertOklabToLrgb from '../oklab/convertOklabToLrgb.js';\nimport { get_ST_max, toe_inv } from '../okhsl/helpers.js';\n\nexport default function convertOkhsvToOklab(hsv) {\n\tconst ret = { mode: 'oklab' };\n\tif (hsv.alpha !== undefined) {\n\t\tret.alpha = hsv.alpha;\n\t}\n\n\tconst h = hsv.h !== undefined ? hsv.h : 0;\n\tconst s = hsv.s !== undefined ? hsv.s : 0;\n\tconst v = hsv.v !== undefined ? hsv.v : 0;\n\n\tconst a_ = Math.cos((h / 180) * Math.PI);\n\tconst b_ = Math.sin((h / 180) * Math.PI);\n\n\tconst [S_max, T] = get_ST_max(a_, b_);\n\tconst S_0 = 0.5;\n\tconst k = 1 - S_0 / S_max;\n\tconst L_v = 1 - (s * S_0) / (S_0 + T - T * k * s);\n\tconst C_v = (s * T * S_0) / (S_0 + T - T * k * s);\n\n\tconst L_vt = toe_inv(L_v);\n\tconst C_vt = (C_v * L_vt) / L_v;\n\tconst rgb_scale = convertOklabToLrgb({\n\t\tl: L_vt,\n\t\ta: a_ * C_vt,\n\t\tb: b_ * C_vt\n\t});\n\tconst scale_L = Math.cbrt(\n\t\t1 / Math.max(rgb_scale.r, rgb_scale.g, rgb_scale.b, 0)\n\t);\n\n\tconst L_new = toe_inv(v * L_v);\n\tconst C = (C_v * L_new) / L_v;\n\n\tret.l = L_new * scale_L;\n\tret.a = C * a_ * scale_L;\n\tret.b = C * b_ * scale_L;\n\n\treturn ret;\n}\n","import convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertOklabToOkhsv from './convertOklabToOkhsv.js';\nimport convertOkhsvToOklab from './convertOkhsvToOklab.js';\n\nimport modeHsv from '../hsv/definition.js';\n\nconst modeOkhsv = {\n\t...modeHsv,\n\tmode: 'okhsv',\n\tchannels: ['h', 's', 'v', 'alpha'],\n\tparse: ['--okhsv'],\n\tserialize: '--okhsv',\n\tfromMode: {\n\t\toklab: convertOklabToOkhsv,\n\t\trgb: c => convertOklabToOkhsv(convertRgbToOklab(c))\n\t},\n\ttoMode: {\n\t\toklab: convertOkhsvToOklab,\n\t\trgb: c => convertOklabToRgb(convertOkhsvToOklab(c))\n\t}\n};\n\nexport default modeOkhsv;\n","import { Tok } from '../parse.js';\n\nfunction parseOklab(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklab') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklab' };\n\tconst [, l, a, b, alpha] = parsed;\n\tif (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) {\n\t\treturn undefined;\n\t}\n\tif (l.type !== Tok.None) {\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (a.type !== Tok.None) {\n\t\tres.a = a.type === Tok.Number ? a.value : (a.value * 0.4) / 100;\n\t}\n\tif (b.type !== Tok.None) {\n\t\tres.b = b.type === Tok.Number ? b.value : (b.value * 0.4) / 100;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklab;\n","import convertOklabToLrgb from './convertOklabToLrgb.js';\nimport convertLrgbToOklab from './convertLrgbToOklab.js';\nimport convertRgbToOklab from './convertRgbToOklab.js';\nimport convertOklabToRgb from './convertOklabToRgb.js';\nimport parseOklab from './parseOklab.js';\n\nimport lab from '../lab/definition.js';\n\n/*\n\tOklab, a perceptual color space for image processing by Björn Ottosson\n\tReference: https://bottosson.github.io/posts/oklab/\n */\n\nconst definition = {\n\t...lab,\n\tmode: 'oklab',\n\n\ttoMode: {\n\t\tlrgb: convertOklabToLrgb,\n\t\trgb: convertOklabToRgb\n\t},\n\n\tfromMode: {\n\t\tlrgb: convertLrgbToOklab,\n\t\trgb: convertRgbToOklab\n\t},\n\n\tranges: {\n\t\tl: [0, 1],\n\t\ta: [-0.4, 0.4],\n\t\tb: [-0.4, 0.4]\n\t},\n\n\tparse: [parseOklab],\n\tserialize: c =>\n\t\t`oklab(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.a !== undefined ? c.a : 'none'\n\t\t} ${c.b !== undefined ? c.b : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`\n};\n\nexport default definition;\n","import { Tok } from '../parse.js';\n\nfunction parseOklch(color, parsed) {\n\tif (!parsed || parsed[0] !== 'oklch') {\n\t\treturn undefined;\n\t}\n\tconst res = { mode: 'oklch' };\n\tconst [, l, c, h, alpha] = parsed;\n\tif (l.type !== Tok.None) {\n\t\tif (l.type === Tok.Hue) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.l = Math.min(\n\t\t\tMath.max(0, l.type === Tok.Number ? l.value : l.value / 100),\n\t\t\t1\n\t\t);\n\t}\n\tif (c.type !== Tok.None) {\n\t\tres.c = Math.max(\n\t\t\t0,\n\t\t\tc.type === Tok.Number ? c.value : (c.value * 0.4) / 100\n\t\t);\n\t}\n\tif (h.type !== Tok.None) {\n\t\tif (h.type === Tok.Percentage) {\n\t\t\treturn undefined;\n\t\t}\n\t\tres.h = h.value;\n\t}\n\tif (alpha.type !== Tok.None) {\n\t\tres.alpha = Math.min(\n\t\t\t1,\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\talpha.type === Tok.Number ? alpha.value : alpha.value / 100\n\t\t\t)\n\t\t);\n\t}\n\n\treturn res;\n}\n\nexport default parseOklch;\n","import lch from '../lch/definition.js';\nimport convertLabToLch from '../lch/convertLabToLch.js';\nimport convertLchToLab from '../lch/convertLchToLab.js';\nimport convertOklabToRgb from '../oklab/convertOklabToRgb.js';\nimport convertRgbToOklab from '../oklab/convertRgbToOklab.js';\nimport parseOklch from './parseOklch.js';\n\nconst definition = {\n\t...lch,\n\tmode: 'oklch',\n\n\ttoMode: {\n\t\toklab: c => convertLchToLab(c, 'oklab'),\n\t\trgb: c => convertOklabToRgb(convertLchToLab(c, 'oklab'))\n\t},\n\n\tfromMode: {\n\t\trgb: c => convertLabToLch(convertRgbToOklab(c), 'oklch'),\n\t\toklab: c => convertLabToLch(c, 'oklch')\n\t},\n\n\tparse: [parseOklch],\n\tserialize: c =>\n\t\t`oklch(${c.l !== undefined ? c.l : 'none'} ${\n\t\t\tc.c !== undefined ? c.c : 'none'\n\t\t} ${c.h !== undefined ? c.h : 'none'}${\n\t\t\tc.alpha < 1 ? ` / ${c.alpha}` : ''\n\t\t})`,\n\n\tranges: {\n\t\tl: [0, 1],\n\t\tc: [0, 0.4],\n\t\th: [0, 360]\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert Display P3 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\n\nconst convertP3ToXyz65 = rgb => {\n\tlet { r, g, b, alpha } = convertRgbToLrgb(rgb);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.486570948648216 * r +\n\t\t\t0.265667693169093 * g +\n\t\t\t0.1982172852343625 * b,\n\t\ty:\n\t\t\t0.2289745640697487 * r +\n\t\t\t0.6917385218365062 * g +\n\t\t\t0.079286914093745 * b,\n\t\tz: 0.0 * r + 0.0451133818589026 * g + 1.043944368900976 * b\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertP3ToXyz65;\n","/*\n\tCIE XYZ D65 values to Display P3.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nimport convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\n\nconst convertXyz65ToP3 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = convertLrgbToRgb(\n\t\t{\n\t\t\tr:\n\t\t\t\tx * 2.4934969119414263 -\n\t\t\t\ty * 0.9313836179191242 -\n\t\t\t\t0.402710784450717 * z,\n\t\t\tg:\n\t\t\t\tx * -0.8294889695615749 +\n\t\t\t\ty * 1.7626640603183465 +\n\t\t\t\t0.0236246858419436 * z,\n\t\t\tb:\n\t\t\t\tx * 0.0358458302437845 -\n\t\t\t\ty * 0.0761723892680418 +\n\t\t\t\t0.9568845240076871 * z\n\t\t},\n\t\t'p3'\n\t);\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToP3;\n","import rgb from '../rgb/definition.js';\nimport convertP3ToXyz65 from './convertP3ToXyz65.js';\nimport convertXyz65ToP3 from './convertXyz65ToP3.js';\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'p3',\n\tparse: ['display-p3'],\n\tserialize: 'display-p3',\n\n\tfromMode: {\n\t\trgb: color => convertXyz65ToP3(convertRgbToXyz65(color)),\n\t\txyz65: convertXyz65ToP3\n\t},\n\n\ttoMode: {\n\t\trgb: color => convertXyz65ToRgb(convertP3ToXyz65(color)),\n\t\txyz65: convertP3ToXyz65\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D50 values to ProPhoto RGB\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst gamma = v => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 1 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1 / 1.8);\n\t}\n\treturn 16 * v;\n};\n\nconst convertXyz50ToProphoto = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'prophoto',\n\t\tr: gamma(\n\t\t\tx * 1.3457868816471585 -\n\t\t\t\ty * 0.2555720873797946 -\n\t\t\t\t0.0511018649755453 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.5446307051249019 +\n\t\t\t\ty * 1.5082477428451466 +\n\t\t\t\t0.0205274474364214 * z\n\t\t),\n\t\tb: gamma(x * 0.0 + y * 0.0 + 1.2119675456389452 * z)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToProphoto;\n","/*\n\tConvert ProPhoto RGB values to CIE XYZ D50\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n*/\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs >= 16 / 512) {\n\t\treturn Math.sign(v) * Math.pow(abs, 1.8);\n\t}\n\treturn v / 16;\n};\n\nconst convertProphotoToXyz50 = prophoto => {\n\tlet r = linearize(prophoto.r);\n\tlet g = linearize(prophoto.g);\n\tlet b = linearize(prophoto.b);\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t0.7977666449006423 * r +\n\t\t\t0.1351812974005331 * g +\n\t\t\t0.0313477341283922 * b,\n\t\ty:\n\t\t\t0.2880748288194013 * r +\n\t\t\t0.7118352342418731 * g +\n\t\t\t0.0000899369387256 * b,\n\t\tz: 0 * r + 0 * g + 0.8251046025104602 * b\n\t};\n\tif (prophoto.alpha !== undefined) {\n\t\tres.alpha = prophoto.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertProphotoToXyz50;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz50ToProphoto from './convertXyz50ToProphoto.js';\nimport convertProphotoToXyz50 from './convertProphotoToXyz50.js';\n\nimport convertXyz50ToRgb from '../xyz50/convertXyz50ToRgb.js';\nimport convertRgbToXyz50 from '../xyz50/convertRgbToXyz50.js';\n\n/*\n\tProPhoto RGB Color space\n\n\tReferences:\n\t\t* https://en.wikipedia.org/wiki/ProPhoto_RGB_color_space\n */\n\nconst definition = {\n\t...rgb,\n\tmode: 'prophoto',\n\tparse: ['prophoto-rgb'],\n\tserialize: 'prophoto-rgb',\n\n\tfromMode: {\n\t\txyz50: convertXyz50ToProphoto,\n\t\trgb: color => convertXyz50ToProphoto(convertRgbToXyz50(color))\n\t},\n\n\ttoMode: {\n\t\txyz50: convertProphotoToXyz50,\n\t\trgb: color => convertXyz50ToRgb(convertProphotoToXyz50(color))\n\t}\n};\n\nexport default definition;\n","/*\n\tConvert CIE XYZ D65 values to Rec. 2020\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\nconst gamma = v => {\n\tconst abs = Math.abs(v);\n\tif (abs > β) {\n\t\treturn (Math.sign(v) || 1) * (α * Math.pow(abs, 0.45) - (α - 1));\n\t}\n\treturn 4.5 * v;\n};\n\nconst convertXyz65ToRec2020 = ({ x, y, z, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'rec2020',\n\t\tr: gamma(\n\t\t\tx * 1.7166511879712683 -\n\t\t\t\ty * 0.3556707837763925 -\n\t\t\t\t0.2533662813736599 * z\n\t\t),\n\t\tg: gamma(\n\t\t\tx * -0.6666843518324893 +\n\t\t\t\ty * 1.6164812366349395 +\n\t\t\t\t0.0157685458139111 * z\n\t\t),\n\t\tb: gamma(\n\t\t\tx * 0.0176398574453108 -\n\t\t\t\ty * 0.0427706132578085 +\n\t\t\t\t0.9421031212354739 * z\n\t\t)\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToRec2020;\n","/*\n\tConvert Rec. 2020 values to CIE XYZ D65\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\t\t* https://www.itu.int/rec/R-REC-BT.2020/en\n*/\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\n\nconst linearize = (v = 0) => {\n\tlet abs = Math.abs(v);\n\tif (abs < β * 4.5) {\n\t\treturn v / 4.5;\n\t}\n\treturn (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / 0.45);\n};\n\nconst convertRec2020ToXyz65 = rec2020 => {\n\tlet r = linearize(rec2020.r);\n\tlet g = linearize(rec2020.g);\n\tlet b = linearize(rec2020.b);\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.6369580483012911 * r +\n\t\t\t0.1446169035862083 * g +\n\t\t\t0.1688809751641721 * b,\n\t\ty:\n\t\t\t0.262700212011267 * r +\n\t\t\t0.6779980715188708 * g +\n\t\t\t0.059301716469862 * b,\n\t\tz: 0 * r + 0.0280726930490874 * g + 1.0609850577107909 * b\n\t};\n\tif (rec2020.alpha !== undefined) {\n\t\tres.alpha = rec2020.alpha;\n\t}\n\treturn res;\n};\n\nexport default convertRec2020ToXyz65;\n","import rgb from '../rgb/definition.js';\n\nimport convertXyz65ToRec2020 from './convertXyz65ToRec2020.js';\nimport convertRec2020ToXyz65 from './convertRec2020ToXyz65.js';\n\nimport convertRgbToXyz65 from '../xyz65/convertRgbToXyz65.js';\nimport convertXyz65ToRgb from '../xyz65/convertXyz65ToRgb.js';\n\nconst definition = {\n\t...rgb,\n\tmode: 'rec2020',\n\n\tfromMode: {\n\t\txyz65: convertXyz65ToRec2020,\n\t\trgb: color => convertXyz65ToRec2020(convertRgbToXyz65(color))\n\t},\n\n\ttoMode: {\n\t\txyz65: convertRec2020ToXyz65,\n\t\trgb: color => convertXyz65ToRgb(convertRec2020ToXyz65(color))\n\t},\n\n\tparse: ['rec2020'],\n\tserialize: 'rec2020'\n};\n\nexport default definition;\n","export const bias = 0.00379307325527544933;\nexport const bias_cbrt = Math.cbrt(bias);\n","import convertRgbToLrgb from '../lrgb/convertRgbToLrgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.cbrt(v) - bias_cbrt;\n\nconst convertRgbToXyb = color => {\n\tconst { r, g, b, alpha } = convertRgbToLrgb(color);\n\tconst l = transfer(0.3 * r + 0.622 * g + 0.078 * b + bias);\n\tconst m = transfer(0.23 * r + 0.692 * g + 0.078 * b + bias);\n\tconst s = transfer(\n\t\t0.24342268924547819 * r +\n\t\t\t0.20476744424496821 * g +\n\t\t\t0.5518098665095536 * b +\n\t\t\tbias\n\t);\n\tconst res = {\n\t\tmode: 'xyb',\n\t\tx: (l - m) / 2,\n\t\ty: (l + m) / 2,\n\t\t/* Apply default chroma from luma (subtract Y from B) */\n\t\tb: s - (l + m) / 2\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToXyb;\n","import convertLrgbToRgb from '../lrgb/convertLrgbToRgb.js';\nimport { bias, bias_cbrt } from './constants.js';\n\nconst transfer = v => Math.pow(v + bias_cbrt, 3);\n\nconst convertXybToRgb = ({ x, y, b, alpha }) => {\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (b === undefined) b = 0;\n\tconst l = transfer(x + y) - bias;\n\tconst m = transfer(y - x) - bias;\n\t/* Account for chroma from luma: add Y back to B */\n\tconst s = transfer(b + y) - bias;\n\n\tconst res = convertLrgbToRgb({\n\t\tr:\n\t\t\t11.031566904639861 * l -\n\t\t\t9.866943908131562 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tg:\n\t\t\t-3.2541473810744237 * l +\n\t\t\t4.418770377582723 * m -\n\t\t\t0.16462299650829934 * s,\n\t\tb:\n\t\t\t-3.6588512867136815 * l +\n\t\t\t2.7129230459360922 * m +\n\t\t\t1.9459282407775895 * s\n\t});\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertXybToRgb;\n","import { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\nimport convertRgbToXyb from './convertRgbToXyb.js';\nimport convertXybToRgb from './convertXybToRgb.js';\n\n/*\n\tThe XYB color space, used in JPEG XL.\n\tReference: https://ds.jpeg.org/whitepapers/jpeg-xl-whitepaper.pdf\n*/\n\nconst definition = {\n\tmode: 'xyb',\n\tchannels: ['x', 'y', 'b', 'alpha'],\n\tparse: ['--xyb'],\n\tserialize: '--xyb',\n\n\ttoMode: {\n\t\trgb: convertXybToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyb\n\t},\n\n\tranges: {\n\t\tx: [-0.0154, 0.0281],\n\t\ty: [0, 0.8453],\n\t\tb: [-0.2778, 0.388]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tb: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tThe XYZ D50 color space\n\t-----------------------\n */\n\nimport convertXyz50ToRgb from './convertXyz50ToRgb.js';\nimport convertXyz50ToLab from '../lab/convertXyz50ToLab.js';\nimport convertRgbToXyz50 from './convertRgbToXyz50.js';\nimport convertLabToXyz50 from '../lab/convertLabToXyz50.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz50',\n\tparse: ['xyz-d50'],\n\tserialize: 'xyz-d50',\n\n\ttoMode: {\n\t\trgb: convertXyz50ToRgb,\n\t\tlab: convertXyz50ToLab\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz50,\n\t\tlab: convertLabToXyz50\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tranges: {\n\t\tx: [0, 0.964],\n\t\ty: [0, 0.999],\n\t\tz: [0, 0.825]\n\t},\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","/*\n\tChromatic adaptation of CIE XYZ from D65 to D50 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz65ToXyz50 = xyz65 => {\n\tlet { x, y, z, alpha } = xyz65;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz50',\n\t\tx:\n\t\t\t1.0479298208405488 * x +\n\t\t\t0.0229467933410191 * y -\n\t\t\t0.0501922295431356 * z,\n\t\ty:\n\t\t\t0.0296278156881593 * x +\n\t\t\t0.990434484573249 * y -\n\t\t\t0.0170738250293851 * z,\n\t\tz:\n\t\t\t-0.0092430581525912 * x +\n\t\t\t0.0150551448965779 * y +\n\t\t\t0.7518742899580008 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz65ToXyz50;\n","/*\n\tChromatic adaptation of CIE XYZ from D50 to D65 white point\n\tusing the Bradford method.\n\n\tReferences:\n\t\t* https://drafts.csswg.org/css-color/#color-conversion-code\n\t\t* http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\t\n*/\n\nconst convertXyz50ToXyz65 = xyz50 => {\n\tlet { x, y, z, alpha } = xyz50;\n\tif (x === undefined) x = 0;\n\tif (y === undefined) y = 0;\n\tif (z === undefined) z = 0;\n\tlet res = {\n\t\tmode: 'xyz65',\n\t\tx:\n\t\t\t0.9554734527042182 * x -\n\t\t\t0.0230985368742614 * y +\n\t\t\t0.0632593086610217 * z,\n\t\ty:\n\t\t\t-0.0283697069632081 * x +\n\t\t\t1.0099954580058226 * y +\n\t\t\t0.021041398966943 * z,\n\t\tz:\n\t\t\t0.0123140016883199 * x -\n\t\t\t0.0205076964334779 * y +\n\t\t\t1.3303659366080753 * z\n\t};\n\tif (alpha !== undefined) {\n\t\tres.alpha = alpha;\n\t}\n\treturn res;\n};\n\nexport default convertXyz50ToXyz65;\n","/*\n\tThe XYZ D65 color space\n\t-----------------------\n */\n\nimport convertXyz65ToRgb from './convertXyz65ToRgb.js';\nimport convertRgbToXyz65 from './convertRgbToXyz65.js';\n\nimport convertXyz65ToXyz50 from './convertXyz65ToXyz50.js';\nimport convertXyz50ToXyz65 from './convertXyz50ToXyz65.js';\n\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\nconst definition = {\n\tmode: 'xyz65',\n\n\ttoMode: {\n\t\trgb: convertXyz65ToRgb,\n\t\txyz50: convertXyz65ToXyz50\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToXyz65,\n\t\txyz50: convertXyz50ToXyz65\n\t},\n\n\tranges: {\n\t\tx: [0, 0.95],\n\t\ty: [0, 1],\n\t\tz: [0, 1.088]\n\t},\n\n\tchannels: ['x', 'y', 'z', 'alpha'],\n\n\tparse: ['xyz', 'xyz-d65'],\n\tserialize: 'xyz-d65',\n\n\tinterpolate: {\n\t\tx: interpolatorLinear,\n\t\ty: interpolatorLinear,\n\t\tz: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","const convertRgbToYiq = ({ r, g, b, alpha }) => {\n\tif (r === undefined) r = 0;\n\tif (g === undefined) g = 0;\n\tif (b === undefined) b = 0;\n\tconst res = {\n\t\tmode: 'yiq',\n\t\ty: 0.29889531 * r + 0.58662247 * g + 0.11448223 * b,\n\t\ti: 0.59597799 * r - 0.2741761 * g - 0.32180189 * b,\n\t\tq: 0.21147017 * r - 0.52261711 * g + 0.31114694 * b\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertRgbToYiq;\n","const convertYiqToRgb = ({ y, i, q, alpha }) => {\n\tif (y === undefined) y = 0;\n\tif (i === undefined) i = 0;\n\tif (q === undefined) q = 0;\n\tconst res = {\n\t\tmode: 'rgb',\n\t\tr: y + 0.95608445 * i + 0.6208885 * q,\n\t\tg: y - 0.27137664 * i - 0.6486059 * q,\n\t\tb: y - 1.10561724 * i + 1.70250126 * q\n\t};\n\tif (alpha !== undefined) res.alpha = alpha;\n\treturn res;\n};\n\nexport default convertYiqToRgb;\n","import convertRgbToYiq from './convertRgbToYiq.js';\nimport convertYiqToRgb from './convertYiqToRgb.js';\nimport { interpolatorLinear } from '../interpolate/linear.js';\nimport { fixupAlpha } from '../fixup/alpha.js';\n\n/*\n\tYIQ Color Space\n\n\tReferences\n\t----------\n\n\tWikipedia:\n\t\thttps://en.wikipedia.org/wiki/YIQ\n\n\t\"Measuring perceived color difference using YIQ NTSC\n\ttransmission color space in mobile applications\"\n\t\t\n\t\tby Yuriy Kotsarenko, Fernando Ramos in:\n\t\tProgramación Matemática y Software (2010) \n\n\tAvailable at:\n\t\t\n\t\thttp://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf\n */\n\nconst definition = {\n\tmode: 'yiq',\n\n\ttoMode: {\n\t\trgb: convertYiqToRgb\n\t},\n\n\tfromMode: {\n\t\trgb: convertRgbToYiq\n\t},\n\n\tchannels: ['y', 'i', 'q', 'alpha'],\n\n\tparse: ['--yiq'],\n\tserialize: '--yiq',\n\n\tranges: {\n\t\ti: [-0.595, 0.595],\n\t\tq: [-0.522, 0.522]\n\t},\n\n\tinterpolate: {\n\t\ty: interpolatorLinear,\n\t\ti: interpolatorLinear,\n\t\tq: interpolatorLinear,\n\t\talpha: { use: interpolatorLinear, fixup: fixupAlpha }\n\t}\n};\n\nexport default definition;\n","// Color space definitions\nimport modeA98 from './a98/definition.js';\nimport modeCubehelix from './cubehelix/definition.js';\nimport modeDlab from './dlab/definition.js';\nimport modeDlch from './dlch/definition.js';\nimport modeHsi from './hsi/definition.js';\nimport modeHsl from './hsl/definition.js';\nimport modeHsv from './hsv/definition.js';\nimport modeHwb from './hwb/definition.js';\nimport modeItp from './itp/definition.js';\nimport modeJab from './jab/definition.js';\nimport modeJch from './jch/definition.js';\nimport modeLab from './lab/definition.js';\nimport modeLab65 from './lab65/definition.js';\nimport modeLch from './lch/definition.js';\nimport modeLch65 from './lch65/definition.js';\nimport modeLchuv from './lchuv/definition.js';\nimport modeLrgb from './lrgb/definition.js';\nimport modeLuv from './luv/definition.js';\nimport modeOkhsl from './okhsl/modeOkhsl.js';\nimport modeOkhsv from './okhsv/modeOkhsv.js';\nimport modeOklab from './oklab/definition.js';\nimport modeOklch from './oklch/definition.js';\nimport modeP3 from './p3/definition.js';\nimport modeProphoto from './prophoto/definition.js';\nimport modeRec2020 from './rec2020/definition.js';\nimport modeRgb from './rgb/definition.js';\nimport modeXyb from './xyb/definition.js';\nimport modeXyz50 from './xyz50/definition.js';\nimport modeXyz65 from './xyz65/definition.js';\nimport modeYiq from './yiq/definition.js';\nimport { useMode } from './modes.js';\n\nexport { default as converter } from './converter.js';\n\nexport {\n\tserializeHex,\n\tserializeHex8,\n\tserializeRgb,\n\tserializeHsl,\n\tformatHex,\n\tformatHex8,\n\tformatRgb,\n\tformatHsl,\n\tformatCss\n} from './formatter.js';\n\nexport { default as colorsNamed } from './colors/named.js';\nexport { default as blend } from './blend.js';\nexport { default as random } from './random.js';\n\nexport {\n\tfixupHueShorter,\n\tfixupHueLonger,\n\tfixupHueIncreasing,\n\tfixupHueDecreasing\n} from './fixup/hue.js';\n\nexport { fixupAlpha } from './fixup/alpha.js';\n\nexport {\n\tmapper,\n\tmapAlphaMultiply,\n\tmapAlphaDivide,\n\tmapTransferLinear,\n\tmapTransferGamma\n} from './map.js';\n\nexport { average, averageAngle, averageNumber } from './average.js';\n\nexport { default as round } from './round.js';\nexport {\n\tinterpolate,\n\tinterpolateWith,\n\tinterpolateWithPremultipliedAlpha\n} from './interpolate/interpolate.js';\n\nexport { interpolatorLinear } from './interpolate/linear.js';\n\nexport { interpolatorPiecewise } from './interpolate/piecewise.js';\n\nexport {\n\tinterpolatorSplineBasis,\n\tinterpolatorSplineBasisClosed\n} from './interpolate/splineBasis.js';\n\nexport {\n\tinterpolatorSplineNatural,\n\tinterpolatorSplineNaturalClosed\n} from './interpolate/splineNatural.js';\n\nexport {\n\tinterpolatorSplineMonotone,\n\tinterpolatorSplineMonotone2,\n\tinterpolatorSplineMonotoneClosed\n} from './interpolate/splineMonotone.js';\n\nexport { lerp, unlerp, blerp, trilerp } from './interpolate/lerp.js';\nexport { default as samples } from './samples.js';\nexport {\n\tdisplayable,\n\tinGamut,\n\tclampRgb,\n\tclampChroma,\n\tclampGamut,\n\ttoGamut\n} from './clamp.js';\nexport { default as nearest } from './nearest.js';\nexport { useMode, getMode, useParser, removeParser } from './modes.js';\nexport { default as parse } from './parse.js';\n\nexport {\n\tdifferenceEuclidean,\n\tdifferenceCie76,\n\tdifferenceCie94,\n\tdifferenceCiede2000,\n\tdifferenceCmc,\n\tdifferenceHyab,\n\tdifferenceHueSaturation,\n\tdifferenceHueChroma,\n\tdifferenceHueNaive,\n\tdifferenceKotsarenkoRamos,\n\tdifferenceItp\n} from './difference.js';\n\nexport {\n\tfilterBrightness,\n\tfilterContrast,\n\tfilterSepia,\n\tfilterInvert,\n\tfilterSaturate,\n\tfilterGrayscale,\n\tfilterHueRotate\n} from './filter.js';\n\nexport {\n\tfilterDeficiencyProt,\n\tfilterDeficiencyDeuter,\n\tfilterDeficiencyTrit\n} from './deficiency.js';\n\n// Easings\nexport { default as easingMidpoint } from './easing/midpoint.js';\nexport {\n\teasingSmoothstep,\n\teasingSmoothstepInverse\n} from './easing/smoothstep.js';\nexport { default as easingSmootherstep } from './easing/smootherstep.js';\nexport { default as easingInOutSine } from './easing/inOutSine.js';\nexport { default as easingGamma } from './easing/gamma.js';\n\nexport {\n\tluminance as wcagLuminance,\n\tcontrast as wcagContrast\n} from './wcag.js';\n\nexport { default as parseHsl } from './hsl/parseHsl.js';\nexport { default as parseHwb } from './hwb/parseHwb.js';\nexport { default as parseLab } from './lab/parseLab.js';\nexport { default as parseLch } from './lch/parseLch.js';\nexport { default as parseNamed } from './rgb/parseNamed.js';\nexport { default as parseTransparent } from './rgb/parseTransparent.js';\nexport { default as parseHex } from './rgb/parseHex.js';\nexport { default as parseRgb } from './rgb/parseRgb.js';\nexport { default as parseHslLegacy } from './hsl/parseHslLegacy.js';\nexport { default as parseRgbLegacy } from './rgb/parseRgbLegacy.js';\nexport { default as parseOklab } from './oklab/parseOklab.js';\nexport { default as parseOklch } from './oklch/parseOklch.js';\n\nexport { default as convertA98ToXyz65 } from './a98/convertA98ToXyz65.js';\nexport { default as convertCubehelixToRgb } from './cubehelix/convertCubehelixToRgb.js';\nexport { default as convertDlchToLab65 } from './dlch/convertDlchToLab65.js';\nexport { default as convertHsiToRgb } from './hsi/convertHsiToRgb.js';\nexport { default as convertHslToRgb } from './hsl/convertHslToRgb.js';\nexport { default as convertHsvToRgb } from './hsv/convertHsvToRgb.js';\nexport { default as convertHwbToRgb } from './hwb/convertHwbToRgb.js';\nexport { default as convertItpToXyz65 } from './itp/convertItpToXyz65.js';\nexport { default as convertJabToJch } from './jch/convertJabToJch.js';\nexport { default as convertJabToRgb } from './jab/convertJabToRgb.js';\nexport { default as convertJabToXyz65 } from './jab/convertJabToXyz65.js';\nexport { default as convertJchToJab } from './jch/convertJchToJab.js';\nexport { default as convertLab65ToDlch } from './dlch/convertLab65ToDlch.js';\nexport { default as convertLab65ToRgb } from './lab65/convertLab65ToRgb.js';\nexport { default as convertLab65ToXyz65 } from './lab65/convertLab65ToXyz65.js';\nexport { default as convertLabToLch } from './lch/convertLabToLch.js';\nexport { default as convertLabToRgb } from './lab/convertLabToRgb.js';\nexport { default as convertLabToXyz50 } from './lab/convertLabToXyz50.js';\nexport { default as convertLchToLab } from './lch/convertLchToLab.js';\nexport { default as convertLchuvToLuv } from './lchuv/convertLchuvToLuv.js';\nexport { default as convertLrgbToOklab } from './oklab/convertLrgbToOklab.js';\nexport { default as convertLrgbToRgb } from './lrgb/convertLrgbToRgb.js';\nexport { default as convertLuvToLchuv } from './lchuv/convertLuvToLchuv.js';\nexport { default as convertLuvToXyz50 } from './luv/convertLuvToXyz50.js';\nexport { default as convertOkhslToOklab } from './okhsl/convertOkhslToOklab.js';\nexport { default as convertOkhsvToOklab } from './okhsv/convertOkhsvToOklab.js';\nexport { default as convertOklabToLrgb } from './oklab/convertOklabToLrgb.js';\nexport { default as convertOklabToOkhsl } from './okhsl/convertOklabToOkhsl.js';\nexport { default as convertOklabToOkhsv } from './okhsv/convertOklabToOkhsv.js';\nexport { default as convertOklabToRgb } from './oklab/convertOklabToRgb.js';\nexport { default as convertP3ToXyz65 } from './p3/convertP3ToXyz65.js';\nexport { default as convertProphotoToXyz50 } from './prophoto/convertProphotoToXyz50.js';\nexport { default as convertRec2020ToXyz65 } from './rec2020/convertRec2020ToXyz65.js';\nexport { default as convertRgbToCubehelix } from './cubehelix/convertRgbToCubehelix.js';\nexport { default as convertRgbToHsi } from './hsi/convertRgbToHsi.js';\nexport { default as convertRgbToHsl } from './hsl/convertRgbToHsl.js';\nexport { default as convertRgbToHsv } from './hsv/convertRgbToHsv.js';\nexport { default as convertRgbToHwb } from './hwb/convertRgbToHwb.js';\nexport { default as convertRgbToJab } from './jab/convertRgbToJab.js';\nexport { default as convertRgbToLab } from './lab/convertRgbToLab.js';\nexport { default as convertRgbToLab65 } from './lab65/convertRgbToLab65.js';\nexport { default as convertRgbToLrgb } from './lrgb/convertRgbToLrgb.js';\nexport { default as convertRgbToOklab } from './oklab/convertRgbToOklab.js';\nexport { default as convertRgbToXyb } from './xyb/convertRgbToXyb.js';\nexport { default as convertRgbToXyz50 } from './xyz50/convertRgbToXyz50.js';\nexport { default as convertRgbToXyz65 } from './xyz65/convertRgbToXyz65.js';\nexport { default as convertRgbToYiq } from './yiq/convertRgbToYiq.js';\nexport { default as convertXybToRgb } from './xyb/convertXybToRgb.js';\nexport { default as convertXyz50ToLab } from './lab/convertXyz50ToLab.js';\nexport { default as convertXyz50ToLuv } from './luv/convertXyz50ToLuv.js';\nexport { default as convertXyz50ToProphoto } from './prophoto/convertXyz50ToProphoto.js';\nexport { default as convertXyz50ToRgb } from './xyz50/convertXyz50ToRgb.js';\nexport { default as convertXyz50ToXyz65 } from './xyz65/convertXyz50ToXyz65.js';\nexport { default as convertXyz65ToA98 } from './a98/convertXyz65ToA98.js';\nexport { default as convertXyz65ToItp } from './itp/convertXyz65ToItp.js';\nexport { default as convertXyz65ToJab } from './jab/convertXyz65ToJab.js';\nexport { default as convertXyz65ToLab65 } from './lab65/convertXyz65ToLab65.js';\nexport { default as convertXyz65ToP3 } from './p3/convertXyz65ToP3.js';\nexport { default as convertXyz65ToRec2020 } from './rec2020/convertXyz65ToRec2020.js';\nexport { default as convertXyz65ToRgb } from './xyz65/convertXyz65ToRgb.js';\nexport { default as convertXyz65ToXyz50 } from './xyz65/convertXyz65ToXyz50.js';\nexport { default as convertYiqToRgb } from './yiq/convertYiqToRgb.js';\n\nexport {\n\tmodeA98,\n\tmodeCubehelix,\n\tmodeDlab,\n\tmodeDlch,\n\tmodeHsi,\n\tmodeHsl,\n\tmodeHsv,\n\tmodeHwb,\n\tmodeItp,\n\tmodeJab,\n\tmodeJch,\n\tmodeLab,\n\tmodeLab65,\n\tmodeLch,\n\tmodeLch65,\n\tmodeLchuv,\n\tmodeLrgb,\n\tmodeLuv,\n\tmodeOkhsl,\n\tmodeOkhsv,\n\tmodeOklab,\n\tmodeOklch,\n\tmodeP3,\n\tmodeProphoto,\n\tmodeRec2020,\n\tmodeRgb,\n\tmodeXyb,\n\tmodeXyz50,\n\tmodeXyz65,\n\tmodeYiq\n};\n\nexport const a98 = useMode(modeA98);\nexport const cubehelix = useMode(modeCubehelix);\nexport const dlab = useMode(modeDlab);\nexport const dlch = useMode(modeDlch);\nexport const hsi = useMode(modeHsi);\nexport const hsl = useMode(modeHsl);\nexport const hsv = useMode(modeHsv);\nexport const hwb = useMode(modeHwb);\nexport const itp = useMode(modeItp);\nexport const jab = useMode(modeJab);\nexport const jch = useMode(modeJch);\nexport const lab = useMode(modeLab);\nexport const lab65 = useMode(modeLab65);\nexport const lch = useMode(modeLch);\nexport const lch65 = useMode(modeLch65);\nexport const lchuv = useMode(modeLchuv);\nexport const lrgb = useMode(modeLrgb);\nexport const luv = useMode(modeLuv);\nexport const okhsl = useMode(modeOkhsl);\nexport const okhsv = useMode(modeOkhsv);\nexport const oklab = useMode(modeOklab);\nexport const oklch = useMode(modeOklch);\nexport const p3 = useMode(modeP3);\nexport const prophoto = useMode(modeProphoto);\nexport const rec2020 = useMode(modeRec2020);\nexport const rgb = useMode(modeRgb);\nexport const xyb = useMode(modeXyb);\nexport const xyz50 = useMode(modeXyz50);\nexport const xyz65 = useMode(modeXyz65);\nexport const yiq = useMode(modeYiq);\n","import { DateTime } from \"luxon\";\nimport { debounce, getPrototypeChain, setObjectMethod, setObjectValue } from \"@basmilius/utils\";\nimport { customRef, markRaw, toRaw } from \"vue\";\n//#region src/decorator/adapter.ts\nfunction adapter_default(Parent) {\n\treturn class extends Parent {\n\t\tconstructor(...args) {\n\t\t\tthrow new Error(\"@adapter: cannot create instance of class.\");\n\t\t}\n\t};\n}\n//#endregion\n//#region src/decorator/bound.ts\nfunction bound_default() {\n\treturn (target, method) => {\n\t\ttarget[method] = target[method].bind(target);\n\t};\n}\n//#endregion\n//#region src/decorator/debounce.ts\nfunction debounce_default(interval) {\n\treturn (target, _, descriptor) => {\n\t\tdescriptor.value = debounce(descriptor.value, interval, target);\n\t};\n}\n//#endregion\n//#region src/decorator/dto/const.ts\nconst SERIALIZED_DATETIME = 3058;\nconst SERIALIZED_DTO = 3057;\n//#endregion\n//#region src/decorator/dto/helper/areEqual.ts\n/**\n* Checks if the two given values are equal. When both values are a\n* dto, the check is done by firstly converthing them to JSON.\n*/\nfunction areEqual_default(a, b) {\n\tif (a === b) return true;\n\treturn a === b;\n}\n//#endregion\n//#region src/decorator/dto/symbols.ts\nconst ARGS = Symbol();\nconst CHILDREN = Symbol();\nconst DESCRIPTORS = Symbol();\nconst DIRTY = Symbol();\nconst NAME = Symbol();\nconst PARENT = Symbol();\nconst PARENT_KEY = Symbol();\nconst PROPERTIES = Symbol();\nconst PROXY = Symbol();\nconst TRACK = Symbol();\nconst TRIGGER = Symbol();\n//#endregion\n//#region src/decorator/dto/helper/isDto.ts\n/**\n* Checks if the given object is a dto.\n*/\nfunction isDto_default(obj) {\n\treturn obj && typeof obj === \"object\" && !!obj[NAME];\n}\n//#endregion\n//#region src/decorator/dto/helper/assertDto.ts\n/**\n* Asserts that the given object is a dto.\n*/\nfunction assertDto_default(obj) {\n\tif (!isDto_default(obj)) throw new Error(\"@dto assert given object is not a class decorated with @Dto.\");\n}\n//#endregion\n//#region src/decorator/dto/helper/circularProtect.ts\nconst CIRCULAR_MAP = Symbol();\nfunction circularProtect_default(fn, arg1 = 0, arg2) {\n\treturn function(...args) {\n\t\tconst map = fn[CIRCULAR_MAP] ??= /* @__PURE__ */ new WeakMap();\n\t\tconst primary = args[arg1];\n\t\tconst secondary = arg2 !== void 0 ? args[arg2] : \"self\";\n\t\tif (typeof primary !== \"object\" || primary === null) return fn.call(this, ...args);\n\t\tif (!map.has(primary)) map.set(primary, []);\n\t\tconst visited = map.get(primary);\n\t\tif (visited.includes(secondary)) return;\n\t\tvisited.push(secondary);\n\t\ttry {\n\t\t\treturn fn.call(this, ...args);\n\t\t} finally {\n\t\t\tconst index = visited.lastIndexOf(secondary);\n\t\t\tif (index !== -1) visited.splice(index, 1);\n\t\t\tif (visited.length === 0) map.delete(primary);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/decorator/dto/helper/cloneDto.ts\n/**\n* Clones the given dto.\n*/\nfunction cloneDto_default(obj) {\n\tassertDto_default(obj);\n\treturn obj.clone();\n}\n//#endregion\n//#region src/decorator/dto/helper/isDtoDirty.ts\n/**\n* Checks if the given dto is dirty.\n*/\nfunction isDtoDirty_default(obj) {\n\tassertDto_default(obj);\n\treturn obj[DIRTY];\n}\n//#endregion\n//#region src/decorator/dto/helper/triggerDto.ts\n/**\n* Trigger for when a dto property is being updated.\n*/\nconst triggerDto = circularProtect_default(function(dto, key, value, oldValue) {\n\tconst trigger = dto[TRIGGER];\n\ttrigger(dto, key, value, oldValue);\n\tdto[PARENT] && triggerDto(dto[PARENT], dto[PARENT_KEY], dto[PARENT][dto[PARENT_KEY]]);\n}, 0, 1);\n//#endregion\n//#region src/decorator/dto/helper/markDtoClean.ts\n/**\n* Marks the given dto clean.\n*/\nconst markDtoClean = circularProtect_default(function(obj) {\n\tassertDto_default(obj);\n\tif (obj[DIRTY]) {\n\t\tobj[DIRTY] = false;\n\t\ttriggerDto(obj, DIRTY, false, true);\n\t}\n\tif (!obj[CHILDREN] || obj[CHILDREN].length === 0) return;\n\tobj[CHILDREN].filter(isDtoDirty_default).forEach(markDtoClean);\n});\n//#endregion\n//#region src/decorator/dto/helper/executeIfDtoDirtyAndMarkClean.ts\n/**\n* Executes the given function if the given dto is marked dirty.\n*/\nasync function executeIfDtoDirtyAndMarkClean_default(obj, fn) {\n\tif (!isDto_default(obj) || !isDtoDirty_default(obj)) return;\n\tawait fn(obj);\n\tmarkDtoClean(obj);\n}\n//#endregion\n//#region src/decorator/dto/helper/isDtoClean.ts\n/**\n* Checks if the given dto is clean.\n*/\nfunction isDtoClean_default(obj) {\n\tassertDto_default(obj);\n\treturn !obj[DIRTY];\n}\n//#endregion\n//#region src/decorator/dto/helper/markDtoDirty.ts\n/**\n* Marks the given dto dirty.\n*/\nconst markDtoDirty = circularProtect_default(function(obj, key) {\n\tassertDto_default(obj);\n\tif (!obj[DIRTY]) {\n\t\tobj[DIRTY] = true;\n\t\ttriggerDto(obj, DIRTY, true, false);\n\t}\n\tif (!obj[PARENT]) return;\n\tmarkDtoDirty(obj[PARENT], obj[PARENT_KEY]);\n});\n//#endregion\n//#region src/decorator/dto/helper/relateDtoTo.ts\n/**\n* Creates a parent-child relationship between the given two dtos.\n*/\nfunction relateDtoTo_default(dto, parent, key) {\n\tparent[CHILDREN] ??= [];\n\t!parent[CHILDREN].includes(dto) && parent[CHILDREN].push(dto);\n\tdto[PARENT] !== parent && (dto[PARENT] = parent);\n\tdto[PARENT_KEY] !== key && (dto[PARENT_KEY] = key);\n}\n//#endregion\n//#region src/decorator/dto/helper/relateValueTo.ts\n/**\n* Creates relationships between the given value and dto.\n*/\nfunction relateValueTo_default(dto, key, value) {\n\tif (isDto_default(value)) relateDtoTo_default(value, dto, key);\n\telse if (Array.isArray(value)) {\n\t\tfor (const item of value) {\n\t\t\tif (!isDto_default(item)) continue;\n\t\t\trelateDtoTo_default(item, dto, key);\n\t\t}\n\t\tvalue[PARENT] = dto;\n\t\tvalue[PARENT_KEY] = key;\n\t}\n}\n//#endregion\n//#region src/decorator/dto/helper/trackDto.ts\n/**\n* Tracking for when a dto property is being accessed.\n*/\nfunction trackDto(dto, key) {\n\tconst track = dto[TRACK];\n\ttrack(dto, key);\n}\n//#endregion\n//#region src/decorator/dto/helper/unrelateDtoFrom.ts\n/**\n* Removes a parent-child relationship between the given two dtos.\n*/\nfunction unrelateDtoFrom_default(dto, parent) {\n\tif (CHILDREN in parent) {\n\t\tconst index = parent[CHILDREN].indexOf(dto);\n\t\tif (index !== -1) parent[CHILDREN].splice(index, 1);\n\t}\n\tdto[PARENT] = void 0;\n\tdto[PARENT_KEY] = void 0;\n}\n//#endregion\n//#region src/decorator/dto/helper/unrelateValueFrom.ts\n/**\n* Removes relationships between the given value and dto.\n*/\nfunction unrelateValueFrom_default(dto, value) {\n\tif (isDto_default(value)) unrelateDtoFrom_default(value, dto);\n\telse if (Array.isArray(value)) {\n\t\tfor (const item of value) if (isDto_default(item)) unrelateDtoFrom_default(item, dto);\n\t\tvalue[PARENT] = void 0;\n\t\tvalue[PARENT_KEY] = void 0;\n\t}\n}\n//#endregion\n//#region src/decorator/dto/map.ts\nconst DTO_CLASS_MAP = {};\n//#endregion\n//#region src/decorator/dto/arrayProxy.ts\nvar arrayProxy_default = {\n\t/**\n\t* Trap for when a property is deleted from the target. This\n\t* will mark the parent dto as dirty and trigger an update.\n\t*/\n\tdeleteProperty(target, key) {\n\t\tReflect.deleteProperty(target, key);\n\t\tif (ignored(target, key)) return true;\n\t\tconst dto = target[PARENT];\n\t\tdto && triggerDto(dto, target[PARENT_KEY], dto[target[PARENT_KEY]]);\n\t\tdto && markDtoDirty(dto, target[PARENT_KEY]);\n\t\treturn true;\n\t},\n\t/**\n\t* Trap for when a property of the target is being accessed. The\n\t* property access is being tracked for further updates.\n\t*/\n\tget(target, key, receiver) {\n\t\tif (key === PROXY) return true;\n\t\tif (ignored(target, key)) return Reflect.get(target, key, receiver);\n\t\tconst dto = target[PARENT];\n\t\tdto && trackDto(dto, target[PARENT_KEY]);\n\t\treturn Reflect.get(target, key);\n\t},\n\t/**\n\t* Trap for when a property of the target is being updated. This\n\t* will mark the parent dto as dirty and trigger an update.\n\t*/\n\tset(target, key, value, receiver) {\n\t\tif (ignored(target, key)) return Reflect.set(target, key, value, receiver);\n\t\tconst dto = target[PARENT];\n\t\tdto && triggerDto(dto, target[PARENT_KEY], dto[target[PARENT_KEY]]);\n\t\tdto && markDtoDirty(dto, target[PARENT_KEY]);\n\t\treturn Reflect.set(target, key, value);\n\t}\n};\n/**\n* Checks if the given key should be ignored by the proxy.\n*/\nfunction ignored(target, key) {\n\treturn typeof key === \"symbol\" || typeof target[key] === \"function\" || key === \"length\";\n}\n//#endregion\n//#region src/decorator/dto/instanceProxy.ts\nvar instanceProxy_default = {\n\t/**\n\t* Trap for when a dto property is being accessed. The property\n\t* access is being tracked for further updates. If the dto has\n\t* any child dtos, a relationship will be added between them.\n\t*/\n\tget(target, key, receiver) {\n\t\tif (key === PROXY) return true;\n\t\tif (typeof key === \"symbol\") return Reflect.get(target, key, receiver);\n\t\tconst descriptor = target[DESCRIPTORS][key];\n\t\tif (!descriptor || !descriptor.get) return Reflect.get(target, key, receiver);\n\t\tconst value = descriptor.get.call(target);\n\t\ttrackDto(target, key);\n\t\trelateValueTo_default(target, key, value);\n\t\treturn value;\n\t},\n\t/**\n\t* Trap for when a descriptor of a dto property is requested.\n\t*/\n\tgetOwnPropertyDescriptor(target, key) {\n\t\treturn target[DESCRIPTORS][key];\n\t},\n\t/**\n\t* Trap for when the keys of a dto are requested.\n\t*/\n\townKeys(target) {\n\t\treturn target[PROPERTIES];\n\t},\n\t/**\n\t* Trap for when a dto property is being updated. This will\n\t* mark the dto dirty and trigger an update. If an array is\n\t* passed, that array will be made reactive as well.\n\t*/\n\tset(target, key, value, receiver) {\n\t\tif (typeof key === \"symbol\") return Reflect.set(target, key, value, receiver);\n\t\tconst descriptor = target[DESCRIPTORS][key];\n\t\tif (!descriptor || !descriptor.set) return Reflect.set(target, key, value, receiver);\n\t\tconst oldValue = descriptor.get?.call(target) ?? void 0;\n\t\tif (areEqual_default(value, oldValue)) return true;\n\t\tunrelateValueFrom_default(target, oldValue);\n\t\tif (Array.isArray(value) && !value[PROXY]) value = new Proxy(value, arrayProxy_default);\n\t\tdescriptor.set.call(target, value);\n\t\trelateValueTo_default(target, key, value);\n\t\tmarkDtoDirty(target, key);\n\t\ttriggerDto(target, key, value, oldValue);\n\t\treturn true;\n\t}\n};\n//#endregion\n//#region src/decorator/dto/refProxy.ts\nvar refProxy_default = {\n\t/**\n\t* Trap for when a ref property is being accessed. The property\n\t* access is being tracked for further updates. If the requested\n\t* property is not a part of {Ref}, the get is proxied to the\n\t* underlying dto instance.\n\t*\n\t* A little trick with __v_isRef is done here, all the features\n\t* of refs are used by our dto, but we don't want Vue to treat\n\t* it as a ref. We return false here to trick Vue.\n\t*/\n\tget(target, key, receiver) {\n\t\tif (key === \"__v_isRef\") return false;\n\t\tif (key === PROXY) return true;\n\t\tif (key in target) return Reflect.get(target, key, receiver);\n\t\treturn Reflect.get(target.value, key);\n\t},\n\t/**\n\t* Trap for when a descriptor of a property is requested, that\n\t* request is proxied to the underlying dto.\n\t*/\n\tgetOwnPropertyDescriptor(target, key) {\n\t\treturn Reflect.getOwnPropertyDescriptor(target.value, key);\n\t},\n\t/**\n\t* Trap for when the keys of the ref are requested, that request\n\t* is proxied to the underlying dto.\n\t*/\n\townKeys(target) {\n\t\treturn Reflect.ownKeys(target.value);\n\t},\n\t/**\n\t* Trap for when a ref property is being updated. If the property\n\t* is not part of {Ref}, the set is proxied to the underlying dto\n\t* instance. In that proxy, the dto will be marked dirty and an\n\t* update is triggered.\n\t*/\n\tset(target, key, value, receiver) {\n\t\tif (key in target) return Reflect.set(target, key, value, receiver);\n\t\treturn Reflect.set(target.value, key, value);\n\t}\n};\n//#endregion\n//#region src/decorator/dto/classProxy.ts\nvar classProxy_default = { \n/**\n* Trap for when a dto is being constructed. Reactivity is provided\n* to all arguments and a proxied custom ref is returned that references\n* the actual dto instance.\n*/\nconstruct(target, argsArray, newTarget) {\n\targsArray = argsArray.map((arg) => {\n\t\tif (!Array.isArray(arg)) return arg;\n\t\treturn new Proxy(arg, arrayProxy_default);\n\t});\n\tconst ref = customRef((track, trigger) => {\n\t\tconst instance = markRaw(Reflect.construct(target, argsArray, newTarget));\n\t\tinstance[ARGS] = argsArray;\n\t\tinstance[DIRTY] = false;\n\t\tinstance[TRACK] = track;\n\t\tinstance[TRIGGER] = trigger;\n\t\tconst proxied = new Proxy(instance, instanceProxy_default);\n\t\treturn {\n\t\t\tget: () => {\n\t\t\t\ttrack();\n\t\t\t\treturn proxied;\n\t\t\t},\n\t\t\tset: () => void 0\n\t\t};\n\t});\n\treturn new Proxy(ref, refProxy_default);\n} };\n//#endregion\n//#region src/decorator/dto/clone.ts\n/**\n* Returns a clone of the dto.\n*/\nfunction clone_default() {\n\tconst instance = this;\n\tassertDto_default(instance);\n\tconst clazz = DTO_CLASS_MAP[instance[NAME]];\n\tconst clone = new clazz(...instance[ARGS]);\n\tfor (const [key, descriptor] of Object.entries(this[DESCRIPTORS])) {\n\t\tif (!descriptor.set) continue;\n\t\tclone[key] = isDto_default(this[key]) ? this[key].clone() : this[key];\n\t}\n\treturn clone;\n}\n//#endregion\n//#region src/decorator/dto/fill.ts\n/**\n* Fills the dto with the given data.\n*/\nfunction fill_default(data) {\n\tfor (let key in data) {\n\t\tconst descriptor = this[DESCRIPTORS][key];\n\t\tif (isDto_default(this[key]) && typeof data[key] === \"object\") this[key].fill(data[key]);\n\t\telse if (descriptor && descriptor.set) this[key] = data[key];\n\t}\n}\n//#endregion\n//#region src/decorator/dto/toJSON.ts\n/**\n* Returns the json object representation of the dto.\n*/\nfunction toJSON_default() {\n\tconst result = {};\n\tfor (const property of this[PROPERTIES]) {\n\t\tlet value = this[property];\n\t\tif (isDto_default(value)) value = value.toJSON();\n\t\tresult[property] = value;\n\t}\n\treturn result;\n}\n//#endregion\n//#region src/decorator/dto/index.ts\n/**\n* Provides reactivity to the decorated class.\n*/\nfunction dto_default(clazz) {\n\tvalidate(clazz);\n\tconst descriptors = Object.freeze(getPrototypeChain(clazz));\n\tconst properties = Object.keys(descriptors);\n\tsetObjectValue(clazz.prototype, DESCRIPTORS, descriptors);\n\tsetObjectValue(clazz.prototype, NAME, clazz.name);\n\tsetObjectValue(clazz.prototype, PROPERTIES, properties);\n\tsetObjectValue(clazz, Symbol.hasInstance, (instance) => typeof instance === \"object\" && instance?.[NAME] === clazz.name);\n\tsetObjectMethod(clazz, \"clone\", clone_default);\n\tsetObjectMethod(clazz, \"fill\", fill_default);\n\tsetObjectMethod(clazz, \"toJSON\", toJSON_default);\n\treturn proxy(clazz);\n}\nfunction proxy(clazz) {\n\tconst proxied = new Proxy(clazz, classProxy_default);\n\tDTO_CLASS_MAP[clazz.name] = proxied;\n\treturn proxied;\n}\nfunction validate(clazz) {\n\tconst parent = Object.getPrototypeOf(clazz.prototype);\n\tif (NAME in parent) throw new Error(`⛔️ @dto ${clazz.name} cannot extend parent class which is also decorated with @dto ${parent[NAME]}.`);\n}\n//#endregion\n//#region src/decorator/dto/serialize/deserializeArray.ts\nfunction deserializeArray_default(obj) {\n\treturn obj.map(deserializeUnknown_default);\n}\n//#endregion\n//#region src/decorator/dto/serialize/deserializeDateTime.ts\nfunction deserializeDateTime_default([, iso]) {\n\treturn DateTime.fromISO(iso);\n}\n//#endregion\n//#region src/decorator/dto/serialize/deserializeObject.ts\nfunction deserializeObject_default(obj) {\n\treturn Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, deserializeUnknown_default(value)]).filter(([, value]) => value !== void 0));\n}\n//#endregion\n//#region src/decorator/dto/serialize/deserializeDto.ts\nconst CACHE = {};\nfunction deserializeDto_default([, id, name, state, args]) {\n\tif (!(name in DTO_CLASS_MAP)) throw new Error(`Cannot restore @dto. Dto ${name} was not found.`);\n\tif (id in CACHE) return CACHE[id];\n\tconst Dto = DTO_CLASS_MAP[name];\n\tconst instance = new Dto(...deserializeArray_default(args));\n\tinstance.fill(deserializeObject_default(state));\n\tCACHE[id] = instance;\n\treturn instance;\n}\n//#endregion\n//#region src/decorator/dto/serialize/isSerializedDateTime.ts\nfunction isSerializedDateTime_default(obj) {\n\treturn Array.isArray(obj) && obj[0] === 3058;\n}\n//#endregion\n//#region src/decorator/dto/serialize/isSerializedDto.ts\nfunction isSerializedDto_default(obj) {\n\treturn Array.isArray(obj) && obj[0] === 3057;\n}\n//#endregion\n//#region src/decorator/dto/serialize/deserializeUnknown.ts\nfunction deserializeUnknown_default(obj) {\n\tswitch (true) {\n\t\tcase obj === null: return null;\n\t\tcase Array.isArray(obj): switch (true) {\n\t\t\tcase isSerializedDateTime_default(obj): return deserializeDateTime_default(obj);\n\t\t\tcase isSerializedDto_default(obj): return deserializeDto_default(obj);\n\t\t\tdefault: return deserializeArray_default(obj);\n\t\t}\n\t\tcase typeof obj === \"object\": return deserializeObject_default(obj);\n\t\tdefault: return obj;\n\t}\n}\n//#endregion\n//#region src/decorator/dto/serialize/deserialize.ts\nfunction deserialize_default(serialized) {\n\treturn deserializeUnknown_default(JSON.parse(serialized));\n}\n//#endregion\n//#region src/decorator/dto/serialize/serializeDateTime.ts\nfunction serializeDateTime_default(obj) {\n\treturn [SERIALIZED_DATETIME, obj.toISO({\n\t\textendedZone: true,\n\t\tincludeOffset: true\n\t})];\n}\n//#endregion\n//#region src/decorator/dto/serialize/serializeObject.ts\nfunction serializeObject_default(obj) {\n\treturn Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, serializeUnknown_default(value)]).filter(([, value]) => value !== void 0));\n}\n//#endregion\n//#region src/decorator/dto/serialize/uuid.ts\nfunction uuid_default() {\n\treturn \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (c) => (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16));\n}\n//#endregion\n//#region src/decorator/dto/serialize/serializeDto.ts\nfunction serializeDto_default(obj) {\n\tobj = toRaw(obj);\n\tconst json = obj.toJSON();\n\treturn [\n\t\tSERIALIZED_DTO,\n\t\tuuid_default(),\n\t\tobj[NAME],\n\t\tserializeObject_default(json),\n\t\tserializeArray_default(obj[ARGS])\n\t];\n}\n//#endregion\n//#region src/decorator/dto/serialize/serializeArray.ts\nfunction serializeArray_default(obj) {\n\tswitch (true) {\n\t\tcase obj.every(isDto_default): return obj.map(serializeDto_default);\n\t\tcase obj.every(DateTime.isDateTime): return obj.map(serializeDateTime_default);\n\t\tdefault: return obj.map(serializeUnknown_default);\n\t}\n}\n//#endregion\n//#region src/decorator/dto/serialize/serializeUnknown.ts\nfunction serializeUnknown_default(obj) {\n\tswitch (true) {\n\t\tcase obj === null: return null;\n\t\tcase Array.isArray(obj): return serializeArray_default(obj);\n\t\tcase isDto_default(obj): return serializeDto_default(obj);\n\t\tcase DateTime.isDateTime(obj): return serializeDateTime_default(obj);\n\t\tcase typeof obj === \"object\": return serializeObject_default(obj);\n\t\tcase typeof obj === \"boolean\":\n\t\tcase typeof obj === \"number\":\n\t\tcase typeof obj === \"string\": return obj;\n\t\tdefault: return;\n\t}\n}\n//#endregion\n//#region src/decorator/dto/serialize/serialize.ts\nfunction serialize_default(obj) {\n\treturn JSON.stringify(serializeUnknown_default(obj));\n}\n//#endregion\n//#region \\0@oxc-project+runtime@0.129.0/helpers/decorate.js\nfunction __decorate(decorators, target, key, desc) {\n\tvar c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n\tif (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n\telse for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n\treturn c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n//#endregion\n//#region src/dto/BlobResponse.ts\nlet BlobResponse = class BlobResponse {\n\tget blob() {\n\t\treturn this.#blob;\n\t}\n\tget name() {\n\t\treturn this.#name;\n\t}\n\t#blob;\n\t#name;\n\tconstructor(blob, name) {\n\t\tthis.#blob = blob;\n\t\tthis.#name = name;\n\t}\n};\nBlobResponse = __decorate([dto_default], BlobResponse);\nvar BlobResponse_default = BlobResponse;\n//#endregion\n//#region src/dto/Paginated.ts\nlet Paginated = class Paginated {\n\tget items() {\n\t\treturn this.#items;\n\t}\n\tget page() {\n\t\treturn this.#page;\n\t}\n\tget pageSize() {\n\t\treturn this.#pageSize;\n\t}\n\tget pages() {\n\t\treturn this.#pages;\n\t}\n\tget total() {\n\t\treturn this.#total;\n\t}\n\t#items;\n\t#page;\n\t#pageSize;\n\t#pages;\n\t#total;\n\tconstructor(items, page, pageSize, pages, total) {\n\t\tthis.#items = items;\n\t\tthis.#page = page;\n\t\tthis.#pageSize = pageSize;\n\t\tthis.#pages = pages;\n\t\tthis.#total = total;\n\t}\n};\nPaginated = __decorate([dto_default], Paginated);\nvar Paginated_default = Paginated;\n//#endregion\n//#region src/dto/RequestError.ts\nlet RequestError = class RequestError {\n\tget code() {\n\t\treturn this.#code;\n\t}\n\tget error() {\n\t\treturn this.#error;\n\t}\n\tget errorDescription() {\n\t\treturn this.#errorDescription;\n\t}\n\tget statusCode() {\n\t\treturn this.#statusCode;\n\t}\n\t#code;\n\t#error;\n\t#errorDescription;\n\t#statusCode;\n\tconstructor(code, error, errorDescription, statusCode) {\n\t\tthis.#code = code;\n\t\tthis.#error = error;\n\t\tthis.#errorDescription = errorDescription;\n\t\tthis.#statusCode = statusCode;\n\t}\n};\nRequestError = __decorate([dto_default], RequestError);\nvar RequestError_default = RequestError;\n//#endregion\n//#region src/dto/ValidationError.ts\nlet ValidationError = class ValidationError {\n\tget code() {\n\t\treturn this.#code;\n\t}\n\tget error() {\n\t\treturn this.#error;\n\t}\n\tget errorDescription() {\n\t\treturn this.#errorDescription;\n\t}\n\tget errors() {\n\t\treturn this.#errors;\n\t}\n\tget params() {\n\t\treturn this.#params;\n\t}\n\t#code;\n\t#error;\n\t#errorDescription;\n\t#errors;\n\t#params;\n\tconstructor(code, error, errorDescription, errors, params) {\n\t\tthis.#code = code;\n\t\tthis.#error = error;\n\t\tthis.#errorDescription = errorDescription;\n\t\tthis.#errors = errors;\n\t\tthis.#params = params;\n\t}\n};\nValidationError = __decorate([dto_default], ValidationError);\nvar ValidationError_default = ValidationError;\n//#endregion\n//#region src/adapter/HttpAdapter.ts\nvar _HttpAdapter;\nlet HttpAdapter = _HttpAdapter = class HttpAdapter {\n\tstatic parsePaginatedAdapter(data, adapterMethod) {\n\t\treturn new Paginated_default(data.items.map(adapterMethod), data.page, data.page_size, data.pages, data.total);\n\t}\n\tstatic parseFileNameFromContentDispositionHeader(header) {\n\t\tconst defaultFilename = `download-${DateTime.now().toFormat(\"yyyy-MM-dd HH-mm-ss\")}`;\n\t\tif (!header.startsWith(\"attachment\")) return defaultFilename;\n\t\tconst matches = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/.exec(header);\n\t\tif ((matches?.length || 0) < 2) return defaultFilename;\n\t\treturn matches[1].replaceAll(\"'\", \"\").replaceAll(\"\\\"\", \"\").replaceAll(\"/\", \"-\").replaceAll(\":\", \"-\");\n\t}\n\tstatic parseRequestError(data, statusCode) {\n\t\treturn new RequestError_default(data.code, data.error, data.error_description, statusCode);\n\t}\n\tstatic parseValidationError(data) {\n\t\tlet errors;\n\t\tif (data.errors) {\n\t\t\terrors = {};\n\t\t\tObject.entries(data.errors).forEach(([key, value]) => {\n\t\t\t\terrors[key] = _HttpAdapter.parseValidationError(value);\n\t\t\t});\n\t\t}\n\t\treturn new ValidationError_default(data.code, data.error, data.error_description, errors, data.params);\n\t}\n};\nHttpAdapter = _HttpAdapter = __decorate([adapter_default], HttpAdapter);\n//#endregion\n//#region src/http/BaseResponse.ts\nvar BaseResponse = class {\n\tget data() {\n\t\treturn this.#data;\n\t}\n\tget headers() {\n\t\treturn this.#response.headers;\n\t}\n\tget ok() {\n\t\treturn this.statusCode >= 200 && this.statusCode < 300;\n\t}\n\tget response() {\n\t\treturn this.#response;\n\t}\n\tget statusCode() {\n\t\treturn this.#response.status;\n\t}\n\t#data;\n\t#response;\n\tconstructor(data, response) {\n\t\tthis.#data = data;\n\t\tthis.#response = response;\n\t}\n};\n//#endregion\n//#region src/http/HttpClient.ts\nvar HttpClient = class HttpClient {\n\tget authToken() {\n\t\treturn this.#authToken;\n\t}\n\tset authToken(value) {\n\t\tthis.#authToken = value;\n\t}\n\tget baseUrl() {\n\t\treturn this.#baseUrl;\n\t}\n\tget dataField() {\n\t\treturn this.#dataField;\n\t}\n\t#authToken;\n\t#baseUrl;\n\t#dataField;\n\tconstructor(authToken, baseUrl, dataField = false) {\n\t\tthis.#authToken = authToken;\n\t\tthis.#baseUrl = baseUrl;\n\t\tthis.#dataField = dataField;\n\t}\n\tstatic get instance() {\n\t\tif (HttpClient.#instance === null) throw new Error(\"There is currently no HttpClient instance registered. Register one using the HttpClient.register() function.\");\n\t\treturn HttpClient.#instance;\n\t}\n\tstatic #instance = null;\n\tstatic register(client) {\n\t\tHttpClient.#instance = client;\n\t}\n};\n//#endregion\n//#region src/http/RequestAbortedError.ts\nvar RequestAbortedError_default = class extends Error {};\n//#endregion\n//#region src/http/RequestBuilder.ts\nconst abortControllers = {};\nvar RequestBuilder = class RequestBuilder {\n\tget client() {\n\t\treturn this.#client;\n\t}\n\tget options() {\n\t\treturn this.#options;\n\t}\n\tget path() {\n\t\treturn this.#path;\n\t}\n\tset path(value) {\n\t\tthis.#path = value;\n\t}\n\tget query() {\n\t\treturn this.#query;\n\t}\n\tset query(value) {\n\t\tthis.#query = value;\n\t}\n\t#client;\n\t#autoCancelIdentifier = null;\n\t#path;\n\t#options = {};\n\t#query = null;\n\tconstructor(path, client) {\n\t\tthis.#client = client ?? HttpClient.instance;\n\t\tthis.#options.cache = \"no-cache\";\n\t\tthis.#options.method = \"GET\";\n\t\tthis.#path = path;\n\t}\n\tautoCancel(identifier) {\n\t\tthis.#autoCancelIdentifier = identifier;\n\t\treturn this;\n\t}\n\tbearerToken(token) {\n\t\ttoken = token ?? this.#client.authToken;\n\t\tif (token) return this.header(\"Authorization\", `Bearer ${token}`);\n\t\tif (this.#options.headers && \"Authorization\" in this.#options.headers) delete this.#options.headers[\"Authorization\"];\n\t\treturn this;\n\t}\n\tbody(body, contentType = \"application/octet-stream\") {\n\t\tif (body instanceof FormData) contentType = null;\n\t\telse if (Array.isArray(body) || typeof body === \"object\") {\n\t\t\tbody = JSON.stringify(body);\n\t\t\tcontentType = \"application/json\";\n\t\t}\n\t\tthis.#options.body = body;\n\t\tif (contentType !== null) return this.header(\"Content-Type\", contentType);\n\t\treturn this;\n\t}\n\theader(name, value) {\n\t\tthis.#options.headers = this.#options.headers || {};\n\t\tthis.#options.headers[name] = value;\n\t\treturn this;\n\t}\n\tmethod(method) {\n\t\tthis.#options.method = method.toUpperCase();\n\t\treturn this;\n\t}\n\tqueryString(queryString) {\n\t\tthis.#query = queryString;\n\t\treturn this;\n\t}\n\tsignal(signal = null) {\n\t\tthis.#options.signal = signal;\n\t\treturn this;\n\t}\n\tasync fetch() {\n\t\treturn this.#execute().then((r) => r.json());\n\t}\n\tasync fetchBlob() {\n\t\tlet response = await this.#execute();\n\t\tif (response.status !== 200) {\n\t\t\tconst data = await response.json();\n\t\t\tif (\"code\" in data && \"error\" in data && \"error_description\" in data) throw new RequestError_default(data.code, data.error, data.error_description, response.status);\n\t\t\tthrow new RequestError_default(-1, \"failed_without_info\", \"Request failed without any information from the backend.\", response.status);\n\t\t}\n\t\tlet filename = response.headers.has(\"content-disposition\") ? HttpAdapter.parseFileNameFromContentDispositionHeader(response.headers.get(\"content-disposition\") ?? \"\") : `download-${DateTime.now().toFormat(\"yyyy-MM-dd HH-mm-ss\")}`;\n\t\treturn new BlobResponse_default(await response.blob(), filename);\n\t}\n\tasync run() {\n\t\tconst { data, response } = await this.#executeSafe();\n\t\treturn new BaseResponse(data, response);\n\t}\n\tasync runAdapter(adapterMethod) {\n\t\tconst { data, response } = await this.#executeSafe();\n\t\treturn new BaseResponse(adapterMethod(data), response);\n\t}\n\tasync runArrayAdapter(adapterMethod) {\n\t\treturn this.runAdapter((data) => data.map(adapterMethod));\n\t}\n\tasync runEmpty() {\n\t\treturn await this.#executeSafe();\n\t}\n\tasync runPaginatedAdapter(adapterMethod) {\n\t\treturn this.runAdapter((response) => HttpAdapter.parsePaginatedAdapter(response, adapterMethod));\n\t}\n\tasync runData() {\n\t\treturn await this.#executeSafe();\n\t}\n\tasync runDataKey(key) {\n\t\tconst { data, response } = await this.#executeSafe();\n\t\treturn new BaseResponse(data[key], response);\n\t}\n\tasync runStatusCode() {\n\t\treturn (await this.#executeSafe()).statusCode;\n\t}\n\tasync #execute() {\n\t\tif (this.#autoCancelIdentifier !== null) {\n\t\t\tif (this.#autoCancelIdentifier in abortControllers) abortControllers[this.#autoCancelIdentifier].abort(new RequestAbortedError_default());\n\t\t\tconst controller = new AbortController();\n\t\t\tabortControllers[this.#autoCancelIdentifier] = controller;\n\t\t\tthis.signal(controller.signal);\n\t\t}\n\t\tlet path = this.path;\n\t\tif (this.query !== null) path += `?${this.query.build()}`;\n\t\tconst response = await fetch(this.client.baseUrl + path, this.options);\n\t\tif (this.#autoCancelIdentifier !== null) delete abortControllers[this.#autoCancelIdentifier];\n\t\treturn response;\n\t}\n\tasync #executeSafe() {\n\t\treturn await this.#execute().then((response) => RequestBuilder.#handleResponse(response, this.client.dataField));\n\t}\n\tstatic async #handleResponse(response, dataField) {\n\t\tif (response.status === 204) return new BaseResponse(null, response);\n\t\tif (response.headers.has(\"content-type\") && response.headers.get(\"content-type\")?.startsWith(\"application/json\")) {\n\t\t\tconst data = await response.json();\n\t\t\tif (data && typeof data === \"object\" && \"code\" in data && \"error\" in data && \"error_description\" in data) {\n\t\t\t\tif (\"errors\" in data) throw HttpAdapter.parseValidationError(data);\n\t\t\t\tthrow HttpAdapter.parseRequestError(data, response.status);\n\t\t\t}\n\t\t\tif (dataField && \"data\" in data) return new BaseResponse(data.data, response);\n\t\t\treturn new BaseResponse(data, response);\n\t\t}\n\t\tif (response.status === 401 || response.status === 403) return new BaseResponse(null, response);\n\t\tif ((await response.text()).length === 0 && response.status >= 200 && response.status < 300) return new BaseResponse(null, response);\n\t\tthrow new RequestError_default(-1, \"not_a_json_response\", \"The response was not a JSON response.\", response.status);\n\t}\n};\n//#endregion\n//#region src/http/BaseService.ts\nvar BaseService = class {\n\trequest(path, client) {\n\t\treturn new RequestBuilder(path, client);\n\t}\n};\n//#endregion\n//#region src/http/QueryString.ts\nvar QueryString = class QueryString {\n\t#builder;\n\tconstructor() {\n\t\tthis.#builder = new URLSearchParams();\n\t}\n\tbuild() {\n\t\treturn this.#builder.toString();\n\t}\n\tappend(name, value) {\n\t\treturn this.#add(this.#builder.append.bind(this.#builder), name, value);\n\t}\n\tappendArray(name, values) {\n\t\tif (values === void 0 || values === null) return this;\n\t\tvalues.forEach((value) => this.append(name, value));\n\t\treturn this;\n\t}\n\tdelete(name) {\n\t\tthis.#builder.delete(name);\n\t\treturn this;\n\t}\n\tget(name) {\n\t\treturn this.#builder.get(name);\n\t}\n\tgetAll(name) {\n\t\treturn this.#builder.getAll(name);\n\t}\n\thas(name) {\n\t\treturn this.#builder.has(name);\n\t}\n\tset(name, value) {\n\t\treturn this.#add(this.#builder.set.bind(this.#builder), name, value);\n\t}\n\t#add(fn, name, value) {\n\t\tif (!value && value !== false) return this;\n\t\tswitch (typeof value) {\n\t\t\tcase \"boolean\":\n\t\t\t\tfn(name, value ? \"true\" : \"false\");\n\t\t\t\tbreak;\n\t\t\tcase \"number\":\n\t\t\t\tfn(name, value.toString(10));\n\t\t\t\tbreak;\n\t\t\tcase \"string\":\n\t\t\t\tfn(name, value);\n\t\t\t\tbreak;\n\t\t}\n\t\treturn this;\n\t}\n\tstatic builder() {\n\t\treturn new QueryString();\n\t}\n};\n//#endregion\n//#region src/http/helpers.ts\nfunction isRequestAborted(obj) {\n\treturn obj instanceof RequestAbortedError_default;\n}\nfunction isRequestError(obj) {\n\treturn obj instanceof RequestError_default;\n}\nfunction isUnsanctionedRequest(statusCode) {\n\tif (statusCode instanceof RequestError_default) statusCode = statusCode.statusCode;\n\treturn statusCode === 403 || statusCode === 401;\n}\nfunction isValidationError(obj) {\n\treturn obj instanceof ValidationError_default;\n}\n//#endregion\nexport { BaseResponse, BaseService, BlobResponse_default as BlobResponse, HttpAdapter, HttpClient, Paginated_default as Paginated, QueryString, RequestAbortedError_default as RequestAbortedError, RequestBuilder, RequestError_default as RequestError, ValidationError_default as ValidationError, adapter_default as adapter, assertDto_default as assertDto, bound_default as bound, cloneDto_default as cloneDto, debounce_default as debounce, deserialize_default as deserialize, dto_default as dto, executeIfDtoDirtyAndMarkClean_default as executeIfDtoDirtyAndMarkClean, isDto_default as isDto, isDtoClean_default as isDtoClean, isDtoDirty_default as isDtoDirty, isRequestAborted, isRequestError, isUnsanctionedRequest, isValidationError, markDtoClean, markDtoDirty, serialize_default as serialize };\n\n//# sourceMappingURL=index.mjs.map","import{computed as e,customRef as t,getCurrentInstance as n,isReactive as r,isRef as i,nextTick as a,onMounted as o,onScopeDispose as s,onUnmounted as c,provide as l,ref as u,toRefs as d,unref as f,watch as p,watchEffect as m}from\"vue\";import{converter as h,formatHex as g}from\"culori\";import{cloneDto as _,isRequestError as v,isUnsanctionedRequest as y,markDtoClean as ee}from\"@basmilius/http-client\";import{debounce as b,isHtmlElement as x}from\"@basmilius/utils\";import{useRoute as S,useRouter as C,viewDepthKey as w}from\"vue-router\";import{merge as T}from\"lodash-es\";import{createPinia as E,defineStore as D,getActivePinia as O,setActivePinia as te,storeToRefs as ne}from\"pinia\";function re(e){return e||null}const ie=h(`oklch`),ae=[25,50,100,200,300,400,500,600,700,800,900,950],k={25:0,50:.05,100:.1,200:.2,300:.35,400:.48,500:.55,600:.65,700:.75,800:.85,900:.93,950:.98};function A(e,t=0,n=1){return Math.min(n,Math.max(t,e))}function j(e,t=`color`){let n=ie(e);if(!n||n.mode!==`oklch`)throw Error(`Invalid color`);let r={};for(let e of ae){let i=k[e],a=e<500?n.l+(1-n.l)*(1-i/k[500]):n.l*(1-(i-k[500])/(1-k[500]));a=A(a);let o=1-Math.abs(i-k[500])*1.4,s=(n.c??0)*A(o,.2,1);r[`--${t}-${e}`]=g({mode:`oklch`,l:a,c:s,h:n.h})}return r}var M=class extends Error{},N=class extends Error{},P=class extends Error{},F=class extends Error{};const I=Symbol();function L(e,t){R(e)&&(e=e[I]);let n=async(...n)=>{try{return await e(...n)}catch(e){throw v(e)&&e.statusCode===403?new M:y(e)?new P:t&&typeof t==`function`?(t(e),new N):e}};return n[I]=e,n}function R(e){return I in e}function z(e){return(t=>L(t,e))}function B(e,t,n=JSON.stringify,r=JSON.parse){let i=localStorage.getItem(e),a=t;if(i)try{a=r(i)}catch{localStorage.removeItem(e)}let o=u(a);return p(o,t=>{t==null?localStorage.removeItem(e):localStorage.setItem(e,n(t))},{deep:!0}),o}function V(e,t){return B(e,t,e=>e??``,e=>e===``?null:e)}function H(e){return(t=>(...n)=>(e(),t(...n)))}function U(...e){return e.map(f).map(W)}function W(e){if(!e)throw new F;return e}function G(e){let t=f(e);return t?x(t)?t:t.$el??null:null}function K(e,t,n){let r=u([]);o(()=>{document.addEventListener(`pointerdown`,i)}),c(()=>{document.removeEventListener(`pointerdown`,i)});function i(e){f(t)&&!f(r).some(t=>t.contains(e.target))&&n(e)}m(()=>{let t=[];(Array.isArray(e)?e:[e]).forEach(e=>{let n=G(e);n&&t.push(n)}),r.value=t})}function q(){let t=n();return e(()=>t?.uid??(t?.proxy)._uid??0)}function J(e,t){return async()=>{await navigator.clipboard.writeText(f(e)),t?.()}}function Y(e,n,r=!1){let a=u(i(e)?e.value:e),o=t((e,t)=>({get(){return e(),a.value},set:oe(e=>{a.value=e,t()},n,r)}));return i(e)&&p(e,e=>o.value=e),o}function oe(e,t,n=!1){let r;return(...i)=>{n&&!r&&e(...i),clearTimeout(r),r=setTimeout(()=>requestAnimationFrame(()=>e(...i)),t)}}function X(t=0,n=!1){let r=u(n),i=u(0),a=e(()=>f(r)||f(i)>0);function o(e){return(async(...t)=>(i.value++,await e(...t).finally(()=>i.value--)))}let s=Y(a,t);return p(i,()=>{f(r)&&(r.value=!1)}),{isLoading:s,loaded:o}}const se=[5,10,25,50,100];function Z(){let e=u(se),t=u(1),n=u(25),r=u(0);function i(e){t.value=e}function a(e){n.value=e}function o(e){r.value=e}return{limits:e,page:t,perPage:n,total:r,setPage:i,setPerPage:a,setTotal:o}}function ce(e,t=[]){let{isLoading:n,loaded:r}=X(),{limits:i,page:a,perPage:o,total:s,setPage:c,setPerPage:l,setTotal:d}=Z(),m=u(!1),h=u(!0),g=u([]);async function _(){let t=f(a),n=f(o);try{let i=await r(e)((t-1)*n,n);if(i===!1)return;h.value?(h.value=!1,i.data.items.length===0&&(m.value=!0)):i.data.items.length>0&&(m.value=!1),g.value=i.data.items,d(i.data.total)}catch(e){if(e instanceof F)return;throw e}}return p([a,o,...t],_,{immediate:!0}),{displayEmpty:m,isLoading:n,items:g,limits:i,page:a,perPage:o,total:s,reload:_,setPage:c,setPerPage:l,setTotal:d}}function le(e,t){return b(e,t)}function ue(e){let t=u();return p(e,e=>{e&&(t.value=_(e),ee(t.value))},{immediate:!0}),t}function de(e,t){let n=u();o(()=>{i()}),c(()=>{clearTimeout(n.value)});function r(){n.value=setTimeout(()=>requestAnimationFrame(i),f(e))}function i(){r(),t()}}function fe(e){let{isLoading:t,loaded:n}=X();return[n(e),t]}function pe(){let e=u(null),t=u(null);return p(e,(e,n,r)=>{e&&(t.value=URL.createObjectURL(e),r(()=>{t.value&&=(URL.revokeObjectURL(t.value),null)}))},{immediate:!0}),{file:e,url:t,delete:()=>{e.value=null,t.value=null},upload:t=>{e.value=t}}}function me(){let e=u(!1);return o(()=>e.value=!0),e}function he(e,t,n){n??={attributes:!0};let r,i=p(e,e=>{a();let i=G(e);i&&(r=new MutationObserver(t),r.observe(i,n))},{immediate:!0});function a(){r&&=(r.disconnect(),void 0)}function o(){a(),i()}s(o)}const ge=[{index:0,type:`too_weak`,minimumDiversity:0,minimumLength:0},{index:1,type:`weak`,minimumDiversity:2,minimumLength:6},{index:2,type:`medium`,minimumDiversity:3,minimumLength:8},{index:3,type:`strong`,minimumDiversity:4,minimumLength:10}],_e=[{regex:RegExp(`[a-z]`),type:`lowercase`},{regex:RegExp(`[A-Z]`),type:`uppercase`},{regex:RegExp(`[0-9]`),type:`number`},{regex:RegExp(`[!\"#$%&'()*+,-./:;<=>?@[\\\\\\\\\\\\]^_\\`{|}~]`),type:`symbol`}];function ve(t){return e(()=>{let e=f(t);if(e.length===0)return null;let n=_e.filter(t=>t.regex.test(e)).map(e=>e.type);return{length:e.length,strength:ge.sort((e,t)=>t.index-e.index).find(t=>n.length>=t.minimumDiversity&&e.length>=t.minimumLength).type,rules:n}})}function ye(e,t,n){n??={};let r,i=p(e,e=>{a();let i=G(e);i&&(r=new ResizeObserver(t),r.observe(i,n))},{immediate:!0});function a(){r&&=(r.disconnect(),void 0)}function o(){a(),i()}s(o)}function be(e,...t){let n=new e,r=Object.getOwnPropertyNames(e.prototype).filter(e=>e!==`constructor`),i={};for(let e of r)i[e]=L(n[e].bind(n)),t.forEach(t=>i[e]=t(i[e]));return i}function xe(e){return typeof e==`number`?{toUrl(e){return typeof e!=`number`||Number.isNaN(e)?null:String(e)},fromUrl(e){let t=Number(e);return Number.isNaN(t)?null:t}}:typeof e==`boolean`?{toUrl(e){return typeof e==`boolean`?e?`1`:`0`:null},fromUrl(e){return e===`1`||e===`true`}}:{toUrl(e){return typeof e!=`string`||e.length===0?null:e},fromUrl(e){return e}}}function Q(e){if(r(e))return d(e);let t={};for(let[n,r]of Object.entries(e))t[n]=i(r)?r:u(r);return t}function Se(e,t={}){let n=S(),r=C(),i=Q(e),o=Object.keys(i),s=t.prefix?`${t.prefix}_`:``,c={},l={},u={};for(let e of o){let n=f(i[e]);c[e]=`${s}${e}`,l[e]=n,u[e]=t.serializers?.[e]??xe(n)}let d=!1;function m(e,t){let n=e[t];return typeof n!=`string`||n.length===0?null:n}function h(e){for(let t of o){let n=m(e,c[t]),r=n===null?l[t]:u[t].fromUrl(n);i[t].value!==r&&(i[t].value=r)}}h(n.query),p(o.map(e=>i[e]),()=>{if(d)return;let e={...n.query},t=!1;for(let n of o){let r=c[n],a=f(i[n]),o=a===l[n]?null:u[n].toUrl(a);o===null?r in e&&(delete e[r],t=!0):e[r]!==o&&(e[r]=o,t=!0)}t&&r.replace({query:e})}),p(()=>n.query,async e=>{d=!0,h(e),await a(),d=!1})}function $(){let t=S();return e(()=>{let e=[];return f(t).matched.forEach(t=>t.name&&e.push(t.name)),e})}function Ce(t,n=!1){let r=$();return e(n?()=>f(r).some(e=>e.startsWith(t)):()=>f(r).some(e=>e===t))}function we(t){let n=S(),r=e(()=>f(n).matched.findIndex(e=>!!e.components&&f(t)in e.components)),i=e(()=>f(n).matched[f(r)]),a=e(()=>f(i)?.path);return l(w,r),{route:n,viewKey:a}}function Te(...e){let t=C(),n=async(e,n=!1)=>n?await t.replace(e):await t.push(e);for(let t of e)n=t(n);return{navigate:n,push:e=>n(e),replace:e=>n(e,!0)}}function Ee(){let t=S();return e(()=>{let e=f(t).matched,n={};for(let t=e.length-1;t>=0;--t){let r=e[t];if(!r||typeof r.meta!=`object`)continue;let i={...r.meta};if(`navigation`in n){let{navigation:e,...t}=i;i=t}n=T(n,i)}return n})}function De(e,t=null){let n=S(),r=u(f(n).params[e]??t);return p(()=>f(n).params[e],e=>{r.value=e||null},{immediate:!0}),r}function Oe(t){let n=S();return e(()=>{let e=f(t);for(let t of f(n).matched)if(t.components&&e in t.components)return t.components[e];return null})}function ke(e,t){let n=D(e,t);return()=>{let e=n(),t=Object.getOwnPropertyNames(e),r=ne(e),i={};for(let n of t)if(!(n.startsWith(`$`)||n.startsWith(`_`))){if(n in r){i[n]=r[n];continue}i[n]=e[n]}return i}}export{M as ForbiddenException,N as HandledException,P as UnauthorizedException,F as UnresolvedDependencyException,E as createPinia,ke as defineStore,re as emptyNull,j as generateColorPalette,O as getActivePinia,L as guarded,z as onError,B as persistentRef,V as persistentStringRef,H as runBefore,te as setActivePinia,U as unrefAll,G as unwrapElement,K as useClickOutside,q as useComponentId,J as useCopy,ce as useDataTable,le as useDebounced,Y as useDebouncedRef,ue as useDtoForm,de as useInterval,Ce as useIsView,X as useLoaded,fe as useLoadedAction,pe as useLocalFile,me as useMounted,he as useMutationObserver,we as useNamedRoute,Te as useNavigate,Z as usePagination,ve as usePasswordStrength,ye as useResizeObserver,Ee as useRouteMeta,$ as useRouteNames,De as useRouteParam,Oe as useRouteView,be as useService,Se as useUrlState};\n//# sourceMappingURL=index.mjs.map","import{a as e,d as t,f as n,n as r,r as i,s as a,t as o}from\"./util-CwaOsSvo.js\";import{computed as s,onMounted as c,onUnmounted as l,ref as u,toValue as d,unref as f,watch as p}from\"vue\";import{DateTime as m}from\"luxon\";import{unwrapElement as h,useMutationObserver as g}from\"@basmilius/common\";function _(e,t){let n=u(!1),r=u(e),i=s(()=>{let e=[],t=f(r).month,n=f(r).startOf(`month`);do e.push(n),n=n.plus({day:1});while(n.month===t);let i=e[0],a=e[e.length-1];for(let t=1;t<i.weekday;++t)e.unshift(i.minus({day:t}));for(let t=a.weekday+1;t<=7;++t)e.push(a.plus({day:t-a.weekday}));for(;e.length/7<6;){let t=e[e.length-1];for(let n=1;n<=7;++n)e.push(t.plus({day:n}))}return e}),a=s(()=>f(i).slice(0,7).map(e=>e.toLocaleString({weekday:t?.weekDayLength??`short`}))),o=s(()=>f(r).plus({month:1})),c=s(()=>f(r).minus({month:1})),l=s(()=>f(r).toLocaleString({month:t?.monthLength??`long`})),d=s(()=>f(r).year.toString());function p(e){n.value=r.value>e,r.value=e}function m(){p(f(r).plus({month:1}))}function h(){p(f(r).minus({month:1}))}return{isTransitioningToPast:n,viewDate:r,viewDateNext:o,viewDatePrevious:c,viewMonth:l,viewYear:d,dates:i,days:a,setViewDate:p,nextMonth:m,previousMonth:h}}function v(e,t){return{months:s(()=>{let n=[],r=f(e),i=r.startOf(`year`);for(;i.month<=12&&i.year===r.year;)n.push({date:i,label:i.toLocaleString({month:t})}),i=i.plus({months:1});return n})}}function y(e,t){return t===7?e.startOf(`week`):e.startOf(`day`)}function b(e){return e===7?{week:1}:e===2?{day:2}:{day:1}}function x(e,t){let n=u(!1),r=u(y(e,d(t)));p(()=>d(t),e=>{r.value=y(f(r),e)});let i=s(()=>{let e=f(r),n=d(t),i=[];for(let t=0;t<n;++t)i.push(e.plus({day:t}));return i}),a=s(()=>{let e=f(i),n=e[0],r=e[e.length-1];if(d(t)===1)return n.toLocaleString({weekday:`long`,day:`numeric`,month:`long`,year:`numeric`});let a=n.month===r.month,o=n.year===r.year;return`${n.toLocaleString(a&&o?{weekday:`short`,day:`numeric`}:{weekday:`short`,day:`numeric`,month:`short`})} – ${r.toLocaleString({weekday:`short`,day:`numeric`,month:`short`,year:o?void 0:`numeric`})}`});function o(e){let i=y(e,d(t));n.value=f(r)>i,r.value=i}function c(){o(f(r).plus(b(d(t))))}function l(){o(f(r).minus(b(d(t))))}return{isTransitioningToPast:n,viewDate:r,viewDates:i,rangeLabel:a,setViewDate:o,next:c,previous:l}}function S(e,t=10){let n=u(0),r=s(()=>{let r=f(e).year,i=[],a=r-r%t+f(n)*t;for(let e=0;e<t;++e)i.push(a+e);return i});function i(){++n.value}function a(){--n.value}return p(e,()=>n.value=0),{years:r,next:i,previous:a}}let C=null;function w(){if(C)return C;if(typeof document>`u`)return null;let e=document.createElement(`div`);return e.setAttribute(`role`,`status`),e.setAttribute(`aria-live`,`polite`),e.setAttribute(`aria-atomic`,`true`),e.style.cssText=`position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0`,document.body.appendChild(e),C=e,e}function T(e){let t=w();t&&(t.textContent=``,requestAnimationFrame(()=>{t.textContent=e}))}function E(e){let t=u(null);e.announce;let n=s(()=>{let t=f(e.itemId),n=f(e.grabbedId);return t!=null&&n===t});function r(){t.value=null}function i(r){if(f(e.isDraggable)&&f(e.itemId)!=null){if(!n.value){(r.key===` `||r.key===`Enter`)&&(r.preventDefault(),t.value=e.onGrab());return}switch(r.key){case`ArrowUp`:r.preventDefault(),e.onMove(`up`);break;case`ArrowDown`:r.preventDefault(),e.onMove(`down`);break;case`ArrowLeft`:r.preventDefault(),e.onMove(`left`);break;case`ArrowRight`:r.preventDefault(),e.onMove(`right`);break;case` `:case`Enter`:{r.preventDefault();let n=t.value;t.value=null,n!==null&&e.onCommit(n);break}case`Escape`:{r.preventDefault();let n=t.value;t.value=null,n!==null&&e.onCancel(n);break}}}}return{isGrabbed:n,handleKeyDown:i,release:r}}function D(e,t,n,r={passive:!0}){p(e,(e,i,a)=>{e&&(e.addEventListener(t,n,r),a(()=>e.removeEventListener(t,n)))},{immediate:!0})}function O(t,n={}){let r=u(n.initial??!1);return p(t,(i,a,o)=>{let s=e(t);if(!s)return;let c=new IntersectionObserver(e=>r.value=e[0]?.isIntersecting??!1,n);c.observe(s),o(()=>c.disconnect())},{immediate:!0}),r}function k(e,t){let n=`flux/${e}`,r=u(i()??t);function i(){if(n in localStorage){let e=JSON.parse(localStorage.getItem(n));return Array.isArray(e)&&e[0]===`DateTime`&&(e=m.fromISO(e[1])),e}return null}return p(r,e=>{let t=e;m.isDateTime(e)&&(t=[`DateTime`,e.toISO({includeOffset:!0,extendedZone:!0})]),localStorage.setItem(n,JSON.stringify(t))}),r}function A(t){let n=u(!0),r=u(!0),i=u(!0),a=u(!0);return p(t,(o,s,c)=>{let l=e(t);if(!l)return;let u=()=>{let{scrollTop:e,scrollHeight:t,clientHeight:o,scrollLeft:s,scrollWidth:c,clientWidth:u}=l;n.value=e<=0,r.value=Math.ceil(e+o)>=t,i.value=s<=0,a.value=Math.ceil(s+u)>=c},d=new ResizeObserver(u);d.observe(l);for(let e of Array.from(l.children))d.observe(e);let f=new MutationObserver(e=>{for(let t of e){for(let e of Array.from(t.addedNodes))e instanceof Element&&d.observe(e);for(let e of Array.from(t.removedNodes))e instanceof Element&&d.unobserve(e)}u()});f.observe(l,{childList:!0}),l.addEventListener(`scroll`,u,{passive:!0}),u(),c(()=>{l.removeEventListener(`scroll`,u),d.disconnect(),f.disconnect()})},{immediate:!0}),{isAtStart:n,isAtEnd:r,isAtLeft:i,isAtRight:a}}function j(e){let t=u(0),n=u(0);return e||=u(document),D(e,`scroll`,()=>{let r=f(e);r instanceof Document&&(r=r.scrollingElement),t.value=r?.scrollLeft??0,n.value=r?.scrollTop??0}),{x:t,y:n}}let M=0;function N(e=!1){let t=u(`focus-trap-${++M}`),n=u(!1);return c(()=>r.add(f(t),e=>n.value=e,e)),l(()=>r.remove(f(t))),n}function P(t,n){p(t,(r,i,a)=>{if(!e(t)||f(n))return;let o=document.activeElement;a(()=>{requestAnimationFrame(()=>o?.focus())})})}function F(t,r={}){if(o)return;let{disable:a=u(!1),disableReturn:s=u(!1),attachTo:c=null}=r,l=N(!a);P(t,s),p(t,(r,a,o)=>{let s=e(t),u=c||document;l.value&&s&&document.activeElement&&!s.contains(document.activeElement)&&!s.querySelector(`[autofocus]`)&&i(s,document.activeElement,!0);function d(e){if(!l.value||!s)return;let t=e.target||document.body;s.contains(t)||(e.preventDefault(),e.stopImmediatePropagation(),i(s,t))}function f(e){if(!l.value||!s)return;(!e.relatedTarget||e.relatedTarget===document.body)&&(e.preventDefault(),s.focus());let t=e.target||document.body;s.contains(t)||i(s,t)}if(u.addEventListener(`focusin`,d,{capture:!0}),u.addEventListener(`focusout`,f,{capture:!0}),s){let e=s.querySelector(`[autofocus]`);if(e)e.focus();else{let e=n(s),t=e.findIndex(e=>e.classList.contains(`is-active`)),r=e.findIndex(e=>!e.hasAttribute(`aria-disabled`)),i=e[0];t>-1&&(i=e[t]),r>-1&&(i=e[r]),i?i.focus():s.focus()}}o(()=>{u.removeEventListener(`focusin`,d),u.removeEventListener(`focusout`,f)})},{immediate:!0}),p(()=>a,()=>{let r=e(t);if(l.value=!a,a||!r)return;let i=n(r);i.includes(document.activeElement)||i[0]?.focus()},{immediate:!0})}function I(e){let t=u(null);c(()=>t.value=r.subscribe(e)),l(()=>t.value?.())}function L(e,{cycle:t=!0,direction:r=`bidirectional`}={}){g(e,()=>a(i(),!1));function i(){let t=n(h(e)),r=t.findIndex(e=>e.classList.contains(`is-active`)),i=t.findIndex(e=>!e.hasAttribute(`aria-disabled`));return r>-1?r:i>-1?i:0}function a(t,r=!0){let i=n(h(e));i.forEach((e,n)=>e.tabIndex=n===t?0:-1),r&&i[t]?.focus()}function o(i){let o=h(e),s=n(o);if(![`Enter`,` `].includes(i.key))switch(r){case`bidirectional`:R(i,o,s,a);break;case`horizontal`:case`vertical`:z(i,o,t,r,s,a);break}}p(e,(t,n,r)=>{let s=h(e);s&&(s.addEventListener(`keydown`,o),a(i(),!1),r(()=>s.removeEventListener(`keydown`,o)))},{immediate:!0})}function R(e,n,r,i){let a;switch(e.key){case`ArrowUp`:a=`up`;break;case`ArrowDown`:a=`down`;break;case`ArrowLeft`:a=`left`;break;case`ArrowRight`:a=`right`;break;default:return}let o=t(n,document.activeElement,a);o&&i(r.indexOf(o)),e.preventDefault()}function z(e,t,n,r,i,o){let s;if(e.key===(r===`horizontal`?`ArrowLeft`:`ArrowUp`))s=-1;else if(e.key===(r===`horizontal`?`ArrowRight`:`ArrowDown`))s=1;else return;let c=a(t,s);c?o(i.indexOf(c)):n&&o(s===1?0:i.length-1),e.preventDefault()}export{N as a,k as c,T as d,E as f,_ as g,v as h,P as i,O as l,x as m,I as n,j as o,S as p,F as r,A as s,L as t,D as u};\n//# sourceMappingURL=composable-5ooZTjm_.js.map","import type { InjectionKey, Ref } from 'vue';\n\nexport const FluxDashboardInjectionKey: InjectionKey<FluxDashboardInjection> = Symbol();\n\nexport type FluxDashboardInjection = {\n readonly isMenuCollapsed: Ref<boolean>;\n readonly isNavigationCollapsed: Ref<boolean>;\n};\n","@use '../../../../components/src/css/mixin';\n\n:root {\n --dashboard-background: var(--gray-25);\n --dashboard-duration: 360ms;\n --dashboard-navigation-background: var(--primary-950);\n --dashboard-navigation-foreground: var(--primary-25);\n}\n\n[dark] {\n --dashboard-navigation-background: color-mix(in srgb, var(--gray-25), black 25%);\n --dashboard-navigation-foreground: var(--gray-800);\n}\n\nbody:has(.root > .dashboard) {\n background: var(--dashboard-background);\n}\n\n.dashboard {\n min-height: 100dvh;\n}\n\n.dashboardMount {\n display: flex;\n align-items: stretch;\n flex-flow: column;\n}\n\n.isResizing, .isResizing * {\n animation: none !important;\n transition: none !important;\n}\n\n@include mixin.breakpoint-up(lg) {\n .dashboard {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n grid-template-rows: minmax(0, 1fr);\n transition: padding-left var(--dashboard-duration) var(--swift-out);\n\n &:has(> .dashboardNavigation) {\n padding-left: 300px;\n }\n\n &:has(> .dashboardNavigationCollapsed) {\n padding-left: 84px;\n }\n\n .dashboardMount {\n grid-column: 2;\n }\n\n .dashboardMenu {\n grid-column: 1;\n }\n\n .dashboardSide {\n grid-column: 3;\n }\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboard {\n display: flex;\n padding-top: 84px;\n flex-flow: column;\n }\n}\n","<template>\n <div :class=\"[$style.dashboard, isResizing && $style.isResizing]\">\n <slot name=\"navigation\"/>\n <slot name=\"menu\"/>\n\n <div :class=\"$style.dashboardMount\">\n <slot name=\"header\"/>\n <slot/>\n </div>\n\n <slot name=\"side\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useRemembered } from '@flux-ui/internals';\n import { provide, ref, type VNode, watch } from 'vue';\n import { FluxDashboardInjectionKey } from '~flux/dashboard/data';\n import $style from '~flux/dashboard/css/component/Dashboard.module.scss';\n\n defineSlots<{\n default(): VNode;\n header?(): VNode;\n navigation?(): VNode;\n menu?(): VNode;\n side?(): VNode;\n }>();\n\n const isMenuCollapsed = useRemembered('dashboard-menu-collapsed', true);\n const isNavigationCollapsed = useRemembered('dashboard-navigation-collapsed', true);\n const isResizing = ref(false);\n\n provide(FluxDashboardInjectionKey, {\n isMenuCollapsed,\n isNavigationCollapsed\n });\n\n watch(isNavigationCollapsed, (_, __, onCleanup) => {\n let timeout: any;\n\n function onResize(): void {\n clearTimeout(timeout);\n isResizing.value = true;\n timeout = setTimeout(() => isResizing.value = false, 10);\n }\n\n window.addEventListener('resize', onResize, {passive: true});\n\n onCleanup(() => window.removeEventListener('resize', onResize));\n }, {immediate: true});\n</script>\n","<template>\n <div :class=\"[$style.dashboard, isResizing && $style.isResizing]\">\n <slot name=\"navigation\"/>\n <slot name=\"menu\"/>\n\n <div :class=\"$style.dashboardMount\">\n <slot name=\"header\"/>\n <slot/>\n </div>\n\n <slot name=\"side\"/>\n </div>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useRemembered } from '@flux-ui/internals';\n import { provide, ref, type VNode, watch } from 'vue';\n import { FluxDashboardInjectionKey } from '~flux/dashboard/data';\n import $style from '~flux/dashboard/css/component/Dashboard.module.scss';\n\n defineSlots<{\n default(): VNode;\n header?(): VNode;\n navigation?(): VNode;\n menu?(): VNode;\n side?(): VNode;\n }>();\n\n const isMenuCollapsed = useRemembered('dashboard-menu-collapsed', true);\n const isNavigationCollapsed = useRemembered('dashboard-navigation-collapsed', true);\n const isResizing = ref(false);\n\n provide(FluxDashboardInjectionKey, {\n isMenuCollapsed,\n isNavigationCollapsed\n });\n\n watch(isNavigationCollapsed, (_, __, onCleanup) => {\n let timeout: any;\n\n function onResize(): void {\n clearTimeout(timeout);\n isResizing.value = true;\n timeout = setTimeout(() => isResizing.value = false, 10);\n }\n\n window.addEventListener('resize', onResize, {passive: true});\n\n onCleanup(() => window.removeEventListener('resize', onResize));\n }, {immediate: true});\n</script>\n","import { inject } from 'vue';\nimport { type FluxDashboardInjection, FluxDashboardInjectionKey } from '~flux/dashboard/data';\n\nexport default function (): FluxDashboardInjection {\n const injection = inject(FluxDashboardInjectionKey);\n\n if (!injection) {\n throw new Error('[Flux] useDashboardInjection() was used outside a FluxDashboard component.');\n }\n\n return injection;\n}\n","@use '../../../../components/src/css/mixin';\n\n.notice + .dashboardContent {\n padding-top: 21px;\n}\n\n.dashboardContent {\n display: flex;\n padding: 0 21px;\n flex-flow: column;\n flex-grow: 1;\n\n > :is(.calendar, .table) {\n margin-left: -21px;\n margin-right: -21px;\n height: calc(100dvh - 84px);\n flex-grow: 1;\n }\n\n > .calendar {\n border-left: 0;\n border-right: 0;\n border-radius: 0;\n\n .calendarActions {\n padding-left: 21px;\n padding-right: 21px;\n }\n }\n\n > .table {\n border-top: 1px solid var(--surface-stroke);\n\n .tableCell:first-child .tableCellContent {\n padding-left: 21px;\n }\n\n .tableCell:last-child .tableCellContent {\n padding-right: 21px;\n }\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboardContentCollapsed {\n display: none;\n }\n}\n","<template>\n <main :class=\"[$style.dashboardContent, !isMenuCollapsed && $style.dashboardContentCollapsed]\">\n <slot/>\n </main>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '~flux/dashboard/composable';\n import $style from '~flux/dashboard/css/component/DashboardContent.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <main :class=\"[$style.dashboardContent, !isMenuCollapsed && $style.dashboardContentCollapsed]\">\n <slot/>\n </main>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '~flux/dashboard/composable';\n import $style from '~flux/dashboard/css/component/DashboardContent.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","@use '~flux/components/css/mixin';\n\n.dashboardTopBar {\n position: sticky;\n display: flex;\n top: 0;\n height: 72px;\n padding-left: 21px;\n padding-right: 21px;\n align-items: center;\n flex-flow: row;\n gap: 15px;\n background: rgb(from var(--gray-25) r g b / .9);\n backdrop-filter: blur(10px) saturate(180%);\n z-index: 100;\n\n > h1 {\n font-size: 16px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n > .icon {\n color: var(--foreground-prominent);\n }\n\n > .separator {\n height: 24px;\n }\n}\n\n.dashboardHeader:not(.routeTransitionEnterActive):not(.routeTransitionLeaveActive) {\n transition: box-shadow var(--dashboard-duration) var(--swift-out);\n}\n\n.dashboardHeaderScrolled {\n composes: dashboardHeader;\n\n box-shadow: var(--shadow-md);\n}\n\n[dark] .dashboardHeaderScrolled {\n box-shadow: 0 1px 0 var(--gray-50), var(--shadow-md);\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboard > .dashboardTopBar {\n top: 84px;\n }\n\n .dashboard > .dashboardTopBarCollapsed {\n display: none;\n }\n}\n","<template>\n <header :class=\"[$style.dashboardTopBar, !isMenuCollapsed && $style.dashboardTopBarCollapsed]\">\n <slot/>\n </header>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '~flux/dashboard/composable';\n import $style from '~flux/dashboard/css/component/DashboardTopBar.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <header :class=\"[$style.dashboardTopBar, !isMenuCollapsed && $style.dashboardTopBarCollapsed]\">\n <slot/>\n </header>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { useDashboardInjection } from '~flux/dashboard/composable';\n import $style from '~flux/dashboard/css/component/DashboardTopBar.module.scss';\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <FluxDashboardTopBar :class=\"y > 0 ? $style.dashboardHeaderScrolled : $style.dashboardHeader\">\n <slot name=\"start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"end\"/>\n </FluxDashboardTopBar>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import { useScrollPosition } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '~flux/dashboard/css/component/DashboardTopBar.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {y} = useScrollPosition();\n</script>\n","<template>\n <FluxDashboardTopBar :class=\"y > 0 ? $style.dashboardHeaderScrolled : $style.dashboardHeader\">\n <slot name=\"start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"end\"/>\n </FluxDashboardTopBar>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import { useScrollPosition } from '@flux-ui/internals';\n import type { FluxIconName } from '@flux-ui/types';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '~flux/dashboard/css/component/DashboardTopBar.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {y} = useScrollPosition();\n</script>\n","@use '../../../../components/src/css/mixin';\n\n.dashboardPane {\n background: var(--gray-50);\n overflow: auto;\n z-index: 200;\n\n .menuSubHeader {\n background: linear-gradient(to bottom, var(--gray-50) 75%, transparent);\n }\n\n .dashboardTopBar {\n background: rgb(from var(--gray-50) r g b / .9);\n }\n\n .filter {\n --background: var(--gray-50);\n\n max-height: calc(100dvh - 84px);\n margin-top: -9px;\n padding: 9px 18px 18px;\n width: 100%;\n\n .filterHeader {\n margin-left: -18px;\n margin-right: -18px;\n padding-left: 18px;\n padding-right: 18px;\n }\n\n .menu {\n font-size: 14px;\n }\n\n .menuItemCommand {\n font-size: 12px;\n }\n\n .menuItemIcon {\n font-size: 16px;\n }\n\n .menu > :where(.divider, .separator) {\n margin-left: -18px;\n margin-right: -18px;\n }\n }\n}\n\n.dashboardMenu {\n composes: dashboardPane;\n\n border-right: 1px solid var(--surface-stroke);\n}\n\n.dashboardMenuBody {\n padding: 0 18px 21px;\n}\n\n.dashboardSide {\n composes: dashboardPane;\n\n border-left: 1px solid var(--surface-stroke);\n}\n\n@include mixin.breakpoint-up(lg) {\n .dashboardPane {\n position: sticky;\n top: 0;\n height: 100dvh;\n width: 300px;\n grid-row: 1 / span 2;\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboardMenu {\n height: calc(100dvh - 84px);\n }\n\n .dashboardMenuCollapsed {\n display: none;\n }\n}\n","<template>\n <aside :class=\"[$style.dashboardMenu, isMenuCollapsed && $style.dashboardMenuCollapsed]\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <div :class=\"$style.dashboardMenuBody\">\n <slot/>\n </div>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import type { FluxIconName } from '@flux-ui/types';\n import { useDashboardInjection } from '~flux/dashboard/composable';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '~flux/dashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","<template>\n <aside :class=\"[$style.dashboardMenu, isMenuCollapsed && $style.dashboardMenuCollapsed]\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <FluxIcon\n v-if=\"icon\"\n :name=\"icon\"/>\n\n <h1 v-if=\"title\">\n {{ title }}\n </h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <div :class=\"$style.dashboardMenuBody\">\n <slot/>\n </div>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxIcon, FluxSpacer } from '@flux-ui/components';\n import type { FluxIconName } from '@flux-ui/types';\n import { useDashboardInjection } from '~flux/dashboard/composable';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '~flux/dashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly icon?: FluxIconName;\n readonly title?: string;\n }>();\n\n const {isMenuCollapsed} = useDashboardInjection();\n</script>\n","@use '../../../../components/src/css/mixin';\n\n.dashboardNavigation {\n position: fixed;\n display: flex;\n top: 0;\n left: 0;\n background: var(--dashboard-navigation-background);\n color: var(--dashboard-navigation-foreground);\n z-index: 750;\n\n .divider {\n margin: 3px 15px;\n }\n\n .dividerLine {\n background: var(--primary-900);\n }\n\n .menu {\n flex-grow: 1;\n }\n\n .menuItem {\n height: 54px;\n min-width: 54px;\n padding: 15px;\n gap: 21px;\n color: var(--dashboard-navigation-foreground);\n overflow: hidden;\n\n @media (hover: hover) {\n &:hover {\n background: var(--primary-900);\n }\n }\n\n &:active {\n background: var(--primary-800);\n }\n }\n\n .menuItemHighlighted {\n background: var(--primary-900);\n }\n\n .menuItemIcon {\n margin-left: 0;\n margin-right: 0;\n color: var(--dashboard-navigation-foreground);\n font-size: 24px;\n }\n\n .menuItemLabel {\n transition: var(--dashboard-duration) var(--swift-out);\n transition-property: filter, opacity, translate;\n white-space: nowrap;\n }\n}\n\n.dashboardNavigationCollapsed {\n composes: dashboardNavigation;\n}\n\n[dark] .dashboardNavigation {\n .dividerLine {\n background: var(--gray-100);\n }\n\n .menuItem {\n @media (hover: hover) {\n &:hover {\n background: var(--gray-100);\n }\n }\n\n &:active {\n background: var(--gray-200);\n }\n }\n\n .menuItemHighlighted {\n background: var(--gray-50);\n }\n}\n\n.dashboardNavigationLogo {\n display: flex;\n height: 54px;\n width: 54px;\n align-items: center;\n justify-content: center;\n\n :is(svg) {\n max-height: 48px;\n max-width: 48px;\n width: 100%;\n }\n}\n\n.dashboardNavigationRoundingFix {\n position: absolute;\n display: block;\n height: var(--radius);\n width: var(--radius);\n content: '';\n background: var(--dashboard-navigation-background);\n transition: left var(--dashboard-duration) var(--swift-out);\n\n &::before {\n position: absolute;\n display: block;\n inset: 0;\n content: '';\n background: var(--gray-50);\n }\n}\n\n.dashboard:not(:has(.dashboardMenu)) .dashboardNavigationRoundingFix::before {\n background: var(--gray-25);\n}\n\n@include mixin.breakpoint-up(lg) {\n .dashboardNavigation {\n height: 100dvh;\n width: 300px;\n padding: 15px;\n flex-flow: column;\n gap: 15px;\n transition: width var(--dashboard-duration) var(--swift-out);\n }\n\n .dashboardNavigationCollapsed {\n width: 84px;\n\n .menuItemLabel {\n filter: blur(6px);\n opacity: 0;\n translate: -12px 0;\n }\n }\n\n .dashboardNavigationHeader {\n display: flex;\n\n .menuItem {\n display: none;\n }\n }\n\n .dashboardNavigationNav {\n display: flex;\n flex-flow: column;\n flex-grow: 1;\n }\n\n .dashboardNavigationRoundingFix {\n left: 100%;\n\n &:first-of-type {\n top: 0;\n\n &::before {\n border-top-left-radius: var(--radius);\n }\n }\n\n &:not(:first-of-type) {\n bottom: 0;\n\n &::before {\n border-bottom-left-radius: var(--radius);\n }\n }\n }\n}\n\n@include mixin.breakpoint-down(md) {\n .dashboardNavigation {\n width: 100dvw;\n height: 84px;\n\n &::after {\n position: fixed;\n display: block;\n inset: 0;\n width: 100dvw;\n height: 100dvh;\n content: '';\n background: rgb(from var(--gray-200) r g b / .5);\n backdrop-filter: blur(3px) saturate(180%);\n transition: var(--dashboard-duration) var(--swift-out);\n transition-property: background, backdrop-filter;\n z-index: 1900;\n }\n }\n\n .dashboardNavigationHeader {\n display: flex;\n width: inherit;\n height: inherit;\n padding: 0 15px;\n align-items: center;\n flex-flow: row;\n justify-content: space-between;\n\n .menuItem {\n align-self: center;\n justify-content: center;\n }\n }\n\n .dashboardNavigationNav {\n position: fixed;\n display: flex;\n top: 0;\n left: 0;\n width: min(300px, calc(100dvw - 42px));\n height: 100dvh;\n padding: 15px;\n flex-flow: column;\n background: var(--dashboard-navigation-background);\n transition: translate var(--dashboard-duration) var(--swift-out);\n z-index: 2000;\n }\n\n .dashboardNavigationRoundingFix {\n position: fixed;\n top: 84px;\n z-index: 750;\n\n &:first-of-type {\n left: 0;\n\n &::before {\n border-top-left-radius: var(--radius);\n }\n }\n\n &:not(:first-of-type) {\n right: 0;\n\n &::before {\n border-top-right-radius: var(--radius);\n }\n }\n }\n\n .dashboardNavigationCollapsed {\n &::after {\n background: transparent;\n backdrop-filter: none;\n pointer-events: none;\n }\n\n .dashboardNavigationNav {\n pointer-events: none;\n translate: -100% 0;\n }\n }\n}\n","<template>\n <nav\n v-bind=\"$attrs\"\n :class=\"isNavigationCollapsed ? $style.dashboardNavigationCollapsed : $style.dashboardNavigation\">\n <header :class=\"$style.dashboardNavigationHeader\">\n <FluxMenuItem\n icon-leading=\"bars\"\n @click=\"isNavigationCollapsed = !isNavigationCollapsed\"/>\n\n <router-link\n v-if=\"slots.logo\"\n :class=\"$style.dashboardNavigationLogo\"\n :to=\"logoLocation || '/'\">\n <slot\n name=\"logo\"\n v-bind=\"{isNavigationCollapsed}\"/>\n </router-link>\n\n <FluxMenuItem\n icon-leading=\"ellipsis-h\"\n @click=\"isMenuCollapsed = !isMenuCollapsed\"/>\n </header>\n\n <div\n v-for=\"index of 2\"\n :key=\"index\"\n :class=\"$style.dashboardNavigationRoundingFix\"/>\n\n <main :class=\"$style.dashboardNavigationNav\">\n <slot/>\n </main>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxMenuItem } from '@flux-ui/components';\n import type { FluxTo } from '@flux-ui/types';\n import { useDashboardInjection } from '~flux/dashboard/composable';\n import $style from '~flux/dashboard/css/component/DashboardNavigation.module.scss';\n\n defineOptions({\n inheritAttrs: false\n });\n\n defineProps<{\n logoLocation?: FluxTo\n }>();\n\n const slots = defineSlots<{\n default(): any;\n logo?(): any;\n }>();\n\n const {\n isMenuCollapsed,\n isNavigationCollapsed\n } = useDashboardInjection();\n</script>\n","<template>\n <nav\n v-bind=\"$attrs\"\n :class=\"isNavigationCollapsed ? $style.dashboardNavigationCollapsed : $style.dashboardNavigation\">\n <header :class=\"$style.dashboardNavigationHeader\">\n <FluxMenuItem\n icon-leading=\"bars\"\n @click=\"isNavigationCollapsed = !isNavigationCollapsed\"/>\n\n <router-link\n v-if=\"slots.logo\"\n :class=\"$style.dashboardNavigationLogo\"\n :to=\"logoLocation || '/'\">\n <slot\n name=\"logo\"\n v-bind=\"{isNavigationCollapsed}\"/>\n </router-link>\n\n <FluxMenuItem\n icon-leading=\"ellipsis-h\"\n @click=\"isMenuCollapsed = !isMenuCollapsed\"/>\n </header>\n\n <div\n v-for=\"index of 2\"\n :key=\"index\"\n :class=\"$style.dashboardNavigationRoundingFix\"/>\n\n <main :class=\"$style.dashboardNavigationNav\">\n <slot/>\n </main>\n </nav>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxMenuItem } from '@flux-ui/components';\n import type { FluxTo } from '@flux-ui/types';\n import { useDashboardInjection } from '~flux/dashboard/composable';\n import $style from '~flux/dashboard/css/component/DashboardNavigation.module.scss';\n\n defineOptions({\n inheritAttrs: false\n });\n\n defineProps<{\n logoLocation?: FluxTo\n }>();\n\n const slots = defineSlots<{\n default(): any;\n logo?(): any;\n }>();\n\n const {\n isMenuCollapsed,\n isNavigationCollapsed\n } = useDashboardInjection();\n</script>\n","<template>\n <aside :class=\"$style.dashboardSide\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <h1>{{ title }}</h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <slot/>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxSpacer } from '@flux-ui/components';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '~flux/dashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n</script>\n","<template>\n <aside :class=\"$style.dashboardSide\">\n <FluxDashboardTopBar>\n <slot name=\"top-bar-start\"/>\n\n <h1>{{ title }}</h1>\n\n <FluxSpacer/>\n\n <slot name=\"top-bar-end\"/>\n </FluxDashboardTopBar>\n\n <slot/>\n </aside>\n</template>\n\n<script\n lang=\"ts\"\n setup>\n import { FluxSpacer } from '@flux-ui/components';\n import FluxDashboardTopBar from './FluxDashboardTopBar.vue';\n import $style from '~flux/dashboard/css/component/DashboardPane.module.scss';\n\n defineProps<{\n readonly title: string;\n }>();\n</script>\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131],"mappings":"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"}