@accounter/client 0.0.8-alpha-20251022162652-6facbcde08fdda0fb354ba7105432df320367509 → 0.0.8-alpha-20251023065832-9a9f37786b0e29dc8e6ea58ec9856bc043cc0e8a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -2
- package/dist/assets/Checkbox-lfqFDKZM.js +6 -0
- package/dist/assets/Progress-DvGsu87E.js +1 -0
- package/dist/assets/Typography-BX4mj53o.js +1 -0
- package/dist/assets/accordion-lOk81yKP.js +1 -0
- package/dist/assets/accountant-approvals-DWLEu1Um.js +1 -0
- package/dist/assets/all-charges-DhPxcK73.js +1 -0
- package/dist/assets/arrow-up-down-CFrneqND.js +6 -0
- package/dist/assets/building-2-Bqvbwz7Q.js +6 -0
- package/dist/assets/business--eNnF4xF.js +42 -0
- package/dist/assets/business-header-DjutqTRC.js +1 -0
- package/dist/assets/business-transactions-single-CJ5pLN-D.js +1 -0
- package/dist/assets/business-trip-Jlc0bfXC.js +1 -0
- package/dist/assets/charges-filters-C-H07qp1.js +1 -0
- package/dist/assets/charges-ledger-validation-Bln73m_U.js +1 -0
- package/dist/assets/chart-Wut6cPCx.js +74 -0
- package/dist/assets/data-table-pagination-BnQGVnmE.js +11 -0
- package/dist/assets/editable-business-trip-CjJg13b0.js +16 -0
- package/dist/assets/graphql-document-dedupe-fragments-ByT8-wlV.js +1 -0
- package/dist/assets/index-BE5nnZYY.js +9 -0
- package/dist/assets/index-BQrSA2Kk.js +1 -0
- package/dist/assets/index-BX3VSsge.js +1 -0
- package/dist/assets/index-BagyRbeI.js +2 -0
- package/dist/assets/index-BkeJsHyM.js +1 -0
- package/dist/assets/index-BoSqeUi7.js +24 -0
- package/dist/assets/index-BtAgm6J8.js +1 -0
- package/dist/assets/index-BwIQ8ifH.js +1 -0
- package/dist/assets/index-Bxlzprxi.js +1 -0
- package/dist/assets/index-C--YkrHw.js +1 -0
- package/dist/assets/index-C2INIVq3.js +137 -0
- package/dist/assets/index-CN7VPpiB.js +876 -0
- package/dist/assets/index-CQXFj3Uj.css +1 -0
- package/dist/assets/index-CVz9TqoS.js +6 -0
- package/dist/assets/index-CalcGztb.js +1 -0
- package/dist/assets/index-Csqyxwgx.js +11 -0
- package/dist/assets/index-DjSJrgv5.js +2 -0
- package/dist/assets/index-DquDHLbE.js +17 -0
- package/dist/assets/index-Dr2UkUOm.js +1 -0
- package/dist/assets/index-E2rO9Bsf.js +1 -0
- package/dist/assets/index-Ggixi4PP.js +1 -0
- package/dist/assets/index-WCosiqtQ.js +1 -0
- package/dist/assets/index-vsZbkVMv.js +1 -0
- package/dist/assets/index-y8Z-aJKc.js +6 -0
- package/dist/assets/{index.es-Bh5tff8R.js → index.es-D8leRAY2.js} +5 -5
- package/dist/assets/issue-document-DKE0dzdE.js +1 -0
- package/dist/assets/login-page-BYwtRBMd.js +1 -0
- package/dist/assets/missing-info-charges-CgMJ4Bu3.js +1 -0
- package/dist/assets/page-not-found-Cfte6bjZ.js +1 -0
- package/dist/assets/pencil-CUSCcyVn.js +6 -0
- package/dist/assets/report-commentary-row-B-uxVnyO.js +1 -0
- package/dist/assets/save-qyt28nOG.js +6 -0
- package/dist/assets/sequential-CAnleQny.js +1 -0
- package/dist/assets/sub-LLu8afpC.js +1 -0
- package/dist/assets/subMonths-C1UIPrOU.js +1 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/src/components/business/business-header.tsx +21 -2
- package/src/components/business-transactions/business-extended-info.tsx +13 -15
- package/src/components/business-transactions/business-transactions-single.tsx +3 -3
- package/src/components/business-transactions/index.tsx +12 -1
- package/src/components/business-trips/business-trip.tsx +3 -3
- package/src/components/businesses/index.tsx +45 -36
- package/src/components/charges/cells/business-trip.tsx +6 -8
- package/src/components/charges/cells/counterparty.tsx +7 -5
- package/src/components/common/accounter-table.tsx +6 -5
- package/src/components/common/business-trip-report/parts/core-expense-row.tsx +11 -9
- package/src/components/common/business-trip-report/parts/uncategorized-transactions.tsx +11 -13
- package/src/components/common/buttons/index.ts +0 -2
- package/src/components/common/buttons/logout-button.tsx +7 -6
- package/src/components/common/documents-to-charge-matcher/selection-handler/index.tsx +4 -2
- package/src/components/common/documents-to-charge-matcher/selection-handler/wide-filtered-selection.tsx +5 -7
- package/src/components/common/forms/edit-document.tsx +21 -10
- package/src/components/common/forms/index.ts +0 -1
- package/src/components/common/new-documents-list.tsx +10 -8
- package/src/components/documents-table/cells/creditor.tsx +11 -4
- package/src/components/documents-table/cells/debtor.tsx +11 -4
- package/src/components/error-boundary.tsx +189 -0
- package/src/components/layout/breadcrumbs.tsx +72 -0
- package/src/components/layout/dashboard-layout.tsx +4 -0
- package/src/components/layout/document-title.tsx +26 -0
- package/src/components/layout/navigation-progress.tsx +52 -0
- package/src/components/layout/page-skeleton.tsx +49 -0
- package/src/components/layout/sidelinks.tsx +28 -27
- package/src/components/ledger-table/counterparty-cell.tsx +19 -13
- package/src/components/login-page.tsx +2 -1
- package/src/components/reports/corporate-tax-ruling-compliance-report/index.tsx +3 -3
- package/src/components/reports/profit-and-loss-report/index.tsx +3 -3
- package/src/components/reports/tax-report/index.tsx +3 -3
- package/src/components/screens/businesses/business.tsx +21 -9
- package/src/components/screens/charges/charge.tsx +22 -9
- package/src/components/transactions-table/cells/counterparty.tsx +9 -2
- package/src/components/transactions-table/cells-legacy/counterparty.tsx +9 -2
- package/src/gql/gql.ts +6 -30
- package/src/gql/graphql.ts +7 -30
- package/src/index.tsx +4 -22
- package/src/providers/auth-guard.tsx +14 -23
- package/src/providers/index.tsx +7 -2
- package/src/providers/urql-client.ts +86 -0
- package/src/providers/urql.tsx +7 -12
- package/src/providers/user-provider.tsx +3 -2
- package/src/router/config.tsx +534 -0
- package/src/router/layouts/dashboard-layout.tsx +20 -0
- package/src/router/layouts/root-layout.tsx +69 -0
- package/src/router/loaders/auth-loader.ts +32 -0
- package/src/router/loaders/business-loader.ts +25 -0
- package/src/router/loaders/charge-loader.ts +25 -0
- package/src/router/loaders/index.ts +17 -0
- package/src/router/routes.ts +88 -0
- package/src/router/types.ts +68 -0
- package/dist/assets/index-B2UYAO1O.css +0 -1
- package/dist/assets/index-D312yRtG.js +0 -1229
- package/src/components/businesses/all-businesses-row.tsx +0 -87
- package/src/components/businesses/cells/hebrew-name.tsx +0 -31
- package/src/components/businesses/cells/index.ts +0 -2
- package/src/components/businesses/cells/name.tsx +0 -31
- package/src/components/common/buttons/button-with-label.tsx +0 -41
- package/src/components/common/buttons/button.tsx +0 -44
- package/src/components/common/forms/business-card.tsx +0 -234
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e,c as t,dA as s}from"./index-CN7VPpiB.js";const o=()=>e.jsx(t,{title:"New Document",description:"Issue a document for a client",children:e.jsx(s,{})});export{o as IssueDocumentScreen};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as n,g3 as j,w as f,Q as p,V as b,j as e,$ as v,a1 as o,a2 as l,a3 as c,a4 as i,v as d,a6 as m,B as w,a9 as N,R as y,t as x,ab as u}from"./index-CN7VPpiB.js";const S=N({username:u().min(2).max(50),password:u().min(2).max(50)});function E(){const{authService:a}=n.useContext(j);n.useEffect(()=>{a.logout()},[a]);const h=f(),s=p({resolver:b(S),defaultValues:{username:"",password:""}});function g(r){try{a.login(r.username,r.password).then(t=>{h(y.HOME)}),x.success("Success",{description:"You have successfully logged in."})}catch(t){console.error(t),x.error("Error",{description:"Invalid credentials. Please try again."})}}return e.jsxs("div",{className:"w-full flex flex-col justify-center items-center h-screen lg:grid lg:min-h-[200px] lg:grid-cols-2 xl:min-h-screen",children:[e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(v,{...s,children:e.jsxs("form",{onSubmit:s.handleSubmit(g),className:"space-y-8 w-[300px]",children:[e.jsxs("div",{className:"grid gap-2 text-center",children:[e.jsx("h1",{className:"text-3xl font-bold",children:"Accounter"}),e.jsx("h1",{className:"text-3xl font-bold",children:"Login"}),e.jsx("p",{className:"text-balance text-muted-foreground",children:"Enter your credentials to login."})]}),e.jsx(o,{control:s.control,name:"username",render:({field:r})=>e.jsxs(l,{children:[e.jsx(c,{children:"Username"}),e.jsx(i,{children:e.jsx(d,{placeholder:"Username",...r})}),e.jsx(m,{})]})}),e.jsx(o,{control:s.control,name:"password",render:({field:r})=>e.jsxs(l,{children:[e.jsx(c,{children:"Password"}),e.jsx(i,{children:e.jsx(d,{placeholder:"Password",type:"password",...r})}),e.jsx(m,{})]})}),e.jsx(w,{disabled:s.formState.isSubmitting||!s.formState.isValid,className:"w-full font-semibold",type:"submit",children:"Login"})]})})}),e.jsx("div",{className:"hidden bg-muted lg:block bg-black rounded-tl-3xl rounded-bl-3xl",children:e.jsx("div",{className:"flex flex-row justify-center items-center h-screen",children:e.jsx("img",{src:"../../icons/guild-logo.svg",alt:"nature",className:"w-[100px] h-[100px] object-cover"})})})]})}export{E as LoginPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as s,F as S,u as D,a as w,j as e,T as E,B as b,P as N,b as P,c as R,L as T,C as q,E as y,I as z,M as A,d as B}from"./index-CN7VPpiB.js";import{M as F}from"./index-Csqyxwgx.js";import"./Checkbox-lfqFDKZM.js";const Q=()=>{const{setFiltersContext:g}=s.useContext(S),[n,u]=s.useState(void 0),[i,h]=s.useState(void 0),[o,m]=s.useState(void 0),[r,C]=s.useState(!1),[t,c]=s.useState([]),{get:x}=D(),[p,f]=s.useState(x("page")?Number(x("page")):1),j=s.useCallback((a,v)=>{t.map(d=>d.id).includes(a)?c(t.filter(d=>d.id!==a)):c([...t,{id:a,onChange:v}])},[t]),[{data:l,fetching:M}]=w({query:B,variables:{page:p,limit:100}});function I(){c([])}return s.useEffect(()=>{g(e.jsxs("div",{className:"flex flex-row gap-x-5",children:[e.jsx(E,{label:"Expand all accounts",children:e.jsx(b,{variant:"outline",size:"icon",className:"size-7.5",onClick:()=>C(a=>!a),children:r?e.jsx(N,{className:"size-5"}):e.jsx(P,{className:"size-5"})})}),e.jsx(F,{selected:t,resetMerge:I})]}))},[l,M,p,r,g,f,C,t]),e.jsxs(R,{title:"Missing Info Charges",description:"Review charges with missing required details",children:[!l?.chargesWithMissingRequiredInfo.nodes||M?e.jsx(T,{className:"h-10 w-10 animate-spin mr-2 self-center"}):e.jsx(q,{setEditChargeId:u,setInsertDocument:h,setMatchDocuments:m,toggleMergeCharge:j,mergeSelectedCharges:new Set(t.map(a=>a.id)),data:l?.chargesWithMissingRequiredInfo?.nodes,isAllOpened:r}),n&&e.jsx(y,{chargeId:n?.id,close:()=>u(void 0),onChange:n.onChange}),i&&e.jsx(z,{chargeId:i.id,onChange:i.onChange,close:()=>h(void 0)}),o&&e.jsx(A,{chargeId:o.id,ownerId:o.ownerId,setMatchDocuments:()=>m(void 0)})]})};export{Q as MissingInfoCharges};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as s,X as a,Y as e,Z as r,a0 as d}from"./index-CN7VPpiB.js";const o=()=>s.jsxs(a,{className:"m-5",children:[s.jsx(e,{children:s.jsx(r,{children:"404"})}),s.jsx(d,{children:s.jsx("p",{children:"Page not found"})})]});export{o as PageNotFound};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{z as a}from"./index-CN7VPpiB.js";/**
|
|
2
|
+
* @license lucide-react v0.546.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const e=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],c=a("pencil",e);export{c as P};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i,W as c,eL as j,j as t,c7 as h,cj as x,eM as m}from"./index-CN7VPpiB.js";const p=({subCommentaryData:a,dataRow:o})=>{const[s,l]=i.useState(!1),r=a.map(e=>c(j,e)),d=t.jsx(x,{toggleExpansion:l,isExpanded:s});return t.jsxs(t.Fragment,{children:[o(d),s&&t.jsx("tr",{children:t.jsx("td",{colSpan:99,children:t.jsxs(h,{striped:!0,highlightOnHover:!0,className:"ml-8 w-full h-full",children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Entity"}),t.jsx("th",{children:"Amount"})]})}),t.jsxs("tbody",{children:[r?.sort((e,n)=>e.financialEntity.name.localeCompare(n.financialEntity.name)).map(e=>t.jsxs("tr",{children:[t.jsx("td",{children:e.financialEntity.name}),t.jsx("td",{children:e.amount.formatted})]},e.financialEntity.id)),t.jsx("tr",{children:t.jsx("td",{colSpan:8})})]})]})})})]})},g=({commentaryData:a,dataRow:o})=>{const[s,l]=i.useState(!1),{records:r}=c(m,a),d=r.length?t.jsx(x,{toggleExpansion:l,isExpanded:s}):null;return t.jsxs(t.Fragment,{children:[o(d),s&&t.jsx("tr",{children:t.jsx("td",{colSpan:99,children:t.jsxs(h,{striped:!0,highlightOnHover:!0,className:"ml-8 w-full h-full",children:[t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"Sort Code"}),t.jsx("th",{children:"Amount"}),t.jsx("th",{})]})}),t.jsxs("tbody",{children:[r?.sort((e,n)=>e.sortCode.key-n.sortCode.key).map(e=>t.jsx(p,{dataRow:n=>t.jsxs("tr",{children:[t.jsxs("td",{children:[e.sortCode.key," - ",e.sortCode.name]}),t.jsx("td",{children:e.amount.formatted}),t.jsx("td",{children:n})]},e.sortCode.key),subCommentaryData:e.records},e.sortCode.key)),t.jsx("tr",{children:t.jsx("td",{colSpan:8})})]})]})})})]})};export{g as R};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{z as a}from"./index-CN7VPpiB.js";/**
|
|
2
|
+
* @license lucide-react v0.546.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const e=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],o=a("save",e);export{o as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function Un(n){return function(){return n}}const ma=Math.cos,da=Math.sin,ya=Math.sqrt,It=Math.PI,pa=2*It;function Rt(n){return typeof n=="object"&&"length"in n?n:Array.from(n)}function yn(n,e){if((o=n.length)>1)for(var t=1,r,u,a=n[e[0]],o,i=a.length;t<o;++t)for(u=a,a=n[e[t]],r=0;r<i;++r)a[r][1]+=a[r][0]=isNaN(u[r][1])?u[r][0]:u[r][1]}function ve(n){for(var e=n.length,t=new Array(e);--e>=0;)t[e]=e;return t}function qt(n,e){return n[e]}function Pt(n){const e=[];return e.key=n,e}function xa(){var n=Un([]),e=ve,t=yn,r=qt;function u(a){var o=Array.from(n.apply(this,arguments),Pt),i,c=o.length,f=-1,g;for(const l of a)for(i=0,++f;i<c;++i)(o[i][f]=[0,+r(l,o[i].key,f,a)]).data=l;for(i=0,g=Rt(e(o));i<c;++i)o[g[i]].index=i;return t(o,g),o}return u.keys=function(a){return arguments.length?(n=typeof a=="function"?a:Un(Array.from(a)),u):n},u.value=function(a){return arguments.length?(r=typeof a=="function"?a:Un(+a),u):r},u.order=function(a){return arguments.length?(e=a==null?ve:typeof a=="function"?a:Un(Array.from(a)),u):e},u.offset=function(a){return arguments.length?(t=a??yn,u):t},u}function Ma(n,e){if((r=n.length)>0){for(var t,r,u=0,a=n[0].length,o;u<a;++u){for(o=t=0;t<r;++t)o+=n[t][u][1]||0;if(o)for(t=0;t<r;++t)n[t][u][1]/=o}yn(n,e)}}function wa(n,e){if((u=n.length)>0){for(var t=0,r=n[e[0]],u,a=r.length;t<a;++t){for(var o=0,i=0;o<u;++o)i+=n[o][t][1]||0;r[t][1]+=r[t][0]=-i/2}yn(n,e)}}function ba(n,e){if(!(!((o=n.length)>0)||!((a=(u=n[e[0]]).length)>0))){for(var t=0,r=1,u,a,o;r<a;++r){for(var i=0,c=0,f=0;i<o;++i){for(var g=n[e[i]],l=g[r][1]||0,h=g[r-1][1]||0,p=(l-h)/2,d=0;d<i;++d){var v=n[e[d]],k=v[r][1]||0,C=v[r-1][1]||0;p+=k-C}c+=l,f+=p*l}u[r-1][1]+=u[r-1][0]=t,c&&(t-=f/c)}u[r-1][1]+=u[r-1][0]=t,yn(n,e)}}function $n(n,e){return n==null||e==null?NaN:n<e?-1:n>e?1:n>=e?0:NaN}function Et(n,e){return n==null||e==null?NaN:e<n?-1:e>n?1:e>=n?0:NaN}function fe(n){let e,t,r;n.length!==2?(e=$n,t=(i,c)=>$n(n(i),c),r=(i,c)=>n(i)-c):(e=n===$n||n===Et?n:zt,t=n,r=n);function u(i,c,f=0,g=i.length){if(f<g){if(e(c,c)!==0)return g;do{const l=f+g>>>1;t(i[l],c)<0?f=l+1:g=l}while(f<g)}return f}function a(i,c,f=0,g=i.length){if(f<g){if(e(c,c)!==0)return g;do{const l=f+g>>>1;t(i[l],c)<=0?f=l+1:g=l}while(f<g)}return f}function o(i,c,f=0,g=i.length){const l=u(i,c,f,g-1);return l>f&&r(i[l-1],c)>-r(i[l],c)?l-1:l}return{left:u,center:o,right:a}}function zt(){return 0}function Zt(n){return n===null?NaN:+n}function*va(n,e){for(let t of n)t!=null&&(t=+t)>=t&&(yield t)}const Vt=fe($n),ut=Vt.right;fe(Zt).center;class Te extends Map{constructor(e,t=Bt){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(const[r,u]of e)this.set(r,u)}get(e){return super.get(ke(this,e))}has(e){return super.has(ke(this,e))}set(e,t){return super.set(Qt(this,e),t)}delete(e){return super.delete(Xt(this,e))}}function ke({_intern:n,_key:e},t){const r=e(t);return n.has(r)?n.get(r):t}function Qt({_intern:n,_key:e},t){const r=e(t);return n.has(r)?n.get(r):(n.set(r,t),t)}function Xt({_intern:n,_key:e},t){const r=e(t);return n.has(r)&&(t=n.get(r),n.delete(r)),t}function Bt(n){return n!==null&&typeof n=="object"?n.valueOf():n}const _t=Math.sqrt(50),Gt=Math.sqrt(10),Jt=Math.sqrt(2);function Fn(n,e,t){const r=(e-n)/Math.max(0,t),u=Math.floor(Math.log10(r)),a=r/Math.pow(10,u),o=a>=_t?10:a>=Gt?5:a>=Jt?2:1;let i,c,f;return u<0?(f=Math.pow(10,-u)/o,i=Math.round(n*f),c=Math.round(e*f),i/f<n&&++i,c/f>e&&--c,f=-f):(f=Math.pow(10,u)*o,i=Math.round(n/f),c=Math.round(e/f),i*f<n&&++i,c*f>e&&--c),c<i&&.5<=t&&t<2?Fn(n,e,t*2):[i,c,f]}function te(n,e,t){if(e=+e,n=+n,t=+t,!(t>0))return[];if(n===e)return[n];const r=e<n,[u,a,o]=r?Fn(e,n,t):Fn(n,e,t);if(!(a>=u))return[];const i=a-u+1,c=new Array(i);if(r)if(o<0)for(let f=0;f<i;++f)c[f]=(a-f)/-o;else for(let f=0;f<i;++f)c[f]=(a-f)*o;else if(o<0)for(let f=0;f<i;++f)c[f]=(u+f)/-o;else for(let f=0;f<i;++f)c[f]=(u+f)*o;return c}function re(n,e,t){return e=+e,n=+n,t=+t,Fn(n,e,t)[2]}function ue(n,e,t){e=+e,n=+n,t=+t;const r=e<n,u=r?re(e,n,t):re(n,e,t);return(r?-1:1)*(u<0?1/-u:u)}function Kt(n,e,t){n=+n,e=+e,t=(u=arguments.length)<2?(e=n,n=0,1):u<3?1:+t;for(var r=-1,u=Math.max(0,Math.ceil((e-n)/t))|0,a=new Array(u);++r<u;)a[r]=n+r*t;return a}function B(n,e){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(e).domain(n);break}return this}function Rn(n,e){switch(arguments.length){case 0:break;case 1:{typeof n=="function"?this.interpolator(n):this.range(n);break}default:{this.domain(n),typeof e=="function"?this.interpolator(e):this.range(e);break}}return this}const Ce=Symbol("implicit");function at(){var n=new Te,e=[],t=[],r=Ce;function u(a){let o=n.get(a);if(o===void 0){if(r!==Ce)return r;n.set(a,o=e.push(a)-1)}return t[o%t.length]}return u.domain=function(a){if(!arguments.length)return e.slice();e=[],n=new Te;for(const o of a)n.has(o)||n.set(o,e.push(o)-1);return u},u.range=function(a){return arguments.length?(t=Array.from(a),u):t.slice()},u.unknown=function(a){return arguments.length?(r=a,u):r},u.copy=function(){return at(e,t).unknown(r)},B.apply(u,arguments),u}function ot(){var n=at().unknown(void 0),e=n.domain,t=n.range,r=0,u=1,a,o,i=!1,c=0,f=0,g=.5;delete n.unknown;function l(){var h=e().length,p=u<r,d=p?u:r,v=p?r:u;a=(v-d)/Math.max(1,h-c+f*2),i&&(a=Math.floor(a)),d+=(v-d-a*(h-c))*g,o=a*(1-c),i&&(d=Math.round(d),o=Math.round(o));var k=Kt(h).map(function(C){return d+a*C});return t(p?k.reverse():k)}return n.domain=function(h){return arguments.length?(e(h),l()):e()},n.range=function(h){return arguments.length?([r,u]=h,r=+r,u=+u,l()):[r,u]},n.rangeRound=function(h){return[r,u]=h,r=+r,u=+u,i=!0,l()},n.bandwidth=function(){return o},n.step=function(){return a},n.round=function(h){return arguments.length?(i=!!h,l()):i},n.padding=function(h){return arguments.length?(c=Math.min(1,f=+h),l()):c},n.paddingInner=function(h){return arguments.length?(c=Math.min(1,h),l()):c},n.paddingOuter=function(h){return arguments.length?(f=+h,l()):f},n.align=function(h){return arguments.length?(g=Math.max(0,Math.min(1,h)),l()):g},n.copy=function(){return ot(e(),[r,u]).round(i).paddingInner(c).paddingOuter(f).align(g)},B.apply(l(),arguments)}function it(n){var e=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,delete n.paddingOuter,n.copy=function(){return it(e())},n}function Ta(){return it(ot.apply(null,arguments).paddingInner(1))}function ce(n,e,t){n.prototype=e.prototype=t,t.constructor=n}function ft(n,e){var t=Object.create(n.prototype);for(var r in e)t[r]=e[r];return t}function bn(){}var pn=.7,Hn=1/pn,cn="\\s*([+-]?\\d+)\\s*",xn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",P="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",jt=/^#([0-9a-f]{3,8})$/,nr=new RegExp(`^rgb\\(${cn},${cn},${cn}\\)$`),er=new RegExp(`^rgb\\(${P},${P},${P}\\)$`),tr=new RegExp(`^rgba\\(${cn},${cn},${cn},${xn}\\)$`),rr=new RegExp(`^rgba\\(${P},${P},${P},${xn}\\)$`),ur=new RegExp(`^hsl\\(${xn},${P},${P}\\)$`),ar=new RegExp(`^hsla\\(${xn},${P},${P},${xn}\\)$`),Ue={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};ce(bn,Mn,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:Se,formatHex:Se,formatHex8:or,formatHsl:ir,formatRgb:De,toString:De});function Se(){return this.rgb().formatHex()}function or(){return this.rgb().formatHex8()}function ir(){return ct(this).formatHsl()}function De(){return this.rgb().formatRgb()}function Mn(n){var e,t;return n=(n+"").trim().toLowerCase(),(e=jt.exec(n))?(t=e[1].length,e=parseInt(e[1],16),t===6?Ne(e):t===3?new Y(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):t===8?Sn(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):t===4?Sn(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=nr.exec(n))?new Y(e[1],e[2],e[3],1):(e=er.exec(n))?new Y(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=tr.exec(n))?Sn(e[1],e[2],e[3],e[4]):(e=rr.exec(n))?Sn(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=ur.exec(n))?He(e[1],e[2]/100,e[3]/100,1):(e=ar.exec(n))?He(e[1],e[2]/100,e[3]/100,e[4]):Ue.hasOwnProperty(n)?Ne(Ue[n]):n==="transparent"?new Y(NaN,NaN,NaN,0):null}function Ne(n){return new Y(n>>16&255,n>>8&255,n&255,1)}function Sn(n,e,t,r){return r<=0&&(n=e=t=NaN),new Y(n,e,t,r)}function fr(n){return n instanceof bn||(n=Mn(n)),n?(n=n.rgb(),new Y(n.r,n.g,n.b,n.opacity)):new Y}function ae(n,e,t,r){return arguments.length===1?fr(n):new Y(n,e,t,r??1)}function Y(n,e,t,r){this.r=+n,this.g=+e,this.b=+t,this.opacity=+r}ce(Y,ae,ft(bn,{brighter(n){return n=n==null?Hn:Math.pow(Hn,n),new Y(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){return n=n==null?pn:Math.pow(pn,n),new Y(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new Y(en(this.r),en(this.g),en(this.b),Yn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:$e,formatHex:$e,formatHex8:cr,formatRgb:Fe,toString:Fe}));function $e(){return`#${j(this.r)}${j(this.g)}${j(this.b)}`}function cr(){return`#${j(this.r)}${j(this.g)}${j(this.b)}${j((isNaN(this.opacity)?1:this.opacity)*255)}`}function Fe(){const n=Yn(this.opacity);return`${n===1?"rgb(":"rgba("}${en(this.r)}, ${en(this.g)}, ${en(this.b)}${n===1?")":`, ${n})`}`}function Yn(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function en(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function j(n){return n=en(n),(n<16?"0":"")+n.toString(16)}function He(n,e,t,r){return r<=0?n=e=t=NaN:t<=0||t>=1?n=e=NaN:e<=0&&(n=NaN),new q(n,e,t,r)}function ct(n){if(n instanceof q)return new q(n.h,n.s,n.l,n.opacity);if(n instanceof bn||(n=Mn(n)),!n)return new q;if(n instanceof q)return n;n=n.rgb();var e=n.r/255,t=n.g/255,r=n.b/255,u=Math.min(e,t,r),a=Math.max(e,t,r),o=NaN,i=a-u,c=(a+u)/2;return i?(e===a?o=(t-r)/i+(t<r)*6:t===a?o=(r-e)/i+2:o=(e-t)/i+4,i/=c<.5?a+u:2-a-u,o*=60):i=c>0&&c<1?0:o,new q(o,i,c,n.opacity)}function lr(n,e,t,r){return arguments.length===1?ct(n):new q(n,e,t,r??1)}function q(n,e,t,r){this.h=+n,this.s=+e,this.l=+t,this.opacity=+r}ce(q,lr,ft(bn,{brighter(n){return n=n==null?Hn:Math.pow(Hn,n),new q(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?pn:Math.pow(pn,n),new q(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,e=isNaN(n)||isNaN(this.s)?0:this.s,t=this.l,r=t+(t<.5?t:1-t)*e,u=2*t-r;return new Y(_n(n>=240?n-240:n+120,u,r),_n(n,u,r),_n(n<120?n+240:n-120,u,r),this.opacity)},clamp(){return new q(Ye(this.h),Dn(this.s),Dn(this.l),Yn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const n=Yn(this.opacity);return`${n===1?"hsl(":"hsla("}${Ye(this.h)}, ${Dn(this.s)*100}%, ${Dn(this.l)*100}%${n===1?")":`, ${n})`}`}}));function Ye(n){return n=(n||0)%360,n<0?n+360:n}function Dn(n){return Math.max(0,Math.min(1,n||0))}function _n(n,e,t){return(n<60?e+(t-e)*n/60:n<180?t:n<240?e+(t-e)*(240-n)/60:e)*255}const le=n=>()=>n;function sr(n,e){return function(t){return n+t*e}}function gr(n,e,t){return n=Math.pow(n,t),e=Math.pow(e,t)-n,t=1/t,function(r){return Math.pow(n+r*e,t)}}function hr(n){return(n=+n)==1?lt:function(e,t){return t-e?gr(e,t,n):le(isNaN(e)?t:e)}}function lt(n,e){var t=e-n;return t?sr(n,t):le(isNaN(n)?e:n)}const Ae=(function n(e){var t=hr(e);function r(u,a){var o=t((u=ae(u)).r,(a=ae(a)).r),i=t(u.g,a.g),c=t(u.b,a.b),f=lt(u.opacity,a.opacity);return function(g){return u.r=o(g),u.g=i(g),u.b=c(g),u.opacity=f(g),u+""}}return r.gamma=n,r})(1);function mr(n,e){e||(e=[]);var t=n?Math.min(e.length,n.length):0,r=e.slice(),u;return function(a){for(u=0;u<t;++u)r[u]=n[u]*(1-a)+e[u]*a;return r}}function dr(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function yr(n,e){var t=e?e.length:0,r=n?Math.min(t,n.length):0,u=new Array(r),a=new Array(t),o;for(o=0;o<r;++o)u[o]=qn(n[o],e[o]);for(;o<t;++o)a[o]=e[o];return function(i){for(o=0;o<r;++o)a[o]=u[o](i);return a}}function pr(n,e){var t=new Date;return n=+n,e=+e,function(r){return t.setTime(n*(1-r)+e*r),t}}function An(n,e){return n=+n,e=+e,function(t){return n*(1-t)+e*t}}function xr(n,e){var t={},r={},u;(n===null||typeof n!="object")&&(n={}),(e===null||typeof e!="object")&&(e={});for(u in e)u in n?t[u]=qn(n[u],e[u]):r[u]=e[u];return function(a){for(u in t)r[u]=t[u](a);return r}}var oe=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Gn=new RegExp(oe.source,"g");function Mr(n){return function(){return n}}function wr(n){return function(e){return n(e)+""}}function br(n,e){var t=oe.lastIndex=Gn.lastIndex=0,r,u,a,o=-1,i=[],c=[];for(n=n+"",e=e+"";(r=oe.exec(n))&&(u=Gn.exec(e));)(a=u.index)>t&&(a=e.slice(t,a),i[o]?i[o]+=a:i[++o]=a),(r=r[0])===(u=u[0])?i[o]?i[o]+=u:i[++o]=u:(i[++o]=null,c.push({i:o,x:An(r,u)})),t=Gn.lastIndex;return t<e.length&&(a=e.slice(t),i[o]?i[o]+=a:i[++o]=a),i.length<2?c[0]?wr(c[0].x):Mr(e):(e=c.length,function(f){for(var g=0,l;g<e;++g)i[(l=c[g]).i]=l.x(f);return i.join("")})}function qn(n,e){var t=typeof e,r;return e==null||t==="boolean"?le(e):(t==="number"?An:t==="string"?(r=Mn(e))?(e=r,Ae):br:e instanceof Mn?Ae:e instanceof Date?pr:dr(e)?mr:Array.isArray(e)?yr:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?xr:An)(n,e)}function st(n,e){return n=+n,e=+e,function(t){return Math.round(n*(1-t)+e*t)}}function vr(n){return function(){return n}}function Tr(n){return+n}var We=[0,1];function O(n){return n}function ie(n,e){return(e-=n=+n)?function(t){return(t-n)/e}:vr(isNaN(e)?NaN:.5)}function kr(n,e){var t;return n>e&&(t=n,n=e,e=t),function(r){return Math.max(n,Math.min(e,r))}}function Cr(n,e,t){var r=n[0],u=n[1],a=e[0],o=e[1];return u<r?(r=ie(u,r),a=t(o,a)):(r=ie(r,u),a=t(a,o)),function(i){return a(r(i))}}function Ur(n,e,t){var r=Math.min(n.length,e.length)-1,u=new Array(r),a=new Array(r),o=-1;for(n[r]<n[0]&&(n=n.slice().reverse(),e=e.slice().reverse());++o<r;)u[o]=ie(n[o],n[o+1]),a[o]=t(e[o],e[o+1]);return function(i){var c=ut(n,i,1,r)-1;return a[c](u[c](i))}}function vn(n,e){return e.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function Pn(){var n=We,e=We,t=qn,r,u,a,o=O,i,c,f;function g(){var h=Math.min(n.length,e.length);return o!==O&&(o=kr(n[0],n[h-1])),i=h>2?Ur:Cr,c=f=null,l}function l(h){return h==null||isNaN(h=+h)?a:(c||(c=i(n.map(r),e,t)))(r(o(h)))}return l.invert=function(h){return o(u((f||(f=i(e,n.map(r),An)))(h)))},l.domain=function(h){return arguments.length?(n=Array.from(h,Tr),g()):n.slice()},l.range=function(h){return arguments.length?(e=Array.from(h),g()):e.slice()},l.rangeRound=function(h){return e=Array.from(h),t=st,g()},l.clamp=function(h){return arguments.length?(o=h?!0:O,g()):o!==O},l.interpolate=function(h){return arguments.length?(t=h,g()):t},l.unknown=function(h){return arguments.length?(a=h,l):a},function(h,p){return r=h,u=p,g()}}function gt(){return Pn()(O,O)}function Sr(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function Wn(n,e){if((t=(n=e?n.toExponential(e-1):n.toExponential()).indexOf("e"))<0)return null;var t,r=n.slice(0,t);return[r.length>1?r[0]+r.slice(2):r,+n.slice(t+1)]}function ln(n){return n=Wn(Math.abs(n)),n?n[1]:NaN}function Dr(n,e){return function(t,r){for(var u=t.length,a=[],o=0,i=n[0],c=0;u>0&&i>0&&(c+i+1>r&&(i=Math.max(1,r-c)),a.push(t.substring(u-=i,u+i)),!((c+=i+1)>r));)i=n[o=(o+1)%n.length];return a.reverse().join(e)}}function Nr(n){return function(e){return e.replace(/[0-9]/g,function(t){return n[+t]})}}var $r=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function wn(n){if(!(e=$r.exec(n)))throw new Error("invalid format: "+n);var e;return new se({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}wn.prototype=se.prototype;function se(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}se.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Fr(n){n:for(var e=n.length,t=1,r=-1,u;t<e;++t)switch(n[t]){case".":r=u=t;break;case"0":r===0&&(r=t),u=t;break;default:if(!+n[t])break n;r>0&&(r=0);break}return r>0?n.slice(0,r)+n.slice(u+1):n}var ht;function Hr(n,e){var t=Wn(n,e);if(!t)return n+"";var r=t[0],u=t[1],a=u-(ht=Math.max(-8,Math.min(8,Math.floor(u/3)))*3)+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Wn(n,Math.max(0,e+a-1))[0]}function Le(n,e){var t=Wn(n,e);if(!t)return n+"";var r=t[0],u=t[1];return u<0?"0."+new Array(-u).join("0")+r:r.length>u+1?r.slice(0,u+1)+"."+r.slice(u+1):r+new Array(u-r.length+2).join("0")}const Oe={"%":(n,e)=>(n*100).toFixed(e),b:n=>Math.round(n).toString(2),c:n=>n+"",d:Sr,e:(n,e)=>n.toExponential(e),f:(n,e)=>n.toFixed(e),g:(n,e)=>n.toPrecision(e),o:n=>Math.round(n).toString(8),p:(n,e)=>Le(n*100,e),r:Le,s:Hr,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function Ie(n){return n}var Re=Array.prototype.map,qe=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Yr(n){var e=n.grouping===void 0||n.thousands===void 0?Ie:Dr(Re.call(n.grouping,Number),n.thousands+""),t=n.currency===void 0?"":n.currency[0]+"",r=n.currency===void 0?"":n.currency[1]+"",u=n.decimal===void 0?".":n.decimal+"",a=n.numerals===void 0?Ie:Nr(Re.call(n.numerals,String)),o=n.percent===void 0?"%":n.percent+"",i=n.minus===void 0?"−":n.minus+"",c=n.nan===void 0?"NaN":n.nan+"";function f(l){l=wn(l);var h=l.fill,p=l.align,d=l.sign,v=l.symbol,k=l.zero,C=l.width,G=l.comma,D=l.precision,L=l.trim,N=l.type;N==="n"?(G=!0,N="g"):Oe[N]||(D===void 0&&(D=12),L=!0,N="g"),(k||h==="0"&&p==="=")&&(k=!0,h="0",p="=");var y=v==="$"?t:v==="#"&&/[boxX]/.test(N)?"0"+N.toLowerCase():"",$=v==="$"?r:/[%p]/.test(N)?o:"",J=Oe[N],Bn=/[defgprs%]/.test(N);D=D===void 0?6:/[gprs]/.test(N)?Math.max(1,Math.min(21,D)):Math.max(0,Math.min(20,D));function kn(M){var E=y,F=$,_,Cn,un;if(N==="c")F=J(M)+F,M="";else{M=+M;var an=M<0||1/M<0;if(M=isNaN(M)?c:J(Math.abs(M),D),L&&(M=Fr(M)),an&&+M==0&&d!=="+"&&(an=!1),E=(an?d==="("?d:i:d==="-"||d==="("?"":d)+E,F=(N==="s"?qe[8+ht/3]:"")+F+(an&&d==="("?")":""),Bn){for(_=-1,Cn=M.length;++_<Cn;)if(un=M.charCodeAt(_),48>un||un>57){F=(un===46?u+M.slice(_+1):M.slice(_))+F,M=M.slice(0,_);break}}}G&&!k&&(M=e(M,1/0));var on=E.length+M.length+F.length,R=on<C?new Array(C-on+1).join(h):"";switch(G&&k&&(M=e(R+M,R.length?C-F.length:1/0),R=""),p){case"<":M=E+M+F+R;break;case"=":M=E+R+M+F;break;case"^":M=R.slice(0,on=R.length>>1)+E+M+F+R.slice(on);break;default:M=R+E+M+F;break}return a(M)}return kn.toString=function(){return l+""},kn}function g(l,h){var p=f((l=wn(l),l.type="f",l)),d=Math.max(-8,Math.min(8,Math.floor(ln(h)/3)))*3,v=Math.pow(10,-d),k=qe[8+d/3];return function(C){return p(v*C)+k}}return{format:f,formatPrefix:g}}var Nn,ge,mt;Ar({thousands:",",grouping:[3],currency:["$",""]});function Ar(n){return Nn=Yr(n),ge=Nn.format,mt=Nn.formatPrefix,Nn}function Wr(n){return Math.max(0,-ln(Math.abs(n)))}function Lr(n,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(ln(e)/3)))*3-ln(Math.abs(n)))}function Or(n,e){return n=Math.abs(n),e=Math.abs(e)-n,Math.max(0,ln(e)-ln(n))+1}function Ir(n,e,t,r){var u=ue(n,e,t),a;switch(r=wn(r??",f"),r.type){case"s":{var o=Math.max(Math.abs(n),Math.abs(e));return r.precision==null&&!isNaN(a=Lr(u,o))&&(r.precision=a),mt(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(a=Or(u,Math.max(Math.abs(n),Math.abs(e))))&&(r.precision=a-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(a=Wr(u))&&(r.precision=a-(r.type==="%")*2);break}}return ge(r)}function En(n){var e=n.domain;return n.ticks=function(t){var r=e();return te(r[0],r[r.length-1],t??10)},n.tickFormat=function(t,r){var u=e();return Ir(u[0],u[u.length-1],t??10,r)},n.nice=function(t){t==null&&(t=10);var r=e(),u=0,a=r.length-1,o=r[u],i=r[a],c,f,g=10;for(i<o&&(f=o,o=i,i=f,f=u,u=a,a=f);g-- >0;){if(f=re(o,i,t),f===c)return r[u]=o,r[a]=i,e(r);if(f>0)o=Math.floor(o/f)*f,i=Math.ceil(i/f)*f;else if(f<0)o=Math.ceil(o*f)/f,i=Math.floor(i*f)/f;else break;c=f}return n},n}function Rr(){var n=gt();return n.copy=function(){return vn(n,Rr())},B.apply(n,arguments),En(n)}function dt(n,e){n=n.slice();var t=0,r=n.length-1,u=n[t],a=n[r],o;return a<u&&(o=t,t=r,r=o,o=u,u=a,a=o),n[t]=e.floor(u),n[r]=e.ceil(a),n}function Pe(n){return Math.log(n)}function Ee(n){return Math.exp(n)}function qr(n){return-Math.log(-n)}function Pr(n){return-Math.exp(-n)}function Er(n){return isFinite(n)?+("1e"+n):n<0?0:n}function zr(n){return n===10?Er:n===Math.E?Math.exp:e=>Math.pow(n,e)}function Zr(n){return n===Math.E?Math.log:n===10&&Math.log10||n===2&&Math.log2||(n=Math.log(n),e=>Math.log(e)/n)}function ze(n){return(e,t)=>-n(-e,t)}function yt(n){const e=n(Pe,Ee),t=e.domain;let r=10,u,a;function o(){return u=Zr(r),a=zr(r),t()[0]<0?(u=ze(u),a=ze(a),n(qr,Pr)):n(Pe,Ee),e}return e.base=function(i){return arguments.length?(r=+i,o()):r},e.domain=function(i){return arguments.length?(t(i),o()):t()},e.ticks=i=>{const c=t();let f=c[0],g=c[c.length-1];const l=g<f;l&&([f,g]=[g,f]);let h=u(f),p=u(g),d,v;const k=i==null?10:+i;let C=[];if(!(r%1)&&p-h<k){if(h=Math.floor(h),p=Math.ceil(p),f>0){for(;h<=p;++h)for(d=1;d<r;++d)if(v=h<0?d/a(-h):d*a(h),!(v<f)){if(v>g)break;C.push(v)}}else for(;h<=p;++h)for(d=r-1;d>=1;--d)if(v=h>0?d/a(-h):d*a(h),!(v<f)){if(v>g)break;C.push(v)}C.length*2<k&&(C=te(f,g,k))}else C=te(h,p,Math.min(p-h,k)).map(a);return l?C.reverse():C},e.tickFormat=(i,c)=>{if(i==null&&(i=10),c==null&&(c=r===10?"s":","),typeof c!="function"&&(!(r%1)&&(c=wn(c)).precision==null&&(c.trim=!0),c=ge(c)),i===1/0)return c;const f=Math.max(1,r*i/e.ticks().length);return g=>{let l=g/a(Math.round(u(g)));return l*r<r-.5&&(l*=r),l<=f?c(g):""}},e.nice=()=>t(dt(t(),{floor:i=>a(Math.floor(u(i))),ceil:i=>a(Math.ceil(u(i)))})),e}function Vr(){const n=yt(Pn()).domain([1,10]);return n.copy=()=>vn(n,Vr()).base(n.base()),B.apply(n,arguments),n}function Ze(n){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/n))}}function Ve(n){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*n}}function pt(n){var e=1,t=n(Ze(e),Ve(e));return t.constant=function(r){return arguments.length?n(Ze(e=+r),Ve(e)):e},En(t)}function Qr(){var n=pt(Pn());return n.copy=function(){return vn(n,Qr()).constant(n.constant())},B.apply(n,arguments)}function Qe(n){return function(e){return e<0?-Math.pow(-e,n):Math.pow(e,n)}}function Xr(n){return n<0?-Math.sqrt(-n):Math.sqrt(n)}function Br(n){return n<0?-n*n:n*n}function xt(n){var e=n(O,O),t=1;function r(){return t===1?n(O,O):t===.5?n(Xr,Br):n(Qe(t),Qe(1/t))}return e.exponent=function(u){return arguments.length?(t=+u,r()):t},En(e)}function Mt(){var n=xt(Pn());return n.copy=function(){return vn(n,Mt()).exponent(n.exponent())},B.apply(n,arguments),n}function ka(){return Mt.apply(null,arguments).exponent(.5)}function _r(){var n=[.5],e=[0,1],t,r=1;function u(a){return a!=null&&a<=a?e[ut(n,a,0,r)]:t}return u.domain=function(a){return arguments.length?(n=Array.from(a),r=Math.min(n.length,e.length-1),u):n.slice()},u.range=function(a){return arguments.length?(e=Array.from(a),r=Math.min(n.length,e.length-1),u):e.slice()},u.invertExtent=function(a){var o=e.indexOf(a);return[n[o-1],n[o]]},u.unknown=function(a){return arguments.length?(t=a,u):t},u.copy=function(){return _r().domain(n).range(e).unknown(t)},B.apply(u,arguments)}const Jn=new Date,Kn=new Date;function U(n,e,t,r){function u(a){return n(a=arguments.length===0?new Date:new Date(+a)),a}return u.floor=a=>(n(a=new Date(+a)),a),u.ceil=a=>(n(a=new Date(a-1)),e(a,1),n(a),a),u.round=a=>{const o=u(a),i=u.ceil(a);return a-o<i-a?o:i},u.offset=(a,o)=>(e(a=new Date(+a),o==null?1:Math.floor(o)),a),u.range=(a,o,i)=>{const c=[];if(a=u.ceil(a),i=i==null?1:Math.floor(i),!(a<o)||!(i>0))return c;let f;do c.push(f=new Date(+a)),e(a,i),n(a);while(f<a&&a<o);return c},u.filter=a=>U(o=>{if(o>=o)for(;n(o),!a(o);)o.setTime(o-1)},(o,i)=>{if(o>=o)if(i<0)for(;++i<=0;)for(;e(o,-1),!a(o););else for(;--i>=0;)for(;e(o,1),!a(o););}),t&&(u.count=(a,o)=>(Jn.setTime(+a),Kn.setTime(+o),n(Jn),n(Kn),Math.floor(t(Jn,Kn))),u.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?u.filter(r?o=>r(o)%a===0:o=>u.count(0,o)%a===0):u)),u}const Ln=U(()=>{},(n,e)=>{n.setTime(+n+e)},(n,e)=>e-n);Ln.every=n=>(n=Math.floor(n),!isFinite(n)||!(n>0)?null:n>1?U(e=>{e.setTime(Math.floor(e/n)*n)},(e,t)=>{e.setTime(+e+t*n)},(e,t)=>(t-e)/n):Ln);Ln.range;const z=1e3,I=z*60,Z=I*60,V=Z*24,he=V*7,Xe=V*30,jn=V*365,nn=U(n=>{n.setTime(n-n.getMilliseconds())},(n,e)=>{n.setTime(+n+e*z)},(n,e)=>(e-n)/z,n=>n.getUTCSeconds());nn.range;const me=U(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*z)},(n,e)=>{n.setTime(+n+e*I)},(n,e)=>(e-n)/I,n=>n.getMinutes());me.range;const de=U(n=>{n.setUTCSeconds(0,0)},(n,e)=>{n.setTime(+n+e*I)},(n,e)=>(e-n)/I,n=>n.getUTCMinutes());de.range;const ye=U(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*z-n.getMinutes()*I)},(n,e)=>{n.setTime(+n+e*Z)},(n,e)=>(e-n)/Z,n=>n.getHours());ye.range;const pe=U(n=>{n.setUTCMinutes(0,0,0)},(n,e)=>{n.setTime(+n+e*Z)},(n,e)=>(e-n)/Z,n=>n.getUTCHours());pe.range;const Tn=U(n=>n.setHours(0,0,0,0),(n,e)=>n.setDate(n.getDate()+e),(n,e)=>(e-n-(e.getTimezoneOffset()-n.getTimezoneOffset())*I)/V,n=>n.getDate()-1);Tn.range;const zn=U(n=>{n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCDate(n.getUTCDate()+e)},(n,e)=>(e-n)/V,n=>n.getUTCDate()-1);zn.range;const wt=U(n=>{n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCDate(n.getUTCDate()+e)},(n,e)=>(e-n)/V,n=>Math.floor(n/V));wt.range;function tn(n){return U(e=>{e.setDate(e.getDate()-(e.getDay()+7-n)%7),e.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*I)/he)}const Zn=tn(0),On=tn(1),Gr=tn(2),Jr=tn(3),sn=tn(4),Kr=tn(5),jr=tn(6);Zn.range;On.range;Gr.range;Jr.range;sn.range;Kr.range;jr.range;function rn(n){return U(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-n)%7),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/he)}const Vn=rn(0),In=rn(1),nu=rn(2),eu=rn(3),gn=rn(4),tu=rn(5),ru=rn(6);Vn.range;In.range;nu.range;eu.range;gn.range;tu.range;ru.range;const xe=U(n=>{n.setDate(1),n.setHours(0,0,0,0)},(n,e)=>{n.setMonth(n.getMonth()+e)},(n,e)=>e.getMonth()-n.getMonth()+(e.getFullYear()-n.getFullYear())*12,n=>n.getMonth());xe.range;const Me=U(n=>{n.setUTCDate(1),n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCMonth(n.getUTCMonth()+e)},(n,e)=>e.getUTCMonth()-n.getUTCMonth()+(e.getUTCFullYear()-n.getUTCFullYear())*12,n=>n.getUTCMonth());Me.range;const Q=U(n=>{n.setMonth(0,1),n.setHours(0,0,0,0)},(n,e)=>{n.setFullYear(n.getFullYear()+e)},(n,e)=>e.getFullYear()-n.getFullYear(),n=>n.getFullYear());Q.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:U(e=>{e.setFullYear(Math.floor(e.getFullYear()/n)*n),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t*n)});Q.range;const X=U(n=>{n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e)},(n,e)=>e.getUTCFullYear()-n.getUTCFullYear(),n=>n.getUTCFullYear());X.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:U(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/n)*n),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t*n)});X.range;function bt(n,e,t,r,u,a){const o=[[nn,1,z],[nn,5,5*z],[nn,15,15*z],[nn,30,30*z],[a,1,I],[a,5,5*I],[a,15,15*I],[a,30,30*I],[u,1,Z],[u,3,3*Z],[u,6,6*Z],[u,12,12*Z],[r,1,V],[r,2,2*V],[t,1,he],[e,1,Xe],[e,3,3*Xe],[n,1,jn]];function i(f,g,l){const h=g<f;h&&([f,g]=[g,f]);const p=l&&typeof l.range=="function"?l:c(f,g,l),d=p?p.range(f,+g+1):[];return h?d.reverse():d}function c(f,g,l){const h=Math.abs(g-f)/l,p=fe(([,,k])=>k).right(o,h);if(p===o.length)return n.every(ue(f/jn,g/jn,l));if(p===0)return Ln.every(Math.max(ue(f,g,l),1));const[d,v]=o[h/o[p-1][2]<o[p][2]/h?p-1:p];return d.every(v)}return[i,c]}const[uu,au]=bt(X,Me,Vn,wt,pe,de),[ou,iu]=bt(Q,xe,Zn,Tn,ye,me);function ne(n){if(0<=n.y&&n.y<100){var e=new Date(-1,n.m,n.d,n.H,n.M,n.S,n.L);return e.setFullYear(n.y),e}return new Date(n.y,n.m,n.d,n.H,n.M,n.S,n.L)}function ee(n){if(0<=n.y&&n.y<100){var e=new Date(Date.UTC(-1,n.m,n.d,n.H,n.M,n.S,n.L));return e.setUTCFullYear(n.y),e}return new Date(Date.UTC(n.y,n.m,n.d,n.H,n.M,n.S,n.L))}function hn(n,e,t){return{y:n,m:e,d:t,H:0,M:0,S:0,L:0}}function fu(n){var e=n.dateTime,t=n.date,r=n.time,u=n.periods,a=n.days,o=n.shortDays,i=n.months,c=n.shortMonths,f=mn(u),g=dn(u),l=mn(a),h=dn(a),p=mn(o),d=dn(o),v=mn(i),k=dn(i),C=mn(c),G=dn(c),D={a:an,A:on,b:R,B:Nt,c:null,d:je,e:je,f:Fu,g:Pu,G:zu,H:Du,I:Nu,j:$u,L:vt,m:Hu,M:Yu,p:$t,q:Ft,Q:tt,s:rt,S:Au,u:Wu,U:Lu,V:Ou,w:Iu,W:Ru,x:null,X:null,y:qu,Y:Eu,Z:Zu,"%":et},L={a:Ht,A:Yt,b:At,B:Wt,c:null,d:nt,e:nt,f:Bu,g:ua,G:oa,H:Vu,I:Qu,j:Xu,L:kt,m:_u,M:Gu,p:Lt,q:Ot,Q:tt,s:rt,S:Ju,u:Ku,U:ju,V:na,w:ea,W:ta,x:null,X:null,y:ra,Y:aa,Z:ia,"%":et},N={a:kn,A:M,b:E,B:F,c:_,d:Je,e:Je,f:ku,g:Ge,G:_e,H:Ke,I:Ke,j:wu,L:Tu,m:Mu,M:bu,p:Bn,q:xu,Q:Uu,s:Su,S:vu,u:hu,U:mu,V:du,w:gu,W:yu,x:Cn,X:un,y:Ge,Y:_e,Z:pu,"%":Cu};D.x=y(t,D),D.X=y(r,D),D.c=y(e,D),L.x=y(t,L),L.X=y(r,L),L.c=y(e,L);function y(m,x){return function(w){var s=[],H=-1,T=0,A=m.length,W,K,be;for(w instanceof Date||(w=new Date(+w));++H<A;)m.charCodeAt(H)===37&&(s.push(m.slice(T,H)),(K=Be[W=m.charAt(++H)])!=null?W=m.charAt(++H):K=W==="e"?" ":"0",(be=x[W])&&(W=be(w,K)),s.push(W),T=H+1);return s.push(m.slice(T,H)),s.join("")}}function $(m,x){return function(w){var s=hn(1900,void 0,1),H=J(s,m,w+="",0),T,A;if(H!=w.length)return null;if("Q"in s)return new Date(s.Q);if("s"in s)return new Date(s.s*1e3+("L"in s?s.L:0));if(x&&!("Z"in s)&&(s.Z=0),"p"in s&&(s.H=s.H%12+s.p*12),s.m===void 0&&(s.m="q"in s?s.q:0),"V"in s){if(s.V<1||s.V>53)return null;"w"in s||(s.w=1),"Z"in s?(T=ee(hn(s.y,0,1)),A=T.getUTCDay(),T=A>4||A===0?In.ceil(T):In(T),T=zn.offset(T,(s.V-1)*7),s.y=T.getUTCFullYear(),s.m=T.getUTCMonth(),s.d=T.getUTCDate()+(s.w+6)%7):(T=ne(hn(s.y,0,1)),A=T.getDay(),T=A>4||A===0?On.ceil(T):On(T),T=Tn.offset(T,(s.V-1)*7),s.y=T.getFullYear(),s.m=T.getMonth(),s.d=T.getDate()+(s.w+6)%7)}else("W"in s||"U"in s)&&("w"in s||(s.w="u"in s?s.u%7:"W"in s?1:0),A="Z"in s?ee(hn(s.y,0,1)).getUTCDay():ne(hn(s.y,0,1)).getDay(),s.m=0,s.d="W"in s?(s.w+6)%7+s.W*7-(A+5)%7:s.w+s.U*7-(A+6)%7);return"Z"in s?(s.H+=s.Z/100|0,s.M+=s.Z%100,ee(s)):ne(s)}}function J(m,x,w,s){for(var H=0,T=x.length,A=w.length,W,K;H<T;){if(s>=A)return-1;if(W=x.charCodeAt(H++),W===37){if(W=x.charAt(H++),K=N[W in Be?x.charAt(H++):W],!K||(s=K(m,w,s))<0)return-1}else if(W!=w.charCodeAt(s++))return-1}return s}function Bn(m,x,w){var s=f.exec(x.slice(w));return s?(m.p=g.get(s[0].toLowerCase()),w+s[0].length):-1}function kn(m,x,w){var s=p.exec(x.slice(w));return s?(m.w=d.get(s[0].toLowerCase()),w+s[0].length):-1}function M(m,x,w){var s=l.exec(x.slice(w));return s?(m.w=h.get(s[0].toLowerCase()),w+s[0].length):-1}function E(m,x,w){var s=C.exec(x.slice(w));return s?(m.m=G.get(s[0].toLowerCase()),w+s[0].length):-1}function F(m,x,w){var s=v.exec(x.slice(w));return s?(m.m=k.get(s[0].toLowerCase()),w+s[0].length):-1}function _(m,x,w){return J(m,e,x,w)}function Cn(m,x,w){return J(m,t,x,w)}function un(m,x,w){return J(m,r,x,w)}function an(m){return o[m.getDay()]}function on(m){return a[m.getDay()]}function R(m){return c[m.getMonth()]}function Nt(m){return i[m.getMonth()]}function $t(m){return u[+(m.getHours()>=12)]}function Ft(m){return 1+~~(m.getMonth()/3)}function Ht(m){return o[m.getUTCDay()]}function Yt(m){return a[m.getUTCDay()]}function At(m){return c[m.getUTCMonth()]}function Wt(m){return i[m.getUTCMonth()]}function Lt(m){return u[+(m.getUTCHours()>=12)]}function Ot(m){return 1+~~(m.getUTCMonth()/3)}return{format:function(m){var x=y(m+="",D);return x.toString=function(){return m},x},parse:function(m){var x=$(m+="",!1);return x.toString=function(){return m},x},utcFormat:function(m){var x=y(m+="",L);return x.toString=function(){return m},x},utcParse:function(m){var x=$(m+="",!0);return x.toString=function(){return m},x}}}var Be={"-":"",_:" ",0:"0"},S=/^\s*\d+/,cu=/^%/,lu=/[\\^$*+?|[\]().{}]/g;function b(n,e,t){var r=n<0?"-":"",u=(r?-n:n)+"",a=u.length;return r+(a<t?new Array(t-a+1).join(e)+u:u)}function su(n){return n.replace(lu,"\\$&")}function mn(n){return new RegExp("^(?:"+n.map(su).join("|")+")","i")}function dn(n){return new Map(n.map((e,t)=>[e.toLowerCase(),t]))}function gu(n,e,t){var r=S.exec(e.slice(t,t+1));return r?(n.w=+r[0],t+r[0].length):-1}function hu(n,e,t){var r=S.exec(e.slice(t,t+1));return r?(n.u=+r[0],t+r[0].length):-1}function mu(n,e,t){var r=S.exec(e.slice(t,t+2));return r?(n.U=+r[0],t+r[0].length):-1}function du(n,e,t){var r=S.exec(e.slice(t,t+2));return r?(n.V=+r[0],t+r[0].length):-1}function yu(n,e,t){var r=S.exec(e.slice(t,t+2));return r?(n.W=+r[0],t+r[0].length):-1}function _e(n,e,t){var r=S.exec(e.slice(t,t+4));return r?(n.y=+r[0],t+r[0].length):-1}function Ge(n,e,t){var r=S.exec(e.slice(t,t+2));return r?(n.y=+r[0]+(+r[0]>68?1900:2e3),t+r[0].length):-1}function pu(n,e,t){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(t,t+6));return r?(n.Z=r[1]?0:-(r[2]+(r[3]||"00")),t+r[0].length):-1}function xu(n,e,t){var r=S.exec(e.slice(t,t+1));return r?(n.q=r[0]*3-3,t+r[0].length):-1}function Mu(n,e,t){var r=S.exec(e.slice(t,t+2));return r?(n.m=r[0]-1,t+r[0].length):-1}function Je(n,e,t){var r=S.exec(e.slice(t,t+2));return r?(n.d=+r[0],t+r[0].length):-1}function wu(n,e,t){var r=S.exec(e.slice(t,t+3));return r?(n.m=0,n.d=+r[0],t+r[0].length):-1}function Ke(n,e,t){var r=S.exec(e.slice(t,t+2));return r?(n.H=+r[0],t+r[0].length):-1}function bu(n,e,t){var r=S.exec(e.slice(t,t+2));return r?(n.M=+r[0],t+r[0].length):-1}function vu(n,e,t){var r=S.exec(e.slice(t,t+2));return r?(n.S=+r[0],t+r[0].length):-1}function Tu(n,e,t){var r=S.exec(e.slice(t,t+3));return r?(n.L=+r[0],t+r[0].length):-1}function ku(n,e,t){var r=S.exec(e.slice(t,t+6));return r?(n.L=Math.floor(r[0]/1e3),t+r[0].length):-1}function Cu(n,e,t){var r=cu.exec(e.slice(t,t+1));return r?t+r[0].length:-1}function Uu(n,e,t){var r=S.exec(e.slice(t));return r?(n.Q=+r[0],t+r[0].length):-1}function Su(n,e,t){var r=S.exec(e.slice(t));return r?(n.s=+r[0],t+r[0].length):-1}function je(n,e){return b(n.getDate(),e,2)}function Du(n,e){return b(n.getHours(),e,2)}function Nu(n,e){return b(n.getHours()%12||12,e,2)}function $u(n,e){return b(1+Tn.count(Q(n),n),e,3)}function vt(n,e){return b(n.getMilliseconds(),e,3)}function Fu(n,e){return vt(n,e)+"000"}function Hu(n,e){return b(n.getMonth()+1,e,2)}function Yu(n,e){return b(n.getMinutes(),e,2)}function Au(n,e){return b(n.getSeconds(),e,2)}function Wu(n){var e=n.getDay();return e===0?7:e}function Lu(n,e){return b(Zn.count(Q(n)-1,n),e,2)}function Tt(n){var e=n.getDay();return e>=4||e===0?sn(n):sn.ceil(n)}function Ou(n,e){return n=Tt(n),b(sn.count(Q(n),n)+(Q(n).getDay()===4),e,2)}function Iu(n){return n.getDay()}function Ru(n,e){return b(On.count(Q(n)-1,n),e,2)}function qu(n,e){return b(n.getFullYear()%100,e,2)}function Pu(n,e){return n=Tt(n),b(n.getFullYear()%100,e,2)}function Eu(n,e){return b(n.getFullYear()%1e4,e,4)}function zu(n,e){var t=n.getDay();return n=t>=4||t===0?sn(n):sn.ceil(n),b(n.getFullYear()%1e4,e,4)}function Zu(n){var e=n.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+b(e/60|0,"0",2)+b(e%60,"0",2)}function nt(n,e){return b(n.getUTCDate(),e,2)}function Vu(n,e){return b(n.getUTCHours(),e,2)}function Qu(n,e){return b(n.getUTCHours()%12||12,e,2)}function Xu(n,e){return b(1+zn.count(X(n),n),e,3)}function kt(n,e){return b(n.getUTCMilliseconds(),e,3)}function Bu(n,e){return kt(n,e)+"000"}function _u(n,e){return b(n.getUTCMonth()+1,e,2)}function Gu(n,e){return b(n.getUTCMinutes(),e,2)}function Ju(n,e){return b(n.getUTCSeconds(),e,2)}function Ku(n){var e=n.getUTCDay();return e===0?7:e}function ju(n,e){return b(Vn.count(X(n)-1,n),e,2)}function Ct(n){var e=n.getUTCDay();return e>=4||e===0?gn(n):gn.ceil(n)}function na(n,e){return n=Ct(n),b(gn.count(X(n),n)+(X(n).getUTCDay()===4),e,2)}function ea(n){return n.getUTCDay()}function ta(n,e){return b(In.count(X(n)-1,n),e,2)}function ra(n,e){return b(n.getUTCFullYear()%100,e,2)}function ua(n,e){return n=Ct(n),b(n.getUTCFullYear()%100,e,2)}function aa(n,e){return b(n.getUTCFullYear()%1e4,e,4)}function oa(n,e){var t=n.getUTCDay();return n=t>=4||t===0?gn(n):gn.ceil(n),b(n.getUTCFullYear()%1e4,e,4)}function ia(){return"+0000"}function et(){return"%"}function tt(n){return+n}function rt(n){return Math.floor(+n/1e3)}var fn,Ut,St;fa({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function fa(n){return fn=fu(n),Ut=fn.format,fn.parse,St=fn.utcFormat,fn.utcParse,fn}function ca(n){return new Date(n)}function la(n){return n instanceof Date?+n:+new Date(+n)}function we(n,e,t,r,u,a,o,i,c,f){var g=gt(),l=g.invert,h=g.domain,p=f(".%L"),d=f(":%S"),v=f("%I:%M"),k=f("%I %p"),C=f("%a %d"),G=f("%b %d"),D=f("%B"),L=f("%Y");function N(y){return(c(y)<y?p:i(y)<y?d:o(y)<y?v:a(y)<y?k:r(y)<y?u(y)<y?C:G:t(y)<y?D:L)(y)}return g.invert=function(y){return new Date(l(y))},g.domain=function(y){return arguments.length?h(Array.from(y,la)):h().map(ca)},g.ticks=function(y){var $=h();return n($[0],$[$.length-1],y??10)},g.tickFormat=function(y,$){return $==null?N:f($)},g.nice=function(y){var $=h();return(!y||typeof y.range!="function")&&(y=e($[0],$[$.length-1],y??10)),y?h(dt($,y)):g},g.copy=function(){return vn(g,we(n,e,t,r,u,a,o,i,c,f))},g}function Ca(){return B.apply(we(ou,iu,Q,xe,Zn,Tn,ye,me,nn,Ut).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function Ua(){return B.apply(we(uu,au,X,Me,Vn,zn,pe,de,nn,St).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Qn(){var n=0,e=1,t,r,u,a,o=O,i=!1,c;function f(l){return l==null||isNaN(l=+l)?c:o(u===0?.5:(l=(a(l)-t)*u,i?Math.max(0,Math.min(1,l)):l))}f.domain=function(l){return arguments.length?([n,e]=l,t=a(n=+n),r=a(e=+e),u=t===r?0:1/(r-t),f):[n,e]},f.clamp=function(l){return arguments.length?(i=!!l,f):i},f.interpolator=function(l){return arguments.length?(o=l,f):o};function g(l){return function(h){var p,d;return arguments.length?([p,d]=h,o=l(p,d),f):[o(0),o(1)]}}return f.range=g(qn),f.rangeRound=g(st),f.unknown=function(l){return arguments.length?(c=l,f):c},function(l){return a=l,t=l(n),r=l(e),u=t===r?0:1/(r-t),f}}function Xn(n,e){return e.domain(n.domain()).interpolator(n.interpolator()).clamp(n.clamp()).unknown(n.unknown())}function sa(){var n=En(Qn()(O));return n.copy=function(){return Xn(n,sa())},Rn.apply(n,arguments)}function ga(){var n=yt(Qn()).domain([1,10]);return n.copy=function(){return Xn(n,ga()).base(n.base())},Rn.apply(n,arguments)}function ha(){var n=pt(Qn());return n.copy=function(){return Xn(n,ha()).constant(n.constant())},Rn.apply(n,arguments)}function Dt(){var n=xt(Qn());return n.copy=function(){return Xn(n,Dt()).exponent(n.exponent())},Rn.apply(n,arguments)}function Sa(){return Dt.apply(null,arguments).exponent(.5)}export{ma as A,$n as B,va as C,Zt as D,qn as E,Tr as F,En as G,gt as H,B as I,ut as J,O as K,Rn as L,Xn as M,yt as N,xt as O,pt as P,st as Q,Ce as R,ga as S,Dt as T,Sa as U,ha as V,Qr as W,Ir as X,Rt as a,yn as b,Un as c,ve as d,ba as e,wa as f,Ma as g,xa as h,_r as i,Ca as j,ka as k,Rr as l,Vr as m,ot as n,at as o,Mt as p,Ta as q,An as r,sa as s,pa as t,Ua as u,pr as v,Mn as w,ya as x,It as y,da as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{fr as d,fs as y}from"./index-CN7VPpiB.js";import{s as S}from"./subMonths-C1UIPrOU.js";function T(s,t,o){return d(s,-t,o)}function M(s,t,o){const{years:n=0,months:u=0,weeks:r=0,days:c=0,hours:e=0,minutes:a=0,seconds:m=0}=t,b=S(s,u+n*12,o),i=T(b,c+r*7,o),f=a+e*60,h=(m+f*60)*1e3;return y(s,+i-h)}export{M as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ft as n}from"./index-CN7VPpiB.js";function a(t,o,s){return n(t,-o,s)}export{a as s};
|
package/dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" href="/icons/accounter-logo.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Accounter</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-CN7VPpiB.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CQXFj3Uj.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -11,8 +11,15 @@ import { getFragmentData, type FragmentType } from '@/gql/index.js';
|
|
|
11
11
|
id
|
|
12
12
|
name
|
|
13
13
|
createdAt
|
|
14
|
+
isActive
|
|
14
15
|
... on LtdFinancialEntity {
|
|
15
16
|
governmentId
|
|
17
|
+
adminInfo {
|
|
18
|
+
id
|
|
19
|
+
}
|
|
20
|
+
clientInfo {
|
|
21
|
+
id
|
|
22
|
+
}
|
|
16
23
|
}
|
|
17
24
|
}
|
|
18
25
|
`;
|
|
@@ -29,6 +36,12 @@ export function BusinessHeader({ data }: Props) {
|
|
|
29
36
|
return <div />;
|
|
30
37
|
}
|
|
31
38
|
|
|
39
|
+
const { isActive, adminInfo, clientInfo } = business;
|
|
40
|
+
const isAdmin = !!adminInfo?.id;
|
|
41
|
+
const isClient = !!clientInfo?.id;
|
|
42
|
+
// TODO: add worker info to the business and uncomment
|
|
43
|
+
// const isWorker = _TBD_;
|
|
44
|
+
|
|
32
45
|
return (
|
|
33
46
|
<header className="sticky top-0 z-50 w-full border-b border-border bg-card/95 backdrop-blur supports-[backdrop-filter]:bg-card/60">
|
|
34
47
|
<div className="container mx-auto px-4 md:px-6 lg:px-8 max-w-7xl">
|
|
@@ -40,8 +53,14 @@ export function BusinessHeader({ data }: Props) {
|
|
|
40
53
|
<div className="min-w-0 flex-1">
|
|
41
54
|
<div className="flex items-center gap-2 flex-wrap">
|
|
42
55
|
<h1 className="text-lg font-semibold text-foreground">{business.name}</h1>
|
|
43
|
-
{
|
|
44
|
-
|
|
56
|
+
{isActive ? (
|
|
57
|
+
<Badge variant="secondary">Active</Badge>
|
|
58
|
+
) : (
|
|
59
|
+
<Badge variant="destructive">Inactive</Badge>
|
|
60
|
+
)}
|
|
61
|
+
{isAdmin && <Badge variant="outline">Admin</Badge>}
|
|
62
|
+
{isClient && <Badge variant="outline">Client</Badge>}
|
|
63
|
+
{/* {isWorker && <Badge variant="outline">Worker</Badge>} */}
|
|
45
64
|
</div>
|
|
46
65
|
<p className="text-sm text-muted-foreground truncate">Business ID: {business.id}</p>
|
|
47
66
|
</div>
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { useState, type ReactElement } from 'react';
|
|
2
2
|
import { format } from 'date-fns';
|
|
3
3
|
import { ChevronsLeftRightEllipsis, ChevronsRightLeft } from 'lucide-react';
|
|
4
|
+
import { Link } from 'react-router-dom';
|
|
4
5
|
import { useQuery } from 'urql';
|
|
5
|
-
import { Mark,
|
|
6
|
+
import { Mark, Table, Tooltip } from '@mantine/core';
|
|
6
7
|
import {
|
|
7
8
|
BusinessTransactionsInfoDocument,
|
|
8
9
|
Currency,
|
|
@@ -14,6 +15,7 @@ import { AccounterLoader } from '../common/index.js';
|
|
|
14
15
|
import { getChargeHref } from '../screens/charges/charge.js';
|
|
15
16
|
import { Button } from '../ui/button.js';
|
|
16
17
|
import { DownloadCSV } from './download-csv.js';
|
|
18
|
+
import { getBusinessTransactionsHref } from './index.js';
|
|
17
19
|
|
|
18
20
|
// eslint-disable-next-line @typescript-eslint/no-unused-expressions -- used by codegen
|
|
19
21
|
/* GraphQL */ `
|
|
@@ -233,17 +235,15 @@ export function BusinessExtendedInfo({ businessID, filter }: Props): ReactElemen
|
|
|
233
235
|
}}
|
|
234
236
|
>
|
|
235
237
|
<td>
|
|
236
|
-
<
|
|
237
|
-
|
|
238
|
+
<Link
|
|
239
|
+
to={getBusinessTransactionsHref({ businessIDs: [row.business.id] })}
|
|
238
240
|
target="_blank"
|
|
239
241
|
rel="noreferrer"
|
|
240
242
|
onClick={event => event.stopPropagation()}
|
|
243
|
+
className="inline-flex items-center font-semibold"
|
|
241
244
|
>
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
className="[&>*>.mantine-NavLink-label]:font-semibold"
|
|
245
|
-
/>
|
|
246
|
-
</a>
|
|
245
|
+
{row.business.name}
|
|
246
|
+
</Link>
|
|
247
247
|
</td>
|
|
248
248
|
<td>{row.invoiceDate ? format(new Date(row.invoiceDate), 'dd/MM/yy') : null}</td>
|
|
249
249
|
<td style={{ whiteSpace: 'nowrap' }}>
|
|
@@ -273,17 +273,15 @@ export function BusinessExtendedInfo({ businessID, filter }: Props): ReactElemen
|
|
|
273
273
|
<td>{row.details}</td>
|
|
274
274
|
<td>
|
|
275
275
|
{row.counterAccount && (
|
|
276
|
-
<
|
|
277
|
-
|
|
276
|
+
<Link
|
|
277
|
+
to={getBusinessTransactionsHref({ businessIDs: [row.counterAccount.id] })}
|
|
278
278
|
target="_blank"
|
|
279
279
|
rel="noreferrer"
|
|
280
280
|
onClick={event => event.stopPropagation()}
|
|
281
|
+
className="inline-flex items-center font-semibold"
|
|
281
282
|
>
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
className="[&>*>.mantine-NavLink-label]:font-semibold"
|
|
285
|
-
/>
|
|
286
|
-
</a>
|
|
283
|
+
{row.counterAccount.name}
|
|
284
|
+
</Link>
|
|
287
285
|
)}
|
|
288
286
|
</td>
|
|
289
287
|
<td />
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useContext, useEffect, useMemo, useState, type ReactElement, type ReactNode } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { useParams } from 'react-router-dom';
|
|
3
3
|
import { useQuery } from 'urql';
|
|
4
4
|
import { Mark } from '@mantine/core';
|
|
5
5
|
import {
|
|
@@ -19,10 +19,10 @@ type Props = {
|
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
export const BusinessTransactionsSingle = ({ businessId }: Props): ReactElement => {
|
|
22
|
-
const
|
|
22
|
+
const { businessId: businessIdFromUrl } = useParams<{ businessId: string }>();
|
|
23
23
|
const { get } = useUrlQuery();
|
|
24
24
|
const { setFiltersContext } = useContext(FiltersContext);
|
|
25
|
-
const id = businessId ||
|
|
25
|
+
const id = businessId || businessIdFromUrl;
|
|
26
26
|
const [filter, setFilter] = useState<BusinessTransactionsFilter>(
|
|
27
27
|
get('transactionsFilters')
|
|
28
28
|
? {
|
|
@@ -72,13 +72,24 @@ import {
|
|
|
72
72
|
export function getBusinessTransactionsHref(filter?: BusinessTransactionsFilter | null): string {
|
|
73
73
|
const params = new URLSearchParams();
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
let businessId: string | undefined = undefined;
|
|
76
|
+
let adjustedFilter = filter;
|
|
77
|
+
if (filter?.businessIDs && filter.businessIDs.length === 1) {
|
|
78
|
+
const { businessIDs, ...rest } = filter;
|
|
79
|
+
businessId = businessIDs[0];
|
|
80
|
+
adjustedFilter = rest;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const transactionsFilters = encodeTransactionsFilters(adjustedFilter);
|
|
76
84
|
if (transactionsFilters) {
|
|
77
85
|
// Add it as a single encoded parameter
|
|
78
86
|
params.append('transactionsFilters', transactionsFilters);
|
|
79
87
|
}
|
|
80
88
|
|
|
81
89
|
const queryParams = params.size > 0 ? `?${params}` : '';
|
|
90
|
+
if (businessId) {
|
|
91
|
+
return `/businesses/${businessId}/transactions${queryParams}`;
|
|
92
|
+
}
|
|
82
93
|
return `/businesses/transactions${queryParams}`;
|
|
83
94
|
}
|
|
84
95
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useContext, useEffect, type ReactElement } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { useParams } from 'react-router-dom';
|
|
3
3
|
import { useQuery } from 'urql';
|
|
4
4
|
import { Container } from '@mantine/core';
|
|
5
5
|
import { BusinessTripScreenDocument } from '../../gql/graphql.js';
|
|
@@ -26,9 +26,9 @@ type Props = {
|
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
export const BusinessTrip = ({ businessTripId }: Props): ReactElement => {
|
|
29
|
-
const
|
|
29
|
+
const { businessTripId: businessTripIdFromUrl } = useParams<{ businessTripId: string }>();
|
|
30
30
|
const { setFiltersContext } = useContext(FiltersContext);
|
|
31
|
-
const id = businessTripId ??
|
|
31
|
+
const id = businessTripId ?? businessTripIdFromUrl ?? '';
|
|
32
32
|
const [{ data, fetching }] = useQuery({
|
|
33
33
|
query: BusinessTripScreenDocument,
|
|
34
34
|
variables: {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { useCallback, useContext, useEffect, useState, type ReactElement } from 'react';
|
|
2
2
|
import { Loader2, PanelTopClose, PanelTopOpen } from 'lucide-react';
|
|
3
|
+
import { useNavigate } from 'react-router-dom';
|
|
3
4
|
import { useQuery } from 'urql';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
AllBusinessesForScreenDocument,
|
|
7
|
-
type AllBusinessesForScreenQuery,
|
|
8
|
-
} from '../../gql/graphql.js';
|
|
5
|
+
import { Tooltip } from '@mantine/core';
|
|
6
|
+
import { AllBusinessesForScreenDocument } from '../../gql/graphql.js';
|
|
9
7
|
import { useUrlQuery } from '../../hooks/use-url-query.js';
|
|
10
8
|
import { cn } from '../../lib/utils.js';
|
|
11
9
|
import { FiltersContext } from '../../providers/filters-context.js';
|
|
10
|
+
import { ROUTES } from '../../router/routes.js';
|
|
11
|
+
import { BusinessHeader } from '../business/business-header.js';
|
|
12
12
|
import { MergeBusinessesButton } from '../common/index.js';
|
|
13
13
|
import { PageLayout } from '../layout/page-layout.js';
|
|
14
14
|
import { Button } from '../ui/button.js';
|
|
15
|
-
import {
|
|
15
|
+
import { Checkbox } from '../ui/checkbox.js';
|
|
16
16
|
import { BusinessesFilters } from './businesses-filters.js';
|
|
17
17
|
|
|
18
18
|
// eslint-disable-next-line @typescript-eslint/no-unused-expressions -- used by codegen
|
|
@@ -24,7 +24,7 @@ import { BusinessesFilters } from './businesses-filters.js';
|
|
|
24
24
|
id
|
|
25
25
|
name
|
|
26
26
|
... on LtdFinancialEntity {
|
|
27
|
-
...
|
|
27
|
+
...BusinessHeader
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
pageInfo {
|
|
@@ -52,6 +52,7 @@ export const Businesses = (): ReactElement => {
|
|
|
52
52
|
},
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
+
const navigate = useNavigate();
|
|
55
56
|
const [mergeSelectedBusinesses, setMergeSelectedBusinesses] = useState<
|
|
56
57
|
Array<{ id: string; onChange: () => void }>
|
|
57
58
|
>([]);
|
|
@@ -127,35 +128,43 @@ export const Businesses = (): ReactElement => {
|
|
|
127
128
|
<Loader2 className={cn('h-10 w-10 animate-spin mr-2')} />
|
|
128
129
|
</div>
|
|
129
130
|
) : (
|
|
130
|
-
<
|
|
131
|
-
|
|
132
|
-
<
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
131
|
+
<div className="space-y-2">
|
|
132
|
+
{businesses.map(business => (
|
|
133
|
+
<div
|
|
134
|
+
key={business.id}
|
|
135
|
+
className="group relative border rounded-lg hover:shadow-md transition-shadow"
|
|
136
|
+
>
|
|
137
|
+
<div className="flex items-center gap-3">
|
|
138
|
+
<div className="pl-4 flex items-center">
|
|
139
|
+
<Checkbox
|
|
140
|
+
checked={selectedIds.has(business.id)}
|
|
141
|
+
onCheckedChange={() => {
|
|
142
|
+
toggleMergeBusiness(business.id, () => {});
|
|
143
|
+
}}
|
|
144
|
+
className="h-4 w-4 rounded border-gray-300 cursor-pointer"
|
|
145
|
+
onClick={(e): void => e.stopPropagation()}
|
|
146
|
+
/>
|
|
147
|
+
</div>
|
|
148
|
+
<div
|
|
149
|
+
role="button"
|
|
150
|
+
tabIndex={0}
|
|
151
|
+
className="flex-1 cursor-pointer"
|
|
152
|
+
onClick={(): void => {
|
|
153
|
+
navigate(ROUTES.BUSINESSES.DETAIL(business.id));
|
|
154
|
+
}}
|
|
155
|
+
onKeyDown={(e): void => {
|
|
156
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
157
|
+
e.preventDefault();
|
|
158
|
+
navigate(ROUTES.BUSINESSES.DETAIL(business.id));
|
|
159
|
+
}
|
|
160
|
+
}}
|
|
161
|
+
>
|
|
162
|
+
<BusinessHeader data={business} />
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
))}
|
|
167
|
+
</div>
|
|
159
168
|
)}
|
|
160
169
|
</PageLayout>
|
|
161
170
|
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ReactElement } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Link } from 'react-router-dom';
|
|
3
3
|
import { ChargesTableBusinessTripFieldsFragmentDoc } from '../../../gql/graphql.js';
|
|
4
4
|
import { getFragmentData, type FragmentType } from '../../../gql/index.js';
|
|
5
5
|
|
|
@@ -29,17 +29,15 @@ export const BusinessTrip = ({ data }: Props): ReactElement => {
|
|
|
29
29
|
|
|
30
30
|
return (
|
|
31
31
|
<td>
|
|
32
|
-
<
|
|
33
|
-
|
|
32
|
+
<Link
|
|
33
|
+
to={`/business-trips/${charge.businessTrip?.id}`}
|
|
34
34
|
target="_blank"
|
|
35
35
|
rel="noreferrer"
|
|
36
36
|
onClick={event => event.stopPropagation()}
|
|
37
|
+
className="inline-flex items-center font-semibold"
|
|
37
38
|
>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
className="[&>*>.mantine-NavLink-label]:font-semibold"
|
|
41
|
-
/>
|
|
42
|
-
</a>
|
|
39
|
+
{charge.businessTrip?.name}
|
|
40
|
+
</Link>
|
|
43
41
|
</td>
|
|
44
42
|
);
|
|
45
43
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useCallback, useMemo, type ReactElement } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Link } from 'react-router-dom';
|
|
3
|
+
import { Indicator } from '@mantine/core';
|
|
3
4
|
import {
|
|
4
5
|
ChargesTableEntityFieldsFragmentDoc,
|
|
5
6
|
MissingChargeInfo,
|
|
@@ -81,14 +82,15 @@ export const Counterparty = ({ data }: Props): ReactElement => {
|
|
|
81
82
|
<div className="flex flex-wrap">
|
|
82
83
|
<Indicator inline size={12} disabled={!isError} color="red" zIndex="auto">
|
|
83
84
|
{!isError && id && (
|
|
84
|
-
<
|
|
85
|
-
|
|
85
|
+
<Link
|
|
86
|
+
to={getHref(id)}
|
|
86
87
|
target="_blank"
|
|
87
88
|
rel="noreferrer"
|
|
88
89
|
onClick={event => event.stopPropagation()}
|
|
90
|
+
className="inline-flex items-center font-semibold"
|
|
89
91
|
>
|
|
90
|
-
|
|
91
|
-
</
|
|
92
|
+
{name}
|
|
93
|
+
</Link>
|
|
92
94
|
)}
|
|
93
95
|
{isError && name}
|
|
94
96
|
</Indicator>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState, type ReactElement, type ReactNode } from 'react';
|
|
2
|
+
import { Button } from '@/components/ui/button.js';
|
|
2
3
|
import { Pagination, Paper, Table, type PaginationProps } from '@mantine/core';
|
|
3
|
-
import { Button } from './index.js';
|
|
4
4
|
|
|
5
5
|
export interface AccounterTableProps<T, U> {
|
|
6
6
|
highlightOnHover?: boolean;
|
|
@@ -47,7 +47,9 @@ export function AccounterTableRow<T, U>(props: AccountTableRow<T, U>): ReactElem
|
|
|
47
47
|
{moreInfoValue === null ? (
|
|
48
48
|
<p>No Data Related</p>
|
|
49
49
|
) : (
|
|
50
|
-
<Button
|
|
50
|
+
<Button onClick={(): void => setOpened(!opened)} className="ml-auto">
|
|
51
|
+
More Info
|
|
52
|
+
</Button>
|
|
51
53
|
)}
|
|
52
54
|
</td>
|
|
53
55
|
)}
|
|
@@ -73,15 +75,14 @@ export function AccounterTable<T, U>(props: AccounterTableProps<T, U>): ReactNod
|
|
|
73
75
|
<div className="flex flex-row justify-end w-full">
|
|
74
76
|
{props.pagination && <Pagination className="flex-auto" {...props.pagination} />}
|
|
75
77
|
{props.showButton === true ? (
|
|
76
|
-
<
|
|
77
|
-
className="inline-flex text-white bg-indigo-500 border-0 py-1.5 px-3 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-sm"
|
|
78
|
+
<Button
|
|
78
79
|
type="button"
|
|
79
80
|
onClick={(): void => {
|
|
80
81
|
setIsShowAll(prev => !prev);
|
|
81
82
|
}}
|
|
82
83
|
>
|
|
83
84
|
{isShowAll ? 'Hide All' : 'Show All'}
|
|
84
|
-
</
|
|
85
|
+
</Button>
|
|
85
86
|
) : null}
|
|
86
87
|
</div>
|
|
87
88
|
<Table striped={props.striped} highlightOnHover={props.highlightOnHover}>
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { useEffect, useState, type ReactElement } from 'react';
|
|
2
2
|
import { format } from 'date-fns';
|
|
3
3
|
import { Controller, type Control } from 'react-hook-form';
|
|
4
|
+
import { Link } from 'react-router-dom';
|
|
4
5
|
import { toast } from 'sonner';
|
|
5
6
|
import { useQuery } from 'urql';
|
|
6
|
-
import {
|
|
7
|
+
import { Select, Text } from '@mantine/core';
|
|
7
8
|
import { DatePickerInput } from '@mantine/dates';
|
|
8
9
|
import {
|
|
9
10
|
AttendeesByBusinessTripDocument,
|
|
@@ -236,15 +237,16 @@ export const CoreExpenseRow = ({
|
|
|
236
237
|
<td>
|
|
237
238
|
<div className="flex flex-col gap-2">
|
|
238
239
|
{linkedChargeIds.map(id => (
|
|
239
|
-
<
|
|
240
|
+
<Link
|
|
240
241
|
key={id}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
242
|
+
to={getChargeHref(id)}
|
|
243
|
+
target="_blank"
|
|
244
|
+
rel="noreferrer"
|
|
245
|
+
onClick={event => event.stopPropagation()}
|
|
246
|
+
className="inline-flex items-center font-semibold"
|
|
247
|
+
>
|
|
248
|
+
To Charge
|
|
249
|
+
</Link>
|
|
248
250
|
))}
|
|
249
251
|
</div>
|
|
250
252
|
</td>
|