From 3a486a65f4676d7197fc842bad395de40e51ab96 Mon Sep 17 00:00:00 2001 From: acelaya Date: Sun, 20 Apr 2025 11:29:30 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20preview-env=20from=20@=20shlin?= =?UTF-8?q?kio/shlink-web-client@4947e0490a920b499a1a77d199f71a5cc45d414e?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/{index-CrVWoaUd.js => index-DGf_GP9S.js} | 2 +- .../assets/{index-DwRly2sr.css => index-DkhKU6No.css} | 2 +- feature/server-credentials/index.html | 4 ++-- feature/server-credentials/service-worker.js | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename feature/server-credentials/assets/{index-CrVWoaUd.js => index-DGf_GP9S.js} (98%) rename feature/server-credentials/assets/{index-DwRly2sr.css => index-DkhKU6No.css} (91%) diff --git a/feature/server-credentials/assets/index-CrVWoaUd.js b/feature/server-credentials/assets/index-DGf_GP9S.js similarity index 98% rename from feature/server-credentials/assets/index-CrVWoaUd.js rename to feature/server-credentials/assets/index-DGf_GP9S.js index f8446af8..a204e71b 100644 --- a/feature/server-credentials/assets/index-CrVWoaUd.js +++ b/feature/server-credentials/assets/index-DGf_GP9S.js @@ -731,7 +731,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho * https://github.com/lancedikson/bowser * MIT License | (c) Dustin Diaz 2012-2015 * MIT License | (c) Denis Demchenko 2015-2019 - */class QCe{static getParser(t,r=!1){if(typeof t!="string")throw new Error("UserAgent should be a string");return new O8(t,r)}static parse(t){return new O8(t).getResult()}static get BROWSER_MAP(){return fV}static get ENGINE_MAP(){return Js}static get OS_MAP(){return An}static get PLATFORMS_MAP(){return kr}}var JCe=Object.defineProperty,ePe=(e,t,r)=>t in e?JCe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fl=(e,t,r)=>ePe(e,typeof t!="symbol"?t+"":t,r);const tPe=e=>(e==null?void 0:e.type)===xT.INVALID_ARGUMENT,rPe=e=>(e==null?void 0:e.type)===xT.INVALID_SHORT_URL_DELETION,nPe=e=>!!e&&typeof e=="object"&&["type","detail","title","status"].every(t=>t in e),Pi=e=>nPe(e)?e:void 0,$A=e=>"error"in e,fo=({errorData:e,fallbackMessage:t})=>m.jsxs(m.Fragment,{children:[(e==null?void 0:e.detail)??t,tPe(e)&&m.jsxs("p",{className:"mb-0",children:["Invalid elements: [",e.invalidElements.join(", "),"]"]})]}),Yu=({style:e,className:t,...r})=>m.jsx("button",{type:"button",className:Me("border-0",t),style:{backgroundColor:"inherit",fontWeight:"inherit",color:"inherit",...e},...r}),dV=$.createContext(""),iPe=dV.Provider,Nl=()=>$.useContext(dV),hV=$.createContext(void 0),{Provider:FA}=hV,b_=()=>$.useContext(hV),aPe=5,BA=()=>{const[e,t]=$.useState([]),r=$.useMemo(()=>e.length>=aPe,[e.length]),n=$.useCallback(s=>!r&&t(u=>[...u,s]),[r]),i=$.useCallback(s=>!r&&e.every(u=>u.name!==s),[e,r]),a=$.useCallback(s=>t(u=>u.filter(l=>l!==s)),[]),o=$.useCallback(()=>t([]),[]);return{itemsToCompare:e,addItemToCompare:n,removeItemToCompare:a,clearItemsToCompare:o,canAddItemWithName:i}},UA=({className:e,type:t})=>{const r=Nl(),n=b_(),i=$.useMemo(()=>n?encodeURIComponent(n.itemsToCompare.map(u=>u.query).join(",")):"",[n]);if(!n||n.itemsToCompare.length===0)return null;const{itemsToCompare:a,clearItemsToCompare:o,removeItemToCompare:s}=n;return m.jsx("div",{className:Me("top-sticky",e),children:m.jsxs(sr,{bodyClassName:"d-md-flex gap-3 align-items-center",children:[m.jsx("ul",{className:"d-flex flex-wrap gap-1 flex-grow-1 p-0 m-0",children:a.map((u,l)=>{var h;return m.jsxs("li",{className:Me("badge pe-1",{"bg-secondary":!((h=u.style)!=null&&h.backgroundColor)}),style:u.style,children:[u.name,m.jsx(Yu,{"aria-label":`Remove ${u.name}`,className:"fw-bold fs-6",onClick:()=>s(u),children:"×"})]},`${u.name}_${l}`)})}),m.jsxs("div",{className:"d-flex mt-3 mt-md-0",children:[m.jsxs(Rt,{outline:!0,color:"primary",className:"flex-grow-1 indivisible",disabled:a.length<2,tag:nr,to:`${r}/${t}/compare-visits?${t}=${i}`,children:[m.jsx(Ye,{icon:mb,fixedWidth:!0,className:"me-1"}),"Compare (",a.length,"/5) »"]}),m.jsx(Rt,{"aria-label":"Close compare",outline:!0,color:"secondary",className:"ms-2 fw-bold",onClick:o,children:"×"})]})]})})},oPe=(e,{maxVersion:t,minVersion:r})=>{const n=!r||DP(e,r,">=");return(!t||DP(e,t,"<="))&&n},pV={shortUrlVisitsDeletion:{minVersion:"3.6.0"},orphanVisitsDeletion:{minVersion:"3.7.0"},deviceLongUrls:{maxVersion:"3.*.*"},shortUrlRedirectRules:{minVersion:"4.0.0"},urlValidation:{maxVersion:"3.*.*"},ipRedirectCondition:{minVersion:"4.2.0"},geolocationRedirectCondition:{minVersion:"4.3.0"},filterShortUrlsByDomain:{minVersion:"4.3.0"}};Object.freeze(pV);const Zs=(e,t)=>oPe(t==="latest"?"999.99.99":t,pV[e]),mV=e=>({deviceLongUrls:Zs("deviceLongUrls",e),shortUrlVisitsDeletion:Zs("shortUrlVisitsDeletion",e),orphanVisitsDeletion:Zs("orphanVisitsDeletion",e),shortUrlRedirectRules:Zs("shortUrlRedirectRules",e),urlValidation:Zs("urlValidation",e),ipRedirectCondition:Zs("ipRedirectCondition",e),geolocationRedirectCondition:Zs("geolocationRedirectCondition",e),filterShortUrlsByDomain:Zs("filterShortUrlsByDomain",e)}),vV=$.createContext(mV("0.0.0")),sPe=vV.Provider,lPe=e=>$.useMemo(()=>mV(e),[e]),ho=e=>$.useContext(vV)[e],cd="DEFAULT",uy=({className:e="",placement:t,children:r})=>{const n=$.useRef(null);return m.jsxs(m.Fragment,{children:[m.jsx("span",{className:e,ref:n,children:m.jsx(Ye,{icon:Fj})}),m.jsx(ta,{target:n,placement:t,children:r})]})},gV=e=>t=>{t.preventDefault(),e()},zA=(e,t,r=1)=>ST(r,e+1).map(t),uPe=e=>Array.isArray(e)&&e.length===0||typeof e=="string"&&e===""||typeof e=="object"&&Object.keys(e).length===0,_u=e=>e!=null&&!uPe(e),NO=e=>e||null,hj=e=>e?"true":"false",RO=e=>e===void 0?void 0:hj(e),MO=({isLast:e,...t})=>m.jsx(mae,{...t,required:!1,type:"url",placeholder:"No redirect",className:e?"mb-0":""}),cPe=({isOpen:e,toggle:t,domain:r,editDomainRedirects:n})=>{var i,a,o;const[s,u]=$.useState(((i=r.redirects)==null?void 0:i.baseUrlRedirect)??""),[l,h]=$.useState(((a=r.redirects)==null?void 0:a.regular404Redirect)??""),[p,g]=$.useState(((o=r.redirects)==null?void 0:o.invalidShortUrlRedirect)??""),_=gV(async()=>n({domain:r.domain,redirects:{baseUrlRedirect:NO(s),regular404Redirect:NO(l),invalidShortUrlRedirect:NO(p)}}).then(t));return m.jsx(ea,{isOpen:e,toggle:t,centered:!0,children:m.jsxs("form",{name:"domainRedirectsModal",onSubmit:_,children:[m.jsxs(Pl,{toggle:t,children:["Edit redirects for ",m.jsx("b",{children:r.domain})]}),m.jsxs(ss,{children:[m.jsxs(MO,{value:s,onChange:u,children:[m.jsxs(uy,{className:"me-2",placement:"bottom",children:["Visitors accessing the base url, as in ",m.jsxs("b",{children:["https://",r.domain,"/"]}),", will be redirected to this URL."]}),"Base URL"]}),m.jsxs(MO,{value:l,onChange:h,children:[m.jsxs(uy,{className:"me-2",placement:"bottom",children:["Visitors accessing a url not matching a short URL pattern, as in ",m.jsxs("b",{children:["https://",r.domain,"/???/[...]"]}),", will be redirected to this URL."]}),"Regular 404"]}),m.jsxs(MO,{value:p,isLast:!0,onChange:g,children:[m.jsx(uy,{className:"me-2",placement:"bottom",children:"Visitors accessing a url matching a short URL pattern, but not matching an existing short code, will be redirected to this URL."}),"Invalid short URL"]})]}),m.jsxs(gd,{children:[m.jsx(Rt,{color:"link",type:"button",onClick:t,children:"Cancel"}),m.jsx(Rt,{color:"primary",children:"Save"})]})]})})},fPe=({domain:e,editDomainRedirects:t})=>{const[r,n]=Vt(),i=Nl(),a=b_(),o=ho("filterShortUrlsByDomain");return m.jsxs(m.Fragment,{children:[m.jsxs(Eb,{children:[m.jsxs(Qe,{tag:nr,to:`${i}/domain/${e.domain}${e.isDefault?`_${cd}`:""}/visits`,children:[m.jsx(Ye,{icon:$j,fixedWidth:!0})," Visit stats"]}),m.jsxs(Qe,{disabled:!a||!a.canAddItemWithName(e.domain),onClick:()=>a==null?void 0:a.addItemToCompare({name:e.domain,query:e.domain}),children:[m.jsx(Ye,{icon:mb,fixedWidth:!0})," Compare visits"]}),o&&m.jsxs(Qe,{tag:nr,to:`${i}/list-short-urls/1?domain=${e.isDefault?cd:e.domain}`,children:[m.jsx(Ye,{icon:Dj,fixedWidth:!0})," Short URLs"]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{onClick:n,children:[m.jsx(Ye,{icon:Ij,fixedWidth:!0})," Edit redirects"]})]}),m.jsx(cPe,{domain:e,isOpen:r,toggle:n,editDomainRedirects:t})]})},dPe=(e,t)=>{const r=n=>i=>{i.event.composedPath().some(({classList:a})=>a==null?void 0:a.contains("visits-table"))||document.querySelector(".modal")||n()};return lse({delta:40,onSwipedLeft:r(t),onSwipedRight:r(e)})},hPe=(e,t)=>{const[r,n]=$.useState(t),i=$.useCallback(a=>{const{location:o,history:s}=window,u=NF(o.search);u[e]=a,s.pushState(null,"",`${o.pathname}?${mT(u)}`),n(a)},[e]);return[r,i]},VA=e=>{const t=bd();return $.useMemo(()=>{var r;return((r=t[e])==null?void 0:r.split(",").filter(Boolean))??[]},[e,t])},pPe=()=>{const e=mo();return $.useCallback(()=>e(-1),[e])},qA=(e,t)=>{const r=$.useCallback(()=>t(`(max-width: ${e}px)`).matches,[t,e]),[n,i]=$.useState(r());return $.useEffect(()=>{const a=()=>i(r());return window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[r]),n},mPe=(e,t,r)=>{$.useEffect(()=>{if(!r)return()=>{};const n=i=>i.key===e&&t();return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[r,t,e])},vPe=({status:e,matchMedia:t=window.matchMedia})=>{const r=$.useRef(null),n=qA(991,t);return e==="validating"?m.jsx(Ye,{fixedWidth:!0,icon:pb,spin:!0}):m.jsxs(m.Fragment,{children:[m.jsx("span",{ref:r,children:e==="valid"?m.jsx(Ye,{fixedWidth:!0,icon:Lu,className:"text-muted"}):m.jsx(Ye,{fixedWidth:!0,icon:YO,className:"text-danger"})}),m.jsx(ta,{target:r,placement:n?"right":"left",autohide:e==="valid",children:e==="valid"?"Congratulations! This domain is properly configured.":m.jsxs("span",{children:["Oops! There is some missing configuration, and short URLs shared with this domain will not work.",m.jsx("br",{}),"Check the ",m.jsx(_i,{href:"https://slnk.to/multi-domain-docs",children:"documentation"})," in order to find out what is missing."]})})]})},LO=({fallback:e})=>m.jsxs("span",{className:"text-muted",children:[!e&&m.jsx("small",{children:"No redirect"}),e&&m.jsxs(m.Fragment,{children:[e," ",m.jsx("small",{children:"(as fallback)"})]})]}),gPe=()=>m.jsxs(m.Fragment,{children:[m.jsx(Ye,{fixedWidth:!0,icon:TY,className:"text-primary",id:"defaultDomainIcon"}),m.jsx(ta,{target:"defaultDomainIcon",placement:"right",children:"Default domain"})]}),yPe=({domain:e,editDomainRedirects:t,checkDomainHealth:r,defaultRedirects:n})=>{const{domain:i,isDefault:a,redirects:o,status:s}=e;return $.useEffect(()=>{r(e.domain)},[r,e.domain]),m.jsxs("tr",{className:"responsive-table__row",children:[m.jsx("td",{className:"responsive-table__cell","data-th":"Is default domain",children:a&&m.jsx(gPe,{})}),m.jsx("th",{className:"responsive-table__cell","data-th":"Domain",children:i}),m.jsx("td",{className:"responsive-table__cell","data-th":"Base path redirect",children:(o==null?void 0:o.baseUrlRedirect)??m.jsx(LO,{fallback:n==null?void 0:n.baseUrlRedirect})}),m.jsx("td",{className:"responsive-table__cell","data-th":"Regular 404 redirect",children:(o==null?void 0:o.regular404Redirect)??m.jsx(LO,{fallback:n==null?void 0:n.regular404Redirect})}),m.jsx("td",{className:"responsive-table__cell","data-th":"Invalid short URL redirect",children:(o==null?void 0:o.invalidShortUrlRedirect)??m.jsx(LO,{fallback:n==null?void 0:n.invalidShortUrlRedirect})}),m.jsx("td",{className:"responsive-table__cell text-lg-center","data-th":"Status",children:m.jsx(vPe,{status:s})}),m.jsx("td",{className:"responsive-table__cell text-end",children:m.jsx(fPe,{domain:e,editDomainRedirects:t})})]})},C8=[{value:"Is default domain",isHidden:!0},{value:"Domain",isHidden:!1},{value:"Base path redirect",isHidden:!1},{value:"Regular 404 redirect",isHidden:!1},{value:"Invalid short URL redirect",isHidden:!1},{value:"Domain status",isHidden:!0},{value:"Options",isHidden:!0}],bPe=({domainsList:e,filterDomains:t,editDomainRedirects:r,checkDomainHealth:n})=>{var i;const{filteredDomains:a,defaultRedirects:o,loading:s,error:u,errorData:l}=e,h=o??((i=a.find(({isDefault:g})=>g))==null?void 0:i.redirects),p=BA();return s?m.jsx(Bu,{loading:!0}):m.jsxs(FA,{value:p,children:[m.jsx(Cb,{className:"mb-3",onChange:t}),m.jsx(UA,{type:"domains",className:"mb-3"}),u?m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:l,fallbackMessage:"Error loading domains :("})}):m.jsx(sr,{children:m.jsxs("table",{className:"table table-hover responsive-table mb-0",children:[m.jsx("thead",{className:"responsive-table__header",children:m.jsx("tr",{children:C8.map((g,_)=>m.jsx("th",{children:m.jsx("span",{className:g.isHidden?"sr-only":void 0,children:g.value})},_))})}),m.jsxs("tbody",{children:[a.length<1&&m.jsx("tr",{children:m.jsx("td",{colSpan:C8.length,className:"text-center",children:"No results found"})}),a.map(g=>m.jsx(yPe,{domain:g,editDomainRedirects:r,checkDomainHealth:n,defaultRedirects:h},g.domain))]})]})})]})},Wr=(e,t)=>tB(e,t,{serializeError:r=>r}),_Pe="shlink/domainRedirects/EDIT_DOMAIN_REDIRECTS",wPe=e=>Wr(_Pe,async({domain:t,redirects:r})=>{const n=await e().editDomainRedirects({domain:t,...r});return{domain:t,redirects:n}}),qg="shlink/domainsList",Wg={domains:[],filteredDomains:[],loading:!1,error:!1},P8=({domain:e,redirects:t})=>r=>r.domain!==e?r:{...r,redirects:t},E8=(e,t)=>r=>r.domain!==e?r:{...r,status:t},xPe=(e,t,r)=>{const n=Wr(`${qg}/listDomains`,async()=>{const{data:s,defaultRedirects:u}=await e().listDomains();return{domains:s.map(l=>({...l,status:"validating"})),defaultRedirects:u}}),i=Wr(`${qg}/checkDomainHealth`,async s=>{try{const{status:u}=await e().health({domain:s});return{domain:s,status:u==="pass"?"valid":"invalid"}}catch{return{domain:s,status:"invalid"}}}),a=Mn(`${qg}/filterDomains`),{reducer:o}=Nr({name:qg,initialState:Wg,reducers:{},extraReducers:s=>{s.addCase(n.pending,()=>({...Wg,loading:!0})),s.addCase(n.rejected,(u,{error:l})=>({...Wg,error:!0,errorData:Pi(l)})),s.addCase(n.fulfilled,(u,{payload:l})=>({...Wg,...l,filteredDomains:l.domains})),s.addCase(i.fulfilled,({domains:u,filteredDomains:l,...h},{payload:p})=>({...h,domains:u.map(E8(p.domain,p.status)),filteredDomains:l.map(E8(p.domain,p.status))})),s.addCase(a,(u,{payload:l})=>({...u,filteredDomains:u.domains.filter(({domain:h})=>h.toLowerCase().match(l.toLowerCase()))})),s.addCase(t.fulfilled,(u,{payload:l})=>({...u,domains:u.domains.map(P8(l)),filteredDomains:u.filteredDomains.map(P8(l))})),s.addCase(r.fulfilled,(u,{payload:l})=>{l.domain===null||u.domains.some(h=>h.domain===l.domain)||u.domains.push({domain:l.domain,status:"validating",isDefault:!1,redirects:{baseUrlRedirect:null,regular404Redirect:null,invalidShortUrlRedirect:null}})})}});return{reducer:o,listDomains:n,checkDomainHealth:i,filterDomains:a}},SPe=(e,t)=>{e.serviceFactory("ManageDomains",()=>bPe),e.decorator("ManageDomains",t(["domainsList"],["filterDomains","editDomainRedirects","checkDomainHealth"])),e.serviceFactory("domainsListReducerCreator",xPe,"apiClientFactory","editDomainRedirects","createShortUrl"),e.serviceFactory("domainsListReducer",r=>r.reducer,"domainsListReducerCreator"),e.serviceFactory("listDomains",r=>r.listDomains,"domainsListReducerCreator"),e.serviceFactory("filterDomains",r=>r.filterDomains,"domainsListReducerCreator"),e.serviceFactory("editDomainRedirects",wPe,"apiClientFactory"),e.serviceFactory("checkDomainHealth",r=>r.checkDomainHealth,"domainsListReducerCreator")},j8="shlink/mercure",OPe={loading:!0,error:!1},CPe=e=>{const t=Wr(`${j8}/loadMercureInfo`,n=>{if(n&&n.realTimeUpdates&&!n.realTimeUpdates.enabled)throw new Error("Real time updates not enabled");return e().mercureInfo()}),{reducer:r}=Nr({name:j8,initialState:OPe,reducers:{},extraReducers:n=>{n.addCase(t.pending,i=>({...i,loading:!0,error:!1})),n.addCase(t.rejected,i=>({...i,loading:!1,error:!0})),n.addCase(t.fulfilled,(i,{payload:a})=>({...a,loading:!1,error:!1}))}});return{loadMercureInfo:t,reducer:r}},PPe=e=>{e.serviceFactory("mercureInfoReducerCreator",CPe,"apiClientFactory"),e.serviceFactory("mercureInfoReducer",t=>t.reducer,"mercureInfoReducerCreator"),e.serviceFactory("loadMercureInfo",t=>t.loadMercureInfo,"mercureInfoReducerCreator")};function Sr(e){return $.useMemo(()=>e,[e])}function Or(e,t){return(r,n=globalThis.console)=>(t.forEach(i=>{const a=r[i];e[i]=a}),e)}const EPe=(e,t,r,n)=>{const{mercureHubUrl:i,token:a,loading:o,error:s}=e;if(o||s||!i)return;const u=({data:p})=>r(JSON.parse(p)),l=({status:p})=>p===401&&n(),h=t.map(p=>{const g=new URL(i);g.searchParams.append("topic",p);const _=new fse.EventSourcePolyfill(g,{headers:{Authorization:`Bearer ${a}`}});return _.onmessage=u,_.onerror=l,_});return()=>h.forEach(p=>p.close())};function Ra(e,t){const r=new Set;return n=>{const{createNewVisits:i,loadMercureInfo:a,mercureInfo:o}=n,s=md();return $.useEffect(()=>{const{interval:u}=o,l=_=>u?r.add(_):i([_]),h=t(s),p=EPe(o,h,l,a);if(!u)return p;const g=setInterval(()=>{i([...r]),r.clear()},u*1e3*60);return()=>{clearInterval(g),p==null||p()}},[i,a,o,s]),m.jsx(e,{...n})}}class Dn{}fl(Dn,"visits","https://shlink.io/new-visit"),fl(Dn,"orphanVisits","https://shlink.io/new-orphan-visit"),fl(Dn,"shortUrlVisits",e=>`https://shlink.io/new-visit/${e}`);const Md=Mn("shlink/visitCreation/createNewVisits",e=>({payload:{createdVisits:e}})),xp=(e,t,r)=>r==null?e.shortCode===t&&!e.domain:e.shortCode===t&&e.domain===r,jPe=(e,t)=>!e.domain&&t===cd?!0:e.domain===t,TPe=(e,t)=>{const r=(t==null?void 0:t.validateUrls)??!1;return e?{longUrl:e.longUrl,tags:e.tags,title:e.title??void 0,domain:e.domain??void 0,validSince:e.meta.validSince??void 0,validUntil:e.meta.validUntil??void 0,maxVisits:e.meta.maxVisits??void 0,crawlable:e.crawlable,forwardQuery:e.forwardQuery,deviceLongUrls:e.deviceLongUrls&&{android:e.deviceLongUrls.android??void 0,ios:e.deviceLongUrls.ios??void 0,desktop:e.deviceLongUrls.desktop??void 0},validateUrl:r}:{longUrl:"",validateUrl:r}},yV=e=>e.replaceAll("/","__"),WA=e=>e.replaceAll("__","/"),HA=({domain:e,shortCode:t})=>`${e??cd}__${yV(t)}`,bV=e=>{const[t,r]=e.split(/__(.+)/);if(!r)throw new Error(`It was not possible to parse domain and short code from "${e}"`);return{domain:t===cd?null:t,shortCode:WA(r)}},GA="shlink/shortUrlDeletion",T8={shortCode:"",loading:!1,deleted:!1,error:!1},APe=e=>Wr(`${GA}/deleteShortUrl`,async({shortCode:t,domain:r})=>(await e().deleteShortUrl({shortCode:t,domain:r}),{shortCode:t,domain:r})),_V=Mn(`${GA}/shortUrlDeleted`),kPe=e=>{const{actions:t,reducer:r}=Nr({name:GA,initialState:T8,reducers:{resetDeleteShortUrl:()=>T8},extraReducers:i=>{i.addCase(e.pending,a=>({...a,loading:!0,error:!1,deleted:!1})),i.addCase(e.rejected,(a,{error:o})=>({...a,errorData:Pi(o),loading:!1,error:!0,deleted:!1})),i.addCase(e.fulfilled,(a,{payload:o})=>({...a,shortCode:o.shortCode,loading:!1,error:!1,deleted:!0}))}}),{resetDeleteShortUrl:n}=t;return{reducer:r,resetDeleteShortUrl:n}},wV="shlink/shortUrlsList",xV=5,NPe={loading:!0,error:!1},RPe=e=>Wr(`${wV}/listShortUrls`,t=>e().listShortUrls(t??{})),MPe=(e,t,r)=>Nr({name:wV,initialState:NPe,reducers:{},extraReducers:n=>{n.addCase(e.pending,i=>({...i,loading:!0,error:!1})),n.addCase(e.rejected,()=>({loading:!1,error:!0})),n.addCase(e.fulfilled,(i,{payload:a})=>({loading:!1,error:!1,shortUrls:a})),n.addCase(r.fulfilled,(i,{payload:a})=>{i.shortUrls&&(i.shortUrls.data=[a,...i.shortUrls.data.slice(0,xV-1)],i.shortUrls.pagination.totalItems+=1)}),n.addCase(t.fulfilled,(i,{payload:a})=>{i.shortUrls&&(i.shortUrls.data=i.shortUrls.data.map(o=>{const{shortCode:s,domain:u}=a;return xp(o,s,u)?a:o}))}),n.addCase(_V,(i,{payload:a})=>{i.shortUrls&&(i.shortUrls.data=i.shortUrls.data.filter(o=>!xp(o,a.shortCode,a.domain)),i.shortUrls.pagination.totalItems-=1)}),n.addCase(Md,(i,{payload:a})=>{i.shortUrls&&(i.shortUrls.data=i.shortUrls.data.map(o=>{var s;return((s=a.createdVisits.findLast(({shortUrl:u})=>u&&xp(o,u.shortCode,u.domain)))==null?void 0:s.shortUrl)??o}))})}}),LPe=new Intl.NumberFormat("en-US"),jr=e=>LPe.format(Number(e)),A8=10,DPe=e=>Math.ceil(e/A8)*A8,pj=({children:e,title:t,link:r,tooltip:n})=>{const i=vl();return m.jsxs(m.Fragment,{children:[m.jsxs(Ji,{innerRef:i,className:"highlight-card",body:!0,tag:nr,to:r,children:[m.jsx(Ye,{size:"3x",className:"highlight-card__link-icon",icon:Ase}),m.jsx(_F,{className:"lh-sm fw-semibold text-uppercase fs-5 highlight-card__title",children:t}),m.jsx(bF,{className:"fs-2 fw-semibold lh-sm",children:e})]}),n&&m.jsx(ta,{target:i,placement:"bottom",children:n})]})},k8=({loading:e,excludeBots:t,visitsSummary:r,...n})=>m.jsx(pj,{tooltip:r.bots!==void 0?m.jsxs(m.Fragment,{children:[t?"Plus":"Including"," ",m.jsx("strong",{children:jr(r.bots)})," potential bot visits"]}):void 0,...n,children:e?"Loading...":jr(t&&r.nonBots!==void 0?r.nonBots:r.total)}),N8=({children:e,titleLinkText:t,titleLink:r,title:n})=>m.jsxs(Ji,{children:[m.jsxs(Dm,{className:"d-flex justify-content-between align-items-center",children:[m.jsx("span",{className:"d-sm-none",children:n}),m.jsx("h5",{className:"d-none d-sm-inline m-0",children:n}),m.jsxs(nr,{to:r,children:[t," »"]})]}),m.jsx(Lm,{children:e})]}),SV=Ra(({shortUrlsList:e,listShortUrls:t,tagsList:r,loadVisitsOverview:n,visitsOverview:i})=>{const{ShortUrlsTable:a,CreateShortUrl:o}=Sr(SV),{loading:s,shortUrls:u}=e,{loading:l}=r,{loading:h,nonOrphanVisits:p,orphanVisits:g}=i,_=Nl(),w=mo(),b=Hr("visits");return $.useEffect(()=>{t({itemsPerPage:xV,orderBy:{field:"dateCreated",dir:"DESC"}}),n()},[t,n]),m.jsxs(m.Fragment,{children:[m.jsxs(Qa,{children:[m.jsx("div",{className:"col-lg-6 col-xl-3 mb-3",children:m.jsx(k8,{title:"Visits",link:`${_}/non-orphan-visits`,excludeBots:(b==null?void 0:b.excludeBots)??!1,loading:h,visitsSummary:p})}),m.jsx("div",{className:"col-lg-6 col-xl-3 mb-3",children:m.jsx(k8,{title:"Orphan visits",link:`${_}/orphan-visits`,excludeBots:(b==null?void 0:b.excludeBots)??!1,loading:h,visitsSummary:g})}),m.jsx("div",{className:"col-lg-6 col-xl-3 mb-3",children:m.jsx(pj,{title:"Short URLs",link:`${_}/list-short-urls/1`,children:s?"Loading...":jr((u==null?void 0:u.pagination.totalItems)??0)})}),m.jsx("div",{className:"col-lg-6 col-xl-3 mb-3",children:m.jsx(pj,{title:"Tags",link:`${_}/manage-tags`,children:l?"Loading...":jr(r.tags.length)})})]}),m.jsxs("div",{className:"d-flex flex-column gap-3",children:[m.jsx(N8,{title:"Create a short URL",titleLinkText:"Advanced options",titleLink:`${_}/create-short-url`,children:m.jsx(o,{basicMode:!0})}),m.jsx(N8,{title:"Recently created URLs",titleLinkText:"See all",titleLink:`${_}/list-short-urls/1`,children:m.jsx(a,{shortUrlsList:e,className:"mb-0",onTagClick:x=>w(`${_}/list-short-urls/1?tags=${encodeURIComponent(x)}`)})})]})]})},()=>[Dn.visits,Dn.orphanVisits]),IPe=Or(SV,["ShortUrlsTable","CreateShortUrl"]);function $Pe(e,t){e.factory("Overview",IPe),e.decorator("Overview",t(["shortUrlsList","tagsList","mercureInfo","visitsOverview"],["listShortUrls","createNewVisits","loadMercureInfo","loadVisitsOverview"]))}const OV="shlink/setShortUrlRedirectRules",R8={saving:!1,saved:!1,error:!1},FPe=e=>Wr(`${OV}/setShortUrlRedirectRules`,({shortUrl:t,data:r})=>{const{shortCode:n,domain:i}=t;return e().setShortUrlRedirectRules({shortCode:n,domain:i},r)}),BPe=e=>{const{reducer:t,actions:r}=Nr({name:OV,initialState:R8,reducers:{resetSetRules:()=>R8},extraReducers:i=>{i.addCase(e.pending,()=>({saving:!0,saved:!1,error:!1})),i.addCase(e.rejected,(a,{error:o})=>({saving:!1,saved:!1,error:!0,errorData:Pi(o)})),i.addCase(e.fulfilled,()=>({saving:!1,error:!1,saved:!0}))}}),{resetSetRules:n}=r;return{reducer:t,resetSetRules:n}},CV="shlink/getShortUrlRedirectRules",UPe={loading:!0,error:!1},zPe=e=>Wr(`${CV}/getShortUrlRedirectRules`,({shortCode:t,domain:r})=>e().getShortUrlRedirectRules({shortCode:t,domain:r})),VPe=e=>Nr({name:CV,initialState:UPe,reducers:{},extraReducers:t=>{t.addCase(e.pending,()=>({loading:!0,error:!1})),t.addCase(e.rejected,()=>({loading:!1,error:!0})),t.addCase(e.fulfilled,(r,{payload:n})=>({loading:!1,error:!1,...n}))}});function fn(e){e.preventDefault()}function Rl(e){e.stopPropagation()}function PV(){const e=new Map;return[function(t,r){e.get(t)&&e.get(t).forEach(n=>{n(r)})},function(t,r){const n=e.get(t)??[];n.push(r),e.set(t,n)}]}var[EV,jV]=PV();function qPe(e,t){return e.source===t.source&&e.flags.split("").sort().join("")===t.flags.split("").sort().join("")}function Of(e,t,r=!0,n=["__key"]){if(e===t)return!0;if(typeof t=="object"&&typeof e=="object"&&e!==null&&t!==null){if(e instanceof Map||e instanceof Set)return!1;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return qPe(e,t);if(e===null||t===null)return!1;const i=e,a=t;if(Object.keys(i).length!==Object.keys(a).length)return!1;for(const o of n)if((o in i||o in a)&&i[o]!==a[o])return!1;for(const o in i)if(!(o in a)||i[o]!==a[o]&&!r||r&&!Of(i[o],a[o],r,n))return!1;return!0}return!1}function TV(e){return e.split(" ").filter(t=>t)}function Ld(e){return{x:e.clientX,y:e.clientY}}Array();var KA=typeof window<"u",wn=new WeakMap,po=new WeakMap;function M8(){return KA?"ontouchstart"in window||navigator.maxTouchPoints>0:!1}var WPe={activeDescendant:void 0,affectedNodes:[],coordinates:{x:0,y:0},currentTargetValue:void 0,on:jV,emit:EV,newActiveDescendant:void 0,originalZIndex:void 0,pointerSelection:!1,preventEnter:!1,rootUserSelect:void 0,nodePointerdown:void 0,longPress:!1,scrolling:!1,longPressTimeout:void 0,remapJustFinished:!1,selectedNodes:[],selectedParent:void 0,preventSynthDrag:!1,pointerDown:void 0},Ge=WPe,_l=!1,L8,D8,DO,fd=!1,_m=!1;function HPe(){Ge={activeDescendant:void 0,affectedNodes:[],coordinates:{x:0,y:0},on:jV,emit:EV,currentTargetValue:void 0,originalZIndex:void 0,pointerId:void 0,preventEnter:!1,remapJustFinished:!1,selectedNodes:[],nodePointerdown:void 0,rootUserSelect:void 0,preventSynthDrag:!1,scrolling:!1,selectedParent:void 0,pointerSelection:!1,synthScrollDirection:void 0,draggedNodeDisplay:void 0,synthDragScrolling:!1,longPress:!1,pointerDown:void 0,longPressTimeout:void 0}}function AV(e){return Object.assign(Ge,e),e.initialParent.data.emit("dragStarted",Ge),_l=!1,Ge.emit("dragStarted",Ge),Ge}function GPe(e){Ge.activeState&&is(Ge.activeState.parent,void 0,Ge),Ge.selectedState&&dl(Ge.selectedState.nodes,Ge.selectedState.parent,Ge),Ge.selectedState=Ge.activeState=void 0,e.pointerType==="mouse"?_m=!0:(e.pointerType==="touch"||e.pointerType==="pen")&&(_m=!1)}function KPe(e){if(fn(e),Ge.pointerDown&&(Ge.pointerDown.node.el.draggable=!0),Ge.pointerDown=void 0,!oo(Ge))return;const t=Ge.currentParent.data.config;oo(Ge)&&t.handleEnd(Ge)}function YPe(e){e.key==="Escape"&&(Ge.selectedState&&dl(Ge.selectedState.nodes,Ge.selectedState.parent,Ge),Ge.activeState&&is(Ge.activeState.parent,void 0,Ge),Ge.selectedState=Ge.activeState=void 0)}function ZPe(e){if(!ao(Ge))return;_l=!0;const t=Ge.initialParent.data.config.handleEnd;t(Ge)}function XPe(e){ao(Ge)&&fn(e)}function QPe(e){if(!Ge.pointerDown||!Ge.pointerDown.validated)return;const t=Ge.pointerDown.parent.data.config;if(!(_m||e.pointerType==="mouse"))if(!oo(Ge)&&(fd||!fd&&!t.nativeDrag)){if(fn(e),t.longPress&&!Ge.longPress){clearTimeout(Ge.longPressTimeout),Ge.longPress=!1;return}const r=t.draggedNodes(Ge.pointerDown);t.dragstartClasses(Ge.pointerDown.node,r,t,!0);const n=jEe(Ge.pointerDown.node,Ge.pointerDown.parent,e,Ge,r);Ge.rootUserSelect=window.getComputedStyle(document.documentElement).userSelect,document.body.style.userSelect="none",I8(e,n)}else oo(Ge)&&I8(e,Ge)}function JPe({parent:e,getValues:t,setValues:r,config:n={}}){var i,a,o;if(!KA)return;if(fd=M8(),!L8){L8=wm(document,{dragover:XPe,pointerdown:GPe,pointerup:KPe,keydown:YPe,drop:ZPe,pointermove:QPe,pointercancel:di(n.handlePointercancel),touchmove:p=>{ao(Ge)&&p.cancelable&&fn(p)}});const h=document.createElement("div");MV(h,{"aria-live":"polite","aria-atomic":"true","data-dnd-live-region":"true"}),Object.assign(h.style,{position:"absolute",top:"0px",left:"-9999px",width:"1px",height:"1px",padding:"0",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"}),document.body.appendChild(h)}D8||(D8=wm(window,{resize:()=>{fd=M8()}})),RV(e);const[s,u]=PV(),l={getValues:t,setValues:r,config:{dragDropEffect:n.dragDropEffect??"move",dragEffectAllowed:n.dragEffectAllowed??"move",draggedNodes:dEe,dragstartClasses:vEe,handleNodeKeydown:yEe,handleParentKeydown:bEe,handleDragstart:pEe,handleNodeDragover:kEe,handleParentDragover:NEe,handleNodeDrop:wEe,handleNodeFocus:xEe,handleNodeBlur:SEe,handlePointercancel:CEe,handleEnd:PEe,handleDragend:OEe,handleParentFocus:tEe,handleNodePointerup:EEe,handleNodePointerover:_Ee,handleParentPointerover:REe,handleParentScroll:hEe,handleNodePointerdown:mEe,handleNodeDragenter:MEe,handleNodeDragleave:LEe,handleParentDrop:nEe,multiDrag:n.multiDrag??!1,nativeDrag:n.nativeDrag??!0,performSort:eEe,performTransfer:rEe,root:n.root??document,setupNode:aEe,setupNodeRemap:LV,reapplyDragClasses:oEe,tearDownNode:lEe,tearDownNodeRemap:sEe,remapFinished:cEe,threshold:{horizontal:0,vertical:0},...n},enabledNodes:[],abortControllers:{},privateClasses:[],on:u,emit:s};new MutationObserver(uEe).observe(e,{childList:!0}),wn.set(e,l),(i=n.plugins)==null||i.forEach(h=>{var p,g;(g=(p=h(e))==null?void 0:p.tearDown)==null||g.call(p)}),(a=n.plugins)==null||a.forEach(h=>{var p,g;(g=(p=h(e))==null?void 0:p.tearDown)==null||g.call(p)}),(o=n.plugins)==null||o.forEach(h=>{var p,g;(g=(p=h(e))==null?void 0:p.setup)==null||g.call(p)}),iEe(e,l),__(e,!0)}function kV(e,t,r,n,i,a){const{x:o,y:s}=Ld(r),u=e.el.getBoundingClientRect();return{affectedNodes:[],ascendingDirection:!1,clonedDraggedEls:[],coordinates:{x:o,y:s},draggedNode:{el:e.el,data:e.data},draggedNodes:n,incomingDirection:void 0,initialIndex:e.data.index,initialParent:{el:t.el,data:t.data},currentParent:{el:t.el,data:t.data},longPress:t.data.config.longPress??!1,longPressTimeout:void 0,currentTargetValue:e.data.value,scrollEls:[],startLeft:i||o-u.left,startTop:a||s-u.top,targetIndex:e.data.index,transferred:!1}}function eEe({parent:e,draggedNodes:t,targetNodes:r}){__(e.el);const n=t.map(u=>u.data.value),i=dd(e.el,e.data),a=t[0].data.index,o=[...e.data.enabledNodes],s=[...i.filter(u=>!n.some(l=>Of(u,l)))];s.splice(r[0].data.index,0,...n),"draggedNode"in Ge&&(Ge.currentTargetValue=r[0].data.value),mj(e.el,e.data,[...s]),e.data.config.onSort&&e.data.config.onSort({parent:{el:e.el,data:e.data},previousValues:[...i],previousNodes:[...o],nodes:[...e.data.enabledNodes],values:[...s],draggedNodes:t,previousPosition:a,position:r[0].data.index,targetNodes:r,state:Ge})}function is(e,t,r){var n;const i=e.data.config.activeDescendantClass;if(r.activeState&&(Oa([r.activeState.node.el],i),r.activeState.parent.el!==e.el&&r.activeState.parent.el.setAttribute("aria-activedescendant","")),!t){(n=r.activeState)==null||n.parent.el.setAttribute("aria-activedescendant",""),r.activeState=void 0;return}r.activeState={node:t,parent:e},Mu([t.el],i),r.activeState.parent.el.setAttribute("aria-activedescendant",r.activeState.node.el.id)}function dl(e,t,r){const n=t.data.config.selectedClass;if(!r.selectedState)return;const i=Array.from(e);Oa(e.map(a=>a.el),n);for(const a of i){a.el.setAttribute("aria-selected","false");const o=r.selectedState.nodes.findIndex(s=>s.el===a.el);o!==-1&&r.selectedState.nodes.splice(o,1)}NV(t)}function ju(e,t,r,n,i=!1){n.pointerSelection=i;for(const o of t)o.el.setAttribute("aria-selected","true"),Mu([o.el],e.data.config.selectedClass,!0);n.selectedState={nodes:t,parent:e};const a=t.map(o=>o.el.getAttribute("aria-label"));if(a.length===0){n.selectedState=void 0,NV(e);return}is(e,r,n),cy(e,`${a.join(", ")} ready for dragging. Use arrow keys to navigate. Press enter to drop ${a.join(", ")}.`)}function cy(e,t){const r=document.querySelector('[data-dnd-live-region="true"]');r&&(r.id=e.el.id+"-live-region",r.textContent=t)}function NV(e){const t=document.getElementById(e.el.id+"-live-region");t&&(t.textContent="")}function tEe(e,t){const r=e.targetData.parent.data.enabledNodes[0];r&&(t.selectedState&&t.selectedState.parent.el!==e.targetData.parent.el?is(e.targetData.parent,r,t):t.selectedState||is(e.targetData.parent,r,t))}function rEe({currentParent:e,targetParent:t,initialParent:r,draggedNodes:n,initialIndex:i,targetNodes:a,state:o}){__(r.el);const s=n.map(g=>g.data.value),u=[...dd(e.el,e.data).filter(g=>!s.some(_=>Of(g,_)))],l=dd(t.el,t.data),h=r.el===t.el&&t.data.config.sortable===!1;let p;a.length?(h?p=i:t.data.config.sortable===!1?p=t.data.enabledNodes.length:p=a[0].data.index,l.splice(p,0,...s)):(p=h?i:t.data.enabledNodes.length,l.splice(p,0,...s)),mj(e.el,e.data,u),mj(t.el,t.data,l),t.data.config.onTransfer&&t.data.config.onTransfer({sourceParent:e,targetParent:t,initialParent:r,draggedNodes:n,targetIndex:p,state:o,targetNodes:a}),e.data.config.onTransfer&&e.data.config.onTransfer({sourceParent:e,targetParent:t,initialParent:r,draggedNodes:n,targetIndex:p,state:o,targetNodes:a||[]})}function dd(e,t){return[...t.getValues(e)]}function mj(e,t,r){t.setValues(r,e)}function nEe(e,t){Rl(e.e),_l=!0;const r=t.initialParent.data.config.handleEnd;r(t)}function RV(e){const t=wn.get(e);t&&t.abortControllers.mainParent&&t.abortControllers.mainParent.abort()}function ao(e){return"draggedNode"in e&&!!e.draggedNode}function oo(e){return"synthDragging"in e&&!!e.synthDragging}function iEe(e,t){t.abortControllers.mainParent=wm(e,{keydown:Gh(t.config.handleParentKeydown),dragover:Gh(t.config.handleParentDragover),handleParentPointerover:t.config.handleParentPointerover,scroll:Gh(t.config.handleParentScroll),drop:Gh(t.config.handleParentDrop),hasNestedParent:r=>{const n=wn.get(r.target);n&&(n.nestedParent=r.detail.parent)},focus:Gh(t.config.handleParentFocus)}),t.config.externalDragHandle&&t.config.externalDragHandle.el&&t.config.externalDragHandle.callback&&(t.abortControllers.externalDragHandle=wm(t.config.externalDragHandle.el,{pointerdown:r=>{if(!t.config.externalDragHandle||!t.config.externalDragHandle.callback)return;const n=t.config.externalDragHandle.callback();if(!x_(n)){console.warn("No draggable item found from external drag handle callback");return}const i=po.get(n);if(!i)return;const a=n.parentNode;if(!(a instanceof HTMLElement))return;const o=wn.get(a);o&&(Ge.pointerDown={parent:{el:a,data:o},node:{el:n,data:i},validated:!0},n.draggable=!0)}})),e.id&&MV(e,{role:"listbox",tabindex:"0","aria-multiselectable":t.config.multiDrag?"true":"false","aria-activedescendant":"","aria-describedby":e.id+"-live-region"})}function MV(e,t){for(const r in t)e.setAttribute(r,t[r])}function aEe(e){var t;const r=e.parent.data.config;e.node.data.abortControllers.mainNode=wm(e.node.el,{keydown:di(r.handleNodeKeydown),dragstart:di(r.handleDragstart),dragover:di(r.handleNodeDragover),dragenter:di(r.handleNodeDragenter),dragleave:di(r.handleNodeDragleave),dragend:di(r.handleDragend),drop:di(r.handleNodeDrop),focus:di(r.handleNodeFocus),blur:di(r.handleNodeBlur),pointerup:di(r.handleNodePointerup),pointercancel:di(r.handlePointercancel),pointerdown:di(r.handleNodePointerdown),handleNodePointerover:r.handleNodePointerover,touchmove:n=>{ao(Ge)&&n.cancelable&&fn(n)},contextmenu:n=>{fd&&fn(n)}}),e.node.el.setAttribute("role","option"),e.node.el.setAttribute("aria-selected","false"),e.node.el.draggable=!0,r.reapplyDragClasses(e.node.el,e.parent.data),(t=e.parent.data.config.plugins)==null||t.forEach(n=>{var i,a;(a=(i=n(e.parent.el))==null?void 0:i.setupNode)==null||a.call(i,e)})}function LV(e){var t;po.set(e.node.el,e.node.data),(t=e.parent.data.config.plugins)==null||t.forEach(r=>{var n,i;(i=(n=r(e.parent.el))==null?void 0:n.setupNodeRemap)==null||i.call(n,e)})}function oEe(e,t){if(!ao(Ge))return;const r=oo(Ge)?t.config.synthDropZoneClass:t.config.dropZoneClass;Ge.draggedNode.el===e&&Mu([e],r,!0)}function sEe(e){var t;(t=e.parent.data.config.plugins)==null||t.forEach(r=>{var n,i;(i=(n=r(e.parent.el))==null?void 0:n.tearDownNodeRemap)==null||i.call(n,e)})}function lEe(e){var t,r,n,i,a;(t=e.parent.data.config.plugins)==null||t.forEach(o=>{var s,u;(u=(s=o(e.parent.el))==null?void 0:s.tearDownNode)==null||u.call(s,e)}),e.node.el.draggable=!1,(n=(r=e.node.data)==null?void 0:r.abortControllers)!=null&&n.mainNode&&((a=(i=e.node.data)==null?void 0:i.abortControllers)==null||a.mainNode.abort())}function uEe(e){if(e.length===1&&e[0].addedNodes.length===1&&!(e[0].addedNodes[0]instanceof HTMLElement))return;const t=e[0].target;if(!(t instanceof HTMLElement))return;const r=document.querySelectorAll('[aria-selected="true"]'),n=wn.get(t);if(n){for(let i=0;i_.data.value===p.value);g&&(g.el=l)}s.push({el:l,data:p}),(t||!h)&&a.setupNode({parent:{el:e,data:n},node:{el:l,data:p}}),LV({parent:{el:e,data:n},node:{el:l,data:p}})}wn.set(e,{...n,enabledNodes:s}),a.remapFinished(n),(r=n.config.plugins)==null||r.forEach(u=>{var l,h;(h=(l=u(e))==null?void 0:l.remapFinished)==null||h.call(l)})}function cEe(){Ge.remapJustFinished=!0,"draggedNode"in Ge&&(Ge.affectedNodes=[])}function fEe(e){return!!e.targetData.parent.data.config.nativeDrag}function dEe(e){var t;if(e.parent.data.config.multiDrag){if(Ge.selectedState)return[e.node,...(t=Ge.selectedState)==null?void 0:t.nodes.filter(r=>r.el!==e.node.el)]}else return[e.node];return[]}function hEe(e){ao(Ge)&&(Ge.emit("scrollStarted",Ge),!oo(Ge)&&(Ge.preventEnter=!0,DO&&clearTimeout(DO),DO=setTimeout(()=>{Ge.preventEnter=!1,Ge.emit("scrollEnded",Ge)},100)))}function pEe(e,t){const r=e.targetData.parent.data.config;if(!r.nativeDrag||!fEe(e)||!DV({x:e.e.clientX,y:e.e.clientY,node:e.targetData.node,config:r})){fn(e.e);return}const n=r.draggedNodes({parent:e.targetData.parent,node:e.targetData.node});r.dragstartClasses(e.targetData.node,n,r);const i=gEe(e,n);r.onDragstart&&r.onDragstart({parent:e.targetData.parent,values:dd(e.targetData.parent.el,e.targetData.parent.data),draggedNode:i.draggedNode,draggedNodes:i.draggedNodes,position:i.initialIndex,state:i})}function mEe(e,t){var r,n;if(Rl(e.e),t.pointerDown={parent:e.targetData.parent,node:e.targetData.node,validated:!1},e.e.pointerType==="mouse"?_m=!0:(e.e.pointerType==="touch"||e.e.pointerType==="pen")&&(_m=!1),!DV({x:e.e.clientX,y:e.e.clientY,node:e.targetData.node,config:e.targetData.parent.data.config}))return;t.pointerDown={parent:e.targetData.parent,node:e.targetData.node,validated:!0},TEe(e,t,e.targetData.node);const i=e.targetData.parent.data;let a=[e.targetData.node];const o=e.e.ctrlKey||e.e.metaKey,s=e.e.shiftKey,u=e.targetData.node;if(o&&i.config.multiDrag){t.selectedState?t.selectedState.nodes.findIndex(l=>l.el===u.el)===-1?a=[...t.selectedState.nodes,u]:a=t.selectedState.nodes.filter(l=>l.el!==u.el):a=[u],ju(e.targetData.parent,a,e.targetData.node,t,!0);return}if(s&&i.config.multiDrag){const l=e.targetData.parent.data.enabledNodes;if(t.selectedState&&t.activeState)if(t.selectedState.parent.el!==e.targetData.parent.el){dl(t.selectedState.nodes,t.selectedState.parent,t),t.selectedState=void 0;for(let h=0;h<=u.data.index;h++)a.push(l[h])}else{const[h,p]=t.activeState.node.data.indexl.el===e.targetData.node.el)===-1&&(t.selectedState.parent.el!==e.targetData.parent.el?dl(t.selectedState.nodes,e.targetData.parent,t):i.config.multiDrag&&fd?a.push(...t.selectedState.nodes):dl(t.selectedState.nodes,e.targetData.parent,t),ju(e.targetData.parent,a,e.targetData.node,t,!0)):ju(e.targetData.parent,[e.targetData.node],e.targetData.node,t,!0)}function vEe(e,t,r,n=!1){Mu(t.map(i=>i.el),n?r.synthDraggingClass:r.draggingClass),setTimeout(()=>{Oa(t.map(i=>i.el),n?r.synthDraggingClass:r.draggingClass),Mu(t.map(i=>i.el),n?r.synthDragPlaceholderClass:r.dragPlaceholderClass),Mu(t.map(i=>i.el),n?r.synthDropZoneClass:r.dropZoneClass),Oa(t.map(i=>i.el),r.activeDescendantClass),Oa(t.map(i=>i.el),r.selectedClass)})}function gEe(e,t){Rl(e.e);const r=AV(kV(e.targetData.node,e.targetData.parent,e.e,t));if(e.e.dataTransfer){const n=e.targetData.parent.data.config;e.e.dataTransfer.dropEffect=n.dragDropEffect,e.e.dataTransfer.effectAllowed=n.dragEffectAllowed;let i;if(n.dragImage)i=n.dragImage(e,t);else{if(n.multiDrag){const a=document.createElement("div");for(const s of t){const u=s.el.cloneNode(!0);u.style.pointerEvents="none",u.id=s.el.id+"-clone",a.append(u)}const{width:o}=t[0].el.getBoundingClientRect();Object.assign(a.style,{display:"flex",flexDirection:"column",width:`${o}px`,position:"absolute",pointerEvents:"none",zIndex:"9999",left:"-9999px"}),i=a}else{e.e.dataTransfer.setDragImage(e.targetData.node.el,e.e.offsetX,e.e.offsetY);const a=e.targetData.node.el.style.zIndex;return r.originalZIndex=a,e.targetData.node.el.style.zIndex="9999",r}document.body.appendChild(i)}e.e.dataTransfer.setDragImage(i,e.e.offsetX,e.e.offsetY),setTimeout(()=>{i==null||i.remove()})}return r}function DV({x:e,y:t,node:r,config:n}){if(n.externalDragHandle)return!1;if(!n.dragHandle)return!0;const i=r.el.querySelectorAll(n.dragHandle);if(!i)return!1;const a=n.root.elementFromPoint(e,t);if(!a)return!1;for(const o of Array.from(i))if(a===o||o.contains(a))return!0;return!1}function yEe(e){}function bEe(e,t){var r;const n=(r=t.activeState)==null?void 0:r.node;if(!n)return;const i=e.targetData.parent.data,a=i.enabledNodes;if(!(e.e.target instanceof HTMLElement))return;const o=a.findIndex(s=>s.el===n.el);if(o!==-1){if(["ArrowDown","ArrowUp","ArrowRight","ArrowLeft"].includes(e.e.key)){e.e.target===e.targetData.parent.el&&fn(e.e);const s=e.e.key==="ArrowDown"||e.e.key==="ArrowRight"?o+1:o-1;if(s<0||s>=a.length)return;const u=a[s];is(e.targetData.parent,u,t)}else if(e.e.key===" ")e.e.target===e.targetData.parent.el&&fn(e.e),t.selectedState&&t.selectedState.nodes.includes(n)?ju(e.targetData.parent,t.selectedState.nodes.filter(s=>s.el!==n.el),n,t):ju(e.targetData.parent,[n],n,t);else if(e.e.key==="Enter"&&t.selectedState)if(t.selectedState.parent.el===e.targetData.parent.el&&t.activeState){if(t.selectedState.nodes[0].el===t.activeState.node.el){cy(e.targetData.parent,"Cannot drop item on itself");return}t.newActiveDescendant=t.selectedState.nodes[0],i.config.performSort({parent:e.targetData.parent,draggedNodes:t.selectedState.nodes,targetNodes:[t.activeState.node]}),dl([],e.targetData.parent,t),cy(e.targetData.parent,"Drop successful")}else t.activeState&&t.selectedState.parent.el!==e.targetData.parent.el&&$V({currentParent:e.targetData.parent,targetParent:t.selectedState.parent,initialParent:t.selectedState.parent,draggedNodes:t.selectedState.nodes,state:t})&&(i.config.performTransfer({currentParent:t.selectedState.parent,targetParent:e.targetData.parent,initialParent:t.selectedState.parent,draggedNodes:t.selectedState.nodes,initialIndex:t.selectedState.nodes[0].data.index,state:t,targetNodes:[t.activeState.node]}),t.newActiveDescendant=t.selectedState.nodes[0],ju(e.targetData.parent,[],void 0,t),cy(e.targetData.parent,"Drop successful"))}}function _Ee(e){e.detail.targetData.parent.el===e.detail.state.currentParent.el?FV(e.detail,e.detail.state):w_(e.detail,e.detail.state)}function wEe(e,t){const r=e.targetData.parent.data.config;r.nativeDrag&&(Rl(e.e),_l=!0,r.handleEnd(t))}function xEe(e){e.e.target!==e.e.currentTarget&&Ge.pointerDown&&(Ge.pointerDown.node.el.draggable=!1)}function SEe(e){e.e.target!==e.e.currentTarget&&Ge.pointerDown&&(Ge.pointerDown.node.el.draggable=!0)}function OEe(e,t){const r=e.targetData.parent.data.config;if(r.nativeDrag){if(fn(e.e),Rl(e.e),_l){_l=!1;return}r.handleEnd(t)}}function CEe(e,t){var r;if(!oo(t))return;if(fn(e.e),_l){_l=!1;return}const n=(r=wn.get(t.initialParent.el))==null?void 0:r.config;n!=null&&n.onDragend&&n.onDragend({parent:t.currentParent,values:dd(t.currentParent.el,t.currentParent.data),draggedNode:t.draggedNode,draggedNodes:t.draggedNodes,state:t}),n==null||n.handleEnd(t)}function PEe(e){var t,r,n,i,a,o;e.draggedNode&&(e.draggedNode.el.draggable=!0),document.body.style.userSelect=e.rootUserSelect||"",oo(e)&&(document.documentElement.style.overscrollBehavior=e.rootOverScrollBehavior||"",document.documentElement.style.touchAction=e.rootTouchAction||""),oo(e)&&IV(e),"longPressTimeout"in e&&e.longPressTimeout&&clearTimeout(e.longPressTimeout);const s=(t=wn.get(e.initialParent.el))==null?void 0:t.config,u=oo(e),l=u?s==null?void 0:s.synthDropZoneClass:s==null?void 0:s.dropZoneClass;e.originalZIndex!==void 0&&(e.draggedNode.el.style.zIndex=e.originalZIndex),Oa(e.draggedNodes.map(h=>h.el),l),Oa(e.draggedNodes.map(h=>h.el),(n=(r=e.initialParent.data)==null?void 0:r.config)==null?void 0:n.longPressClass),Oa(e.draggedNodes.map(h=>h.el),u?e.initialParent.data.config.synthDragPlaceholderClass:(a=(i=e.initialParent.data)==null?void 0:i.config)==null?void 0:a.dragPlaceholderClass),u&&e.clonedDraggedNode.remove(),dl(e.draggedNodes,e.currentParent,e),is(e.currentParent,void 0,e),HPe(),e.selectedState=void 0,(o=s==null?void 0:s.onDragend)==null||o.call(s,{parent:e.currentParent,values:dd(e.currentParent.el,e.currentParent.data),draggedNode:e.draggedNode,draggedNodes:e.draggedNodes,state:e}),e.emit("dragEnded",e)}function EEe(e,t){Rl(e.e),!t.pointerSelection&&t.selectedState&&dl(t.selectedState.nodes,e.targetData.parent,t);const r=e.targetData.parent.data.config;t.pointerSelection=!1,"longPressTimeout"in t&&t.longPressTimeout&&clearTimeout(t.longPressTimeout),Oa(e.targetData.parent.data.enabledNodes.map(n=>n.el),r.longPressClass),ao(t)&&r.handleEnd(t)}function jEe(e,t,r,n,i){var a,o;const s=t.data.config;let u,l=e.el.style.display,h;if(s.synthDragImage)h=s.synthDragImage(e,t,r,i),u=h.dragImage,u.setAttribute("popover","manual"),u.id="dnd-dragged-node-clone",l=u.style.display,Object.assign(u.style,{position:"absolute",zIndex:9999,pointerEvents:"none",margin:0,willChange:"transform",overflow:"hidden",display:"none"});else if(!s.multiDrag||i.length===1)u=e.el.cloneNode(!0),u.id="dnd-dragged-node-clone",l=u.style.display,u.setAttribute("popover","manual"),Object.assign(u.style,{position:"absolute",height:e.el.getBoundingClientRect().height+"px",width:e.el.getBoundingClientRect().width+"px",overflow:"hidden",margin:0,willChange:"transform",pointerEvents:"none",zIndex:9999});else{const _=document.createElement("div");_.setAttribute("popover","manual");for(const w of i){const b=w.el.cloneNode(!0);b.style.pointerEvents="none",b.style.margin="0",_.append(b)}l=_.style.display,_.id="dnd-dragged-node-clone",u=_,Object.assign(u.style,{display:"flex",flexDirection:"column",position:"absolute",overflow:"hidden",margin:0,padding:0,pointerEvents:"none",zIndex:9999})}u.style.position="absolute",t.el.appendChild(u),u.showPopover();const p={clonedDraggedEls:[],clonedDraggedNode:u,draggedNodeDisplay:l,synthDragScrolling:!1,synthDragging:!0,rootScrollWidth:(a=document.scrollingElement)==null?void 0:a.scrollWidth,rootScrollHeight:(o=document.scrollingElement)==null?void 0:o.scrollHeight,rootOverScrollBehavior:document.documentElement.style.overscrollBehavior,rootTouchAction:document.documentElement.style.touchAction};document.documentElement.style.overscrollBehavior="none",document.documentElement.style.touchAction="none";const g=AV({...kV(e,t,r,i,h==null?void 0:h.offsetX,h==null?void 0:h.offsetY),...p});return g.clonedDraggedNode.style.display=g.draggedNodeDisplay||"",g}function TEe(e,t,r){const n=e.targetData.parent.data.config;n.longPress&&(t.longPressTimeout=setTimeout(()=>{t&&(t.longPress=!0,n.longPressClass&&e.e.cancelable&&Mu([r.el],n.longPressClass),fn(e.e))},n.longPressDuration||200))}function AEe(e,t){t.longPressClass&&Oa(e.draggedNodes.map(r=>r.el),t==null?void 0:t.longPressClass)}function IV(e,t=!0,r=!0){t&&e.animationFrameIdX!==void 0&&(cancelAnimationFrame(e.animationFrameIdX),e.animationFrameIdX=void 0),r&&e.animationFrameIdY!==void 0&&(cancelAnimationFrame(e.animationFrameIdY),e.animationFrameIdY=void 0),!e.animationFrameIdX&&!e.animationFrameIdY&&(e.preventEnter=!1)}function YA(e,t,r=0,n=0){const{x:i,y:a}=Ld(e);t.coordinates.y=a,t.coordinates.x=i;const o=t.startLeft??0,s=t.startTop??0,u=i-o+window.scrollX,l=a-s+window.scrollY;t.clonedDraggedNode.style.transform=`translate(${u+r}px, ${l+n}px)`,e.cancelable&&fn(e),AEe(t,t.initialParent.data.config)}function I8(e,t){YA(e,t);const r=Ld(e);zEe(r,e,t);const n=VEe(r);if(!n){document.dispatchEvent(new CustomEvent("handleRootPointerover",{detail:{e,state:t}}));return}const i={e,targetData:n,state:t};"node"in n?n.node.el.dispatchEvent(new CustomEvent("handleNodePointerover",{detail:i})):n.parent.el.dispatchEvent(new CustomEvent("handleParentPointerover",{detail:i}))}function kEe(e,t){var r;if(!e.targetData.parent.data.config.nativeDrag)return;const{x:n,y:i}=Ld(e.e);t.coordinates.y=i,t.coordinates.x=n,fn(e.e),Rl(e.e),e.targetData.parent.el===((r=t.currentParent)==null?void 0:r.el)?FV(e,t):w_(e,t)}function NEe(e,t){e.targetData.parent.data.config.nativeDrag&&(fn(e.e),Rl(e.e),Object.assign(Ld(e.e)),w_(e,t))}function REe(e){e.detail.targetData.parent.el!==e.detail.state.currentParent.el&&w_(e.detail,e.detail.state)}function $V({currentParent:e,targetParent:t,initialParent:r,draggedNodes:n,state:i}){if(t.el===e.el)return!1;const a=t.data.config;if(n[0].el.contains(t.el)||a.dropZone===!1)return!1;const o=r.data.config;return a.accepts?a.accepts(t,r,e,i):!(!a.group||a.group!==o.group)}function MEe(e,t){fn(e.e)}function LEe(e,t){fn(e.e)}function DEe(e,t,r,n){var i;if(t.affectedNodes.map(p=>p.data.value).includes(e.targetData.node.data.value))return!1;if(t.remapJustFinished)return t.remapJustFinished=!1,(e.targetData.node.data.value===t.currentTargetValue||t.draggedNodes.map(p=>p.el).includes(e.targetData.node.el))&&(t.currentTargetValue=e.targetData.node.data.value),!1;if(t.preventEnter)return!1;if(t.draggedNodes.map(p=>p.el).includes(e.targetData.node.el))return t.currentTargetValue=void 0,!1;if(e.targetData.node.data.value===t.currentTargetValue||e.targetData.parent.el!==((i=t.currentParent)==null?void 0:i.el)||e.targetData.parent.data.config.sortable===!1||e.targetData.node.el.contains(t.draggedNodes[0].el))return!1;const a=e.targetData.node.el.getBoundingClientRect(),o=t.draggedNode.el.getBoundingClientRect(),s=a.y-o.y,u=a.x-o.x;let l;Math.abs(s)>Math.abs(u)?l=s>0?"above":"below":l=u>0?"left":"right";const h=t.currentParent.data.config.threshold;switch(l){case"left":if(r>a.x+a.width*h.horizontal)return t.incomingDirection="left",!0;break;case"right":if(ra.y+a.height*h.vertical)return t.incomingDirection="above",!0;break;case"below":if(ne.targetData.node.data.index?[e.targetData.node.data.index,t.draggedNode.data.index]:[t.draggedNode.data.index,e.targetData.node.data.index];t.targetIndex=e.targetData.node.data.index,t.affectedNodes=e.targetData.parent.data.enabledNodes.filter(a=>i[0]<=a.data.index&&a.data.index<=i[1]&&a.el!==t.draggedNode.el),e.targetData.parent.data.config.performSort({parent:e.targetData.parent,draggedNodes:t.draggedNodes,targetNodes:[e.targetData.node]})}function di(e){function t(r){const n=po.get(r);if(!n)return;const i=wn.get(r.parentNode);if(i)return{node:{el:r,data:n},parent:{el:r.parentNode,data:i}}}return r=>{const n=t(r.currentTarget);if(n)return e({e:r,targetData:n},Ge)}}function w_(e,t){e.e.preventDefault(),$V({currentParent:t.currentParent,targetParent:e.targetData.parent,initialParent:t.initialParent,draggedNodes:t.draggedNodes,state:t})&&(e.targetData.parent.data.config.performTransfer({currentParent:t.currentParent,targetParent:e.targetData.parent,initialParent:t.initialParent,draggedNodes:t.draggedNodes,initialIndex:t.initialIndex,state:t,targetNodes:"node"in e.targetData?[e.targetData.node]:[]}),t.currentParent=e.targetData.parent,t.transferred=!0)}function Gh(e){function t(r){const n=wn.get(r);if(n)return{parent:{el:r,data:n}}}return r=>{const n=t(r.currentTarget);if(n)return e({e:r,targetData:n},Ge)}}function Mu(e,t,r=!1){function n(i,a){po.set(i,a)}for(const i of e){const a=po.get(i),o=IEe(i,t,a,r);o&&n(i,o)}}function IEe(e,t,r,n=!1){if(!t)return;const i=TV(t);if(!i.length||i.includes("longPress"))return;if(!r){e.classList.add(...i);return}const a=[];for(const o of i)e.classList.contains(o)?e.classList.contains(o)&&n===!1&&a.push(o):e.classList.add(o);return r.privateClasses=a,r}function Oa(e,t){if(!t)return;const r=TV(t);if(r.length)for(const n of e){if(!x_(n)){n.classList.remove(...r);continue}const i=po.get(n)||wn.get(n);if(i)for(const a of r)i.privateClasses.includes(a)||n.classList.remove(a)}}function $Ee(e,t,r,n,i){if(e===document.scrollingElement){const a=e.scrollLeft>0;return{right:e.scrollLeft+window.innerWidth<(i.rootScrollWidth||0)&&t.clientX>e.clientWidth*(1-.1),left:a&&t.clientXn.left+o*(1-.1)&&s0}}return{right:!1,left:!1}}function FEe(e,t,r,n){if(e===document.scrollingElement)return{down:t.clientY>e.clientHeight*(1-.1),up:t.clientYn.top+a*(1-.1)&&o0}}return{down:!1,up:!1}}function BEe(e,t,r,n=!0){r.preventEnter=!0;const i=n?5:-5;function a(o){o.scrollBy({left:i}),YA(t,r,i,0),r.animationFrameIdX=requestAnimationFrame(a.bind(null,o))}r.animationFrameIdX=requestAnimationFrame(a.bind(null,e))}function UEe(e,t,r,n=!0){r.preventEnter=!0;const i=n?-5:5;function a(){e.scrollBy({top:i}),YA(t,r,0,i),r.animationFrameIdY=requestAnimationFrame(a)}r.animationFrameIdY=requestAnimationFrame(a)}function zEe(e,t,r){IV(r);const n={x:null,y:null},i=document.elementsFromPoint(e.x,e.y);for(const a of i){if(n.x&&n.y)break;if(!(a instanceof HTMLElement))continue;const o=a.getBoundingClientRect(),s=window.getComputedStyle(a);if(!n.x){const{left:u,right:l}=$Ee(a,t,s,o,r);(u||l)&&(n.x=a,BEe(a,t,r,l))}if(!n.y){const{up:u,down:l}=FEe(a,t,s,o);(u||l)&&(n.y=a,UEe(a,t,r,u))}}}function VEe(e){let t=document.elementFromPoint(e.x,e.y);if(!x_(t))return;let r,n=!0;for(;t&&n;){if(po.has(t)||wn.has(t)){n=!1,r=wn.has(t);break}t=t.parentNode}if(r){const i=wn.get(t);return i?{parent:{el:t,data:i}}:void 0}else{const i=po.get(t);if(!i)return;const a=wn.get(t.parentNode);return a?{node:{el:t,data:i},parent:{el:t.parentNode,data:a}}:void 0}}function x_(e){return e instanceof HTMLElement&&e.parentNode instanceof HTMLElement}function wm(e,t){const r=new AbortController;for(const n in t){const i=t[n];e.addEventListener(n,i,{signal:r.signal,passive:!1,capture:n==="focus"||n==="blur"})}return r}function qEe(e){if(e instanceof HTMLElement)return e;if("current"in e&&e.current instanceof HTMLElement)return e.current;console.warn("Invalid parent element",e)}function WEe(e,t){const r=qEe(e);r&&t(r)}var eb=new WeakMap;function HEe(e){const t=eb.get(e);return t?t[0]:(console.warn("No values found for parent element"),[])}function GEe(e,t){const r=eb.get(t);r&&r[1](e),eb.set(t,[e,r[1]])}function KEe(e,t){return r=>{eb.set(r,t),JPe({parent:r,getValues:HEe,setValues:GEe,config:e})}}function $8(e){KA&&(Array.isArray(e)||(e=[e]),e.forEach(t=>{const{parent:r,state:n,...i}=t;WEe(r,KEe(i,n))}))}function YEe(e,t={}){const r=$.useRef(null),[n,i]=$.useState(e);function a(o={}){$8({parent:r,state:[n,i],...o})}return $.useEffect(()=>{$8({parent:r,state:[n,i],...t})},[n]),$.useEffect(()=>()=>{r.current&&RV(r.current)},[]),[r,n,i,a]}const S_=()=>{const e=mo(),t=Nl(),r=bd(),n=$.useMemo(()=>{const{orderBy:a,tags:o,excludeBots:s,excludeMaxVisitsReached:u,excludePastValidUntil:l,...h}=r,p=a?bae(a):void 0,g=(o==null?void 0:o.split(","))??[];return{...h,orderBy:p,tags:g,excludeBots:s!==void 0?s==="true":void 0,excludeMaxVisitsReached:u!==void 0?u==="true":void 0,excludePastValidUntil:l!==void 0?l==="true":void 0}},[r]),i=$.useCallback(a=>{const o={...n,...a},{orderBy:s,tags:u,excludeBots:l,excludeMaxVisitsReached:h,excludePastValidUntil:p,...g}=o,_={...g,orderBy:s&&yae(s),tags:u.length>0?u.join(","):void 0,excludeBots:RO(l),excludeMaxVisitsReached:RO(h),excludePastValidUntil:RO(p)},w=mT(_),b=w?`?${w}`:"";e(`${t}/list-short-urls/1${b}`)},[n,e,t]);return[n,i]},ZA=()=>{const{domain:e}=bd(),{shortCode:t=""}=md();return $.useMemo(()=>({shortCode:WA(t),domain:e}),[e,t])},O_=()=>{const e=pPe();return m.jsx(Rt,{color:"link",size:"lg",className:"p-0 me-3",onClick:e,"aria-label":"Go back",children:m.jsx(Ye,{icon:qY})})},ZEe={AF:"Afghanistan",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia",BA:"Bosnia and Herzegovina",BW:"Botswana",BR:"Brazil",IO:"British Indian Ocean Territory",VG:"British Virgin Islands",BN:"Brunei",BG:"Bulgaria",BF:"Burkina Faso",BI:"Burundi",KH:"Cambodia",CM:"Cameroon",CA:"Canada",CV:"Cape Verde",KY:"Cayman Islands",CF:"Central African Republic",TD:"Chad",CL:"Chile",CN:"China",CX:"Christmas Island",CC:"Cocos Islands",CO:"Colombia",KM:"Comoros",CK:"Cook Islands",CR:"Costa Rica",HR:"Croatia",CU:"Cuba",CW:"Curacao",CY:"Cyprus",CZ:"Czech Republic",CD:"Democratic Republic of the Congo",DK:"Denmark",DJ:"Djibouti",DM:"Dominica",DO:"Dominican Republic",TL:"East Timor",EC:"Ecuador",EG:"Egypt",SV:"El Salvador",GQ:"Equatorial Guinea",ER:"Eritrea",EE:"Estonia",ET:"Ethiopia",FK:"Falkland Islands",FO:"Faroe Islands",FJ:"Fiji",FI:"Finland",FR:"France",PF:"French Polynesia",GA:"Gabon",GM:"Gambia",GE:"Georgia",DE:"Germany",GH:"Ghana",GI:"Gibraltar",GR:"Greece",GL:"Greenland",GD:"Grenada",GU:"Guam",GT:"Guatemala",GG:"Guernsey",GN:"Guinea",GW:"Guinea-Bissau",GY:"Guyana",HT:"Haiti",HN:"Honduras",HK:"Hong Kong",HU:"Hungary",IS:"Iceland",IN:"India",ID:"Indonesia",IR:"Iran",IQ:"Iraq",IE:"Ireland",IM:"Isle of Man",IL:"Israel",IT:"Italy",CI:"Ivory Coast",JM:"Jamaica",JP:"Japan",JE:"Jersey",JO:"Jordan",KZ:"Kazakhstan",KE:"Kenya",KI:"Kiribati",XK:"Kosovo",KW:"Kuwait",KG:"Kyrgyzstan",LA:"Laos",LV:"Latvia",LB:"Lebanon",LS:"Lesotho",LR:"Liberia",LY:"Libya",LI:"Liechtenstein",LT:"Lithuania",LU:"Luxembourg",MO:"Macao",MK:"Macedonia",MG:"Madagascar",MW:"Malawi",MY:"Malaysia",MV:"Maldives",ML:"Mali",MT:"Malta",MH:"Marshall Islands",MR:"Mauritania",MU:"Mauritius",YT:"Mayotte",MX:"Mexico",FM:"Micronesia",MD:"Moldova",MC:"Monaco",MN:"Mongolia",ME:"Montenegro",MS:"Montserrat",MA:"Morocco",MZ:"Mozambique",MM:"Myanmar",NA:"Namibia",NR:"Nauru",NP:"Nepal",NL:"Netherlands",AN:"Netherlands Antilles",NC:"New Caledonia",NZ:"New Zealand",NI:"Nicaragua",NE:"Niger",NG:"Nigeria",NU:"Niue",KP:"North Korea",MP:"Northern Mariana Islands",NO:"Norway",OM:"Oman",PK:"Pakistan",PW:"Palau",PS:"Palestine",PA:"Panama",PG:"Papua New Guinea",PY:"Paraguay",PE:"Peru",PH:"Philippines",PN:"Pitcairn",PL:"Poland",PT:"Portugal",PR:"Puerto Rico",QA:"Qatar",CG:"Republic of the Congo",RE:"Reunion",RO:"Romania",RU:"Russia",RW:"Rwanda",BL:"Saint Barthelemy",SH:"Saint Helena",KN:"Saint Kitts and Nevis",LC:"Saint Lucia",MF:"Saint Martin",PM:"Saint Pierre and Miquelon",VC:"Saint Vincent and the Grenadines",WS:"Samoa",SM:"San Marino",ST:"Sao Tome and Principe",SA:"Saudi Arabia",SN:"Senegal",RS:"Serbia",SC:"Seychelles",SL:"Sierra Leone",SG:"Singapore",SX:"Sint Maarten",SK:"Slovakia",SI:"Slovenia",SB:"Solomon Islands",SO:"Somalia",ZA:"South Africa",KR:"South Korea",SS:"South Sudan",ES:"Spain",LK:"Sri Lanka",SD:"Sudan",SR:"Suriname",SJ:"Svalbard and Jan Mayen",SZ:"Swaziland",SE:"Sweden",CH:"Switzerland",SY:"Syria",TW:"Taiwan",TJ:"Tajikistan",TZ:"Tanzania",TH:"Thailand",TG:"Togo",TK:"Tokelau",TO:"Tonga",TT:"Trinidad and Tobago",TN:"Tunisia",TR:"Turkey",TM:"Turkmenistan",TC:"Turks and Caicos Islands",TV:"Tuvalu",VI:"U.S. Virgin Islands",UG:"Uganda",UA:"Ukraine",AE:"United Arab Emirates",GB:"United Kingdom",US:"United States",UY:"Uruguay",UZ:"Uzbekistan",VU:"Vanuatu",VA:"Vatican",VE:"Venezuela",VN:"Vietnam",WF:"Wallis and Futuna",EH:"Western Sahara",YE:"Yemen",ZM:"Zambia",ZW:"Zimbabwe"},XEe={android:"Android",ios:"iOS",desktop:"Desktop"},QEe=({deviceType:e,onDeviceTypeChange:t})=>{const r=$.useId();return m.jsxs("div",{children:[m.jsx("label",{htmlFor:r,children:"Device type:"}),m.jsxs("select",{id:r,className:"form-select",value:e,onChange:n=>t(n.target.value),required:!0,children:[!e&&m.jsx("option",{value:"",children:"- Select type -"}),Object.entries(XEe).map(([n,i])=>m.jsx("option",{value:n,children:i},n))]})]})},XA=({value:e,onValueChange:t,label:r,placeholder:n})=>{const i=$.useId();return m.jsxs("div",{children:[m.jsxs("label",{htmlFor:i,children:[r,":"]}),m.jsx(Jr,{id:i,value:e??"",onChange:a=>t(a.target.value),placeholder:n,required:!0})]})},JEe=({language:e,onLanguageChange:t})=>m.jsx(XA,{value:e,onValueChange:t,label:"Language",placeholder:"en-US / en"}),eje=({name:e,value:t,onNameChange:r,onValueChange:n})=>{const i=$.useId(),a=$.useId();return m.jsxs(m.Fragment,{children:[m.jsxs("div",{children:[m.jsx("label",{htmlFor:i,children:"Param name:"}),m.jsx(Jr,{id:i,value:e??"",onChange:o=>r(o.target.value),placeholder:"hello",required:!0})]}),m.jsxs("div",{children:[m.jsx("label",{htmlFor:a,children:"Param value:"}),m.jsx(Jr,{id:a,value:t??"",onChange:o=>n(o.target.value),placeholder:"world",required:!0})]})]})},tje=({ipAddress:e,onIpAddressChange:t})=>m.jsx(XA,{value:e,onValueChange:t,label:"IP address",placeholder:"192.168.1.10"}),rje=({countryCode:e,onCountryCodeChange:t})=>{const r=$.useId();return m.jsxs("div",{children:[m.jsx("label",{htmlFor:r,children:"Country:"}),m.jsxs("select",{id:r,className:"form-select",value:e,onChange:n=>t(n.target.value),required:!0,children:[!e&&m.jsx("option",{value:"",children:"- Select country -"}),Object.entries(ZEe).map(([n,i])=>m.jsx("option",{value:n,children:i},n))]})]})},nje=({cityName:e,onCityNameChange:t})=>m.jsx(XA,{value:e,onValueChange:t,label:"City name",placeholder:"New York"}),ije=({condition:e,onConditionChange:t,onDelete:r})=>{const n=$.useId(),i=$.useCallback(h=>t({type:h,matchValue:"",matchKey:null}),[t]),a=$.useCallback(h=>t({...e,matchValue:h}),[e,t]),o=$.useCallback(h=>t({...e,matchKey:h}),[e,t]),s=ho("ipRedirectCondition"),u=ho("geolocationRedirectCondition"),l=$.useMemo(()=>{const h={device:"Device type",language:"Language","query-param":"Query param"};return s&&(h["ip-address"]="IP address"),u&&(h["geolocation-country-code"]="Country (geolocation)",h["geolocation-city-name"]="City name (geolocation)"),h},[u,s]);return m.jsxs("div",{className:"redirect-rule-modal__condition rounded p-3 h-100 d-flex flex-column gap-2 position-relative",children:[m.jsxs("div",{children:[m.jsx(Rt,{outline:!0,size:"sm",type:"button","aria-label":"Remove condition",onClick:r,className:"position-absolute rounded-circle redirect-rule-modal__remove-condition-button",children:m.jsx(Ye,{icon:vb,className:"redirect-rule-modal__remove-condition-button-icon"})}),m.jsx("label",{htmlFor:n,children:"Type:"}),m.jsx("select",{id:n,className:"form-select flex-grow-1",value:e.type,onChange:h=>i(h.target.value),children:Object.entries(l).map(([h,p])=>m.jsx("option",{value:h,children:p},h))})]}),e.type==="device"&&m.jsx(QEe,{deviceType:e.matchValue,onDeviceTypeChange:a}),e.type==="language"&&m.jsx(JEe,{language:e.matchValue,onLanguageChange:a}),e.type==="query-param"&&m.jsx(eje,{value:e.matchValue,name:e.matchKey??"",onNameChange:o,onValueChange:a}),e.type==="ip-address"&&m.jsx(tje,{ipAddress:e.matchValue,onIpAddressChange:a}),e.type==="geolocation-country-code"&&m.jsx(rje,{countryCode:e.matchValue,onCountryCodeChange:a}),e.type==="geolocation-city-name"&&m.jsx(nje,{cityName:e.matchValue,onCityNameChange:a})]})},BV=({isOpen:e,toggle:t,onSave:r,initialData:n})=>{const[i,a]=$.useState(n??{longUrl:"",conditions:[]}),o=$.useCallback(_=>{_.preventDefault(),_.stopPropagation(),i&&r(i),t()},[r,i,t]),s=$.useCallback(()=>a(({longUrl:_,conditions:w})=>({longUrl:_,conditions:[...w,{type:"device",matchValue:"",matchKey:null}]})),[]),u=$.useCallback((_,w)=>a(({longUrl:b,conditions:x})=>{const S=[...x];return S[_]=w,{longUrl:b,conditions:S}}),[]),l=$.useCallback(_=>a(({longUrl:w,conditions:b})=>{const x=[...b];return x.splice(_,1),{longUrl:w,conditions:x}}),[]),h=vl(),p=$.useCallback(()=>{var _;return(_=h==null?void 0:h.current)==null?void 0:_.focus()},[h]),g=$.useCallback(()=>a(n??{longUrl:"",conditions:[]}),[n]);return m.jsx(ea,{size:"xl",isOpen:e,toggle:t,centered:!0,onOpened:p,onClosed:g,children:m.jsxs("form",{onSubmit:o,children:[m.jsx(Pl,{toggle:t,className:"sticky-top redirect-rule-modal__header",children:"Redirect rule"}),m.jsxs(ss,{children:[m.jsx("label",{htmlFor:"longUrl",className:"fw-bold",children:"Long URL:"}),m.jsx(Jr,{id:"longUrl",type:"url",placeholder:"https://www.example.com",value:i.longUrl,onChange:_=>a(w=>({...w,longUrl:_.target.value})),required:!0,innerRef:h}),m.jsx("hr",{}),m.jsxs("div",{className:"d-flex justify-content-between",children:[m.jsx("b",{children:"Conditions:"}),m.jsx(Rt,{outline:!0,size:"sm",type:"button","aria-label":"Add condition",onClick:s,children:m.jsx(Ye,{icon:Am})})]}),i.conditions.length===0&&m.jsx("div",{className:"text-center",children:m.jsx("i",{children:"Add conditions..."})}),i.conditions.length>0&&m.jsx(Qa,{className:"redirect-rule-modal__conditions-row",children:i.conditions.map((_,w)=>m.jsx("div",{className:"col-lg-6 col-xl-4 mt-4",children:m.jsx(ije,{condition:_,onConditionChange:b=>u(w,b),onDelete:()=>l(w)})},`${w}_${_.type}`))})]}),m.jsxs(gd,{className:"sticky-bottom redirect-rule-modal__footer",children:[m.jsx(Rt,{type:"button",color:"link",onClick:t,children:"Cancel"}),m.jsx(Rt,{color:"primary",disabled:i.conditions.length===0,children:"Confirm"})]})]})})},aje=({priority:e,isLast:t,redirectRule:r,onDelete:n,onMoveUp:i,onMoveDown:a,onUpdate:o})=>{const[s,u]=Vt();return m.jsxs(sr,{children:[m.jsxs("div",{className:"d-flex align-content-center gap-3",children:[m.jsx("div",{className:"d-flex flex-column my-auto drag-n-drop-handler d-none d-md-block",style:{cursor:"grab"},children:m.jsx(Ye,{icon:XY})}),m.jsxs("div",{className:"d-flex flex-column my-auto",children:[m.jsx(Rt,{outline:!0,color:"secondary",size:"sm","aria-label":`Move rule with priority ${e} up`,disabled:e===1,onClick:i,className:"rounded-0 rounded-top",style:{marginBottom:"-1px"},children:m.jsx(Ye,{icon:fZ})}),m.jsx(Rt,{outline:!0,color:"secondary",size:"sm","aria-label":`Move rule with priority ${e} down`,disabled:t,onClick:a,className:"rounded-0 rounded-bottom",children:m.jsx(Ye,{icon:sZ})})]}),m.jsxs("div",{className:"flex-grow-1",children:[m.jsxs("div",{className:"mb-2",children:[m.jsx("b",{children:"Long URL:"})," ",m.jsx(_i,{href:r.longUrl,"data-testid":"rule-long-url"})]}),m.jsxs("div",{className:"d-flex flex-column flex-lg-row gap-2",children:[m.jsx("b",{children:"Conditions:"}),r.conditions.map((l,h)=>m.jsxs("div",{className:"badge bg-secondary",children:[l.type==="device"&&m.jsxs(m.Fragment,{children:["Device is ",l.matchValue]}),l.type==="language"&&m.jsxs(m.Fragment,{children:[l.matchValue," language is accepted"]}),l.type==="query-param"&&m.jsxs(m.Fragment,{children:["Query string contains ",l.matchKey,"=",l.matchValue]}),l.type==="ip-address"&&m.jsxs(m.Fragment,{children:["IP address matches ",l.matchValue]}),l.type==="geolocation-country-code"&&m.jsxs(m.Fragment,{children:["Country code is ",l.matchValue]}),l.type==="geolocation-city-name"&&m.jsxs(m.Fragment,{children:["City name is ",l.matchValue]})]},`${l.type}_${h}`))]})]}),m.jsxs("div",{className:"d-flex flex-column flex-sm-row gap-1 my-auto",children:[m.jsx(Rt,{outline:!0,color:"secondary",size:"sm","aria-label":`Edit rule with priority ${e}`,onClick:u,children:m.jsx(Ye,{icon:r7})}),m.jsx(Rt,{outline:!0,color:"danger",size:"sm","aria-label":`Delete rule with priority ${e}`,onClick:n,children:m.jsx(Ye,{icon:_Y})})]})]}),m.jsx(BV,{onSave:o,isOpen:s,toggle:u,initialData:r})]})},oje=({shortUrlRedirectRules:e,getShortUrlRedirectRules:t,getShortUrlsDetails:r,shortUrlsDetails:n,setShortUrlRedirectRules:i,shortUrlRedirectRulesSaving:a,resetSetRules:o})=>{const s=ZA(),{shortUrls:u}=n,l=s&&(u==null?void 0:u.get(s)),[h,p,g]=YEe([],{dragHandle:".drag-n-drop-handler",dropZoneClass:"opacity-25"}),{saving:_,saved:w,errorData:b}=a,[x,S]=Vt(),O=$.useCallback(W=>g((H=[])=>[...H,W]),[g]),E=$.useCallback(W=>g((H=[])=>{const K=[...H];return K.splice(W,1),K}),[g]),j=$.useCallback((W,H)=>g((K=[])=>{const te=[...K];return te[W]=H,te}),[g]),A=$.useCallback((W,H)=>g((K=[])=>{if(!K[H])return K;const te=[...K],se=te[H];return te[H]=te[W],te[W]=se,te}),[g]),T=$.useCallback(W=>A(W,W-1),[A]),M=$.useCallback(W=>A(W,W+1),[A]),q=$.useCallback(W=>{W.preventDefault(),p&&i({shortUrl:s,data:{redirectRules:p}})},[s,p,i]);return $.useEffect(()=>(t(s),r([s]),o),[t,r,s,o]),$.useEffect(()=>{e.redirectRules&&g(e.redirectRules)},[g,e.redirectRules]),m.jsxs("div",{className:"d-flex flex-column gap-3",children:[m.jsx("header",{children:m.jsxs(Ji,{body:!0,children:[m.jsxs("h2",{className:"d-sm-flex justify-content-between align-items-center mb-0",children:[m.jsx(O_,{}),m.jsxs("div",{className:"text-center flex-grow-1",children:[n.loading&&m.jsx(m.Fragment,{children:"Loading..."}),!n.loading&&m.jsxs("small",{children:["Redirect rules for ",m.jsx(_i,{href:(l==null?void 0:l.shortUrl)??""})]})]})]}),m.jsx("hr",{}),m.jsxs("div",{children:[m.jsx("p",{className:"mb-2",children:"Configure dynamic conditions that will be checked at runtime."}),"If no conditions match, visitors will be redirected to: ",m.jsx(_i,{href:e.defaultLongUrl??""})]})]})}),m.jsx("div",{children:m.jsxs(Rt,{outline:!0,color:"primary",onClick:S,children:[m.jsx(Ye,{icon:Am,className:"me-1"})," Add rule"]})}),m.jsxs("form",{onSubmit:q,children:[e.loading&&m.jsx(Bu,{loading:!0}),p.length===0&&!e.loading&&m.jsx(sr,{className:"text-center",children:m.jsx("i",{children:"This short URL has no dynamic redirect rules"})}),m.jsx("div",{className:"d-flex flex-column gap-2",ref:h,children:p.map((W,H)=>m.jsx(aje,{redirectRule:W,priority:H+1,isLast:H===p.length-1,onDelete:()=>E(H),onMoveUp:()=>T(H),onMoveDown:()=>M(H),onUpdate:K=>j(H,K)},`${W.longUrl}_${H}`))}),m.jsx("div",{className:"text-center mt-3",children:m.jsx(Rt,{outline:!0,color:"primary",className:"btn-sm-block",disabled:_,"data-testid":"save-button",children:_?"Saving...":"Save rules"})})]}),b&&m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:b,fallbackMessage:"An error occurred while saving short URL redirect rules :("})}),w&&m.jsx(bi,{type:"success",children:"Redirect rules properly saved."}),m.jsx(BV,{isOpen:x,toggle:S,onSave:O})]})},sje=(e,t)=>{e.serviceFactory("ShortUrlRedirectRules",()=>oje),e.decorator("ShortUrlRedirectRules",t(["shortUrlRedirectRules","shortUrlsDetails","shortUrlRedirectRulesSaving"],["getShortUrlRedirectRules","getShortUrlsDetails","setShortUrlRedirectRules","resetSetRules"])),e.serviceFactory("getShortUrlRedirectRules",zPe,"apiClientFactory"),e.serviceFactory("setShortUrlRedirectRules",FPe,"apiClientFactory"),e.serviceFactory("resetSetRules",r=>r.resetSetRules,"setShortUrlRedirectRulesReducerCreator"),e.serviceFactory("shortUrlRedirectRulesReducerCreator",VPe,"getShortUrlRedirectRules"),e.serviceFactory("shortUrlRedirectRulesReducer",r=>r.reducer,"shortUrlRedirectRulesReducerCreator"),e.serviceFactory("setShortUrlRedirectRulesReducerCreator",BPe,"setShortUrlRedirectRules"),e.serviceFactory("setShortUrlRedirectRulesReducer",r=>r.reducer,"setShortUrlRedirectRulesReducerCreator")},lje=e=>({longUrl:"",tags:[],customSlug:"",title:void 0,shortCodeLength:void 0,domain:"",validSince:void 0,validUntil:void 0,maxVisits:void 0,findIfExists:!1,validateUrl:(e==null?void 0:e.validateUrls)??!1,forwardQuery:(e==null?void 0:e.forwardQuery)??!0}),UV=({createShortUrl:e,shortUrlCreation:t,resetCreateShortUrl:r,basicMode:n=!1})=>{const{ShortUrlForm:i,CreateShortUrlResult:a}=Sr(UV),o=Hr("shortUrlCreation"),s=$.useMemo(()=>lje(o),[o]);return m.jsxs(m.Fragment,{children:[m.jsx(i,{initialState:s,saving:t.saving,basicMode:n,onSave:async u=>(r(),e(u))}),m.jsx(a,{creation:t,resetCreateShortUrl:r,canBeClosed:n})]})},uje=Or(UV,["ShortUrlForm","CreateShortUrlResult"]),zV=({shortUrlsDetails:e,getShortUrlsDetails:t,shortUrlEdition:r,editShortUrl:n})=>{const{ShortUrlForm:i}=Sr(zV),a=ZA(),{loading:o,error:s,errorData:u,shortUrls:l}=e,h=a&&(l==null?void 0:l.get(a)),{saving:p,saved:g,error:_,errorData:w}=r,b=Hr("shortUrlCreation"),x=$.useMemo(()=>TPe(h,b),[h,b]);return $.useEffect(()=>{a&&t([a])},[t,a]),o?m.jsx(Bu,{loading:!0}):s?m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:u,fallbackMessage:"An error occurred while loading short URL detail :("})}):m.jsxs(m.Fragment,{children:[m.jsx("header",{className:"mb-3",children:m.jsx(Ji,{body:!0,children:m.jsxs("h2",{className:"d-sm-flex justify-content-between align-items-center mb-0",children:[m.jsx(O_,{}),m.jsx("div",{className:"text-center flex-grow-1",children:m.jsxs("small",{children:["Edit ",m.jsx(_i,{href:(h==null?void 0:h.shortUrl)??""})]})})]})})}),m.jsx(i,{initialState:x,saving:p,onSave:async S=>{h&&n({...h,data:S})}}),g&&_&&m.jsx(bi,{type:"error",className:"mt-3",children:m.jsx(fo,{errorData:w,fallbackMessage:"An error occurred while updating short URL :("})}),g&&!_&&m.jsx(bi,{type:"success",className:"mt-3",children:"Short URL properly edited."})]})},cje=Or(zV,["ShortUrlForm"]),QA=async({text:e,onCopy:t},r=navigator)=>{var n;const i=typeof e=="string"?e:await e;return(n=r.clipboard)==null?void 0:n.writeText(i).then(()=>t==null?void 0:t({text:i,copied:!0})).catch(()=>t==null?void 0:t({text:i,copied:!1}))},VV=({creation:e,resetCreateShortUrl:t,canBeClosed:r=!1})=>{const{useTimeoutToggle:n}=Sr(VV),[i,a]=n(),{error:o,saved:s}=e;if($.useEffect(()=>{t()},[t]),o)return m.jsxs(bi,{type:"error",className:"mt-3",children:[r&&m.jsx(Ye,{"data-testid":"error-close-button",icon:YO,className:"float-end pointer",onClick:t}),m.jsx(fo,{errorData:e.errorData,fallbackMessage:"An error occurred while creating the URL :("})]});if(!s)return null;const{shortUrl:u}=e.result;return m.jsxs(bi,{type:"success",className:"mt-3",children:[r&&m.jsx(Ye,{"data-testid":"success-close-button",icon:YO,className:"float-end pointer",onClick:t}),m.jsxs("span",{children:[m.jsx("b",{children:"Great!"})," The short URL is ",m.jsx("b",{children:u})]}),m.jsxs("button",{className:"btn btn-light btn-sm create-short-url-result__copy-btn",id:"copyBtn",type:"button",onClick:()=>QA({text:u,onCopy:a}),children:[m.jsx(Ye,{icon:CT})," Copy ",m.jsxs("span",{className:"sr-only",children:[u," to clipboard"]})]}),m.jsx(Ob,{placement:"left",isOpen:i,target:"copyBtn",children:"Copied!"})]})},fje=Or(VV,["useTimeoutToggle"]),IO="delete",dje=({shortUrl:e,toggle:t,isOpen:r,shortUrlDeletion:n,resetDeleteShortUrl:i,deleteShortUrl:a,shortUrlDeleted:o})=>{const[s,u]=$.useState("");$.useEffect(()=>i,[i]);const{loading:l,error:h,deleted:p,errorData:g}=n,_=$.useCallback(()=>{i(),t()},[i,t]),w=$.useCallback(b=>(b.preventDefault(),a(e).then(x=>!$A(x)&&t())),[a,e,t]);return m.jsx(ea,{isOpen:r,toggle:_,centered:!0,onClosed:()=>p&&o(e),children:m.jsxs("form",{onSubmit:w,children:[m.jsx(Pl,{toggle:_,children:m.jsx("span",{className:"text-danger",children:"Delete short URL"})}),m.jsxs(ss,{children:[m.jsxs("p",{children:[m.jsx("b",{className:"text-danger",children:"Caution!"})," You are about to delete a short URL."]}),m.jsx("p",{children:"This action cannot be undone. Once you have deleted it, all the visits stats will be lost."}),m.jsxs("p",{children:["Write ",m.jsx("b",{children:IO})," to confirm deletion."]}),m.jsx("input",{type:"text",className:"form-control",placeholder:`Insert ${IO}`,value:s,onChange:b=>u(b.target.value)}),h&&m.jsx(bi,{type:rPe(g)?"warning":"error",small:!0,className:"mt-2",children:m.jsx(fo,{errorData:g,fallbackMessage:"Something went wrong while deleting the URL :("})})]}),m.jsxs(gd,{children:[m.jsx("button",{type:"button",className:"btn btn-link",onClick:_,children:"Cancel"}),m.jsx("button",{type:"submit",className:"btn btn-danger",disabled:s!==IO||l,children:l?"Deleting...":"Delete"})]})]})})},qV=({amount:e=0,loading:t=!1,...r})=>m.jsxs(Rt,{...r,outline:!0,color:"primary",disabled:t,children:[m.jsx(Ye,{icon:CY})," ",t?"Exporting...":m.jsxs(m.Fragment,{children:["Export (",jr(e),")"]})]}),F8=20,WV=({amount:e=0})=>{const{apiClientFactory:t,ReportExporter:r}=Sr(WV),[{tags:n,search:i,startDate:a,endDate:o,orderBy:s,tagsMode:u}]=S_(),[l,,h,p]=Vt(),g=$.useCallback(async()=>{const _=e/F8,w=async(x=1)=>{const{data:S}=await t().listShortUrls({page:`${x}`,tags:n,searchTerm:i,startDate:a,endDate:o,orderBy:s,tagsMode:u,itemsPerPage:F8});return x>=_?S:S.concat(await w(x+1))};h();const b=await w();r.exportShortUrls(b.map(x=>{var S;const{hostname:O,pathname:E}=new URL(x.shortUrl),j=E.substring(1);return{createdAt:x.dateCreated,domain:O,shortCode:j,shortUrl:x.shortUrl,longUrl:x.longUrl,title:x.title??"",tags:x.tags.join("|"),visits:((S=x==null?void 0:x.visitsSummary)==null?void 0:S.total)??x.visitsCount??0}})),p()},[e,t,o,s,r,i,a,h,p,n,u]);return m.jsx(qV,{loading:l,className:"btn-md-block",amount:e,onClick:g})},hje=Or(WV,["apiClientFactory","ReportExporter"]),pje=({text:e,copyToClipboard:t=QA,initialCopied:r=!1})=>{const[n,i]=Pb(r);return m.jsx(Yu,{className:"ms-2 p-0","aria-label":`Copy ${e} to clipboard`,onClick:()=>t({text:e,onCopy:i}),children:m.jsx(Ye,{icon:n?Lu:CT,className:"fs-5",fixedWidth:!0})})},mje="yyyy-MM-dd",HV="yyyy-MM-dd HH:mm",wl=()=>new Date,JA=e=>typeof e!="string",e3=(e,t)=>!e||!JA(e)?e:t?Yy(e,t):Kle(e),xl=e=>e3(e,void 0),ol=e=>e3(e,mje),xm=e=>e3(e,HV),yi=e=>JA(e)?e:gl(e),Jm=(e,t,r)=>{const n=yi(e),i=t&&yi(t),a=r&&yi(r);if(i&&a)try{return Xle(n,{start:i,end:a})}catch{return!1}return i?$P(n,i)||Zle(n,i):a?$P(n,a)||Zy(n,a):!0},fu=(e,t)=>$P(e,t)||Zy(e,t),tb=({date:e,format:t=HV,relative:r=!1})=>{const n=JA(e)?e:gl(e);return m.jsx("time",{dateTime:`${Yle(n)}000`,children:r?`${Gle(wl(),n)} ago`:Yy(n,t)})},vje=(e,{shortCode:t,domain:r},n)=>{const i=r?`?domain=${r}`:"";return`${e}/short-code/${yV(t)}/${n}${i}`},Sp=({shortUrl:e,suffix:t,asLink:r,children:n,...i})=>{const a=Nl();return!r||!e?m.jsx("span",{...i,children:n}):m.jsx(nr,{to:vje(a,e,t),...i,children:n})},gje=e=>{const{meta:t,visitsCount:r,visitsSummary:n}=e,{maxVisits:i,validSince:a,validUntil:o}=t,s=(n==null?void 0:n.total)??r??0;return i&&s>=i?{icon:_Z,className:"text-danger",description:`This short URL cannot be currently visited because it has reached the maximum amount of ${i} visit${i>1?"s":""}`}:o&&Zy(yi(o),wl())?{icon:w4,className:"text-danger",description:`This short URL cannot be visited since ${xm(yi(o))}`}:a&&Zy(wl(),yi(a))?{icon:w4,className:"text-warning",description:`This short URL will start working on ${xm(yi(a))}`}:{icon:Lu,className:"text-primary",description:"This short URL can be visited normally"}},yje=({shortUrl:e})=>{const{icon:t,className:r,description:n}=$.useMemo(()=>gje(e),[e]);return m.jsx("span",{style:{cursor:n?"help":void 0},title:n,children:m.jsx(Ye,{icon:t,className:r})})},GV=({visitsCount:e,shortUrl:t,active:r=!1,asLink:n=!1})=>{const i=vl(),{maxVisits:a,validSince:o,validUntil:s}=(t==null?void 0:t.meta)??{},u=!!a||!!o||!!s,l=m.jsx(Sp,{shortUrl:t,suffix:"visits",asLink:n,children:m.jsx("strong",{className:Me("short-url-visits-count__amount",{"short-url-visits-count__amount--big":r}),children:jr(e)})});return u?m.jsxs(m.Fragment,{children:[m.jsxs("span",{className:"indivisible",children:[l,m.jsxs("small",{className:"short-urls-visits-count__max-visits-control",ref:i,children:[a&&m.jsxs(m.Fragment,{children:[" / ",jr(a)]}),m.jsx("sup",{className:"ms-1",children:m.jsx(Ye,{icon:Fj})})]})]}),m.jsx(ta,{target:i,placement:"bottom",children:m.jsxs("ul",{className:"list-unstyled mb-0",children:[a&&m.jsxs("li",{className:"short-url-visits-count__tooltip-list-item",children:["This short URL will not accept more than ",m.jsx("b",{children:jr(a)})," visit",a===1?"":"s","."]}),o&&m.jsxs("li",{className:"short-url-visits-count__tooltip-list-item",children:["This short URL will not accept visits before ",m.jsx("b",{className:"indivisible",children:xm(yi(o))}),"."]}),s&&m.jsxs("li",{className:"short-url-visits-count__tooltip-list-item",children:["This short URL will not accept visits after ",m.jsx("b",{className:"indivisible",children:xm(yi(s))}),"."]})]})})]}):l},bje=e=>!!e.onClose,_je=e=>!!e.onClick,C_=e=>{const{text:t,children:r,className:n,colorGenerator:i}=e,a=_je(e),o=a?Yu:"span",s=$.useMemo(()=>i.stylesForKey(t),[t,i]);return m.jsxs(o,{className:Me("badge tag fw-bold",n,{pointer:a}),style:s,onClick:a?e.onClick:void 0,children:[r??t,bje(e)&&m.jsx(Yu,{"aria-label":`Remove ${t}`,className:"bg-transparent ms-1 opacity-100 p-0 fw-bold tag__close",onClick:e.onClose,children:"×"})]})},wje=({tags:e,onTagClick:t,colorGenerator:r})=>e.length===0?m.jsx("i",{className:"indivisible",children:m.jsx("small",{children:"No tags"})}):m.jsx(m.Fragment,{children:e.map(n=>m.jsx(C_,{text:n,colorGenerator:r,onClick:()=>t==null?void 0:t(n)},n))}),KV=({shortUrl:e,onTagClick:t})=>{var r,n,i,a;const{ShortUrlsRowMenu:o,ColorGenerator:s,useTimeoutToggle:u}=Sr(KV),[l,h]=u(!1,500),p=$.useRef(!0),[{excludeBots:g}]=S_(),_=Hr("visits"),w=g??(_==null?void 0:_.excludeBots);return $.useEffect(()=>{p.current||h(),p.current=!1},[(r=e.visitsSummary)==null?void 0:r.total,(n=e.visitsSummary)==null?void 0:n.nonBots,e.visitsCount,h]),m.jsxs("tr",{className:"responsive-table__row",children:[m.jsx("td",{className:"indivisible short-urls-row__cell responsive-table__cell","data-th":"Created at",children:m.jsx(tb,{date:e.dateCreated})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell","data-th":"Short URL",children:m.jsxs("span",{className:"position-relative short-urls-row__cell--indivisible",children:[m.jsx("span",{className:"short-urls-row__short-url-wrapper",children:m.jsx(_i,{href:e.shortUrl})}),m.jsx(pje,{text:e.shortUrl})]})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell short-urls-row__cell--break","data-th":`${e.title?"Title":"Long URL"}`,children:m.jsx(_i,{href:e.longUrl,children:e.title??e.longUrl})}),e.title&&m.jsx("td",{className:"short-urls-row__cell responsive-table__cell short-urls-row__cell--break d-lg-none","data-th":"Long URL",children:m.jsx(_i,{href:e.longUrl})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell","data-th":"Tags",children:m.jsx(wje,{tags:e.tags,colorGenerator:s,onTagClick:t})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell text-lg-end","data-th":"Visits",children:m.jsx(GV,{visitsCount:(w?(i=e.visitsSummary)==null?void 0:i.nonBots:(a=e.visitsSummary)==null?void 0:a.total)??e.visitsCount??0,shortUrl:e,active:l,asLink:!0})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell","data-th":"Status",children:m.jsxs("div",{className:"d-flex gap-2",children:[m.jsx(yje,{shortUrl:e}),e.hasRedirectRules&&m.jsx(Sp,{asLink:!0,shortUrl:e,suffix:"redirect-rules",title:"This short URL has dynamic redirect rules",children:m.jsx(Ye,{icon:s7})})]})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell text-end",children:m.jsx(o,{shortUrl:e})})]})},xje=Or(KV,["ShortUrlsRowMenu","ColorGenerator","useTimeoutToggle"]),Sje=6,B8="0123456789ABCDEF",Oje=128;function Cje(){return`#${zA(Sje,()=>B8[Math.floor(Math.random()*B8.length)]).join("")}`}function Pje(e,t,r){return Math.round(Math.sqrt(.299*e**2+.587*t**2+.114*r**2))}function YV(e){const[t,r,n]=(e.match(/../g)??[]).map(i=>parseInt(i,16)||0);return Pje(t,r,n)>=Oje}const ZV=$.forwardRef(({name:e,color:t,onChange:r,className:n},i)=>m.jsxs("div",{className:Me("p-0 position-relative",n),style:{backgroundColor:t,borderColor:t},children:[m.jsx(Ye,{icon:FY,className:"position-absolute top-50 start-50 translate-middle",style:{color:YV(t.substring(1))?"#000":"#fff"}}),m.jsx(Jr,{className:"form-control-color opacity-0",type:"color",value:t,onChange:a=>r(a.target.value),innerRef:i,name:e,"aria-label":e.replace("-"," ")})]})),U8=({color:e,onChange:t,name:r})=>{const n=vl();return m.jsxs(Im,{children:[m.jsx(ZV,{name:`${r}-picker`,color:e,onChange:t,className:"input-group-text",ref:n}),m.jsx(Jr,{readOnly:!0,value:e,onClick:()=>{var i;return(i=n.current)==null?void 0:i.click()},"aria-label":r,"data-testid":"text-input"})]})};function Eje(e){switch(e){case"L":return 1;case"M":return .5;default:return .3}}const jje=$.forwardRef(({data:e,color:t="#000000",bgColor:r="#ffffff",margin:n=0,errorCorrection:i="L",size:a=300,drawType:o="canvas",logo:s},u)=>{const l=$.useRef(null),h=$.useRef(new vue),p=$.useCallback((_,w)=>h.current.download({name:_,extension:w}),[]),g=$.useCallback(_=>new Promise((w,b)=>{const x=h.current.getRawData(_),S=new FileReader;S.onload=()=>{const{result:O}=S;O&&w(O.toString())},S.onerror=b,x.then(O=>{O instanceof Blob?S.readAsDataURL(O):b(new Error("QR code image blob not available"))})}),[]);return $.useImperativeHandle(u,()=>({download:p,getDataUri:g}),[p,g]),$.useEffect(()=>{const _=l.current;h.current.append(_)},[]),$.useEffect(()=>{h.current.update({type:o,data:e,width:a+n,height:a+n,margin:n,dotsOptions:{color:t},backgroundOptions:{color:r},qrOptions:{errorCorrectionLevel:i},imageOptions:{margin:5,imageSize:Eje(i)},image:s})},[r,t,e,o,i,s,n,a]),m.jsx("div",{ref:l})}),z8=({name:e,value:t,step:r,min:n,max:i,onChange:a})=>{const o=$.useId();return m.jsxs("div",{className:"d-flex flex-column gap-1",children:[m.jsxs("label",{htmlFor:o,className:"text-capitalize",children:[e,": ",t,"px"]}),m.jsx("input",{id:o,type:"range",className:"form-control-range",value:t,step:r,min:n,max:i,onChange:s=>a(Number(s.target.value))})]})},Tje=({shortUrl:{shortUrl:e,shortCode:t},toggle:r,isOpen:n,qrDrawType:i})=>{const a=Hr("qrCodes",wd),[{size:o,margin:s,color:u,bgColor:l,errorCorrection:h,format:p},g]=$.useState(a),_=$.useCallback(q=>g(W=>({...W,...q})),[]),w=$.useRef(null),[b,x]=$.useState(),S=$.useCallback(q=>{var W;const H=(W=q.target.files)==null?void 0:W[0];H&&x({url:URL.createObjectURL(new Blob([H],{type:H.type})),name:H.name})},[]),O=$.useRef(null),E=$.useCallback(()=>{var q;return(q=O.current)==null?void 0:q.download(`${t}-qr-code`,p)},[p,t]),[j,A]=Pb(),T=$.useCallback(()=>{var q;const W=((q=O.current)==null?void 0:q.getDataUri(p))??"";return QA({text:W,onCopy:A})},[p,A]),M=$.useCallback(()=>{g(a),x(void 0)},[a]);return m.jsxs(ea,{isOpen:n,toggle:r,centered:!0,size:"lg",onClosed:M,children:[m.jsxs(Pl,{toggle:r,children:["QR code for ",m.jsx(_i,{href:e,children:e})]}),m.jsxs(ss,{className:"d-flex flex-column-reverse flex-lg-row gap-3",children:[m.jsx("div",{className:"flex-grow-1 d-flex align-items-center justify-content-around qr-code-modal__qr-code",children:m.jsxs("div",{className:"d-flex flex-column gap-1 align-items-center","data-testid":"qr-code-container",children:[m.jsx(jje,{ref:O,data:e,size:o,margin:s,errorCorrection:h,color:u,bgColor:l,logo:b==null?void 0:b.url,drawType:i}),m.jsxs("div",{className:"text-center fst-italic",children:["Preview (",o+s,"x",o+s,")"]})]})}),m.jsxs("div",{className:"d-flex flex-column gap-2 qr-code-modal__controls",children:[m.jsx(z8,{name:"size",value:o,onChange:q=>_({size:q}),step:10,min:50,max:1e3}),m.jsx(z8,{name:"margin",value:s,onChange:q=>_({margin:q}),step:1,min:0,max:100}),m.jsx(lB,{errorCorrection:h,onChange:q=>_({errorCorrection:q})}),m.jsx(U8,{name:"color",color:u,onChange:q=>_({color:q})}),m.jsx(U8,{name:"background",color:l,onChange:q=>_({bgColor:q})}),!b&&m.jsxs(m.Fragment,{children:[m.jsxs(Rt,{outline:!0,className:"d-flex align-items-center gap-1",onClick:()=>{var q;return(q=w.current)==null?void 0:q.click()},children:[m.jsx(Ye,{icon:jse}),"Select logo"]}),m.jsx("input",{ref:w,type:"file",accept:"image/*","aria-hidden":!0,tabIndex:-1,className:"d-none",onChange:S,"data-testid":"logo-input"})]}),b&&m.jsxs(Rt,{outline:!0,className:"d-flex align-items-center gap-1",onClick:()=>x(void 0),children:[m.jsx(Ye,{icon:vb}),m.jsxs("div",{className:"text-truncate",children:["Clear logo (",b.name,")"]})]}),m.jsx("div",{className:"my-auto",children:m.jsx("hr",{className:"my-2"})}),m.jsxs("div",{className:"d-flex flex-column gap-2",children:[m.jsx(uB,{format:p,onChange:q=>_({format:q})}),m.jsxs("div",{className:"d-flex align-items-center gap-2",children:[m.jsx(Rt,{outline:!0,color:"primary",onClick:T,"aria-label":"Copy data URI",title:"Copy data URI",children:m.jsx(Ye,{icon:j?Lu:CT,fixedWidth:!0})}),m.jsxs(Rt,{color:"primary",onClick:E,className:"flex-grow-1",children:["Download ",m.jsx(Ye,{icon:i7,className:"ms-1"})]})]})]})]})]})]})},XV=({shortUrl:e,deleteShortUrl:t,shortUrlDeleted:r})=>{const{DeleteShortUrlModal:n}=Sr(XV),[i,,a,o]=Vt(),[s,,u,l]=Vt(),h=b_(),p=ho("shortUrlRedirectRules"),{confirmDeletions:g=!0}=Hr("shortUrlsList",{}),_=$.useCallback(async()=>{const w=await t(e);$A(w)||r(e)},[t,e,r]);return m.jsxs(m.Fragment,{children:[m.jsxs(Eb,{minWidth:p?220:190,children:[m.jsxs(Qe,{tag:Sp,shortUrl:e,suffix:"visits",asLink:!0,children:[m.jsx(Ye,{icon:$j,fixedWidth:!0})," Visit stats"]}),h&&m.jsxs(m.Fragment,{children:[m.jsxs(Qe,{disabled:!h.canAddItemWithName(e.shortUrl),onClick:()=>h.addItemToCompare({name:e.shortUrl,query:HA(e)}),children:[m.jsx(Ye,{icon:mb,fixedWidth:!0})," Compare visits"]}),m.jsx(Qe,{divider:!0,tag:"hr"})]}),m.jsxs(Qe,{tag:Sp,shortUrl:e,suffix:"edit",asLink:!0,children:[m.jsx(Ye,{icon:Ij,fixedWidth:!0})," Edit short URL"]}),p&&m.jsxs(Qe,{tag:Sp,shortUrl:e,suffix:"redirect-rules",asLink:!0,children:[m.jsx(Ye,{icon:s7,fixedWidth:!0})," Manage redirect rules"]}),m.jsxs(Qe,{onClick:a,children:[m.jsx(Ye,{icon:gZ,fixedWidth:!0})," QR code"]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{className:"dropdown-item--danger",onClick:g?u:_,children:[m.jsx(Ye,{icon:t7,fixedWidth:!0})," Delete short URL"]})]}),m.jsx(Tje,{shortUrl:e,isOpen:i,toggle:o}),m.jsx(n,{shortUrl:e,deleteShortUrl:t,shortUrlDeleted:r,isOpen:s,toggle:l})]})},Aje=Or(XV,["DeleteShortUrlModal"]),QV="shlink/shortUrlCreation",V8={saving:!1,saved:!1,error:!1},kje=e=>Wr(`${QV}/createShortUrl`,t=>e().createShortUrl(t)),Nje=e=>{const{reducer:t,actions:r}=Nr({name:QV,initialState:V8,reducers:{resetCreateShortUrl:()=>V8},extraReducers:i=>{i.addCase(e.pending,()=>({saving:!0,saved:!1,error:!1})),i.addCase(e.rejected,(a,{error:o})=>({saving:!1,saved:!1,error:!0,errorData:Pi(o)})),i.addCase(e.fulfilled,(a,{payload:o})=>({result:o,saving:!1,saved:!0,error:!1}))}}),{resetCreateShortUrl:n}=r;return{reducer:t,resetCreateShortUrl:n}},JV="shlink/shortUrlEdition",Rje={saving:!1,saved:!1,error:!1},Mje=e=>Wr(`${JV}/editShortUrl`,({shortCode:t,domain:r,data:n})=>e().updateShortUrl({shortCode:t,domain:r},n)),Lje=e=>Nr({name:JV,initialState:Rje,reducers:{},extraReducers:t=>{t.addCase(e.pending,r=>({...r,saving:!0,error:!1,saved:!1})),t.addCase(e.rejected,(r,{error:n})=>({...r,saving:!1,error:!0,saved:!1,errorData:Pi(n)})),t.addCase(e.fulfilled,(r,{payload:n})=>({shortUrl:n,saving:!1,error:!1,saved:!0}))}}),q8="shlink/shortUrlsDetails",W8={loading:!1,error:!1},Dje=e=>{const t=Wr(`${q8}/getShortUrlsDetails`,async(n,{getState:i})=>{const{shortUrlsList:a}=i(),o=await Promise.all(n.map(async s=>{var u;const{shortCode:l,domain:h}=s,p=(u=a==null?void 0:a.shortUrls)==null?void 0:u.data.find(g=>xp(g,l,h));return[s,p??await e().getShortUrl({shortCode:l,domain:h})]}));return new Map(o)}),{reducer:r}=Nr({name:q8,initialState:W8,reducers:{},extraReducers:n=>{n.addCase(t.pending,()=>({loading:!0,error:!1})),n.addCase(t.rejected,(i,{error:a})=>({loading:!1,error:!0,errorData:Pi(a)})),n.addCase(t.fulfilled,(i,{payload:a})=>({...W8,shortUrls:a}))}});return{reducer:r,getShortUrlsDetails:t}},Ije=({domains:e,value:t,onChange:r})=>{const[n,,i,a]=Vt(),o=!t,s=$.useCallback(()=>{r(""),a()},[r,a]),u=$.useCallback(()=>{r(""),i()},[r,i]);return n?m.jsxs(Im,{children:[m.jsx(Jr,{value:t??"",placeholder:"Domain",onChange:l=>r(l.target.value)}),m.jsx(Rt,{id:"backToDropdown",outline:!0,type:"button",className:"domains-dropdown__back-btn","aria-label":"Back to domains list",onClick:s,children:m.jsx(Ye,{icon:ZY})}),m.jsx(ta,{target:"backToDropdown",placement:"left",trigger:"hover",children:"Existing domains"})]}):m.jsxs(ls,{text:o?"Domain":`Domain: ${t}`,className:o?"domains-dropdown__toggle-btn":"domains-dropdown__toggle-btn--active",children:[e.map(({domain:l,isDefault:h})=>m.jsxs(Qe,{active:(t===l||h)&&o,onClick:()=>r(l),className:"d-flex justify-content-between align-items-center",children:[l,h&&m.jsx("span",{className:"text-muted",children:"default"})]},l)),m.jsx(Qe,{divider:!0}),m.jsx(Qe,{onClick:u,children:m.jsx("i",{children:"New domain"})})]})},$O=({icon:e,className:t,...r})=>{const n=vl();return m.jsxs("div",{className:"icon-input-container",children:[m.jsx(Jr,{className:Me("icon-input-container__input",t),innerRef:n,...r}),m.jsx(Ye,{icon:e,fixedWidth:!0,className:"icon-input-container__icon",onClick:()=>{var i;return(i=n.current)==null?void 0:i.focus()}})]})},$je=({minDate:e,maxDate:t,value:r,onChange:n,withTime:i=!1,...a})=>{const o=$.useCallback(({target:u})=>{if(!u.value){n==null||n(null);return}n==null||n(yi(u.value))},[n]),s=$.useMemo(()=>i?xm:ol,[i]);return m.jsx(Jr,{...a,type:i?"datetime-local":"date",value:s(r)??"",max:s(t)??void 0,min:s(e)??void 0,onChange:o})},rb=({label:e,id:t,...r})=>{const n=$.useId();return m.jsxs(m.Fragment,{children:[m.jsxs("label",{htmlFor:t??n,className:"mb-1",children:[e,":"]}),m.jsx($je,{id:t??n,...r})]})},FO=({children:e,infoTooltip:t,checked:r,onChange:n})=>m.jsxs("p",{children:[m.jsx(kF,{inline:!0,checked:r,className:t?"me-2":"",onChange:n,children:e}),t&&m.jsx(uy,{placement:"right",children:t})]}),Fje=({isOpen:e,toggle:t})=>m.jsxs(ea,{isOpen:e,toggle:t,centered:!0,size:"lg",children:[m.jsx(Pl,{toggle:t,children:"Info"}),m.jsxs(ss,{children:[m.jsxs("p",{children:["When the ",m.jsx("b",{children:m.jsx("i",{children:'"Use existing URL if found"'})})," checkbox is checked, the server will return an existing short URL if it matches provided params."]}),m.jsx("p",{children:"These are the checks performed by Shlink in order to determine if an existing short URL should be returned:"}),m.jsxs("ul",{children:[m.jsx("li",{children:"When only the long URL is provided: The most recent match will be returned, or a new short URL will be created if none is found."}),m.jsxs("li",{children:["When long URL and custom slug and/or domain are provided: Same as in previous case, but it will try to match the short URL using both the long URL and the slug, the long URL and the domain, or the three of them.",m.jsx("br",{}),"If the slug is being used by another long URL, an error will be returned."]}),m.jsx("li",{children:"When other params are provided: Same as in previous cases, but it will try to match existing short URLs with all provided data. If any of them does not match, a new short URL will be created"})]})]})]}),Bje=()=>{const[e,t]=Vt();return m.jsxs(m.Fragment,{children:[m.jsx(Yu,{className:"p-0",title:"What does this mean?",onClick:t,children:m.jsx(Ye,{icon:Fj})}),m.jsx(Fje,{isOpen:e,toggle:t})]})},Hg=e=>typeof e=="string"?gl(e):e,Uje=e=>"shortCodeLength"in e&&"customSlug"in e&&"domain"in e,eq=({basicMode:e=!1,saving:t,onSave:r,initialState:n,tagsList:i,domainsList:a})=>{var o,s,u;const{TagsSelector:l}=Sr(eq),[h,p]=$.useState(n),g=Uje(h),_=ho("deviceLongUrls"),w=ho("urlValidation"),b=w||g,x=$.useCallback(()=>p(n),[n]),S=$.useCallback((T,M)=>_u(T)?T:_u(M)?null:void 0,[]),O=$.useCallback((T,M)=>p(({deviceLongUrls:q={},...W})=>{var H;return{...W,deviceLongUrls:{...q,[T]:S(M,(H=n.deviceLongUrls)==null?void 0:H[T])}}}),[n.deviceLongUrls,S]),E=$.useCallback(T=>p(M=>({...M,tags:T})),[]),j=$.useCallback(async T=>(T.preventDefault(),r(h).then(M=>g&&!$A(M)&&x()).catch(()=>{})),[g,r,x,h]),A=$.useMemo(()=>m.jsxs("div",{className:"d-flex flex-column gap-3",children:[m.jsx(Jr,{bsSize:"lg",type:"url",placeholder:"URL to be shortened",required:!0,value:h.longUrl,onChange:T=>p(M=>({...M,longUrl:T.target.value}))}),m.jsxs("div",{className:Me("d-flex flex-column flex-lg-row gap-3",{"mb-3":e}),children:[e&&g&&m.jsx("div",{className:"w-100 w-lg-50",children:m.jsx(Jr,{bsSize:"lg",placeholder:"Custom slug",value:h.customSlug??"",onChange:T=>p(M=>({...M,customSlug:T.target.value}))})}),m.jsx("div",{className:Me("w-100",{"w-lg-50":e}),children:m.jsx(l,{tags:i.tags,selectedTags:h.tags??[],onChange:E})})]})]}),[l,e,E,g,h,i.tags]);return m.jsxs("form",{name:"shortUrlForm",className:"short-url-form",onSubmit:j,children:[e&&A,!e&&m.jsxs(m.Fragment,{children:[m.jsxs(Qa,{children:[m.jsx("div",{className:Me("mb-3",{"col-sm-6":_,"col-12":!_}),children:m.jsx(sr,{title:"Main options",children:A})}),_&&m.jsx("div",{className:"col-sm-6 mb-3",children:m.jsxs(sr,{title:"Device-specific long URLs",bodyClassName:"d-flex flex-column gap-3",children:[m.jsx($O,{type:"url",icon:yue,placeholder:"Android-specific redirection",value:((o=h.deviceLongUrls)==null?void 0:o.android)??"",onChange:({target:T})=>O("android",T.value)}),m.jsx($O,{type:"url",icon:gue,placeholder:"iOS-specific redirection",value:((s=h.deviceLongUrls)==null?void 0:s.ios)??"",onChange:({target:T})=>O("ios",T.value)}),m.jsx($O,{type:"url",icon:wZ,placeholder:"Desktop-specific redirection",value:((u=h.deviceLongUrls)==null?void 0:u.desktop)??"",onChange:({target:T})=>O("desktop",T.value)})]})})]}),m.jsxs(Qa,{children:[m.jsx("div",{className:"col-sm-6 mb-3",children:m.jsxs(sr,{title:"Customize the short URL",bodyClassName:"d-flex flex-column gap-3",children:[m.jsx(Jr,{placeholder:"Title",value:h.title??"",onChange:({target:T})=>p(M=>({...M,title:S(T.value,n.title)}))}),g&&m.jsxs(m.Fragment,{children:[m.jsxs(Qa,{children:[m.jsx("div",{className:"col-lg-6 mb-3 mb-lg-0",children:m.jsx(Jr,{placeholder:"Custom slug",value:h.customSlug??"",onChange:T=>p(M=>({...M,customSlug:T.target.value})),disabled:_u(h.shortCodeLength)})}),m.jsx("div",{className:"col-lg-6",children:m.jsx(Jr,{type:"number",placeholder:"Short code length",value:h.shortCodeLength??"",onChange:T=>p(M=>({...M,shortCodeLength:T.target.value})),min:4,disabled:_u(h.customSlug)})})]}),m.jsx(Ije,{value:h.domain,onChange:T=>p(M=>({...M,domain:T})),domains:a.domains})]})]})}),m.jsx("div",{className:"col-sm-6 mb-3",children:m.jsxs(sr,{title:"Limit access to the short URL",children:[m.jsxs("div",{className:"row mb-3",children:[m.jsx("div",{className:"col-lg-6",children:m.jsx(rb,{label:"Enabled since",withTime:!0,maxDate:h.validUntil?Hg(h.validUntil):void 0,value:h.validSince?Hg(h.validSince):null,onChange:T=>p(M=>({...M,validSince:xl(T)}))})}),m.jsx("div",{className:"col-lg-6 mt-3 mt-lg-0",children:m.jsx(rb,{label:"Enabled until",withTime:!0,minDate:h.validSince?Hg(h.validSince):void 0,value:h.validUntil?Hg(h.validUntil):null,onChange:T=>p(M=>({...M,validUntil:xl(T)}))})})]}),m.jsxs("div",{children:[m.jsx("label",{htmlFor:"maxVisits",className:"mb-1",children:"Maximum visits allowed:"}),m.jsx(Jr,{id:"maxVisits",type:"number",min:1,placeholder:"25...",value:h.maxVisits??"",onChange:T=>p(M=>({...M,maxVisits:_u(T.target.value)?Number(T.target.value):null}))})]})]})})]}),m.jsxs(Qa,{children:[b&&m.jsx("div",{className:"col-sm-6 mb-3",children:m.jsxs(sr,{title:"Extra checks",children:[w&&m.jsx(FO,{infoTooltip:"If checked, Shlink will try to reach the long URL, failing in case it's not publicly accessible.",checked:h.validateUrl,onChange:T=>p(M=>({...M,validateUrl:T})),children:"Validate URL"}),g&&m.jsxs("p",{children:[m.jsx(kF,{inline:!0,className:"me-2",checked:h.findIfExists,onChange:T=>p(M=>({...M,findIfExists:T})),children:"Use existing URL if found"}),m.jsx(Bje,{})]})]})}),m.jsx("div",{className:Me("mb-3",{"col-sm-6":b}),children:m.jsxs(sr,{title:"Configure behavior",children:[m.jsx(FO,{infoTooltip:"This short URL will be included in the robots.txt for your Shlink instance, allowing web crawlers (like Google) to index it.",checked:h.crawlable,onChange:T=>p(M=>({...M,crawlable:T})),children:"Make it crawlable"}),m.jsx(FO,{infoTooltip:"When this short URL is visited, any query params appended to it will be forwarded to the long URL.",checked:h.forwardQuery,onChange:T=>p(M=>({...M,forwardQuery:T})),children:"Forward query params on redirect"})]})})]})]}),m.jsx("div",{className:"text-center",children:m.jsx(Rt,{outline:!0,color:"primary",disabled:t||!h.longUrl,className:"btn-xs-block",children:t?"Saving...":"Save"})})]})},zje=Or(eq,["TagsSelector"]),P_="all",tq={today:"Today",yesterday:"Yesterday",last7Days:"Last 7 days",last30Days:"Last 30 days",last90Days:"Last 90 days",last180Days:"Last 180 days",last365Days:"Last 365 days",[P_]:void 0},rq=Object.keys(tq),Vje=e=>!e||!e.startDate&&!e.endDate,nb=e=>typeof e=="string"&&rq.includes(e),qje=rq.filter(e=>e!==P_),H8=e=>e?yi(e):null,nq=(e,t)=>({startDate:H8(e),endDate:H8(t)}),Wje=e=>{if(!(!e||Vje(e)))return e.startDate&&!e.endDate?`Since ${ol(e.startDate)}`:!e.startDate&&e.endDate?`Until ${ol(e.endDate)}`:`${ol(e.startDate)} - ${ol(e.endDate)}`},iq=e=>{if(!(!e||e===P_))return nb(e)?tq[e]:Wje(e)},qi=e=>qu(Xy(wl(),e)),ef=e=>({startDate:e,endDate:Mf(wl())}),aq=e=>{var t;return((t=[[()=>e==="today",()=>ef(qu(wl()))],[()=>e==="yesterday",()=>({startDate:qi(1),endDate:Mf(Xy(wl(),1))})],[()=>e==="last7Days",()=>ef(qi(7))],[()=>e==="last30Days",()=>ef(qi(30))],[()=>e==="last90Days",()=>ef(qi(90))],[()=>e==="last180Days",()=>ef(qi(180))],[()=>e==="last365Days",()=>ef(qi(365))]].find(([r])=>r()))==null?void 0:t[1]())??{}},Hje=e=>{var t;const r=yi(e);return((t=[[()=>fu(qu(wl()),r),"today"],[()=>fu(qi(1),r),"yesterday"],[()=>fu(qi(7),r),"last7Days"],[()=>fu(qi(30),r),"last30Days"],[()=>fu(qi(90),r),"last90Days"],[()=>fu(qi(180),r),"last180Days"],[()=>fu(qi(365),r),"last365Days"]].find(([n])=>n()))==null?void 0:t[1])??P_},oq=e=>nb(e)?aq(e):e,sq=e=>!!(e&&e.startDate),Gje=({startDate:e,endDate:t})=>{const r=gB(Mf(t??new Date),qu(e))+1,n=Xy(qu(e),r),i=Xy(Mf(e),1);return{startDate:n,endDate:i}},Kje=e=>{if(sq(e))return gB(e.endDate??new Date,e.startDate)},Yje=({active:e,allText:t,onChange:r})=>m.jsxs(m.Fragment,{children:[m.jsx(Qe,{active:e==="all",onClick:()=>r("all"),children:t}),m.jsx(Qe,{divider:!0,tag:"hr"}),qje.map(n=>m.jsx(Qe,{active:e===n,onClick:()=>r(n),children:iq(n)},n))]}),Zje=({startDate:e,endDate:t,disabled:r=!1,onStartDateChange:n,onEndDateChange:i})=>m.jsxs("div",{className:"row",children:[m.jsx("div",{className:"col-md-6",children:m.jsx(rb,{label:"Since",value:e,maxDate:t??void 0,disabled:r,onChange:n})}),m.jsx("div",{className:"col-md-6 mt-3 mt-md-0",children:m.jsx(rb,{label:"Until",value:t,minDate:e??void 0,disabled:r,onChange:a=>i(a&&Mf(a))})})]}),t3=({onDatesChange:e,dateRangeOrInterval:t,defaultText:r,disabled:n})=>{const i=$.useMemo(()=>iq(t)??r,[t,r]),[a,o]=$.useMemo(()=>nb(t)?[void 0,t]:[t,void 0],[t]),s=$.useCallback(u=>{nb(u)?e(aq(u),u):e(u)},[e]);return m.jsxs(ls,{disabled:n,text:i,children:[m.jsx(Yje,{allText:r,active:o,onChange:s}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx("div",{className:"px-3 py-1",children:m.jsx(Zje,{...a,onStartDateChange:u=>s({...a,startDate:u}),onEndDateChange:u=>s({...a,endDate:u})})})]})},Xje={dateCreated:"Created at",shortCode:"Short URL",longUrl:"Long URL",title:"Title",visits:"Visits"},Qje=({onChange:e,selected:t={},className:r,domains:n})=>{const i=ho("filterShortUrlsByDomain"),{excludeBots:a=!1,excludeMaxVisitsReached:o=!1,excludePastValidUntil:s=!1,domain:u}=t,l=$.useCallback(p=>e({...t,...p}),[e,t]),h=$.useCallback(p=>l({[p]:!(t!=null&&t[p])}),[l,t]);return m.jsxs(ls,{text:"Filters",dropdownClassName:r,end:!0,minWidth:250,children:[m.jsx(Qe,{header:!0,"aria-hidden":!0,children:"Visits:"}),m.jsx(Qe,{active:a,onClick:()=>h("excludeBots"),children:"Ignore visits from bots"}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{header:!0,"aria-hidden":!0,children:"Short URLs:"}),m.jsx(Qe,{active:o,onClick:()=>h("excludeMaxVisitsReached"),children:"Exclude with visits reached"}),m.jsx(Qe,{active:s,onClick:()=>h("excludePastValidUntil"),children:"Exclude enabled in the past"}),i&&m.jsxs(m.Fragment,{children:[m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{header:!0,"aria-hidden":!0,children:["Domain: ",!n&&m.jsx("i",{children:"loading..."})]}),n==null?void 0:n.map(p=>{const g=p.isDefault?cd:p.domain,_=u===g;return m.jsx(Qe,{active:_,onClick:()=>l({domain:_?void 0:g}),children:p.domain},p.domain)})]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{disabled:t.excludeBots===void 0&&t.excludeMaxVisitsReached===void 0&&t.excludePastValidUntil===void 0&&t.domain===void 0,onClick:()=>e({excludeBots:void 0,excludeMaxVisitsReached:void 0,excludePastValidUntil:void 0,domain:void 0}),className:"fst-italic",children:"Reset to defaults"})]})},lq=({className:e,shortUrlsAmount:t,order:r,handleOrderBy:n,tagsList:i,domainsList:a})=>{const{ExportShortUrlsBtn:o,TagsSelector:s}=Sr(lq),[{search:u,tags:l,startDate:h,endDate:p,excludeBots:g,excludeMaxVisitsReached:_,excludePastValidUntil:w,domain:b,tagsMode:x="any"},S]=S_(),O=Hr("visits"),[E,j]=$.useState(),A=$.useCallback(({startDate:W,endDate:H},K)=>{S({startDate:xl(W)??void 0,endDate:xl(H)??void 0}),j(K)},[S]),T=$.useCallback(W=>S({search:W||void 0}),[S]),M=$.useCallback(W=>S({tags:W}),[S]),q=$.useCallback(()=>S({tagsMode:x==="any"?"all":"any"}),[x,S]);return m.jsxs("div",{className:Me("short-urls-filtering-bar-container",e),children:[m.jsx(Cb,{initialValue:u,onChange:T}),m.jsxs(Im,{className:"mt-3",children:[m.jsx(s,{immutable:!0,placeholder:"With tags...",tags:i.tags,selectedTags:l,onChange:M}),l.length>1&&m.jsxs(m.Fragment,{children:[m.jsx(Rt,{outline:!0,color:"secondary",onClick:q,id:"tagsModeBtn","aria-label":"Change tags mode",children:m.jsx(Ye,{className:"short-urls-filtering-bar__tags-icon",icon:x==="all"?n7:GY})}),m.jsx(ta,{target:"tagsModeBtn",placement:"left",children:x==="all"?"With all the tags.":"With any of the tags."})]})]}),m.jsxs(Qa,{className:"flex-lg-row-reverse",children:[m.jsx("div",{className:"col-lg-8 col-xl-6 mt-3",children:m.jsxs("div",{className:"d-md-flex",children:[m.jsx("div",{className:"flex-grow-1",children:m.jsx(t3,{defaultText:"All short URLs",dateRangeOrInterval:E??nq(h,p),onDatesChange:A})}),m.jsx(Qje,{className:"ms-0 ms-md-2 mt-3 mt-md-0",selected:{excludeBots:g??(O==null?void 0:O.excludeBots),excludeMaxVisitsReached:_,excludePastValidUntil:w,domain:b},onChange:S,domains:a.loading?void 0:a.domains})]})}),m.jsx("div",{className:"col-6 col-lg-4 col-xl-6 mt-3",children:m.jsx(o,{amount:t})}),m.jsx("div",{className:"col-6 d-lg-none mt-3",children:m.jsx(Fm,{prefixed:!1,items:Xje,order:r,onChange:n})})]})]})},Jje=Or(lq,["ExportShortUrlsBtn","TagsSelector"]);function Op({currentOrder:e,field:t,className:r="ms-1"}){return!e.dir||e.field!==t?null:m.jsx(Ye,{icon:e.dir==="ASC"?$Y:QY,className:r})}const tf=2,vj="...",uq=(e,t)=>{const r=ST(Math.max(tf,e-tf),Math.min(t-1,e+tf)+1);return e-tf>tf&&r.unshift(vj),e+tfe===vj,cq=e=>Sm(e)?e:jr(e),fq=(e,t)=>Sm(e)?`${e}_${t}`:`${e}`,eTe=({paginator:e,currentQueryString:t=""})=>{const{currentPage:r=0,pagesCount:n=0}=e??{},i=Nl(),a=s=>`${i}/list-short-urls/${s}${t}`;if(n<=1)return m.jsx("div",{className:"pb-3"});const o=()=>uq(r,n).map((s,u)=>m.jsx(Au,{disabled:Sm(s),active:r===s,children:m.jsx(ku,{tag:nr,to:a(s),children:cq(s)})},fq(s,u)));return m.jsxs(pT,{className:"sticky-card-paginator py-3",listClassName:"flex-wrap justify-content-center mb-0",children:[m.jsx(Au,{disabled:r===1,children:m.jsx(ku,{previous:!0,tag:nr,to:a(r-1)})}),o(),m.jsx(Au,{disabled:r>=n,children:m.jsx(ku,{next:!0,tag:nr,to:a(r+1)})})]})},tTe={field:"dateCreated",dir:"DESC"},dq=Ra(({listShortUrls:e,shortUrlsList:t})=>{var r,n,i;const{ShortUrlsTable:a,ShortUrlsFilteringBar:o}=Sr(dq),{page:s}=md(),u=Sn(),[{tags:l,search:h,startDate:p,endDate:g,orderBy:_,tagsMode:w,excludeBots:b,excludePastValidUntil:x,excludeMaxVisitsReached:S,domain:O},E]=S_(),j=OT(),[A,T]=$.useState(_??((r=j.shortUrlsList)==null?void 0:r.defaultOrdering)??tTe),{pagination:M}=(t==null?void 0:t.shortUrls)??{},q=$.useMemo(()=>{var ee;return b??((ee=j.visits)==null?void 0:ee.excludeBots)},[b,(n=j.visits)==null?void 0:n.excludeBots]),W=$.useCallback((ee,re)=>{E({orderBy:{field:ee,dir:re}}),T({field:ee,dir:re})},[E]),H=ee=>()=>W(ee,$m(ee,A.field,A.dir)),K=ee=>m.jsx(Op,{currentOrder:A,field:ee}),te=$.useCallback(ee=>E({tags:[...new Set([...l,ee])]}),[l,E]),se=$.useCallback(({field:ee,dir:re})=>q&&ee==="visits"?{field:"nonBotVisits",dir:re}:{field:ee,dir:re},[q]),X=BA();return $.useEffect(()=>{e({page:s,searchTerm:h,tags:l,startDate:p,endDate:g,orderBy:se(A),tagsMode:w,excludePastValidUntil:x,excludeMaxVisitsReached:S,domain:O})},[e,se,s,h,l,p,g,A,w,x,S,O]),m.jsxs(FA,{value:X,children:[m.jsx(o,{shortUrlsAmount:(i=t.shortUrls)==null?void 0:i.pagination.totalItems,order:A,handleOrderBy:W,className:"mb-3"}),m.jsx(UA,{type:"short-urls",className:"mb-3"}),m.jsxs(Ji,{body:!0,className:Me({"pb-0":!t.loading}),children:[m.jsx(a,{shortUrlsList:t,orderByColumn:H,renderOrderIcon:K,onTagClick:te}),!t.loading&&m.jsx(eTe,{paginator:M,currentQueryString:u.search})]})]})},()=>[Dn.visits]),rTe=Or(dq,["ShortUrlsTable","ShortUrlsFilteringBar"]),nTe=({shortUrlsList:e,onTagClick:t,ShortUrlsRow:r})=>{const{error:n,loading:i,shortUrls:a}=e;return n?m.jsx("tr",{children:m.jsx("td",{colSpan:6,className:"text-center table-danger text-dark",children:"Something went wrong while loading short URLs :("})}):i?m.jsx("tr",{children:m.jsx("td",{colSpan:6,className:"text-center",children:"Loading..."})}):!i&&(!a||a.data.length===0)?m.jsx("tr",{children:m.jsx("td",{colSpan:6,className:"text-center",children:"No results found"})}):a==null?void 0:a.data.map(o=>m.jsx(r,{shortUrl:o,onTagClick:t},o.shortUrl))},hq=({orderByColumn:e,renderOrderIcon:t,shortUrlsList:r,onTagClick:n,className:i})=>{const{ShortUrlsRow:a}=Sr(hq),o=Me({"short-urls-table__header-cell--with-action":!!e}),s=Me("short-urls-table__header-cell",o),u=Me("table table-hover responsive-table short-urls-table",i);return m.jsxs("table",{className:u,children:[m.jsx("thead",{className:"responsive-table__header short-urls-table__header",children:m.jsxs("tr",{children:[m.jsxs("th",{className:s,onClick:e==null?void 0:e("dateCreated"),children:["Created at ",t==null?void 0:t("dateCreated")]}),m.jsxs("th",{className:s,onClick:e==null?void 0:e("shortCode"),children:["Short URL ",t==null?void 0:t("shortCode")]}),m.jsxs("th",{className:"short-urls-table__header-cell",children:[m.jsxs(Yu,{className:Me("p-0",o),onClick:e==null?void 0:e("title"),children:["Title ",t==null?void 0:t("title")]}),"  /  ",m.jsxs(Yu,{className:Me("p-0",o),onClick:e==null?void 0:e("longUrl"),children:[m.jsx("span",{className:"indivisible",children:"Long URL"})," ",t==null?void 0:t("longUrl")]})]}),m.jsx("th",{className:"short-urls-table__header-cell",children:"Tags"}),m.jsx("th",{className:s,onClick:e==null?void 0:e("visits"),children:m.jsxs("span",{className:"indivisible",children:["Visits ",t==null?void 0:t("visits")]})}),m.jsx("th",{className:"short-urls-table__header-cell",colSpan:2,"aria-hidden":!0})]})}),m.jsx("tbody",{children:m.jsx(nTe,{ShortUrlsRow:a,shortUrlsList:r,onTagClick:n})})]})},iTe=Or(hq,["ShortUrlsRow"]),aTe=(e,t)=>{e.factory("ShortUrlsList",rTe),e.decorator("ShortUrlsList",t(["mercureInfo","shortUrlsList"],["listShortUrls","createNewVisits","loadMercureInfo"])),e.factory("ShortUrlsTable",iTe),e.factory("ShortUrlsRow",xje),e.factory("CreateShortUrlResult",fje),e.factory("ShortUrlsRowMenu",Aje),e.decorator("ShortUrlsRowMenu",t(null,["shortUrlDeleted","deleteShortUrl"])),e.factory("ShortUrlForm",zje),e.decorator("ShortUrlForm",t(["tagsList","domainsList"])),e.factory("CreateShortUrl",uje),e.decorator("CreateShortUrl",t(["shortUrlCreation"],["createShortUrl","resetCreateShortUrl"])),e.factory("EditShortUrl",cje),e.decorator("EditShortUrl",t(["shortUrlsDetails","shortUrlEdition"],["getShortUrlsDetails","editShortUrl"])),e.serviceFactory("DeleteShortUrlModal",()=>dje),e.decorator("DeleteShortUrlModal",t(["shortUrlDeletion"],["resetDeleteShortUrl"])),e.factory("ExportShortUrlsBtn",hje),e.factory("ShortUrlsFilteringBar",Jje),e.decorator("ShortUrlsFilteringBar",t(["tagsList","domainsList"])),e.serviceFactory("shortUrlsListReducerCreator",MPe,"listShortUrls","editShortUrl","createShortUrl"),e.serviceFactory("shortUrlsListReducer",r=>r.reducer,"shortUrlsListReducerCreator"),e.serviceFactory("shortUrlCreationReducerCreator",Nje,"createShortUrl"),e.serviceFactory("shortUrlCreationReducer",r=>r.reducer,"shortUrlCreationReducerCreator"),e.serviceFactory("shortUrlEditionReducerCreator",Lje,"editShortUrl"),e.serviceFactory("shortUrlEditionReducer",r=>r.reducer,"shortUrlEditionReducerCreator"),e.serviceFactory("shortUrlDeletionReducerCreator",kPe,"deleteShortUrl"),e.serviceFactory("shortUrlDeletionReducer",r=>r.reducer,"shortUrlDeletionReducerCreator"),e.serviceFactory("shortUrlsDetailsReducerCreator",Dje,"apiClientFactory"),e.serviceFactory("shortUrlsDetailsReducer",r=>r.reducer,"shortUrlsDetailsReducerCreator"),e.serviceFactory("listShortUrls",RPe,"apiClientFactory"),e.serviceFactory("createShortUrl",kje,"apiClientFactory"),e.serviceFactory("resetCreateShortUrl",r=>r.resetCreateShortUrl,"shortUrlCreationReducerCreator"),e.serviceFactory("deleteShortUrl",APe,"apiClientFactory"),e.serviceFactory("resetDeleteShortUrl",r=>r.resetDeleteShortUrl,"shortUrlDeletionReducerCreator"),e.serviceFactory("shortUrlDeleted",()=>_V),e.serviceFactory("getShortUrlsDetails",r=>r.getShortUrlsDetails,"shortUrlsDetailsReducerCreator"),e.serviceFactory("editShortUrl",Mje,"apiClientFactory")},oTe=({tag:e,toggle:t,isOpen:r,deleteTag:n,tagDelete:i,tagDeleted:a})=>{const{deleting:o,error:s,deleted:u,errorData:l}=i;return m.jsxs(ea,{toggle:t,isOpen:r,centered:!0,onClosed:()=>u&&a(e),children:[m.jsx(Pl,{toggle:t,className:"text-danger",children:"Delete tag"}),m.jsxs(ss,{children:["Are you sure you want to delete tag ",m.jsx("b",{children:e}),"?",s&&m.jsx(bi,{type:"error",small:!0,className:"mt-2",children:m.jsx(fo,{errorData:l,fallbackMessage:"Something went wrong while deleting the tag :("})})]}),m.jsxs(gd,{children:[m.jsx(Rt,{color:"link",onClick:t,children:"Cancel"}),m.jsx(Rt,{color:"danger",disabled:o,onClick:async()=>{await n(e),t()},children:o?"Deleting tag...":"Delete tag"})]})]})},pq=({tag:e,editTag:t,toggle:r,tagEdited:n,isOpen:i,tagEdit:a})=>{const{ColorGenerator:o}=Sr(pq),[s,u]=$.useState(e),[l,h]=$.useState(o.getColorForKey(e)),{editing:p,error:g,edited:_,errorData:w}=a,b=gV(async()=>{await t({oldName:e,newName:s,color:l}),r()}),x=$.useCallback(()=>_&&n({oldName:e,newName:s,color:l}),[l,_,s,e,n]);return m.jsx(ea,{isOpen:i,toggle:r,centered:!0,onClosed:x,children:m.jsxs("form",{name:"editTag",onSubmit:b,children:[m.jsx(Pl,{toggle:r,children:"Edit tag"}),m.jsxs(ss,{children:[m.jsxs(Im,{children:[m.jsx(ZV,{color:l,onChange:h,className:"input-group-text",name:"tag-color"}),m.jsx(Jr,{value:s,placeholder:"Tag",required:!0,onChange:({target:S})=>u(S.value)})]}),g&&m.jsx(bi,{type:"error",small:!0,className:"mt-2",children:m.jsx(fo,{errorData:w,fallbackMessage:"Something went wrong while editing the tag :("})})]}),m.jsxs(gd,{children:[m.jsx(Rt,{type:"button",color:"link",onClick:r,children:"Cancel"}),m.jsx(Rt,{color:"primary",disabled:p,children:p?"Saving...":"Save"})]})]})})},sTe=Or(pq,["ColorGenerator"]),lTe=/\s+/g,mq=e=>e.trim().toLowerCase().replace(lTe,"-"),vq=({color:e})=>m.jsx("div",{style:{backgroundColor:e},className:"color-bullet"}),gq=({tag:e,colorGenerator:t})=>m.jsx(vq,{color:t.getColorForKey(e)});let G8=1;const yq="Tag not found",bq="Add tag",uTe=e=>e!==yq,cTe=e=>e===bq,K8=e=>(G8+=1,{label:e,value:`${e}${G8}`}),fTe=e=>({tag:t,onClick:r})=>m.jsx(C_,{colorGenerator:e,text:t.label,className:"react-tags__tag",onClose:r}),dTe=(e,t)=>({option:r,classNames:n,...i})=>{var a;const o=uTe(r.label),s=cTe(r.label);return m.jsx("div",{className:Me(n.option,{[n.optionIsActive]:o&&r.active,"react-tags__listbox-option--not-selectable":!o}),...i,children:o?m.jsxs(m.Fragment,{children:[!s&&m.jsx(gq,{tag:`${r.label}`,colorGenerator:e}),s?m.jsxs("i",{children:['Add "',mq(((a=t.current)==null?void 0:a.input.value)??""),'"']}):r.label]}):m.jsx("i",{children:r.label})})},_q=({selectedTags:e,onChange:t,placeholder:r,tags:n,immutable:i=!1})=>{const{ColorGenerator:a}=Sr(_q),o=Hr("shortUrlCreation"),s=(o==null?void 0:o.tagFilteringMode)??"startsWith",u=$.useRef(null);return m.jsx(vce,{ref:u,selected:e.map(K8),suggestions:n.filter(l=>!e.includes(l)).map(K8),renderTag:fTe(a),renderOption:dTe(a,u),activateFirstOption:!0,allowNew:!i,newOptionText:bq,noOptionsText:yq,placeholderText:r??"Add tags to the URL",delimiterKeys:["Enter",","],suggestionsTransform:(l,h)=>{const p=l.toLowerCase().trim();return p.length<1?[]:[...h.filter(({label:g})=>s==="includes"?g.includes(p):g.startsWith(p))].slice(0,5)},onDelete:l=>{const h=[...e];h.splice(l,1),t(h)},onAdd:({label:l})=>t([...new Set([...e,...l.split(",").map(mq)])])})},hTe=Or(_q,["ColorGenerator"]),gj="shlink/tagDelete",pTe={deleting:!1,deleted:!1,error:!1},wq=Mn(`${gj}/tagDeleted`),mTe=e=>{const t=Wr(`${gj}/deleteTag`,async n=>{await e().deleteTags([n])}),{reducer:r}=Nr({name:gj,initialState:pTe,reducers:{},extraReducers:n=>{n.addCase(t.pending,()=>({deleting:!0,deleted:!1,error:!1})),n.addCase(t.rejected,(i,{error:a})=>({deleting:!1,deleted:!1,error:!0,errorData:Pi(a)})),n.addCase(t.fulfilled,()=>({deleting:!1,deleted:!0,error:!1}))}});return{reducer:r,deleteTag:t}},r3="shlink/tagEdit",vTe={editing:!1,edited:!1,error:!1},xq=Mn(`${r3}/tagEdited`),gTe=(e,t)=>Wr(`${r3}/editTag`,async({oldName:r,newName:n,color:i})=>(await e().editTag({oldName:r,newName:n}),t.setColorForKey(n,i),{oldName:r,newName:n,color:i})),yTe=e=>Nr({name:r3,initialState:vTe,reducers:{},extraReducers:t=>{t.addCase(e.pending,()=>({editing:!0,edited:!1,error:!1})),t.addCase(e.rejected,(r,{error:n})=>({editing:!1,edited:!1,error:!0,errorData:Pi(n)})),t.addCase(e.fulfilled,(r,{payload:n})=>{const{oldName:i,newName:a}=n;return{oldName:i,newName:a,editing:!1,edited:!0,error:!1}})}}),n3="shlink/tagsList",BO={tags:[],filteredTags:[],stats:{},loading:!1,error:!1},Y8=(e,t)=>r=>r===e?t:r,Z8=(e,t)=>e.filter(r=>r!==t),bTe=(e,t)=>e.reduce((r,[n,i])=>{if(!r[n])return r;const{bots:a,nonBots:o}=i,s=r[n];return{...r,[n]:{...s,visitsSummary:s.visitsSummary&&{total:s.visitsSummary.total+a+o,bots:s.visitsSummary.bots+a,nonBots:s.visitsSummary.nonBots+o},visitsCount:(s.visitsCount??0)+a+o}}},{...t}),_Te=e=>Object.entries(e.reduce((t,{shortUrl:r,visit:n})=>(r==null||r.tags.forEach(i=>{t[i]||(t[i]={bots:0,nonBots:0}),n.potentialBot?t[i].bots+=1:t[i].nonBots+=1}),t),{})),wTe=e=>Wr(`${n3}/listTags`,async()=>{const{data:t}=await e().tagsStats(),r=t.reduce((n,{tag:i,...a})=>(n[i]=a,n),{});return{tags:Object.keys(r),stats:r}}),Sq=Mn(`${n3}/filterTags`),xTe=(e,t)=>Nr({name:n3,initialState:BO,reducers:{},extraReducers:r=>{r.addCase(Sq,(n,{payload:i})=>({...n,filteredTags:n.tags.filter(a=>a.toLowerCase().match(i.toLowerCase()))})),r.addCase(e.pending,n=>({...n,loading:!0,error:!1})),r.addCase(e.rejected,(n,{error:i})=>({...BO,error:!0,errorData:Pi(i)})),r.addCase(e.fulfilled,(n,{payload:i})=>({...BO,stats:i.stats,tags:i.tags,filteredTags:i.tags})),r.addCase(wq,({tags:n,filteredTags:i,...a},{payload:o})=>({...a,tags:Z8(n,o),filteredTags:Z8(i,o)})),r.addCase(xq,({tags:n,filteredTags:i,stats:a,...o},{payload:s})=>({...o,stats:{...a,[s.newName]:a[s.oldName]},tags:n.map(Y8(s.oldName,s.newName)).sort(),filteredTags:i.map(Y8(s.oldName,s.newName)).sort()})),r.addCase(Md,(n,{payload:i})=>({...n,stats:bTe(_Te(i.createdVisits),n.stats)})),r.addCase(t.fulfilled,({tags:n,...i},{payload:a})=>({...i,tags:n.concat(a.tags.filter(o=>!n.includes(o)))}))}}),STe={tag:"Tag",shortUrls:"Short URLs",visits:"Visits"},Oq=Ra(({filterTags:e,tagsList:t})=>{var r,n;const{TagsTable:i}=Sr(Oq),a=OT(),[o,s]=$.useState(((r=a.tags)==null?void 0:r.defaultOrdering)??{}),u=$.useMemo(()=>{const h=t.filteredTags.map(p=>{var g,_,w;const b=t.stats[p],x=((g=a.visits)!=null&&g.excludeBots?(_=b==null?void 0:b.visitsSummary)==null?void 0:_.nonBots:(w=b==null?void 0:b.visitsSummary)==null?void 0:w.total)??(b==null?void 0:b.visitsCount)??0;return{tag:p,visits:x,shortUrls:(b==null?void 0:b.shortUrlsCount)??0}});return MF(h,o)},[o,(n=a.visits)==null?void 0:n.excludeBots,t.filteredTags,t.stats]),l=BA();return t.loading?m.jsx(Bu,{loading:!0}):t.error?m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:t.errorData,fallbackMessage:"Error loading tags :("})}):m.jsxs(FA,{value:l,children:[m.jsx(Cb,{className:"mb-3",onChange:e}),m.jsx(Qa,{className:"mb-3",children:m.jsx("div",{className:"col-lg-6 offset-lg-6",children:m.jsx(Fm,{items:STe,order:o,onChange:(h,p)=>s({field:h,dir:p})})})}),m.jsx(UA,{type:"tags",className:"mb-3"}),m.jsx(i,{sortedTags:u,currentOrder:o,orderByColumn:h=>()=>{const p=$m(h,o.field,o.dir);s({field:p?h:void 0,dir:p})}})]})},()=>[Dn.visits]),OTe=Or(Oq,["TagsTable"]),i3=({pagesCount:e,currentPage:t,onPageChange:r,centered:n=!0})=>{const i=$.useCallback(a=>!Sm(a)&&r(a),[r]);return e<2?null:m.jsxs(pT,{listClassName:Me("flex-wrap mb-0 simple-paginator",{"justify-content-center":n}),children:[m.jsx(Au,{disabled:t<=1,children:m.jsx(ku,{previous:!0,tag:"span",onClick:()=>i(t-1)})}),uq(t,e).map((a,o)=>m.jsx(Au,{disabled:Sm(a),active:t===a,children:m.jsx(ku,{role:"link",tag:"span",onClick:()=>i(a),children:cq(a)})},fq(a,o))),m.jsx(Au,{disabled:t>=e,children:m.jsx(ku,{next:!0,tag:"span",onClick:()=>i(t+1)})})]})},CTe=20,Cq=({sortedTags:e,orderByColumn:t,currentOrder:r})=>{const{TagsTableRow:n}=Sr(Cq),i=$.useRef(!0),{page:a=1}=bd(),[o,s]=hPe("page",Number(a)),u=$.useCallback(g=>{s(g),scrollTo(0,0)},[s]),l=bf(e,CTe),h=l.length>1,p=l[o-1]??[];return $.useEffect(()=>{i.current||u(1),i.current=!1},[u,e]),m.jsxs(sr,{bodyClassName:h?"pb-1":"",children:[m.jsxs("table",{className:"table table-hover responsive-table mb-0",children:[m.jsxs("thead",{className:"responsive-table__header",children:[m.jsxs("tr",{children:[m.jsxs("th",{className:"tags-table__header-cell",onClick:t("tag"),children:["Tag ",m.jsx(Op,{currentOrder:r,field:"tag"})]}),m.jsxs("th",{className:"tags-table__header-cell text-lg-end",onClick:t("shortUrls"),children:["Short URLs ",m.jsx(Op,{currentOrder:r,field:"shortUrls"})]}),m.jsxs("th",{className:"tags-table__header-cell text-lg-end",onClick:t("visits"),children:["Visits ",m.jsx(Op,{currentOrder:r,field:"visits"})]}),m.jsx("th",{className:"tags-table__header-cell",children:m.jsx("span",{className:"sr-only",children:"Options"})})]}),m.jsx("tr",{children:m.jsx("th",{"aria-hidden":!0,colSpan:4,className:"p-0 border-top-0"})})]}),m.jsxs("tbody",{children:[p.length===0&&m.jsx("tr",{children:m.jsx("td",{colSpan:4,className:"text-center",children:"No tags found"})}),p.map(g=>m.jsx(n,{tag:g},g.tag))]})]}),h&&m.jsx("div",{className:"sticky-card-paginator",children:m.jsx(i3,{pagesCount:l.length,currentPage:o,onPageChange:u})})]},o)},PTe=Or(Cq,["TagsTableRow"]),Pq=({tag:e})=>{const{DeleteTagConfirmModal:t,EditTagModal:r,ColorGenerator:n}=Sr(Pq),[i,a]=Vt(),[o,s]=Vt(),u=Nl(),l=b_();return m.jsxs("tr",{className:"responsive-table__row",children:[m.jsxs("th",{className:"responsive-table__cell","data-th":"Tag",children:[m.jsx(gq,{tag:e.tag,colorGenerator:n})," ",e.tag]}),m.jsx("td",{className:"responsive-table__cell text-lg-end","data-th":"Short URLs",children:m.jsx(nr,{to:`${u}/list-short-urls/1?tags=${encodeURIComponent(e.tag)}`,children:jr(e.shortUrls)})}),m.jsx("td",{className:"responsive-table__cell text-lg-end","data-th":"Visits",children:m.jsx(nr,{to:`${u}/tag/${e.tag}/visits`,children:jr(e.visits)})}),m.jsx("td",{className:"responsive-table__cell text-lg-end",children:m.jsxs(Eb,{children:[m.jsxs(Qe,{onClick:s,children:[m.jsx(Ye,{icon:r7,fixedWidth:!0,className:"me-1"})," Edit"]}),m.jsxs(Qe,{disabled:!l||!l.canAddItemWithName(e.tag),onClick:()=>l==null?void 0:l.addItemToCompare({name:e.tag,query:e.tag,style:n.stylesForKey(e.tag)}),children:[m.jsx(Ye,{icon:mb,fixedWidth:!0})," Compare visits"]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{className:"dropdown-item--danger",onClick:a,children:[m.jsx(Ye,{icon:VY,fixedWidth:!0,className:"me-1"})," Delete tag"]})]})}),m.jsx(r,{tag:e.tag,toggle:s,isOpen:o}),m.jsx(t,{tag:e.tag,toggle:a,isOpen:i})]})},ETe=Or(Pq,["DeleteTagConfirmModal","EditTagModal","ColorGenerator"]),jTe=(e,t)=>{e.factory("TagsSelector",hTe),e.serviceFactory("DeleteTagConfirmModal",()=>oTe),e.decorator("DeleteTagConfirmModal",t(["tagDelete"],["deleteTag","tagDeleted"])),e.factory("EditTagModal",sTe),e.decorator("EditTagModal",t(["tagEdit"],["editTag","tagEdited"])),e.factory("TagsTableRow",ETe),e.factory("TagsTable",PTe),e.factory("TagsList",OTe),e.decorator("TagsList",t(["tagsList","mercureInfo"],["filterTags","createNewVisits","loadMercureInfo"])),e.serviceFactory("tagEditReducerCreator",yTe,"editTag"),e.serviceFactory("tagEditReducer",r=>r.reducer,"tagEditReducerCreator"),e.serviceFactory("tagDeleteReducerCreator",mTe,"apiClientFactory"),e.serviceFactory("tagDeleteReducer",r=>r.reducer,"tagDeleteReducerCreator"),e.serviceFactory("tagsListReducerCreator",xTe,"listTags","createShortUrl"),e.serviceFactory("tagsListReducer",r=>r.reducer,"tagsListReducerCreator"),e.serviceFactory("listTags",wTe,"apiClientFactory"),e.serviceFactory("filterTags",()=>Sq),e.serviceFactory("deleteTag",r=>r.deleteTag,"tagDeleteReducerCreator"),e.serviceFactory("tagDeleted",()=>wq),e.serviceFactory("editTag",gTe,"apiClientFactory","ColorGenerator"),e.serviceFactory("tagEdited",()=>xq)},TTe=new TB,ATe=e=>TTe.parse(e),X8=e=>e.toLowerCase().trim();class kTe{constructor(t){fl(this,"colors"),fl(this,"lights");var r;this.storage=t,this.colors=((r=this.storage)==null?void 0:r.getTagColors())??{},this.lights={}}getColorForKey(t){const r=X8(t);return this.colors[r]||this.setColorForKey(r,Cje())}setColorForKey(t,r){var n;const i=X8(t);return this.colors[i]=r,(n=this.storage)==null||n.storeTagColors(this.colors),r}stylesForKey(t){const r=this.getColorForKey(t);return{backgroundColor:r,color:this.isLightColor(r)?"#222":"#fff"}}isLightColor(t){const r=t.substring(1);return this.lights[r]===void 0&&(this.lights[r]=YV(r)),this.lights[r]}}const Eq=({document:e},t,r)=>{const n=e.createElement("a");n.setAttribute("href",t),n.setAttribute("download",r),n.style.visibility="hidden",e.body.appendChild(n),n.click(),e.body.removeChild(n)},NTe=(e,t,r)=>{const n=new Blob([t],{type:"text/csv;charset=utf-8;"}),i=URL.createObjectURL(n);Eq(e,i,r)};class RTe{constructor(t,r){this.fetch=t,this.window=r}async saveImage(t,r){const n=await this.fetch(t).then(a=>a.blob()),i=URL.createObjectURL(n);Eq(this.window,i,r)}}class MTe{constructor(t,r){fl(this,"exportVisits",(n,i)=>{i.length&&this.exportCsv(n,i)}),fl(this,"exportShortUrls",n=>{n.length&&this.exportCsv("short_urls.csv",n)}),fl(this,"exportCsv",(n,i)=>{const a=this.jsonToCsv(i);NTe(this.window,a,n)}),this.window=t,this.jsonToCsv=r}}function LTe(e){e.constant("window",window),e.constant("fetch",window.fetch.bind(window)),e.service("ImageDownloader",RTe,"fetch","window"),e.service("ColorGenerator",kTe,"TagColorsStorage"),e.constant("jsonToCsv",ATe),e.service("ReportExporter",MTe,"window","jsonToCsv"),e.serviceFactory("useTimeoutToggle",()=>Pb)}const ev=({visits:e,shortUrl:t,children:r,title:n})=>m.jsx("header",{children:m.jsxs(Ji,{body:!0,children:[m.jsxs("h2",{className:"d-flex justify-content-between align-items-center mb-0",children:[m.jsx(O_,{}),m.jsx("span",{className:"text-center d-none d-sm-block",children:m.jsx("small",{children:n})}),m.jsxs("span",{className:"badge badge-main ms-3",children:["Visits:"," ",m.jsx(GV,{visitsCount:e.length,shortUrl:t})]})]}),m.jsx("h3",{className:"text-center d-block d-sm-none mb-0 mt-3",children:m.jsx("small",{children:n})}),r&&m.jsx("div",{className:"mt-md-2",children:r})]})}),E_=({children:e,className:t})=>m.jsx("div",{className:Me("d-flex justify-content-between align-items-center",t),children:e}),jq=({title:e,footer:t,children:r})=>m.jsxs(Ji,{role:"document",children:[m.jsx(Dm,{className:"chart-card__header",children:e}),m.jsx(Lm,{children:r}),t&&m.jsx(yF,{className:"chart-card__footer--sticky",children:t})]}),Tq=$.createContext(null),{Provider:d4e}=Tq,a3=e=>{const t=$.useContext(Tq)??void 0,r=$.useMemo(()=>t?{}:{width:"100%",height:e},[e,t]);return{ChartWrapper:t?$.Fragment:rme,dimensions:t,wrapperDimensions:r}},Aq={color:"white",background:"rgb(0 0 0 / .9)",border:"none",borderRadius:"5px"},DTe={marginBottom:"5px",fontWeight:"bold"},kq={contentStyle:Aq,labelStyle:DTe,itemStyle:{padding:0}},Q8=["#97BBCD","#F7464A","#46BFBD","#FDB45C","#949FB1","#57A773","#414066","#08B2E3","#B6C454","#DCDCDC","#463730"],Nq=e=>Q8[e%Q8.length],ib=()=>Bm()?"#46e587":"#1DAA58",ITe=()=>Bm()?"rgba(70, 229, 135, 0.4)":"rgba(29, 170, 88, 0.4)",$Te=({chartData:e,showNumbers:t})=>m.jsx("ul",{className:"doughnut-chart-legend",children:e.map(({name:r,color:n,value:i})=>m.jsxs("li",{className:"doughnut-chart-legend__item d-flex",children:[m.jsx("div",{className:"doughnut-chart-legend__item-color",style:{backgroundColor:n}}),m.jsxs("small",{className:"doughnut-chart-legend__item-text flex-fill",children:[r,t&&m.jsxs("b",{children:[" (",jr(i),")"]})]})]},r))}),J8=e=>$.useMemo(()=>Object.entries(e).map(([t,r],n)=>({name:t,value:r,color:Nq(n)})),[e]),FTe=({stats:e,prevStats:t,showNumbersInLegend:r})=>{const n=J8(e),i=J8(t),a=i.length>0,o=Bm()?Sae:xae,{ChartWrapper:s,dimensions:u,wrapperDimensions:l}=a3(300);return m.jsxs("div",{className:"row align-items-center",children:[m.jsx("div",{className:"col-sm-12 col-md-7",children:m.jsx("div",{style:l,children:m.jsx(s,{children:m.jsxs(PCe,{...u,children:[m.jsx(Vi,{formatter:jr,contentStyle:Aq,itemStyle:{color:"white"}}),m.jsx(co,{data:n,dataKey:"value",nameKey:"name",startAngle:360,endAngle:0,outerRadius:"100%",innerRadius:a?"65%":"50%",animationBegin:0,children:n.map((h,p)=>m.jsx(ll,{fill:h.color,stroke:o},`${h.name}-${p}`))}),a&&m.jsx(co,{data:i,dataKey:"value",nameKey:"name",startAngle:360,endAngle:0,outerRadius:"55%",innerRadius:"20%",animationBegin:0,stroke:o,fill:ib()})]})})})}),m.jsx("div",{className:"col-sm-12 col-md-5",children:m.jsx($Te,{chartData:n,showNumbers:r})})]})},e$=({title:e,...t})=>{const[r,n]=Vt(!1);return m.jsx(jq,{title:m.jsxs(E_,{children:[e,m.jsx("div",{children:m.jsx(Jo,{checked:r,onChange:n,children:"Show numbers"})})]}),children:m.jsx(FTe,{...t,showNumbersInLegend:r})})},BTe=$.forwardRef(({visitsGroups:e},t)=>{const r=$.useMemo(()=>Object.entries(e),[e]);return r.length===0?null:m.jsx("ul",{className:"list-unstyled mb-0 mt-2 d-flex flex-wrap justify-content-center gap-3",ref:t,children:r.map(([n,i],a)=>m.jsxs("li",{className:"d-inline",children:[m.jsx(vq,{color:Rq(i)}),m.jsxs("strong",{children:[n," (",jr(i.length),")"]})]},`${n}${a}`))})}),UTe={monthly:"Month",weekly:"Week",daily:"Day",hourly:"Hour"},zTe={hourly:e=>({hours:e}),daily:e=>({days:e}),weekly:e=>({weeks:e}),monthly:e=>({months:e})},VTe={hourly:Use,daily:Lb,weekly:Bse,monthly:Ky},o3={hourly:e=>Yy(e,"yyyy-MM-dd HH:00"),daily:e=>ol(e),weekly(e){const t=ol($p(e)),r=ol(Yse(e));return`${t} - ${r}`},monthly:e=>Yy(e,"yyyy-MM")},qTe=e=>{var t;const r=Object.values(e).filter(o=>o.length>0);if(r.length===0)return"monthly";const n=new Date,i=r.map(o=>gl(o[o.length-1].date)),a=vB(i);return((t=[[()=>Lb(n,a)<=2,"hourly"],[()=>Ky(n,a)<=1,"daily"],[()=>Ky(n,a)<=6,"weekly"]].find(([o])=>o()))==null?void 0:t[1])??"monthly"},WTe=(e,t)=>Object.keys(t).reduce((r,n)=>(r[n]=aB(t[n],i=>o3[e](gl(i.date))),r),{}),HTe=(e,t)=>t.reduce((r,n)=>{const i=o3[e](gl(n.date));return r[i]=r[i]??[],r[i].push(n),r},{}),GTe=(e,t)=>{const r=Object.values(t).filter(h=>h.length>0).map(h=>[...h].reverse());if(r.length===0)return[];const n=VTe[e],i=o3[e],a=zTe[e],o=r.flat(),s=gl(o[0].date),u=gl(o[o.length-1].date),l=n(u,s)||1;return[{formattedDate:i(s),date:s},...zA(l,h=>{const p=Mse(s,a(h));return{formattedDate:i(p),date:p}})]},Rq=e=>{if(e.color)return e.color;const t={main:Mp,highlighted:jP,previous:ib()};return e.type?t[e.type]:Mp},t$=(e,t)=>$.useMemo(()=>Object.values(e).find(r=>r.type===t)??[],[e,t]),KTe=(e,t,r)=>{const n=t$(e,"main"),i=t$(e,"highlighted"),a=$.useMemo(()=>r?HTe(t,n):{},[r,t,n]),o=$.useCallback((s,{payload:u})=>{const l=a[u.formattedDate]??[];r==null||r(l===i?[]:l)},[a,i,r]);return r&&{cursor:"pointer",onClick:o}},r$=e=>{var t,r;return(r=(t=e.activePayload)==null?void 0:t[0])==null?void 0:r.payload},Mq=({visitsGroups:e,setSelectedVisits:t,matchMedia:r,onDateRangeChange:n})=>{const[i,a]=$.useState(qTe(e)),o=qA(767,r??window.matchMedia),s=$.useMemo(()=>{const X=WTe(i,e),ee=Object.keys(X);return GTe(i,e).map(({formattedDate:re,date:U})=>({date:U,formattedDate:re,...ee.reduce((I,F)=>(I[F]=X[F][re]??0,I),{})}))},[i,e]),u=KTe(e,i,t),[l,h,,p]=Vt(),g=vl(),_=$.useId(),w=vl(),[b,x]=$.useState(o?300:400);$.useLayoutEffect(()=>{if(!l)return x(o?300:400),()=>{};const X=new ResizeObserver(()=>{const{height:ee}=g.current.getBoundingClientRect(),{height:re}=w.current.getBoundingClientRect();x(ee-re-48)});return X.observe(g.current),X.observe(w.current),()=>X.disconnect()},[g,l,o,w]),mPe("Escape",p,l);const{ChartWrapper:S,dimensions:O,wrapperDimensions:E}=a3(b),[j,A]=$.useState(),[T,M]=$.useState(),q=$.useCallback(()=>{A(void 0),M(void 0)},[]),W=$.useCallback((X,ee)=>{const re=r$(X);ee.button===0&&re&&A(re)},[]),H=$.useCallback(X=>{const ee=r$(X);j&&ee&&M(ee)},[j]),K=$.useCallback(()=>{if(!j||!T)return;const X=[j.date,T.date],ee=Ise(X),re=vB(X);q(),n({startDate:ee,endDate:re})},[n,q,T,j]),[te,se]=Vt();return m.jsxs(Ji,{className:Me({"fixed-top fixed-bottom":l}),"data-testid":"line-chart-card",children:[m.jsxs(Dm,{role:"heading","aria-level":4,className:"d-flex justify-content-between align-items-center",children:["Visits over time",m.jsxs("div",{className:"d-flex align-content-center gap-1",children:[m.jsx(Rt,{"aria-label":l?"Collapse":"Expand","aria-expanded":l,"aria-controls":_,size:"sm",color:"link",onClick:h,children:m.jsx(Ye,{icon:l?wY:bZ})}),m.jsxs(Ta,{isOpen:te,toggle:se,className:"d-flex align-items-center",children:[m.jsx(os,{caret:!0,color:"link",className:"btn-sm p-0",children:"Group by"}),m.jsx(Cl,{end:!0,children:te&&Object.entries(UTe).map(([X,ee])=>m.jsx(Qe,{active:i===X,onClick:()=>a(X),children:ee},X))})]})]})]}),m.jsxs(Lm,{innerRef:g,id:_,children:[m.jsx(S,{...E,children:m.jsxs(CCe,{className:"user-select-none",data:s,...O,onMouseDown:W,onMouseMove:H,onMouseUp:K,children:[m.jsx(Nd,{dataKey:"formattedDate"}),m.jsx(Rd,{tickFormatter:jr,yAxisId:"1"}),m.jsx(Vi,{formatter:jr,...kq}),m.jsx(RA,{strokeOpacity:Bm()?.1:.9}),Object.entries(e).map(([X,ee])=>ee.length>0&&m.jsx(kd,{yAxisId:"1",dataKey:X,type:"monotone",stroke:Rq(ee),strokeWidth:2,activeDot:ee.type==="previous"?void 0:u,strokeDasharray:ee.type==="previous"?"8 3":void 0},X)),j&&T&&m.jsx(Xm,{yAxisId:"1",x1:j.formattedDate,x2:T.formattedDate})]})}),m.jsx(BTe,{visitsGroups:e,ref:w})]})]})},YTe=({toggleClassName:e,ranges:t,value:r,setValue:n})=>{const[i,a]=Vt();return m.jsxs(Ta,{isOpen:i,toggle:a,children:[m.jsx(os,{caret:!0,color:"link",className:e,children:"Paginate"}),m.jsx(Cl,{end:!0,children:i&&m.jsxs(m.Fragment,{children:[t.map(o=>m.jsxs(Qe,{active:o===r,onClick:()=>n(o),children:[m.jsx("b",{children:o})," items per page"]},o)),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{disabled:r===1/0,onClick:()=>n(1/0),children:m.jsx("i",{children:"Clear pagination"})})]})})]})},n$=e=>e.startsWith("hidden_"),ZTe=({stats:e,prevStats:t,highlightedStats:r,highlightedLabel:n,max:i,onClick:a})=>{const o=$.useMemo(()=>Object.entries(e).map(([p,g])=>{const _=(r==null?void 0:r[p])??0,w=(t==null?void 0:t[p])??0,b=n$(p);return{name:p,amount:Math.max(g,w),nonHighlightedAmount:b?null:g-_,highlightedAmount:b?null:_,prevAmount:b?null:w}}),[e,t,r]),s=$.useMemo(()=>{const p=o.reduce((g,{name:_})=>g>_.length?g:_.length,0);return Math.min(150,p*7)},[o]),{ChartWrapper:u,dimensions:l,wrapperDimensions:h}=a3(Math.max(300,o.length*(t?44:22)));return m.jsx(u,{...h,children:m.jsxs(ECe,{layout:"vertical",data:o,barCategoryGap:3,...l,children:[m.jsx(Nd,{type:"number",dataKey:"amount",tickFormatter:jr,domain:i?[0,i]:void 0}),m.jsx(Rd,{type:"category",dataKey:"name",width:s,interval:0,style:{fontSize:".8rem"},tickFormatter:p=>n$(p)?"":p}),m.jsx(RA,{strokeOpacity:Bm()?.05:.9}),m.jsx(Vi,{filterNull:!0,...kq,formatter:(p,g)=>[jr(p),g==="highlightedAmount"?n:g==="prevAmount"?"Previous period":r?"Non-selected":"Visits"]}),m.jsx(Ko,{dataKey:"nonHighlightedAmount",stackId:"main",cursor:"pointer",fill:Mp,onClick:({name:p})=>a==null?void 0:a(p),children:o.map(p=>m.jsx(ll,{fill:_ae,stroke:Mp,strokeWidth:2},p.name))}),r&&m.jsx(Ko,{dataKey:"highlightedAmount",stackId:"main",cursor:"pointer",fill:jP,onClick:({name:p})=>a==null?void 0:a(p),children:o.map(p=>m.jsx(ll,{fill:wae,stroke:jP,strokeWidth:2},p.name))}),t&&m.jsx(Ko,{dataKey:"prevAmount",fill:ib(),children:o.map(p=>m.jsx(ll,{fill:ITe(),stroke:ib(),strokeWidth:2},p.name))})]})})},XTe=e=>typeof e=="string"?e.toLowerCase():e,QTe=([e])=>e,JTe=([,e])=>e,Gg=({stats:e,prevStats:t,highlightedStats:r,title:n,sortingItems:i,extraHeaderContent:a,withPagination:o=!0,...s})=>{const[u,l]=$.useState({}),[h,p]=$.useState(1),[g,_]=$.useState(50),w=$.useCallback((q,W)=>{const H=Object.entries(q),K=u.field?Xoe(H,([te,se])=>XTe(u.field===Object.keys(W)[0]?te:se)):H;return!u.dir||u.dir==="ASC"?K:[...K].reverse()},[u.dir,u.field]),b=$.useCallback(q=>{const W=q[h-1];if(h[`hidden_${K}`,0])]},[h]),x=$.useCallback(q=>m.jsx(i3,{currentPage:h,pagesCount:q,onPageChange:p}),[h]),S=$.useCallback((q,W,H,K)=>{const te=w(q,W),se=te.map(QTe),X=H&&Object.entries({...iR(se,se.map(()=>0)),...H}),ee=K&&Object.entries({...iR(se,se.map(()=>0)),...K});if(te.length<=g)return{currentPageStats:Object.fromEntries(te),currentPageHighlightedStats:X&&Object.fromEntries(X),currentPagePrevStats:ee&&Object.fromEntries(ee)};const re=bf(te,g),U=X&&bf(X,g),I=ee&&bf(ee,g);return{currentPageStats:Object.fromEntries(b(re)),currentPageHighlightedStats:U&&Object.fromEntries(b(U)),currentPagePrevStats:I&&Object.fromEntries(b(I)),pagination:x(re.length),max:DPe(Math.max(...te.map(JTe)))}},[b,w,g,x]),{currentPageStats:O,currentPagePrevStats:E,currentPageHighlightedStats:j,pagination:A,max:T}=$.useMemo(()=>S(e,i,r&&Object.keys(r).length>0?r:void 0,t&&Object.keys(t).length>0?t:void 0),[S,r,t,i,e]),M=$.useMemo(()=>Object.keys(O),[O]);return m.jsx(jq,{title:m.jsxs(E_,{children:[n,m.jsxs("div",{className:"d-flex gap-3",children:[a==null?void 0:a(A?M:void 0),o&&Object.keys(e).length>50&&m.jsx(YTe,{toggleClassName:"btn-sm p-0",ranges:[50,100,200,500],value:g,setValue:q=>{_(q),p(1)}}),m.jsx(Fm,{isButton:!1,right:!0,items:i,order:u,onChange:(q,W)=>{l({field:q,dir:W}),p(1)}})]})]}),footer:A,children:m.jsx(ZTe,{stats:O,prevStats:E,highlightedStats:j,max:T,...s})})},s3=e=>e.type!==void 0,eAe=e=>e.type!==void 0,tAe=e=>{const t=oB(e,r=>s3(r.visit)?"orphanVisits":"nonOrphanVisits");return{orphanVisits:[],nonOrphanVisits:[],...t}},Lq=(e,{shortCode:t,domain:r},{endDate:n,startDate:i}={})=>e.filter(({shortUrl:a,visit:o})=>a&&xp(a,t,r)&&Jm(o.date,i,n)),Dq=(e,t,{endDate:r,startDate:n}={})=>e.filter(({shortUrl:i,visit:a})=>i&&jPe(i,t)&&Jm(a.date,n,r)),Iq=(e,t,{endDate:r,startDate:n}={})=>e.filter(({shortUrl:i,visit:a})=>(i==null?void 0:i.tags.includes(t))&&Jm(a.date,n,r)),Kg=(e,t)=>aB(e,r=>r[t]),rAe=e=>{const t=((e==null?void 0:e.startDate)&&xl(e==null?void 0:e.startDate))??void 0,r=((e==null?void 0:e.endDate)&&xl(e==null?void 0:e.endDate))??void 0;return{startDate:t,endDate:r}},yj=({filter:e,dateRange:t})=>{const{startDate:r,endDate:n}=rAe(t),i=(e==null?void 0:e.excludeBots)||void 0;return{startDate:r,endDate:n,excludeBots:i}},nAe=e=>sq(e.dateRange),iAe=({dateRange:e,...t})=>({...t,dateRange:Gje(e)}),i$=(e,t)=>{if(!(!t||!(e in t)))return t[e]&&xl(t[e])||""},$q=()=>{const e=mo(),t=bd(),{startDate:r,endDate:n,orphanVisitsType:i,excludeBots:a,loadPrevInterval:o,...s}=t,u=$.useMemo(()=>({dateRange:r!=null||n!=null?nq(r,n):void 0,visitsFilter:{orphanVisitsType:i,excludeBots:a!==void 0?a==="true":void 0},loadPrevInterval:o!==void 0?o==="true":void 0}),[n,a,o,i,r]),l=$.useCallback(h=>{const{dateRange:p,visitsFilter:g={},loadPrevInterval:_}=Mb(u,h),{excludeBots:w,orphanVisitsType:b}=g,x={...s,startDate:i$("startDate",p),endDate:i$("endDate",p),excludeBots:w===void 0?void 0:hj(w),orphanVisitsType:b,loadPrevInterval:_===void 0?void 0:hj(_)},S=mT(x),O=S?`?${S}`:"";e(O,{replace:!0,relative:"route"})},[u,e,s]);return[u,l]},aAe=()=>m.jsx(HCe,{attribution:'© OpenStreetMap contributors',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),oAe=e=>{if(e.length===0)return{};if(e.length>1)return{bounds:e.map(({latLong:r})=>r)};const[{latLong:t}]=e;return{zoom:10,center:t}},Fq=({toggle:e,isOpen:t,title:r,locations:n=[]})=>m.jsx(ea,{toggle:e,isOpen:t,className:"map-modal__modal",contentClassName:"map-modal__modal-content",children:m.jsxs(ss,{className:"map-modal__modal-body",children:[m.jsxs(E_,{className:"map-modal__modal-title fs-4",children:[r,m.jsx("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:e})]}),m.jsxs(VCe,{...oAe(n),children:[m.jsx(aAe,{}),n.map(({cityName:i,latLong:a,count:o},s)=>m.jsx(qCe,{position:a,children:m.jsxs(WCe,{children:[m.jsx("b",{children:o})," visit",o>1?"s":""," from ",m.jsx("b",{children:i})]})},s))]})]})}),sAe=({modalTitle:e,activeCities:t,locations:r=[]})=>{const[n,,i,a]=Vt(),[o,s]=Vt(),[u,l]=$.useState([]),h=$.useCallback(p=>{l(p?r.filter(p):r),i()},[r,i]);return m.jsxs(m.Fragment,{children:[!t&&m.jsx(Rt,{color:"link",className:"p-0",onClick:()=>h(),"aria-label":"Show in map",title:"Show in map",children:m.jsx(Ye,{icon:KO})}),t&&m.jsxs(Ta,{isOpen:o,toggle:s,children:[m.jsx(os,{color:"link",className:"p-0",title:"Show in map",children:m.jsx(Ye,{icon:KO})}),m.jsx(Cl,{end:!0,children:o&&m.jsxs(m.Fragment,{children:[m.jsx(Qe,{onClick:()=>h(),children:"Show all locations"}),m.jsx(Qe,{onClick:()=>h(({cityName:p})=>t.includes(p)),children:"Show locations in current page"})]})})]}),m.jsx(Fq,{toggle:a,isOpen:n,title:e,locations:u})]})},Bq=({onChange:e,selected:t={},className:r,isOrphanVisits:n=!1,withPrevInterval:i=!1,disabled:a})=>{const{orphanVisitsType:o,excludeBots:s=!1,loadPrevInterval:u=!1}=t,l=g=>({active:o===g,onClick:()=>e({...t,orphanVisitsType:g===o?void 0:g})}),h=$.useCallback(()=>e({...t,excludeBots:!s}),[s,e,t]),p=$.useCallback(()=>e({...t,loadPrevInterval:!u}),[u,e,t]);return m.jsxs(ls,{disabled:a,text:"More",dropdownClassName:r,end:!0,minWidth:250,children:[i&&m.jsxs(m.Fragment,{children:[m.jsx(Qe,{active:u,onClick:p,children:"Compare with previous period"}),m.jsx(Qe,{divider:!0,tag:"hr"})]}),m.jsx(Qe,{header:!0,"aria-hidden":!0,children:"Bots:"}),m.jsx(Qe,{active:s,onClick:h,children:"Exclude potential bots"}),n&&m.jsxs(m.Fragment,{children:[m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{header:!0,"aria-hidden":!0,children:"Orphan visits type:"}),m.jsx(Qe,{...l("base_url"),children:"Base URL"}),m.jsx(Qe,{...l("invalid_short_url"),children:"Invalid short URL"}),m.jsx(Qe,{...l("regular_404"),children:"Regular 404"})]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{disabled:t.excludeBots===void 0&&t.loadPrevInterval===void 0&&t.orphanVisitsType===void 0,onClick:()=>e({excludeBots:void 0,loadPrevInterval:void 0,orphanVisitsType:void 0}),children:m.jsx("i",{children:"Reset to defaults"})})]})},Uq=({info:e})=>{const{loading:t,errorData:r,progress:n}=e;return m.jsxs(m.Fragment,{children:[t&&n===null&&m.jsx(Bu,{loading:!0}),t&&n!==null&&m.jsxs(Bu,{loading:!0,children:["This is going to take a while... :S",m.jsx(SF,{value:n,striped:n>=100,className:"mt-3"})]}),r&&m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:r,fallbackMessage:"An error occurred while loading visits :("})})]})},fy=({children:e,showFallback:t})=>m.jsxs(m.Fragment,{children:[t&&m.jsx(Bu,{className:"mt-3",children:"There are no visits matching current filter"}),!t&&m.jsx(m.Fragment,{children:e})]}),lAe=({visitsDeletion:e,deleteVisits:t})=>{const{deleting:r}=e,[n,,i]=Vt();return m.jsx(sr,{title:m.jsx("span",{className:"text-danger fw-bold",children:"Danger zone"}),children:m.jsxs(E_,{children:[m.jsxs("dl",{className:"m-0 me-3",children:[m.jsx("dt",{children:"Delete visits."}),m.jsxs("dd",{className:"m-0",children:["This will delete ",m.jsx("b",{children:"all"})," visits, not only the ones matching current filter."]})]}),!n&&m.jsx(Rt,{color:"danger",className:"indivisible",onClick:i,children:"Delete visits"}),n&&m.jsxs(Rt,{color:"danger",disabled:r,className:"indivisible",onClick:t,innerRef:a=>{a==null||a.focus()},children:[!r&&m.jsx(m.Fragment,{children:"Click again to confirm"}),r&&m.jsx(m.Fragment,{children:"Deleting..."})]})]})})},Yg="Others",uAe=["Android Browser","Chrome","Chromium","Firefox","Internet Explorer","Microsoft Edge","Opera","Safari","Samsung Internet for Android","Vivaldi","WeChat"],cAe=e=>{if(!_u(e))return{browser:Yg,os:Yg};const{browser:{name:t},os:{name:r}}=QCe.parse(e);return{os:r??Yg,browser:t&&uAe.includes(t)?t:Yg}},fAe=e=>{var t;return _u(e)?((t=e.split("/")[e.includes("://")?2:0])==null?void 0:t.split(":")[0])??"":"Direct"},zq=(e,t)=>e[t]!==void 0,a$=e=>typeof e=="number"?e:e?parseFloat(e):0,dAe=(e,{os:t})=>{e[t]=(e[t]||0)+1},hAe=(e,{browser:t})=>{e[t]=(e[t]||0)+1},pAe=(e,{referer:t})=>{e[t]=(e[t]||0)+1},Vq=e=>(t,r)=>{const n=zq(r,e)?r[e]:"Unknown";t[n]=(t[n]||0)+1},mAe=Vq("country"),vAe=Vq("city"),gAe=(e,t)=>{if(!zq(t,"city")||t.city==="Unknown")return;const{city:r,latitude:n,longitude:i}=t,a=e[r]||{cityName:r,count:0,latLong:[a$(n),a$(i)]};a.count+=1,e[r]=a},yAe=(e,t)=>{if(!eAe(t))return;const{visitedUrl:r}=t;e[r]=(e[r]||0)+1},bj=e=>e.reduce((t,r)=>(dAe(t.os,r),hAe(t.browsers,r),pAe(t.referrers,r),mAe(t.countries,r),vAe(t.cities,r),gAe(t.citiesForMap,r),yAe(t.visitedUrls,r),t),{os:{},browsers:{},referrers:{},countries:{},cities:{},citiesForMap:{},visitedUrls:{}}),ab=e=>e.map(t=>{const{userAgent:r,date:n,referer:i,visitLocation:a,potentialBot:o}=t;return{date:n,potentialBot:o,userAgent:r,...cAe(r),referer:fAe(i),country:(a==null?void 0:a.countryName)||"Unknown",city:(a==null?void 0:a.cityName)||"Unknown",latitude:a==null?void 0:a.latitude,longitude:a==null?void 0:a.longitude,visitedUrl:t.visitedUrl,type:s3(t)?t.type:void 0}}),bAe=Object.freeze(Object.defineProperty({__proto__:null,normalizeVisits:ab,processStatsFromVisits:bj},Symbol.toStringTag,{value:"Module"})),ap=20,_Ae=({browser:e,os:t,referer:r,country:n,city:i,userAgent:a,...o},s,u)=>{const l=u?a:`${n} ${i}`;return`${e} ${t} ${r} ${l} ${o.visitedUrl}`.toLowerCase().includes(s.toLowerCase())},wAe=(e,t,r)=>t.filter(n=>_Ae(n,e,r)),xAe=(e,t)=>MF(t,e),SAe=({visits:e,searchTerm:t,order:r,searchInRawUserAgent:n})=>{const i=t?wAe(t,e,n):[...e],a=xAe(r,i),o=a.length;return{visitsGroups:bf(a,ap),total:o}},Ka="visits-table__header-cell visits-table__sticky",OAe=({visits:e,selectedVisits:t=[],setSelectedVisits:r,matchMedia:n=window.matchMedia})=>{var i;const a=qA(767,n),[o,s]=$.useState(),u=$.useCallback(q=>{s(q),x(1),r([])},[r]),[l,h]=$.useState({}),[p,g]=Vt(),_=$.useCallback(()=>{g(),h({})},[g]),w=$.useMemo(()=>SAe({visits:e,searchTerm:o,order:l,searchInRawUserAgent:p}),[e,o,l,p]),[b,x]=$.useState(1),S=b*ap,O=S-ap,E=$.useMemo(()=>{var q,W;return!!((W=(q=w.visitsGroups[b-1])==null?void 0:q[0])!=null&&W.visitedUrl)},[b,w.visitsGroups]),j=6+Number(E)+(p?1:2),A=w.total>0,T=q=>h({field:q,dir:$m(q,l.field,l.dir)}),M=q=>m.jsx(Op,{currentOrder:l,field:q,className:"visits-table__header-icon"});return m.jsx(sr,{className:"mt-3",bodyClassName:"p-0 pb-1",title:m.jsxs("div",{className:"d-flex justify-content-between align-items-center",children:["Visits list",m.jsx(Jo,{checked:p,onChange:_,children:"Show user agent"})]}),children:m.jsx("div",{className:"table-responsive-md",children:m.jsxs("table",{className:Me("table table-sm position-relative m-0 visits-table",{"table-hover":A}),children:[m.jsxs("thead",{className:"visits-table__header",children:[m.jsxs("tr",{children:[m.jsxs("th",{className:`${Ka} text-center`,onClick:()=>r(t.length0})})]}),m.jsxs("th",{className:`${Ka} text-center`,onClick:()=>T("potentialBot"),children:[m.jsx("span",{className:"sr-only",children:"Is bot"}),m.jsx(Ye,{icon:x4}),M("potentialBot")]}),m.jsxs("th",{className:Ka,onClick:()=>T("date"),children:["Date",M("date")]}),m.jsxs("th",{className:Ka,onClick:()=>T("country"),children:["Country",M("country")]}),m.jsxs("th",{className:Ka,onClick:()=>T("city"),children:["City",M("city")]}),p?m.jsxs("th",{className:Ka,onClick:()=>T("userAgent"),children:["User agent",M("userAgent")]}):m.jsxs(m.Fragment,{children:[m.jsxs("th",{className:Ka,onClick:()=>T("browser"),children:["Browser",M("browser")]}),m.jsxs("th",{className:Ka,onClick:()=>T("os"),children:["OS",M("os")]})]}),m.jsxs("th",{className:Ka,onClick:()=>T("referer"),children:["Referrer",M("referer")]}),E&&m.jsxs("th",{className:Ka,onClick:()=>T("visitedUrl"),children:["Visited URL",M("visitedUrl")]})]}),m.jsx("tr",{children:m.jsx("td",{colSpan:j,className:"p-0",children:m.jsx(Cb,{noBorder:!0,large:!1,onChange:u})})})]}),m.jsxs("tbody",{children:[!A&&m.jsx("tr",{children:m.jsx("td",{colSpan:j,className:"text-center",children:"There are no visits matching current filter"})}),(i=w.visitsGroups[b-1])==null?void 0:i.map((q,W)=>{const H=t.includes(q);return m.jsxs("tr",{style:{cursor:"pointer"},className:Me({"table-active":H}),onClick:()=>r(H?t.filter(K=>K!==q):[...t,q]),children:[m.jsx("td",{className:"text-center",children:H&&m.jsx(Ye,{icon:Lu,className:"text-primary"})}),m.jsx("td",{className:"text-center",children:q.potentialBot&&m.jsxs(m.Fragment,{children:[m.jsx(Ye,{icon:x4,id:`botIcon${W}`}),m.jsx(ta,{placement:"right",target:`botIcon${W}`,children:"Potentially a visit from a bot or crawler"})]})}),m.jsx("td",{children:m.jsx(tb,{date:q.date})}),m.jsx("td",{children:q.country}),m.jsx("td",{children:q.city}),p?m.jsx("td",{children:q.userAgent}):m.jsxs(m.Fragment,{children:[m.jsx("td",{children:q.browser}),m.jsx("td",{children:q.os})]}),m.jsx("td",{children:q.referer}),q.visitedUrl&&m.jsx("td",{children:q.visitedUrl})]},W)})]}),w.total>ap&&m.jsx("tfoot",{children:m.jsx("tr",{children:m.jsx("td",{colSpan:j,className:"visits-table__footer-cell visits-table__sticky",children:m.jsxs("div",{className:"d-flex flex-column flex-md-row justify-content-between align-items-center gap-3 p-2",children:[m.jsx(i3,{pagesCount:Math.ceil(w.total/ap),currentPage:b,onPageChange:x,centered:a}),m.jsxs("div",{children:["Visits ",m.jsx("b",{children:jr(O+1)})," to"," ",m.jsx("b",{children:jr(Math.min(S,w.total))})," of"," ",m.jsx("b",{children:jr(w.total)})]})]})})})})]})})})},el={byTime:{title:"By time",subPath:"by-time",icon:SY},byContext:{title:"By context",subPath:"by-context",icon:$j},byLocation:{title:"By location",subPath:"by-location",icon:KO},list:{title:"List",subPath:"list",icon:Dj},options:{title:"Options",subPath:"options",icon:o7,shouldRender:({deletion:e})=>!!e}};Object.freeze(el);const UO=({display:e})=>e&&m.jsx("div",{className:"mt-3 mx-auto w-75",children:m.jsx(sr,{children:m.jsxs("div",{className:"d-flex gap-2",children:[m.jsx(Ye,{icon:SZ,className:"mt-1"}),m.jsx("i",{children:"Could not calculate previous period because selected one does not have a strictly defined start date."})]})})}),tv=e=>{const{children:t,visitsInfo:r,getVisits:n,cancelGetVisits:i,deletion:a,exportCsv:o,isOrphanVisits:s=!1}=e,{visits:u,prevVisits:l,loading:h,errorData:p,fallbackInterval:g}=r,[{dateRange:_,visitsFilter:w,loadPrevInterval:b},x]=$q(),S=Hr("visits"),[O,E]=$.useState(),j=$.useCallback(({startDate:J,endDate:ce},Y)=>{x({dateRange:{startDate:J??void 0,endDate:ce??void 0}}),E(Y)},[x]),[A,T]=$.useState(g??(S==null?void 0:S.defaultInterval)??"last30Days"),[M,q]=$.useState([]),[W,H]=$.useState(),K=$.useRef(!0),{search:te}=Sn(),se=$.useCallback(J=>J?`../${J}${te}`:te,[te]),X=$.useMemo(()=>ab(u),[u]),ee=$.useMemo(()=>l&&ab(l),[l]),{os:re,browsers:U,referrers:I,countries:F,cities:B,citiesForMap:k,visitedUrls:Z}=$.useMemo(()=>bj(X),[X]),Q=$.useMemo(()=>bj(ee??[]),[ee]),ae=$.useMemo(()=>Object.fromEntries([["Visits",Object.assign(X,{type:"main"})],ee&&["Previous period",Object.assign(ee,{type:"previous"})],M.length>0&&[W??"Selected",Object.assign(M,{type:"highlighted"})]].filter(Boolean)),[W,M,ee,X]),fe=$.useMemo(()=>({...w,excludeBots:w.excludeBots??(S==null?void 0:S.excludeBots),loadPrevInterval:b??(S==null?void 0:S.loadPrevInterval)}),[b,w,S==null?void 0:S.excludeBots,S==null?void 0:S.loadPrevInterval]),de=$.useMemo(()=>Object.values(k),[k]),ve=$.useRef(void 0),D=$.useCallback(J=>{ve.current=void 0,q(J)},[]),z=$.useCallback((J,ce)=>{const Y=`${J}_${ce}`;ve.current===Y?(q([]),H(void 0),ve.current=void 0):(q(X.filter(ue=>ue[J]===ce)),H(ce),ve.current=Y)},[X]);return $.useEffect(()=>i,[i]),$.useEffect(()=>{const J=_??oq(A),{loadPrevInterval:ce,...Y}=fe,ue={doIntervalFallback:K.current,loadPrevInterval:ce};n({dateRange:J,filter:Y},ue),D([]),K.current=!1},[A,_,n,fe,D]),$.useEffect(()=>{g&&A===((S==null?void 0:S.defaultInterval)??"last30Days")&&T(g)},[A,g,S==null?void 0:S.defaultInterval]),m.jsxs(m.Fragment,{children:[t,m.jsx("section",{className:"mt-3",children:m.jsxs("div",{className:"row flex-md-row-reverse",children:[m.jsx("div",{className:"col-lg-7 col-xl-6",children:m.jsxs("div",{className:"d-md-flex",children:[m.jsx("div",{className:"flex-grow-1",children:m.jsx(t3,{disabled:h,dateRangeOrInterval:O??_??A,defaultText:"All visits",onDatesChange:j})}),m.jsx(Bq,{disabled:h,className:"ms-0 ms-md-2 mt-3 mt-md-0",isOrphanVisits:s,withPrevInterval:!0,selected:fe,onChange:({loadPrevInterval:J,...ce})=>x({visitsFilter:ce,loadPrevInterval:J})})]})}),u.length>0&&m.jsx("div",{className:"col-lg-5 col-xl-6 mt-3 mt-lg-0",children:m.jsxs("div",{className:"d-flex",children:[m.jsx(qV,{className:"btn-md-block",amount:X.length,onClick:()=>o(X)}),m.jsxs(Rt,{outline:!0,disabled:M.length===0,className:"btn-md-block ms-2",onClick:()=>D([]),children:["Clear selection ",M.length>0&&m.jsxs(m.Fragment,{children:["(",jr(M.length),")"]})]})]})})]})}),m.jsxs("section",{className:"mt-3",children:[m.jsx(Uq,{info:r}),!h&&!p&&m.jsxs(m.Fragment,{children:[m.jsx(RF,{fill:!0,children:Object.values(el).map(({title:J,icon:ce,subPath:Y,shouldRender:ue},he)=>!ue||ue(e)?m.jsxs(ff,{to:se(Y),replace:!0,children:[m.jsx(Ye,{icon:ce}),m.jsx("span",{className:"ms-2 d-none d-lg-inline",children:J})]},he):void 0).filter(Boolean)}),m.jsx(Qa,{children:m.jsxs(cb,{children:[m.jsx(St,{path:el.byTime.subPath,element:m.jsxs(fy,{showFallback:u.length===0,children:[m.jsx("div",{className:"col-12 mt-3","data-testid":"line-chart-container",children:m.jsx(Mq,{visitsGroups:ae,setSelectedVisits:D,onDateRangeChange:j})}),m.jsx(UO,{display:!!fe.loadPrevInterval&&!l})]})}),m.jsx(St,{path:el.byContext.subPath,element:m.jsxs(fy,{showFallback:u.length===0,children:[m.jsx("div",{className:Me("mt-3 col-lg-6",{"col-xl-4":!s}),children:m.jsx(e$,{title:"Operating systems",stats:re,prevStats:Q.os})}),m.jsx("div",{className:Me("mt-3 col-lg-6",{"col-xl-4":!s}),children:m.jsx(e$,{title:"Browsers",stats:U,prevStats:Q.browsers})}),m.jsx("div",{className:Me("mt-3",{"col-xl-4":!s,"col-lg-6":s}),children:m.jsx(Gg,{title:"Referrers",withPagination:!1,stats:I,prevStats:Q.referrers,highlightedStats:Kg(M,"referer"),highlightedLabel:W,sortingItems:{name:"Referrer name",amount:"Visits amount"},onClick:J=>z("referer",J)})}),s&&m.jsx("div",{className:"mt-3 col-lg-6",children:m.jsx(Gg,{title:"Visited URLs",stats:Z,prevStats:Q.visitedUrls,highlightedStats:Kg(M,"visitedUrl"),highlightedLabel:W,sortingItems:{visitedUrl:"Visited URL",amount:"Visits amount"},onClick:J=>z("visitedUrl",J)})}),m.jsx("div",{className:"col-12",children:m.jsx(UO,{display:!!fe.loadPrevInterval&&!l})})]})}),m.jsx(St,{path:el.byLocation.subPath,element:m.jsxs(fy,{showFallback:u.length===0,children:[m.jsx("div",{className:"col-lg-6 mt-3",children:m.jsx(Gg,{title:"Countries",stats:F,prevStats:Q.countries,highlightedStats:Kg(M,"country"),highlightedLabel:W,sortingItems:{name:"Country name",amount:"Visits amount"},onClick:J=>z("country",J)})}),m.jsx("div",{className:"col-lg-6 mt-3",children:m.jsx(Gg,{title:"Cities",stats:B,prevStats:Q.cities,highlightedStats:Kg(M,"city"),highlightedLabel:W,extraHeaderContent:J=>de.length>0&&m.jsx(sAe,{modalTitle:"Cities",locations:de,activeCities:J}),sortingItems:{name:"City name",amount:"Visits amount"},onClick:J=>z("city",J)})}),m.jsx("div",{className:"col-12",children:m.jsx(UO,{display:!!fe.loadPrevInterval&&!l})})]})}),m.jsx(St,{path:el.list.subPath,element:m.jsx("div",{className:"col-12",children:m.jsx(OAe,{visits:X,selectedVisits:M,setSelectedVisits:D})})}),a&&m.jsx(St,{path:el.options.subPath,element:m.jsx("div",{className:"col-12 mt-3",children:m.jsx(lAe,{...a})})}),m.jsx(St,{path:"*",element:m.jsx(Ej,{replace:!0,to:se(el.byTime.subPath)})})]})})]})]})]})},qq=Ra(({getDomainVisits:e,domainVisits:t,cancelGetDomainVisits:r})=>{const{ReportExporter:n}=Sr(qq),{domain:i=""}=md(),[a,o=a]=i.split("_"),s=$.useCallback((l,h)=>e({domain:o,options:h,params:l}),[o,e]),u=$.useCallback(l=>n.exportVisits(`domain_${a}_visits.csv`,l),[a,n]);return m.jsx(tv,{getVisits:s,cancelGetVisits:r,visitsInfo:t,exportCsv:u,children:m.jsx(ev,{visits:t.visits,title:`"${a}" visits`})})},()=>[Dn.visits]),CAe=Or(qq,["ReportExporter"]),Wq=Ra(({getNonOrphanVisits:e,nonOrphanVisits:t,cancelGetNonOrphanVisits:r})=>{const{ReportExporter:n}=Sr(Wq),i=$.useCallback(o=>n.exportVisits("non_orphan_visits.csv",o),[n]),a=$.useCallback((o,s)=>e({options:s,params:o}),[e]);return m.jsx(tv,{getVisits:a,cancelGetVisits:r,visitsInfo:t,exportCsv:i,children:m.jsx(ev,{title:"Non-orphan visits",visits:t.visits})})},()=>[Dn.visits]),PAe=Or(Wq,["ReportExporter"]),Hq=Ra(({getOrphanVisits:e,orphanVisits:t,cancelGetOrphanVisits:r,deleteOrphanVisits:n,orphanVisitsDeletion:i})=>{const a=ho("orphanVisitsDeletion"),{ReportExporter:o}=Sr(Hq),s=$.useCallback(h=>o.exportVisits("orphan_visits.csv",h),[o]),u=$.useCallback((h,p)=>{var g;return e({options:p,params:h,orphanVisitsType:(g=h.filter)==null?void 0:g.orphanVisitsType})},[e]),l=$.useMemo(()=>a?{deleteVisits:n,visitsDeletion:i}:void 0,[n,i,a]);return m.jsx(tv,{getVisits:u,cancelGetVisits:r,visitsInfo:t,exportCsv:s,deletion:l,isOrphanVisits:!0,children:m.jsx(ev,{title:"Orphan visits",visits:t.visits})})},()=>[Dn.orphanVisits]),EAe=Or(Hq,["ReportExporter"]),o$=5e3,jAe=2,TAe=4,AAe=({currentPage:e,pagesCount:t})=>e>=t,kAe=(e,t)=>t*100/e,Gq=({visitsLoader:e,shouldCancel:t,progressChanged:r,batchSize:n})=>{const i=async(o,s)=>Promise.all(s.map(async u=>e({...o,page:u,itemsPerPage:o$}).then(({data:l})=>l))).then(u=>u.flat()),a=async(o,s,u=0)=>{if(t())return[];const l=await i(o,s[u]);return r(kAe(s.length,u+1)),u{const{pagination:s,data:u}=await e({...o,page:1,itemsPerPage:o$});if(AAe(s))return u;const l=ST(jAe,s.pagesCount+1),h=bf(l,n);return s.pagesCount-1>n&&r(0),u.concat(await a(o,h))}},rv=(e,t)=>async r=>e?t({page:1,itemsPerPage:1,excludeBots:r}).then(({data:n})=>n[0]):Promise.resolve(void 0),nv=({typePrefix:e,createLoaders:t,shouldCancel:r})=>{const n=Mn(`${e}/progressChanged`),i=Mn(`${e}/fallbackToInterval`),a=Wr(e,async(o,{getState:s,dispatch:u})=>{var l;const{params:h,options:p}=o,{visitsLoader:g,lastVisitLoader:_}=t(o),w=Kje(h.dateRange),b=yj(h),x=p.loadPrevInterval&&nAe(h)?yj(iAe(h)):void 0,S=TAe/(x?2:1),O=x?{main:0,prev:0}:{main:0},E=(q,W)=>{O[q]=W;const H=Object.values(O),K=H.reduce((te,se)=>te+se,0);u(n(K/H.length))},j=Gq({visitsLoader:g,shouldCancel:()=>r(s),progressChanged:q=>E("main",q),batchSize:S}),[A,T,M]=await Promise.all([j(b),_((l=h.filter)==null?void 0:l.excludeBots),x?j(x).then(q=>q.map(W=>{if(w===void 0)return W;const{date:H,...K}=W,te=jT(yi(H),w);return{...K,date:xl(te)}})):Promise.resolve(void 0)]);return!A.length&&T&&u(i(Hje(T.date))),{...o,visits:A,prevVisits:M}});return Object.assign(a,{progressChanged:n,fallbackToInterval:i})},iv=({name:e,asyncThunkCreator:t,initialState:r,filterCreatedVisits:n,extraReducers:i})=>{const{pending:a,rejected:o,fulfilled:s,progressChanged:u,fallbackToInterval:l}=t,{reducer:h,actions:p}=Nr({name:e,initialState:r,reducers:{cancelGetVisits:_=>({..._,cancelLoad:!0})},extraReducers:_=>{_.addCase(a,()=>({...r,loading:!0})),_.addCase(o,(w,{error:b})=>({...r,errorData:Pi(b)??null})),_.addCase(s,(w,{payload:b})=>({...w,...b,loading:!1,progress:null,errorData:null})),_.addCase(u,(w,{payload:b})=>({...w,progress:b})),_.addCase(l,(w,{payload:b})=>({...w,fallbackInterval:b})),_.addCase(Md,(w,{payload:b})=>{const{visits:x}=w,S=n(w,b.createdVisits).map(({visit:O})=>O);return S.length?{...w,visits:[...S,...x]}:w}),i==null||i(_)}}),{cancelGetVisits:g}=p;return{reducer:h,cancelGetVisits:g}},Kq="shlink/domainVisits",NAe={visits:[],domain:"",loading:!1,cancelLoad:!1,errorData:null,progress:null},RAe=e=>nv({typePrefix:`${Kq}/getDomainVisits`,createLoaders:({domain:t,options:r})=>{const n=e(),{doIntervalFallback:i=!1}=r,a=s=>n.getDomainVisits(t,s),o=rv(i,s=>n.getDomainVisits(t,s));return{visitsLoader:a,lastVisitLoader:o}},shouldCancel:t=>t().domainVisits.cancelLoad}),MAe=e=>iv({name:Kq,initialState:NAe,asyncThunkCreator:e,filterCreatedVisits:({domain:t,params:r},n)=>Dq(n,t,r==null?void 0:r.dateRange)}),Yq="shlink/orphanVisits",LAe={visits:[],loading:!1,cancelLoad:!1,errorData:null,progress:null},DAe=e=>nv({typePrefix:`${Yq}/getNonOrphanVisits`,createLoaders:({options:t})=>{const r=e(),{doIntervalFallback:n=!1}=t,i=async o=>r.getNonOrphanVisits(o),a=rv(n,o=>r.getNonOrphanVisits(o));return{visitsLoader:i,lastVisitLoader:a}},shouldCancel:t=>t().orphanVisits.cancelLoad}),IAe=e=>iv({name:Yq,initialState:LAe,asyncThunkCreator:e,filterCreatedVisits:({params:t},r)=>{const{startDate:n,endDate:i}=(t==null?void 0:t.dateRange)??{};return r.filter(({visit:a})=>Jm(a.date,n,i))}}),Zq="shlink/orphanVisits",$Ae={visits:[],loading:!1,cancelLoad:!1,errorData:null,progress:null},FAe=(e,t)=>!t||t===e.type,BAe=({data:e,...t},r)=>{const n=e.filter(i=>s3(i)&&FAe(i,r));return{...t,data:n}},UAe=e=>nv({typePrefix:`${Zq}/getOrphanVisits`,createLoaders:({orphanVisitsType:t,options:r})=>{const n=e(),{doIntervalFallback:i=!1}=r,a=async s=>n.getOrphanVisits({...s,type:t}).then(u=>BAe(u,t)),o=rv(i,s=>n.getOrphanVisits(s));return{visitsLoader:a,lastVisitLoader:o}},shouldCancel:t=>t().orphanVisits.cancelLoad}),zAe=(e,t)=>iv({name:Zq,initialState:$Ae,asyncThunkCreator:e,extraReducers:r=>{r.addCase(t.fulfilled,n=>({...n,visits:[]}))},filterCreatedVisits:({params:r},n)=>{const{startDate:i,endDate:a}=(r==null?void 0:r.dateRange)??{};return n.filter(({visit:o,shortUrl:s})=>!s&&Jm(o.date,i,a))}}),Xq="shlink/orphanVisitsDeletion",s$={deletedVisits:0,deleting:!1,error:!1},VAe=e=>Wr(`${Xq}/deleteOrphanVisits`,()=>e().deleteOrphanVisits()),qAe=e=>Nr({name:Xq,initialState:s$,reducers:{},extraReducers:t=>{t.addCase(e.pending,r=>({...r,deleting:!0,error:!1})),t.addCase(e.rejected,(r,{error:n})=>({...r,deleting:!1,error:!0,errorData:Pi(n)})),t.addCase(e.fulfilled,(r,{payload:n})=>{const{deletedVisits:i}=n;return{...s$,deletedVisits:i}})}}),Qq="shlink/shortUrlVisits",WAe={visits:[],shortCode:"",loading:!1,errorData:null,cancelLoad:!1,progress:null},HAe=e=>nv({typePrefix:`${Qq}/getShortUrlVisits`,createLoaders:({shortCode:t,domain:r,options:n})=>{const i=e(),{doIntervalFallback:a=!1}=n,o=u=>i.getShortUrlVisits({shortCode:t,domain:r},u),s=rv(a,u=>i.getShortUrlVisits({shortCode:t,domain:r},u));return{visitsLoader:o,lastVisitLoader:s}},shouldCancel:t=>t().shortUrlVisits.cancelLoad}),GAe=(e,t)=>iv({name:Qq,initialState:WAe,asyncThunkCreator:e,extraReducers:r=>{r.addCase(t.fulfilled,(n,{payload:i})=>n.shortCode===i.shortCode&&n.domain===i.domain?{...n,visits:[]}:n)},filterCreatedVisits:({shortCode:r,domain:n,params:i},a)=>Lq(a,{shortCode:r,domain:n},i==null?void 0:i.dateRange)}),Jq="shlink/shortUrlVisitsDeletion",l$={shortCode:"",deletedVisits:0,deleting:!1,error:!1},KAe=e=>Wr(`${Jq}/deleteShortUrlVisits`,async({shortCode:t,domain:r})=>({...await e().deleteShortUrlVisits({shortCode:t,domain:r}),shortCode:t,domain:r})),YAe=e=>Nr({name:Jq,initialState:l$,reducers:{},extraReducers:t=>{t.addCase(e.pending,r=>({...r,deleting:!0,error:!1})),t.addCase(e.rejected,(r,{error:n})=>({...r,deleting:!1,error:!0,errorData:Pi(n)})),t.addCase(e.fulfilled,(r,{payload:n})=>{const{shortCode:i,domain:a,deletedVisits:o}=n;return{...l$,shortCode:i,domain:a,deletedVisits:o}})}}),eW="shlink/tagVisits",ZAe={visits:[],tag:"",loading:!1,cancelLoad:!1,errorData:null,progress:null},XAe=e=>nv({typePrefix:`${eW}/getTagVisits`,createLoaders:({tag:t,options:r})=>{const n=e(),{doIntervalFallback:i=!1}=r,a=s=>n.getTagVisits(t,s),o=rv(i,async s=>n.getTagVisits(t,s));return{visitsLoader:a,lastVisitLoader:o}},shouldCancel:t=>t().tagVisits.cancelLoad}),QAe=e=>iv({name:eW,initialState:ZAe,asyncThunkCreator:e,filterCreatedVisits:({tag:t,params:r},n)=>Iq(n,t,r==null?void 0:r.dateRange)}),tW="shlink/visitsOverview",Zg={nonOrphanVisits:{total:0},orphanVisits:{total:0},loading:!1,error:!1},u$=e=>e.filter(({visit:t})=>t.potentialBot).length,JAe=e=>Wr(`${tW}/loadVisitsOverview`,()=>e().getVisitsOverview().then(({nonOrphanVisits:t,visitsCount:r=0,orphanVisits:n,orphanVisitsCount:i=0})=>({nonOrphanVisits:{total:(t==null?void 0:t.total)??r,nonBots:t==null?void 0:t.nonBots,bots:t==null?void 0:t.bots},orphanVisits:{total:(n==null?void 0:n.total)??i,nonBots:n==null?void 0:n.nonBots,bots:n==null?void 0:n.bots}}))),e3e=e=>Nr({name:tW,initialState:Zg,reducers:{},extraReducers:t=>{t.addCase(e.pending,()=>({...Zg,loading:!0})),t.addCase(e.rejected,()=>({...Zg,error:!0})),t.addCase(e.fulfilled,(r,{payload:n})=>({...Zg,...n})),t.addCase(Md,({nonOrphanVisits:r,orphanVisits:n,...i},{payload:a})=>{const{nonOrphanVisits:o,orphanVisits:s}=tAe(a.createdVisits),u=o.length,l=u$(o),h=u-l,p=s.length,g=u$(s),_=p-g;return{...i,nonOrphanVisits:{total:r.total+u,bots:r.bots&&r.bots+l,nonBots:r.nonBots&&r.nonBots+h},orphanVisits:{total:n.total+p,bots:n.bots&&n.bots+g,nonBots:n.nonBots&&n.nonBots+_}}})}}),t3e=({shortUrl:e,loading:t,shortUrlVisits:r})=>{const{visits:n}=r,i=(e==null?void 0:e.shortUrl)??"",a=(e==null?void 0:e.longUrl)??"",o=e==null?void 0:e.title;return m.jsxs(ev,{title:m.jsxs(m.Fragment,{children:["Visits for ",m.jsx(_i,{href:i})]}),visits:n,shortUrl:e,children:[m.jsx("hr",{}),m.jsxs("div",{children:["Created: ",e?m.jsxs("span",{children:[m.jsx("b",{id:"created",className:"short-url-visits-header__created-at",children:m.jsx(tb,{date:e.dateCreated,relative:!0})}),m.jsx(ta,{placement:"bottom",target:"created",children:m.jsx(tb,{date:e.dateCreated})})]}):m.jsx("small",{children:"Loading..."})]}),m.jsxs("div",{className:"long-url-container",children:[`${o?"Title":"Long URL"}: `,t&&m.jsx("small",{children:"Loading..."}),!t&&m.jsx(_i,{href:a,children:o??a})]})]})},rW=Ra(({shortUrlVisits:e,shortUrlVisitsDeletion:t,shortUrlsDetails:r,getShortUrlVisits:n,getShortUrlsDetails:i,deleteShortUrlVisits:a,cancelGetShortUrlVisits:o})=>{const s=ho("shortUrlVisitsDeletion"),{ReportExporter:u}=Sr(rW),l=ZA(),h=$.useMemo(()=>{var w;return(w=r.shortUrls)==null?void 0:w.get(l)},[l,r.shortUrls]),p=$.useCallback((w,b)=>n({...l,options:b,params:w}),[n,l]),g=$.useCallback(w=>u.exportVisits(`short-url_${h==null?void 0:h.shortUrl.replace(/https?:\/\//g,"")}_visits.csv`,w),[u,h==null?void 0:h.shortUrl]),_=$.useMemo(()=>s?{deleteVisits:()=>a(l),visitsDeletion:t}:void 0,[a,l,t,s]);return $.useEffect(()=>{i([l])},[l,i]),m.jsx(tv,{getVisits:p,cancelGetVisits:o,visitsInfo:e,exportCsv:g,deletion:_,children:m.jsx(t3e,{shortUrl:h,loading:r.loading,shortUrlVisits:e})})},e=>e.shortCode?[Dn.shortUrlVisits(WA(e.shortCode))]:[]),r3e=Or(rW,["ReportExporter"]),n3e=({tagVisits:e,colorGenerator:t})=>{const{visits:r,tag:n}=e;return m.jsx(ev,{title:m.jsxs("span",{className:"d-flex align-items-center justify-content-center",children:[m.jsx("span",{className:"me-2",children:"Visits for"}),m.jsx(C_,{text:n,colorGenerator:t})]}),visits:r})},nW=Ra(({getTagVisits:e,tagVisits:t,cancelGetTagVisits:r})=>{const{ColorGenerator:n,ReportExporter:i}=Sr(nW),{tag:a=""}=md(),o=$.useCallback((u,l)=>e({tag:a,params:u,options:l}),[e,a]),s=$.useCallback(u=>i.exportVisits(`tag_${a}_visits.csv`,u),[i,a]);return m.jsx(tv,{getVisits:o,cancelGetVisits:r,visitsInfo:t,exportCsv:s,children:m.jsx(n3e,{tagVisits:t,colorGenerator:n})})},()=>[Dn.visits]),i3e=Or(nW,["ColorGenerator","ReportExporter"]),l3=({title:e,colors:t,getVisitsForComparison:r,visitsComparisonInfo:n,cancelGetVisitsComparison:i})=>{const{loading:a,visitsGroups:o}=n,s=Hr("visits"),u=$.useMemo(()=>Object.keys(o).reduce((O,E,j)=>(O[E]=Object.assign(ab(o[E]),{color:(t==null?void 0:t[E])??Nq(j)}),O),{}),[t,o]),l=$.useMemo(()=>Object.values(o).every(O=>O.length===0),[o]),[{dateRange:h,visitsFilter:p},g]=$q(),[_,w]=$.useState(),b=$.useCallback(({startDate:O,endDate:E},j)=>{g({dateRange:{startDate:O??void 0,endDate:E??void 0}}),w(j)},[g]),[x]=$.useState(()=>h??(s==null?void 0:s.defaultInterval)??"last30Days"),S=$.useMemo(()=>({...p,excludeBots:p.excludeBots??(s==null?void 0:s.excludeBots)}),[p,s==null?void 0:s.excludeBots]);return $.useEffect(()=>{const O=h??oq(x);return r({params:{dateRange:O,filter:S}}),i},[i,h,r,x,S]),m.jsxs(m.Fragment,{children:[m.jsx("div",{className:"mb-3",children:m.jsxs(sr,{bodyClassName:"d-flex",children:[m.jsx(O_,{}),m.jsx("h3",{className:"mb-0 flex-grow-1 text-center",children:e})]})}),m.jsx("div",{className:"col-lg-7 col-xl-6 offset-lg-5 offset-xl-6 mb-3",children:m.jsxs("div",{className:"d-md-flex",children:[m.jsx("div",{className:"flex-grow-1",children:m.jsx(t3,{disabled:a,defaultText:"All visits",dateRangeOrInterval:_??h??x,onDatesChange:b})}),m.jsx(Bq,{disabled:a,className:"ms-0 ms-md-2 mt-3 mt-md-0",selected:S,onChange:({orphanVisitsType:O,excludeBots:E})=>g({visitsFilter:{orphanVisitsType:O,excludeBots:E}})})]})}),m.jsx(Uq,{info:n}),!a&&m.jsx(fy,{showFallback:l,children:m.jsx(Mq,{visitsGroups:u,onDateRangeChange:b})})]})},a3e=Ra(({getDomainVisitsForComparison:e,domainVisitsComparison:t,cancelGetDomainVisitsComparison:r})=>{const n=VA("domains"),i=$.useCallback(a=>e({...a,domains:n}),[n,e]);return m.jsx(l3,{title:`Comparing "${n.join('", "')}"`,getVisitsForComparison:i,visitsComparisonInfo:t,cancelGetVisitsComparison:r})},()=>[Dn.visits]),o3e=({visitsLoaders:e,shouldCancel:t,progressChanged:r})=>{const n=Object.keys(e),i=Math.max(1,Math.round(4/n.length)),a=Object.fromEntries(n.map(u=>[u,0])),o=(u,l)=>{a[u]=l;const h=Object.values(a),p=h.reduce((g,_)=>g+_,0);r(p/h.length)},s=Object.entries(e).map(([u,l])=>[u,Gq({visitsLoader:l,batchSize:i,shouldCancel:t,progressChanged:h=>o(u,h)})]);return async u=>{const l=await Promise.all(s.map(async([h,p])=>{const g=await p(u);return[h,g]}));return Object.fromEntries(l)}},u3=({typePrefix:e,createLoaders:t,shouldCancel:r})=>{const n=Mn(`${e}/progressChanged`),i=Wr(e,async(a,{getState:o,dispatch:s})=>{const u=t(a),l=await o3e({visitsLoaders:u,shouldCancel:()=>r(o),progressChanged:h=>s(n(h))})(yj(a.params));return{...a,visitsGroups:l}});return Object.assign(i,{progressChanged:n})},c3=({name:e,asyncThunkCreator:t,initialState:r,filterCreatedVisitsForGroup:n})=>{const{pending:i,rejected:a,fulfilled:o,progressChanged:s}=t,{reducer:u,actions:l}=Nr({name:e,initialState:r,reducers:{cancelGetVisits:p=>({...p,cancelLoad:!0})},extraReducers:p=>{p.addCase(i,()=>({...r,loading:!0})),p.addCase(a,(g,{error:_})=>({...r,errorData:Pi(_)??null})),p.addCase(o,(g,{payload:_})=>({...g,..._,loading:!1,progress:null,errorData:null})),p.addCase(s,(g,{payload:_})=>({...g,progress:_})),p.addCase(Md,(g,{payload:_})=>{const{visitsGroups:w,...b}=g,x=Object.keys(w).map(O=>{const E=n({...b,groupKey:O},_.createdVisits).map(({visit:j})=>j);return[O,[...E,...w[O]]]}),S=Object.fromEntries(x);return{...b,visitsGroups:S}})}}),{cancelGetVisits:h}=l;return{reducer:u,cancelGetVisits:h}},iW="shlink/domainVisitsComparison",s3e={visitsGroups:{},loading:!1,cancelLoad:!1,errorData:null,progress:null},l3e=e=>u3({typePrefix:`${iW}/getDomainVisitsForComparison`,createLoaders:({domains:t})=>{const r=e(),n=t.map(i=>[i,a=>r.getDomainVisits(i,a)]);return Object.fromEntries(n)},shouldCancel:t=>t().domainVisitsComparison.cancelLoad}),u3e=e=>c3({name:iW,initialState:s3e,asyncThunkCreator:e,filterCreatedVisitsForGroup:({groupKey:t,params:r},n)=>Dq(n,t,r==null?void 0:r.dateRange)}),aW="shlink/shortUrlVisitsComparison",c3e={visitsGroups:{},loading:!1,cancelLoad:!1,errorData:null,progress:null},f3e=e=>u3({typePrefix:`${aW}/getShortUrlVisitsForComparison`,createLoaders:({shortUrls:t})=>{const r=e(),n=t.map(i=>[HA(i),a=>r.getShortUrlVisits(i,a)]);return Object.fromEntries(n)},shouldCancel:t=>t().shortUrlVisitsComparison.cancelLoad}),d3e=e=>c3({name:aW,initialState:c3e,asyncThunkCreator:e,filterCreatedVisitsForGroup:({groupKey:t,params:r},n)=>Lq(n,bV(t),r==null?void 0:r.dateRange)}),oW="shlink/tagVisitsComparison",h3e={visitsGroups:{},loading:!1,cancelLoad:!1,errorData:null,progress:null},p3e=e=>u3({typePrefix:`${oW}/getTagVisitsForComparison`,createLoaders:({tags:t})=>{const r=e(),n=t.map(i=>[i,a=>r.getTagVisits(i,a)]);return Object.fromEntries(n)},shouldCancel:t=>t().tagVisitsComparison.cancelLoad}),m3e=e=>c3({name:oW,initialState:h3e,asyncThunkCreator:e,filterCreatedVisitsForGroup:({groupKey:t,params:r},n)=>Iq(n,t,r==null?void 0:r.dateRange)}),v3e=Ra(({getShortUrlVisitsForComparison:e,shortUrlVisitsComparison:t,cancelGetShortUrlVisitsComparison:r,shortUrlsDetails:n,getShortUrlsDetails:i})=>{const a=VA("short-urls"),o=$.useMemo(()=>a.map(bV),[a]),s=$.useCallback(h=>e({...h,shortUrls:o}),[e,o]),u=$.useMemo(()=>{var h;return[...((h=n.shortUrls)==null?void 0:h.values())??[]]},[n.shortUrls]),l=$.useMemo(()=>{const{visitsGroups:h,loading:p,...g}=t,_=u.reduce((w,b)=>(w[b.shortUrl]=h[HA(b)]??[],w),{});return{...g,visitsGroups:_,loading:p||n.loading}},[t,n.loading,u]);return $.useEffect(()=>{o.length>0&&i(o)},[i,o]),m.jsx(l3,{title:m.jsx("span",{"data-testid":"title",children:n.loading?"Loading...":`Comparing ${u.length} short URLs`}),getVisitsForComparison:s,visitsComparisonInfo:l,cancelGetVisitsComparison:r})},()=>[Dn.visits]),sW=Ra(({getTagVisitsForComparison:e,tagVisitsComparison:t,cancelGetTagVisitsComparison:r})=>{const{ColorGenerator:n}=Sr(sW),i=VA("tags"),a=$.useCallback(u=>e({...u,tags:i}),[e,i]),{visitsGroups:o}=t,s=$.useMemo(()=>Object.keys(o).reduce((u,l)=>(u[l]=n.getColorForKey(l),u),{}),[n,o]);return m.jsx(l3,{title:m.jsxs(m.Fragment,{children:["Comparing ",i.map(u=>m.jsx(C_,{colorGenerator:n,text:u},u))]}),getVisitsForComparison:a,visitsComparisonInfo:t,cancelGetVisitsComparison:r,colors:s})},()=>[Dn.visits]),g3e=Or(sW,["ColorGenerator"]),y3e=(e,t)=>{const r=(n,i)=>t([...n,"mercureInfo"],[...i,"createNewVisits","loadMercureInfo"]);e.serviceFactory("MapModal",()=>Fq),e.factory("ShortUrlVisits",r3e),e.decorator("ShortUrlVisits",t(["shortUrlVisits","shortUrlVisitsDeletion","shortUrlsDetails","mercureInfo"],["getShortUrlVisits","deleteShortUrlVisits","getShortUrlsDetails","cancelGetShortUrlVisits","createNewVisits","loadMercureInfo"])),e.factory("TagVisits",i3e),e.decorator("TagVisits",r(["tagVisits"],["getTagVisits","cancelGetTagVisits"])),e.factory("TagVisitsComparison",g3e),e.decorator("TagVisitsComparison",r(["tagVisitsComparison"],["getTagVisitsForComparison","cancelGetTagVisitsForComparison"])),e.serviceFactory("DomainVisitsComparison",()=>a3e),e.decorator("DomainVisitsComparison",r(["domainVisitsComparison"],["getDomainVisitsForComparison","cancelGetDomainVisitsForComparison"])),e.serviceFactory("ShortUrlVisitsComparison",()=>v3e),e.decorator("ShortUrlVisitsComparison",r(["shortUrlVisitsComparison","shortUrlsDetails"],["getShortUrlVisitsForComparison","cancelGetShortUrlVisitsForComparison","getShortUrlsDetails"])),e.factory("DomainVisits",CAe),e.decorator("DomainVisits",r(["domainVisits"],["getDomainVisits","cancelGetDomainVisits"])),e.factory("OrphanVisits",EAe),e.decorator("OrphanVisits",r(["orphanVisits","orphanVisitsDeletion"],["getOrphanVisits","cancelGetOrphanVisits","deleteOrphanVisits"])),e.factory("NonOrphanVisits",PAe),e.decorator("NonOrphanVisits",r(["nonOrphanVisits"],["getNonOrphanVisits","cancelGetNonOrphanVisits"])),e.serviceFactory("VisitsParser",()=>bAe),e.serviceFactory("getShortUrlVisits",HAe,"apiClientFactory"),e.serviceFactory("cancelGetShortUrlVisits",n=>n.cancelGetVisits,"shortUrlVisitsReducerCreator"),e.serviceFactory("getShortUrlVisitsForComparison",f3e,"apiClientFactory"),e.serviceFactory("cancelGetShortUrlVisitsForComparison",n=>n.cancelGetVisits,"shortUrlVisitsComparisonReducerCreator"),e.serviceFactory("deleteShortUrlVisits",KAe,"apiClientFactory"),e.serviceFactory("getTagVisits",XAe,"apiClientFactory"),e.serviceFactory("cancelGetTagVisits",n=>n.cancelGetVisits,"tagVisitsReducerCreator"),e.serviceFactory("getTagVisitsForComparison",p3e,"apiClientFactory"),e.serviceFactory("cancelGetTagVisitsForComparison",n=>n.cancelGetVisits,"tagVisitsComparisonReducerCreator"),e.serviceFactory("getDomainVisits",RAe,"apiClientFactory"),e.serviceFactory("cancelGetDomainVisits",n=>n.cancelGetVisits,"domainVisitsReducerCreator"),e.serviceFactory("getDomainVisitsForComparison",l3e,"apiClientFactory"),e.serviceFactory("cancelGetDomainVisitsForComparison",n=>n.cancelGetVisits,"domainVisitsComparisonReducerCreator"),e.serviceFactory("getOrphanVisits",UAe,"apiClientFactory"),e.serviceFactory("cancelGetOrphanVisits",n=>n.cancelGetVisits,"orphanVisitsReducerCreator"),e.serviceFactory("deleteOrphanVisits",VAe,"apiClientFactory"),e.serviceFactory("getNonOrphanVisits",DAe,"apiClientFactory"),e.serviceFactory("cancelGetNonOrphanVisits",n=>n.cancelGetVisits,"nonOrphanVisitsReducerCreator"),e.serviceFactory("createNewVisits",()=>Md),e.serviceFactory("loadVisitsOverview",JAe,"apiClientFactory"),e.serviceFactory("visitsOverviewReducerCreator",e3e,"loadVisitsOverview"),e.serviceFactory("visitsOverviewReducer",n=>n.reducer,"visitsOverviewReducerCreator"),e.serviceFactory("domainVisitsReducerCreator",MAe,"getDomainVisits"),e.serviceFactory("domainVisitsReducer",n=>n.reducer,"domainVisitsReducerCreator"),e.serviceFactory("nonOrphanVisitsReducerCreator",IAe,"getNonOrphanVisits"),e.serviceFactory("nonOrphanVisitsReducer",n=>n.reducer,"nonOrphanVisitsReducerCreator"),e.serviceFactory("orphanVisitsReducerCreator",zAe,"getOrphanVisits","deleteOrphanVisits"),e.serviceFactory("orphanVisitsReducer",n=>n.reducer,"orphanVisitsReducerCreator"),e.serviceFactory("orphanVisitsDeletionReducerCreator",qAe,"deleteOrphanVisits"),e.serviceFactory("orphanVisitsDeletionReducer",n=>n.reducer,"orphanVisitsDeletionReducerCreator"),e.serviceFactory("shortUrlVisitsReducerCreator",GAe,"getShortUrlVisits","deleteShortUrlVisits"),e.serviceFactory("shortUrlVisitsReducer",n=>n.reducer,"shortUrlVisitsReducerCreator"),e.serviceFactory("shortUrlVisitsDeletionReducerCreator",YAe,"deleteShortUrlVisits"),e.serviceFactory("shortUrlVisitsDeletionReducer",n=>n.reducer,"shortUrlVisitsDeletionReducerCreator"),e.serviceFactory("tagVisitsReducerCreator",QAe,"getTagVisits"),e.serviceFactory("tagVisitsReducer",n=>n.reducer,"tagVisitsReducerCreator"),e.serviceFactory("tagVisitsComparisonReducerCreator",m3e,"getTagVisitsForComparison"),e.serviceFactory("tagVisitsComparisonReducer",n=>n.reducer,"tagVisitsComparisonReducerCreator"),e.serviceFactory("domainVisitsComparisonReducerCreator",u3e,"getDomainVisitsForComparison"),e.serviceFactory("domainVisitsComparisonReducer",n=>n.reducer,"domainVisitsComparisonReducerCreator"),e.serviceFactory("shortUrlVisitsComparisonReducerCreator",d3e,"getShortUrlVisitsForComparison"),e.serviceFactory("shortUrlVisitsComparisonReducer",n=>n.reducer,"shortUrlVisitsComparisonReducerCreator")},Kh=({children:e,to:t,className:r,...n})=>m.jsx(db,{className:({isActive:i})=>Me("aside-menu__item",r,{"aside-menu__item--selected":i}),to:t,...n,children:e}),b3e=({routePrefix:e,showOnMobile:t=!1})=>{const{pathname:r}=Sn(),n=Me("aside-menu",{"aside-menu--hidden":!t}),i=a=>`${e}${a}`;return m.jsx("aside",{className:n,children:m.jsxs("nav",{className:"nav flex-column aside-menu__nav",children:[m.jsxs(Kh,{to:i("/overview"),children:[m.jsx(Ye,{fixedWidth:!0,icon:rZ}),m.jsx("span",{className:"aside-menu__item-text",children:"Overview"})]}),m.jsxs(Kh,{to:i("/list-short-urls/1"),className:Me({"aside-menu__item--selected":r.match("/list-short-urls")!==null}),children:[m.jsx(Ye,{fixedWidth:!0,icon:Dj}),m.jsx("span",{className:"aside-menu__item-text",children:"List short URLs"})]}),m.jsxs(Kh,{to:i("/create-short-url"),children:[m.jsx(Ye,{fixedWidth:!0,icon:lZ,flip:"horizontal"}),m.jsx("span",{className:"aside-menu__item-text",children:"Create short URL"})]}),m.jsxs(Kh,{to:i("/manage-tags"),children:[m.jsx(Ye,{fixedWidth:!0,icon:n7}),m.jsx("span",{className:"aside-menu__item-text",children:"Manage tags"})]}),m.jsxs(Kh,{to:i("/manage-domains"),children:[m.jsx(Ye,{fixedWidth:!0,icon:RY}),m.jsx("span",{className:"aside-menu__item-text",children:"Manage domains"})]})]})})},lW=({createNotFound:e})=>{const{TagsList:t,ShortUrlsList:r,CreateShortUrl:n,ShortUrlVisits:i,TagVisits:a,DomainVisits:o,OrphanVisits:s,NonOrphanVisits:u,Overview:l,EditShortUrl:h,ManageDomains:p,TagVisitsComparison:g,DomainVisitsComparison:_,ShortUrlVisitsComparison:w,ShortUrlRedirectRules:b}=Sr(lW),x=Sn(),S=Nl(),[O,E,j,A]=Vt();$.useEffect(()=>A(),[x,A]);const T=Me("shlink-layout__burger-icon",{"shlink-layout__burger-icon--active":O}),M=dPe(j,A),q=ho("shortUrlRedirectRules");return m.jsxs(m.Fragment,{children:[m.jsx(Ye,{icon:EY,className:T,onClick:E}),m.jsx("div",{...M,className:"shlink-layout__swipeable",children:m.jsxs("div",{className:"shlink-layout__swipeable-inner",children:[m.jsx(b3e,{routePrefix:S,showOnMobile:O}),m.jsx("div",{className:"shlink-layout__container",onPointerDown:()=>A(),children:m.jsx("div",{className:"container-xl",children:m.jsxs(cb,{children:[m.jsx(St,{index:!0,element:m.jsx(Ej,{replace:!0,to:"overview"})}),m.jsx(St,{path:"/overview",element:m.jsx(l,{})}),m.jsx(St,{path:"/list-short-urls/:page",element:m.jsx(r,{})}),m.jsx(St,{path:"/create-short-url",element:m.jsx(n,{})}),m.jsx(St,{path:"/short-code/:shortCode/visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(i,{})},W))}),m.jsx(St,{path:"/short-code/:shortCode/edit",element:m.jsx(h,{})}),q&&m.jsx(St,{path:"/short-code/:shortCode/redirect-rules",element:m.jsx(b,{})}),m.jsx(St,{path:"/short-urls/compare-visits",element:m.jsx(w,{})}),m.jsx(St,{path:"/tag/:tag/visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(a,{})},W))}),m.jsx(St,{path:"/tags/compare-visits",element:m.jsx(g,{})}),m.jsx(St,{path:"/domain/:domain/visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(o,{})},W))}),m.jsx(St,{path:"/orphan-visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(s,{})},W))}),m.jsx(St,{path:"/non-orphan-visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(u,{})},W))}),m.jsx(St,{path:"/manage-tags",element:m.jsx(t,{})}),m.jsx(St,{path:"/manage-domains",element:m.jsx(p,{})}),m.jsx(St,{path:"/domains/compare-visits",element:m.jsx(_,{})}),e&&m.jsx(St,{path:"*",element:e("/list-short-urls/1")})]})})})]})})]})},_3e=Or(lW,["TagsList","ShortUrlsList","CreateShortUrl","ShortUrlVisits","TagVisits","DomainVisits","OrphanVisits","NonOrphanVisits","Overview","EditShortUrl","ManageDomains","TagVisitsComparison","DomainVisitsComparison","ShortUrlVisitsComparison","ShortUrlRedirectRules"]),w3e=e=>JF({devTools:!1,reducer:bT({mercureInfo:e.mercureInfoReducer,shortUrlsList:e.shortUrlsListReducer,shortUrlCreation:e.shortUrlCreationReducer,shortUrlDeletion:e.shortUrlDeletionReducer,shortUrlEdition:e.shortUrlEditionReducer,shortUrlsDetails:e.shortUrlsDetailsReducer,shortUrlVisits:e.shortUrlVisitsReducer,shortUrlVisitsDeletion:e.shortUrlVisitsDeletionReducer,shortUrlVisitsComparison:e.shortUrlVisitsComparisonReducer,tagVisits:e.tagVisitsReducer,tagVisitsComparison:e.tagVisitsComparisonReducer,domainVisits:e.domainVisitsReducer,domainVisitsComparison:e.domainVisitsComparisonReducer,orphanVisits:e.orphanVisitsReducer,orphanVisitsDeletion:e.orphanVisitsDeletionReducer,nonOrphanVisits:e.nonOrphanVisitsReducer,tagsList:e.tagsListReducer,tagDelete:e.tagDeleteReducer,tagEdit:e.tagEditReducer,domainsList:e.domainsListReducer,visitsOverview:e.visitsOverviewReducer,shortUrlRedirectRules:e.shortUrlRedirectRulesReducer,shortUrlRedirectRulesSaving:e.setShortUrlRedirectRulesReducer}),middleware:t=>t({immutableCheck:!1,serializableCheck:!1})}),x3e=e=>{e.factory("Main",_3e),e.factory("store",w3e)},Ma=new Q$,{container:S3e}=Ma,O3e=e=>t=>Object.fromEntries(e.map(r=>[r,t[r]])),C3e=(e,t)=>(...r)=>e[t](...r),P3e=(e,t)=>({...e,[t]:C3e(S3e,t)}),Dd=(e,t=[])=>C$(e?O3e(e):null,t.reduce(P3e,{}));x3e(Ma);aTe(Ma,Dd);jTe(Ma,Dd);y3e(Ma,Dd);PPe(Ma);SPe(Ma,Dd);$Pe(Ma,Dd);LTe(Ma);sje(Ma,Dd);let c$;const E3e=e=>({serverVersion:t,apiClient:r,settings:n,routesPrefix:i="",createNotFound:a,tagColorsStorage:o})=>{const s=lPe(t),u=$.useRef(void 0),[l,h]=$.useState(),p=Zu(),g=$.useMemo(()=>p?$.Fragment:F$,[p]);return $.useEffect(()=>{c$=r,e.value("apiClientFactory",()=>c$),o&&e.value("TagColorsStorage",o);const{container:_}=e,{Main:w,store:b,loadMercureInfo:x,listTags:S,listDomains:O}=_;u.current=m.jsx(w,{createNotFound:a}),h(b),b.dispatch(x(n)),b.dispatch(S()),b.dispatch(O())},[r,a,n,o]),l?m.jsx(P$,{store:l,children:m.jsx(hB,{value:n??{},children:m.jsx(sPe,{value:s,children:m.jsx(iPe,{value:i,children:m.jsx(g,{children:u.current})})})})}):m.jsx(m.Fragment,{})},j3e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=",T3e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAABSCAMAAAAhFXfZAAAC91BMVEVMaXEzeak2f7I4g7g3g7cua5gzeKg8hJo3grY4g7c3grU0gLI2frE0daAubJc2gbQwd6QzeKk2gLMtd5sxdKIua5g1frA2f7IydaM0e6w2fq41fK01eqo3grgubJgta5cxdKI1f7AydaQydaMxc6EubJgvbJkwcZ4ubZkwcJwubZgubJcydqUydKIxapgubJctbJcubZcubJcvbJYubJcvbZkubJctbJctbZcubJg2f7AubJcrbZcubJcubJcua5g3grY0fq8ubJcubJdEkdEwhsw6i88vhswuhcsuhMtBjMgthMsrg8srgss6is8qgcs8i9A9iMYtg8spgcoogMo7hcMngMonf8olfso4gr8kfck5iM8jfMk4iM8he8k1fro7itAgesk2hs8eecgzfLcofssdeMg0hc4cd8g2hcsxeLQbdsgZdcgxeLImfcszhM0vda4xgckzhM4xg84wf8Yxgs4udKsvfcQucqhUndROmdM1fK0wcZ8vb5w0eqpQm9MzeKhXoNVcpdYydKNWn9VZotVKltJFjsIwcJ1Rms9OlslLmtH///8+kc9epdYzd6dbo9VHkMM2f7FHmNBClM8ydqVcpNY9hro3gLM9hLczealQmcw3fa46f7A8gLMxc6I3eagyc6FIldJMl9JSnNRSntNNl9JPnNJFi75UnM9ZodVKksg8kM45jc09e6ZHltFBk883gbRBh7pDk9EwcaBzn784g7dKkcY2i81Om9M7j85Llc81is09g7Q4grY/j9A0eqxKmdFFltBEjcXf6fFImdBCiLxJl9FGlNFBi78yiMxVndEvbpo6js74+vx+psPP3+o/ks5HkcpGmNCjwdZCkNDM3ehYoNJEls+lxNkxh8xHks0+jdC1zd5Lg6r+/v/H2ufz9/o3jM3t8/edvdM/k89Th61OiLBSjbZklbaTt9BfptdjmL1AicBHj8hGk9FAgK1dkLNTjLRekrdClc/k7fM0icy0y9tgp9c4jc2NtM9Dlc8zicxeXZn3AAAAQ3RSTlMAHDdTb4yPA+LtnEQmC4L2EmHqB7XA0d0sr478x4/Yd5i1zOfyPkf1sLVq4Nh3FvjxopQ2/STNuFzUwFIwxKaejILpIBEV9wAABhVJREFUeF6s1NdyFEcYBeBeoQIhRAkLlRDGrhIgY3BJL8CVeKzuyXFzzjkn5ZxzzuScg3PO8cKzu70JkO0LfxdTU//pM9vTu7Xgf6KqOVTb9X7toRrVEfBf1HTVjZccrT/2by1VV928Yty9ZbVuucdz90frG8DBjl9pVApbOstvmMuvVgaNXSfAAd6pGxpy6yxf5ph43pS/4f3uoaGm2rdu72S9xzOvMymkZFq/ptDrk90mhW7e4zl7HLzhxGWPR20xmSxJ/VqldG5m9XhaVOA1DadsNh3Pu5L2N6QtPO/32JpqQBVVk20oy/Pi2s23WEvyfHbe1thadVQttvm7Llf65gGmXK67XtupyoM7HQhmXdLS8oGWJNeOJ3C5fG5XCEJnkez3/oFdsvgJ4l2ANZwhrJKk/7OSXa+3Vw2WJMlKnGkobouYk6T0TyX30klOUnTD9HJ5qpckL3EW/w4XF3Xd0FGywXUrstrclVsqz5Pd/sXFYyDnPdrLcQODmGOK47IZb4CmibmMn+MYRzFZ5jg33ZL/EJrWcszHmANy3ARBK/IXtciJy8VsitPSdE3uuHxzougojcUdr8/32atnz/ev3f/K5wtpxUTpcaI45zusVDpYtZi+jg0oU9b3x74h7+n9ABvYEZeKaVq0sh0AtLKsFtqNBdeT0MrSzwwlq9+x6xAO4tgOtSzbCjrNQQiNvQUbUEubvzBUeGw26yDCsRHCoLkTHDa7IdOLIThs/gHvChszh2CimE8peRs47cxANI0lYNB5y1DljpOF0IhzBDPOZnDOqYYbeGKECbPzWnXludPphw5c2YBq5zlwXphIbO4VDCZ0gnPfUO1TwZoYwAs2ExPCedAu9DAjfQUjzITQb3jNj0KG2Sgt6BHaQUdYzWz+XmBktOHwanXjaSTcwwziBcuMOtwBmqPrTOxFQR/DRKKPqyur0aiW6cULYsx6tBm0jXpR/AUWR6HRq9WVW6MRhIq5jLyjbaCTDCijyYJNpCajdyobP/eTw0iexBAKkJ3gA5KcQb2zBXsIBckn+xVv8jkZSaEFHE+jFEleAEfayRU0MouNoBmB/L50Ai/HSLIHxcrpCvnhSQAuakKp2C/YbCylJjXRVy/z3+Kv/RrNcCo+WUzlVEhzKffnTQnxeN9fWF88fiNCUdSTsaufaChKWInHeysygfpIqagoakW+vV20J8uyl6TyNKEZWV4oRSPyCkWpgOLSbkCObT8o2r6tlG58HQquf6O0v50tB7JM7F4EORd2dx/K0w/KHsVkLPaoYrwgP/y7krr3SSMA4zj+OBgmjYkxcdIJQyQRKgg2viX9Hddi9UBb29LrKR7CVVEEEXWojUkXNyfTNDE14W9gbHJNuhjDettN3ZvbOvdOqCD3Jp/9l+/wJE+9PkYGjx/fqkys3S2rMozM/o2106rfMUINo6hVqz+eu/hd1c4xTg0TAfy5kV+4UG6+IthHTU9woWmxuKNbTfuCSfovBCxq7EtHqvYL4Sm6F8GVxsSXHMQ07TOi1DKtZxjWaaIyi4CXWjxPccUw8WVbMYY5wxC1mzEyXMJWkllpRloi+Kkoq69sxBTlElF6aAxYUbjXNlhlDZilDnM4U5SlN5biRsRHnbx3mbeWjEh4mEyiuJDl5XcWVmX5GvNkFgLWZM5qwsop4/AWfLhU1cR7k1VVvcYCWRkOI6Xy5gmnphCYIkvzuNYzHzosq2oNk2RtSs8khfUOfHIDgR6ysYBaMpl4uEgk2U/oJTs9AaTSwma7dT69geAE2ZpEjUsn2ieJNHeKfrI3EcAGJ2ZaNgVuC8EBctCLc57P5u5led6IOBkIYkuQMrmmjChs4VkfOerHqSBkPzZlhe06RslZ3zMjk2sscqKwY0RcjKK+LWbzd7KiHhkncs/siFJ+V5eXxD34B8nVuJEpGJNmxN2gH3vSvp7J70tF+D1Ej8qUJD1TkErAND2GZwTFg/LubvmgiBG3SOvdlsqFQrkEzJCL1rstlnVFROixZoDDSuXQFHESwVGlcuQcMb/b42NgjLowh5MTDFE3vNB5qStRIErdCQEh6pLPR92anSUb/wAIhldAaDMpGgAAAABJRU5ErkJggg==",A3e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAQAAAACach9AAACMUlEQVR4Ae3ShY7jQBAE0Aoz/f9/HTMzhg1zrdKUrJbdx+Kd2nD8VNudfsL/Th///dyQN2TH6f3y/BGpC379rV+S+qqetBOxImNQXL8JCAr2V4iMQXHGNJxeCfZXhSRBcQMfvkOWUdtfzlLgAENmZDcmo2TVmt8OSM2eXxBp3DjHSMFutqS7SbmemzBiR+xpKCNUIRkdkkYxhAkyGoBvyQFEJEefwSmmvBfJuJ6aKqKWnAkvGZOaZXTUgFqYULWNSHUckZuR1HIIimUExutRxwzOLROIG4vKmCKQt364mIlhSyzAf1m9lHZHJZrlAOMMztRRiKimp/rpdJDc9Awry5xTZCte7FHtuS8wJgeYGrex28xNTd086Dik7vUMscQOa8y4DoGtCCSkAKlNwpgNtphjrC6MIHUkR6YWxxs6Sc5xqn222mmCRFzIt8lEdKx+ikCtg91qS2WpwVfBelJCiQJwvzixfI9cxZQWgiSJelKnwBElKYtDOb2MFbhmUigbReQBV0Cg4+qMXSxXSyGUn4UbF8l+7qdSGnTC0XLCmahIgUHLhLOhpVCtw4CzYXvLQWQbJNmxoCsOKAxSgBJno75avolkRw8iIAFcsdc02e9iyCd8tHwmeSSoKTowIgvscSGZUOA7PuCN5b2BX9mQM7S0wYhMNU74zgsPBj3HU7wguAfnxxjFQGBE6pwN+GjME9zHY7zGp8wVxMShYX9NXvEWD3HbwJf4giO4CFIQxXScH1/TM+04kkBiAAAAAElFTkSuQmCC",k3e=()=>{delete S8.Icon.Default.prototype._getIconUrl,S8.Icon.Default.mergeOptions({iconRetinaUrl:T3e,iconUrl:j3e,shadowUrl:A3e})};k3e();const N3e=E3e(Ma);function ob(e){return t=>{const{resetSelectedServer:r}=t;return $.useEffect(()=>{r()},[r]),m.jsx(e,{...t})}}let R3e=class extends $.Component{constructor(t){super(t),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t){const{console:r=globalThis.console}=this.props;r.error(t)}render(){const{hasError:t}=this.state,{location:r=globalThis.location}=this.props;if(t)return m.jsxs(BF,{title:"Oops! This is awkward :S",children:[m.jsx("p",{children:"It seems that something went wrong. Try refreshing the page or just click this button."}),m.jsx("br",{}),m.jsx(Zi,{size:"lg",onClick:()=>r.reload(),children:"Take me back"})]});const{children:n}=this.props;return n}};const M3e=({id:e,name:t})=>m.jsxs(nr,{to:`/server/${e}`,className:Me("servers-list__server-item","tw:flex tw:items-center tw:justify-between tw:gap-x-2 tw:px-4 tw:py-3","tw:rounded-none tw:hover:bg-lm-secondary tw:hover:dark:bg-dm-secondary","tw:border-b tw:last:border-0 tw:border-lm-border tw:dark:border-dm-border"),children:[m.jsx("span",{className:"tw:truncate",children:t}),m.jsx(Ye,{icon:hZ})]}),uW=({servers:e,borderless:t})=>m.jsx(m.Fragment,{children:e.length>0&&m.jsx("div",{"data-testid":"list",className:Me("tw:w-full tw:border-lm-border tw:dark:border-dm-border","tw:md:max-h-56 tw:md:overflow-y-auto tw:-mb-1 tw:scroll-thin",{"tw:border-y":!t}),children:e.map(({id:r,name:n})=>m.jsx(M3e,{id:r,name:n},r))})}),cW=({color:e=Mp,className:t})=>m.jsx("svg",{className:t,viewBox:"0 0 512 512",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:m.jsxs("g",{fill:e,children:[m.jsx("path",{d:" M 23.71 85.08 C 17.22 49.81 49.44 14.86 85.08 18.12 C 118.83 19.21 145.72 53.33 139.45 86.37 C 155.64 102.30 171.32 118.83 187.87 134.36 C 198.32 111.73 208.84 89.12 219.57 66.62 C 226.05 53.84 243.47 48.74 255.73 56.27 C 263.76 62.10 270.34 69.69 277.25 76.75 C 286.28 86.61 285.72 102.89 276.31 112.31 C 223.38 165.37 170.38 218.37 117.35 271.34 C 107.72 280.99 91.01 281.25 81.11 271.86 C 74.39 264.94 66.82 258.69 61.24 250.77 C 53.72 238.52 58.85 221.07 71.64 214.62 C 94.11 203.87 116.72 193.38 139.33 182.91 C 123.81 166.36 107.30 150.68 91.37 134.49 C 60.20 140.28 27.37 116.78 23.71 85.08 Z"}),m.jsx("path",{d:" M 205.21 201.23 C 225.32 181.36 260.88 181.11 281.14 200.86 C 299.25 218.75 317.37 236.65 335.10 254.93 C 356.73 278.01 352.01 318.70 326.03 336.56 C 320.07 330.47 313.73 324.65 308.12 318.28 C 323.86 309.39 328.76 286.18 316.63 272.39 C 301.73 256.95 286.30 242.03 271.24 226.75 C 264.49 219.65 256.80 212.00 246.37 211.52 C 224.65 208.64 205.52 233.36 214.49 253.58 C 221.09 266.81 234.22 275.12 243.62 286.24 C 240.43 295.96 238.09 306.13 238.29 316.46 C 225.55 304.29 213.16 291.73 200.89 279.09 C 180.97 257.57 183.10 220.45 205.21 201.23 Z"}),m.jsx("path",{d:" M 273.90 352.07 C 252.28 328.99 256.98 288.31 282.96 270.46 C 288.93 276.54 295.26 282.36 300.88 288.72 C 285.14 297.62 280.23 320.82 292.38 334.61 C 307.27 350.05 322.70 364.96 337.75 380.25 C 344.51 387.35 352.20 395.00 362.64 395.48 C 384.35 398.37 403.49 373.64 394.51 353.42 C 387.92 340.18 374.78 331.88 365.38 320.76 C 368.56 311.04 370.91 300.86 370.71 290.54 C 383.45 302.70 395.84 315.27 408.11 327.91 C 428.03 349.43 425.90 386.55 403.78 405.77 C 383.68 425.64 348.13 425.89 327.86 406.14 C 309.75 388.25 291.60 370.37 273.90 352.07 Z"}),m.jsx("path",{d:" M 422.11 403.83 C 431.96 394.07 441.60 384.06 451.66 374.51 C 460.90 383.74 471.89 392.70 474.89 406.11 C 480.16 429.97 484.08 454.13 488.76 478.12 C 490.00 483.41 484.47 488.29 479.35 486.63 C 454.66 481.52 429.55 478.12 405.14 471.84 C 393.17 467.97 385.20 457.75 376.55 449.27 C 386.39 439.49 396.13 429.60 406.06 419.91 C 416.37 433.45 435.74 414.00 422.11 403.83 Z"})]})}),L3e=({servers:e})=>{const t=mo(),r=Object.values(e),n=r.length>0;return $.useEffect(()=>{const i=r.find(({autoConnect:a})=>a);i&&t(`/server/${i.id}`)},[r,t]),m.jsx("div",{className:"tw:w-full",children:m.jsx(gi,{className:"tw:mx-auto tw:max-w-[720px] tw:overflow-hidden",children:m.jsxs("div",{className:"tw:flex tw:flex-col tw:md:flex-row",children:[m.jsx("div",{className:"tw:p-6 tw:hidden tw:md:flex tw:items-center tw:w-[40%]",children:m.jsx("div",{className:"tw:w-full",children:m.jsx(cW,{})})}),m.jsxs("div",{className:"tw:md:border-l tw:border-lm-border tw:dark:border-dm-border tw:flex-grow",children:[m.jsx("h1",{className:Me("tw:p-4 tw:text-center tw:border-lm-border tw:dark:border-dm-border",{"tw:border-b":!n}),children:"Welcome!"}),n?m.jsx(uW,{servers:r}):m.jsxs("div",{className:"tw:p-6 tw:text-center tw:flex tw:flex-col tw:gap-12 tw:text-xl",children:[m.jsx("p",{children:"This application will help you manage your Shlink servers."}),m.jsx("p",{children:m.jsxs(Zi,{to:"/server/create",size:"lg",inline:!0,children:[m.jsx(Ye,{icon:Am})," Add a server"]})}),m.jsx("p",{children:m.jsx(_i,{href:"https://shlink.io/documentation",children:m.jsxs("small",{children:[m.jsx("span",{className:"tw:mr-2",children:"Learn more about Shlink"}),m.jsx(Ye,{icon:HY})]})})})]})]})]})})})},fW=()=>{const{ServersDropdown:e}=Aa(fW),[t,r,,n]=Vt(),i=Sn(),{pathname:a}=i;$.useEffect(n,[i,n]);const o="/settings";return m.jsxs(Y7,{color:"primary",dark:!0,fixed:"top",expand:"md",className:"tw:text-white tw:bg-lm-brand tw:dark:bg-dm-brand",children:[m.jsxs(Z7,{tag:nr,to:"/",children:[m.jsx(cW,{className:"tw:inline tw:w-7 tw:mr-1",color:"white"})," Shlink"]}),m.jsx(X7,{onClick:r,children:m.jsx(Ye,{icon:cZ,className:Me("tw:transition-transform tw:duration-300",{"tw:rotate-180":t})})}),m.jsx(cT,{navbar:!0,isOpen:t,children:m.jsxs(eT,{navbar:!0,className:"tw:ml-auto",children:[m.jsx(tT,{children:m.jsxs(rT,{tag:nr,to:o,active:a.startsWith(o),children:[m.jsx(Ye,{icon:vZ}),"  Settings"]})}),m.jsx(e,{})]})})]})},D3e=ka(fW,["ServersDropdown"]),I3e=({children:e})=>{const t=Sn();return $.useEffect(()=>{scrollTo(0,0)},[t]),m.jsx(m.Fragment,{children:e})},dW=sB(e=>e,e=>{try{return DP(e,e,"=")}catch{return!1}}),hW=e=>dW(e)?`v${e}`:e,pW=(e,t="latest")=>dW(e)?e:t,$3e="%_VERSION_%",F3e=e=>hW(pW(e)),f$=({project:e,version:t})=>m.jsx(_i,{href:`https://github.com/shlinkio/${e}/releases/${t}`,className:"tw:text-gray-500",children:m.jsx("b",{children:t})}),B3e=({selectedServer:e,clientVersion:t=$3e})=>{const r=F3e(t);return m.jsxs("small",{className:"tw:text-gray-500",children:[Lj(e)&&m.jsxs(m.Fragment,{children:["Server: ",m.jsx(f$,{project:"shlink",version:e.printableVersion})," - "]}),"Client: ",m.jsx(f$,{project:"shlink-web-client",version:r})]})},U3e=({selectedServer:e})=>m.jsx("div",{className:Me("tw:text-center",{"tw:md:ml-(--aside-menu-width)":Lj(e)}),children:m.jsx(B3e,{selectedServer:e})}),Id=({children:e,className:t})=>m.jsx("div",{className:Me("tw:container tw:mx-auto tw:p-5 tw:pt-8 tw:max-md:p-0 tw:max-md:py-4",t),children:e});function mW(e){const t=r=>{const{ServerError:n}=Aa(t),i=md(),{selectServer:a,selectedServer:o}=r;return $.useEffect(()=>{i.serverId&&a(i.serverId)},[i.serverId,a]),o?fY(o)?m.jsx(n,{}):m.jsx(e,{...r}):m.jsx(Id,{children:m.jsx($F,{loading:!0})})};return t}const vW=mW($.memo(({selectedServer:e,settings:t})=>{const{buildShlinkApiClient:r,TagColorsStorage:n,ShlinkWebComponent:i,ServerError:a}=Aa(vW);if(!Lj(e))return m.jsx(a,{});const o=`/server/${e.id}`;return m.jsx(i,{serverVersion:e.version,apiClient:r(e),settings:t,routesPrefix:o,tagColorsStorage:n,createNotFound:s=>m.jsx(UF,{to:`${o}${s}`,children:"List short URLs"})})})),z3e=ka(vW,["buildShlinkApiClient","TagColorsStorage","ShlinkWebComponent","ServerError"]),V3e=(e,t)=>{e.constant("window",window),e.constant("console",console),e.constant("fetch",window.fetch.bind(window)),e.service("HttpClient",Woe,"fetch"),e.serviceFactory("ScrollToTop",()=>I3e),e.factory("MainHeader",D3e),e.serviceFactory("Home",()=>L3e),e.decorator("Home",ob),e.decorator("Home",t(["servers"],["resetSelectedServer"])),e.serviceFactory("ShlinkWebComponent",()=>N3e),e.factory("ShlinkWebComponentContainer",z3e),e.decorator("ShlinkWebComponentContainer",t(["selectedServer","settings"],["selectServer"])),e.serviceFactory("ShlinkVersionsContainer",()=>U3e),e.decorator("ShlinkVersionsContainer",t(["selectedServer"])),e.serviceFactory("ErrorHandler",()=>R3e)},gW=()=>{const e=mo();return $.useCallback(()=>e(-1),[e])};function q3e(e){let t=e.url;try{const{host:r,pathname:n}=new URL(t);t=r;const i=n.substring(1);i.length>0&&(t=`${t} ${i}`)}catch{}return`${e.name} ${t}`.toLowerCase().replace(/[^a-zA-Z0-9-_.~]/g,"-")}function W3e(e){const t={};return e.forEach(r=>{t[r.id]=r}),t}const H3e=(e,{url:t,apiKey:r})=>e.some(n=>n.url===t&&n.apiKey===r);function G3e(e,t){const r=Object.values(e),{duplicatedServers:n=[],newServers:i=[]}=oB(t,a=>H3e(r,a)?"duplicatedServers":"newServers");return{duplicatedServers:n,newServers:i}}function sb(e,t){const r=new Set(Object.keys(e)),n=[];return t.forEach(i=>{const a=q3e(i);let o=a,s=1;for(;r.has(o);)o=`${a}-${s}`,s++;n.push({...i,id:o}),r.add(o)}),n}const yW=({open:e,duplicatedServers:t,onClose:r,onConfirm:n})=>{const i=t.length>1;return m.jsxs(IF,{size:"lg",title:`Duplicated server${i?"s":""}`,open:e,onClose:r,onConfirm:n,confirmText:`Save duplicate${i?"s":""}`,cancelText:i?"Ignore duplicates":"Discard",children:[m.jsx("p",{children:i?"The next servers already exist:":"There is already a server with:"}),m.jsx("ul",{className:"tw:list-disc tw:mt-4",children:t.map(({url:a,apiKey:o},s)=>i?m.jsxs("li",{children:[m.jsx("b",{children:a})," - ",m.jsx("b",{children:o})]},s):m.jsxs($.Fragment,{children:[m.jsxs("li",{children:["URL: ",m.jsx("b",{children:a})]}),m.jsxs("li",{children:["API key: ",m.jsx("b",{children:o})]})]},s))}),m.jsxs("span",{children:[i?"Do you want to save duplicated servers":"Do you want to save this server","?"]})]})},K3e=e=>$.useCallback(t=>{t.preventDefault(),e(t)},[e]),bW=({onSubmit:e,initialValues:t,children:r,title:n})=>{const[i,a]=$.useState((t==null?void 0:t.name)??""),[o,s]=$.useState((t==null?void 0:t.url)??""),[u,l]=$.useState((t==null?void 0:t.apiKey)??""),{flag:h,toggle:p}=Vt((t==null?void 0:t.forwardCredentials)??!1,!0),g=K3e(()=>e({name:i,url:o,apiKey:u,forwardCredentials:h}));return m.jsxs("form",{name:"serverForm",onSubmit:g,children:[m.jsxs(jb,{className:"tw:mb-4",bodyClassName:"tw:flex tw:flex-col tw:gap-y-3",title:n,children:[m.jsx(FN,{label:"Name",value:i,onChange:_=>a(_.target.value),required:!0}),m.jsx(FN,{label:"URL",type:"url",value:o,onChange:_=>s(_.target.value),required:!0}),m.jsx($ae,{label:"API key",value:u,onChange:_=>l(_.target.value),required:!0}),m.jsx(Cae,{summary:"Advanced options",children:m.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-1",children:[m.jsxs(Tb,{className:"tw:flex tw:items-center tw:gap-x-1.5 tw:cursor-pointer",children:[m.jsx(Dae,{onChange:p,checked:h}),"Forward credentials (like cookies) to this server on every request."]}),m.jsxs("small",{className:"tw:pl-5.5 tw:text-gray-600 tw:dark:text-gray-400",children:[m.jsx("b",{children:"Important!"})," If you are not sure what this means, leave it unchecked. Enabling this option will make all requests fail for Shlink older than v4.5.0, as it requires the server to set a more strict value for ",m.jsx("code",{className:"tw:whitespace-nowrap",children:"Access-Control-Allow-Origin"})," than ",m.jsx("code",{children:"*"}),"."]})]})})]}),m.jsx("div",{className:"tw:flex tw:items-center tw:justify-end tw:gap-x-2",children:r})]})},d$=4e3,h$=({variant:e})=>m.jsx("div",{className:"tw:mt-4",children:m.jsxs(FF,{variant:e,children:[e==="success"&&"Servers properly imported. You can now select one from the list :)",e==="error"&&"The servers could not be imported. Make sure the format is correct."]})}),_W=({servers:e,createServers:t})=>{const{ImportServersBtn:r,useTimeoutToggle:n}=Aa(_W),i=mo(),a=gW(),o=!!Object.keys(e).length,[s,u]=n(!1,d$),[l,h]=n(!1,d$),[p,g]=Vt(),[_,w]=$.useState(),b=$.useCallback(S=>{const[O]=sb(e,[S]);t([O]),i(`/server/${O.id}`)},[t,i,e]),x=$.useCallback(S=>{w(S),Object.values(e).some(({url:E,apiKey:j})=>S.url===E&&S.apiKey===j)?g():b(S)},[b,e,g]);return m.jsxs(Id,{children:[m.jsxs(bW,{title:"Add new server",onSubmit:x,children:[!o&&m.jsx(r,{tooltipPlacement:"top",onImport:u,onError:h}),o&&m.jsx(Zi,{variant:"secondary",onClick:a,children:"Cancel"}),m.jsx(Zi,{type:"submit",children:"Create server"})]}),s&&m.jsx(h$,{variant:"success"}),l&&m.jsx(h$,{variant:"error"}),m.jsx(yW,{open:p,duplicatedServers:_?[_]:[],onClose:a,onConfirm:()=>_&&b(_)})]})},Y3e=ka(_W,["ImportServersBtn","useTimeoutToggle"]),wW=({server:e,children:t})=>{const{DeleteServerModal:r}=Aa(wW),[n,,i,a]=Vt(),o=mo(),s=$.useCallback(u=>{a(),u&&o("/")},[a,o]);return m.jsxs(m.Fragment,{children:[m.jsx("button",{type:"button",className:"tw:text-danger tw:hover:underline",onClick:i,children:t}),m.jsx(r,{server:e,open:n,onClose:s})]})},Z3e=ka(wW,["DeleteServerModal"]),X3e=({server:e,onClose:t,open:r,deleteServer:n})=>{const i=$.useCallback(a=>{a==="confirm"&&n(e)},[n,e]);return m.jsx(IF,{open:r,title:"Remove server",variant:"danger",onClose:()=>t(!1),onConfirm:()=>t(!0),onClosed:i,confirmText:"Delete",children:m.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-y-4",children:[m.jsxs("p",{children:["Are you sure you want to remove ",m.jsx("b",{children:e?e.name:""}),"?"]}),m.jsx("p",{children:m.jsx("i",{children:"No data will be deleted, only the access to this server will be removed from this device. You can create it again at any moment."})})]})})},Q3e=mW(({editServer:e,selectedServer:t,selectServer:r})=>{const n=gW(),{reconnect:i}=bd();if(!sp(t))return null;const a=o=>{e(t.id,o),i==="true"&&r(t.id),n()};return m.jsx(Id,{children:m.jsxs(bW,{title:m.jsxs(m.Fragment,{children:['Edit "',t.name,'"']}),initialValues:t,onSubmit:a,children:[m.jsx(Zi,{variant:"secondary",onClick:n,children:"Cancel"}),m.jsx(Zi,{type:"submit",children:"Save"})]})})}),J3e=ka(Q3e,["ServerError"]),xW=({createServers:e,servers:t,children:r,onImport:n,onError:i=()=>{},tooltipPlacement:a="bottom",className:o=""})=>{const{ServersImporter:s}=Aa(xW),u=vl(),[l,h]=$.useState([]),[p,,g,_]=Vt(),w=$.useRef(!1),b=$.useCallback(async({target:O})=>{var E;return s.importServersFromFile((E=O.files)==null?void 0:E[0]).then(j=>{const{duplicatedServers:A,newServers:T}=G3e(t,j);w.current=T.length>0,e(sb(t,T)),A.length>0?(h(A),g()):n==null||n()}).then(()=>{O.value=null}).catch(i)},[e,i,n,t,s,g]),x=$.useCallback(()=>{e(sb(t,l)),_(),n==null||n()},[e,l,_,n,t]),S=$.useCallback(()=>{_(),w.current&&(n==null||n())},[_,n]);return m.jsxs(m.Fragment,{children:[m.jsxs(Zi,{variant:"secondary",id:"importBtn",className:o,onClick:()=>{var O;return(O=u.current)==null?void 0:O.click()},children:[m.jsx(Ye,{icon:DY,fixedWidth:!0})," ",r??"Import from file"]}),m.jsxs(ta,{placement:a,target:"importBtn",children:["You can create servers by importing a CSV file with ",m.jsx("b",{children:"name"}),", ",m.jsx("b",{children:"apiKey"})," and ",m.jsx("b",{children:"url"})," columns."]}),m.jsx("input",{type:"file",accept:".csv",className:"tw:hidden","aria-hidden":!0,tabIndex:-1,ref:u,onChange:b,"data-testid":"csv-file-input"}),m.jsx(yW,{open:p,duplicatedServers:l,onClose:S,onConfirm:x})]})},eke=ka(xW,["ServersImporter"]),SW=({servers:e,selectedServer:t})=>{const{DeleteServerButton:r}=Aa(SW);return m.jsx(Id,{children:m.jsxs("div",{className:"tw:flex tw:flex-col tw:items-center tw:gap-y-4 tw:md:gap-y-8",children:[m.jsxs($F,{className:"tw:w-full tw:lg:w-[80%]",variant:"error",children:[!sp(t)&&"Could not find this Shlink server.",sp(t)&&m.jsxs(m.Fragment,{children:[m.jsx("p",{children:"Oops! Could not connect to this Shlink server."}),"Make sure you have internet connection, and the server is properly configured and on-line."]})]}),m.jsxs("p",{className:"tw:text-xl",children:["These are the Shlink servers currently configured. Choose one of them or ",m.jsx(nr,{to:"/server/create",children:"add a new one"}),"."]}),m.jsx(gi,{className:"tw:w-full tw:max-w-100 tw:overflow-hidden",children:m.jsx(uW,{borderless:!0,servers:Object.values(e)})}),sp(t)&&m.jsxs("p",{className:"tw:text-xl",children:["Alternatively, if you think you may have misconfigured this server, you can ",m.jsx(r,{server:t,children:"remove it"})," or ",m.jsx(nr,{to:`/server/${t.id}/edit?reconnect=true`,children:"edit it"}),"."]})]})})},tke=ka(SW,["DeleteServerButton"]),rke=4e3,OW=({servers:e})=>{const{ServersExporter:t,ImportServersBtn:r,useTimeoutToggle:n,ManageServersRow:i}=Aa(OW),[a,o]=$.useState(""),s=$.useMemo(()=>Object.values(e),[e]),u=$.useMemo(()=>s.filter(({name:g,url:_})=>`${g} ${_}`.toLowerCase().match(a.toLowerCase())),[s,a]),l=s.some(({autoConnect:g})=>!!g),[h,p]=n(!1,rke);return m.jsxs(Id,{className:"tw:flex tw:flex-col tw:gap-y-4",children:[m.jsx(Bae,{onChange:o}),m.jsxs("div",{className:"tw:flex tw:flex-col tw:md:flex-row tw:gap-2",children:[m.jsxs("div",{className:"tw:flex tw:gap-2",children:[m.jsx(r,{className:"tw:flex-grow",onError:p,children:"Import servers"}),u.length>0&&m.jsxs(Zi,{variant:"secondary",className:"tw:flex-grow",onClick:async()=>t.exportServers(),children:[m.jsx(Ye,{icon:i7})," Export servers"]})]}),m.jsxs(Zi,{className:"tw:md:ml-auto",to:"/server/create",children:[m.jsx(Ye,{icon:Am})," Add a server"]})]}),m.jsx(jb,{className:"card",children:m.jsxs(pi,{header:m.jsxs(pi.Row,{children:[l&&m.jsx(pi.Cell,{className:"tw:w-[35px]",children:m.jsx("span",{className:"tw:sr-only",children:"Auto-connect"})}),m.jsx(pi.Cell,{children:"Name"}),m.jsx(pi.Cell,{children:"Base URL"}),m.jsx(pi.Cell,{children:m.jsx("span",{className:"sr-only",children:"Options"})})]}),children:[!u.length&&m.jsx(pi.Row,{className:"tw:text-center",children:m.jsx(pi.Cell,{colSpan:4,children:"No servers found."})}),u.map(g=>m.jsx(i,{server:g,hasAutoConnect:l},g.id))]})}),h&&m.jsx("div",{children:m.jsx(FF,{variant:"error",children:"The servers could not be imported. Make sure the format is correct."})})]})},nke=ka(OW,["ServersExporter","ImportServersBtn","useTimeoutToggle","ManageServersRow"]),CW=({server:e,hasAutoConnect:t})=>{const{ManageServersRowDropdown:r}=Aa(CW);return m.jsxs(pi.Row,{className:"tw:relative",children:[t&&m.jsx(pi.Cell,{columnName:"Auto-connect",children:e.autoConnect&&m.jsxs(m.Fragment,{children:[m.jsx(Ye,{icon:Lu,className:"tw:text-brand",id:"autoConnectIcon"}),m.jsx(ta,{target:"autoConnectIcon",placement:"right",children:"Auto-connect to this server"})]})}),m.jsx(pi.Cell,{className:"tw:font-bold",columnName:"Name",children:m.jsx(nr,{to:`/server/${e.id}`,children:e.name})}),m.jsx(pi.Cell,{columnName:"Base URL",className:"tw:max-lg:border-b-0",children:e.url}),m.jsx(pi.Cell,{className:"tw:text-right tw:max-lg:absolute tw:right-0 tw:-top-1 tw:mx-lg:pt-0",children:m.jsx(r,{server:e})})]})},ike=ka(CW,["ManageServersRowDropdown"]),PW=({server:e,setAutoConnect:t})=>{const{DeleteServerModal:r}=Aa(PW),[n,,i,a]=Vt(),o=`/server/${e.id}`,{autoConnect:s}=e,u=s?MY:kse;return m.jsxs(m.Fragment,{children:[m.jsxs(Eb,{minWidth:s?210:170,children:[m.jsxs(Qe,{tag:nr,to:o,children:[m.jsx(Ye,{icon:NY,fixedWidth:!0})," Connect"]}),m.jsxs(Qe,{tag:nr,to:`${o}/edit`,children:[m.jsx(Ye,{icon:Ij,fixedWidth:!0})," Edit server"]}),m.jsxs(Qe,{onClick:()=>t(e,!s),children:[m.jsx(Ye,{icon:u,fixedWidth:!0})," ",s?"Do not a":"A","uto-connect"]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{className:"tw:text-danger",onClick:i,children:[m.jsx(Ye,{icon:t7,fixedWidth:!0})," Remove server"]})]}),m.jsx(r,{server:e,open:n,onClose:a})]})},ake=ka(PW,["DeleteServerModal"]),EW=(e,t)=>tB(e,t,{serializeError:r=>r}),oke={},{actions:ske,reducer:lke}=Nr({name:"shlink/servers",initialState:oke,reducers:{editServer:{prepare:(e,t)=>({payload:{serverId:e,serverData:t}}),reducer:(e,{payload:t})=>{const{serverId:r,serverData:n}=t;return e[r]?{...e,[r]:{...e[r],...n}}:e}},deleteServer:(e,{payload:t})=>(delete e[t.id],e),setAutoConnect:{prepare:({id:e},t)=>({payload:{serverId:e,autoConnect:t}}),reducer:(e,{payload:t})=>{const{serverId:r,autoConnect:n}=t;return e[r]?n?Object.fromEntries(Object.entries(e).map(([i,a])=>[i,{...a,autoConnect:i===r}])):{...e,[r]:{...e[r],autoConnect:n}}:e}},createServers:{prepare:e=>({payload:W3e(e)}),reducer:(e,{payload:t})=>({...e,...t})}}}),{editServer:uke,deleteServer:cke,setAutoConnect:fke,createServers:jW}=ske,dke=lke,hke=e=>sb({},Array.isArray(e)?e.filter(e7):[]),pke=e=>EW("shlink/remoteServers/fetchServers",async(t,{dispatch:r})=>{const n=await e.jsonRequest(`${py.homepage}/servers.json`),i=hke(n);r(jW(i))}),f3="shlink/selectedServer",mke="1.0.0",vke="999.999.999",gke="latest",yke=e=>pW(e===gke?vke:e,mke),bke=sB(e=>`${e.id}_${e.url}_${e.apiKey}`,async(e,t)=>t().then(({version:r})=>({version:yke(r),printableVersion:hW(r)}))),p$=null,d3=Mn(`${f3}/resetSelectedServer`),_ke=e=>EW(`${f3}/selectServer`,async(t,{dispatch:r,getState:n})=>{r(d3());const{servers:i}=n(),a=i[t];if(!a)return{serverNotFound:!0};try{const o=e(a),{version:s,printableVersion:u}=await bke(a,()=>o.health());return{...a,version:s,printableVersion:u}}catch{return{...a,serverNotReachable:!0}}}),wke=e=>Nr({name:f3,initialState:p$,reducers:{},extraReducers:t=>{t.addCase(d3,()=>p$),t.addCase(e.fulfilled,(r,{payload:n})=>n)}}),xke=({servers:e,selectedServer:t})=>{const r=Object.values(e);return m.jsxs(EF,{nav:!0,inNavbar:!0,children:[m.jsxs(os,{nav:!0,caret:!0,children:[m.jsx(Ye,{icon:_4})," ",m.jsx("span",{className:"tw:ml-1",children:"Servers"})]}),m.jsx(Cl,{end:!0,className:"tw:right-0",children:r.length===0?m.jsxs(Qe,{tag:nr,to:"/server/create",children:[m.jsx(Ye,{icon:Am})," ",m.jsx("span",{className:"tw:ml-1",children:"Add a server"})]}):m.jsxs(m.Fragment,{children:[r.map(({name:n,id:i})=>m.jsx(Qe,{tag:nr,to:`/server/${i}`,active:dY(t)===i,children:n},i)),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{tag:nr,to:"/manage-servers",children:[m.jsx(Ye,{icon:_4})," ",m.jsx("span",{className:"tw:ml-1",children:"Manage servers"})]})]})})]})},Ske=({document:e},t,r)=>{const n=e.createElement("a");n.setAttribute("href",t),n.setAttribute("download",r),n.style.visibility="hidden",e.body.appendChild(n),n.click(),e.body.removeChild(n)},Oke=(e,t,r)=>{const n=new Blob([t],{type:"text/csv;charset=utf-8;"}),i=URL.createObjectURL(n);Ske(e,i,r)},Cke="shlink-servers.csv";var Om,Cm,Pm;class Pke{constructor(t,r,n){jh(this,Om);jh(this,Cm);jh(this,Pm);qc(this,"exportServers",async()=>{const t=Object.values(Eh(this,Om).get("servers")??{}).map(hY);try{const r=Eh(this,Pm).call(this,t);Oke(Eh(this,Cm),r,Cke)}catch(r){console.error(r)}});Th(this,Om,t),Th(this,Cm,r),Th(this,Pm,n)}}Om=new WeakMap,Cm=new WeakMap,Pm=new WeakMap;const Eke=e=>{if(!Array.isArray(e))throw new Error("Provided file does not have the right format.");return e.map(mY)};var Em;class jke{constructor(t){jh(this,Em);Th(this,Em,t)}async importServersFromFile(t){if(!t)throw new Error("No file provided");const r=await t.text(),n=await Eh(this,Em).call(this,r);return Eke(n)}}Em=new WeakMap;const Tke=(e,t)=>{e.factory("ManageServers",nke),e.decorator("ManageServers",ob),e.decorator("ManageServers",t(["selectedServer","servers"],["resetSelectedServer"])),e.factory("ManageServersRow",ike),e.factory("ManageServersRowDropdown",ake),e.decorator("ManageServersRowDropdown",t(null,["setAutoConnect"])),e.factory("CreateServer",Y3e),e.decorator("CreateServer",ob),e.decorator("CreateServer",t(["selectedServer","servers"],["createServers","resetSelectedServer"])),e.factory("EditServer",J3e),e.decorator("EditServer",t(["selectedServer"],["editServer","selectServer","resetSelectedServer"])),e.serviceFactory("ServersDropdown",()=>xke),e.decorator("ServersDropdown",t(["servers","selectedServer"])),e.serviceFactory("DeleteServerModal",()=>X3e),e.decorator("DeleteServerModal",t(null,["deleteServer"])),e.factory("DeleteServerButton",Z3e),e.factory("ImportServersBtn",eke),e.decorator("ImportServersBtn",t(["servers"],["createServers"])),e.factory("ServerError",tke),e.decorator("ServerError",t(["servers","selectedServer"])),e.service("ServersImporter",jke,"csvToJson"),e.service("ServersExporter",Pke,"Storage","window","jsonToCsv"),e.serviceFactory("selectServer",_ke,"buildShlinkApiClient","loadMercureInfo"),e.serviceFactory("createServers",()=>jW),e.serviceFactory("deleteServer",()=>cke),e.serviceFactory("editServer",()=>uke),e.serviceFactory("setAutoConnect",()=>fke),e.serviceFactory("fetchServers",pke,"HttpClient"),e.serviceFactory("resetSelectedServer",()=>d3),e.serviceFactory("selectedServerReducerCreator",wke,"selectServer"),e.serviceFactory("selectedServerReducer",r=>r.reducer,"selectedServerReducerCreator")},TW={field:"dateCreated",dir:"DESC"},Ake={realTimeUpdates:{enabled:!0},shortUrlCreation:{validateUrls:!1},ui:{theme:vT()},visits:{defaultInterval:"last30Days"},shortUrlsList:{defaultOrdering:TW}},{reducer:kke,actions:Nke}=Nr({name:"shlink/settings",initialState:Ake,reducers:{setSettings:(e,{payload:t})=>Mb(e,t)}}),{setSettings:Rke}=Nke,Mke=kke,Lke=({settings:e,setSettings:t})=>m.jsx(Id,{children:m.jsx(Ese,{settings:e,updateSettings:t,defaultShortUrlsListOrdering:TW})}),Dke=(e,t)=>{e.serviceFactory("Settings",()=>Lke),e.decorator("Settings",ob),e.decorator("Settings",t(["settings"],["setSettings","resetSelectedServer"])),e.serviceFactory("setSettings",()=>Rke)};var zO,m$;function Ike(){return m$||(m$=1,zO=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:a})},r.r=function(n){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,i){if(1&i&&(n=r(n)),8&i||4&i&&typeof n=="object"&&n&&n.__esModule)return n;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:n}),2&i&&typeof n!="string")for(var o in n)r.d(a,o,(function(s){return n[s]}).bind(null,o));return a},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=32)}([function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch{typeof window=="object"&&(r=window)}e.exports=r},function(e,t,r){var n=r(6),i=Object.keys||function(w){var b=[];for(var x in w)b.push(x);return b};e.exports=p;var a=r(5);a.inherits=r(2);var o=r(23),s=r(14);a.inherits(p,o);for(var u=i(s.prototype),l=0;lt in e?JCe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fl=(e,t,r)=>ePe(e,typeof t!="symbol"?t+"":t,r);const tPe=e=>(e==null?void 0:e.type)===xT.INVALID_ARGUMENT,rPe=e=>(e==null?void 0:e.type)===xT.INVALID_SHORT_URL_DELETION,nPe=e=>!!e&&typeof e=="object"&&["type","detail","title","status"].every(t=>t in e),Pi=e=>nPe(e)?e:void 0,$A=e=>"error"in e,fo=({errorData:e,fallbackMessage:t})=>m.jsxs(m.Fragment,{children:[(e==null?void 0:e.detail)??t,tPe(e)&&m.jsxs("p",{className:"mb-0",children:["Invalid elements: [",e.invalidElements.join(", "),"]"]})]}),Yu=({style:e,className:t,...r})=>m.jsx("button",{type:"button",className:Me("border-0",t),style:{backgroundColor:"inherit",fontWeight:"inherit",color:"inherit",...e},...r}),dV=$.createContext(""),iPe=dV.Provider,Nl=()=>$.useContext(dV),hV=$.createContext(void 0),{Provider:FA}=hV,b_=()=>$.useContext(hV),aPe=5,BA=()=>{const[e,t]=$.useState([]),r=$.useMemo(()=>e.length>=aPe,[e.length]),n=$.useCallback(s=>!r&&t(u=>[...u,s]),[r]),i=$.useCallback(s=>!r&&e.every(u=>u.name!==s),[e,r]),a=$.useCallback(s=>t(u=>u.filter(l=>l!==s)),[]),o=$.useCallback(()=>t([]),[]);return{itemsToCompare:e,addItemToCompare:n,removeItemToCompare:a,clearItemsToCompare:o,canAddItemWithName:i}},UA=({className:e,type:t})=>{const r=Nl(),n=b_(),i=$.useMemo(()=>n?encodeURIComponent(n.itemsToCompare.map(u=>u.query).join(",")):"",[n]);if(!n||n.itemsToCompare.length===0)return null;const{itemsToCompare:a,clearItemsToCompare:o,removeItemToCompare:s}=n;return m.jsx("div",{className:Me("top-sticky",e),children:m.jsxs(sr,{bodyClassName:"d-md-flex gap-3 align-items-center",children:[m.jsx("ul",{className:"d-flex flex-wrap gap-1 flex-grow-1 p-0 m-0",children:a.map((u,l)=>{var h;return m.jsxs("li",{className:Me("badge pe-1",{"bg-secondary":!((h=u.style)!=null&&h.backgroundColor)}),style:u.style,children:[u.name,m.jsx(Yu,{"aria-label":`Remove ${u.name}`,className:"fw-bold fs-6",onClick:()=>s(u),children:"×"})]},`${u.name}_${l}`)})}),m.jsxs("div",{className:"d-flex mt-3 mt-md-0",children:[m.jsxs(Rt,{outline:!0,color:"primary",className:"flex-grow-1 indivisible",disabled:a.length<2,tag:nr,to:`${r}/${t}/compare-visits?${t}=${i}`,children:[m.jsx(Ye,{icon:mb,fixedWidth:!0,className:"me-1"}),"Compare (",a.length,"/5) »"]}),m.jsx(Rt,{"aria-label":"Close compare",outline:!0,color:"secondary",className:"ms-2 fw-bold",onClick:o,children:"×"})]})]})})},oPe=(e,{maxVersion:t,minVersion:r})=>{const n=!r||DP(e,r,">=");return(!t||DP(e,t,"<="))&&n},pV={shortUrlVisitsDeletion:{minVersion:"3.6.0"},orphanVisitsDeletion:{minVersion:"3.7.0"},deviceLongUrls:{maxVersion:"3.*.*"},shortUrlRedirectRules:{minVersion:"4.0.0"},urlValidation:{maxVersion:"3.*.*"},ipRedirectCondition:{minVersion:"4.2.0"},geolocationRedirectCondition:{minVersion:"4.3.0"},filterShortUrlsByDomain:{minVersion:"4.3.0"}};Object.freeze(pV);const Zs=(e,t)=>oPe(t==="latest"?"999.99.99":t,pV[e]),mV=e=>({deviceLongUrls:Zs("deviceLongUrls",e),shortUrlVisitsDeletion:Zs("shortUrlVisitsDeletion",e),orphanVisitsDeletion:Zs("orphanVisitsDeletion",e),shortUrlRedirectRules:Zs("shortUrlRedirectRules",e),urlValidation:Zs("urlValidation",e),ipRedirectCondition:Zs("ipRedirectCondition",e),geolocationRedirectCondition:Zs("geolocationRedirectCondition",e),filterShortUrlsByDomain:Zs("filterShortUrlsByDomain",e)}),vV=$.createContext(mV("0.0.0")),sPe=vV.Provider,lPe=e=>$.useMemo(()=>mV(e),[e]),ho=e=>$.useContext(vV)[e],cd="DEFAULT",uy=({className:e="",placement:t,children:r})=>{const n=$.useRef(null);return m.jsxs(m.Fragment,{children:[m.jsx("span",{className:e,ref:n,children:m.jsx(Ye,{icon:Fj})}),m.jsx(ta,{target:n,placement:t,children:r})]})},gV=e=>t=>{t.preventDefault(),e()},zA=(e,t,r=1)=>ST(r,e+1).map(t),uPe=e=>Array.isArray(e)&&e.length===0||typeof e=="string"&&e===""||typeof e=="object"&&Object.keys(e).length===0,_u=e=>e!=null&&!uPe(e),NO=e=>e||null,hj=e=>e?"true":"false",RO=e=>e===void 0?void 0:hj(e),MO=({isLast:e,...t})=>m.jsx(mae,{...t,required:!1,type:"url",placeholder:"No redirect",className:e?"mb-0":""}),cPe=({isOpen:e,toggle:t,domain:r,editDomainRedirects:n})=>{var i,a,o;const[s,u]=$.useState(((i=r.redirects)==null?void 0:i.baseUrlRedirect)??""),[l,h]=$.useState(((a=r.redirects)==null?void 0:a.regular404Redirect)??""),[p,g]=$.useState(((o=r.redirects)==null?void 0:o.invalidShortUrlRedirect)??""),_=gV(async()=>n({domain:r.domain,redirects:{baseUrlRedirect:NO(s),regular404Redirect:NO(l),invalidShortUrlRedirect:NO(p)}}).then(t));return m.jsx(ea,{isOpen:e,toggle:t,centered:!0,children:m.jsxs("form",{name:"domainRedirectsModal",onSubmit:_,children:[m.jsxs(Pl,{toggle:t,children:["Edit redirects for ",m.jsx("b",{children:r.domain})]}),m.jsxs(ss,{children:[m.jsxs(MO,{value:s,onChange:u,children:[m.jsxs(uy,{className:"me-2",placement:"bottom",children:["Visitors accessing the base url, as in ",m.jsxs("b",{children:["https://",r.domain,"/"]}),", will be redirected to this URL."]}),"Base URL"]}),m.jsxs(MO,{value:l,onChange:h,children:[m.jsxs(uy,{className:"me-2",placement:"bottom",children:["Visitors accessing a url not matching a short URL pattern, as in ",m.jsxs("b",{children:["https://",r.domain,"/???/[...]"]}),", will be redirected to this URL."]}),"Regular 404"]}),m.jsxs(MO,{value:p,isLast:!0,onChange:g,children:[m.jsx(uy,{className:"me-2",placement:"bottom",children:"Visitors accessing a url matching a short URL pattern, but not matching an existing short code, will be redirected to this URL."}),"Invalid short URL"]})]}),m.jsxs(gd,{children:[m.jsx(Rt,{color:"link",type:"button",onClick:t,children:"Cancel"}),m.jsx(Rt,{color:"primary",children:"Save"})]})]})})},fPe=({domain:e,editDomainRedirects:t})=>{const[r,n]=Vt(),i=Nl(),a=b_(),o=ho("filterShortUrlsByDomain");return m.jsxs(m.Fragment,{children:[m.jsxs(Eb,{children:[m.jsxs(Qe,{tag:nr,to:`${i}/domain/${e.domain}${e.isDefault?`_${cd}`:""}/visits`,children:[m.jsx(Ye,{icon:$j,fixedWidth:!0})," Visit stats"]}),m.jsxs(Qe,{disabled:!a||!a.canAddItemWithName(e.domain),onClick:()=>a==null?void 0:a.addItemToCompare({name:e.domain,query:e.domain}),children:[m.jsx(Ye,{icon:mb,fixedWidth:!0})," Compare visits"]}),o&&m.jsxs(Qe,{tag:nr,to:`${i}/list-short-urls/1?domain=${e.isDefault?cd:e.domain}`,children:[m.jsx(Ye,{icon:Dj,fixedWidth:!0})," Short URLs"]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{onClick:n,children:[m.jsx(Ye,{icon:Ij,fixedWidth:!0})," Edit redirects"]})]}),m.jsx(cPe,{domain:e,isOpen:r,toggle:n,editDomainRedirects:t})]})},dPe=(e,t)=>{const r=n=>i=>{i.event.composedPath().some(({classList:a})=>a==null?void 0:a.contains("visits-table"))||document.querySelector(".modal")||n()};return lse({delta:40,onSwipedLeft:r(t),onSwipedRight:r(e)})},hPe=(e,t)=>{const[r,n]=$.useState(t),i=$.useCallback(a=>{const{location:o,history:s}=window,u=NF(o.search);u[e]=a,s.pushState(null,"",`${o.pathname}?${mT(u)}`),n(a)},[e]);return[r,i]},VA=e=>{const t=bd();return $.useMemo(()=>{var r;return((r=t[e])==null?void 0:r.split(",").filter(Boolean))??[]},[e,t])},pPe=()=>{const e=mo();return $.useCallback(()=>e(-1),[e])},qA=(e,t)=>{const r=$.useCallback(()=>t(`(max-width: ${e}px)`).matches,[t,e]),[n,i]=$.useState(r());return $.useEffect(()=>{const a=()=>i(r());return window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[r]),n},mPe=(e,t,r)=>{$.useEffect(()=>{if(!r)return()=>{};const n=i=>i.key===e&&t();return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[r,t,e])},vPe=({status:e,matchMedia:t=window.matchMedia})=>{const r=$.useRef(null),n=qA(991,t);return e==="validating"?m.jsx(Ye,{fixedWidth:!0,icon:pb,spin:!0}):m.jsxs(m.Fragment,{children:[m.jsx("span",{ref:r,children:e==="valid"?m.jsx(Ye,{fixedWidth:!0,icon:Lu,className:"text-muted"}):m.jsx(Ye,{fixedWidth:!0,icon:YO,className:"text-danger"})}),m.jsx(ta,{target:r,placement:n?"right":"left",autohide:e==="valid",children:e==="valid"?"Congratulations! This domain is properly configured.":m.jsxs("span",{children:["Oops! There is some missing configuration, and short URLs shared with this domain will not work.",m.jsx("br",{}),"Check the ",m.jsx(_i,{href:"https://slnk.to/multi-domain-docs",children:"documentation"})," in order to find out what is missing."]})})]})},LO=({fallback:e})=>m.jsxs("span",{className:"text-muted",children:[!e&&m.jsx("small",{children:"No redirect"}),e&&m.jsxs(m.Fragment,{children:[e," ",m.jsx("small",{children:"(as fallback)"})]})]}),gPe=()=>m.jsxs(m.Fragment,{children:[m.jsx(Ye,{fixedWidth:!0,icon:TY,className:"text-primary",id:"defaultDomainIcon"}),m.jsx(ta,{target:"defaultDomainIcon",placement:"right",children:"Default domain"})]}),yPe=({domain:e,editDomainRedirects:t,checkDomainHealth:r,defaultRedirects:n})=>{const{domain:i,isDefault:a,redirects:o,status:s}=e;return $.useEffect(()=>{r(e.domain)},[r,e.domain]),m.jsxs("tr",{className:"responsive-table__row",children:[m.jsx("td",{className:"responsive-table__cell","data-th":"Is default domain",children:a&&m.jsx(gPe,{})}),m.jsx("th",{className:"responsive-table__cell","data-th":"Domain",children:i}),m.jsx("td",{className:"responsive-table__cell","data-th":"Base path redirect",children:(o==null?void 0:o.baseUrlRedirect)??m.jsx(LO,{fallback:n==null?void 0:n.baseUrlRedirect})}),m.jsx("td",{className:"responsive-table__cell","data-th":"Regular 404 redirect",children:(o==null?void 0:o.regular404Redirect)??m.jsx(LO,{fallback:n==null?void 0:n.regular404Redirect})}),m.jsx("td",{className:"responsive-table__cell","data-th":"Invalid short URL redirect",children:(o==null?void 0:o.invalidShortUrlRedirect)??m.jsx(LO,{fallback:n==null?void 0:n.invalidShortUrlRedirect})}),m.jsx("td",{className:"responsive-table__cell text-lg-center","data-th":"Status",children:m.jsx(vPe,{status:s})}),m.jsx("td",{className:"responsive-table__cell text-end",children:m.jsx(fPe,{domain:e,editDomainRedirects:t})})]})},C8=[{value:"Is default domain",isHidden:!0},{value:"Domain",isHidden:!1},{value:"Base path redirect",isHidden:!1},{value:"Regular 404 redirect",isHidden:!1},{value:"Invalid short URL redirect",isHidden:!1},{value:"Domain status",isHidden:!0},{value:"Options",isHidden:!0}],bPe=({domainsList:e,filterDomains:t,editDomainRedirects:r,checkDomainHealth:n})=>{var i;const{filteredDomains:a,defaultRedirects:o,loading:s,error:u,errorData:l}=e,h=o??((i=a.find(({isDefault:g})=>g))==null?void 0:i.redirects),p=BA();return s?m.jsx(Bu,{loading:!0}):m.jsxs(FA,{value:p,children:[m.jsx(Cb,{className:"mb-3",onChange:t}),m.jsx(UA,{type:"domains",className:"mb-3"}),u?m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:l,fallbackMessage:"Error loading domains :("})}):m.jsx(sr,{children:m.jsxs("table",{className:"table table-hover responsive-table mb-0",children:[m.jsx("thead",{className:"responsive-table__header",children:m.jsx("tr",{children:C8.map((g,_)=>m.jsx("th",{children:m.jsx("span",{className:g.isHidden?"sr-only":void 0,children:g.value})},_))})}),m.jsxs("tbody",{children:[a.length<1&&m.jsx("tr",{children:m.jsx("td",{colSpan:C8.length,className:"text-center",children:"No results found"})}),a.map(g=>m.jsx(yPe,{domain:g,editDomainRedirects:r,checkDomainHealth:n,defaultRedirects:h},g.domain))]})]})})]})},Wr=(e,t)=>tB(e,t,{serializeError:r=>r}),_Pe="shlink/domainRedirects/EDIT_DOMAIN_REDIRECTS",wPe=e=>Wr(_Pe,async({domain:t,redirects:r})=>{const n=await e().editDomainRedirects({domain:t,...r});return{domain:t,redirects:n}}),qg="shlink/domainsList",Wg={domains:[],filteredDomains:[],loading:!1,error:!1},P8=({domain:e,redirects:t})=>r=>r.domain!==e?r:{...r,redirects:t},E8=(e,t)=>r=>r.domain!==e?r:{...r,status:t},xPe=(e,t,r)=>{const n=Wr(`${qg}/listDomains`,async()=>{const{data:s,defaultRedirects:u}=await e().listDomains();return{domains:s.map(l=>({...l,status:"validating"})),defaultRedirects:u}}),i=Wr(`${qg}/checkDomainHealth`,async s=>{try{const{status:u}=await e().health({domain:s});return{domain:s,status:u==="pass"?"valid":"invalid"}}catch{return{domain:s,status:"invalid"}}}),a=Mn(`${qg}/filterDomains`),{reducer:o}=Nr({name:qg,initialState:Wg,reducers:{},extraReducers:s=>{s.addCase(n.pending,()=>({...Wg,loading:!0})),s.addCase(n.rejected,(u,{error:l})=>({...Wg,error:!0,errorData:Pi(l)})),s.addCase(n.fulfilled,(u,{payload:l})=>({...Wg,...l,filteredDomains:l.domains})),s.addCase(i.fulfilled,({domains:u,filteredDomains:l,...h},{payload:p})=>({...h,domains:u.map(E8(p.domain,p.status)),filteredDomains:l.map(E8(p.domain,p.status))})),s.addCase(a,(u,{payload:l})=>({...u,filteredDomains:u.domains.filter(({domain:h})=>h.toLowerCase().match(l.toLowerCase()))})),s.addCase(t.fulfilled,(u,{payload:l})=>({...u,domains:u.domains.map(P8(l)),filteredDomains:u.filteredDomains.map(P8(l))})),s.addCase(r.fulfilled,(u,{payload:l})=>{l.domain===null||u.domains.some(h=>h.domain===l.domain)||u.domains.push({domain:l.domain,status:"validating",isDefault:!1,redirects:{baseUrlRedirect:null,regular404Redirect:null,invalidShortUrlRedirect:null}})})}});return{reducer:o,listDomains:n,checkDomainHealth:i,filterDomains:a}},SPe=(e,t)=>{e.serviceFactory("ManageDomains",()=>bPe),e.decorator("ManageDomains",t(["domainsList"],["filterDomains","editDomainRedirects","checkDomainHealth"])),e.serviceFactory("domainsListReducerCreator",xPe,"apiClientFactory","editDomainRedirects","createShortUrl"),e.serviceFactory("domainsListReducer",r=>r.reducer,"domainsListReducerCreator"),e.serviceFactory("listDomains",r=>r.listDomains,"domainsListReducerCreator"),e.serviceFactory("filterDomains",r=>r.filterDomains,"domainsListReducerCreator"),e.serviceFactory("editDomainRedirects",wPe,"apiClientFactory"),e.serviceFactory("checkDomainHealth",r=>r.checkDomainHealth,"domainsListReducerCreator")},j8="shlink/mercure",OPe={loading:!0,error:!1},CPe=e=>{const t=Wr(`${j8}/loadMercureInfo`,n=>{if(n&&n.realTimeUpdates&&!n.realTimeUpdates.enabled)throw new Error("Real time updates not enabled");return e().mercureInfo()}),{reducer:r}=Nr({name:j8,initialState:OPe,reducers:{},extraReducers:n=>{n.addCase(t.pending,i=>({...i,loading:!0,error:!1})),n.addCase(t.rejected,i=>({...i,loading:!1,error:!0})),n.addCase(t.fulfilled,(i,{payload:a})=>({...a,loading:!1,error:!1}))}});return{loadMercureInfo:t,reducer:r}},PPe=e=>{e.serviceFactory("mercureInfoReducerCreator",CPe,"apiClientFactory"),e.serviceFactory("mercureInfoReducer",t=>t.reducer,"mercureInfoReducerCreator"),e.serviceFactory("loadMercureInfo",t=>t.loadMercureInfo,"mercureInfoReducerCreator")};function Sr(e){return $.useMemo(()=>e,[e])}function Or(e,t){return(r,n=globalThis.console)=>(t.forEach(i=>{const a=r[i];e[i]=a}),e)}const EPe=(e,t,r,n)=>{const{mercureHubUrl:i,token:a,loading:o,error:s}=e;if(o||s||!i)return;const u=({data:p})=>r(JSON.parse(p)),l=({status:p})=>p===401&&n(),h=t.map(p=>{const g=new URL(i);g.searchParams.append("topic",p);const _=new fse.EventSourcePolyfill(g,{headers:{Authorization:`Bearer ${a}`}});return _.onmessage=u,_.onerror=l,_});return()=>h.forEach(p=>p.close())};function Ra(e,t){const r=new Set;return n=>{const{createNewVisits:i,loadMercureInfo:a,mercureInfo:o}=n,s=md();return $.useEffect(()=>{const{interval:u}=o,l=_=>u?r.add(_):i([_]),h=t(s),p=EPe(o,h,l,a);if(!u)return p;const g=setInterval(()=>{i([...r]),r.clear()},u*1e3*60);return()=>{clearInterval(g),p==null||p()}},[i,a,o,s]),m.jsx(e,{...n})}}class Dn{}fl(Dn,"visits","https://shlink.io/new-visit"),fl(Dn,"orphanVisits","https://shlink.io/new-orphan-visit"),fl(Dn,"shortUrlVisits",e=>`https://shlink.io/new-visit/${e}`);const Md=Mn("shlink/visitCreation/createNewVisits",e=>({payload:{createdVisits:e}})),xp=(e,t,r)=>r==null?e.shortCode===t&&!e.domain:e.shortCode===t&&e.domain===r,jPe=(e,t)=>!e.domain&&t===cd?!0:e.domain===t,TPe=(e,t)=>{const r=(t==null?void 0:t.validateUrls)??!1;return e?{longUrl:e.longUrl,tags:e.tags,title:e.title??void 0,domain:e.domain??void 0,validSince:e.meta.validSince??void 0,validUntil:e.meta.validUntil??void 0,maxVisits:e.meta.maxVisits??void 0,crawlable:e.crawlable,forwardQuery:e.forwardQuery,deviceLongUrls:e.deviceLongUrls&&{android:e.deviceLongUrls.android??void 0,ios:e.deviceLongUrls.ios??void 0,desktop:e.deviceLongUrls.desktop??void 0},validateUrl:r}:{longUrl:"",validateUrl:r}},yV=e=>e.replaceAll("/","__"),WA=e=>e.replaceAll("__","/"),HA=({domain:e,shortCode:t})=>`${e??cd}__${yV(t)}`,bV=e=>{const[t,r]=e.split(/__(.+)/);if(!r)throw new Error(`It was not possible to parse domain and short code from "${e}"`);return{domain:t===cd?null:t,shortCode:WA(r)}},GA="shlink/shortUrlDeletion",T8={shortCode:"",loading:!1,deleted:!1,error:!1},APe=e=>Wr(`${GA}/deleteShortUrl`,async({shortCode:t,domain:r})=>(await e().deleteShortUrl({shortCode:t,domain:r}),{shortCode:t,domain:r})),_V=Mn(`${GA}/shortUrlDeleted`),kPe=e=>{const{actions:t,reducer:r}=Nr({name:GA,initialState:T8,reducers:{resetDeleteShortUrl:()=>T8},extraReducers:i=>{i.addCase(e.pending,a=>({...a,loading:!0,error:!1,deleted:!1})),i.addCase(e.rejected,(a,{error:o})=>({...a,errorData:Pi(o),loading:!1,error:!0,deleted:!1})),i.addCase(e.fulfilled,(a,{payload:o})=>({...a,shortCode:o.shortCode,loading:!1,error:!1,deleted:!0}))}}),{resetDeleteShortUrl:n}=t;return{reducer:r,resetDeleteShortUrl:n}},wV="shlink/shortUrlsList",xV=5,NPe={loading:!0,error:!1},RPe=e=>Wr(`${wV}/listShortUrls`,t=>e().listShortUrls(t??{})),MPe=(e,t,r)=>Nr({name:wV,initialState:NPe,reducers:{},extraReducers:n=>{n.addCase(e.pending,i=>({...i,loading:!0,error:!1})),n.addCase(e.rejected,()=>({loading:!1,error:!0})),n.addCase(e.fulfilled,(i,{payload:a})=>({loading:!1,error:!1,shortUrls:a})),n.addCase(r.fulfilled,(i,{payload:a})=>{i.shortUrls&&(i.shortUrls.data=[a,...i.shortUrls.data.slice(0,xV-1)],i.shortUrls.pagination.totalItems+=1)}),n.addCase(t.fulfilled,(i,{payload:a})=>{i.shortUrls&&(i.shortUrls.data=i.shortUrls.data.map(o=>{const{shortCode:s,domain:u}=a;return xp(o,s,u)?a:o}))}),n.addCase(_V,(i,{payload:a})=>{i.shortUrls&&(i.shortUrls.data=i.shortUrls.data.filter(o=>!xp(o,a.shortCode,a.domain)),i.shortUrls.pagination.totalItems-=1)}),n.addCase(Md,(i,{payload:a})=>{i.shortUrls&&(i.shortUrls.data=i.shortUrls.data.map(o=>{var s;return((s=a.createdVisits.findLast(({shortUrl:u})=>u&&xp(o,u.shortCode,u.domain)))==null?void 0:s.shortUrl)??o}))})}}),LPe=new Intl.NumberFormat("en-US"),jr=e=>LPe.format(Number(e)),A8=10,DPe=e=>Math.ceil(e/A8)*A8,pj=({children:e,title:t,link:r,tooltip:n})=>{const i=vl();return m.jsxs(m.Fragment,{children:[m.jsxs(Ji,{innerRef:i,className:"highlight-card",body:!0,tag:nr,to:r,children:[m.jsx(Ye,{size:"3x",className:"highlight-card__link-icon",icon:Ase}),m.jsx(_F,{className:"lh-sm fw-semibold text-uppercase fs-5 highlight-card__title",children:t}),m.jsx(bF,{className:"fs-2 fw-semibold lh-sm",children:e})]}),n&&m.jsx(ta,{target:i,placement:"bottom",children:n})]})},k8=({loading:e,excludeBots:t,visitsSummary:r,...n})=>m.jsx(pj,{tooltip:r.bots!==void 0?m.jsxs(m.Fragment,{children:[t?"Plus":"Including"," ",m.jsx("strong",{children:jr(r.bots)})," potential bot visits"]}):void 0,...n,children:e?"Loading...":jr(t&&r.nonBots!==void 0?r.nonBots:r.total)}),N8=({children:e,titleLinkText:t,titleLink:r,title:n})=>m.jsxs(Ji,{children:[m.jsxs(Dm,{className:"d-flex justify-content-between align-items-center",children:[m.jsx("span",{className:"d-sm-none",children:n}),m.jsx("h5",{className:"d-none d-sm-inline m-0",children:n}),m.jsxs(nr,{to:r,children:[t," »"]})]}),m.jsx(Lm,{children:e})]}),SV=Ra(({shortUrlsList:e,listShortUrls:t,tagsList:r,loadVisitsOverview:n,visitsOverview:i})=>{const{ShortUrlsTable:a,CreateShortUrl:o}=Sr(SV),{loading:s,shortUrls:u}=e,{loading:l}=r,{loading:h,nonOrphanVisits:p,orphanVisits:g}=i,_=Nl(),w=mo(),b=Hr("visits");return $.useEffect(()=>{t({itemsPerPage:xV,orderBy:{field:"dateCreated",dir:"DESC"}}),n()},[t,n]),m.jsxs(m.Fragment,{children:[m.jsxs(Qa,{children:[m.jsx("div",{className:"col-lg-6 col-xl-3 mb-3",children:m.jsx(k8,{title:"Visits",link:`${_}/non-orphan-visits`,excludeBots:(b==null?void 0:b.excludeBots)??!1,loading:h,visitsSummary:p})}),m.jsx("div",{className:"col-lg-6 col-xl-3 mb-3",children:m.jsx(k8,{title:"Orphan visits",link:`${_}/orphan-visits`,excludeBots:(b==null?void 0:b.excludeBots)??!1,loading:h,visitsSummary:g})}),m.jsx("div",{className:"col-lg-6 col-xl-3 mb-3",children:m.jsx(pj,{title:"Short URLs",link:`${_}/list-short-urls/1`,children:s?"Loading...":jr((u==null?void 0:u.pagination.totalItems)??0)})}),m.jsx("div",{className:"col-lg-6 col-xl-3 mb-3",children:m.jsx(pj,{title:"Tags",link:`${_}/manage-tags`,children:l?"Loading...":jr(r.tags.length)})})]}),m.jsxs("div",{className:"d-flex flex-column gap-3",children:[m.jsx(N8,{title:"Create a short URL",titleLinkText:"Advanced options",titleLink:`${_}/create-short-url`,children:m.jsx(o,{basicMode:!0})}),m.jsx(N8,{title:"Recently created URLs",titleLinkText:"See all",titleLink:`${_}/list-short-urls/1`,children:m.jsx(a,{shortUrlsList:e,className:"mb-0",onTagClick:x=>w(`${_}/list-short-urls/1?tags=${encodeURIComponent(x)}`)})})]})]})},()=>[Dn.visits,Dn.orphanVisits]),IPe=Or(SV,["ShortUrlsTable","CreateShortUrl"]);function $Pe(e,t){e.factory("Overview",IPe),e.decorator("Overview",t(["shortUrlsList","tagsList","mercureInfo","visitsOverview"],["listShortUrls","createNewVisits","loadMercureInfo","loadVisitsOverview"]))}const OV="shlink/setShortUrlRedirectRules",R8={saving:!1,saved:!1,error:!1},FPe=e=>Wr(`${OV}/setShortUrlRedirectRules`,({shortUrl:t,data:r})=>{const{shortCode:n,domain:i}=t;return e().setShortUrlRedirectRules({shortCode:n,domain:i},r)}),BPe=e=>{const{reducer:t,actions:r}=Nr({name:OV,initialState:R8,reducers:{resetSetRules:()=>R8},extraReducers:i=>{i.addCase(e.pending,()=>({saving:!0,saved:!1,error:!1})),i.addCase(e.rejected,(a,{error:o})=>({saving:!1,saved:!1,error:!0,errorData:Pi(o)})),i.addCase(e.fulfilled,()=>({saving:!1,error:!1,saved:!0}))}}),{resetSetRules:n}=r;return{reducer:t,resetSetRules:n}},CV="shlink/getShortUrlRedirectRules",UPe={loading:!0,error:!1},zPe=e=>Wr(`${CV}/getShortUrlRedirectRules`,({shortCode:t,domain:r})=>e().getShortUrlRedirectRules({shortCode:t,domain:r})),VPe=e=>Nr({name:CV,initialState:UPe,reducers:{},extraReducers:t=>{t.addCase(e.pending,()=>({loading:!0,error:!1})),t.addCase(e.rejected,()=>({loading:!1,error:!0})),t.addCase(e.fulfilled,(r,{payload:n})=>({loading:!1,error:!1,...n}))}});function fn(e){e.preventDefault()}function Rl(e){e.stopPropagation()}function PV(){const e=new Map;return[function(t,r){e.get(t)&&e.get(t).forEach(n=>{n(r)})},function(t,r){const n=e.get(t)??[];n.push(r),e.set(t,n)}]}var[EV,jV]=PV();function qPe(e,t){return e.source===t.source&&e.flags.split("").sort().join("")===t.flags.split("").sort().join("")}function Of(e,t,r=!0,n=["__key"]){if(e===t)return!0;if(typeof t=="object"&&typeof e=="object"&&e!==null&&t!==null){if(e instanceof Map||e instanceof Set)return!1;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return qPe(e,t);if(e===null||t===null)return!1;const i=e,a=t;if(Object.keys(i).length!==Object.keys(a).length)return!1;for(const o of n)if((o in i||o in a)&&i[o]!==a[o])return!1;for(const o in i)if(!(o in a)||i[o]!==a[o]&&!r||r&&!Of(i[o],a[o],r,n))return!1;return!0}return!1}function TV(e){return e.split(" ").filter(t=>t)}function Ld(e){return{x:e.clientX,y:e.clientY}}Array();var KA=typeof window<"u",wn=new WeakMap,po=new WeakMap;function M8(){return KA?"ontouchstart"in window||navigator.maxTouchPoints>0:!1}var WPe={activeDescendant:void 0,affectedNodes:[],coordinates:{x:0,y:0},currentTargetValue:void 0,on:jV,emit:EV,newActiveDescendant:void 0,originalZIndex:void 0,pointerSelection:!1,preventEnter:!1,rootUserSelect:void 0,nodePointerdown:void 0,longPress:!1,scrolling:!1,longPressTimeout:void 0,remapJustFinished:!1,selectedNodes:[],selectedParent:void 0,preventSynthDrag:!1,pointerDown:void 0},Ge=WPe,_l=!1,L8,D8,DO,fd=!1,_m=!1;function HPe(){Ge={activeDescendant:void 0,affectedNodes:[],coordinates:{x:0,y:0},on:jV,emit:EV,currentTargetValue:void 0,originalZIndex:void 0,pointerId:void 0,preventEnter:!1,remapJustFinished:!1,selectedNodes:[],nodePointerdown:void 0,rootUserSelect:void 0,preventSynthDrag:!1,scrolling:!1,selectedParent:void 0,pointerSelection:!1,synthScrollDirection:void 0,draggedNodeDisplay:void 0,synthDragScrolling:!1,longPress:!1,pointerDown:void 0,longPressTimeout:void 0}}function AV(e){return Object.assign(Ge,e),e.initialParent.data.emit("dragStarted",Ge),_l=!1,Ge.emit("dragStarted",Ge),Ge}function GPe(e){Ge.activeState&&is(Ge.activeState.parent,void 0,Ge),Ge.selectedState&&dl(Ge.selectedState.nodes,Ge.selectedState.parent,Ge),Ge.selectedState=Ge.activeState=void 0,e.pointerType==="mouse"?_m=!0:(e.pointerType==="touch"||e.pointerType==="pen")&&(_m=!1)}function KPe(e){if(fn(e),Ge.pointerDown&&(Ge.pointerDown.node.el.draggable=!0),Ge.pointerDown=void 0,!oo(Ge))return;const t=Ge.currentParent.data.config;oo(Ge)&&t.handleEnd(Ge)}function YPe(e){e.key==="Escape"&&(Ge.selectedState&&dl(Ge.selectedState.nodes,Ge.selectedState.parent,Ge),Ge.activeState&&is(Ge.activeState.parent,void 0,Ge),Ge.selectedState=Ge.activeState=void 0)}function ZPe(e){if(!ao(Ge))return;_l=!0;const t=Ge.initialParent.data.config.handleEnd;t(Ge)}function XPe(e){ao(Ge)&&fn(e)}function QPe(e){if(!Ge.pointerDown||!Ge.pointerDown.validated)return;const t=Ge.pointerDown.parent.data.config;if(!(_m||e.pointerType==="mouse"))if(!oo(Ge)&&(fd||!fd&&!t.nativeDrag)){if(fn(e),t.longPress&&!Ge.longPress){clearTimeout(Ge.longPressTimeout),Ge.longPress=!1;return}const r=t.draggedNodes(Ge.pointerDown);t.dragstartClasses(Ge.pointerDown.node,r,t,!0);const n=jEe(Ge.pointerDown.node,Ge.pointerDown.parent,e,Ge,r);Ge.rootUserSelect=window.getComputedStyle(document.documentElement).userSelect,document.body.style.userSelect="none",I8(e,n)}else oo(Ge)&&I8(e,Ge)}function JPe({parent:e,getValues:t,setValues:r,config:n={}}){var i,a,o;if(!KA)return;if(fd=M8(),!L8){L8=wm(document,{dragover:XPe,pointerdown:GPe,pointerup:KPe,keydown:YPe,drop:ZPe,pointermove:QPe,pointercancel:di(n.handlePointercancel),touchmove:p=>{ao(Ge)&&p.cancelable&&fn(p)}});const h=document.createElement("div");MV(h,{"aria-live":"polite","aria-atomic":"true","data-dnd-live-region":"true"}),Object.assign(h.style,{position:"absolute",top:"0px",left:"-9999px",width:"1px",height:"1px",padding:"0",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"}),document.body.appendChild(h)}D8||(D8=wm(window,{resize:()=>{fd=M8()}})),RV(e);const[s,u]=PV(),l={getValues:t,setValues:r,config:{dragDropEffect:n.dragDropEffect??"move",dragEffectAllowed:n.dragEffectAllowed??"move",draggedNodes:dEe,dragstartClasses:vEe,handleNodeKeydown:yEe,handleParentKeydown:bEe,handleDragstart:pEe,handleNodeDragover:kEe,handleParentDragover:NEe,handleNodeDrop:wEe,handleNodeFocus:xEe,handleNodeBlur:SEe,handlePointercancel:CEe,handleEnd:PEe,handleDragend:OEe,handleParentFocus:tEe,handleNodePointerup:EEe,handleNodePointerover:_Ee,handleParentPointerover:REe,handleParentScroll:hEe,handleNodePointerdown:mEe,handleNodeDragenter:MEe,handleNodeDragleave:LEe,handleParentDrop:nEe,multiDrag:n.multiDrag??!1,nativeDrag:n.nativeDrag??!0,performSort:eEe,performTransfer:rEe,root:n.root??document,setupNode:aEe,setupNodeRemap:LV,reapplyDragClasses:oEe,tearDownNode:lEe,tearDownNodeRemap:sEe,remapFinished:cEe,threshold:{horizontal:0,vertical:0},...n},enabledNodes:[],abortControllers:{},privateClasses:[],on:u,emit:s};new MutationObserver(uEe).observe(e,{childList:!0}),wn.set(e,l),(i=n.plugins)==null||i.forEach(h=>{var p,g;(g=(p=h(e))==null?void 0:p.tearDown)==null||g.call(p)}),(a=n.plugins)==null||a.forEach(h=>{var p,g;(g=(p=h(e))==null?void 0:p.tearDown)==null||g.call(p)}),(o=n.plugins)==null||o.forEach(h=>{var p,g;(g=(p=h(e))==null?void 0:p.setup)==null||g.call(p)}),iEe(e,l),__(e,!0)}function kV(e,t,r,n,i,a){const{x:o,y:s}=Ld(r),u=e.el.getBoundingClientRect();return{affectedNodes:[],ascendingDirection:!1,clonedDraggedEls:[],coordinates:{x:o,y:s},draggedNode:{el:e.el,data:e.data},draggedNodes:n,incomingDirection:void 0,initialIndex:e.data.index,initialParent:{el:t.el,data:t.data},currentParent:{el:t.el,data:t.data},longPress:t.data.config.longPress??!1,longPressTimeout:void 0,currentTargetValue:e.data.value,scrollEls:[],startLeft:i||o-u.left,startTop:a||s-u.top,targetIndex:e.data.index,transferred:!1}}function eEe({parent:e,draggedNodes:t,targetNodes:r}){__(e.el);const n=t.map(u=>u.data.value),i=dd(e.el,e.data),a=t[0].data.index,o=[...e.data.enabledNodes],s=[...i.filter(u=>!n.some(l=>Of(u,l)))];s.splice(r[0].data.index,0,...n),"draggedNode"in Ge&&(Ge.currentTargetValue=r[0].data.value),mj(e.el,e.data,[...s]),e.data.config.onSort&&e.data.config.onSort({parent:{el:e.el,data:e.data},previousValues:[...i],previousNodes:[...o],nodes:[...e.data.enabledNodes],values:[...s],draggedNodes:t,previousPosition:a,position:r[0].data.index,targetNodes:r,state:Ge})}function is(e,t,r){var n;const i=e.data.config.activeDescendantClass;if(r.activeState&&(Oa([r.activeState.node.el],i),r.activeState.parent.el!==e.el&&r.activeState.parent.el.setAttribute("aria-activedescendant","")),!t){(n=r.activeState)==null||n.parent.el.setAttribute("aria-activedescendant",""),r.activeState=void 0;return}r.activeState={node:t,parent:e},Mu([t.el],i),r.activeState.parent.el.setAttribute("aria-activedescendant",r.activeState.node.el.id)}function dl(e,t,r){const n=t.data.config.selectedClass;if(!r.selectedState)return;const i=Array.from(e);Oa(e.map(a=>a.el),n);for(const a of i){a.el.setAttribute("aria-selected","false");const o=r.selectedState.nodes.findIndex(s=>s.el===a.el);o!==-1&&r.selectedState.nodes.splice(o,1)}NV(t)}function ju(e,t,r,n,i=!1){n.pointerSelection=i;for(const o of t)o.el.setAttribute("aria-selected","true"),Mu([o.el],e.data.config.selectedClass,!0);n.selectedState={nodes:t,parent:e};const a=t.map(o=>o.el.getAttribute("aria-label"));if(a.length===0){n.selectedState=void 0,NV(e);return}is(e,r,n),cy(e,`${a.join(", ")} ready for dragging. Use arrow keys to navigate. Press enter to drop ${a.join(", ")}.`)}function cy(e,t){const r=document.querySelector('[data-dnd-live-region="true"]');r&&(r.id=e.el.id+"-live-region",r.textContent=t)}function NV(e){const t=document.getElementById(e.el.id+"-live-region");t&&(t.textContent="")}function tEe(e,t){const r=e.targetData.parent.data.enabledNodes[0];r&&(t.selectedState&&t.selectedState.parent.el!==e.targetData.parent.el?is(e.targetData.parent,r,t):t.selectedState||is(e.targetData.parent,r,t))}function rEe({currentParent:e,targetParent:t,initialParent:r,draggedNodes:n,initialIndex:i,targetNodes:a,state:o}){__(r.el);const s=n.map(g=>g.data.value),u=[...dd(e.el,e.data).filter(g=>!s.some(_=>Of(g,_)))],l=dd(t.el,t.data),h=r.el===t.el&&t.data.config.sortable===!1;let p;a.length?(h?p=i:t.data.config.sortable===!1?p=t.data.enabledNodes.length:p=a[0].data.index,l.splice(p,0,...s)):(p=h?i:t.data.enabledNodes.length,l.splice(p,0,...s)),mj(e.el,e.data,u),mj(t.el,t.data,l),t.data.config.onTransfer&&t.data.config.onTransfer({sourceParent:e,targetParent:t,initialParent:r,draggedNodes:n,targetIndex:p,state:o,targetNodes:a}),e.data.config.onTransfer&&e.data.config.onTransfer({sourceParent:e,targetParent:t,initialParent:r,draggedNodes:n,targetIndex:p,state:o,targetNodes:a||[]})}function dd(e,t){return[...t.getValues(e)]}function mj(e,t,r){t.setValues(r,e)}function nEe(e,t){Rl(e.e),_l=!0;const r=t.initialParent.data.config.handleEnd;r(t)}function RV(e){const t=wn.get(e);t&&t.abortControllers.mainParent&&t.abortControllers.mainParent.abort()}function ao(e){return"draggedNode"in e&&!!e.draggedNode}function oo(e){return"synthDragging"in e&&!!e.synthDragging}function iEe(e,t){t.abortControllers.mainParent=wm(e,{keydown:Gh(t.config.handleParentKeydown),dragover:Gh(t.config.handleParentDragover),handleParentPointerover:t.config.handleParentPointerover,scroll:Gh(t.config.handleParentScroll),drop:Gh(t.config.handleParentDrop),hasNestedParent:r=>{const n=wn.get(r.target);n&&(n.nestedParent=r.detail.parent)},focus:Gh(t.config.handleParentFocus)}),t.config.externalDragHandle&&t.config.externalDragHandle.el&&t.config.externalDragHandle.callback&&(t.abortControllers.externalDragHandle=wm(t.config.externalDragHandle.el,{pointerdown:r=>{if(!t.config.externalDragHandle||!t.config.externalDragHandle.callback)return;const n=t.config.externalDragHandle.callback();if(!x_(n)){console.warn("No draggable item found from external drag handle callback");return}const i=po.get(n);if(!i)return;const a=n.parentNode;if(!(a instanceof HTMLElement))return;const o=wn.get(a);o&&(Ge.pointerDown={parent:{el:a,data:o},node:{el:n,data:i},validated:!0},n.draggable=!0)}})),e.id&&MV(e,{role:"listbox",tabindex:"0","aria-multiselectable":t.config.multiDrag?"true":"false","aria-activedescendant":"","aria-describedby":e.id+"-live-region"})}function MV(e,t){for(const r in t)e.setAttribute(r,t[r])}function aEe(e){var t;const r=e.parent.data.config;e.node.data.abortControllers.mainNode=wm(e.node.el,{keydown:di(r.handleNodeKeydown),dragstart:di(r.handleDragstart),dragover:di(r.handleNodeDragover),dragenter:di(r.handleNodeDragenter),dragleave:di(r.handleNodeDragleave),dragend:di(r.handleDragend),drop:di(r.handleNodeDrop),focus:di(r.handleNodeFocus),blur:di(r.handleNodeBlur),pointerup:di(r.handleNodePointerup),pointercancel:di(r.handlePointercancel),pointerdown:di(r.handleNodePointerdown),handleNodePointerover:r.handleNodePointerover,touchmove:n=>{ao(Ge)&&n.cancelable&&fn(n)},contextmenu:n=>{fd&&fn(n)}}),e.node.el.setAttribute("role","option"),e.node.el.setAttribute("aria-selected","false"),e.node.el.draggable=!0,r.reapplyDragClasses(e.node.el,e.parent.data),(t=e.parent.data.config.plugins)==null||t.forEach(n=>{var i,a;(a=(i=n(e.parent.el))==null?void 0:i.setupNode)==null||a.call(i,e)})}function LV(e){var t;po.set(e.node.el,e.node.data),(t=e.parent.data.config.plugins)==null||t.forEach(r=>{var n,i;(i=(n=r(e.parent.el))==null?void 0:n.setupNodeRemap)==null||i.call(n,e)})}function oEe(e,t){if(!ao(Ge))return;const r=oo(Ge)?t.config.synthDropZoneClass:t.config.dropZoneClass;Ge.draggedNode.el===e&&Mu([e],r,!0)}function sEe(e){var t;(t=e.parent.data.config.plugins)==null||t.forEach(r=>{var n,i;(i=(n=r(e.parent.el))==null?void 0:n.tearDownNodeRemap)==null||i.call(n,e)})}function lEe(e){var t,r,n,i,a;(t=e.parent.data.config.plugins)==null||t.forEach(o=>{var s,u;(u=(s=o(e.parent.el))==null?void 0:s.tearDownNode)==null||u.call(s,e)}),e.node.el.draggable=!1,(n=(r=e.node.data)==null?void 0:r.abortControllers)!=null&&n.mainNode&&((a=(i=e.node.data)==null?void 0:i.abortControllers)==null||a.mainNode.abort())}function uEe(e){if(e.length===1&&e[0].addedNodes.length===1&&!(e[0].addedNodes[0]instanceof HTMLElement))return;const t=e[0].target;if(!(t instanceof HTMLElement))return;const r=document.querySelectorAll('[aria-selected="true"]'),n=wn.get(t);if(n){for(let i=0;i_.data.value===p.value);g&&(g.el=l)}s.push({el:l,data:p}),(t||!h)&&a.setupNode({parent:{el:e,data:n},node:{el:l,data:p}}),LV({parent:{el:e,data:n},node:{el:l,data:p}})}wn.set(e,{...n,enabledNodes:s}),a.remapFinished(n),(r=n.config.plugins)==null||r.forEach(u=>{var l,h;(h=(l=u(e))==null?void 0:l.remapFinished)==null||h.call(l)})}function cEe(){Ge.remapJustFinished=!0,"draggedNode"in Ge&&(Ge.affectedNodes=[])}function fEe(e){return!!e.targetData.parent.data.config.nativeDrag}function dEe(e){var t;if(e.parent.data.config.multiDrag){if(Ge.selectedState)return[e.node,...(t=Ge.selectedState)==null?void 0:t.nodes.filter(r=>r.el!==e.node.el)]}else return[e.node];return[]}function hEe(e){ao(Ge)&&(Ge.emit("scrollStarted",Ge),!oo(Ge)&&(Ge.preventEnter=!0,DO&&clearTimeout(DO),DO=setTimeout(()=>{Ge.preventEnter=!1,Ge.emit("scrollEnded",Ge)},100)))}function pEe(e,t){const r=e.targetData.parent.data.config;if(!r.nativeDrag||!fEe(e)||!DV({x:e.e.clientX,y:e.e.clientY,node:e.targetData.node,config:r})){fn(e.e);return}const n=r.draggedNodes({parent:e.targetData.parent,node:e.targetData.node});r.dragstartClasses(e.targetData.node,n,r);const i=gEe(e,n);r.onDragstart&&r.onDragstart({parent:e.targetData.parent,values:dd(e.targetData.parent.el,e.targetData.parent.data),draggedNode:i.draggedNode,draggedNodes:i.draggedNodes,position:i.initialIndex,state:i})}function mEe(e,t){var r,n;if(Rl(e.e),t.pointerDown={parent:e.targetData.parent,node:e.targetData.node,validated:!1},e.e.pointerType==="mouse"?_m=!0:(e.e.pointerType==="touch"||e.e.pointerType==="pen")&&(_m=!1),!DV({x:e.e.clientX,y:e.e.clientY,node:e.targetData.node,config:e.targetData.parent.data.config}))return;t.pointerDown={parent:e.targetData.parent,node:e.targetData.node,validated:!0},TEe(e,t,e.targetData.node);const i=e.targetData.parent.data;let a=[e.targetData.node];const o=e.e.ctrlKey||e.e.metaKey,s=e.e.shiftKey,u=e.targetData.node;if(o&&i.config.multiDrag){t.selectedState?t.selectedState.nodes.findIndex(l=>l.el===u.el)===-1?a=[...t.selectedState.nodes,u]:a=t.selectedState.nodes.filter(l=>l.el!==u.el):a=[u],ju(e.targetData.parent,a,e.targetData.node,t,!0);return}if(s&&i.config.multiDrag){const l=e.targetData.parent.data.enabledNodes;if(t.selectedState&&t.activeState)if(t.selectedState.parent.el!==e.targetData.parent.el){dl(t.selectedState.nodes,t.selectedState.parent,t),t.selectedState=void 0;for(let h=0;h<=u.data.index;h++)a.push(l[h])}else{const[h,p]=t.activeState.node.data.indexl.el===e.targetData.node.el)===-1&&(t.selectedState.parent.el!==e.targetData.parent.el?dl(t.selectedState.nodes,e.targetData.parent,t):i.config.multiDrag&&fd?a.push(...t.selectedState.nodes):dl(t.selectedState.nodes,e.targetData.parent,t),ju(e.targetData.parent,a,e.targetData.node,t,!0)):ju(e.targetData.parent,[e.targetData.node],e.targetData.node,t,!0)}function vEe(e,t,r,n=!1){Mu(t.map(i=>i.el),n?r.synthDraggingClass:r.draggingClass),setTimeout(()=>{Oa(t.map(i=>i.el),n?r.synthDraggingClass:r.draggingClass),Mu(t.map(i=>i.el),n?r.synthDragPlaceholderClass:r.dragPlaceholderClass),Mu(t.map(i=>i.el),n?r.synthDropZoneClass:r.dropZoneClass),Oa(t.map(i=>i.el),r.activeDescendantClass),Oa(t.map(i=>i.el),r.selectedClass)})}function gEe(e,t){Rl(e.e);const r=AV(kV(e.targetData.node,e.targetData.parent,e.e,t));if(e.e.dataTransfer){const n=e.targetData.parent.data.config;e.e.dataTransfer.dropEffect=n.dragDropEffect,e.e.dataTransfer.effectAllowed=n.dragEffectAllowed;let i;if(n.dragImage)i=n.dragImage(e,t);else{if(n.multiDrag){const a=document.createElement("div");for(const s of t){const u=s.el.cloneNode(!0);u.style.pointerEvents="none",u.id=s.el.id+"-clone",a.append(u)}const{width:o}=t[0].el.getBoundingClientRect();Object.assign(a.style,{display:"flex",flexDirection:"column",width:`${o}px`,position:"absolute",pointerEvents:"none",zIndex:"9999",left:"-9999px"}),i=a}else{e.e.dataTransfer.setDragImage(e.targetData.node.el,e.e.offsetX,e.e.offsetY);const a=e.targetData.node.el.style.zIndex;return r.originalZIndex=a,e.targetData.node.el.style.zIndex="9999",r}document.body.appendChild(i)}e.e.dataTransfer.setDragImage(i,e.e.offsetX,e.e.offsetY),setTimeout(()=>{i==null||i.remove()})}return r}function DV({x:e,y:t,node:r,config:n}){if(n.externalDragHandle)return!1;if(!n.dragHandle)return!0;const i=r.el.querySelectorAll(n.dragHandle);if(!i)return!1;const a=n.root.elementFromPoint(e,t);if(!a)return!1;for(const o of Array.from(i))if(a===o||o.contains(a))return!0;return!1}function yEe(e){}function bEe(e,t){var r;const n=(r=t.activeState)==null?void 0:r.node;if(!n)return;const i=e.targetData.parent.data,a=i.enabledNodes;if(!(e.e.target instanceof HTMLElement))return;const o=a.findIndex(s=>s.el===n.el);if(o!==-1){if(["ArrowDown","ArrowUp","ArrowRight","ArrowLeft"].includes(e.e.key)){e.e.target===e.targetData.parent.el&&fn(e.e);const s=e.e.key==="ArrowDown"||e.e.key==="ArrowRight"?o+1:o-1;if(s<0||s>=a.length)return;const u=a[s];is(e.targetData.parent,u,t)}else if(e.e.key===" ")e.e.target===e.targetData.parent.el&&fn(e.e),t.selectedState&&t.selectedState.nodes.includes(n)?ju(e.targetData.parent,t.selectedState.nodes.filter(s=>s.el!==n.el),n,t):ju(e.targetData.parent,[n],n,t);else if(e.e.key==="Enter"&&t.selectedState)if(t.selectedState.parent.el===e.targetData.parent.el&&t.activeState){if(t.selectedState.nodes[0].el===t.activeState.node.el){cy(e.targetData.parent,"Cannot drop item on itself");return}t.newActiveDescendant=t.selectedState.nodes[0],i.config.performSort({parent:e.targetData.parent,draggedNodes:t.selectedState.nodes,targetNodes:[t.activeState.node]}),dl([],e.targetData.parent,t),cy(e.targetData.parent,"Drop successful")}else t.activeState&&t.selectedState.parent.el!==e.targetData.parent.el&&$V({currentParent:e.targetData.parent,targetParent:t.selectedState.parent,initialParent:t.selectedState.parent,draggedNodes:t.selectedState.nodes,state:t})&&(i.config.performTransfer({currentParent:t.selectedState.parent,targetParent:e.targetData.parent,initialParent:t.selectedState.parent,draggedNodes:t.selectedState.nodes,initialIndex:t.selectedState.nodes[0].data.index,state:t,targetNodes:[t.activeState.node]}),t.newActiveDescendant=t.selectedState.nodes[0],ju(e.targetData.parent,[],void 0,t),cy(e.targetData.parent,"Drop successful"))}}function _Ee(e){e.detail.targetData.parent.el===e.detail.state.currentParent.el?FV(e.detail,e.detail.state):w_(e.detail,e.detail.state)}function wEe(e,t){const r=e.targetData.parent.data.config;r.nativeDrag&&(Rl(e.e),_l=!0,r.handleEnd(t))}function xEe(e){e.e.target!==e.e.currentTarget&&Ge.pointerDown&&(Ge.pointerDown.node.el.draggable=!1)}function SEe(e){e.e.target!==e.e.currentTarget&&Ge.pointerDown&&(Ge.pointerDown.node.el.draggable=!0)}function OEe(e,t){const r=e.targetData.parent.data.config;if(r.nativeDrag){if(fn(e.e),Rl(e.e),_l){_l=!1;return}r.handleEnd(t)}}function CEe(e,t){var r;if(!oo(t))return;if(fn(e.e),_l){_l=!1;return}const n=(r=wn.get(t.initialParent.el))==null?void 0:r.config;n!=null&&n.onDragend&&n.onDragend({parent:t.currentParent,values:dd(t.currentParent.el,t.currentParent.data),draggedNode:t.draggedNode,draggedNodes:t.draggedNodes,state:t}),n==null||n.handleEnd(t)}function PEe(e){var t,r,n,i,a,o;e.draggedNode&&(e.draggedNode.el.draggable=!0),document.body.style.userSelect=e.rootUserSelect||"",oo(e)&&(document.documentElement.style.overscrollBehavior=e.rootOverScrollBehavior||"",document.documentElement.style.touchAction=e.rootTouchAction||""),oo(e)&&IV(e),"longPressTimeout"in e&&e.longPressTimeout&&clearTimeout(e.longPressTimeout);const s=(t=wn.get(e.initialParent.el))==null?void 0:t.config,u=oo(e),l=u?s==null?void 0:s.synthDropZoneClass:s==null?void 0:s.dropZoneClass;e.originalZIndex!==void 0&&(e.draggedNode.el.style.zIndex=e.originalZIndex),Oa(e.draggedNodes.map(h=>h.el),l),Oa(e.draggedNodes.map(h=>h.el),(n=(r=e.initialParent.data)==null?void 0:r.config)==null?void 0:n.longPressClass),Oa(e.draggedNodes.map(h=>h.el),u?e.initialParent.data.config.synthDragPlaceholderClass:(a=(i=e.initialParent.data)==null?void 0:i.config)==null?void 0:a.dragPlaceholderClass),u&&e.clonedDraggedNode.remove(),dl(e.draggedNodes,e.currentParent,e),is(e.currentParent,void 0,e),HPe(),e.selectedState=void 0,(o=s==null?void 0:s.onDragend)==null||o.call(s,{parent:e.currentParent,values:dd(e.currentParent.el,e.currentParent.data),draggedNode:e.draggedNode,draggedNodes:e.draggedNodes,state:e}),e.emit("dragEnded",e)}function EEe(e,t){Rl(e.e),!t.pointerSelection&&t.selectedState&&dl(t.selectedState.nodes,e.targetData.parent,t);const r=e.targetData.parent.data.config;t.pointerSelection=!1,"longPressTimeout"in t&&t.longPressTimeout&&clearTimeout(t.longPressTimeout),Oa(e.targetData.parent.data.enabledNodes.map(n=>n.el),r.longPressClass),ao(t)&&r.handleEnd(t)}function jEe(e,t,r,n,i){var a,o;const s=t.data.config;let u,l=e.el.style.display,h;if(s.synthDragImage)h=s.synthDragImage(e,t,r,i),u=h.dragImage,u.setAttribute("popover","manual"),u.id="dnd-dragged-node-clone",l=u.style.display,Object.assign(u.style,{position:"absolute",zIndex:9999,pointerEvents:"none",margin:0,willChange:"transform",overflow:"hidden",display:"none"});else if(!s.multiDrag||i.length===1)u=e.el.cloneNode(!0),u.id="dnd-dragged-node-clone",l=u.style.display,u.setAttribute("popover","manual"),Object.assign(u.style,{position:"absolute",height:e.el.getBoundingClientRect().height+"px",width:e.el.getBoundingClientRect().width+"px",overflow:"hidden",margin:0,willChange:"transform",pointerEvents:"none",zIndex:9999});else{const _=document.createElement("div");_.setAttribute("popover","manual");for(const w of i){const b=w.el.cloneNode(!0);b.style.pointerEvents="none",b.style.margin="0",_.append(b)}l=_.style.display,_.id="dnd-dragged-node-clone",u=_,Object.assign(u.style,{display:"flex",flexDirection:"column",position:"absolute",overflow:"hidden",margin:0,padding:0,pointerEvents:"none",zIndex:9999})}u.style.position="absolute",t.el.appendChild(u),u.showPopover();const p={clonedDraggedEls:[],clonedDraggedNode:u,draggedNodeDisplay:l,synthDragScrolling:!1,synthDragging:!0,rootScrollWidth:(a=document.scrollingElement)==null?void 0:a.scrollWidth,rootScrollHeight:(o=document.scrollingElement)==null?void 0:o.scrollHeight,rootOverScrollBehavior:document.documentElement.style.overscrollBehavior,rootTouchAction:document.documentElement.style.touchAction};document.documentElement.style.overscrollBehavior="none",document.documentElement.style.touchAction="none";const g=AV({...kV(e,t,r,i,h==null?void 0:h.offsetX,h==null?void 0:h.offsetY),...p});return g.clonedDraggedNode.style.display=g.draggedNodeDisplay||"",g}function TEe(e,t,r){const n=e.targetData.parent.data.config;n.longPress&&(t.longPressTimeout=setTimeout(()=>{t&&(t.longPress=!0,n.longPressClass&&e.e.cancelable&&Mu([r.el],n.longPressClass),fn(e.e))},n.longPressDuration||200))}function AEe(e,t){t.longPressClass&&Oa(e.draggedNodes.map(r=>r.el),t==null?void 0:t.longPressClass)}function IV(e,t=!0,r=!0){t&&e.animationFrameIdX!==void 0&&(cancelAnimationFrame(e.animationFrameIdX),e.animationFrameIdX=void 0),r&&e.animationFrameIdY!==void 0&&(cancelAnimationFrame(e.animationFrameIdY),e.animationFrameIdY=void 0),!e.animationFrameIdX&&!e.animationFrameIdY&&(e.preventEnter=!1)}function YA(e,t,r=0,n=0){const{x:i,y:a}=Ld(e);t.coordinates.y=a,t.coordinates.x=i;const o=t.startLeft??0,s=t.startTop??0,u=i-o+window.scrollX,l=a-s+window.scrollY;t.clonedDraggedNode.style.transform=`translate(${u+r}px, ${l+n}px)`,e.cancelable&&fn(e),AEe(t,t.initialParent.data.config)}function I8(e,t){YA(e,t);const r=Ld(e);zEe(r,e,t);const n=VEe(r);if(!n){document.dispatchEvent(new CustomEvent("handleRootPointerover",{detail:{e,state:t}}));return}const i={e,targetData:n,state:t};"node"in n?n.node.el.dispatchEvent(new CustomEvent("handleNodePointerover",{detail:i})):n.parent.el.dispatchEvent(new CustomEvent("handleParentPointerover",{detail:i}))}function kEe(e,t){var r;if(!e.targetData.parent.data.config.nativeDrag)return;const{x:n,y:i}=Ld(e.e);t.coordinates.y=i,t.coordinates.x=n,fn(e.e),Rl(e.e),e.targetData.parent.el===((r=t.currentParent)==null?void 0:r.el)?FV(e,t):w_(e,t)}function NEe(e,t){e.targetData.parent.data.config.nativeDrag&&(fn(e.e),Rl(e.e),Object.assign(Ld(e.e)),w_(e,t))}function REe(e){e.detail.targetData.parent.el!==e.detail.state.currentParent.el&&w_(e.detail,e.detail.state)}function $V({currentParent:e,targetParent:t,initialParent:r,draggedNodes:n,state:i}){if(t.el===e.el)return!1;const a=t.data.config;if(n[0].el.contains(t.el)||a.dropZone===!1)return!1;const o=r.data.config;return a.accepts?a.accepts(t,r,e,i):!(!a.group||a.group!==o.group)}function MEe(e,t){fn(e.e)}function LEe(e,t){fn(e.e)}function DEe(e,t,r,n){var i;if(t.affectedNodes.map(p=>p.data.value).includes(e.targetData.node.data.value))return!1;if(t.remapJustFinished)return t.remapJustFinished=!1,(e.targetData.node.data.value===t.currentTargetValue||t.draggedNodes.map(p=>p.el).includes(e.targetData.node.el))&&(t.currentTargetValue=e.targetData.node.data.value),!1;if(t.preventEnter)return!1;if(t.draggedNodes.map(p=>p.el).includes(e.targetData.node.el))return t.currentTargetValue=void 0,!1;if(e.targetData.node.data.value===t.currentTargetValue||e.targetData.parent.el!==((i=t.currentParent)==null?void 0:i.el)||e.targetData.parent.data.config.sortable===!1||e.targetData.node.el.contains(t.draggedNodes[0].el))return!1;const a=e.targetData.node.el.getBoundingClientRect(),o=t.draggedNode.el.getBoundingClientRect(),s=a.y-o.y,u=a.x-o.x;let l;Math.abs(s)>Math.abs(u)?l=s>0?"above":"below":l=u>0?"left":"right";const h=t.currentParent.data.config.threshold;switch(l){case"left":if(r>a.x+a.width*h.horizontal)return t.incomingDirection="left",!0;break;case"right":if(ra.y+a.height*h.vertical)return t.incomingDirection="above",!0;break;case"below":if(ne.targetData.node.data.index?[e.targetData.node.data.index,t.draggedNode.data.index]:[t.draggedNode.data.index,e.targetData.node.data.index];t.targetIndex=e.targetData.node.data.index,t.affectedNodes=e.targetData.parent.data.enabledNodes.filter(a=>i[0]<=a.data.index&&a.data.index<=i[1]&&a.el!==t.draggedNode.el),e.targetData.parent.data.config.performSort({parent:e.targetData.parent,draggedNodes:t.draggedNodes,targetNodes:[e.targetData.node]})}function di(e){function t(r){const n=po.get(r);if(!n)return;const i=wn.get(r.parentNode);if(i)return{node:{el:r,data:n},parent:{el:r.parentNode,data:i}}}return r=>{const n=t(r.currentTarget);if(n)return e({e:r,targetData:n},Ge)}}function w_(e,t){e.e.preventDefault(),$V({currentParent:t.currentParent,targetParent:e.targetData.parent,initialParent:t.initialParent,draggedNodes:t.draggedNodes,state:t})&&(e.targetData.parent.data.config.performTransfer({currentParent:t.currentParent,targetParent:e.targetData.parent,initialParent:t.initialParent,draggedNodes:t.draggedNodes,initialIndex:t.initialIndex,state:t,targetNodes:"node"in e.targetData?[e.targetData.node]:[]}),t.currentParent=e.targetData.parent,t.transferred=!0)}function Gh(e){function t(r){const n=wn.get(r);if(n)return{parent:{el:r,data:n}}}return r=>{const n=t(r.currentTarget);if(n)return e({e:r,targetData:n},Ge)}}function Mu(e,t,r=!1){function n(i,a){po.set(i,a)}for(const i of e){const a=po.get(i),o=IEe(i,t,a,r);o&&n(i,o)}}function IEe(e,t,r,n=!1){if(!t)return;const i=TV(t);if(!i.length||i.includes("longPress"))return;if(!r){e.classList.add(...i);return}const a=[];for(const o of i)e.classList.contains(o)?e.classList.contains(o)&&n===!1&&a.push(o):e.classList.add(o);return r.privateClasses=a,r}function Oa(e,t){if(!t)return;const r=TV(t);if(r.length)for(const n of e){if(!x_(n)){n.classList.remove(...r);continue}const i=po.get(n)||wn.get(n);if(i)for(const a of r)i.privateClasses.includes(a)||n.classList.remove(a)}}function $Ee(e,t,r,n,i){if(e===document.scrollingElement){const a=e.scrollLeft>0;return{right:e.scrollLeft+window.innerWidth<(i.rootScrollWidth||0)&&t.clientX>e.clientWidth*(1-.1),left:a&&t.clientXn.left+o*(1-.1)&&s0}}return{right:!1,left:!1}}function FEe(e,t,r,n){if(e===document.scrollingElement)return{down:t.clientY>e.clientHeight*(1-.1),up:t.clientYn.top+a*(1-.1)&&o0}}return{down:!1,up:!1}}function BEe(e,t,r,n=!0){r.preventEnter=!0;const i=n?5:-5;function a(o){o.scrollBy({left:i}),YA(t,r,i,0),r.animationFrameIdX=requestAnimationFrame(a.bind(null,o))}r.animationFrameIdX=requestAnimationFrame(a.bind(null,e))}function UEe(e,t,r,n=!0){r.preventEnter=!0;const i=n?-5:5;function a(){e.scrollBy({top:i}),YA(t,r,0,i),r.animationFrameIdY=requestAnimationFrame(a)}r.animationFrameIdY=requestAnimationFrame(a)}function zEe(e,t,r){IV(r);const n={x:null,y:null},i=document.elementsFromPoint(e.x,e.y);for(const a of i){if(n.x&&n.y)break;if(!(a instanceof HTMLElement))continue;const o=a.getBoundingClientRect(),s=window.getComputedStyle(a);if(!n.x){const{left:u,right:l}=$Ee(a,t,s,o,r);(u||l)&&(n.x=a,BEe(a,t,r,l))}if(!n.y){const{up:u,down:l}=FEe(a,t,s,o);(u||l)&&(n.y=a,UEe(a,t,r,u))}}}function VEe(e){let t=document.elementFromPoint(e.x,e.y);if(!x_(t))return;let r,n=!0;for(;t&&n;){if(po.has(t)||wn.has(t)){n=!1,r=wn.has(t);break}t=t.parentNode}if(r){const i=wn.get(t);return i?{parent:{el:t,data:i}}:void 0}else{const i=po.get(t);if(!i)return;const a=wn.get(t.parentNode);return a?{node:{el:t,data:i},parent:{el:t.parentNode,data:a}}:void 0}}function x_(e){return e instanceof HTMLElement&&e.parentNode instanceof HTMLElement}function wm(e,t){const r=new AbortController;for(const n in t){const i=t[n];e.addEventListener(n,i,{signal:r.signal,passive:!1,capture:n==="focus"||n==="blur"})}return r}function qEe(e){if(e instanceof HTMLElement)return e;if("current"in e&&e.current instanceof HTMLElement)return e.current;console.warn("Invalid parent element",e)}function WEe(e,t){const r=qEe(e);r&&t(r)}var eb=new WeakMap;function HEe(e){const t=eb.get(e);return t?t[0]:(console.warn("No values found for parent element"),[])}function GEe(e,t){const r=eb.get(t);r&&r[1](e),eb.set(t,[e,r[1]])}function KEe(e,t){return r=>{eb.set(r,t),JPe({parent:r,getValues:HEe,setValues:GEe,config:e})}}function $8(e){KA&&(Array.isArray(e)||(e=[e]),e.forEach(t=>{const{parent:r,state:n,...i}=t;WEe(r,KEe(i,n))}))}function YEe(e,t={}){const r=$.useRef(null),[n,i]=$.useState(e);function a(o={}){$8({parent:r,state:[n,i],...o})}return $.useEffect(()=>{$8({parent:r,state:[n,i],...t})},[n]),$.useEffect(()=>()=>{r.current&&RV(r.current)},[]),[r,n,i,a]}const S_=()=>{const e=mo(),t=Nl(),r=bd(),n=$.useMemo(()=>{const{orderBy:a,tags:o,excludeBots:s,excludeMaxVisitsReached:u,excludePastValidUntil:l,...h}=r,p=a?bae(a):void 0,g=(o==null?void 0:o.split(","))??[];return{...h,orderBy:p,tags:g,excludeBots:s!==void 0?s==="true":void 0,excludeMaxVisitsReached:u!==void 0?u==="true":void 0,excludePastValidUntil:l!==void 0?l==="true":void 0}},[r]),i=$.useCallback(a=>{const o={...n,...a},{orderBy:s,tags:u,excludeBots:l,excludeMaxVisitsReached:h,excludePastValidUntil:p,...g}=o,_={...g,orderBy:s&&yae(s),tags:u.length>0?u.join(","):void 0,excludeBots:RO(l),excludeMaxVisitsReached:RO(h),excludePastValidUntil:RO(p)},w=mT(_),b=w?`?${w}`:"";e(`${t}/list-short-urls/1${b}`)},[n,e,t]);return[n,i]},ZA=()=>{const{domain:e}=bd(),{shortCode:t=""}=md();return $.useMemo(()=>({shortCode:WA(t),domain:e}),[e,t])},O_=()=>{const e=pPe();return m.jsx(Rt,{color:"link",size:"lg",className:"p-0 me-3",onClick:e,"aria-label":"Go back",children:m.jsx(Ye,{icon:qY})})},ZEe={AF:"Afghanistan",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia",BA:"Bosnia and Herzegovina",BW:"Botswana",BR:"Brazil",IO:"British Indian Ocean Territory",VG:"British Virgin Islands",BN:"Brunei",BG:"Bulgaria",BF:"Burkina Faso",BI:"Burundi",KH:"Cambodia",CM:"Cameroon",CA:"Canada",CV:"Cape Verde",KY:"Cayman Islands",CF:"Central African Republic",TD:"Chad",CL:"Chile",CN:"China",CX:"Christmas Island",CC:"Cocos Islands",CO:"Colombia",KM:"Comoros",CK:"Cook Islands",CR:"Costa Rica",HR:"Croatia",CU:"Cuba",CW:"Curacao",CY:"Cyprus",CZ:"Czech Republic",CD:"Democratic Republic of the Congo",DK:"Denmark",DJ:"Djibouti",DM:"Dominica",DO:"Dominican Republic",TL:"East Timor",EC:"Ecuador",EG:"Egypt",SV:"El Salvador",GQ:"Equatorial Guinea",ER:"Eritrea",EE:"Estonia",ET:"Ethiopia",FK:"Falkland Islands",FO:"Faroe Islands",FJ:"Fiji",FI:"Finland",FR:"France",PF:"French Polynesia",GA:"Gabon",GM:"Gambia",GE:"Georgia",DE:"Germany",GH:"Ghana",GI:"Gibraltar",GR:"Greece",GL:"Greenland",GD:"Grenada",GU:"Guam",GT:"Guatemala",GG:"Guernsey",GN:"Guinea",GW:"Guinea-Bissau",GY:"Guyana",HT:"Haiti",HN:"Honduras",HK:"Hong Kong",HU:"Hungary",IS:"Iceland",IN:"India",ID:"Indonesia",IR:"Iran",IQ:"Iraq",IE:"Ireland",IM:"Isle of Man",IL:"Israel",IT:"Italy",CI:"Ivory Coast",JM:"Jamaica",JP:"Japan",JE:"Jersey",JO:"Jordan",KZ:"Kazakhstan",KE:"Kenya",KI:"Kiribati",XK:"Kosovo",KW:"Kuwait",KG:"Kyrgyzstan",LA:"Laos",LV:"Latvia",LB:"Lebanon",LS:"Lesotho",LR:"Liberia",LY:"Libya",LI:"Liechtenstein",LT:"Lithuania",LU:"Luxembourg",MO:"Macao",MK:"Macedonia",MG:"Madagascar",MW:"Malawi",MY:"Malaysia",MV:"Maldives",ML:"Mali",MT:"Malta",MH:"Marshall Islands",MR:"Mauritania",MU:"Mauritius",YT:"Mayotte",MX:"Mexico",FM:"Micronesia",MD:"Moldova",MC:"Monaco",MN:"Mongolia",ME:"Montenegro",MS:"Montserrat",MA:"Morocco",MZ:"Mozambique",MM:"Myanmar",NA:"Namibia",NR:"Nauru",NP:"Nepal",NL:"Netherlands",AN:"Netherlands Antilles",NC:"New Caledonia",NZ:"New Zealand",NI:"Nicaragua",NE:"Niger",NG:"Nigeria",NU:"Niue",KP:"North Korea",MP:"Northern Mariana Islands",NO:"Norway",OM:"Oman",PK:"Pakistan",PW:"Palau",PS:"Palestine",PA:"Panama",PG:"Papua New Guinea",PY:"Paraguay",PE:"Peru",PH:"Philippines",PN:"Pitcairn",PL:"Poland",PT:"Portugal",PR:"Puerto Rico",QA:"Qatar",CG:"Republic of the Congo",RE:"Reunion",RO:"Romania",RU:"Russia",RW:"Rwanda",BL:"Saint Barthelemy",SH:"Saint Helena",KN:"Saint Kitts and Nevis",LC:"Saint Lucia",MF:"Saint Martin",PM:"Saint Pierre and Miquelon",VC:"Saint Vincent and the Grenadines",WS:"Samoa",SM:"San Marino",ST:"Sao Tome and Principe",SA:"Saudi Arabia",SN:"Senegal",RS:"Serbia",SC:"Seychelles",SL:"Sierra Leone",SG:"Singapore",SX:"Sint Maarten",SK:"Slovakia",SI:"Slovenia",SB:"Solomon Islands",SO:"Somalia",ZA:"South Africa",KR:"South Korea",SS:"South Sudan",ES:"Spain",LK:"Sri Lanka",SD:"Sudan",SR:"Suriname",SJ:"Svalbard and Jan Mayen",SZ:"Swaziland",SE:"Sweden",CH:"Switzerland",SY:"Syria",TW:"Taiwan",TJ:"Tajikistan",TZ:"Tanzania",TH:"Thailand",TG:"Togo",TK:"Tokelau",TO:"Tonga",TT:"Trinidad and Tobago",TN:"Tunisia",TR:"Turkey",TM:"Turkmenistan",TC:"Turks and Caicos Islands",TV:"Tuvalu",VI:"U.S. Virgin Islands",UG:"Uganda",UA:"Ukraine",AE:"United Arab Emirates",GB:"United Kingdom",US:"United States",UY:"Uruguay",UZ:"Uzbekistan",VU:"Vanuatu",VA:"Vatican",VE:"Venezuela",VN:"Vietnam",WF:"Wallis and Futuna",EH:"Western Sahara",YE:"Yemen",ZM:"Zambia",ZW:"Zimbabwe"},XEe={android:"Android",ios:"iOS",desktop:"Desktop"},QEe=({deviceType:e,onDeviceTypeChange:t})=>{const r=$.useId();return m.jsxs("div",{children:[m.jsx("label",{htmlFor:r,children:"Device type:"}),m.jsxs("select",{id:r,className:"form-select",value:e,onChange:n=>t(n.target.value),required:!0,children:[!e&&m.jsx("option",{value:"",children:"- Select type -"}),Object.entries(XEe).map(([n,i])=>m.jsx("option",{value:n,children:i},n))]})]})},XA=({value:e,onValueChange:t,label:r,placeholder:n})=>{const i=$.useId();return m.jsxs("div",{children:[m.jsxs("label",{htmlFor:i,children:[r,":"]}),m.jsx(Jr,{id:i,value:e??"",onChange:a=>t(a.target.value),placeholder:n,required:!0})]})},JEe=({language:e,onLanguageChange:t})=>m.jsx(XA,{value:e,onValueChange:t,label:"Language",placeholder:"en-US / en"}),eje=({name:e,value:t,onNameChange:r,onValueChange:n})=>{const i=$.useId(),a=$.useId();return m.jsxs(m.Fragment,{children:[m.jsxs("div",{children:[m.jsx("label",{htmlFor:i,children:"Param name:"}),m.jsx(Jr,{id:i,value:e??"",onChange:o=>r(o.target.value),placeholder:"hello",required:!0})]}),m.jsxs("div",{children:[m.jsx("label",{htmlFor:a,children:"Param value:"}),m.jsx(Jr,{id:a,value:t??"",onChange:o=>n(o.target.value),placeholder:"world",required:!0})]})]})},tje=({ipAddress:e,onIpAddressChange:t})=>m.jsx(XA,{value:e,onValueChange:t,label:"IP address",placeholder:"192.168.1.10"}),rje=({countryCode:e,onCountryCodeChange:t})=>{const r=$.useId();return m.jsxs("div",{children:[m.jsx("label",{htmlFor:r,children:"Country:"}),m.jsxs("select",{id:r,className:"form-select",value:e,onChange:n=>t(n.target.value),required:!0,children:[!e&&m.jsx("option",{value:"",children:"- Select country -"}),Object.entries(ZEe).map(([n,i])=>m.jsx("option",{value:n,children:i},n))]})]})},nje=({cityName:e,onCityNameChange:t})=>m.jsx(XA,{value:e,onValueChange:t,label:"City name",placeholder:"New York"}),ije=({condition:e,onConditionChange:t,onDelete:r})=>{const n=$.useId(),i=$.useCallback(h=>t({type:h,matchValue:"",matchKey:null}),[t]),a=$.useCallback(h=>t({...e,matchValue:h}),[e,t]),o=$.useCallback(h=>t({...e,matchKey:h}),[e,t]),s=ho("ipRedirectCondition"),u=ho("geolocationRedirectCondition"),l=$.useMemo(()=>{const h={device:"Device type",language:"Language","query-param":"Query param"};return s&&(h["ip-address"]="IP address"),u&&(h["geolocation-country-code"]="Country (geolocation)",h["geolocation-city-name"]="City name (geolocation)"),h},[u,s]);return m.jsxs("div",{className:"redirect-rule-modal__condition rounded p-3 h-100 d-flex flex-column gap-2 position-relative",children:[m.jsxs("div",{children:[m.jsx(Rt,{outline:!0,size:"sm",type:"button","aria-label":"Remove condition",onClick:r,className:"position-absolute rounded-circle redirect-rule-modal__remove-condition-button",children:m.jsx(Ye,{icon:vb,className:"redirect-rule-modal__remove-condition-button-icon"})}),m.jsx("label",{htmlFor:n,children:"Type:"}),m.jsx("select",{id:n,className:"form-select flex-grow-1",value:e.type,onChange:h=>i(h.target.value),children:Object.entries(l).map(([h,p])=>m.jsx("option",{value:h,children:p},h))})]}),e.type==="device"&&m.jsx(QEe,{deviceType:e.matchValue,onDeviceTypeChange:a}),e.type==="language"&&m.jsx(JEe,{language:e.matchValue,onLanguageChange:a}),e.type==="query-param"&&m.jsx(eje,{value:e.matchValue,name:e.matchKey??"",onNameChange:o,onValueChange:a}),e.type==="ip-address"&&m.jsx(tje,{ipAddress:e.matchValue,onIpAddressChange:a}),e.type==="geolocation-country-code"&&m.jsx(rje,{countryCode:e.matchValue,onCountryCodeChange:a}),e.type==="geolocation-city-name"&&m.jsx(nje,{cityName:e.matchValue,onCityNameChange:a})]})},BV=({isOpen:e,toggle:t,onSave:r,initialData:n})=>{const[i,a]=$.useState(n??{longUrl:"",conditions:[]}),o=$.useCallback(_=>{_.preventDefault(),_.stopPropagation(),i&&r(i),t()},[r,i,t]),s=$.useCallback(()=>a(({longUrl:_,conditions:w})=>({longUrl:_,conditions:[...w,{type:"device",matchValue:"",matchKey:null}]})),[]),u=$.useCallback((_,w)=>a(({longUrl:b,conditions:x})=>{const S=[...x];return S[_]=w,{longUrl:b,conditions:S}}),[]),l=$.useCallback(_=>a(({longUrl:w,conditions:b})=>{const x=[...b];return x.splice(_,1),{longUrl:w,conditions:x}}),[]),h=vl(),p=$.useCallback(()=>{var _;return(_=h==null?void 0:h.current)==null?void 0:_.focus()},[h]),g=$.useCallback(()=>a(n??{longUrl:"",conditions:[]}),[n]);return m.jsx(ea,{size:"xl",isOpen:e,toggle:t,centered:!0,onOpened:p,onClosed:g,children:m.jsxs("form",{onSubmit:o,children:[m.jsx(Pl,{toggle:t,className:"sticky-top redirect-rule-modal__header",children:"Redirect rule"}),m.jsxs(ss,{children:[m.jsx("label",{htmlFor:"longUrl",className:"fw-bold",children:"Long URL:"}),m.jsx(Jr,{id:"longUrl",type:"url",placeholder:"https://www.example.com",value:i.longUrl,onChange:_=>a(w=>({...w,longUrl:_.target.value})),required:!0,innerRef:h}),m.jsx("hr",{}),m.jsxs("div",{className:"d-flex justify-content-between",children:[m.jsx("b",{children:"Conditions:"}),m.jsx(Rt,{outline:!0,size:"sm",type:"button","aria-label":"Add condition",onClick:s,children:m.jsx(Ye,{icon:Am})})]}),i.conditions.length===0&&m.jsx("div",{className:"text-center",children:m.jsx("i",{children:"Add conditions..."})}),i.conditions.length>0&&m.jsx(Qa,{className:"redirect-rule-modal__conditions-row",children:i.conditions.map((_,w)=>m.jsx("div",{className:"col-lg-6 col-xl-4 mt-4",children:m.jsx(ije,{condition:_,onConditionChange:b=>u(w,b),onDelete:()=>l(w)})},`${w}_${_.type}`))})]}),m.jsxs(gd,{className:"sticky-bottom redirect-rule-modal__footer",children:[m.jsx(Rt,{type:"button",color:"link",onClick:t,children:"Cancel"}),m.jsx(Rt,{color:"primary",disabled:i.conditions.length===0,children:"Confirm"})]})]})})},aje=({priority:e,isLast:t,redirectRule:r,onDelete:n,onMoveUp:i,onMoveDown:a,onUpdate:o})=>{const[s,u]=Vt();return m.jsxs(sr,{children:[m.jsxs("div",{className:"d-flex align-content-center gap-3",children:[m.jsx("div",{className:"d-flex flex-column my-auto drag-n-drop-handler d-none d-md-block",style:{cursor:"grab"},children:m.jsx(Ye,{icon:XY})}),m.jsxs("div",{className:"d-flex flex-column my-auto",children:[m.jsx(Rt,{outline:!0,color:"secondary",size:"sm","aria-label":`Move rule with priority ${e} up`,disabled:e===1,onClick:i,className:"rounded-0 rounded-top",style:{marginBottom:"-1px"},children:m.jsx(Ye,{icon:fZ})}),m.jsx(Rt,{outline:!0,color:"secondary",size:"sm","aria-label":`Move rule with priority ${e} down`,disabled:t,onClick:a,className:"rounded-0 rounded-bottom",children:m.jsx(Ye,{icon:sZ})})]}),m.jsxs("div",{className:"flex-grow-1",children:[m.jsxs("div",{className:"mb-2",children:[m.jsx("b",{children:"Long URL:"})," ",m.jsx(_i,{href:r.longUrl,"data-testid":"rule-long-url"})]}),m.jsxs("div",{className:"d-flex flex-column flex-lg-row gap-2",children:[m.jsx("b",{children:"Conditions:"}),r.conditions.map((l,h)=>m.jsxs("div",{className:"badge bg-secondary",children:[l.type==="device"&&m.jsxs(m.Fragment,{children:["Device is ",l.matchValue]}),l.type==="language"&&m.jsxs(m.Fragment,{children:[l.matchValue," language is accepted"]}),l.type==="query-param"&&m.jsxs(m.Fragment,{children:["Query string contains ",l.matchKey,"=",l.matchValue]}),l.type==="ip-address"&&m.jsxs(m.Fragment,{children:["IP address matches ",l.matchValue]}),l.type==="geolocation-country-code"&&m.jsxs(m.Fragment,{children:["Country code is ",l.matchValue]}),l.type==="geolocation-city-name"&&m.jsxs(m.Fragment,{children:["City name is ",l.matchValue]})]},`${l.type}_${h}`))]})]}),m.jsxs("div",{className:"d-flex flex-column flex-sm-row gap-1 my-auto",children:[m.jsx(Rt,{outline:!0,color:"secondary",size:"sm","aria-label":`Edit rule with priority ${e}`,onClick:u,children:m.jsx(Ye,{icon:r7})}),m.jsx(Rt,{outline:!0,color:"danger",size:"sm","aria-label":`Delete rule with priority ${e}`,onClick:n,children:m.jsx(Ye,{icon:_Y})})]})]}),m.jsx(BV,{onSave:o,isOpen:s,toggle:u,initialData:r})]})},oje=({shortUrlRedirectRules:e,getShortUrlRedirectRules:t,getShortUrlsDetails:r,shortUrlsDetails:n,setShortUrlRedirectRules:i,shortUrlRedirectRulesSaving:a,resetSetRules:o})=>{const s=ZA(),{shortUrls:u}=n,l=s&&(u==null?void 0:u.get(s)),[h,p,g]=YEe([],{dragHandle:".drag-n-drop-handler",dropZoneClass:"opacity-25"}),{saving:_,saved:w,errorData:b}=a,[x,S]=Vt(),O=$.useCallback(W=>g((H=[])=>[...H,W]),[g]),E=$.useCallback(W=>g((H=[])=>{const K=[...H];return K.splice(W,1),K}),[g]),j=$.useCallback((W,H)=>g((K=[])=>{const te=[...K];return te[W]=H,te}),[g]),A=$.useCallback((W,H)=>g((K=[])=>{if(!K[H])return K;const te=[...K],se=te[H];return te[H]=te[W],te[W]=se,te}),[g]),T=$.useCallback(W=>A(W,W-1),[A]),M=$.useCallback(W=>A(W,W+1),[A]),q=$.useCallback(W=>{W.preventDefault(),p&&i({shortUrl:s,data:{redirectRules:p}})},[s,p,i]);return $.useEffect(()=>(t(s),r([s]),o),[t,r,s,o]),$.useEffect(()=>{e.redirectRules&&g(e.redirectRules)},[g,e.redirectRules]),m.jsxs("div",{className:"d-flex flex-column gap-3",children:[m.jsx("header",{children:m.jsxs(Ji,{body:!0,children:[m.jsxs("h2",{className:"d-sm-flex justify-content-between align-items-center mb-0",children:[m.jsx(O_,{}),m.jsxs("div",{className:"text-center flex-grow-1",children:[n.loading&&m.jsx(m.Fragment,{children:"Loading..."}),!n.loading&&m.jsxs("small",{children:["Redirect rules for ",m.jsx(_i,{href:(l==null?void 0:l.shortUrl)??""})]})]})]}),m.jsx("hr",{}),m.jsxs("div",{children:[m.jsx("p",{className:"mb-2",children:"Configure dynamic conditions that will be checked at runtime."}),"If no conditions match, visitors will be redirected to: ",m.jsx(_i,{href:e.defaultLongUrl??""})]})]})}),m.jsx("div",{children:m.jsxs(Rt,{outline:!0,color:"primary",onClick:S,children:[m.jsx(Ye,{icon:Am,className:"me-1"})," Add rule"]})}),m.jsxs("form",{onSubmit:q,children:[e.loading&&m.jsx(Bu,{loading:!0}),p.length===0&&!e.loading&&m.jsx(sr,{className:"text-center",children:m.jsx("i",{children:"This short URL has no dynamic redirect rules"})}),m.jsx("div",{className:"d-flex flex-column gap-2",ref:h,children:p.map((W,H)=>m.jsx(aje,{redirectRule:W,priority:H+1,isLast:H===p.length-1,onDelete:()=>E(H),onMoveUp:()=>T(H),onMoveDown:()=>M(H),onUpdate:K=>j(H,K)},`${W.longUrl}_${H}`))}),m.jsx("div",{className:"text-center mt-3",children:m.jsx(Rt,{outline:!0,color:"primary",className:"btn-sm-block",disabled:_,"data-testid":"save-button",children:_?"Saving...":"Save rules"})})]}),b&&m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:b,fallbackMessage:"An error occurred while saving short URL redirect rules :("})}),w&&m.jsx(bi,{type:"success",children:"Redirect rules properly saved."}),m.jsx(BV,{isOpen:x,toggle:S,onSave:O})]})},sje=(e,t)=>{e.serviceFactory("ShortUrlRedirectRules",()=>oje),e.decorator("ShortUrlRedirectRules",t(["shortUrlRedirectRules","shortUrlsDetails","shortUrlRedirectRulesSaving"],["getShortUrlRedirectRules","getShortUrlsDetails","setShortUrlRedirectRules","resetSetRules"])),e.serviceFactory("getShortUrlRedirectRules",zPe,"apiClientFactory"),e.serviceFactory("setShortUrlRedirectRules",FPe,"apiClientFactory"),e.serviceFactory("resetSetRules",r=>r.resetSetRules,"setShortUrlRedirectRulesReducerCreator"),e.serviceFactory("shortUrlRedirectRulesReducerCreator",VPe,"getShortUrlRedirectRules"),e.serviceFactory("shortUrlRedirectRulesReducer",r=>r.reducer,"shortUrlRedirectRulesReducerCreator"),e.serviceFactory("setShortUrlRedirectRulesReducerCreator",BPe,"setShortUrlRedirectRules"),e.serviceFactory("setShortUrlRedirectRulesReducer",r=>r.reducer,"setShortUrlRedirectRulesReducerCreator")},lje=e=>({longUrl:"",tags:[],customSlug:"",title:void 0,shortCodeLength:void 0,domain:"",validSince:void 0,validUntil:void 0,maxVisits:void 0,findIfExists:!1,validateUrl:(e==null?void 0:e.validateUrls)??!1,forwardQuery:(e==null?void 0:e.forwardQuery)??!0}),UV=({createShortUrl:e,shortUrlCreation:t,resetCreateShortUrl:r,basicMode:n=!1})=>{const{ShortUrlForm:i,CreateShortUrlResult:a}=Sr(UV),o=Hr("shortUrlCreation"),s=$.useMemo(()=>lje(o),[o]);return m.jsxs(m.Fragment,{children:[m.jsx(i,{initialState:s,saving:t.saving,basicMode:n,onSave:async u=>(r(),e(u))}),m.jsx(a,{creation:t,resetCreateShortUrl:r,canBeClosed:n})]})},uje=Or(UV,["ShortUrlForm","CreateShortUrlResult"]),zV=({shortUrlsDetails:e,getShortUrlsDetails:t,shortUrlEdition:r,editShortUrl:n})=>{const{ShortUrlForm:i}=Sr(zV),a=ZA(),{loading:o,error:s,errorData:u,shortUrls:l}=e,h=a&&(l==null?void 0:l.get(a)),{saving:p,saved:g,error:_,errorData:w}=r,b=Hr("shortUrlCreation"),x=$.useMemo(()=>TPe(h,b),[h,b]);return $.useEffect(()=>{a&&t([a])},[t,a]),o?m.jsx(Bu,{loading:!0}):s?m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:u,fallbackMessage:"An error occurred while loading short URL detail :("})}):m.jsxs(m.Fragment,{children:[m.jsx("header",{className:"mb-3",children:m.jsx(Ji,{body:!0,children:m.jsxs("h2",{className:"d-sm-flex justify-content-between align-items-center mb-0",children:[m.jsx(O_,{}),m.jsx("div",{className:"text-center flex-grow-1",children:m.jsxs("small",{children:["Edit ",m.jsx(_i,{href:(h==null?void 0:h.shortUrl)??""})]})})]})})}),m.jsx(i,{initialState:x,saving:p,onSave:async S=>{h&&n({...h,data:S})}}),g&&_&&m.jsx(bi,{type:"error",className:"mt-3",children:m.jsx(fo,{errorData:w,fallbackMessage:"An error occurred while updating short URL :("})}),g&&!_&&m.jsx(bi,{type:"success",className:"mt-3",children:"Short URL properly edited."})]})},cje=Or(zV,["ShortUrlForm"]),QA=async({text:e,onCopy:t},r=navigator)=>{var n;const i=typeof e=="string"?e:await e;return(n=r.clipboard)==null?void 0:n.writeText(i).then(()=>t==null?void 0:t({text:i,copied:!0})).catch(()=>t==null?void 0:t({text:i,copied:!1}))},VV=({creation:e,resetCreateShortUrl:t,canBeClosed:r=!1})=>{const{useTimeoutToggle:n}=Sr(VV),[i,a]=n(),{error:o,saved:s}=e;if($.useEffect(()=>{t()},[t]),o)return m.jsxs(bi,{type:"error",className:"mt-3",children:[r&&m.jsx(Ye,{"data-testid":"error-close-button",icon:YO,className:"float-end pointer",onClick:t}),m.jsx(fo,{errorData:e.errorData,fallbackMessage:"An error occurred while creating the URL :("})]});if(!s)return null;const{shortUrl:u}=e.result;return m.jsxs(bi,{type:"success",className:"mt-3",children:[r&&m.jsx(Ye,{"data-testid":"success-close-button",icon:YO,className:"float-end pointer",onClick:t}),m.jsxs("span",{children:[m.jsx("b",{children:"Great!"})," The short URL is ",m.jsx("b",{children:u})]}),m.jsxs("button",{className:"btn btn-light btn-sm create-short-url-result__copy-btn",id:"copyBtn",type:"button",onClick:()=>QA({text:u,onCopy:a}),children:[m.jsx(Ye,{icon:CT})," Copy ",m.jsxs("span",{className:"sr-only",children:[u," to clipboard"]})]}),m.jsx(Ob,{placement:"left",isOpen:i,target:"copyBtn",children:"Copied!"})]})},fje=Or(VV,["useTimeoutToggle"]),IO="delete",dje=({shortUrl:e,toggle:t,isOpen:r,shortUrlDeletion:n,resetDeleteShortUrl:i,deleteShortUrl:a,shortUrlDeleted:o})=>{const[s,u]=$.useState("");$.useEffect(()=>i,[i]);const{loading:l,error:h,deleted:p,errorData:g}=n,_=$.useCallback(()=>{i(),t()},[i,t]),w=$.useCallback(b=>(b.preventDefault(),a(e).then(x=>!$A(x)&&t())),[a,e,t]);return m.jsx(ea,{isOpen:r,toggle:_,centered:!0,onClosed:()=>p&&o(e),children:m.jsxs("form",{onSubmit:w,children:[m.jsx(Pl,{toggle:_,children:m.jsx("span",{className:"text-danger",children:"Delete short URL"})}),m.jsxs(ss,{children:[m.jsxs("p",{children:[m.jsx("b",{className:"text-danger",children:"Caution!"})," You are about to delete a short URL."]}),m.jsx("p",{children:"This action cannot be undone. Once you have deleted it, all the visits stats will be lost."}),m.jsxs("p",{children:["Write ",m.jsx("b",{children:IO})," to confirm deletion."]}),m.jsx("input",{type:"text",className:"form-control",placeholder:`Insert ${IO}`,value:s,onChange:b=>u(b.target.value)}),h&&m.jsx(bi,{type:rPe(g)?"warning":"error",small:!0,className:"mt-2",children:m.jsx(fo,{errorData:g,fallbackMessage:"Something went wrong while deleting the URL :("})})]}),m.jsxs(gd,{children:[m.jsx("button",{type:"button",className:"btn btn-link",onClick:_,children:"Cancel"}),m.jsx("button",{type:"submit",className:"btn btn-danger",disabled:s!==IO||l,children:l?"Deleting...":"Delete"})]})]})})},qV=({amount:e=0,loading:t=!1,...r})=>m.jsxs(Rt,{...r,outline:!0,color:"primary",disabled:t,children:[m.jsx(Ye,{icon:CY})," ",t?"Exporting...":m.jsxs(m.Fragment,{children:["Export (",jr(e),")"]})]}),F8=20,WV=({amount:e=0})=>{const{apiClientFactory:t,ReportExporter:r}=Sr(WV),[{tags:n,search:i,startDate:a,endDate:o,orderBy:s,tagsMode:u}]=S_(),[l,,h,p]=Vt(),g=$.useCallback(async()=>{const _=e/F8,w=async(x=1)=>{const{data:S}=await t().listShortUrls({page:`${x}`,tags:n,searchTerm:i,startDate:a,endDate:o,orderBy:s,tagsMode:u,itemsPerPage:F8});return x>=_?S:S.concat(await w(x+1))};h();const b=await w();r.exportShortUrls(b.map(x=>{var S;const{hostname:O,pathname:E}=new URL(x.shortUrl),j=E.substring(1);return{createdAt:x.dateCreated,domain:O,shortCode:j,shortUrl:x.shortUrl,longUrl:x.longUrl,title:x.title??"",tags:x.tags.join("|"),visits:((S=x==null?void 0:x.visitsSummary)==null?void 0:S.total)??x.visitsCount??0}})),p()},[e,t,o,s,r,i,a,h,p,n,u]);return m.jsx(qV,{loading:l,className:"btn-md-block",amount:e,onClick:g})},hje=Or(WV,["apiClientFactory","ReportExporter"]),pje=({text:e,copyToClipboard:t=QA,initialCopied:r=!1})=>{const[n,i]=Pb(r);return m.jsx(Yu,{className:"ms-2 p-0","aria-label":`Copy ${e} to clipboard`,onClick:()=>t({text:e,onCopy:i}),children:m.jsx(Ye,{icon:n?Lu:CT,className:"fs-5",fixedWidth:!0})})},mje="yyyy-MM-dd",HV="yyyy-MM-dd HH:mm",wl=()=>new Date,JA=e=>typeof e!="string",e3=(e,t)=>!e||!JA(e)?e:t?Yy(e,t):Kle(e),xl=e=>e3(e,void 0),ol=e=>e3(e,mje),xm=e=>e3(e,HV),yi=e=>JA(e)?e:gl(e),Jm=(e,t,r)=>{const n=yi(e),i=t&&yi(t),a=r&&yi(r);if(i&&a)try{return Xle(n,{start:i,end:a})}catch{return!1}return i?$P(n,i)||Zle(n,i):a?$P(n,a)||Zy(n,a):!0},fu=(e,t)=>$P(e,t)||Zy(e,t),tb=({date:e,format:t=HV,relative:r=!1})=>{const n=JA(e)?e:gl(e);return m.jsx("time",{dateTime:`${Yle(n)}000`,children:r?`${Gle(wl(),n)} ago`:Yy(n,t)})},vje=(e,{shortCode:t,domain:r},n)=>{const i=r?`?domain=${r}`:"";return`${e}/short-code/${yV(t)}/${n}${i}`},Sp=({shortUrl:e,suffix:t,asLink:r,children:n,...i})=>{const a=Nl();return!r||!e?m.jsx("span",{...i,children:n}):m.jsx(nr,{to:vje(a,e,t),...i,children:n})},gje=e=>{const{meta:t,visitsCount:r,visitsSummary:n}=e,{maxVisits:i,validSince:a,validUntil:o}=t,s=(n==null?void 0:n.total)??r??0;return i&&s>=i?{icon:_Z,className:"text-danger",description:`This short URL cannot be currently visited because it has reached the maximum amount of ${i} visit${i>1?"s":""}`}:o&&Zy(yi(o),wl())?{icon:w4,className:"text-danger",description:`This short URL cannot be visited since ${xm(yi(o))}`}:a&&Zy(wl(),yi(a))?{icon:w4,className:"text-warning",description:`This short URL will start working on ${xm(yi(a))}`}:{icon:Lu,className:"text-primary",description:"This short URL can be visited normally"}},yje=({shortUrl:e})=>{const{icon:t,className:r,description:n}=$.useMemo(()=>gje(e),[e]);return m.jsx("span",{style:{cursor:n?"help":void 0},title:n,children:m.jsx(Ye,{icon:t,className:r})})},GV=({visitsCount:e,shortUrl:t,active:r=!1,asLink:n=!1})=>{const i=vl(),{maxVisits:a,validSince:o,validUntil:s}=(t==null?void 0:t.meta)??{},u=!!a||!!o||!!s,l=m.jsx(Sp,{shortUrl:t,suffix:"visits",asLink:n,children:m.jsx("strong",{className:Me("short-url-visits-count__amount",{"short-url-visits-count__amount--big":r}),children:jr(e)})});return u?m.jsxs(m.Fragment,{children:[m.jsxs("span",{className:"indivisible",children:[l,m.jsxs("small",{className:"short-urls-visits-count__max-visits-control",ref:i,children:[a&&m.jsxs(m.Fragment,{children:[" / ",jr(a)]}),m.jsx("sup",{className:"ms-1",children:m.jsx(Ye,{icon:Fj})})]})]}),m.jsx(ta,{target:i,placement:"bottom",children:m.jsxs("ul",{className:"list-unstyled mb-0",children:[a&&m.jsxs("li",{className:"short-url-visits-count__tooltip-list-item",children:["This short URL will not accept more than ",m.jsx("b",{children:jr(a)})," visit",a===1?"":"s","."]}),o&&m.jsxs("li",{className:"short-url-visits-count__tooltip-list-item",children:["This short URL will not accept visits before ",m.jsx("b",{className:"indivisible",children:xm(yi(o))}),"."]}),s&&m.jsxs("li",{className:"short-url-visits-count__tooltip-list-item",children:["This short URL will not accept visits after ",m.jsx("b",{className:"indivisible",children:xm(yi(s))}),"."]})]})})]}):l},bje=e=>!!e.onClose,_je=e=>!!e.onClick,C_=e=>{const{text:t,children:r,className:n,colorGenerator:i}=e,a=_je(e),o=a?Yu:"span",s=$.useMemo(()=>i.stylesForKey(t),[t,i]);return m.jsxs(o,{className:Me("badge tag fw-bold",n,{pointer:a}),style:s,onClick:a?e.onClick:void 0,children:[r??t,bje(e)&&m.jsx(Yu,{"aria-label":`Remove ${t}`,className:"bg-transparent ms-1 opacity-100 p-0 fw-bold tag__close",onClick:e.onClose,children:"×"})]})},wje=({tags:e,onTagClick:t,colorGenerator:r})=>e.length===0?m.jsx("i",{className:"indivisible",children:m.jsx("small",{children:"No tags"})}):m.jsx(m.Fragment,{children:e.map(n=>m.jsx(C_,{text:n,colorGenerator:r,onClick:()=>t==null?void 0:t(n)},n))}),KV=({shortUrl:e,onTagClick:t})=>{var r,n,i,a;const{ShortUrlsRowMenu:o,ColorGenerator:s,useTimeoutToggle:u}=Sr(KV),[l,h]=u(!1,500),p=$.useRef(!0),[{excludeBots:g}]=S_(),_=Hr("visits"),w=g??(_==null?void 0:_.excludeBots);return $.useEffect(()=>{p.current||h(),p.current=!1},[(r=e.visitsSummary)==null?void 0:r.total,(n=e.visitsSummary)==null?void 0:n.nonBots,e.visitsCount,h]),m.jsxs("tr",{className:"responsive-table__row",children:[m.jsx("td",{className:"indivisible short-urls-row__cell responsive-table__cell","data-th":"Created at",children:m.jsx(tb,{date:e.dateCreated})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell","data-th":"Short URL",children:m.jsxs("span",{className:"position-relative short-urls-row__cell--indivisible",children:[m.jsx("span",{className:"short-urls-row__short-url-wrapper",children:m.jsx(_i,{href:e.shortUrl})}),m.jsx(pje,{text:e.shortUrl})]})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell short-urls-row__cell--break","data-th":`${e.title?"Title":"Long URL"}`,children:m.jsx(_i,{href:e.longUrl,children:e.title??e.longUrl})}),e.title&&m.jsx("td",{className:"short-urls-row__cell responsive-table__cell short-urls-row__cell--break d-lg-none","data-th":"Long URL",children:m.jsx(_i,{href:e.longUrl})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell","data-th":"Tags",children:m.jsx(wje,{tags:e.tags,colorGenerator:s,onTagClick:t})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell text-lg-end","data-th":"Visits",children:m.jsx(GV,{visitsCount:(w?(i=e.visitsSummary)==null?void 0:i.nonBots:(a=e.visitsSummary)==null?void 0:a.total)??e.visitsCount??0,shortUrl:e,active:l,asLink:!0})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell","data-th":"Status",children:m.jsxs("div",{className:"d-flex gap-2",children:[m.jsx(yje,{shortUrl:e}),e.hasRedirectRules&&m.jsx(Sp,{asLink:!0,shortUrl:e,suffix:"redirect-rules",title:"This short URL has dynamic redirect rules",children:m.jsx(Ye,{icon:s7})})]})}),m.jsx("td",{className:"responsive-table__cell short-urls-row__cell text-end",children:m.jsx(o,{shortUrl:e})})]})},xje=Or(KV,["ShortUrlsRowMenu","ColorGenerator","useTimeoutToggle"]),Sje=6,B8="0123456789ABCDEF",Oje=128;function Cje(){return`#${zA(Sje,()=>B8[Math.floor(Math.random()*B8.length)]).join("")}`}function Pje(e,t,r){return Math.round(Math.sqrt(.299*e**2+.587*t**2+.114*r**2))}function YV(e){const[t,r,n]=(e.match(/../g)??[]).map(i=>parseInt(i,16)||0);return Pje(t,r,n)>=Oje}const ZV=$.forwardRef(({name:e,color:t,onChange:r,className:n},i)=>m.jsxs("div",{className:Me("p-0 position-relative",n),style:{backgroundColor:t,borderColor:t},children:[m.jsx(Ye,{icon:FY,className:"position-absolute top-50 start-50 translate-middle",style:{color:YV(t.substring(1))?"#000":"#fff"}}),m.jsx(Jr,{className:"form-control-color opacity-0",type:"color",value:t,onChange:a=>r(a.target.value),innerRef:i,name:e,"aria-label":e.replace("-"," ")})]})),U8=({color:e,onChange:t,name:r})=>{const n=vl();return m.jsxs(Im,{children:[m.jsx(ZV,{name:`${r}-picker`,color:e,onChange:t,className:"input-group-text",ref:n}),m.jsx(Jr,{readOnly:!0,value:e,onClick:()=>{var i;return(i=n.current)==null?void 0:i.click()},"aria-label":r,"data-testid":"text-input"})]})};function Eje(e){switch(e){case"L":return 1;case"M":return .5;default:return .3}}const jje=$.forwardRef(({data:e,color:t="#000000",bgColor:r="#ffffff",margin:n=0,errorCorrection:i="L",size:a=300,drawType:o="canvas",logo:s},u)=>{const l=$.useRef(null),h=$.useRef(new vue),p=$.useCallback((_,w)=>h.current.download({name:_,extension:w}),[]),g=$.useCallback(_=>new Promise((w,b)=>{const x=h.current.getRawData(_),S=new FileReader;S.onload=()=>{const{result:O}=S;O&&w(O.toString())},S.onerror=b,x.then(O=>{O instanceof Blob?S.readAsDataURL(O):b(new Error("QR code image blob not available"))})}),[]);return $.useImperativeHandle(u,()=>({download:p,getDataUri:g}),[p,g]),$.useEffect(()=>{const _=l.current;h.current.append(_)},[]),$.useEffect(()=>{h.current.update({type:o,data:e,width:a+n,height:a+n,margin:n,dotsOptions:{color:t},backgroundOptions:{color:r},qrOptions:{errorCorrectionLevel:i},imageOptions:{margin:5,imageSize:Eje(i)},image:s})},[r,t,e,o,i,s,n,a]),m.jsx("div",{ref:l})}),z8=({name:e,value:t,step:r,min:n,max:i,onChange:a})=>{const o=$.useId();return m.jsxs("div",{className:"d-flex flex-column gap-1",children:[m.jsxs("label",{htmlFor:o,className:"text-capitalize",children:[e,": ",t,"px"]}),m.jsx("input",{id:o,type:"range",className:"form-control-range",value:t,step:r,min:n,max:i,onChange:s=>a(Number(s.target.value))})]})},Tje=({shortUrl:{shortUrl:e,shortCode:t},toggle:r,isOpen:n,qrDrawType:i})=>{const a=Hr("qrCodes",wd),[{size:o,margin:s,color:u,bgColor:l,errorCorrection:h,format:p},g]=$.useState(a),_=$.useCallback(q=>g(W=>({...W,...q})),[]),w=$.useRef(null),[b,x]=$.useState(),S=$.useCallback(q=>{var W;const H=(W=q.target.files)==null?void 0:W[0];H&&x({url:URL.createObjectURL(new Blob([H],{type:H.type})),name:H.name})},[]),O=$.useRef(null),E=$.useCallback(()=>{var q;return(q=O.current)==null?void 0:q.download(`${t}-qr-code`,p)},[p,t]),[j,A]=Pb(),T=$.useCallback(()=>{var q;const W=((q=O.current)==null?void 0:q.getDataUri(p))??"";return QA({text:W,onCopy:A})},[p,A]),M=$.useCallback(()=>{g(a),x(void 0)},[a]);return m.jsxs(ea,{isOpen:n,toggle:r,centered:!0,size:"lg",onClosed:M,children:[m.jsxs(Pl,{toggle:r,children:["QR code for ",m.jsx(_i,{href:e,children:e})]}),m.jsxs(ss,{className:"d-flex flex-column-reverse flex-lg-row gap-3",children:[m.jsx("div",{className:"flex-grow-1 d-flex align-items-center justify-content-around qr-code-modal__qr-code",children:m.jsxs("div",{className:"d-flex flex-column gap-1 align-items-center","data-testid":"qr-code-container",children:[m.jsx(jje,{ref:O,data:e,size:o,margin:s,errorCorrection:h,color:u,bgColor:l,logo:b==null?void 0:b.url,drawType:i}),m.jsxs("div",{className:"text-center fst-italic",children:["Preview (",o+s,"x",o+s,")"]})]})}),m.jsxs("div",{className:"d-flex flex-column gap-2 qr-code-modal__controls",children:[m.jsx(z8,{name:"size",value:o,onChange:q=>_({size:q}),step:10,min:50,max:1e3}),m.jsx(z8,{name:"margin",value:s,onChange:q=>_({margin:q}),step:1,min:0,max:100}),m.jsx(lB,{errorCorrection:h,onChange:q=>_({errorCorrection:q})}),m.jsx(U8,{name:"color",color:u,onChange:q=>_({color:q})}),m.jsx(U8,{name:"background",color:l,onChange:q=>_({bgColor:q})}),!b&&m.jsxs(m.Fragment,{children:[m.jsxs(Rt,{outline:!0,className:"d-flex align-items-center gap-1",onClick:()=>{var q;return(q=w.current)==null?void 0:q.click()},children:[m.jsx(Ye,{icon:jse}),"Select logo"]}),m.jsx("input",{ref:w,type:"file",accept:"image/*","aria-hidden":!0,tabIndex:-1,className:"d-none",onChange:S,"data-testid":"logo-input"})]}),b&&m.jsxs(Rt,{outline:!0,className:"d-flex align-items-center gap-1",onClick:()=>x(void 0),children:[m.jsx(Ye,{icon:vb}),m.jsxs("div",{className:"text-truncate",children:["Clear logo (",b.name,")"]})]}),m.jsx("div",{className:"my-auto",children:m.jsx("hr",{className:"my-2"})}),m.jsxs("div",{className:"d-flex flex-column gap-2",children:[m.jsx(uB,{format:p,onChange:q=>_({format:q})}),m.jsxs("div",{className:"d-flex align-items-center gap-2",children:[m.jsx(Rt,{outline:!0,color:"primary",onClick:T,"aria-label":"Copy data URI",title:"Copy data URI",children:m.jsx(Ye,{icon:j?Lu:CT,fixedWidth:!0})}),m.jsxs(Rt,{color:"primary",onClick:E,className:"flex-grow-1",children:["Download ",m.jsx(Ye,{icon:i7,className:"ms-1"})]})]})]})]})]})]})},XV=({shortUrl:e,deleteShortUrl:t,shortUrlDeleted:r})=>{const{DeleteShortUrlModal:n}=Sr(XV),[i,,a,o]=Vt(),[s,,u,l]=Vt(),h=b_(),p=ho("shortUrlRedirectRules"),{confirmDeletions:g=!0}=Hr("shortUrlsList",{}),_=$.useCallback(async()=>{const w=await t(e);$A(w)||r(e)},[t,e,r]);return m.jsxs(m.Fragment,{children:[m.jsxs(Eb,{minWidth:p?220:190,children:[m.jsxs(Qe,{tag:Sp,shortUrl:e,suffix:"visits",asLink:!0,children:[m.jsx(Ye,{icon:$j,fixedWidth:!0})," Visit stats"]}),h&&m.jsxs(m.Fragment,{children:[m.jsxs(Qe,{disabled:!h.canAddItemWithName(e.shortUrl),onClick:()=>h.addItemToCompare({name:e.shortUrl,query:HA(e)}),children:[m.jsx(Ye,{icon:mb,fixedWidth:!0})," Compare visits"]}),m.jsx(Qe,{divider:!0,tag:"hr"})]}),m.jsxs(Qe,{tag:Sp,shortUrl:e,suffix:"edit",asLink:!0,children:[m.jsx(Ye,{icon:Ij,fixedWidth:!0})," Edit short URL"]}),p&&m.jsxs(Qe,{tag:Sp,shortUrl:e,suffix:"redirect-rules",asLink:!0,children:[m.jsx(Ye,{icon:s7,fixedWidth:!0})," Manage redirect rules"]}),m.jsxs(Qe,{onClick:a,children:[m.jsx(Ye,{icon:gZ,fixedWidth:!0})," QR code"]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{className:"dropdown-item--danger",onClick:g?u:_,children:[m.jsx(Ye,{icon:t7,fixedWidth:!0})," Delete short URL"]})]}),m.jsx(Tje,{shortUrl:e,isOpen:i,toggle:o}),m.jsx(n,{shortUrl:e,deleteShortUrl:t,shortUrlDeleted:r,isOpen:s,toggle:l})]})},Aje=Or(XV,["DeleteShortUrlModal"]),QV="shlink/shortUrlCreation",V8={saving:!1,saved:!1,error:!1},kje=e=>Wr(`${QV}/createShortUrl`,t=>e().createShortUrl(t)),Nje=e=>{const{reducer:t,actions:r}=Nr({name:QV,initialState:V8,reducers:{resetCreateShortUrl:()=>V8},extraReducers:i=>{i.addCase(e.pending,()=>({saving:!0,saved:!1,error:!1})),i.addCase(e.rejected,(a,{error:o})=>({saving:!1,saved:!1,error:!0,errorData:Pi(o)})),i.addCase(e.fulfilled,(a,{payload:o})=>({result:o,saving:!1,saved:!0,error:!1}))}}),{resetCreateShortUrl:n}=r;return{reducer:t,resetCreateShortUrl:n}},JV="shlink/shortUrlEdition",Rje={saving:!1,saved:!1,error:!1},Mje=e=>Wr(`${JV}/editShortUrl`,({shortCode:t,domain:r,data:n})=>e().updateShortUrl({shortCode:t,domain:r},n)),Lje=e=>Nr({name:JV,initialState:Rje,reducers:{},extraReducers:t=>{t.addCase(e.pending,r=>({...r,saving:!0,error:!1,saved:!1})),t.addCase(e.rejected,(r,{error:n})=>({...r,saving:!1,error:!0,saved:!1,errorData:Pi(n)})),t.addCase(e.fulfilled,(r,{payload:n})=>({shortUrl:n,saving:!1,error:!1,saved:!0}))}}),q8="shlink/shortUrlsDetails",W8={loading:!1,error:!1},Dje=e=>{const t=Wr(`${q8}/getShortUrlsDetails`,async(n,{getState:i})=>{const{shortUrlsList:a}=i(),o=await Promise.all(n.map(async s=>{var u;const{shortCode:l,domain:h}=s,p=(u=a==null?void 0:a.shortUrls)==null?void 0:u.data.find(g=>xp(g,l,h));return[s,p??await e().getShortUrl({shortCode:l,domain:h})]}));return new Map(o)}),{reducer:r}=Nr({name:q8,initialState:W8,reducers:{},extraReducers:n=>{n.addCase(t.pending,()=>({loading:!0,error:!1})),n.addCase(t.rejected,(i,{error:a})=>({loading:!1,error:!0,errorData:Pi(a)})),n.addCase(t.fulfilled,(i,{payload:a})=>({...W8,shortUrls:a}))}});return{reducer:r,getShortUrlsDetails:t}},Ije=({domains:e,value:t,onChange:r})=>{const[n,,i,a]=Vt(),o=!t,s=$.useCallback(()=>{r(""),a()},[r,a]),u=$.useCallback(()=>{r(""),i()},[r,i]);return n?m.jsxs(Im,{children:[m.jsx(Jr,{value:t??"",placeholder:"Domain",onChange:l=>r(l.target.value)}),m.jsx(Rt,{id:"backToDropdown",outline:!0,type:"button",className:"domains-dropdown__back-btn","aria-label":"Back to domains list",onClick:s,children:m.jsx(Ye,{icon:ZY})}),m.jsx(ta,{target:"backToDropdown",placement:"left",trigger:"hover",children:"Existing domains"})]}):m.jsxs(ls,{text:o?"Domain":`Domain: ${t}`,className:o?"domains-dropdown__toggle-btn":"domains-dropdown__toggle-btn--active",children:[e.map(({domain:l,isDefault:h})=>m.jsxs(Qe,{active:(t===l||h)&&o,onClick:()=>r(l),className:"d-flex justify-content-between align-items-center",children:[l,h&&m.jsx("span",{className:"text-muted",children:"default"})]},l)),m.jsx(Qe,{divider:!0}),m.jsx(Qe,{onClick:u,children:m.jsx("i",{children:"New domain"})})]})},$O=({icon:e,className:t,...r})=>{const n=vl();return m.jsxs("div",{className:"icon-input-container",children:[m.jsx(Jr,{className:Me("icon-input-container__input",t),innerRef:n,...r}),m.jsx(Ye,{icon:e,fixedWidth:!0,className:"icon-input-container__icon",onClick:()=>{var i;return(i=n.current)==null?void 0:i.focus()}})]})},$je=({minDate:e,maxDate:t,value:r,onChange:n,withTime:i=!1,...a})=>{const o=$.useCallback(({target:u})=>{if(!u.value){n==null||n(null);return}n==null||n(yi(u.value))},[n]),s=$.useMemo(()=>i?xm:ol,[i]);return m.jsx(Jr,{...a,type:i?"datetime-local":"date",value:s(r)??"",max:s(t)??void 0,min:s(e)??void 0,onChange:o})},rb=({label:e,id:t,...r})=>{const n=$.useId();return m.jsxs(m.Fragment,{children:[m.jsxs("label",{htmlFor:t??n,className:"mb-1",children:[e,":"]}),m.jsx($je,{id:t??n,...r})]})},FO=({children:e,infoTooltip:t,checked:r,onChange:n})=>m.jsxs("p",{children:[m.jsx(kF,{inline:!0,checked:r,className:t?"me-2":"",onChange:n,children:e}),t&&m.jsx(uy,{placement:"right",children:t})]}),Fje=({isOpen:e,toggle:t})=>m.jsxs(ea,{isOpen:e,toggle:t,centered:!0,size:"lg",children:[m.jsx(Pl,{toggle:t,children:"Info"}),m.jsxs(ss,{children:[m.jsxs("p",{children:["When the ",m.jsx("b",{children:m.jsx("i",{children:'"Use existing URL if found"'})})," checkbox is checked, the server will return an existing short URL if it matches provided params."]}),m.jsx("p",{children:"These are the checks performed by Shlink in order to determine if an existing short URL should be returned:"}),m.jsxs("ul",{children:[m.jsx("li",{children:"When only the long URL is provided: The most recent match will be returned, or a new short URL will be created if none is found."}),m.jsxs("li",{children:["When long URL and custom slug and/or domain are provided: Same as in previous case, but it will try to match the short URL using both the long URL and the slug, the long URL and the domain, or the three of them.",m.jsx("br",{}),"If the slug is being used by another long URL, an error will be returned."]}),m.jsx("li",{children:"When other params are provided: Same as in previous cases, but it will try to match existing short URLs with all provided data. If any of them does not match, a new short URL will be created"})]})]})]}),Bje=()=>{const[e,t]=Vt();return m.jsxs(m.Fragment,{children:[m.jsx(Yu,{className:"p-0",title:"What does this mean?",onClick:t,children:m.jsx(Ye,{icon:Fj})}),m.jsx(Fje,{isOpen:e,toggle:t})]})},Hg=e=>typeof e=="string"?gl(e):e,Uje=e=>"shortCodeLength"in e&&"customSlug"in e&&"domain"in e,eq=({basicMode:e=!1,saving:t,onSave:r,initialState:n,tagsList:i,domainsList:a})=>{var o,s,u;const{TagsSelector:l}=Sr(eq),[h,p]=$.useState(n),g=Uje(h),_=ho("deviceLongUrls"),w=ho("urlValidation"),b=w||g,x=$.useCallback(()=>p(n),[n]),S=$.useCallback((T,M)=>_u(T)?T:_u(M)?null:void 0,[]),O=$.useCallback((T,M)=>p(({deviceLongUrls:q={},...W})=>{var H;return{...W,deviceLongUrls:{...q,[T]:S(M,(H=n.deviceLongUrls)==null?void 0:H[T])}}}),[n.deviceLongUrls,S]),E=$.useCallback(T=>p(M=>({...M,tags:T})),[]),j=$.useCallback(async T=>(T.preventDefault(),r(h).then(M=>g&&!$A(M)&&x()).catch(()=>{})),[g,r,x,h]),A=$.useMemo(()=>m.jsxs("div",{className:"d-flex flex-column gap-3",children:[m.jsx(Jr,{bsSize:"lg",type:"url",placeholder:"URL to be shortened",required:!0,value:h.longUrl,onChange:T=>p(M=>({...M,longUrl:T.target.value}))}),m.jsxs("div",{className:Me("d-flex flex-column flex-lg-row gap-3",{"mb-3":e}),children:[e&&g&&m.jsx("div",{className:"w-100 w-lg-50",children:m.jsx(Jr,{bsSize:"lg",placeholder:"Custom slug",value:h.customSlug??"",onChange:T=>p(M=>({...M,customSlug:T.target.value}))})}),m.jsx("div",{className:Me("w-100",{"w-lg-50":e}),children:m.jsx(l,{tags:i.tags,selectedTags:h.tags??[],onChange:E})})]})]}),[l,e,E,g,h,i.tags]);return m.jsxs("form",{name:"shortUrlForm",className:"short-url-form",onSubmit:j,children:[e&&A,!e&&m.jsxs(m.Fragment,{children:[m.jsxs(Qa,{children:[m.jsx("div",{className:Me("mb-3",{"col-sm-6":_,"col-12":!_}),children:m.jsx(sr,{title:"Main options",children:A})}),_&&m.jsx("div",{className:"col-sm-6 mb-3",children:m.jsxs(sr,{title:"Device-specific long URLs",bodyClassName:"d-flex flex-column gap-3",children:[m.jsx($O,{type:"url",icon:yue,placeholder:"Android-specific redirection",value:((o=h.deviceLongUrls)==null?void 0:o.android)??"",onChange:({target:T})=>O("android",T.value)}),m.jsx($O,{type:"url",icon:gue,placeholder:"iOS-specific redirection",value:((s=h.deviceLongUrls)==null?void 0:s.ios)??"",onChange:({target:T})=>O("ios",T.value)}),m.jsx($O,{type:"url",icon:wZ,placeholder:"Desktop-specific redirection",value:((u=h.deviceLongUrls)==null?void 0:u.desktop)??"",onChange:({target:T})=>O("desktop",T.value)})]})})]}),m.jsxs(Qa,{children:[m.jsx("div",{className:"col-sm-6 mb-3",children:m.jsxs(sr,{title:"Customize the short URL",bodyClassName:"d-flex flex-column gap-3",children:[m.jsx(Jr,{placeholder:"Title",value:h.title??"",onChange:({target:T})=>p(M=>({...M,title:S(T.value,n.title)}))}),g&&m.jsxs(m.Fragment,{children:[m.jsxs(Qa,{children:[m.jsx("div",{className:"col-lg-6 mb-3 mb-lg-0",children:m.jsx(Jr,{placeholder:"Custom slug",value:h.customSlug??"",onChange:T=>p(M=>({...M,customSlug:T.target.value})),disabled:_u(h.shortCodeLength)})}),m.jsx("div",{className:"col-lg-6",children:m.jsx(Jr,{type:"number",placeholder:"Short code length",value:h.shortCodeLength??"",onChange:T=>p(M=>({...M,shortCodeLength:T.target.value})),min:4,disabled:_u(h.customSlug)})})]}),m.jsx(Ije,{value:h.domain,onChange:T=>p(M=>({...M,domain:T})),domains:a.domains})]})]})}),m.jsx("div",{className:"col-sm-6 mb-3",children:m.jsxs(sr,{title:"Limit access to the short URL",children:[m.jsxs("div",{className:"row mb-3",children:[m.jsx("div",{className:"col-lg-6",children:m.jsx(rb,{label:"Enabled since",withTime:!0,maxDate:h.validUntil?Hg(h.validUntil):void 0,value:h.validSince?Hg(h.validSince):null,onChange:T=>p(M=>({...M,validSince:xl(T)}))})}),m.jsx("div",{className:"col-lg-6 mt-3 mt-lg-0",children:m.jsx(rb,{label:"Enabled until",withTime:!0,minDate:h.validSince?Hg(h.validSince):void 0,value:h.validUntil?Hg(h.validUntil):null,onChange:T=>p(M=>({...M,validUntil:xl(T)}))})})]}),m.jsxs("div",{children:[m.jsx("label",{htmlFor:"maxVisits",className:"mb-1",children:"Maximum visits allowed:"}),m.jsx(Jr,{id:"maxVisits",type:"number",min:1,placeholder:"25...",value:h.maxVisits??"",onChange:T=>p(M=>({...M,maxVisits:_u(T.target.value)?Number(T.target.value):null}))})]})]})})]}),m.jsxs(Qa,{children:[b&&m.jsx("div",{className:"col-sm-6 mb-3",children:m.jsxs(sr,{title:"Extra checks",children:[w&&m.jsx(FO,{infoTooltip:"If checked, Shlink will try to reach the long URL, failing in case it's not publicly accessible.",checked:h.validateUrl,onChange:T=>p(M=>({...M,validateUrl:T})),children:"Validate URL"}),g&&m.jsxs("p",{children:[m.jsx(kF,{inline:!0,className:"me-2",checked:h.findIfExists,onChange:T=>p(M=>({...M,findIfExists:T})),children:"Use existing URL if found"}),m.jsx(Bje,{})]})]})}),m.jsx("div",{className:Me("mb-3",{"col-sm-6":b}),children:m.jsxs(sr,{title:"Configure behavior",children:[m.jsx(FO,{infoTooltip:"This short URL will be included in the robots.txt for your Shlink instance, allowing web crawlers (like Google) to index it.",checked:h.crawlable,onChange:T=>p(M=>({...M,crawlable:T})),children:"Make it crawlable"}),m.jsx(FO,{infoTooltip:"When this short URL is visited, any query params appended to it will be forwarded to the long URL.",checked:h.forwardQuery,onChange:T=>p(M=>({...M,forwardQuery:T})),children:"Forward query params on redirect"})]})})]})]}),m.jsx("div",{className:"text-center",children:m.jsx(Rt,{outline:!0,color:"primary",disabled:t||!h.longUrl,className:"btn-xs-block",children:t?"Saving...":"Save"})})]})},zje=Or(eq,["TagsSelector"]),P_="all",tq={today:"Today",yesterday:"Yesterday",last7Days:"Last 7 days",last30Days:"Last 30 days",last90Days:"Last 90 days",last180Days:"Last 180 days",last365Days:"Last 365 days",[P_]:void 0},rq=Object.keys(tq),Vje=e=>!e||!e.startDate&&!e.endDate,nb=e=>typeof e=="string"&&rq.includes(e),qje=rq.filter(e=>e!==P_),H8=e=>e?yi(e):null,nq=(e,t)=>({startDate:H8(e),endDate:H8(t)}),Wje=e=>{if(!(!e||Vje(e)))return e.startDate&&!e.endDate?`Since ${ol(e.startDate)}`:!e.startDate&&e.endDate?`Until ${ol(e.endDate)}`:`${ol(e.startDate)} - ${ol(e.endDate)}`},iq=e=>{if(!(!e||e===P_))return nb(e)?tq[e]:Wje(e)},qi=e=>qu(Xy(wl(),e)),ef=e=>({startDate:e,endDate:Mf(wl())}),aq=e=>{var t;return((t=[[()=>e==="today",()=>ef(qu(wl()))],[()=>e==="yesterday",()=>({startDate:qi(1),endDate:Mf(Xy(wl(),1))})],[()=>e==="last7Days",()=>ef(qi(7))],[()=>e==="last30Days",()=>ef(qi(30))],[()=>e==="last90Days",()=>ef(qi(90))],[()=>e==="last180Days",()=>ef(qi(180))],[()=>e==="last365Days",()=>ef(qi(365))]].find(([r])=>r()))==null?void 0:t[1]())??{}},Hje=e=>{var t;const r=yi(e);return((t=[[()=>fu(qu(wl()),r),"today"],[()=>fu(qi(1),r),"yesterday"],[()=>fu(qi(7),r),"last7Days"],[()=>fu(qi(30),r),"last30Days"],[()=>fu(qi(90),r),"last90Days"],[()=>fu(qi(180),r),"last180Days"],[()=>fu(qi(365),r),"last365Days"]].find(([n])=>n()))==null?void 0:t[1])??P_},oq=e=>nb(e)?aq(e):e,sq=e=>!!(e&&e.startDate),Gje=({startDate:e,endDate:t})=>{const r=gB(Mf(t??new Date),qu(e))+1,n=Xy(qu(e),r),i=Xy(Mf(e),1);return{startDate:n,endDate:i}},Kje=e=>{if(sq(e))return gB(e.endDate??new Date,e.startDate)},Yje=({active:e,allText:t,onChange:r})=>m.jsxs(m.Fragment,{children:[m.jsx(Qe,{active:e==="all",onClick:()=>r("all"),children:t}),m.jsx(Qe,{divider:!0,tag:"hr"}),qje.map(n=>m.jsx(Qe,{active:e===n,onClick:()=>r(n),children:iq(n)},n))]}),Zje=({startDate:e,endDate:t,disabled:r=!1,onStartDateChange:n,onEndDateChange:i})=>m.jsxs("div",{className:"row",children:[m.jsx("div",{className:"col-md-6",children:m.jsx(rb,{label:"Since",value:e,maxDate:t??void 0,disabled:r,onChange:n})}),m.jsx("div",{className:"col-md-6 mt-3 mt-md-0",children:m.jsx(rb,{label:"Until",value:t,minDate:e??void 0,disabled:r,onChange:a=>i(a&&Mf(a))})})]}),t3=({onDatesChange:e,dateRangeOrInterval:t,defaultText:r,disabled:n})=>{const i=$.useMemo(()=>iq(t)??r,[t,r]),[a,o]=$.useMemo(()=>nb(t)?[void 0,t]:[t,void 0],[t]),s=$.useCallback(u=>{nb(u)?e(aq(u),u):e(u)},[e]);return m.jsxs(ls,{disabled:n,text:i,children:[m.jsx(Yje,{allText:r,active:o,onChange:s}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx("div",{className:"px-3 py-1",children:m.jsx(Zje,{...a,onStartDateChange:u=>s({...a,startDate:u}),onEndDateChange:u=>s({...a,endDate:u})})})]})},Xje={dateCreated:"Created at",shortCode:"Short URL",longUrl:"Long URL",title:"Title",visits:"Visits"},Qje=({onChange:e,selected:t={},className:r,domains:n})=>{const i=ho("filterShortUrlsByDomain"),{excludeBots:a=!1,excludeMaxVisitsReached:o=!1,excludePastValidUntil:s=!1,domain:u}=t,l=$.useCallback(p=>e({...t,...p}),[e,t]),h=$.useCallback(p=>l({[p]:!(t!=null&&t[p])}),[l,t]);return m.jsxs(ls,{text:"Filters",dropdownClassName:r,end:!0,minWidth:250,children:[m.jsx(Qe,{header:!0,"aria-hidden":!0,children:"Visits:"}),m.jsx(Qe,{active:a,onClick:()=>h("excludeBots"),children:"Ignore visits from bots"}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{header:!0,"aria-hidden":!0,children:"Short URLs:"}),m.jsx(Qe,{active:o,onClick:()=>h("excludeMaxVisitsReached"),children:"Exclude with visits reached"}),m.jsx(Qe,{active:s,onClick:()=>h("excludePastValidUntil"),children:"Exclude enabled in the past"}),i&&m.jsxs(m.Fragment,{children:[m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{header:!0,"aria-hidden":!0,children:["Domain: ",!n&&m.jsx("i",{children:"loading..."})]}),n==null?void 0:n.map(p=>{const g=p.isDefault?cd:p.domain,_=u===g;return m.jsx(Qe,{active:_,onClick:()=>l({domain:_?void 0:g}),children:p.domain},p.domain)})]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{disabled:t.excludeBots===void 0&&t.excludeMaxVisitsReached===void 0&&t.excludePastValidUntil===void 0&&t.domain===void 0,onClick:()=>e({excludeBots:void 0,excludeMaxVisitsReached:void 0,excludePastValidUntil:void 0,domain:void 0}),className:"fst-italic",children:"Reset to defaults"})]})},lq=({className:e,shortUrlsAmount:t,order:r,handleOrderBy:n,tagsList:i,domainsList:a})=>{const{ExportShortUrlsBtn:o,TagsSelector:s}=Sr(lq),[{search:u,tags:l,startDate:h,endDate:p,excludeBots:g,excludeMaxVisitsReached:_,excludePastValidUntil:w,domain:b,tagsMode:x="any"},S]=S_(),O=Hr("visits"),[E,j]=$.useState(),A=$.useCallback(({startDate:W,endDate:H},K)=>{S({startDate:xl(W)??void 0,endDate:xl(H)??void 0}),j(K)},[S]),T=$.useCallback(W=>S({search:W||void 0}),[S]),M=$.useCallback(W=>S({tags:W}),[S]),q=$.useCallback(()=>S({tagsMode:x==="any"?"all":"any"}),[x,S]);return m.jsxs("div",{className:Me("short-urls-filtering-bar-container",e),children:[m.jsx(Cb,{initialValue:u,onChange:T}),m.jsxs(Im,{className:"mt-3",children:[m.jsx(s,{immutable:!0,placeholder:"With tags...",tags:i.tags,selectedTags:l,onChange:M}),l.length>1&&m.jsxs(m.Fragment,{children:[m.jsx(Rt,{outline:!0,color:"secondary",onClick:q,id:"tagsModeBtn","aria-label":"Change tags mode",children:m.jsx(Ye,{className:"short-urls-filtering-bar__tags-icon",icon:x==="all"?n7:GY})}),m.jsx(ta,{target:"tagsModeBtn",placement:"left",children:x==="all"?"With all the tags.":"With any of the tags."})]})]}),m.jsxs(Qa,{className:"flex-lg-row-reverse",children:[m.jsx("div",{className:"col-lg-8 col-xl-6 mt-3",children:m.jsxs("div",{className:"d-md-flex",children:[m.jsx("div",{className:"flex-grow-1",children:m.jsx(t3,{defaultText:"All short URLs",dateRangeOrInterval:E??nq(h,p),onDatesChange:A})}),m.jsx(Qje,{className:"ms-0 ms-md-2 mt-3 mt-md-0",selected:{excludeBots:g??(O==null?void 0:O.excludeBots),excludeMaxVisitsReached:_,excludePastValidUntil:w,domain:b},onChange:S,domains:a.loading?void 0:a.domains})]})}),m.jsx("div",{className:"col-6 col-lg-4 col-xl-6 mt-3",children:m.jsx(o,{amount:t})}),m.jsx("div",{className:"col-6 d-lg-none mt-3",children:m.jsx(Fm,{prefixed:!1,items:Xje,order:r,onChange:n})})]})]})},Jje=Or(lq,["ExportShortUrlsBtn","TagsSelector"]);function Op({currentOrder:e,field:t,className:r="ms-1"}){return!e.dir||e.field!==t?null:m.jsx(Ye,{icon:e.dir==="ASC"?$Y:QY,className:r})}const tf=2,vj="...",uq=(e,t)=>{const r=ST(Math.max(tf,e-tf),Math.min(t-1,e+tf)+1);return e-tf>tf&&r.unshift(vj),e+tfe===vj,cq=e=>Sm(e)?e:jr(e),fq=(e,t)=>Sm(e)?`${e}_${t}`:`${e}`,eTe=({paginator:e,currentQueryString:t=""})=>{const{currentPage:r=0,pagesCount:n=0}=e??{},i=Nl(),a=s=>`${i}/list-short-urls/${s}${t}`;if(n<=1)return m.jsx("div",{className:"pb-3"});const o=()=>uq(r,n).map((s,u)=>m.jsx(Au,{disabled:Sm(s),active:r===s,children:m.jsx(ku,{tag:nr,to:a(s),children:cq(s)})},fq(s,u)));return m.jsxs(pT,{className:"sticky-card-paginator py-3",listClassName:"flex-wrap justify-content-center mb-0",children:[m.jsx(Au,{disabled:r===1,children:m.jsx(ku,{previous:!0,tag:nr,to:a(r-1)})}),o(),m.jsx(Au,{disabled:r>=n,children:m.jsx(ku,{next:!0,tag:nr,to:a(r+1)})})]})},tTe={field:"dateCreated",dir:"DESC"},dq=Ra(({listShortUrls:e,shortUrlsList:t})=>{var r,n,i;const{ShortUrlsTable:a,ShortUrlsFilteringBar:o}=Sr(dq),{page:s}=md(),u=Sn(),[{tags:l,search:h,startDate:p,endDate:g,orderBy:_,tagsMode:w,excludeBots:b,excludePastValidUntil:x,excludeMaxVisitsReached:S,domain:O},E]=S_(),j=OT(),[A,T]=$.useState(_??((r=j.shortUrlsList)==null?void 0:r.defaultOrdering)??tTe),{pagination:M}=(t==null?void 0:t.shortUrls)??{},q=$.useMemo(()=>{var ee;return b??((ee=j.visits)==null?void 0:ee.excludeBots)},[b,(n=j.visits)==null?void 0:n.excludeBots]),W=$.useCallback((ee,re)=>{E({orderBy:{field:ee,dir:re}}),T({field:ee,dir:re})},[E]),H=ee=>()=>W(ee,$m(ee,A.field,A.dir)),K=ee=>m.jsx(Op,{currentOrder:A,field:ee}),te=$.useCallback(ee=>E({tags:[...new Set([...l,ee])]}),[l,E]),se=$.useCallback(({field:ee,dir:re})=>q&&ee==="visits"?{field:"nonBotVisits",dir:re}:{field:ee,dir:re},[q]),X=BA();return $.useEffect(()=>{e({page:s,searchTerm:h,tags:l,startDate:p,endDate:g,orderBy:se(A),tagsMode:w,excludePastValidUntil:x,excludeMaxVisitsReached:S,domain:O})},[e,se,s,h,l,p,g,A,w,x,S,O]),m.jsxs(FA,{value:X,children:[m.jsx(o,{shortUrlsAmount:(i=t.shortUrls)==null?void 0:i.pagination.totalItems,order:A,handleOrderBy:W,className:"mb-3"}),m.jsx(UA,{type:"short-urls",className:"mb-3"}),m.jsxs(Ji,{body:!0,className:Me({"pb-0":!t.loading}),children:[m.jsx(a,{shortUrlsList:t,orderByColumn:H,renderOrderIcon:K,onTagClick:te}),!t.loading&&m.jsx(eTe,{paginator:M,currentQueryString:u.search})]})]})},()=>[Dn.visits]),rTe=Or(dq,["ShortUrlsTable","ShortUrlsFilteringBar"]),nTe=({shortUrlsList:e,onTagClick:t,ShortUrlsRow:r})=>{const{error:n,loading:i,shortUrls:a}=e;return n?m.jsx("tr",{children:m.jsx("td",{colSpan:6,className:"text-center table-danger text-dark",children:"Something went wrong while loading short URLs :("})}):i?m.jsx("tr",{children:m.jsx("td",{colSpan:6,className:"text-center",children:"Loading..."})}):!i&&(!a||a.data.length===0)?m.jsx("tr",{children:m.jsx("td",{colSpan:6,className:"text-center",children:"No results found"})}):a==null?void 0:a.data.map(o=>m.jsx(r,{shortUrl:o,onTagClick:t},o.shortUrl))},hq=({orderByColumn:e,renderOrderIcon:t,shortUrlsList:r,onTagClick:n,className:i})=>{const{ShortUrlsRow:a}=Sr(hq),o=Me({"short-urls-table__header-cell--with-action":!!e}),s=Me("short-urls-table__header-cell",o),u=Me("table table-hover responsive-table short-urls-table",i);return m.jsxs("table",{className:u,children:[m.jsx("thead",{className:"responsive-table__header short-urls-table__header",children:m.jsxs("tr",{children:[m.jsxs("th",{className:s,onClick:e==null?void 0:e("dateCreated"),children:["Created at ",t==null?void 0:t("dateCreated")]}),m.jsxs("th",{className:s,onClick:e==null?void 0:e("shortCode"),children:["Short URL ",t==null?void 0:t("shortCode")]}),m.jsxs("th",{className:"short-urls-table__header-cell",children:[m.jsxs(Yu,{className:Me("p-0",o),onClick:e==null?void 0:e("title"),children:["Title ",t==null?void 0:t("title")]}),"  /  ",m.jsxs(Yu,{className:Me("p-0",o),onClick:e==null?void 0:e("longUrl"),children:[m.jsx("span",{className:"indivisible",children:"Long URL"})," ",t==null?void 0:t("longUrl")]})]}),m.jsx("th",{className:"short-urls-table__header-cell",children:"Tags"}),m.jsx("th",{className:s,onClick:e==null?void 0:e("visits"),children:m.jsxs("span",{className:"indivisible",children:["Visits ",t==null?void 0:t("visits")]})}),m.jsx("th",{className:"short-urls-table__header-cell",colSpan:2,"aria-hidden":!0})]})}),m.jsx("tbody",{children:m.jsx(nTe,{ShortUrlsRow:a,shortUrlsList:r,onTagClick:n})})]})},iTe=Or(hq,["ShortUrlsRow"]),aTe=(e,t)=>{e.factory("ShortUrlsList",rTe),e.decorator("ShortUrlsList",t(["mercureInfo","shortUrlsList"],["listShortUrls","createNewVisits","loadMercureInfo"])),e.factory("ShortUrlsTable",iTe),e.factory("ShortUrlsRow",xje),e.factory("CreateShortUrlResult",fje),e.factory("ShortUrlsRowMenu",Aje),e.decorator("ShortUrlsRowMenu",t(null,["shortUrlDeleted","deleteShortUrl"])),e.factory("ShortUrlForm",zje),e.decorator("ShortUrlForm",t(["tagsList","domainsList"])),e.factory("CreateShortUrl",uje),e.decorator("CreateShortUrl",t(["shortUrlCreation"],["createShortUrl","resetCreateShortUrl"])),e.factory("EditShortUrl",cje),e.decorator("EditShortUrl",t(["shortUrlsDetails","shortUrlEdition"],["getShortUrlsDetails","editShortUrl"])),e.serviceFactory("DeleteShortUrlModal",()=>dje),e.decorator("DeleteShortUrlModal",t(["shortUrlDeletion"],["resetDeleteShortUrl"])),e.factory("ExportShortUrlsBtn",hje),e.factory("ShortUrlsFilteringBar",Jje),e.decorator("ShortUrlsFilteringBar",t(["tagsList","domainsList"])),e.serviceFactory("shortUrlsListReducerCreator",MPe,"listShortUrls","editShortUrl","createShortUrl"),e.serviceFactory("shortUrlsListReducer",r=>r.reducer,"shortUrlsListReducerCreator"),e.serviceFactory("shortUrlCreationReducerCreator",Nje,"createShortUrl"),e.serviceFactory("shortUrlCreationReducer",r=>r.reducer,"shortUrlCreationReducerCreator"),e.serviceFactory("shortUrlEditionReducerCreator",Lje,"editShortUrl"),e.serviceFactory("shortUrlEditionReducer",r=>r.reducer,"shortUrlEditionReducerCreator"),e.serviceFactory("shortUrlDeletionReducerCreator",kPe,"deleteShortUrl"),e.serviceFactory("shortUrlDeletionReducer",r=>r.reducer,"shortUrlDeletionReducerCreator"),e.serviceFactory("shortUrlsDetailsReducerCreator",Dje,"apiClientFactory"),e.serviceFactory("shortUrlsDetailsReducer",r=>r.reducer,"shortUrlsDetailsReducerCreator"),e.serviceFactory("listShortUrls",RPe,"apiClientFactory"),e.serviceFactory("createShortUrl",kje,"apiClientFactory"),e.serviceFactory("resetCreateShortUrl",r=>r.resetCreateShortUrl,"shortUrlCreationReducerCreator"),e.serviceFactory("deleteShortUrl",APe,"apiClientFactory"),e.serviceFactory("resetDeleteShortUrl",r=>r.resetDeleteShortUrl,"shortUrlDeletionReducerCreator"),e.serviceFactory("shortUrlDeleted",()=>_V),e.serviceFactory("getShortUrlsDetails",r=>r.getShortUrlsDetails,"shortUrlsDetailsReducerCreator"),e.serviceFactory("editShortUrl",Mje,"apiClientFactory")},oTe=({tag:e,toggle:t,isOpen:r,deleteTag:n,tagDelete:i,tagDeleted:a})=>{const{deleting:o,error:s,deleted:u,errorData:l}=i;return m.jsxs(ea,{toggle:t,isOpen:r,centered:!0,onClosed:()=>u&&a(e),children:[m.jsx(Pl,{toggle:t,className:"text-danger",children:"Delete tag"}),m.jsxs(ss,{children:["Are you sure you want to delete tag ",m.jsx("b",{children:e}),"?",s&&m.jsx(bi,{type:"error",small:!0,className:"mt-2",children:m.jsx(fo,{errorData:l,fallbackMessage:"Something went wrong while deleting the tag :("})})]}),m.jsxs(gd,{children:[m.jsx(Rt,{color:"link",onClick:t,children:"Cancel"}),m.jsx(Rt,{color:"danger",disabled:o,onClick:async()=>{await n(e),t()},children:o?"Deleting tag...":"Delete tag"})]})]})},pq=({tag:e,editTag:t,toggle:r,tagEdited:n,isOpen:i,tagEdit:a})=>{const{ColorGenerator:o}=Sr(pq),[s,u]=$.useState(e),[l,h]=$.useState(o.getColorForKey(e)),{editing:p,error:g,edited:_,errorData:w}=a,b=gV(async()=>{await t({oldName:e,newName:s,color:l}),r()}),x=$.useCallback(()=>_&&n({oldName:e,newName:s,color:l}),[l,_,s,e,n]);return m.jsx(ea,{isOpen:i,toggle:r,centered:!0,onClosed:x,children:m.jsxs("form",{name:"editTag",onSubmit:b,children:[m.jsx(Pl,{toggle:r,children:"Edit tag"}),m.jsxs(ss,{children:[m.jsxs(Im,{children:[m.jsx(ZV,{color:l,onChange:h,className:"input-group-text",name:"tag-color"}),m.jsx(Jr,{value:s,placeholder:"Tag",required:!0,onChange:({target:S})=>u(S.value)})]}),g&&m.jsx(bi,{type:"error",small:!0,className:"mt-2",children:m.jsx(fo,{errorData:w,fallbackMessage:"Something went wrong while editing the tag :("})})]}),m.jsxs(gd,{children:[m.jsx(Rt,{type:"button",color:"link",onClick:r,children:"Cancel"}),m.jsx(Rt,{color:"primary",disabled:p,children:p?"Saving...":"Save"})]})]})})},sTe=Or(pq,["ColorGenerator"]),lTe=/\s+/g,mq=e=>e.trim().toLowerCase().replace(lTe,"-"),vq=({color:e})=>m.jsx("div",{style:{backgroundColor:e},className:"color-bullet"}),gq=({tag:e,colorGenerator:t})=>m.jsx(vq,{color:t.getColorForKey(e)});let G8=1;const yq="Tag not found",bq="Add tag",uTe=e=>e!==yq,cTe=e=>e===bq,K8=e=>(G8+=1,{label:e,value:`${e}${G8}`}),fTe=e=>({tag:t,onClick:r})=>m.jsx(C_,{colorGenerator:e,text:t.label,className:"react-tags__tag",onClose:r}),dTe=(e,t)=>({option:r,classNames:n,...i})=>{var a;const o=uTe(r.label),s=cTe(r.label);return m.jsx("div",{className:Me(n.option,{[n.optionIsActive]:o&&r.active,"react-tags__listbox-option--not-selectable":!o}),...i,children:o?m.jsxs(m.Fragment,{children:[!s&&m.jsx(gq,{tag:`${r.label}`,colorGenerator:e}),s?m.jsxs("i",{children:['Add "',mq(((a=t.current)==null?void 0:a.input.value)??""),'"']}):r.label]}):m.jsx("i",{children:r.label})})},_q=({selectedTags:e,onChange:t,placeholder:r,tags:n,immutable:i=!1})=>{const{ColorGenerator:a}=Sr(_q),o=Hr("shortUrlCreation"),s=(o==null?void 0:o.tagFilteringMode)??"startsWith",u=$.useRef(null);return m.jsx(vce,{ref:u,selected:e.map(K8),suggestions:n.filter(l=>!e.includes(l)).map(K8),renderTag:fTe(a),renderOption:dTe(a,u),activateFirstOption:!0,allowNew:!i,newOptionText:bq,noOptionsText:yq,placeholderText:r??"Add tags to the URL",delimiterKeys:["Enter",","],suggestionsTransform:(l,h)=>{const p=l.toLowerCase().trim();return p.length<1?[]:[...h.filter(({label:g})=>s==="includes"?g.includes(p):g.startsWith(p))].slice(0,5)},onDelete:l=>{const h=[...e];h.splice(l,1),t(h)},onAdd:({label:l})=>t([...new Set([...e,...l.split(",").map(mq)])])})},hTe=Or(_q,["ColorGenerator"]),gj="shlink/tagDelete",pTe={deleting:!1,deleted:!1,error:!1},wq=Mn(`${gj}/tagDeleted`),mTe=e=>{const t=Wr(`${gj}/deleteTag`,async n=>{await e().deleteTags([n])}),{reducer:r}=Nr({name:gj,initialState:pTe,reducers:{},extraReducers:n=>{n.addCase(t.pending,()=>({deleting:!0,deleted:!1,error:!1})),n.addCase(t.rejected,(i,{error:a})=>({deleting:!1,deleted:!1,error:!0,errorData:Pi(a)})),n.addCase(t.fulfilled,()=>({deleting:!1,deleted:!0,error:!1}))}});return{reducer:r,deleteTag:t}},r3="shlink/tagEdit",vTe={editing:!1,edited:!1,error:!1},xq=Mn(`${r3}/tagEdited`),gTe=(e,t)=>Wr(`${r3}/editTag`,async({oldName:r,newName:n,color:i})=>(await e().editTag({oldName:r,newName:n}),t.setColorForKey(n,i),{oldName:r,newName:n,color:i})),yTe=e=>Nr({name:r3,initialState:vTe,reducers:{},extraReducers:t=>{t.addCase(e.pending,()=>({editing:!0,edited:!1,error:!1})),t.addCase(e.rejected,(r,{error:n})=>({editing:!1,edited:!1,error:!0,errorData:Pi(n)})),t.addCase(e.fulfilled,(r,{payload:n})=>{const{oldName:i,newName:a}=n;return{oldName:i,newName:a,editing:!1,edited:!0,error:!1}})}}),n3="shlink/tagsList",BO={tags:[],filteredTags:[],stats:{},loading:!1,error:!1},Y8=(e,t)=>r=>r===e?t:r,Z8=(e,t)=>e.filter(r=>r!==t),bTe=(e,t)=>e.reduce((r,[n,i])=>{if(!r[n])return r;const{bots:a,nonBots:o}=i,s=r[n];return{...r,[n]:{...s,visitsSummary:s.visitsSummary&&{total:s.visitsSummary.total+a+o,bots:s.visitsSummary.bots+a,nonBots:s.visitsSummary.nonBots+o},visitsCount:(s.visitsCount??0)+a+o}}},{...t}),_Te=e=>Object.entries(e.reduce((t,{shortUrl:r,visit:n})=>(r==null||r.tags.forEach(i=>{t[i]||(t[i]={bots:0,nonBots:0}),n.potentialBot?t[i].bots+=1:t[i].nonBots+=1}),t),{})),wTe=e=>Wr(`${n3}/listTags`,async()=>{const{data:t}=await e().tagsStats(),r=t.reduce((n,{tag:i,...a})=>(n[i]=a,n),{});return{tags:Object.keys(r),stats:r}}),Sq=Mn(`${n3}/filterTags`),xTe=(e,t)=>Nr({name:n3,initialState:BO,reducers:{},extraReducers:r=>{r.addCase(Sq,(n,{payload:i})=>({...n,filteredTags:n.tags.filter(a=>a.toLowerCase().match(i.toLowerCase()))})),r.addCase(e.pending,n=>({...n,loading:!0,error:!1})),r.addCase(e.rejected,(n,{error:i})=>({...BO,error:!0,errorData:Pi(i)})),r.addCase(e.fulfilled,(n,{payload:i})=>({...BO,stats:i.stats,tags:i.tags,filteredTags:i.tags})),r.addCase(wq,({tags:n,filteredTags:i,...a},{payload:o})=>({...a,tags:Z8(n,o),filteredTags:Z8(i,o)})),r.addCase(xq,({tags:n,filteredTags:i,stats:a,...o},{payload:s})=>({...o,stats:{...a,[s.newName]:a[s.oldName]},tags:n.map(Y8(s.oldName,s.newName)).sort(),filteredTags:i.map(Y8(s.oldName,s.newName)).sort()})),r.addCase(Md,(n,{payload:i})=>({...n,stats:bTe(_Te(i.createdVisits),n.stats)})),r.addCase(t.fulfilled,({tags:n,...i},{payload:a})=>({...i,tags:n.concat(a.tags.filter(o=>!n.includes(o)))}))}}),STe={tag:"Tag",shortUrls:"Short URLs",visits:"Visits"},Oq=Ra(({filterTags:e,tagsList:t})=>{var r,n;const{TagsTable:i}=Sr(Oq),a=OT(),[o,s]=$.useState(((r=a.tags)==null?void 0:r.defaultOrdering)??{}),u=$.useMemo(()=>{const h=t.filteredTags.map(p=>{var g,_,w;const b=t.stats[p],x=((g=a.visits)!=null&&g.excludeBots?(_=b==null?void 0:b.visitsSummary)==null?void 0:_.nonBots:(w=b==null?void 0:b.visitsSummary)==null?void 0:w.total)??(b==null?void 0:b.visitsCount)??0;return{tag:p,visits:x,shortUrls:(b==null?void 0:b.shortUrlsCount)??0}});return MF(h,o)},[o,(n=a.visits)==null?void 0:n.excludeBots,t.filteredTags,t.stats]),l=BA();return t.loading?m.jsx(Bu,{loading:!0}):t.error?m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:t.errorData,fallbackMessage:"Error loading tags :("})}):m.jsxs(FA,{value:l,children:[m.jsx(Cb,{className:"mb-3",onChange:e}),m.jsx(Qa,{className:"mb-3",children:m.jsx("div",{className:"col-lg-6 offset-lg-6",children:m.jsx(Fm,{items:STe,order:o,onChange:(h,p)=>s({field:h,dir:p})})})}),m.jsx(UA,{type:"tags",className:"mb-3"}),m.jsx(i,{sortedTags:u,currentOrder:o,orderByColumn:h=>()=>{const p=$m(h,o.field,o.dir);s({field:p?h:void 0,dir:p})}})]})},()=>[Dn.visits]),OTe=Or(Oq,["TagsTable"]),i3=({pagesCount:e,currentPage:t,onPageChange:r,centered:n=!0})=>{const i=$.useCallback(a=>!Sm(a)&&r(a),[r]);return e<2?null:m.jsxs(pT,{listClassName:Me("flex-wrap mb-0 simple-paginator",{"justify-content-center":n}),children:[m.jsx(Au,{disabled:t<=1,children:m.jsx(ku,{previous:!0,tag:"span",onClick:()=>i(t-1)})}),uq(t,e).map((a,o)=>m.jsx(Au,{disabled:Sm(a),active:t===a,children:m.jsx(ku,{role:"link",tag:"span",onClick:()=>i(a),children:cq(a)})},fq(a,o))),m.jsx(Au,{disabled:t>=e,children:m.jsx(ku,{next:!0,tag:"span",onClick:()=>i(t+1)})})]})},CTe=20,Cq=({sortedTags:e,orderByColumn:t,currentOrder:r})=>{const{TagsTableRow:n}=Sr(Cq),i=$.useRef(!0),{page:a=1}=bd(),[o,s]=hPe("page",Number(a)),u=$.useCallback(g=>{s(g),scrollTo(0,0)},[s]),l=bf(e,CTe),h=l.length>1,p=l[o-1]??[];return $.useEffect(()=>{i.current||u(1),i.current=!1},[u,e]),m.jsxs(sr,{bodyClassName:h?"pb-1":"",children:[m.jsxs("table",{className:"table table-hover responsive-table mb-0",children:[m.jsxs("thead",{className:"responsive-table__header",children:[m.jsxs("tr",{children:[m.jsxs("th",{className:"tags-table__header-cell",onClick:t("tag"),children:["Tag ",m.jsx(Op,{currentOrder:r,field:"tag"})]}),m.jsxs("th",{className:"tags-table__header-cell text-lg-end",onClick:t("shortUrls"),children:["Short URLs ",m.jsx(Op,{currentOrder:r,field:"shortUrls"})]}),m.jsxs("th",{className:"tags-table__header-cell text-lg-end",onClick:t("visits"),children:["Visits ",m.jsx(Op,{currentOrder:r,field:"visits"})]}),m.jsx("th",{className:"tags-table__header-cell",children:m.jsx("span",{className:"sr-only",children:"Options"})})]}),m.jsx("tr",{children:m.jsx("th",{"aria-hidden":!0,colSpan:4,className:"p-0 border-top-0"})})]}),m.jsxs("tbody",{children:[p.length===0&&m.jsx("tr",{children:m.jsx("td",{colSpan:4,className:"text-center",children:"No tags found"})}),p.map(g=>m.jsx(n,{tag:g},g.tag))]})]}),h&&m.jsx("div",{className:"sticky-card-paginator",children:m.jsx(i3,{pagesCount:l.length,currentPage:o,onPageChange:u})})]},o)},PTe=Or(Cq,["TagsTableRow"]),Pq=({tag:e})=>{const{DeleteTagConfirmModal:t,EditTagModal:r,ColorGenerator:n}=Sr(Pq),[i,a]=Vt(),[o,s]=Vt(),u=Nl(),l=b_();return m.jsxs("tr",{className:"responsive-table__row",children:[m.jsxs("th",{className:"responsive-table__cell","data-th":"Tag",children:[m.jsx(gq,{tag:e.tag,colorGenerator:n})," ",e.tag]}),m.jsx("td",{className:"responsive-table__cell text-lg-end","data-th":"Short URLs",children:m.jsx(nr,{to:`${u}/list-short-urls/1?tags=${encodeURIComponent(e.tag)}`,children:jr(e.shortUrls)})}),m.jsx("td",{className:"responsive-table__cell text-lg-end","data-th":"Visits",children:m.jsx(nr,{to:`${u}/tag/${e.tag}/visits`,children:jr(e.visits)})}),m.jsx("td",{className:"responsive-table__cell text-lg-end",children:m.jsxs(Eb,{children:[m.jsxs(Qe,{onClick:s,children:[m.jsx(Ye,{icon:r7,fixedWidth:!0,className:"me-1"})," Edit"]}),m.jsxs(Qe,{disabled:!l||!l.canAddItemWithName(e.tag),onClick:()=>l==null?void 0:l.addItemToCompare({name:e.tag,query:e.tag,style:n.stylesForKey(e.tag)}),children:[m.jsx(Ye,{icon:mb,fixedWidth:!0})," Compare visits"]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{className:"dropdown-item--danger",onClick:a,children:[m.jsx(Ye,{icon:VY,fixedWidth:!0,className:"me-1"})," Delete tag"]})]})}),m.jsx(r,{tag:e.tag,toggle:s,isOpen:o}),m.jsx(t,{tag:e.tag,toggle:a,isOpen:i})]})},ETe=Or(Pq,["DeleteTagConfirmModal","EditTagModal","ColorGenerator"]),jTe=(e,t)=>{e.factory("TagsSelector",hTe),e.serviceFactory("DeleteTagConfirmModal",()=>oTe),e.decorator("DeleteTagConfirmModal",t(["tagDelete"],["deleteTag","tagDeleted"])),e.factory("EditTagModal",sTe),e.decorator("EditTagModal",t(["tagEdit"],["editTag","tagEdited"])),e.factory("TagsTableRow",ETe),e.factory("TagsTable",PTe),e.factory("TagsList",OTe),e.decorator("TagsList",t(["tagsList","mercureInfo"],["filterTags","createNewVisits","loadMercureInfo"])),e.serviceFactory("tagEditReducerCreator",yTe,"editTag"),e.serviceFactory("tagEditReducer",r=>r.reducer,"tagEditReducerCreator"),e.serviceFactory("tagDeleteReducerCreator",mTe,"apiClientFactory"),e.serviceFactory("tagDeleteReducer",r=>r.reducer,"tagDeleteReducerCreator"),e.serviceFactory("tagsListReducerCreator",xTe,"listTags","createShortUrl"),e.serviceFactory("tagsListReducer",r=>r.reducer,"tagsListReducerCreator"),e.serviceFactory("listTags",wTe,"apiClientFactory"),e.serviceFactory("filterTags",()=>Sq),e.serviceFactory("deleteTag",r=>r.deleteTag,"tagDeleteReducerCreator"),e.serviceFactory("tagDeleted",()=>wq),e.serviceFactory("editTag",gTe,"apiClientFactory","ColorGenerator"),e.serviceFactory("tagEdited",()=>xq)},TTe=new TB,ATe=e=>TTe.parse(e),X8=e=>e.toLowerCase().trim();class kTe{constructor(t){fl(this,"colors"),fl(this,"lights");var r;this.storage=t,this.colors=((r=this.storage)==null?void 0:r.getTagColors())??{},this.lights={}}getColorForKey(t){const r=X8(t);return this.colors[r]||this.setColorForKey(r,Cje())}setColorForKey(t,r){var n;const i=X8(t);return this.colors[i]=r,(n=this.storage)==null||n.storeTagColors(this.colors),r}stylesForKey(t){const r=this.getColorForKey(t);return{backgroundColor:r,color:this.isLightColor(r)?"#222":"#fff"}}isLightColor(t){const r=t.substring(1);return this.lights[r]===void 0&&(this.lights[r]=YV(r)),this.lights[r]}}const Eq=({document:e},t,r)=>{const n=e.createElement("a");n.setAttribute("href",t),n.setAttribute("download",r),n.style.visibility="hidden",e.body.appendChild(n),n.click(),e.body.removeChild(n)},NTe=(e,t,r)=>{const n=new Blob([t],{type:"text/csv;charset=utf-8;"}),i=URL.createObjectURL(n);Eq(e,i,r)};class RTe{constructor(t,r){this.fetch=t,this.window=r}async saveImage(t,r){const n=await this.fetch(t).then(a=>a.blob()),i=URL.createObjectURL(n);Eq(this.window,i,r)}}class MTe{constructor(t,r){fl(this,"exportVisits",(n,i)=>{i.length&&this.exportCsv(n,i)}),fl(this,"exportShortUrls",n=>{n.length&&this.exportCsv("short_urls.csv",n)}),fl(this,"exportCsv",(n,i)=>{const a=this.jsonToCsv(i);NTe(this.window,a,n)}),this.window=t,this.jsonToCsv=r}}function LTe(e){e.constant("window",window),e.constant("fetch",window.fetch.bind(window)),e.service("ImageDownloader",RTe,"fetch","window"),e.service("ColorGenerator",kTe,"TagColorsStorage"),e.constant("jsonToCsv",ATe),e.service("ReportExporter",MTe,"window","jsonToCsv"),e.serviceFactory("useTimeoutToggle",()=>Pb)}const ev=({visits:e,shortUrl:t,children:r,title:n})=>m.jsx("header",{children:m.jsxs(Ji,{body:!0,children:[m.jsxs("h2",{className:"d-flex justify-content-between align-items-center mb-0",children:[m.jsx(O_,{}),m.jsx("span",{className:"text-center d-none d-sm-block",children:m.jsx("small",{children:n})}),m.jsxs("span",{className:"badge badge-main ms-3",children:["Visits:"," ",m.jsx(GV,{visitsCount:e.length,shortUrl:t})]})]}),m.jsx("h3",{className:"text-center d-block d-sm-none mb-0 mt-3",children:m.jsx("small",{children:n})}),r&&m.jsx("div",{className:"mt-md-2",children:r})]})}),E_=({children:e,className:t})=>m.jsx("div",{className:Me("d-flex justify-content-between align-items-center",t),children:e}),jq=({title:e,footer:t,children:r})=>m.jsxs(Ji,{role:"document",children:[m.jsx(Dm,{className:"chart-card__header",children:e}),m.jsx(Lm,{children:r}),t&&m.jsx(yF,{className:"chart-card__footer--sticky",children:t})]}),Tq=$.createContext(null),{Provider:d4e}=Tq,a3=e=>{const t=$.useContext(Tq)??void 0,r=$.useMemo(()=>t?{}:{width:"100%",height:e},[e,t]);return{ChartWrapper:t?$.Fragment:rme,dimensions:t,wrapperDimensions:r}},Aq={color:"white",background:"rgb(0 0 0 / .9)",border:"none",borderRadius:"5px"},DTe={marginBottom:"5px",fontWeight:"bold"},kq={contentStyle:Aq,labelStyle:DTe,itemStyle:{padding:0}},Q8=["#97BBCD","#F7464A","#46BFBD","#FDB45C","#949FB1","#57A773","#414066","#08B2E3","#B6C454","#DCDCDC","#463730"],Nq=e=>Q8[e%Q8.length],ib=()=>Bm()?"#46e587":"#1DAA58",ITe=()=>Bm()?"rgba(70, 229, 135, 0.4)":"rgba(29, 170, 88, 0.4)",$Te=({chartData:e,showNumbers:t})=>m.jsx("ul",{className:"doughnut-chart-legend",children:e.map(({name:r,color:n,value:i})=>m.jsxs("li",{className:"doughnut-chart-legend__item d-flex",children:[m.jsx("div",{className:"doughnut-chart-legend__item-color",style:{backgroundColor:n}}),m.jsxs("small",{className:"doughnut-chart-legend__item-text flex-fill",children:[r,t&&m.jsxs("b",{children:[" (",jr(i),")"]})]})]},r))}),J8=e=>$.useMemo(()=>Object.entries(e).map(([t,r],n)=>({name:t,value:r,color:Nq(n)})),[e]),FTe=({stats:e,prevStats:t,showNumbersInLegend:r})=>{const n=J8(e),i=J8(t),a=i.length>0,o=Bm()?Sae:xae,{ChartWrapper:s,dimensions:u,wrapperDimensions:l}=a3(300);return m.jsxs("div",{className:"row align-items-center",children:[m.jsx("div",{className:"col-sm-12 col-md-7",children:m.jsx("div",{style:l,children:m.jsx(s,{children:m.jsxs(PCe,{...u,children:[m.jsx(Vi,{formatter:jr,contentStyle:Aq,itemStyle:{color:"white"}}),m.jsx(co,{data:n,dataKey:"value",nameKey:"name",startAngle:360,endAngle:0,outerRadius:"100%",innerRadius:a?"65%":"50%",animationBegin:0,children:n.map((h,p)=>m.jsx(ll,{fill:h.color,stroke:o},`${h.name}-${p}`))}),a&&m.jsx(co,{data:i,dataKey:"value",nameKey:"name",startAngle:360,endAngle:0,outerRadius:"55%",innerRadius:"20%",animationBegin:0,stroke:o,fill:ib()})]})})})}),m.jsx("div",{className:"col-sm-12 col-md-5",children:m.jsx($Te,{chartData:n,showNumbers:r})})]})},e$=({title:e,...t})=>{const[r,n]=Vt(!1);return m.jsx(jq,{title:m.jsxs(E_,{children:[e,m.jsx("div",{children:m.jsx(Jo,{checked:r,onChange:n,children:"Show numbers"})})]}),children:m.jsx(FTe,{...t,showNumbersInLegend:r})})},BTe=$.forwardRef(({visitsGroups:e},t)=>{const r=$.useMemo(()=>Object.entries(e),[e]);return r.length===0?null:m.jsx("ul",{className:"list-unstyled mb-0 mt-2 d-flex flex-wrap justify-content-center gap-3",ref:t,children:r.map(([n,i],a)=>m.jsxs("li",{className:"d-inline",children:[m.jsx(vq,{color:Rq(i)}),m.jsxs("strong",{children:[n," (",jr(i.length),")"]})]},`${n}${a}`))})}),UTe={monthly:"Month",weekly:"Week",daily:"Day",hourly:"Hour"},zTe={hourly:e=>({hours:e}),daily:e=>({days:e}),weekly:e=>({weeks:e}),monthly:e=>({months:e})},VTe={hourly:Use,daily:Lb,weekly:Bse,monthly:Ky},o3={hourly:e=>Yy(e,"yyyy-MM-dd HH:00"),daily:e=>ol(e),weekly(e){const t=ol($p(e)),r=ol(Yse(e));return`${t} - ${r}`},monthly:e=>Yy(e,"yyyy-MM")},qTe=e=>{var t;const r=Object.values(e).filter(o=>o.length>0);if(r.length===0)return"monthly";const n=new Date,i=r.map(o=>gl(o[o.length-1].date)),a=vB(i);return((t=[[()=>Lb(n,a)<=2,"hourly"],[()=>Ky(n,a)<=1,"daily"],[()=>Ky(n,a)<=6,"weekly"]].find(([o])=>o()))==null?void 0:t[1])??"monthly"},WTe=(e,t)=>Object.keys(t).reduce((r,n)=>(r[n]=aB(t[n],i=>o3[e](gl(i.date))),r),{}),HTe=(e,t)=>t.reduce((r,n)=>{const i=o3[e](gl(n.date));return r[i]=r[i]??[],r[i].push(n),r},{}),GTe=(e,t)=>{const r=Object.values(t).filter(h=>h.length>0).map(h=>[...h].reverse());if(r.length===0)return[];const n=VTe[e],i=o3[e],a=zTe[e],o=r.flat(),s=gl(o[0].date),u=gl(o[o.length-1].date),l=n(u,s)||1;return[{formattedDate:i(s),date:s},...zA(l,h=>{const p=Mse(s,a(h));return{formattedDate:i(p),date:p}})]},Rq=e=>{if(e.color)return e.color;const t={main:Mp,highlighted:jP,previous:ib()};return e.type?t[e.type]:Mp},t$=(e,t)=>$.useMemo(()=>Object.values(e).find(r=>r.type===t)??[],[e,t]),KTe=(e,t,r)=>{const n=t$(e,"main"),i=t$(e,"highlighted"),a=$.useMemo(()=>r?HTe(t,n):{},[r,t,n]),o=$.useCallback((s,{payload:u})=>{const l=a[u.formattedDate]??[];r==null||r(l===i?[]:l)},[a,i,r]);return r&&{cursor:"pointer",onClick:o}},r$=e=>{var t,r;return(r=(t=e.activePayload)==null?void 0:t[0])==null?void 0:r.payload},Mq=({visitsGroups:e,setSelectedVisits:t,matchMedia:r,onDateRangeChange:n})=>{const[i,a]=$.useState(qTe(e)),o=qA(767,r??window.matchMedia),s=$.useMemo(()=>{const X=WTe(i,e),ee=Object.keys(X);return GTe(i,e).map(({formattedDate:re,date:U})=>({date:U,formattedDate:re,...ee.reduce((I,F)=>(I[F]=X[F][re]??0,I),{})}))},[i,e]),u=KTe(e,i,t),[l,h,,p]=Vt(),g=vl(),_=$.useId(),w=vl(),[b,x]=$.useState(o?300:400);$.useLayoutEffect(()=>{if(!l)return x(o?300:400),()=>{};const X=new ResizeObserver(()=>{const{height:ee}=g.current.getBoundingClientRect(),{height:re}=w.current.getBoundingClientRect();x(ee-re-48)});return X.observe(g.current),X.observe(w.current),()=>X.disconnect()},[g,l,o,w]),mPe("Escape",p,l);const{ChartWrapper:S,dimensions:O,wrapperDimensions:E}=a3(b),[j,A]=$.useState(),[T,M]=$.useState(),q=$.useCallback(()=>{A(void 0),M(void 0)},[]),W=$.useCallback((X,ee)=>{const re=r$(X);ee.button===0&&re&&A(re)},[]),H=$.useCallback(X=>{const ee=r$(X);j&&ee&&M(ee)},[j]),K=$.useCallback(()=>{if(!j||!T)return;const X=[j.date,T.date],ee=Ise(X),re=vB(X);q(),n({startDate:ee,endDate:re})},[n,q,T,j]),[te,se]=Vt();return m.jsxs(Ji,{className:Me({"fixed-top fixed-bottom":l}),"data-testid":"line-chart-card",children:[m.jsxs(Dm,{role:"heading","aria-level":4,className:"d-flex justify-content-between align-items-center",children:["Visits over time",m.jsxs("div",{className:"d-flex align-content-center gap-1",children:[m.jsx(Rt,{"aria-label":l?"Collapse":"Expand","aria-expanded":l,"aria-controls":_,size:"sm",color:"link",onClick:h,children:m.jsx(Ye,{icon:l?wY:bZ})}),m.jsxs(Ta,{isOpen:te,toggle:se,className:"d-flex align-items-center",children:[m.jsx(os,{caret:!0,color:"link",className:"btn-sm p-0",children:"Group by"}),m.jsx(Cl,{end:!0,children:te&&Object.entries(UTe).map(([X,ee])=>m.jsx(Qe,{active:i===X,onClick:()=>a(X),children:ee},X))})]})]})]}),m.jsxs(Lm,{innerRef:g,id:_,children:[m.jsx(S,{...E,children:m.jsxs(CCe,{className:"user-select-none",data:s,...O,onMouseDown:W,onMouseMove:H,onMouseUp:K,children:[m.jsx(Nd,{dataKey:"formattedDate"}),m.jsx(Rd,{tickFormatter:jr,yAxisId:"1"}),m.jsx(Vi,{formatter:jr,...kq}),m.jsx(RA,{strokeOpacity:Bm()?.1:.9}),Object.entries(e).map(([X,ee])=>ee.length>0&&m.jsx(kd,{yAxisId:"1",dataKey:X,type:"monotone",stroke:Rq(ee),strokeWidth:2,activeDot:ee.type==="previous"?void 0:u,strokeDasharray:ee.type==="previous"?"8 3":void 0},X)),j&&T&&m.jsx(Xm,{yAxisId:"1",x1:j.formattedDate,x2:T.formattedDate})]})}),m.jsx(BTe,{visitsGroups:e,ref:w})]})]})},YTe=({toggleClassName:e,ranges:t,value:r,setValue:n})=>{const[i,a]=Vt();return m.jsxs(Ta,{isOpen:i,toggle:a,children:[m.jsx(os,{caret:!0,color:"link",className:e,children:"Paginate"}),m.jsx(Cl,{end:!0,children:i&&m.jsxs(m.Fragment,{children:[t.map(o=>m.jsxs(Qe,{active:o===r,onClick:()=>n(o),children:[m.jsx("b",{children:o})," items per page"]},o)),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{disabled:r===1/0,onClick:()=>n(1/0),children:m.jsx("i",{children:"Clear pagination"})})]})})]})},n$=e=>e.startsWith("hidden_"),ZTe=({stats:e,prevStats:t,highlightedStats:r,highlightedLabel:n,max:i,onClick:a})=>{const o=$.useMemo(()=>Object.entries(e).map(([p,g])=>{const _=(r==null?void 0:r[p])??0,w=(t==null?void 0:t[p])??0,b=n$(p);return{name:p,amount:Math.max(g,w),nonHighlightedAmount:b?null:g-_,highlightedAmount:b?null:_,prevAmount:b?null:w}}),[e,t,r]),s=$.useMemo(()=>{const p=o.reduce((g,{name:_})=>g>_.length?g:_.length,0);return Math.min(150,p*7)},[o]),{ChartWrapper:u,dimensions:l,wrapperDimensions:h}=a3(Math.max(300,o.length*(t?44:22)));return m.jsx(u,{...h,children:m.jsxs(ECe,{layout:"vertical",data:o,barCategoryGap:3,...l,children:[m.jsx(Nd,{type:"number",dataKey:"amount",tickFormatter:jr,domain:i?[0,i]:void 0}),m.jsx(Rd,{type:"category",dataKey:"name",width:s,interval:0,style:{fontSize:".8rem"},tickFormatter:p=>n$(p)?"":p}),m.jsx(RA,{strokeOpacity:Bm()?.05:.9}),m.jsx(Vi,{filterNull:!0,...kq,formatter:(p,g)=>[jr(p),g==="highlightedAmount"?n:g==="prevAmount"?"Previous period":r?"Non-selected":"Visits"]}),m.jsx(Ko,{dataKey:"nonHighlightedAmount",stackId:"main",cursor:"pointer",fill:Mp,onClick:({name:p})=>a==null?void 0:a(p),children:o.map(p=>m.jsx(ll,{fill:_ae,stroke:Mp,strokeWidth:2},p.name))}),r&&m.jsx(Ko,{dataKey:"highlightedAmount",stackId:"main",cursor:"pointer",fill:jP,onClick:({name:p})=>a==null?void 0:a(p),children:o.map(p=>m.jsx(ll,{fill:wae,stroke:jP,strokeWidth:2},p.name))}),t&&m.jsx(Ko,{dataKey:"prevAmount",fill:ib(),children:o.map(p=>m.jsx(ll,{fill:ITe(),stroke:ib(),strokeWidth:2},p.name))})]})})},XTe=e=>typeof e=="string"?e.toLowerCase():e,QTe=([e])=>e,JTe=([,e])=>e,Gg=({stats:e,prevStats:t,highlightedStats:r,title:n,sortingItems:i,extraHeaderContent:a,withPagination:o=!0,...s})=>{const[u,l]=$.useState({}),[h,p]=$.useState(1),[g,_]=$.useState(50),w=$.useCallback((q,W)=>{const H=Object.entries(q),K=u.field?Xoe(H,([te,se])=>XTe(u.field===Object.keys(W)[0]?te:se)):H;return!u.dir||u.dir==="ASC"?K:[...K].reverse()},[u.dir,u.field]),b=$.useCallback(q=>{const W=q[h-1];if(h[`hidden_${K}`,0])]},[h]),x=$.useCallback(q=>m.jsx(i3,{currentPage:h,pagesCount:q,onPageChange:p}),[h]),S=$.useCallback((q,W,H,K)=>{const te=w(q,W),se=te.map(QTe),X=H&&Object.entries({...iR(se,se.map(()=>0)),...H}),ee=K&&Object.entries({...iR(se,se.map(()=>0)),...K});if(te.length<=g)return{currentPageStats:Object.fromEntries(te),currentPageHighlightedStats:X&&Object.fromEntries(X),currentPagePrevStats:ee&&Object.fromEntries(ee)};const re=bf(te,g),U=X&&bf(X,g),I=ee&&bf(ee,g);return{currentPageStats:Object.fromEntries(b(re)),currentPageHighlightedStats:U&&Object.fromEntries(b(U)),currentPagePrevStats:I&&Object.fromEntries(b(I)),pagination:x(re.length),max:DPe(Math.max(...te.map(JTe)))}},[b,w,g,x]),{currentPageStats:O,currentPagePrevStats:E,currentPageHighlightedStats:j,pagination:A,max:T}=$.useMemo(()=>S(e,i,r&&Object.keys(r).length>0?r:void 0,t&&Object.keys(t).length>0?t:void 0),[S,r,t,i,e]),M=$.useMemo(()=>Object.keys(O),[O]);return m.jsx(jq,{title:m.jsxs(E_,{children:[n,m.jsxs("div",{className:"d-flex gap-3",children:[a==null?void 0:a(A?M:void 0),o&&Object.keys(e).length>50&&m.jsx(YTe,{toggleClassName:"btn-sm p-0",ranges:[50,100,200,500],value:g,setValue:q=>{_(q),p(1)}}),m.jsx(Fm,{isButton:!1,right:!0,items:i,order:u,onChange:(q,W)=>{l({field:q,dir:W}),p(1)}})]})]}),footer:A,children:m.jsx(ZTe,{stats:O,prevStats:E,highlightedStats:j,max:T,...s})})},s3=e=>e.type!==void 0,eAe=e=>e.type!==void 0,tAe=e=>{const t=oB(e,r=>s3(r.visit)?"orphanVisits":"nonOrphanVisits");return{orphanVisits:[],nonOrphanVisits:[],...t}},Lq=(e,{shortCode:t,domain:r},{endDate:n,startDate:i}={})=>e.filter(({shortUrl:a,visit:o})=>a&&xp(a,t,r)&&Jm(o.date,i,n)),Dq=(e,t,{endDate:r,startDate:n}={})=>e.filter(({shortUrl:i,visit:a})=>i&&jPe(i,t)&&Jm(a.date,n,r)),Iq=(e,t,{endDate:r,startDate:n}={})=>e.filter(({shortUrl:i,visit:a})=>(i==null?void 0:i.tags.includes(t))&&Jm(a.date,n,r)),Kg=(e,t)=>aB(e,r=>r[t]),rAe=e=>{const t=((e==null?void 0:e.startDate)&&xl(e==null?void 0:e.startDate))??void 0,r=((e==null?void 0:e.endDate)&&xl(e==null?void 0:e.endDate))??void 0;return{startDate:t,endDate:r}},yj=({filter:e,dateRange:t})=>{const{startDate:r,endDate:n}=rAe(t),i=(e==null?void 0:e.excludeBots)||void 0;return{startDate:r,endDate:n,excludeBots:i}},nAe=e=>sq(e.dateRange),iAe=({dateRange:e,...t})=>({...t,dateRange:Gje(e)}),i$=(e,t)=>{if(!(!t||!(e in t)))return t[e]&&xl(t[e])||""},$q=()=>{const e=mo(),t=bd(),{startDate:r,endDate:n,orphanVisitsType:i,excludeBots:a,loadPrevInterval:o,...s}=t,u=$.useMemo(()=>({dateRange:r!=null||n!=null?nq(r,n):void 0,visitsFilter:{orphanVisitsType:i,excludeBots:a!==void 0?a==="true":void 0},loadPrevInterval:o!==void 0?o==="true":void 0}),[n,a,o,i,r]),l=$.useCallback(h=>{const{dateRange:p,visitsFilter:g={},loadPrevInterval:_}=Mb(u,h),{excludeBots:w,orphanVisitsType:b}=g,x={...s,startDate:i$("startDate",p),endDate:i$("endDate",p),excludeBots:w===void 0?void 0:hj(w),orphanVisitsType:b,loadPrevInterval:_===void 0?void 0:hj(_)},S=mT(x),O=S?`?${S}`:"";e(O,{replace:!0,relative:"route"})},[u,e,s]);return[u,l]},aAe=()=>m.jsx(HCe,{attribution:'© OpenStreetMap contributors',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),oAe=e=>{if(e.length===0)return{};if(e.length>1)return{bounds:e.map(({latLong:r})=>r)};const[{latLong:t}]=e;return{zoom:10,center:t}},Fq=({toggle:e,isOpen:t,title:r,locations:n=[]})=>m.jsx(ea,{toggle:e,isOpen:t,className:"map-modal__modal",contentClassName:"map-modal__modal-content",children:m.jsxs(ss,{className:"map-modal__modal-body",children:[m.jsxs(E_,{className:"map-modal__modal-title fs-4",children:[r,m.jsx("button",{type:"button",className:"btn-close","aria-label":"Close",onClick:e})]}),m.jsxs(VCe,{...oAe(n),children:[m.jsx(aAe,{}),n.map(({cityName:i,latLong:a,count:o},s)=>m.jsx(qCe,{position:a,children:m.jsxs(WCe,{children:[m.jsx("b",{children:o})," visit",o>1?"s":""," from ",m.jsx("b",{children:i})]})},s))]})]})}),sAe=({modalTitle:e,activeCities:t,locations:r=[]})=>{const[n,,i,a]=Vt(),[o,s]=Vt(),[u,l]=$.useState([]),h=$.useCallback(p=>{l(p?r.filter(p):r),i()},[r,i]);return m.jsxs(m.Fragment,{children:[!t&&m.jsx(Rt,{color:"link",className:"p-0",onClick:()=>h(),"aria-label":"Show in map",title:"Show in map",children:m.jsx(Ye,{icon:KO})}),t&&m.jsxs(Ta,{isOpen:o,toggle:s,children:[m.jsx(os,{color:"link",className:"p-0",title:"Show in map",children:m.jsx(Ye,{icon:KO})}),m.jsx(Cl,{end:!0,children:o&&m.jsxs(m.Fragment,{children:[m.jsx(Qe,{onClick:()=>h(),children:"Show all locations"}),m.jsx(Qe,{onClick:()=>h(({cityName:p})=>t.includes(p)),children:"Show locations in current page"})]})})]}),m.jsx(Fq,{toggle:a,isOpen:n,title:e,locations:u})]})},Bq=({onChange:e,selected:t={},className:r,isOrphanVisits:n=!1,withPrevInterval:i=!1,disabled:a})=>{const{orphanVisitsType:o,excludeBots:s=!1,loadPrevInterval:u=!1}=t,l=g=>({active:o===g,onClick:()=>e({...t,orphanVisitsType:g===o?void 0:g})}),h=$.useCallback(()=>e({...t,excludeBots:!s}),[s,e,t]),p=$.useCallback(()=>e({...t,loadPrevInterval:!u}),[u,e,t]);return m.jsxs(ls,{disabled:a,text:"More",dropdownClassName:r,end:!0,minWidth:250,children:[i&&m.jsxs(m.Fragment,{children:[m.jsx(Qe,{active:u,onClick:p,children:"Compare with previous period"}),m.jsx(Qe,{divider:!0,tag:"hr"})]}),m.jsx(Qe,{header:!0,"aria-hidden":!0,children:"Bots:"}),m.jsx(Qe,{active:s,onClick:h,children:"Exclude potential bots"}),n&&m.jsxs(m.Fragment,{children:[m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{header:!0,"aria-hidden":!0,children:"Orphan visits type:"}),m.jsx(Qe,{...l("base_url"),children:"Base URL"}),m.jsx(Qe,{...l("invalid_short_url"),children:"Invalid short URL"}),m.jsx(Qe,{...l("regular_404"),children:"Regular 404"})]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsx(Qe,{disabled:t.excludeBots===void 0&&t.loadPrevInterval===void 0&&t.orphanVisitsType===void 0,onClick:()=>e({excludeBots:void 0,loadPrevInterval:void 0,orphanVisitsType:void 0}),children:m.jsx("i",{children:"Reset to defaults"})})]})},Uq=({info:e})=>{const{loading:t,errorData:r,progress:n}=e;return m.jsxs(m.Fragment,{children:[t&&n===null&&m.jsx(Bu,{loading:!0}),t&&n!==null&&m.jsxs(Bu,{loading:!0,children:["This is going to take a while... :S",m.jsx(SF,{value:n,striped:n>=100,className:"mt-3"})]}),r&&m.jsx(bi,{type:"error",children:m.jsx(fo,{errorData:r,fallbackMessage:"An error occurred while loading visits :("})})]})},fy=({children:e,showFallback:t})=>m.jsxs(m.Fragment,{children:[t&&m.jsx(Bu,{className:"mt-3",children:"There are no visits matching current filter"}),!t&&m.jsx(m.Fragment,{children:e})]}),lAe=({visitsDeletion:e,deleteVisits:t})=>{const{deleting:r}=e,[n,,i]=Vt();return m.jsx(sr,{title:m.jsx("span",{className:"text-danger fw-bold",children:"Danger zone"}),children:m.jsxs(E_,{children:[m.jsxs("dl",{className:"m-0 me-3",children:[m.jsx("dt",{children:"Delete visits."}),m.jsxs("dd",{className:"m-0",children:["This will delete ",m.jsx("b",{children:"all"})," visits, not only the ones matching current filter."]})]}),!n&&m.jsx(Rt,{color:"danger",className:"indivisible",onClick:i,children:"Delete visits"}),n&&m.jsxs(Rt,{color:"danger",disabled:r,className:"indivisible",onClick:t,innerRef:a=>{a==null||a.focus()},children:[!r&&m.jsx(m.Fragment,{children:"Click again to confirm"}),r&&m.jsx(m.Fragment,{children:"Deleting..."})]})]})})},Yg="Others",uAe=["Android Browser","Chrome","Chromium","Firefox","Internet Explorer","Microsoft Edge","Opera","Safari","Samsung Internet for Android","Vivaldi","WeChat"],cAe=e=>{if(!_u(e))return{browser:Yg,os:Yg};const{browser:{name:t},os:{name:r}}=QCe.parse(e);return{os:r??Yg,browser:t&&uAe.includes(t)?t:Yg}},fAe=e=>{var t;return _u(e)?((t=e.split("/")[e.includes("://")?2:0])==null?void 0:t.split(":")[0])??"":"Direct"},zq=(e,t)=>e[t]!==void 0,a$=e=>typeof e=="number"?e:e?parseFloat(e):0,dAe=(e,{os:t})=>{e[t]=(e[t]||0)+1},hAe=(e,{browser:t})=>{e[t]=(e[t]||0)+1},pAe=(e,{referer:t})=>{e[t]=(e[t]||0)+1},Vq=e=>(t,r)=>{const n=zq(r,e)?r[e]:"Unknown";t[n]=(t[n]||0)+1},mAe=Vq("country"),vAe=Vq("city"),gAe=(e,t)=>{if(!zq(t,"city")||t.city==="Unknown")return;const{city:r,latitude:n,longitude:i}=t,a=e[r]||{cityName:r,count:0,latLong:[a$(n),a$(i)]};a.count+=1,e[r]=a},yAe=(e,t)=>{if(!eAe(t))return;const{visitedUrl:r}=t;e[r]=(e[r]||0)+1},bj=e=>e.reduce((t,r)=>(dAe(t.os,r),hAe(t.browsers,r),pAe(t.referrers,r),mAe(t.countries,r),vAe(t.cities,r),gAe(t.citiesForMap,r),yAe(t.visitedUrls,r),t),{os:{},browsers:{},referrers:{},countries:{},cities:{},citiesForMap:{},visitedUrls:{}}),ab=e=>e.map(t=>{const{userAgent:r,date:n,referer:i,visitLocation:a,potentialBot:o}=t;return{date:n,potentialBot:o,userAgent:r,...cAe(r),referer:fAe(i),country:(a==null?void 0:a.countryName)||"Unknown",city:(a==null?void 0:a.cityName)||"Unknown",latitude:a==null?void 0:a.latitude,longitude:a==null?void 0:a.longitude,visitedUrl:t.visitedUrl,type:s3(t)?t.type:void 0}}),bAe=Object.freeze(Object.defineProperty({__proto__:null,normalizeVisits:ab,processStatsFromVisits:bj},Symbol.toStringTag,{value:"Module"})),ap=20,_Ae=({browser:e,os:t,referer:r,country:n,city:i,userAgent:a,...o},s,u)=>{const l=u?a:`${n} ${i}`;return`${e} ${t} ${r} ${l} ${o.visitedUrl}`.toLowerCase().includes(s.toLowerCase())},wAe=(e,t,r)=>t.filter(n=>_Ae(n,e,r)),xAe=(e,t)=>MF(t,e),SAe=({visits:e,searchTerm:t,order:r,searchInRawUserAgent:n})=>{const i=t?wAe(t,e,n):[...e],a=xAe(r,i),o=a.length;return{visitsGroups:bf(a,ap),total:o}},Ka="visits-table__header-cell visits-table__sticky",OAe=({visits:e,selectedVisits:t=[],setSelectedVisits:r,matchMedia:n=window.matchMedia})=>{var i;const a=qA(767,n),[o,s]=$.useState(),u=$.useCallback(q=>{s(q),x(1),r([])},[r]),[l,h]=$.useState({}),[p,g]=Vt(),_=$.useCallback(()=>{g(),h({})},[g]),w=$.useMemo(()=>SAe({visits:e,searchTerm:o,order:l,searchInRawUserAgent:p}),[e,o,l,p]),[b,x]=$.useState(1),S=b*ap,O=S-ap,E=$.useMemo(()=>{var q,W;return!!((W=(q=w.visitsGroups[b-1])==null?void 0:q[0])!=null&&W.visitedUrl)},[b,w.visitsGroups]),j=6+Number(E)+(p?1:2),A=w.total>0,T=q=>h({field:q,dir:$m(q,l.field,l.dir)}),M=q=>m.jsx(Op,{currentOrder:l,field:q,className:"visits-table__header-icon"});return m.jsx(sr,{className:"mt-3",bodyClassName:"p-0 pb-1",title:m.jsxs("div",{className:"d-flex justify-content-between align-items-center",children:["Visits list",m.jsx(Jo,{checked:p,onChange:_,children:"Show user agent"})]}),children:m.jsx("div",{className:"table-responsive-md",children:m.jsxs("table",{className:Me("table table-sm position-relative m-0 visits-table",{"table-hover":A}),children:[m.jsxs("thead",{className:"visits-table__header",children:[m.jsxs("tr",{children:[m.jsxs("th",{className:`${Ka} text-center`,onClick:()=>r(t.length0})})]}),m.jsxs("th",{className:`${Ka} text-center`,onClick:()=>T("potentialBot"),children:[m.jsx("span",{className:"sr-only",children:"Is bot"}),m.jsx(Ye,{icon:x4}),M("potentialBot")]}),m.jsxs("th",{className:Ka,onClick:()=>T("date"),children:["Date",M("date")]}),m.jsxs("th",{className:Ka,onClick:()=>T("country"),children:["Country",M("country")]}),m.jsxs("th",{className:Ka,onClick:()=>T("city"),children:["City",M("city")]}),p?m.jsxs("th",{className:Ka,onClick:()=>T("userAgent"),children:["User agent",M("userAgent")]}):m.jsxs(m.Fragment,{children:[m.jsxs("th",{className:Ka,onClick:()=>T("browser"),children:["Browser",M("browser")]}),m.jsxs("th",{className:Ka,onClick:()=>T("os"),children:["OS",M("os")]})]}),m.jsxs("th",{className:Ka,onClick:()=>T("referer"),children:["Referrer",M("referer")]}),E&&m.jsxs("th",{className:Ka,onClick:()=>T("visitedUrl"),children:["Visited URL",M("visitedUrl")]})]}),m.jsx("tr",{children:m.jsx("td",{colSpan:j,className:"p-0",children:m.jsx(Cb,{noBorder:!0,large:!1,onChange:u})})})]}),m.jsxs("tbody",{children:[!A&&m.jsx("tr",{children:m.jsx("td",{colSpan:j,className:"text-center",children:"There are no visits matching current filter"})}),(i=w.visitsGroups[b-1])==null?void 0:i.map((q,W)=>{const H=t.includes(q);return m.jsxs("tr",{style:{cursor:"pointer"},className:Me({"table-active":H}),onClick:()=>r(H?t.filter(K=>K!==q):[...t,q]),children:[m.jsx("td",{className:"text-center",children:H&&m.jsx(Ye,{icon:Lu,className:"text-primary"})}),m.jsx("td",{className:"text-center",children:q.potentialBot&&m.jsxs(m.Fragment,{children:[m.jsx(Ye,{icon:x4,id:`botIcon${W}`}),m.jsx(ta,{placement:"right",target:`botIcon${W}`,children:"Potentially a visit from a bot or crawler"})]})}),m.jsx("td",{children:m.jsx(tb,{date:q.date})}),m.jsx("td",{children:q.country}),m.jsx("td",{children:q.city}),p?m.jsx("td",{children:q.userAgent}):m.jsxs(m.Fragment,{children:[m.jsx("td",{children:q.browser}),m.jsx("td",{children:q.os})]}),m.jsx("td",{children:q.referer}),q.visitedUrl&&m.jsx("td",{children:q.visitedUrl})]},W)})]}),w.total>ap&&m.jsx("tfoot",{children:m.jsx("tr",{children:m.jsx("td",{colSpan:j,className:"visits-table__footer-cell visits-table__sticky",children:m.jsxs("div",{className:"d-flex flex-column flex-md-row justify-content-between align-items-center gap-3 p-2",children:[m.jsx(i3,{pagesCount:Math.ceil(w.total/ap),currentPage:b,onPageChange:x,centered:a}),m.jsxs("div",{children:["Visits ",m.jsx("b",{children:jr(O+1)})," to"," ",m.jsx("b",{children:jr(Math.min(S,w.total))})," of"," ",m.jsx("b",{children:jr(w.total)})]})]})})})})]})})})},el={byTime:{title:"By time",subPath:"by-time",icon:SY},byContext:{title:"By context",subPath:"by-context",icon:$j},byLocation:{title:"By location",subPath:"by-location",icon:KO},list:{title:"List",subPath:"list",icon:Dj},options:{title:"Options",subPath:"options",icon:o7,shouldRender:({deletion:e})=>!!e}};Object.freeze(el);const UO=({display:e})=>e&&m.jsx("div",{className:"mt-3 mx-auto w-75",children:m.jsx(sr,{children:m.jsxs("div",{className:"d-flex gap-2",children:[m.jsx(Ye,{icon:SZ,className:"mt-1"}),m.jsx("i",{children:"Could not calculate previous period because selected one does not have a strictly defined start date."})]})})}),tv=e=>{const{children:t,visitsInfo:r,getVisits:n,cancelGetVisits:i,deletion:a,exportCsv:o,isOrphanVisits:s=!1}=e,{visits:u,prevVisits:l,loading:h,errorData:p,fallbackInterval:g}=r,[{dateRange:_,visitsFilter:w,loadPrevInterval:b},x]=$q(),S=Hr("visits"),[O,E]=$.useState(),j=$.useCallback(({startDate:J,endDate:ce},Y)=>{x({dateRange:{startDate:J??void 0,endDate:ce??void 0}}),E(Y)},[x]),[A,T]=$.useState(g??(S==null?void 0:S.defaultInterval)??"last30Days"),[M,q]=$.useState([]),[W,H]=$.useState(),K=$.useRef(!0),{search:te}=Sn(),se=$.useCallback(J=>J?`../${J}${te}`:te,[te]),X=$.useMemo(()=>ab(u),[u]),ee=$.useMemo(()=>l&&ab(l),[l]),{os:re,browsers:U,referrers:I,countries:F,cities:B,citiesForMap:k,visitedUrls:Z}=$.useMemo(()=>bj(X),[X]),Q=$.useMemo(()=>bj(ee??[]),[ee]),ae=$.useMemo(()=>Object.fromEntries([["Visits",Object.assign(X,{type:"main"})],ee&&["Previous period",Object.assign(ee,{type:"previous"})],M.length>0&&[W??"Selected",Object.assign(M,{type:"highlighted"})]].filter(Boolean)),[W,M,ee,X]),fe=$.useMemo(()=>({...w,excludeBots:w.excludeBots??(S==null?void 0:S.excludeBots),loadPrevInterval:b??(S==null?void 0:S.loadPrevInterval)}),[b,w,S==null?void 0:S.excludeBots,S==null?void 0:S.loadPrevInterval]),de=$.useMemo(()=>Object.values(k),[k]),ve=$.useRef(void 0),D=$.useCallback(J=>{ve.current=void 0,q(J)},[]),z=$.useCallback((J,ce)=>{const Y=`${J}_${ce}`;ve.current===Y?(q([]),H(void 0),ve.current=void 0):(q(X.filter(ue=>ue[J]===ce)),H(ce),ve.current=Y)},[X]);return $.useEffect(()=>i,[i]),$.useEffect(()=>{const J=_??oq(A),{loadPrevInterval:ce,...Y}=fe,ue={doIntervalFallback:K.current,loadPrevInterval:ce};n({dateRange:J,filter:Y},ue),D([]),K.current=!1},[A,_,n,fe,D]),$.useEffect(()=>{g&&A===((S==null?void 0:S.defaultInterval)??"last30Days")&&T(g)},[A,g,S==null?void 0:S.defaultInterval]),m.jsxs(m.Fragment,{children:[t,m.jsx("section",{className:"mt-3",children:m.jsxs("div",{className:"row flex-md-row-reverse",children:[m.jsx("div",{className:"col-lg-7 col-xl-6",children:m.jsxs("div",{className:"d-md-flex",children:[m.jsx("div",{className:"flex-grow-1",children:m.jsx(t3,{disabled:h,dateRangeOrInterval:O??_??A,defaultText:"All visits",onDatesChange:j})}),m.jsx(Bq,{disabled:h,className:"ms-0 ms-md-2 mt-3 mt-md-0",isOrphanVisits:s,withPrevInterval:!0,selected:fe,onChange:({loadPrevInterval:J,...ce})=>x({visitsFilter:ce,loadPrevInterval:J})})]})}),u.length>0&&m.jsx("div",{className:"col-lg-5 col-xl-6 mt-3 mt-lg-0",children:m.jsxs("div",{className:"d-flex",children:[m.jsx(qV,{className:"btn-md-block",amount:X.length,onClick:()=>o(X)}),m.jsxs(Rt,{outline:!0,disabled:M.length===0,className:"btn-md-block ms-2",onClick:()=>D([]),children:["Clear selection ",M.length>0&&m.jsxs(m.Fragment,{children:["(",jr(M.length),")"]})]})]})})]})}),m.jsxs("section",{className:"mt-3",children:[m.jsx(Uq,{info:r}),!h&&!p&&m.jsxs(m.Fragment,{children:[m.jsx(RF,{fill:!0,children:Object.values(el).map(({title:J,icon:ce,subPath:Y,shouldRender:ue},he)=>!ue||ue(e)?m.jsxs(ff,{to:se(Y),replace:!0,children:[m.jsx(Ye,{icon:ce}),m.jsx("span",{className:"ms-2 d-none d-lg-inline",children:J})]},he):void 0).filter(Boolean)}),m.jsx(Qa,{children:m.jsxs(cb,{children:[m.jsx(St,{path:el.byTime.subPath,element:m.jsxs(fy,{showFallback:u.length===0,children:[m.jsx("div",{className:"col-12 mt-3","data-testid":"line-chart-container",children:m.jsx(Mq,{visitsGroups:ae,setSelectedVisits:D,onDateRangeChange:j})}),m.jsx(UO,{display:!!fe.loadPrevInterval&&!l})]})}),m.jsx(St,{path:el.byContext.subPath,element:m.jsxs(fy,{showFallback:u.length===0,children:[m.jsx("div",{className:Me("mt-3 col-lg-6",{"col-xl-4":!s}),children:m.jsx(e$,{title:"Operating systems",stats:re,prevStats:Q.os})}),m.jsx("div",{className:Me("mt-3 col-lg-6",{"col-xl-4":!s}),children:m.jsx(e$,{title:"Browsers",stats:U,prevStats:Q.browsers})}),m.jsx("div",{className:Me("mt-3",{"col-xl-4":!s,"col-lg-6":s}),children:m.jsx(Gg,{title:"Referrers",withPagination:!1,stats:I,prevStats:Q.referrers,highlightedStats:Kg(M,"referer"),highlightedLabel:W,sortingItems:{name:"Referrer name",amount:"Visits amount"},onClick:J=>z("referer",J)})}),s&&m.jsx("div",{className:"mt-3 col-lg-6",children:m.jsx(Gg,{title:"Visited URLs",stats:Z,prevStats:Q.visitedUrls,highlightedStats:Kg(M,"visitedUrl"),highlightedLabel:W,sortingItems:{visitedUrl:"Visited URL",amount:"Visits amount"},onClick:J=>z("visitedUrl",J)})}),m.jsx("div",{className:"col-12",children:m.jsx(UO,{display:!!fe.loadPrevInterval&&!l})})]})}),m.jsx(St,{path:el.byLocation.subPath,element:m.jsxs(fy,{showFallback:u.length===0,children:[m.jsx("div",{className:"col-lg-6 mt-3",children:m.jsx(Gg,{title:"Countries",stats:F,prevStats:Q.countries,highlightedStats:Kg(M,"country"),highlightedLabel:W,sortingItems:{name:"Country name",amount:"Visits amount"},onClick:J=>z("country",J)})}),m.jsx("div",{className:"col-lg-6 mt-3",children:m.jsx(Gg,{title:"Cities",stats:B,prevStats:Q.cities,highlightedStats:Kg(M,"city"),highlightedLabel:W,extraHeaderContent:J=>de.length>0&&m.jsx(sAe,{modalTitle:"Cities",locations:de,activeCities:J}),sortingItems:{name:"City name",amount:"Visits amount"},onClick:J=>z("city",J)})}),m.jsx("div",{className:"col-12",children:m.jsx(UO,{display:!!fe.loadPrevInterval&&!l})})]})}),m.jsx(St,{path:el.list.subPath,element:m.jsx("div",{className:"col-12",children:m.jsx(OAe,{visits:X,selectedVisits:M,setSelectedVisits:D})})}),a&&m.jsx(St,{path:el.options.subPath,element:m.jsx("div",{className:"col-12 mt-3",children:m.jsx(lAe,{...a})})}),m.jsx(St,{path:"*",element:m.jsx(Ej,{replace:!0,to:se(el.byTime.subPath)})})]})})]})]})]})},qq=Ra(({getDomainVisits:e,domainVisits:t,cancelGetDomainVisits:r})=>{const{ReportExporter:n}=Sr(qq),{domain:i=""}=md(),[a,o=a]=i.split("_"),s=$.useCallback((l,h)=>e({domain:o,options:h,params:l}),[o,e]),u=$.useCallback(l=>n.exportVisits(`domain_${a}_visits.csv`,l),[a,n]);return m.jsx(tv,{getVisits:s,cancelGetVisits:r,visitsInfo:t,exportCsv:u,children:m.jsx(ev,{visits:t.visits,title:`"${a}" visits`})})},()=>[Dn.visits]),CAe=Or(qq,["ReportExporter"]),Wq=Ra(({getNonOrphanVisits:e,nonOrphanVisits:t,cancelGetNonOrphanVisits:r})=>{const{ReportExporter:n}=Sr(Wq),i=$.useCallback(o=>n.exportVisits("non_orphan_visits.csv",o),[n]),a=$.useCallback((o,s)=>e({options:s,params:o}),[e]);return m.jsx(tv,{getVisits:a,cancelGetVisits:r,visitsInfo:t,exportCsv:i,children:m.jsx(ev,{title:"Non-orphan visits",visits:t.visits})})},()=>[Dn.visits]),PAe=Or(Wq,["ReportExporter"]),Hq=Ra(({getOrphanVisits:e,orphanVisits:t,cancelGetOrphanVisits:r,deleteOrphanVisits:n,orphanVisitsDeletion:i})=>{const a=ho("orphanVisitsDeletion"),{ReportExporter:o}=Sr(Hq),s=$.useCallback(h=>o.exportVisits("orphan_visits.csv",h),[o]),u=$.useCallback((h,p)=>{var g;return e({options:p,params:h,orphanVisitsType:(g=h.filter)==null?void 0:g.orphanVisitsType})},[e]),l=$.useMemo(()=>a?{deleteVisits:n,visitsDeletion:i}:void 0,[n,i,a]);return m.jsx(tv,{getVisits:u,cancelGetVisits:r,visitsInfo:t,exportCsv:s,deletion:l,isOrphanVisits:!0,children:m.jsx(ev,{title:"Orphan visits",visits:t.visits})})},()=>[Dn.orphanVisits]),EAe=Or(Hq,["ReportExporter"]),o$=5e3,jAe=2,TAe=4,AAe=({currentPage:e,pagesCount:t})=>e>=t,kAe=(e,t)=>t*100/e,Gq=({visitsLoader:e,shouldCancel:t,progressChanged:r,batchSize:n})=>{const i=async(o,s)=>Promise.all(s.map(async u=>e({...o,page:u,itemsPerPage:o$}).then(({data:l})=>l))).then(u=>u.flat()),a=async(o,s,u=0)=>{if(t())return[];const l=await i(o,s[u]);return r(kAe(s.length,u+1)),u{const{pagination:s,data:u}=await e({...o,page:1,itemsPerPage:o$});if(AAe(s))return u;const l=ST(jAe,s.pagesCount+1),h=bf(l,n);return s.pagesCount-1>n&&r(0),u.concat(await a(o,h))}},rv=(e,t)=>async r=>e?t({page:1,itemsPerPage:1,excludeBots:r}).then(({data:n})=>n[0]):Promise.resolve(void 0),nv=({typePrefix:e,createLoaders:t,shouldCancel:r})=>{const n=Mn(`${e}/progressChanged`),i=Mn(`${e}/fallbackToInterval`),a=Wr(e,async(o,{getState:s,dispatch:u})=>{var l;const{params:h,options:p}=o,{visitsLoader:g,lastVisitLoader:_}=t(o),w=Kje(h.dateRange),b=yj(h),x=p.loadPrevInterval&&nAe(h)?yj(iAe(h)):void 0,S=TAe/(x?2:1),O=x?{main:0,prev:0}:{main:0},E=(q,W)=>{O[q]=W;const H=Object.values(O),K=H.reduce((te,se)=>te+se,0);u(n(K/H.length))},j=Gq({visitsLoader:g,shouldCancel:()=>r(s),progressChanged:q=>E("main",q),batchSize:S}),[A,T,M]=await Promise.all([j(b),_((l=h.filter)==null?void 0:l.excludeBots),x?j(x).then(q=>q.map(W=>{if(w===void 0)return W;const{date:H,...K}=W,te=jT(yi(H),w);return{...K,date:xl(te)}})):Promise.resolve(void 0)]);return!A.length&&T&&u(i(Hje(T.date))),{...o,visits:A,prevVisits:M}});return Object.assign(a,{progressChanged:n,fallbackToInterval:i})},iv=({name:e,asyncThunkCreator:t,initialState:r,filterCreatedVisits:n,extraReducers:i})=>{const{pending:a,rejected:o,fulfilled:s,progressChanged:u,fallbackToInterval:l}=t,{reducer:h,actions:p}=Nr({name:e,initialState:r,reducers:{cancelGetVisits:_=>({..._,cancelLoad:!0})},extraReducers:_=>{_.addCase(a,()=>({...r,loading:!0})),_.addCase(o,(w,{error:b})=>({...r,errorData:Pi(b)??null})),_.addCase(s,(w,{payload:b})=>({...w,...b,loading:!1,progress:null,errorData:null})),_.addCase(u,(w,{payload:b})=>({...w,progress:b})),_.addCase(l,(w,{payload:b})=>({...w,fallbackInterval:b})),_.addCase(Md,(w,{payload:b})=>{const{visits:x}=w,S=n(w,b.createdVisits).map(({visit:O})=>O);return S.length?{...w,visits:[...S,...x]}:w}),i==null||i(_)}}),{cancelGetVisits:g}=p;return{reducer:h,cancelGetVisits:g}},Kq="shlink/domainVisits",NAe={visits:[],domain:"",loading:!1,cancelLoad:!1,errorData:null,progress:null},RAe=e=>nv({typePrefix:`${Kq}/getDomainVisits`,createLoaders:({domain:t,options:r})=>{const n=e(),{doIntervalFallback:i=!1}=r,a=s=>n.getDomainVisits(t,s),o=rv(i,s=>n.getDomainVisits(t,s));return{visitsLoader:a,lastVisitLoader:o}},shouldCancel:t=>t().domainVisits.cancelLoad}),MAe=e=>iv({name:Kq,initialState:NAe,asyncThunkCreator:e,filterCreatedVisits:({domain:t,params:r},n)=>Dq(n,t,r==null?void 0:r.dateRange)}),Yq="shlink/orphanVisits",LAe={visits:[],loading:!1,cancelLoad:!1,errorData:null,progress:null},DAe=e=>nv({typePrefix:`${Yq}/getNonOrphanVisits`,createLoaders:({options:t})=>{const r=e(),{doIntervalFallback:n=!1}=t,i=async o=>r.getNonOrphanVisits(o),a=rv(n,o=>r.getNonOrphanVisits(o));return{visitsLoader:i,lastVisitLoader:a}},shouldCancel:t=>t().orphanVisits.cancelLoad}),IAe=e=>iv({name:Yq,initialState:LAe,asyncThunkCreator:e,filterCreatedVisits:({params:t},r)=>{const{startDate:n,endDate:i}=(t==null?void 0:t.dateRange)??{};return r.filter(({visit:a})=>Jm(a.date,n,i))}}),Zq="shlink/orphanVisits",$Ae={visits:[],loading:!1,cancelLoad:!1,errorData:null,progress:null},FAe=(e,t)=>!t||t===e.type,BAe=({data:e,...t},r)=>{const n=e.filter(i=>s3(i)&&FAe(i,r));return{...t,data:n}},UAe=e=>nv({typePrefix:`${Zq}/getOrphanVisits`,createLoaders:({orphanVisitsType:t,options:r})=>{const n=e(),{doIntervalFallback:i=!1}=r,a=async s=>n.getOrphanVisits({...s,type:t}).then(u=>BAe(u,t)),o=rv(i,s=>n.getOrphanVisits(s));return{visitsLoader:a,lastVisitLoader:o}},shouldCancel:t=>t().orphanVisits.cancelLoad}),zAe=(e,t)=>iv({name:Zq,initialState:$Ae,asyncThunkCreator:e,extraReducers:r=>{r.addCase(t.fulfilled,n=>({...n,visits:[]}))},filterCreatedVisits:({params:r},n)=>{const{startDate:i,endDate:a}=(r==null?void 0:r.dateRange)??{};return n.filter(({visit:o,shortUrl:s})=>!s&&Jm(o.date,i,a))}}),Xq="shlink/orphanVisitsDeletion",s$={deletedVisits:0,deleting:!1,error:!1},VAe=e=>Wr(`${Xq}/deleteOrphanVisits`,()=>e().deleteOrphanVisits()),qAe=e=>Nr({name:Xq,initialState:s$,reducers:{},extraReducers:t=>{t.addCase(e.pending,r=>({...r,deleting:!0,error:!1})),t.addCase(e.rejected,(r,{error:n})=>({...r,deleting:!1,error:!0,errorData:Pi(n)})),t.addCase(e.fulfilled,(r,{payload:n})=>{const{deletedVisits:i}=n;return{...s$,deletedVisits:i}})}}),Qq="shlink/shortUrlVisits",WAe={visits:[],shortCode:"",loading:!1,errorData:null,cancelLoad:!1,progress:null},HAe=e=>nv({typePrefix:`${Qq}/getShortUrlVisits`,createLoaders:({shortCode:t,domain:r,options:n})=>{const i=e(),{doIntervalFallback:a=!1}=n,o=u=>i.getShortUrlVisits({shortCode:t,domain:r},u),s=rv(a,u=>i.getShortUrlVisits({shortCode:t,domain:r},u));return{visitsLoader:o,lastVisitLoader:s}},shouldCancel:t=>t().shortUrlVisits.cancelLoad}),GAe=(e,t)=>iv({name:Qq,initialState:WAe,asyncThunkCreator:e,extraReducers:r=>{r.addCase(t.fulfilled,(n,{payload:i})=>n.shortCode===i.shortCode&&n.domain===i.domain?{...n,visits:[]}:n)},filterCreatedVisits:({shortCode:r,domain:n,params:i},a)=>Lq(a,{shortCode:r,domain:n},i==null?void 0:i.dateRange)}),Jq="shlink/shortUrlVisitsDeletion",l$={shortCode:"",deletedVisits:0,deleting:!1,error:!1},KAe=e=>Wr(`${Jq}/deleteShortUrlVisits`,async({shortCode:t,domain:r})=>({...await e().deleteShortUrlVisits({shortCode:t,domain:r}),shortCode:t,domain:r})),YAe=e=>Nr({name:Jq,initialState:l$,reducers:{},extraReducers:t=>{t.addCase(e.pending,r=>({...r,deleting:!0,error:!1})),t.addCase(e.rejected,(r,{error:n})=>({...r,deleting:!1,error:!0,errorData:Pi(n)})),t.addCase(e.fulfilled,(r,{payload:n})=>{const{shortCode:i,domain:a,deletedVisits:o}=n;return{...l$,shortCode:i,domain:a,deletedVisits:o}})}}),eW="shlink/tagVisits",ZAe={visits:[],tag:"",loading:!1,cancelLoad:!1,errorData:null,progress:null},XAe=e=>nv({typePrefix:`${eW}/getTagVisits`,createLoaders:({tag:t,options:r})=>{const n=e(),{doIntervalFallback:i=!1}=r,a=s=>n.getTagVisits(t,s),o=rv(i,async s=>n.getTagVisits(t,s));return{visitsLoader:a,lastVisitLoader:o}},shouldCancel:t=>t().tagVisits.cancelLoad}),QAe=e=>iv({name:eW,initialState:ZAe,asyncThunkCreator:e,filterCreatedVisits:({tag:t,params:r},n)=>Iq(n,t,r==null?void 0:r.dateRange)}),tW="shlink/visitsOverview",Zg={nonOrphanVisits:{total:0},orphanVisits:{total:0},loading:!1,error:!1},u$=e=>e.filter(({visit:t})=>t.potentialBot).length,JAe=e=>Wr(`${tW}/loadVisitsOverview`,()=>e().getVisitsOverview().then(({nonOrphanVisits:t,visitsCount:r=0,orphanVisits:n,orphanVisitsCount:i=0})=>({nonOrphanVisits:{total:(t==null?void 0:t.total)??r,nonBots:t==null?void 0:t.nonBots,bots:t==null?void 0:t.bots},orphanVisits:{total:(n==null?void 0:n.total)??i,nonBots:n==null?void 0:n.nonBots,bots:n==null?void 0:n.bots}}))),e3e=e=>Nr({name:tW,initialState:Zg,reducers:{},extraReducers:t=>{t.addCase(e.pending,()=>({...Zg,loading:!0})),t.addCase(e.rejected,()=>({...Zg,error:!0})),t.addCase(e.fulfilled,(r,{payload:n})=>({...Zg,...n})),t.addCase(Md,({nonOrphanVisits:r,orphanVisits:n,...i},{payload:a})=>{const{nonOrphanVisits:o,orphanVisits:s}=tAe(a.createdVisits),u=o.length,l=u$(o),h=u-l,p=s.length,g=u$(s),_=p-g;return{...i,nonOrphanVisits:{total:r.total+u,bots:r.bots&&r.bots+l,nonBots:r.nonBots&&r.nonBots+h},orphanVisits:{total:n.total+p,bots:n.bots&&n.bots+g,nonBots:n.nonBots&&n.nonBots+_}}})}}),t3e=({shortUrl:e,loading:t,shortUrlVisits:r})=>{const{visits:n}=r,i=(e==null?void 0:e.shortUrl)??"",a=(e==null?void 0:e.longUrl)??"",o=e==null?void 0:e.title;return m.jsxs(ev,{title:m.jsxs(m.Fragment,{children:["Visits for ",m.jsx(_i,{href:i})]}),visits:n,shortUrl:e,children:[m.jsx("hr",{}),m.jsxs("div",{children:["Created: ",e?m.jsxs("span",{children:[m.jsx("b",{id:"created",className:"short-url-visits-header__created-at",children:m.jsx(tb,{date:e.dateCreated,relative:!0})}),m.jsx(ta,{placement:"bottom",target:"created",children:m.jsx(tb,{date:e.dateCreated})})]}):m.jsx("small",{children:"Loading..."})]}),m.jsxs("div",{className:"long-url-container",children:[`${o?"Title":"Long URL"}: `,t&&m.jsx("small",{children:"Loading..."}),!t&&m.jsx(_i,{href:a,children:o??a})]})]})},rW=Ra(({shortUrlVisits:e,shortUrlVisitsDeletion:t,shortUrlsDetails:r,getShortUrlVisits:n,getShortUrlsDetails:i,deleteShortUrlVisits:a,cancelGetShortUrlVisits:o})=>{const s=ho("shortUrlVisitsDeletion"),{ReportExporter:u}=Sr(rW),l=ZA(),h=$.useMemo(()=>{var w;return(w=r.shortUrls)==null?void 0:w.get(l)},[l,r.shortUrls]),p=$.useCallback((w,b)=>n({...l,options:b,params:w}),[n,l]),g=$.useCallback(w=>u.exportVisits(`short-url_${h==null?void 0:h.shortUrl.replace(/https?:\/\//g,"")}_visits.csv`,w),[u,h==null?void 0:h.shortUrl]),_=$.useMemo(()=>s?{deleteVisits:()=>a(l),visitsDeletion:t}:void 0,[a,l,t,s]);return $.useEffect(()=>{i([l])},[l,i]),m.jsx(tv,{getVisits:p,cancelGetVisits:o,visitsInfo:e,exportCsv:g,deletion:_,children:m.jsx(t3e,{shortUrl:h,loading:r.loading,shortUrlVisits:e})})},e=>e.shortCode?[Dn.shortUrlVisits(WA(e.shortCode))]:[]),r3e=Or(rW,["ReportExporter"]),n3e=({tagVisits:e,colorGenerator:t})=>{const{visits:r,tag:n}=e;return m.jsx(ev,{title:m.jsxs("span",{className:"d-flex align-items-center justify-content-center",children:[m.jsx("span",{className:"me-2",children:"Visits for"}),m.jsx(C_,{text:n,colorGenerator:t})]}),visits:r})},nW=Ra(({getTagVisits:e,tagVisits:t,cancelGetTagVisits:r})=>{const{ColorGenerator:n,ReportExporter:i}=Sr(nW),{tag:a=""}=md(),o=$.useCallback((u,l)=>e({tag:a,params:u,options:l}),[e,a]),s=$.useCallback(u=>i.exportVisits(`tag_${a}_visits.csv`,u),[i,a]);return m.jsx(tv,{getVisits:o,cancelGetVisits:r,visitsInfo:t,exportCsv:s,children:m.jsx(n3e,{tagVisits:t,colorGenerator:n})})},()=>[Dn.visits]),i3e=Or(nW,["ColorGenerator","ReportExporter"]),l3=({title:e,colors:t,getVisitsForComparison:r,visitsComparisonInfo:n,cancelGetVisitsComparison:i})=>{const{loading:a,visitsGroups:o}=n,s=Hr("visits"),u=$.useMemo(()=>Object.keys(o).reduce((O,E,j)=>(O[E]=Object.assign(ab(o[E]),{color:(t==null?void 0:t[E])??Nq(j)}),O),{}),[t,o]),l=$.useMemo(()=>Object.values(o).every(O=>O.length===0),[o]),[{dateRange:h,visitsFilter:p},g]=$q(),[_,w]=$.useState(),b=$.useCallback(({startDate:O,endDate:E},j)=>{g({dateRange:{startDate:O??void 0,endDate:E??void 0}}),w(j)},[g]),[x]=$.useState(()=>h??(s==null?void 0:s.defaultInterval)??"last30Days"),S=$.useMemo(()=>({...p,excludeBots:p.excludeBots??(s==null?void 0:s.excludeBots)}),[p,s==null?void 0:s.excludeBots]);return $.useEffect(()=>{const O=h??oq(x);return r({params:{dateRange:O,filter:S}}),i},[i,h,r,x,S]),m.jsxs(m.Fragment,{children:[m.jsx("div",{className:"mb-3",children:m.jsxs(sr,{bodyClassName:"d-flex",children:[m.jsx(O_,{}),m.jsx("h3",{className:"mb-0 flex-grow-1 text-center",children:e})]})}),m.jsx("div",{className:"col-lg-7 col-xl-6 offset-lg-5 offset-xl-6 mb-3",children:m.jsxs("div",{className:"d-md-flex",children:[m.jsx("div",{className:"flex-grow-1",children:m.jsx(t3,{disabled:a,defaultText:"All visits",dateRangeOrInterval:_??h??x,onDatesChange:b})}),m.jsx(Bq,{disabled:a,className:"ms-0 ms-md-2 mt-3 mt-md-0",selected:S,onChange:({orphanVisitsType:O,excludeBots:E})=>g({visitsFilter:{orphanVisitsType:O,excludeBots:E}})})]})}),m.jsx(Uq,{info:n}),!a&&m.jsx(fy,{showFallback:l,children:m.jsx(Mq,{visitsGroups:u,onDateRangeChange:b})})]})},a3e=Ra(({getDomainVisitsForComparison:e,domainVisitsComparison:t,cancelGetDomainVisitsComparison:r})=>{const n=VA("domains"),i=$.useCallback(a=>e({...a,domains:n}),[n,e]);return m.jsx(l3,{title:`Comparing "${n.join('", "')}"`,getVisitsForComparison:i,visitsComparisonInfo:t,cancelGetVisitsComparison:r})},()=>[Dn.visits]),o3e=({visitsLoaders:e,shouldCancel:t,progressChanged:r})=>{const n=Object.keys(e),i=Math.max(1,Math.round(4/n.length)),a=Object.fromEntries(n.map(u=>[u,0])),o=(u,l)=>{a[u]=l;const h=Object.values(a),p=h.reduce((g,_)=>g+_,0);r(p/h.length)},s=Object.entries(e).map(([u,l])=>[u,Gq({visitsLoader:l,batchSize:i,shouldCancel:t,progressChanged:h=>o(u,h)})]);return async u=>{const l=await Promise.all(s.map(async([h,p])=>{const g=await p(u);return[h,g]}));return Object.fromEntries(l)}},u3=({typePrefix:e,createLoaders:t,shouldCancel:r})=>{const n=Mn(`${e}/progressChanged`),i=Wr(e,async(a,{getState:o,dispatch:s})=>{const u=t(a),l=await o3e({visitsLoaders:u,shouldCancel:()=>r(o),progressChanged:h=>s(n(h))})(yj(a.params));return{...a,visitsGroups:l}});return Object.assign(i,{progressChanged:n})},c3=({name:e,asyncThunkCreator:t,initialState:r,filterCreatedVisitsForGroup:n})=>{const{pending:i,rejected:a,fulfilled:o,progressChanged:s}=t,{reducer:u,actions:l}=Nr({name:e,initialState:r,reducers:{cancelGetVisits:p=>({...p,cancelLoad:!0})},extraReducers:p=>{p.addCase(i,()=>({...r,loading:!0})),p.addCase(a,(g,{error:_})=>({...r,errorData:Pi(_)??null})),p.addCase(o,(g,{payload:_})=>({...g,..._,loading:!1,progress:null,errorData:null})),p.addCase(s,(g,{payload:_})=>({...g,progress:_})),p.addCase(Md,(g,{payload:_})=>{const{visitsGroups:w,...b}=g,x=Object.keys(w).map(O=>{const E=n({...b,groupKey:O},_.createdVisits).map(({visit:j})=>j);return[O,[...E,...w[O]]]}),S=Object.fromEntries(x);return{...b,visitsGroups:S}})}}),{cancelGetVisits:h}=l;return{reducer:u,cancelGetVisits:h}},iW="shlink/domainVisitsComparison",s3e={visitsGroups:{},loading:!1,cancelLoad:!1,errorData:null,progress:null},l3e=e=>u3({typePrefix:`${iW}/getDomainVisitsForComparison`,createLoaders:({domains:t})=>{const r=e(),n=t.map(i=>[i,a=>r.getDomainVisits(i,a)]);return Object.fromEntries(n)},shouldCancel:t=>t().domainVisitsComparison.cancelLoad}),u3e=e=>c3({name:iW,initialState:s3e,asyncThunkCreator:e,filterCreatedVisitsForGroup:({groupKey:t,params:r},n)=>Dq(n,t,r==null?void 0:r.dateRange)}),aW="shlink/shortUrlVisitsComparison",c3e={visitsGroups:{},loading:!1,cancelLoad:!1,errorData:null,progress:null},f3e=e=>u3({typePrefix:`${aW}/getShortUrlVisitsForComparison`,createLoaders:({shortUrls:t})=>{const r=e(),n=t.map(i=>[HA(i),a=>r.getShortUrlVisits(i,a)]);return Object.fromEntries(n)},shouldCancel:t=>t().shortUrlVisitsComparison.cancelLoad}),d3e=e=>c3({name:aW,initialState:c3e,asyncThunkCreator:e,filterCreatedVisitsForGroup:({groupKey:t,params:r},n)=>Lq(n,bV(t),r==null?void 0:r.dateRange)}),oW="shlink/tagVisitsComparison",h3e={visitsGroups:{},loading:!1,cancelLoad:!1,errorData:null,progress:null},p3e=e=>u3({typePrefix:`${oW}/getTagVisitsForComparison`,createLoaders:({tags:t})=>{const r=e(),n=t.map(i=>[i,a=>r.getTagVisits(i,a)]);return Object.fromEntries(n)},shouldCancel:t=>t().tagVisitsComparison.cancelLoad}),m3e=e=>c3({name:oW,initialState:h3e,asyncThunkCreator:e,filterCreatedVisitsForGroup:({groupKey:t,params:r},n)=>Iq(n,t,r==null?void 0:r.dateRange)}),v3e=Ra(({getShortUrlVisitsForComparison:e,shortUrlVisitsComparison:t,cancelGetShortUrlVisitsComparison:r,shortUrlsDetails:n,getShortUrlsDetails:i})=>{const a=VA("short-urls"),o=$.useMemo(()=>a.map(bV),[a]),s=$.useCallback(h=>e({...h,shortUrls:o}),[e,o]),u=$.useMemo(()=>{var h;return[...((h=n.shortUrls)==null?void 0:h.values())??[]]},[n.shortUrls]),l=$.useMemo(()=>{const{visitsGroups:h,loading:p,...g}=t,_=u.reduce((w,b)=>(w[b.shortUrl]=h[HA(b)]??[],w),{});return{...g,visitsGroups:_,loading:p||n.loading}},[t,n.loading,u]);return $.useEffect(()=>{o.length>0&&i(o)},[i,o]),m.jsx(l3,{title:m.jsx("span",{"data-testid":"title",children:n.loading?"Loading...":`Comparing ${u.length} short URLs`}),getVisitsForComparison:s,visitsComparisonInfo:l,cancelGetVisitsComparison:r})},()=>[Dn.visits]),sW=Ra(({getTagVisitsForComparison:e,tagVisitsComparison:t,cancelGetTagVisitsComparison:r})=>{const{ColorGenerator:n}=Sr(sW),i=VA("tags"),a=$.useCallback(u=>e({...u,tags:i}),[e,i]),{visitsGroups:o}=t,s=$.useMemo(()=>Object.keys(o).reduce((u,l)=>(u[l]=n.getColorForKey(l),u),{}),[n,o]);return m.jsx(l3,{title:m.jsxs(m.Fragment,{children:["Comparing ",i.map(u=>m.jsx(C_,{colorGenerator:n,text:u},u))]}),getVisitsForComparison:a,visitsComparisonInfo:t,cancelGetVisitsComparison:r,colors:s})},()=>[Dn.visits]),g3e=Or(sW,["ColorGenerator"]),y3e=(e,t)=>{const r=(n,i)=>t([...n,"mercureInfo"],[...i,"createNewVisits","loadMercureInfo"]);e.serviceFactory("MapModal",()=>Fq),e.factory("ShortUrlVisits",r3e),e.decorator("ShortUrlVisits",t(["shortUrlVisits","shortUrlVisitsDeletion","shortUrlsDetails","mercureInfo"],["getShortUrlVisits","deleteShortUrlVisits","getShortUrlsDetails","cancelGetShortUrlVisits","createNewVisits","loadMercureInfo"])),e.factory("TagVisits",i3e),e.decorator("TagVisits",r(["tagVisits"],["getTagVisits","cancelGetTagVisits"])),e.factory("TagVisitsComparison",g3e),e.decorator("TagVisitsComparison",r(["tagVisitsComparison"],["getTagVisitsForComparison","cancelGetTagVisitsForComparison"])),e.serviceFactory("DomainVisitsComparison",()=>a3e),e.decorator("DomainVisitsComparison",r(["domainVisitsComparison"],["getDomainVisitsForComparison","cancelGetDomainVisitsForComparison"])),e.serviceFactory("ShortUrlVisitsComparison",()=>v3e),e.decorator("ShortUrlVisitsComparison",r(["shortUrlVisitsComparison","shortUrlsDetails"],["getShortUrlVisitsForComparison","cancelGetShortUrlVisitsForComparison","getShortUrlsDetails"])),e.factory("DomainVisits",CAe),e.decorator("DomainVisits",r(["domainVisits"],["getDomainVisits","cancelGetDomainVisits"])),e.factory("OrphanVisits",EAe),e.decorator("OrphanVisits",r(["orphanVisits","orphanVisitsDeletion"],["getOrphanVisits","cancelGetOrphanVisits","deleteOrphanVisits"])),e.factory("NonOrphanVisits",PAe),e.decorator("NonOrphanVisits",r(["nonOrphanVisits"],["getNonOrphanVisits","cancelGetNonOrphanVisits"])),e.serviceFactory("VisitsParser",()=>bAe),e.serviceFactory("getShortUrlVisits",HAe,"apiClientFactory"),e.serviceFactory("cancelGetShortUrlVisits",n=>n.cancelGetVisits,"shortUrlVisitsReducerCreator"),e.serviceFactory("getShortUrlVisitsForComparison",f3e,"apiClientFactory"),e.serviceFactory("cancelGetShortUrlVisitsForComparison",n=>n.cancelGetVisits,"shortUrlVisitsComparisonReducerCreator"),e.serviceFactory("deleteShortUrlVisits",KAe,"apiClientFactory"),e.serviceFactory("getTagVisits",XAe,"apiClientFactory"),e.serviceFactory("cancelGetTagVisits",n=>n.cancelGetVisits,"tagVisitsReducerCreator"),e.serviceFactory("getTagVisitsForComparison",p3e,"apiClientFactory"),e.serviceFactory("cancelGetTagVisitsForComparison",n=>n.cancelGetVisits,"tagVisitsComparisonReducerCreator"),e.serviceFactory("getDomainVisits",RAe,"apiClientFactory"),e.serviceFactory("cancelGetDomainVisits",n=>n.cancelGetVisits,"domainVisitsReducerCreator"),e.serviceFactory("getDomainVisitsForComparison",l3e,"apiClientFactory"),e.serviceFactory("cancelGetDomainVisitsForComparison",n=>n.cancelGetVisits,"domainVisitsComparisonReducerCreator"),e.serviceFactory("getOrphanVisits",UAe,"apiClientFactory"),e.serviceFactory("cancelGetOrphanVisits",n=>n.cancelGetVisits,"orphanVisitsReducerCreator"),e.serviceFactory("deleteOrphanVisits",VAe,"apiClientFactory"),e.serviceFactory("getNonOrphanVisits",DAe,"apiClientFactory"),e.serviceFactory("cancelGetNonOrphanVisits",n=>n.cancelGetVisits,"nonOrphanVisitsReducerCreator"),e.serviceFactory("createNewVisits",()=>Md),e.serviceFactory("loadVisitsOverview",JAe,"apiClientFactory"),e.serviceFactory("visitsOverviewReducerCreator",e3e,"loadVisitsOverview"),e.serviceFactory("visitsOverviewReducer",n=>n.reducer,"visitsOverviewReducerCreator"),e.serviceFactory("domainVisitsReducerCreator",MAe,"getDomainVisits"),e.serviceFactory("domainVisitsReducer",n=>n.reducer,"domainVisitsReducerCreator"),e.serviceFactory("nonOrphanVisitsReducerCreator",IAe,"getNonOrphanVisits"),e.serviceFactory("nonOrphanVisitsReducer",n=>n.reducer,"nonOrphanVisitsReducerCreator"),e.serviceFactory("orphanVisitsReducerCreator",zAe,"getOrphanVisits","deleteOrphanVisits"),e.serviceFactory("orphanVisitsReducer",n=>n.reducer,"orphanVisitsReducerCreator"),e.serviceFactory("orphanVisitsDeletionReducerCreator",qAe,"deleteOrphanVisits"),e.serviceFactory("orphanVisitsDeletionReducer",n=>n.reducer,"orphanVisitsDeletionReducerCreator"),e.serviceFactory("shortUrlVisitsReducerCreator",GAe,"getShortUrlVisits","deleteShortUrlVisits"),e.serviceFactory("shortUrlVisitsReducer",n=>n.reducer,"shortUrlVisitsReducerCreator"),e.serviceFactory("shortUrlVisitsDeletionReducerCreator",YAe,"deleteShortUrlVisits"),e.serviceFactory("shortUrlVisitsDeletionReducer",n=>n.reducer,"shortUrlVisitsDeletionReducerCreator"),e.serviceFactory("tagVisitsReducerCreator",QAe,"getTagVisits"),e.serviceFactory("tagVisitsReducer",n=>n.reducer,"tagVisitsReducerCreator"),e.serviceFactory("tagVisitsComparisonReducerCreator",m3e,"getTagVisitsForComparison"),e.serviceFactory("tagVisitsComparisonReducer",n=>n.reducer,"tagVisitsComparisonReducerCreator"),e.serviceFactory("domainVisitsComparisonReducerCreator",u3e,"getDomainVisitsForComparison"),e.serviceFactory("domainVisitsComparisonReducer",n=>n.reducer,"domainVisitsComparisonReducerCreator"),e.serviceFactory("shortUrlVisitsComparisonReducerCreator",d3e,"getShortUrlVisitsForComparison"),e.serviceFactory("shortUrlVisitsComparisonReducer",n=>n.reducer,"shortUrlVisitsComparisonReducerCreator")},Kh=({children:e,to:t,className:r,...n})=>m.jsx(db,{className:({isActive:i})=>Me("aside-menu__item",r,{"aside-menu__item--selected":i}),to:t,...n,children:e}),b3e=({routePrefix:e,showOnMobile:t=!1})=>{const{pathname:r}=Sn(),n=Me("aside-menu",{"aside-menu--hidden":!t}),i=a=>`${e}${a}`;return m.jsx("aside",{className:n,children:m.jsxs("nav",{className:"nav flex-column aside-menu__nav",children:[m.jsxs(Kh,{to:i("/overview"),children:[m.jsx(Ye,{fixedWidth:!0,icon:rZ}),m.jsx("span",{className:"aside-menu__item-text",children:"Overview"})]}),m.jsxs(Kh,{to:i("/list-short-urls/1"),className:Me({"aside-menu__item--selected":r.match("/list-short-urls")!==null}),children:[m.jsx(Ye,{fixedWidth:!0,icon:Dj}),m.jsx("span",{className:"aside-menu__item-text",children:"List short URLs"})]}),m.jsxs(Kh,{to:i("/create-short-url"),children:[m.jsx(Ye,{fixedWidth:!0,icon:lZ,flip:"horizontal"}),m.jsx("span",{className:"aside-menu__item-text",children:"Create short URL"})]}),m.jsxs(Kh,{to:i("/manage-tags"),children:[m.jsx(Ye,{fixedWidth:!0,icon:n7}),m.jsx("span",{className:"aside-menu__item-text",children:"Manage tags"})]}),m.jsxs(Kh,{to:i("/manage-domains"),children:[m.jsx(Ye,{fixedWidth:!0,icon:RY}),m.jsx("span",{className:"aside-menu__item-text",children:"Manage domains"})]})]})})},lW=({createNotFound:e})=>{const{TagsList:t,ShortUrlsList:r,CreateShortUrl:n,ShortUrlVisits:i,TagVisits:a,DomainVisits:o,OrphanVisits:s,NonOrphanVisits:u,Overview:l,EditShortUrl:h,ManageDomains:p,TagVisitsComparison:g,DomainVisitsComparison:_,ShortUrlVisitsComparison:w,ShortUrlRedirectRules:b}=Sr(lW),x=Sn(),S=Nl(),[O,E,j,A]=Vt();$.useEffect(()=>A(),[x,A]);const T=Me("shlink-layout__burger-icon",{"shlink-layout__burger-icon--active":O}),M=dPe(j,A),q=ho("shortUrlRedirectRules");return m.jsxs(m.Fragment,{children:[m.jsx(Ye,{icon:EY,className:T,onClick:E}),m.jsx("div",{...M,className:"shlink-layout__swipeable",children:m.jsxs("div",{className:"shlink-layout__swipeable-inner",children:[m.jsx(b3e,{routePrefix:S,showOnMobile:O}),m.jsx("div",{className:"shlink-layout__container",onPointerDown:()=>A(),children:m.jsx("div",{className:"container-xl",children:m.jsxs(cb,{children:[m.jsx(St,{index:!0,element:m.jsx(Ej,{replace:!0,to:"overview"})}),m.jsx(St,{path:"/overview",element:m.jsx(l,{})}),m.jsx(St,{path:"/list-short-urls/:page",element:m.jsx(r,{})}),m.jsx(St,{path:"/create-short-url",element:m.jsx(n,{})}),m.jsx(St,{path:"/short-code/:shortCode/visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(i,{})},W))}),m.jsx(St,{path:"/short-code/:shortCode/edit",element:m.jsx(h,{})}),q&&m.jsx(St,{path:"/short-code/:shortCode/redirect-rules",element:m.jsx(b,{})}),m.jsx(St,{path:"/short-urls/compare-visits",element:m.jsx(w,{})}),m.jsx(St,{path:"/tag/:tag/visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(a,{})},W))}),m.jsx(St,{path:"/tags/compare-visits",element:m.jsx(g,{})}),m.jsx(St,{path:"/domain/:domain/visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(o,{})},W))}),m.jsx(St,{path:"/orphan-visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(s,{})},W))}),m.jsx(St,{path:"/non-orphan-visits",children:["","*"].map(W=>m.jsx(St,{path:W,element:m.jsx(u,{})},W))}),m.jsx(St,{path:"/manage-tags",element:m.jsx(t,{})}),m.jsx(St,{path:"/manage-domains",element:m.jsx(p,{})}),m.jsx(St,{path:"/domains/compare-visits",element:m.jsx(_,{})}),e&&m.jsx(St,{path:"*",element:e("/list-short-urls/1")})]})})})]})})]})},_3e=Or(lW,["TagsList","ShortUrlsList","CreateShortUrl","ShortUrlVisits","TagVisits","DomainVisits","OrphanVisits","NonOrphanVisits","Overview","EditShortUrl","ManageDomains","TagVisitsComparison","DomainVisitsComparison","ShortUrlVisitsComparison","ShortUrlRedirectRules"]),w3e=e=>JF({devTools:!1,reducer:bT({mercureInfo:e.mercureInfoReducer,shortUrlsList:e.shortUrlsListReducer,shortUrlCreation:e.shortUrlCreationReducer,shortUrlDeletion:e.shortUrlDeletionReducer,shortUrlEdition:e.shortUrlEditionReducer,shortUrlsDetails:e.shortUrlsDetailsReducer,shortUrlVisits:e.shortUrlVisitsReducer,shortUrlVisitsDeletion:e.shortUrlVisitsDeletionReducer,shortUrlVisitsComparison:e.shortUrlVisitsComparisonReducer,tagVisits:e.tagVisitsReducer,tagVisitsComparison:e.tagVisitsComparisonReducer,domainVisits:e.domainVisitsReducer,domainVisitsComparison:e.domainVisitsComparisonReducer,orphanVisits:e.orphanVisitsReducer,orphanVisitsDeletion:e.orphanVisitsDeletionReducer,nonOrphanVisits:e.nonOrphanVisitsReducer,tagsList:e.tagsListReducer,tagDelete:e.tagDeleteReducer,tagEdit:e.tagEditReducer,domainsList:e.domainsListReducer,visitsOverview:e.visitsOverviewReducer,shortUrlRedirectRules:e.shortUrlRedirectRulesReducer,shortUrlRedirectRulesSaving:e.setShortUrlRedirectRulesReducer}),middleware:t=>t({immutableCheck:!1,serializableCheck:!1})}),x3e=e=>{e.factory("Main",_3e),e.factory("store",w3e)},Ma=new Q$,{container:S3e}=Ma,O3e=e=>t=>Object.fromEntries(e.map(r=>[r,t[r]])),C3e=(e,t)=>(...r)=>e[t](...r),P3e=(e,t)=>({...e,[t]:C3e(S3e,t)}),Dd=(e,t=[])=>C$(e?O3e(e):null,t.reduce(P3e,{}));x3e(Ma);aTe(Ma,Dd);jTe(Ma,Dd);y3e(Ma,Dd);PPe(Ma);SPe(Ma,Dd);$Pe(Ma,Dd);LTe(Ma);sje(Ma,Dd);let c$;const E3e=e=>({serverVersion:t,apiClient:r,settings:n,routesPrefix:i="",createNotFound:a,tagColorsStorage:o})=>{const s=lPe(t),u=$.useRef(void 0),[l,h]=$.useState(),p=Zu(),g=$.useMemo(()=>p?$.Fragment:F$,[p]);return $.useEffect(()=>{c$=r,e.value("apiClientFactory",()=>c$),o&&e.value("TagColorsStorage",o);const{container:_}=e,{Main:w,store:b,loadMercureInfo:x,listTags:S,listDomains:O}=_;u.current=m.jsx(w,{createNotFound:a}),h(b),b.dispatch(x(n)),b.dispatch(S()),b.dispatch(O())},[r,a,n,o]),l?m.jsx(P$,{store:l,children:m.jsx(hB,{value:n??{},children:m.jsx(sPe,{value:s,children:m.jsx(iPe,{value:i,children:m.jsx(g,{children:u.current})})})})}):m.jsx(m.Fragment,{})},j3e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=",T3e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAABSCAMAAAAhFXfZAAAC91BMVEVMaXEzeak2f7I4g7g3g7cua5gzeKg8hJo3grY4g7c3grU0gLI2frE0daAubJc2gbQwd6QzeKk2gLMtd5sxdKIua5g1frA2f7IydaM0e6w2fq41fK01eqo3grgubJgta5cxdKI1f7AydaQydaMxc6EubJgvbJkwcZ4ubZkwcJwubZgubJcydqUydKIxapgubJctbJcubZcubJcvbJYubJcvbZkubJctbJctbZcubJg2f7AubJcrbZcubJcubJcua5g3grY0fq8ubJcubJdEkdEwhsw6i88vhswuhcsuhMtBjMgthMsrg8srgss6is8qgcs8i9A9iMYtg8spgcoogMo7hcMngMonf8olfso4gr8kfck5iM8jfMk4iM8he8k1fro7itAgesk2hs8eecgzfLcofssdeMg0hc4cd8g2hcsxeLQbdsgZdcgxeLImfcszhM0vda4xgckzhM4xg84wf8Yxgs4udKsvfcQucqhUndROmdM1fK0wcZ8vb5w0eqpQm9MzeKhXoNVcpdYydKNWn9VZotVKltJFjsIwcJ1Rms9OlslLmtH///8+kc9epdYzd6dbo9VHkMM2f7FHmNBClM8ydqVcpNY9hro3gLM9hLczealQmcw3fa46f7A8gLMxc6I3eagyc6FIldJMl9JSnNRSntNNl9JPnNJFi75UnM9ZodVKksg8kM45jc09e6ZHltFBk883gbRBh7pDk9EwcaBzn784g7dKkcY2i81Om9M7j85Llc81is09g7Q4grY/j9A0eqxKmdFFltBEjcXf6fFImdBCiLxJl9FGlNFBi78yiMxVndEvbpo6js74+vx+psPP3+o/ks5HkcpGmNCjwdZCkNDM3ehYoNJEls+lxNkxh8xHks0+jdC1zd5Lg6r+/v/H2ufz9/o3jM3t8/edvdM/k89Th61OiLBSjbZklbaTt9BfptdjmL1AicBHj8hGk9FAgK1dkLNTjLRekrdClc/k7fM0icy0y9tgp9c4jc2NtM9Dlc8zicxeXZn3AAAAQ3RSTlMAHDdTb4yPA+LtnEQmC4L2EmHqB7XA0d0sr478x4/Yd5i1zOfyPkf1sLVq4Nh3FvjxopQ2/STNuFzUwFIwxKaejILpIBEV9wAABhVJREFUeF6s1NdyFEcYBeBeoQIhRAkLlRDGrhIgY3BJL8CVeKzuyXFzzjkn5ZxzzuScg3PO8cKzu70JkO0LfxdTU//pM9vTu7Xgf6KqOVTb9X7toRrVEfBf1HTVjZccrT/2by1VV928Yty9ZbVuucdz90frG8DBjl9pVApbOstvmMuvVgaNXSfAAd6pGxpy6yxf5ph43pS/4f3uoaGm2rdu72S9xzOvMymkZFq/ptDrk90mhW7e4zl7HLzhxGWPR20xmSxJ/VqldG5m9XhaVOA1DadsNh3Pu5L2N6QtPO/32JpqQBVVk20oy/Pi2s23WEvyfHbe1thadVQttvm7Llf65gGmXK67XtupyoM7HQhmXdLS8oGWJNeOJ3C5fG5XCEJnkez3/oFdsvgJ4l2ANZwhrJKk/7OSXa+3Vw2WJMlKnGkobouYk6T0TyX30klOUnTD9HJ5qpckL3EW/w4XF3Xd0FGywXUrstrclVsqz5Pd/sXFYyDnPdrLcQODmGOK47IZb4CmibmMn+MYRzFZ5jg33ZL/EJrWcszHmANy3ARBK/IXtciJy8VsitPSdE3uuHxzougojcUdr8/32atnz/ev3f/K5wtpxUTpcaI45zusVDpYtZi+jg0oU9b3x74h7+n9ABvYEZeKaVq0sh0AtLKsFtqNBdeT0MrSzwwlq9+x6xAO4tgOtSzbCjrNQQiNvQUbUEubvzBUeGw26yDCsRHCoLkTHDa7IdOLIThs/gHvChszh2CimE8peRs47cxANI0lYNB5y1DljpOF0IhzBDPOZnDOqYYbeGKECbPzWnXludPphw5c2YBq5zlwXphIbO4VDCZ0gnPfUO1TwZoYwAs2ExPCedAu9DAjfQUjzITQb3jNj0KG2Sgt6BHaQUdYzWz+XmBktOHwanXjaSTcwwziBcuMOtwBmqPrTOxFQR/DRKKPqyur0aiW6cULYsx6tBm0jXpR/AUWR6HRq9WVW6MRhIq5jLyjbaCTDCijyYJNpCajdyobP/eTw0iexBAKkJ3gA5KcQb2zBXsIBckn+xVv8jkZSaEFHE+jFEleAEfayRU0MouNoBmB/L50Ai/HSLIHxcrpCvnhSQAuakKp2C/YbCylJjXRVy/z3+Kv/RrNcCo+WUzlVEhzKffnTQnxeN9fWF88fiNCUdSTsaufaChKWInHeysygfpIqagoakW+vV20J8uyl6TyNKEZWV4oRSPyCkWpgOLSbkCObT8o2r6tlG58HQquf6O0v50tB7JM7F4EORd2dx/K0w/KHsVkLPaoYrwgP/y7krr3SSMA4zj+OBgmjYkxcdIJQyQRKgg2viX9Hddi9UBb29LrKR7CVVEEEXWojUkXNyfTNDE14W9gbHJNuhjDettN3ZvbOvdOqCD3Jp/9l+/wJE+9PkYGjx/fqkys3S2rMozM/o2106rfMUINo6hVqz+eu/hd1c4xTg0TAfy5kV+4UG6+IthHTU9woWmxuKNbTfuCSfovBCxq7EtHqvYL4Sm6F8GVxsSXHMQ07TOi1DKtZxjWaaIyi4CXWjxPccUw8WVbMYY5wxC1mzEyXMJWkllpRloi+Kkoq69sxBTlElF6aAxYUbjXNlhlDZilDnM4U5SlN5biRsRHnbx3mbeWjEh4mEyiuJDl5XcWVmX5GvNkFgLWZM5qwsop4/AWfLhU1cR7k1VVvcYCWRkOI6Xy5gmnphCYIkvzuNYzHzosq2oNk2RtSs8khfUOfHIDgR6ysYBaMpl4uEgk2U/oJTs9AaTSwma7dT69geAE2ZpEjUsn2ieJNHeKfrI3EcAGJ2ZaNgVuC8EBctCLc57P5u5led6IOBkIYkuQMrmmjChs4VkfOerHqSBkPzZlhe06RslZ3zMjk2sscqKwY0RcjKK+LWbzd7KiHhkncs/siFJ+V5eXxD34B8nVuJEpGJNmxN2gH3vSvp7J70tF+D1Ej8qUJD1TkErAND2GZwTFg/LubvmgiBG3SOvdlsqFQrkEzJCL1rstlnVFROixZoDDSuXQFHESwVGlcuQcMb/b42NgjLowh5MTDFE3vNB5qStRIErdCQEh6pLPR92anSUb/wAIhldAaDMpGgAAAABJRU5ErkJggg==",A3e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAQAAAACach9AAACMUlEQVR4Ae3ShY7jQBAE0Aoz/f9/HTMzhg1zrdKUrJbdx+Kd2nD8VNudfsL/Th///dyQN2TH6f3y/BGpC379rV+S+qqetBOxImNQXL8JCAr2V4iMQXHGNJxeCfZXhSRBcQMfvkOWUdtfzlLgAENmZDcmo2TVmt8OSM2eXxBp3DjHSMFutqS7SbmemzBiR+xpKCNUIRkdkkYxhAkyGoBvyQFEJEefwSmmvBfJuJ6aKqKWnAkvGZOaZXTUgFqYULWNSHUckZuR1HIIimUExutRxwzOLROIG4vKmCKQt364mIlhSyzAf1m9lHZHJZrlAOMMztRRiKimp/rpdJDc9Awry5xTZCte7FHtuS8wJgeYGrex28xNTd086Dik7vUMscQOa8y4DoGtCCSkAKlNwpgNtphjrC6MIHUkR6YWxxs6Sc5xqn222mmCRFzIt8lEdKx+ikCtg91qS2WpwVfBelJCiQJwvzixfI9cxZQWgiSJelKnwBElKYtDOb2MFbhmUigbReQBV0Cg4+qMXSxXSyGUn4UbF8l+7qdSGnTC0XLCmahIgUHLhLOhpVCtw4CzYXvLQWQbJNmxoCsOKAxSgBJno75avolkRw8iIAFcsdc02e9iyCd8tHwmeSSoKTowIgvscSGZUOA7PuCN5b2BX9mQM7S0wYhMNU74zgsPBj3HU7wguAfnxxjFQGBE6pwN+GjME9zHY7zGp8wVxMShYX9NXvEWD3HbwJf4giO4CFIQxXScH1/TM+04kkBiAAAAAElFTkSuQmCC",k3e=()=>{delete S8.Icon.Default.prototype._getIconUrl,S8.Icon.Default.mergeOptions({iconRetinaUrl:T3e,iconUrl:j3e,shadowUrl:A3e})};k3e();const N3e=E3e(Ma);function ob(e){return t=>{const{resetSelectedServer:r}=t;return $.useEffect(()=>{r()},[r]),m.jsx(e,{...t})}}let R3e=class extends $.Component{constructor(t){super(t),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(t){const{console:r=globalThis.console}=this.props;r.error(t)}render(){const{hasError:t}=this.state,{location:r=globalThis.location}=this.props;if(t)return m.jsxs(BF,{title:"Oops! This is awkward :S",children:[m.jsx("p",{children:"It seems that something went wrong. Try refreshing the page or just click this button."}),m.jsx("br",{}),m.jsx(Zi,{size:"lg",onClick:()=>r.reload(),children:"Take me back"})]});const{children:n}=this.props;return n}};const M3e=({id:e,name:t})=>m.jsxs(nr,{to:`/server/${e}`,className:Me("servers-list__server-item","tw:flex tw:items-center tw:justify-between tw:gap-x-2 tw:px-4 tw:py-3","tw:rounded-none tw:hover:bg-lm-secondary tw:hover:dark:bg-dm-secondary","tw:border-b tw:last:border-0 tw:border-lm-border tw:dark:border-dm-border"),children:[m.jsx("span",{className:"tw:truncate",children:t}),m.jsx(Ye,{icon:hZ})]}),uW=({servers:e,borderless:t})=>m.jsx(m.Fragment,{children:e.length>0&&m.jsx("div",{"data-testid":"list",className:Me("tw:w-full tw:border-lm-border tw:dark:border-dm-border","tw:md:max-h-56 tw:md:overflow-y-auto tw:-mb-1 tw:scroll-thin",{"tw:border-y":!t}),children:e.map(({id:r,name:n})=>m.jsx(M3e,{id:r,name:n},r))})}),cW=({color:e=Mp,className:t})=>m.jsx("svg",{className:t,viewBox:"0 0 512 512",version:"1.1",xmlns:"http://www.w3.org/2000/svg",children:m.jsxs("g",{fill:e,children:[m.jsx("path",{d:" M 23.71 85.08 C 17.22 49.81 49.44 14.86 85.08 18.12 C 118.83 19.21 145.72 53.33 139.45 86.37 C 155.64 102.30 171.32 118.83 187.87 134.36 C 198.32 111.73 208.84 89.12 219.57 66.62 C 226.05 53.84 243.47 48.74 255.73 56.27 C 263.76 62.10 270.34 69.69 277.25 76.75 C 286.28 86.61 285.72 102.89 276.31 112.31 C 223.38 165.37 170.38 218.37 117.35 271.34 C 107.72 280.99 91.01 281.25 81.11 271.86 C 74.39 264.94 66.82 258.69 61.24 250.77 C 53.72 238.52 58.85 221.07 71.64 214.62 C 94.11 203.87 116.72 193.38 139.33 182.91 C 123.81 166.36 107.30 150.68 91.37 134.49 C 60.20 140.28 27.37 116.78 23.71 85.08 Z"}),m.jsx("path",{d:" M 205.21 201.23 C 225.32 181.36 260.88 181.11 281.14 200.86 C 299.25 218.75 317.37 236.65 335.10 254.93 C 356.73 278.01 352.01 318.70 326.03 336.56 C 320.07 330.47 313.73 324.65 308.12 318.28 C 323.86 309.39 328.76 286.18 316.63 272.39 C 301.73 256.95 286.30 242.03 271.24 226.75 C 264.49 219.65 256.80 212.00 246.37 211.52 C 224.65 208.64 205.52 233.36 214.49 253.58 C 221.09 266.81 234.22 275.12 243.62 286.24 C 240.43 295.96 238.09 306.13 238.29 316.46 C 225.55 304.29 213.16 291.73 200.89 279.09 C 180.97 257.57 183.10 220.45 205.21 201.23 Z"}),m.jsx("path",{d:" M 273.90 352.07 C 252.28 328.99 256.98 288.31 282.96 270.46 C 288.93 276.54 295.26 282.36 300.88 288.72 C 285.14 297.62 280.23 320.82 292.38 334.61 C 307.27 350.05 322.70 364.96 337.75 380.25 C 344.51 387.35 352.20 395.00 362.64 395.48 C 384.35 398.37 403.49 373.64 394.51 353.42 C 387.92 340.18 374.78 331.88 365.38 320.76 C 368.56 311.04 370.91 300.86 370.71 290.54 C 383.45 302.70 395.84 315.27 408.11 327.91 C 428.03 349.43 425.90 386.55 403.78 405.77 C 383.68 425.64 348.13 425.89 327.86 406.14 C 309.75 388.25 291.60 370.37 273.90 352.07 Z"}),m.jsx("path",{d:" M 422.11 403.83 C 431.96 394.07 441.60 384.06 451.66 374.51 C 460.90 383.74 471.89 392.70 474.89 406.11 C 480.16 429.97 484.08 454.13 488.76 478.12 C 490.00 483.41 484.47 488.29 479.35 486.63 C 454.66 481.52 429.55 478.12 405.14 471.84 C 393.17 467.97 385.20 457.75 376.55 449.27 C 386.39 439.49 396.13 429.60 406.06 419.91 C 416.37 433.45 435.74 414.00 422.11 403.83 Z"})]})}),L3e=({servers:e})=>{const t=mo(),r=Object.values(e),n=r.length>0;return $.useEffect(()=>{const i=r.find(({autoConnect:a})=>a);i&&t(`/server/${i.id}`)},[r,t]),m.jsx("div",{className:"tw:w-full",children:m.jsx(gi,{className:"tw:mx-auto tw:max-w-[720px] tw:overflow-hidden",children:m.jsxs("div",{className:"tw:flex tw:flex-col tw:md:flex-row",children:[m.jsx("div",{className:"tw:p-6 tw:hidden tw:md:flex tw:items-center tw:w-[40%]",children:m.jsx("div",{className:"tw:w-full",children:m.jsx(cW,{})})}),m.jsxs("div",{className:"tw:md:border-l tw:border-lm-border tw:dark:border-dm-border tw:flex-grow",children:[m.jsx("h1",{className:Me("tw:p-4 tw:text-center tw:border-lm-border tw:dark:border-dm-border",{"tw:border-b":!n}),children:"Welcome!"}),n?m.jsx(uW,{servers:r}):m.jsxs("div",{className:"tw:p-6 tw:text-center tw:flex tw:flex-col tw:gap-12 tw:text-xl",children:[m.jsx("p",{children:"This application will help you manage your Shlink servers."}),m.jsx("p",{children:m.jsxs(Zi,{to:"/server/create",size:"lg",inline:!0,children:[m.jsx(Ye,{icon:Am})," Add a server"]})}),m.jsx("p",{children:m.jsx(_i,{href:"https://shlink.io/documentation",children:m.jsxs("small",{children:[m.jsx("span",{className:"tw:mr-2",children:"Learn more about Shlink"}),m.jsx(Ye,{icon:HY})]})})})]})]})]})})})},fW=()=>{const{ServersDropdown:e}=Aa(fW),[t,r,,n]=Vt(),i=Sn(),{pathname:a}=i;$.useEffect(n,[i,n]);const o="/settings";return m.jsxs(Y7,{color:"primary",dark:!0,fixed:"top",expand:"md",className:"tw:text-white tw:bg-lm-brand tw:dark:bg-dm-brand",children:[m.jsxs(Z7,{tag:nr,to:"/",children:[m.jsx(cW,{className:"tw:inline tw:w-7 tw:mr-1",color:"white"})," Shlink"]}),m.jsx(X7,{onClick:r,children:m.jsx(Ye,{icon:cZ,className:Me("tw:transition-transform tw:duration-300",{"tw:rotate-180":t})})}),m.jsx(cT,{navbar:!0,isOpen:t,children:m.jsxs(eT,{navbar:!0,className:"tw:ml-auto",children:[m.jsx(tT,{children:m.jsxs(rT,{tag:nr,to:o,active:a.startsWith(o),children:[m.jsx(Ye,{icon:vZ}),"  Settings"]})}),m.jsx(e,{})]})})]})},D3e=ka(fW,["ServersDropdown"]),I3e=({children:e})=>{const t=Sn();return $.useEffect(()=>{scrollTo(0,0)},[t]),m.jsx(m.Fragment,{children:e})},dW=sB(e=>e,e=>{try{return DP(e,e,"=")}catch{return!1}}),hW=e=>dW(e)?`v${e}`:e,pW=(e,t="latest")=>dW(e)?e:t,$3e="%_VERSION_%",F3e=e=>hW(pW(e)),f$=({project:e,version:t})=>m.jsx(_i,{href:`https://github.com/shlinkio/${e}/releases/${t}`,className:"tw:text-gray-500",children:m.jsx("b",{children:t})}),B3e=({selectedServer:e,clientVersion:t=$3e})=>{const r=F3e(t);return m.jsxs("small",{className:"tw:text-gray-500",children:[Lj(e)&&m.jsxs(m.Fragment,{children:["Server: ",m.jsx(f$,{project:"shlink",version:e.printableVersion})," - "]}),"Client: ",m.jsx(f$,{project:"shlink-web-client",version:r})]})},U3e=({selectedServer:e})=>m.jsx("div",{className:Me("tw:text-center",{"tw:md:ml-(--aside-menu-width)":Lj(e)}),children:m.jsx(B3e,{selectedServer:e})}),Id=({children:e,className:t})=>m.jsx("div",{className:Me("tw:container tw:mx-auto tw:p-5 tw:pt-8 tw:max-md:p-0 tw:max-md:py-4",t),children:e});function mW(e){const t=r=>{const{ServerError:n}=Aa(t),i=md(),{selectServer:a,selectedServer:o}=r;return $.useEffect(()=>{i.serverId&&a(i.serverId)},[i.serverId,a]),o?fY(o)?m.jsx(n,{}):m.jsx(e,{...r}):m.jsx(Id,{children:m.jsx($F,{loading:!0})})};return t}const vW=mW($.memo(({selectedServer:e,settings:t})=>{const{buildShlinkApiClient:r,TagColorsStorage:n,ShlinkWebComponent:i,ServerError:a}=Aa(vW);if(!Lj(e))return m.jsx(a,{});const o=`/server/${e.id}`;return m.jsx(i,{serverVersion:e.version,apiClient:r(e),settings:t,routesPrefix:o,tagColorsStorage:n,createNotFound:s=>m.jsx(UF,{to:`${o}${s}`,children:"List short URLs"})})})),z3e=ka(vW,["buildShlinkApiClient","TagColorsStorage","ShlinkWebComponent","ServerError"]),V3e=(e,t)=>{e.constant("window",window),e.constant("console",console),e.constant("fetch",window.fetch.bind(window)),e.service("HttpClient",Woe,"fetch"),e.serviceFactory("ScrollToTop",()=>I3e),e.factory("MainHeader",D3e),e.serviceFactory("Home",()=>L3e),e.decorator("Home",ob),e.decorator("Home",t(["servers"],["resetSelectedServer"])),e.serviceFactory("ShlinkWebComponent",()=>N3e),e.factory("ShlinkWebComponentContainer",z3e),e.decorator("ShlinkWebComponentContainer",t(["selectedServer","settings"],["selectServer"])),e.serviceFactory("ShlinkVersionsContainer",()=>U3e),e.decorator("ShlinkVersionsContainer",t(["selectedServer"])),e.serviceFactory("ErrorHandler",()=>R3e)},gW=()=>{const e=mo();return $.useCallback(()=>e(-1),[e])};function q3e(e){let t=e.url;try{const{host:r,pathname:n}=new URL(t);t=r;const i=n.substring(1);i.length>0&&(t=`${t} ${i}`)}catch{}return`${e.name} ${t}`.toLowerCase().replace(/[^a-zA-Z0-9-_.~]/g,"-")}function W3e(e){const t={};return e.forEach(r=>{t[r.id]=r}),t}const H3e=(e,{url:t,apiKey:r})=>e.some(n=>n.url===t&&n.apiKey===r);function G3e(e,t){const r=Object.values(e),{duplicatedServers:n=[],newServers:i=[]}=oB(t,a=>H3e(r,a)?"duplicatedServers":"newServers");return{duplicatedServers:n,newServers:i}}function sb(e,t){const r=new Set(Object.keys(e)),n=[];return t.forEach(i=>{const a=q3e(i);let o=a,s=1;for(;r.has(o);)o=`${a}-${s}`,s++;n.push({...i,id:o}),r.add(o)}),n}const yW=({open:e,duplicatedServers:t,onClose:r,onConfirm:n})=>{const i=t.length>1;return m.jsxs(IF,{size:"lg",title:`Duplicated server${i?"s":""}`,open:e,onClose:r,onConfirm:n,confirmText:`Save duplicate${i?"s":""}`,cancelText:i?"Ignore duplicates":"Discard",children:[m.jsx("p",{children:i?"The next servers already exist:":"There is already a server with:"}),m.jsx("ul",{className:"tw:list-disc tw:mt-4",children:t.map(({url:a,apiKey:o},s)=>i?m.jsxs("li",{children:[m.jsx("b",{children:a})," - ",m.jsx("b",{children:o})]},s):m.jsxs($.Fragment,{children:[m.jsxs("li",{children:["URL: ",m.jsx("b",{children:a})]}),m.jsxs("li",{children:["API key: ",m.jsx("b",{children:o})]})]},s))}),m.jsxs("span",{children:[i?"Do you want to save duplicated servers":"Do you want to save this server","?"]})]})},K3e=e=>$.useCallback(t=>{t.preventDefault(),e(t)},[e]),bW=({onSubmit:e,initialValues:t,children:r,title:n})=>{const[i,a]=$.useState((t==null?void 0:t.name)??""),[o,s]=$.useState((t==null?void 0:t.url)??""),[u,l]=$.useState((t==null?void 0:t.apiKey)??""),{flag:h,toggle:p}=Vt((t==null?void 0:t.forwardCredentials)??!1,!0),g=K3e(()=>e({name:i,url:o,apiKey:u,forwardCredentials:h}));return m.jsxs("form",{name:"serverForm",onSubmit:g,children:[m.jsxs(jb,{className:"tw:mb-4",bodyClassName:"tw:flex tw:flex-col tw:gap-y-3",title:n,children:[m.jsx(FN,{label:"Name",value:i,onChange:_=>a(_.target.value),required:!0}),m.jsx(FN,{label:"URL",type:"url",value:o,onChange:_=>s(_.target.value),required:!0}),m.jsx($ae,{label:"API key",value:u,onChange:_=>l(_.target.value),required:!0}),m.jsx(Cae,{summary:"Advanced options",children:m.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-0.5",children:[m.jsxs(Tb,{className:"tw:flex tw:items-center tw:gap-x-1.5 tw:cursor-pointer",children:[m.jsx(Dae,{onChange:p,checked:h}),"Forward credentials to this server on every request."]}),m.jsxs("small",{className:"tw:pl-5.5 tw:text-gray-600 tw:dark:text-gray-400 tw:mt-0.5",children:['"',"Credentials",'"'," here means cookies, TLS client certificates, or authentication headers containing a username and password."]}),m.jsxs("small",{className:"tw:pl-5.5 tw:text-gray-600 tw:dark:text-gray-400",children:[m.jsx("b",{children:"Important!"})," If you are not sure what this means, leave it unchecked. Enabling this option will make all requests fail for Shlink older than v4.5.0, as it requires the server to set a more strict value for ",m.jsx("code",{className:"tw:whitespace-nowrap",children:"Access-Control-Allow-Origin"})," than ",m.jsx("code",{children:"*"}),"."]})]})})]}),m.jsx("div",{className:"tw:flex tw:items-center tw:justify-end tw:gap-x-2",children:r})]})},d$=4e3,h$=({variant:e})=>m.jsx("div",{className:"tw:mt-4",children:m.jsxs(FF,{variant:e,children:[e==="success"&&"Servers properly imported. You can now select one from the list :)",e==="error"&&"The servers could not be imported. Make sure the format is correct."]})}),_W=({servers:e,createServers:t})=>{const{ImportServersBtn:r,useTimeoutToggle:n}=Aa(_W),i=mo(),a=gW(),o=!!Object.keys(e).length,[s,u]=n(!1,d$),[l,h]=n(!1,d$),[p,g]=Vt(),[_,w]=$.useState(),b=$.useCallback(S=>{const[O]=sb(e,[S]);t([O]),i(`/server/${O.id}`)},[t,i,e]),x=$.useCallback(S=>{w(S),Object.values(e).some(({url:E,apiKey:j})=>S.url===E&&S.apiKey===j)?g():b(S)},[b,e,g]);return m.jsxs(Id,{children:[m.jsxs(bW,{title:"Add new server",onSubmit:x,children:[!o&&m.jsx(r,{tooltipPlacement:"top",onImport:u,onError:h}),o&&m.jsx(Zi,{variant:"secondary",onClick:a,children:"Cancel"}),m.jsx(Zi,{type:"submit",children:"Create server"})]}),s&&m.jsx(h$,{variant:"success"}),l&&m.jsx(h$,{variant:"error"}),m.jsx(yW,{open:p,duplicatedServers:_?[_]:[],onClose:a,onConfirm:()=>_&&b(_)})]})},Y3e=ka(_W,["ImportServersBtn","useTimeoutToggle"]),wW=({server:e,children:t})=>{const{DeleteServerModal:r}=Aa(wW),[n,,i,a]=Vt(),o=mo(),s=$.useCallback(u=>{a(),u&&o("/")},[a,o]);return m.jsxs(m.Fragment,{children:[m.jsx("button",{type:"button",className:"tw:text-danger tw:hover:underline",onClick:i,children:t}),m.jsx(r,{server:e,open:n,onClose:s})]})},Z3e=ka(wW,["DeleteServerModal"]),X3e=({server:e,onClose:t,open:r,deleteServer:n})=>{const i=$.useCallback(a=>{a==="confirm"&&n(e)},[n,e]);return m.jsx(IF,{open:r,title:"Remove server",variant:"danger",onClose:()=>t(!1),onConfirm:()=>t(!0),onClosed:i,confirmText:"Delete",children:m.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-y-4",children:[m.jsxs("p",{children:["Are you sure you want to remove ",m.jsx("b",{children:e?e.name:""}),"?"]}),m.jsx("p",{children:m.jsx("i",{children:"No data will be deleted, only the access to this server will be removed from this device. You can create it again at any moment."})})]})})},Q3e=mW(({editServer:e,selectedServer:t,selectServer:r})=>{const n=gW(),{reconnect:i}=bd();if(!sp(t))return null;const a=o=>{e(t.id,o),i==="true"&&r(t.id),n()};return m.jsx(Id,{children:m.jsxs(bW,{title:m.jsxs(m.Fragment,{children:['Edit "',t.name,'"']}),initialValues:t,onSubmit:a,children:[m.jsx(Zi,{variant:"secondary",onClick:n,children:"Cancel"}),m.jsx(Zi,{type:"submit",children:"Save"})]})})}),J3e=ka(Q3e,["ServerError"]),xW=({createServers:e,servers:t,children:r,onImport:n,onError:i=()=>{},tooltipPlacement:a="bottom",className:o=""})=>{const{ServersImporter:s}=Aa(xW),u=vl(),[l,h]=$.useState([]),[p,,g,_]=Vt(),w=$.useRef(!1),b=$.useCallback(async({target:O})=>{var E;return s.importServersFromFile((E=O.files)==null?void 0:E[0]).then(j=>{const{duplicatedServers:A,newServers:T}=G3e(t,j);w.current=T.length>0,e(sb(t,T)),A.length>0?(h(A),g()):n==null||n()}).then(()=>{O.value=null}).catch(i)},[e,i,n,t,s,g]),x=$.useCallback(()=>{e(sb(t,l)),_(),n==null||n()},[e,l,_,n,t]),S=$.useCallback(()=>{_(),w.current&&(n==null||n())},[_,n]);return m.jsxs(m.Fragment,{children:[m.jsxs(Zi,{variant:"secondary",id:"importBtn",className:o,onClick:()=>{var O;return(O=u.current)==null?void 0:O.click()},children:[m.jsx(Ye,{icon:DY,fixedWidth:!0})," ",r??"Import from file"]}),m.jsxs(ta,{placement:a,target:"importBtn",children:["You can create servers by importing a CSV file with ",m.jsx("b",{children:"name"}),", ",m.jsx("b",{children:"apiKey"})," and ",m.jsx("b",{children:"url"})," columns."]}),m.jsx("input",{type:"file",accept:".csv",className:"tw:hidden","aria-hidden":!0,tabIndex:-1,ref:u,onChange:b,"data-testid":"csv-file-input"}),m.jsx(yW,{open:p,duplicatedServers:l,onClose:S,onConfirm:x})]})},eke=ka(xW,["ServersImporter"]),SW=({servers:e,selectedServer:t})=>{const{DeleteServerButton:r}=Aa(SW);return m.jsx(Id,{children:m.jsxs("div",{className:"tw:flex tw:flex-col tw:items-center tw:gap-y-4 tw:md:gap-y-8",children:[m.jsxs($F,{className:"tw:w-full tw:lg:w-[80%]",variant:"error",children:[!sp(t)&&"Could not find this Shlink server.",sp(t)&&m.jsxs(m.Fragment,{children:[m.jsx("p",{children:"Oops! Could not connect to this Shlink server."}),"Make sure you have internet connection, and the server is properly configured and on-line."]})]}),m.jsxs("p",{className:"tw:text-xl",children:["These are the Shlink servers currently configured. Choose one of them or ",m.jsx(nr,{to:"/server/create",children:"add a new one"}),"."]}),m.jsx(gi,{className:"tw:w-full tw:max-w-100 tw:overflow-hidden",children:m.jsx(uW,{borderless:!0,servers:Object.values(e)})}),sp(t)&&m.jsxs("p",{className:"tw:text-xl",children:["Alternatively, if you think you may have misconfigured this server, you can ",m.jsx(r,{server:t,children:"remove it"})," or ",m.jsx(nr,{to:`/server/${t.id}/edit?reconnect=true`,children:"edit it"}),"."]})]})})},tke=ka(SW,["DeleteServerButton"]),rke=4e3,OW=({servers:e})=>{const{ServersExporter:t,ImportServersBtn:r,useTimeoutToggle:n,ManageServersRow:i}=Aa(OW),[a,o]=$.useState(""),s=$.useMemo(()=>Object.values(e),[e]),u=$.useMemo(()=>s.filter(({name:g,url:_})=>`${g} ${_}`.toLowerCase().match(a.toLowerCase())),[s,a]),l=s.some(({autoConnect:g})=>!!g),[h,p]=n(!1,rke);return m.jsxs(Id,{className:"tw:flex tw:flex-col tw:gap-y-4",children:[m.jsx(Bae,{onChange:o}),m.jsxs("div",{className:"tw:flex tw:flex-col tw:md:flex-row tw:gap-2",children:[m.jsxs("div",{className:"tw:flex tw:gap-2",children:[m.jsx(r,{className:"tw:flex-grow",onError:p,children:"Import servers"}),u.length>0&&m.jsxs(Zi,{variant:"secondary",className:"tw:flex-grow",onClick:async()=>t.exportServers(),children:[m.jsx(Ye,{icon:i7})," Export servers"]})]}),m.jsxs(Zi,{className:"tw:md:ml-auto",to:"/server/create",children:[m.jsx(Ye,{icon:Am})," Add a server"]})]}),m.jsx(jb,{className:"card",children:m.jsxs(pi,{header:m.jsxs(pi.Row,{children:[l&&m.jsx(pi.Cell,{className:"tw:w-[35px]",children:m.jsx("span",{className:"tw:sr-only",children:"Auto-connect"})}),m.jsx(pi.Cell,{children:"Name"}),m.jsx(pi.Cell,{children:"Base URL"}),m.jsx(pi.Cell,{children:m.jsx("span",{className:"sr-only",children:"Options"})})]}),children:[!u.length&&m.jsx(pi.Row,{className:"tw:text-center",children:m.jsx(pi.Cell,{colSpan:4,children:"No servers found."})}),u.map(g=>m.jsx(i,{server:g,hasAutoConnect:l},g.id))]})}),h&&m.jsx("div",{children:m.jsx(FF,{variant:"error",children:"The servers could not be imported. Make sure the format is correct."})})]})},nke=ka(OW,["ServersExporter","ImportServersBtn","useTimeoutToggle","ManageServersRow"]),CW=({server:e,hasAutoConnect:t})=>{const{ManageServersRowDropdown:r}=Aa(CW);return m.jsxs(pi.Row,{className:"tw:relative",children:[t&&m.jsx(pi.Cell,{columnName:"Auto-connect",children:e.autoConnect&&m.jsxs(m.Fragment,{children:[m.jsx(Ye,{icon:Lu,className:"tw:text-brand",id:"autoConnectIcon"}),m.jsx(ta,{target:"autoConnectIcon",placement:"right",children:"Auto-connect to this server"})]})}),m.jsx(pi.Cell,{className:"tw:font-bold",columnName:"Name",children:m.jsx(nr,{to:`/server/${e.id}`,children:e.name})}),m.jsx(pi.Cell,{columnName:"Base URL",className:"tw:max-lg:border-b-0",children:e.url}),m.jsx(pi.Cell,{className:"tw:text-right tw:max-lg:absolute tw:right-0 tw:-top-1 tw:mx-lg:pt-0",children:m.jsx(r,{server:e})})]})},ike=ka(CW,["ManageServersRowDropdown"]),PW=({server:e,setAutoConnect:t})=>{const{DeleteServerModal:r}=Aa(PW),[n,,i,a]=Vt(),o=`/server/${e.id}`,{autoConnect:s}=e,u=s?MY:kse;return m.jsxs(m.Fragment,{children:[m.jsxs(Eb,{minWidth:s?210:170,children:[m.jsxs(Qe,{tag:nr,to:o,children:[m.jsx(Ye,{icon:NY,fixedWidth:!0})," Connect"]}),m.jsxs(Qe,{tag:nr,to:`${o}/edit`,children:[m.jsx(Ye,{icon:Ij,fixedWidth:!0})," Edit server"]}),m.jsxs(Qe,{onClick:()=>t(e,!s),children:[m.jsx(Ye,{icon:u,fixedWidth:!0})," ",s?"Do not a":"A","uto-connect"]}),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{className:"tw:text-danger",onClick:i,children:[m.jsx(Ye,{icon:t7,fixedWidth:!0})," Remove server"]})]}),m.jsx(r,{server:e,open:n,onClose:a})]})},ake=ka(PW,["DeleteServerModal"]),EW=(e,t)=>tB(e,t,{serializeError:r=>r}),oke={},{actions:ske,reducer:lke}=Nr({name:"shlink/servers",initialState:oke,reducers:{editServer:{prepare:(e,t)=>({payload:{serverId:e,serverData:t}}),reducer:(e,{payload:t})=>{const{serverId:r,serverData:n}=t;return e[r]?{...e,[r]:{...e[r],...n}}:e}},deleteServer:(e,{payload:t})=>(delete e[t.id],e),setAutoConnect:{prepare:({id:e},t)=>({payload:{serverId:e,autoConnect:t}}),reducer:(e,{payload:t})=>{const{serverId:r,autoConnect:n}=t;return e[r]?n?Object.fromEntries(Object.entries(e).map(([i,a])=>[i,{...a,autoConnect:i===r}])):{...e,[r]:{...e[r],autoConnect:n}}:e}},createServers:{prepare:e=>({payload:W3e(e)}),reducer:(e,{payload:t})=>({...e,...t})}}}),{editServer:uke,deleteServer:cke,setAutoConnect:fke,createServers:jW}=ske,dke=lke,hke=e=>sb({},Array.isArray(e)?e.filter(e7):[]),pke=e=>EW("shlink/remoteServers/fetchServers",async(t,{dispatch:r})=>{const n=await e.jsonRequest(`${py.homepage}/servers.json`),i=hke(n);r(jW(i))}),f3="shlink/selectedServer",mke="1.0.0",vke="999.999.999",gke="latest",yke=e=>pW(e===gke?vke:e,mke),bke=sB(e=>`${e.id}_${e.url}_${e.apiKey}`,async(e,t)=>t().then(({version:r})=>({version:yke(r),printableVersion:hW(r)}))),p$=null,d3=Mn(`${f3}/resetSelectedServer`),_ke=e=>EW(`${f3}/selectServer`,async(t,{dispatch:r,getState:n})=>{r(d3());const{servers:i}=n(),a=i[t];if(!a)return{serverNotFound:!0};try{const o=e(a),{version:s,printableVersion:u}=await bke(a,()=>o.health());return{...a,version:s,printableVersion:u}}catch{return{...a,serverNotReachable:!0}}}),wke=e=>Nr({name:f3,initialState:p$,reducers:{},extraReducers:t=>{t.addCase(d3,()=>p$),t.addCase(e.fulfilled,(r,{payload:n})=>n)}}),xke=({servers:e,selectedServer:t})=>{const r=Object.values(e);return m.jsxs(EF,{nav:!0,inNavbar:!0,children:[m.jsxs(os,{nav:!0,caret:!0,children:[m.jsx(Ye,{icon:_4})," ",m.jsx("span",{className:"tw:ml-1",children:"Servers"})]}),m.jsx(Cl,{end:!0,className:"tw:right-0",children:r.length===0?m.jsxs(Qe,{tag:nr,to:"/server/create",children:[m.jsx(Ye,{icon:Am})," ",m.jsx("span",{className:"tw:ml-1",children:"Add a server"})]}):m.jsxs(m.Fragment,{children:[r.map(({name:n,id:i})=>m.jsx(Qe,{tag:nr,to:`/server/${i}`,active:dY(t)===i,children:n},i)),m.jsx(Qe,{divider:!0,tag:"hr"}),m.jsxs(Qe,{tag:nr,to:"/manage-servers",children:[m.jsx(Ye,{icon:_4})," ",m.jsx("span",{className:"tw:ml-1",children:"Manage servers"})]})]})})]})},Ske=({document:e},t,r)=>{const n=e.createElement("a");n.setAttribute("href",t),n.setAttribute("download",r),n.style.visibility="hidden",e.body.appendChild(n),n.click(),e.body.removeChild(n)},Oke=(e,t,r)=>{const n=new Blob([t],{type:"text/csv;charset=utf-8;"}),i=URL.createObjectURL(n);Ske(e,i,r)},Cke="shlink-servers.csv";var Om,Cm,Pm;class Pke{constructor(t,r,n){jh(this,Om);jh(this,Cm);jh(this,Pm);qc(this,"exportServers",async()=>{const t=Object.values(Eh(this,Om).get("servers")??{}).map(hY);try{const r=Eh(this,Pm).call(this,t);Oke(Eh(this,Cm),r,Cke)}catch(r){console.error(r)}});Th(this,Om,t),Th(this,Cm,r),Th(this,Pm,n)}}Om=new WeakMap,Cm=new WeakMap,Pm=new WeakMap;const Eke=e=>{if(!Array.isArray(e))throw new Error("Provided file does not have the right format.");return e.map(mY)};var Em;class jke{constructor(t){jh(this,Em);Th(this,Em,t)}async importServersFromFile(t){if(!t)throw new Error("No file provided");const r=await t.text(),n=await Eh(this,Em).call(this,r);return Eke(n)}}Em=new WeakMap;const Tke=(e,t)=>{e.factory("ManageServers",nke),e.decorator("ManageServers",ob),e.decorator("ManageServers",t(["selectedServer","servers"],["resetSelectedServer"])),e.factory("ManageServersRow",ike),e.factory("ManageServersRowDropdown",ake),e.decorator("ManageServersRowDropdown",t(null,["setAutoConnect"])),e.factory("CreateServer",Y3e),e.decorator("CreateServer",ob),e.decorator("CreateServer",t(["selectedServer","servers"],["createServers","resetSelectedServer"])),e.factory("EditServer",J3e),e.decorator("EditServer",t(["selectedServer"],["editServer","selectServer","resetSelectedServer"])),e.serviceFactory("ServersDropdown",()=>xke),e.decorator("ServersDropdown",t(["servers","selectedServer"])),e.serviceFactory("DeleteServerModal",()=>X3e),e.decorator("DeleteServerModal",t(null,["deleteServer"])),e.factory("DeleteServerButton",Z3e),e.factory("ImportServersBtn",eke),e.decorator("ImportServersBtn",t(["servers"],["createServers"])),e.factory("ServerError",tke),e.decorator("ServerError",t(["servers","selectedServer"])),e.service("ServersImporter",jke,"csvToJson"),e.service("ServersExporter",Pke,"Storage","window","jsonToCsv"),e.serviceFactory("selectServer",_ke,"buildShlinkApiClient","loadMercureInfo"),e.serviceFactory("createServers",()=>jW),e.serviceFactory("deleteServer",()=>cke),e.serviceFactory("editServer",()=>uke),e.serviceFactory("setAutoConnect",()=>fke),e.serviceFactory("fetchServers",pke,"HttpClient"),e.serviceFactory("resetSelectedServer",()=>d3),e.serviceFactory("selectedServerReducerCreator",wke,"selectServer"),e.serviceFactory("selectedServerReducer",r=>r.reducer,"selectedServerReducerCreator")},TW={field:"dateCreated",dir:"DESC"},Ake={realTimeUpdates:{enabled:!0},shortUrlCreation:{validateUrls:!1},ui:{theme:vT()},visits:{defaultInterval:"last30Days"},shortUrlsList:{defaultOrdering:TW}},{reducer:kke,actions:Nke}=Nr({name:"shlink/settings",initialState:Ake,reducers:{setSettings:(e,{payload:t})=>Mb(e,t)}}),{setSettings:Rke}=Nke,Mke=kke,Lke=({settings:e,setSettings:t})=>m.jsx(Id,{children:m.jsx(Ese,{settings:e,updateSettings:t,defaultShortUrlsListOrdering:TW})}),Dke=(e,t)=>{e.serviceFactory("Settings",()=>Lke),e.decorator("Settings",ob),e.decorator("Settings",t(["settings"],["setSettings","resetSelectedServer"])),e.serviceFactory("setSettings",()=>Rke)};var zO,m$;function Ike(){return m$||(m$=1,zO=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:a})},r.r=function(n){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,i){if(1&i&&(n=r(n)),8&i||4&i&&typeof n=="object"&&n&&n.__esModule)return n;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:n}),2&i&&typeof n!="string")for(var o in n)r.d(a,o,(function(s){return n[s]}).bind(null,o));return a},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=32)}([function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch{typeof window=="object"&&(r=window)}e.exports=r},function(e,t,r){var n=r(6),i=Object.keys||function(w){var b=[];for(var x in w)b.push(x);return b};e.exports=p;var a=r(5);a.inherits=r(2);var o=r(23),s=r(14);a.inherits(p,o);for(var u=i(s.prototype),l=0;l diff --git a/feature/server-credentials/assets/index-DwRly2sr.css b/feature/server-credentials/assets/index-DkhKU6No.css similarity index 91% rename from feature/server-credentials/assets/index-DwRly2sr.css rename to feature/server-credentials/assets/index-DkhKU6No.css index 19c47e16..a32b832a 100644 --- a/feature/server-credentials/assets/index-DwRly2sr.css +++ b/feature/server-credentials/assets/index-DkhKU6No.css @@ -1,4 +1,4 @@ -@charset "UTF-8";/*! tailwindcss v4.1.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-duration:initial;--tw-content:"";--tw-outline-style:solid}}}@layer theme{:root,:host{--tw-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--tw-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--tw-color-pink-500:oklch(65.6% .241 354.308);--tw-color-pink-600:oklch(59.2% .249 .584);--tw-color-gray-400:oklch(70.7% .022 261.325);--tw-color-gray-500:oklch(55.1% .027 264.364);--tw-color-gray-600:oklch(44.6% .03 256.802);--tw-color-zinc-500:oklch(55.2% .016 285.938);--tw-color-zinc-600:oklch(44.2% .017 285.786);--tw-color-black:#000;--tw-color-white:#fff;--tw-spacing:.25rem;--tw-container-sm:24rem;--tw-container-lg:32rem;--tw-container-4xl:56rem;--tw-container-6xl:72rem;--tw-text-sm:.875rem;--tw-text-sm--line-height:calc(1.25/.875);--tw-text-base:1rem;--tw-text-lg:1.125rem;--tw-text-lg--line-height:calc(1.75/1.125);--tw-text-xl:1.25rem;--tw-text-xl--line-height:calc(1.75/1.25);--tw-text-2xl:1.5rem;--tw-font-weight-medium:500;--tw-font-weight-bold:700;--tw-radius-xs:.125rem;--tw-radius-sm:.25rem;--tw-radius-md:.375rem;--tw-default-transition-duration:.15s;--tw-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--tw-default-font-family:var(--tw-font-sans);--tw-default-mono-font-family:var(--tw-font-mono);--tw-color-lm-main:#4696e5;--tw-color-lm-main-dark:#1f69c0;--tw-color-lm-primary:#fff;--tw-color-lm-primary-alfa:rgb(var(--tw-color-lm-primary)/.5);--tw-color-lm-secondary:#f5f6fe;--tw-color-lm-text:#232323;--tw-color-lm-border:#00000020;--tw-color-lm-table-border:#dee2e6;--tw-color-lm-active:#eee;--tw-color-lm-brand:var(--tw-color-lm-main);--tw-color-lm-input:var(--tw-color-lm-primary);--tw-color-lm-disabled-input:var(--tw-color-lm-secondary);--tw-color-lm-input-text:#495057;--tw-color-lm-input-border:#00000030;--tw-color-lm-table-highlight:#00000013;--tw-color-dm-main:#4696e5;--tw-color-dm-main-dark:#1f69c0;--tw-color-dm-primary:#161b22;--tw-color-dm-primary-alfa:rgb(var(--tw-color-dm-primary)/.8);--tw-color-dm-secondary:#0f131a;--tw-color-dm-text:#c9d1d9;--tw-color-dm-border:#ffffff26;--tw-color-dm-table-border:#393d43;--tw-color-dm-active:var(--tw-color-dm-secondary);--tw-color-dm-brand:#0b2d4e;--tw-color-dm-input:#12161c;--tw-color-dm-disabled-input:#1a2028;--tw-color-dm-input-text:var(--tw-color-dm-text);--tw-color-dm-input-border:var(--tw-color-dm-border);--tw-color-dm-table-highlight:var(--tw-color-dm-border);--tw-color-brand:#4696e5;--tw-color-brand-dark:#1f69c0;--tw-color-danger:#dc3545;--tw-color-danger-dark:#bb2d3b;--tw-color-warning:#ffc107;--tw-color-warning-dark:#ffca2c;--tw-color-placeholder:#6c757d}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--tw-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--tw-default-font-feature-settings,normal);font-variation-settings:var(--tw-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--tw-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--tw-default-mono-font-feature-settings,normal);font-variation-settings:var(--tw-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html:not([data-theme=dark]){--primary-color:var(--tw-color-lm-primary);--primary-color-alfa:var(--tw-color-lm-primary-alfa);--secondary-color:var(--tw-color-lm-secondary);--text-color:var(--tw-color-lm-text);--border-color:var(--tw-color-lm-border);--active-color:var(--tw-color-lm-active);--brand-color:var(--tw-color-lm-brand);--input-color:var(--tw-color-lm-input);--input-disabled-color:var(--tw-color-lm-disabled-input);--input-text-color:var(--tw-color-lm-input-text);--input-border-color:var(--tw-color-lm-input-border);--table-border-color:var(--tw-color-lm-table-border);--table-highlight-color:var(--tw-color-lm-table-highlight)}html[data-theme=dark]{--primary-color:var(--tw-color-dm-primary);--primary-color-alfa:var(--tw-color-dm-primary-alfa);--secondary-color:var(--tw-color-dm-secondary);--text-color:var(--tw-color-dm-text);--border-color:var(--tw-color-dm-border);--active-color:var(--tw-color-dm-active);--brand-color:var(--tw-color-dm-brand);--input-color:var(--tw-color-dm-input);--input-disabled-color:var(--tw-color-dm-disabled-input);--input-text-color:var(--tw-color-dm-input-text);--input-border-color:var(--tw-color-dm-input-border);--table-border-color:var(--tw-color-dm-table-border);--table-highlight-color:var(--tw-color-dm-table-highlight)}:root{--header-height:56px;--chevron-down:url("data:image/svg+xml,");--tick:url("data:image/svg+xml,");--circle-grey-dark:url("data:image/svg+xml,");--circle-grey-light:url("data:image/svg+xml,");--circle-white:url("data:image/svg+xml,");--circle-light-blue:url("data:image/svg+xml,");scroll-behavior:auto!important;color-scheme:normal!important}:root:where([data-theme=dark],[data-theme=dark] *){color-scheme:dark!important}html,body{color:#232323!important;background-color:#f5f6fe!important;height:100%!important}:is(html,body):where([data-theme=dark],[data-theme=dark] *){color:#c9d1d9!important;background-color:#0f131a!important}a{color:var(--tw-color-brand);border-radius:var(--tw-radius-xs)}a:focus-visible{z-index:1!important;outline-style:var(--tw-outline-style)!important;outline-offset:3px!important;outline-width:3px!important;outline-color:#4696e580!important}h1{margin:calc(var(--tw-spacing)*0)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;font-size:2.5rem!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h2{margin:calc(var(--tw-spacing)*0)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;font-size:2rem!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h3{margin:calc(var(--tw-spacing)*0)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;font-size:1.75rem!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h4{margin:calc(var(--tw-spacing)*0)!important;font-size:var(--tw-text-2xl)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h5{margin:calc(var(--tw-spacing)*0)!important;font-size:var(--tw-text-xl)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h6{margin:calc(var(--tw-spacing)*0)!important;font-size:var(--tw-text-base)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}hr{margin-block:calc(var(--tw-spacing)*3)!important}p{margin:calc(var(--tw-spacing)*0)!important}code{font-family:var(--tw-font-mono)!important;font-size:var(--tw-text-sm)!important;line-height:var(--tw-leading,var(--tw-text-sm--line-height))!important;color:var(--tw-color-pink-600)!important}code:where([data-theme=dark],[data-theme=dark] *){color:var(--tw-color-pink-500)!important}:root{--header-height:56px;--footer-height:2.3rem;--footer-margin:.8rem;--aside-menu-width:260px}}@layer components;@layer utilities{.tw\:pointer-events-none{pointer-events:none!important}.tw\:sr-only{clip:rect(0,0,0,0)!important;white-space:nowrap!important;border-width:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.tw\:absolute{position:absolute!important}.tw\:fixed{position:fixed!important}.tw\:relative{position:relative!important}.tw\:sticky{position:sticky!important}.tw\:-top-1{top:calc(var(--tw-spacing)*-1)!important}.tw\:top-0{top:calc(var(--tw-spacing)*0)!important}.tw\:top-\[35px\]{top:35px!important}.tw\:top-\[50\%\]{top:50%!important}.tw\:top-full{top:100%!important}.tw\:right-0{right:calc(var(--tw-spacing)*0)!important}.tw\:right-1{right:calc(var(--tw-spacing)*1)!important}.tw\:right-1\.5{right:calc(var(--tw-spacing)*1.5)!important}.tw\:bottom-0{bottom:calc(var(--tw-spacing)*0)!important}.tw\:left-0{left:calc(var(--tw-spacing)*0)!important}.tw\:left-2{left:calc(var(--tw-spacing)*2)!important}.tw\:left-3{left:calc(var(--tw-spacing)*3)!important}.tw\:left-\[50\%\]{left:50%!important}.tw\:focus-ring{transition-property:box-shadow!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important;--tw-outline-style:none!important;outline-style:none!important}.tw\:focus-ring:focus-visible{z-index:1!important;--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important;--tw-ring-color:oklab(65.9429% -.0470676 -.133703/.5)!important}.tw\:focus-ring-danger{transition-property:box-shadow!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important;--tw-outline-style:none!important;outline-style:none!important}.tw\:focus-ring-danger:focus-visible{z-index:1!important;--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important;--tw-ring-color:oklab(59.155% .188304 .073185/.5)!important}.tw\:focus-ring-secondary{transition-property:box-shadow!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important;--tw-outline-style:none!important;outline-style:none!important}.tw\:focus-ring-secondary:focus-visible{z-index:1!important;--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important;--tw-ring-color:var(--tw-color-zinc-500)!important}@supports (color:color-mix(in lab,red,red)){.tw\:focus-ring-secondary:focus-visible{--tw-ring-color:color-mix(in oklab,var(--tw-color-zinc-500)50%,transparent)!important}}.tw\:z-10{z-index:10!important}.tw\:z-\[1040\]{z-index:1040!important}.tw\:container{width:100%!important}@media (min-width:576px){.tw\:container{max-width:576px!important}}@media (min-width:768px){.tw\:container{max-width:768px!important}}@media (min-width:992px){.tw\:container{max-width:992px!important}}@media (min-width:1200px){.tw\:container{max-width:1200px!important}}@media (min-width:1400px){.tw\:container{max-width:1400px!important}}.tw\:m-auto{margin:auto!important}.tw\:-mx-1{margin-inline:calc(var(--tw-spacing)*-1)!important}.tw\:mx-auto{margin-inline:auto!important}.tw\:mt-\(--footer-margin\){margin-top:var(--footer-margin)!important}.tw\:mt-1{margin-top:calc(var(--tw-spacing)*1)!important}.tw\:mt-3{margin-top:calc(var(--tw-spacing)*3)!important}.tw\:mt-4{margin-top:calc(var(--tw-spacing)*4)!important}.tw\:mr-1{margin-right:calc(var(--tw-spacing)*1)!important}.tw\:mr-2{margin-right:calc(var(--tw-spacing)*2)!important}.tw\:-mb-1{margin-bottom:calc(var(--tw-spacing)*-1)!important}.tw\:-mb-\[calc\(var\(--footer-height\)\+var\(--footer-margin\)\)\]{margin-bottom:calc(calc(var(--footer-height) + var(--footer-margin))*-1)!important}.tw\:mb-4{margin-bottom:calc(var(--tw-spacing)*4)!important}.tw\:ml-1{margin-left:calc(var(--tw-spacing)*1)!important}.tw\:ml-2{margin-left:calc(var(--tw-spacing)*2)!important}.tw\:ml-auto{margin-left:auto!important}.tw\:block{display:block!important}.tw\:flex{display:flex!important}.tw\:hidden{display:none!important}.tw\:inline{display:inline!important}.tw\:inline-flex{display:inline-flex!important}.tw\:h-\(--footer-height\){height:var(--footer-height)!important}.tw\:h-4{height:calc(var(--tw-spacing)*4)!important}.tw\:h-full{height:100%!important}.tw\:h-screen{height:100vh!important}.tw\:max-h-screen{max-height:100vh!important}.tw\:min-h-full{min-height:100%!important}.tw\:scroll-thin{scrollbar-width:thin!important}.tw\:scroll-thin::-webkit-scrollbar{width:6px!important}.tw\:scroll-thin::-webkit-scrollbar-thumb{border-radius:.5rem!important}.tw\:w-4{width:calc(var(--tw-spacing)*4)!important}.tw\:w-7{width:calc(var(--tw-spacing)*7)!important}.tw\:w-8{width:calc(var(--tw-spacing)*8)!important}.tw\:w-\[35px\]{width:35px!important}.tw\:w-\[40\%\]{width:40%!important}.tw\:w-\[700px\]{width:700px!important}.tw\:w-full{width:100%!important}.tw\:w-screen{width:100vw!important}.tw\:max-w-100{max-width:calc(var(--tw-spacing)*100)!important}.tw\:max-w-\[720px\]{max-width:720px!important}.tw\:max-w-\[calc\(100\%-30px\)\]{max-width:calc(100% - 30px)!important}.tw\:max-w-full{max-width:100%!important}.tw\:max-w-screen{max-width:100vw!important}.tw\:min-w-60{min-width:calc(var(--tw-spacing)*60)!important}.tw\:flex-grow{flex-grow:1!important}.tw\:translate-x-\[-50\%\]{--tw-translate-x:-50%!important;translate:var(--tw-translate-x)var(--tw-translate-y)!important}.tw\:-translate-y-4{--tw-translate-y:calc(var(--tw-spacing)*-4)!important;translate:var(--tw-translate-x)var(--tw-translate-y)!important}.tw\:translate-y-\[-50\%\]{--tw-translate-y:-50%!important;translate:var(--tw-translate-x)var(--tw-translate-y)!important}.tw\:scale-85{--tw-scale-x:85%!important;--tw-scale-y:85%!important;--tw-scale-z:85%!important;scale:var(--tw-scale-x)var(--tw-scale-y)!important}.tw\:rotate-180{rotate:180deg!important}.tw\:cursor-\[inherit\]{cursor:inherit!important}.tw\:cursor-pointer{cursor:pointer!important}.tw\:list-disc{list-style-type:disc!important}.tw\:appearance-none{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important}.tw\:flex-col{flex-direction:column!important}.tw\:items-center{align-items:center!important}.tw\:justify-between{justify-content:space-between!important}.tw\:justify-center{justify-content:center!important}.tw\:justify-end{justify-content:flex-end!important}.tw\:gap-1{gap:calc(var(--tw-spacing)*1)!important}.tw\:gap-2{gap:calc(var(--tw-spacing)*2)!important}.tw\:gap-4{gap:calc(var(--tw-spacing)*4)!important}.tw\:gap-12{gap:calc(var(--tw-spacing)*12)!important}.tw\:gap-x-1\.5{column-gap:calc(var(--tw-spacing)*1.5)!important}.tw\:gap-x-2{column-gap:calc(var(--tw-spacing)*2)!important}.tw\:gap-y-3{row-gap:calc(var(--tw-spacing)*3)!important}.tw\:gap-y-4{row-gap:calc(var(--tw-spacing)*4)!important}.tw\:truncate{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.tw\:overflow-auto{overflow:auto!important}.tw\:overflow-hidden{overflow:hidden!important}.tw\:rounded-full{border-radius:3.40282e38px!important}.tw\:rounded-md{border-radius:var(--tw-radius-md)!important}.tw\:rounded-none{border-radius:0!important}.tw\:rounded-sm{border-radius:var(--tw-radius-sm)!important}.tw\:rounded-t-md{border-top-left-radius:var(--tw-radius-md)!important;border-top-right-radius:var(--tw-radius-md)!important}.tw\:rounded-b-md{border-bottom-right-radius:var(--tw-radius-md)!important;border-bottom-left-radius:var(--tw-radius-md)!important}.tw\:border,.tw\:border-1{border-style:var(--tw-border-style)!important;border-width:1px!important}.tw\:border-y{border-block-style:var(--tw-border-style)!important;border-block-width:1px!important}.tw\:border-y-2{border-block-style:var(--tw-border-style)!important;border-block-width:2px!important}.tw\:border-t{border-top-style:var(--tw-border-style)!important;border-top-width:1px!important}.tw\:border-r-0{border-right-style:var(--tw-border-style)!important;border-right-width:0!important}.tw\:border-b,.tw\:border-b-1{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.tw\:border-b-3{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:3px!important}.tw\:border-brand{border-color:#4696e5!important}.tw\:border-danger{border-color:#dc3545!important}.tw\:border-lm-border{border-color:#00000020!important}.tw\:border-lm-input-border{border-color:#00000030!important}.tw\:border-zinc-500{border-color:var(--tw-color-zinc-500)!important}.tw\:border-b-brand{border-bottom-color:#4696e5!important}.tw\:border-b-transparent{border-bottom-color:#0000!important}.tw\:bg-brand{background-color:#4696e5!important}.tw\:bg-danger{background-color:#dc3545!important}.tw\:bg-lm-brand{background-color:var(--tw-color-lm-main)!important}.tw\:bg-lm-disabled-input{background-color:var(--tw-color-lm-secondary)!important}.tw\:bg-lm-primary{background-color:#fff!important}.tw\:bg-lm-secondary{background-color:#f5f6fe!important}.tw\:bg-transparent{background-color:#0000!important}.tw\:bg-warning{background-color:#ffc107!important}.tw\:bg-zinc-500{background-color:var(--tw-color-zinc-500)!important}.tw\:bg-linear-to-b{--tw-gradient-position:to bottom!important;background-image:linear-gradient(var(--tw-gradient-stops))!important}@supports (background-image:linear-gradient(in lab,red,red)){.tw\:bg-linear-to-b{--tw-gradient-position:to bottom in oklab!important}}.tw\:bg-\(image\:--chevron-down\){background-image:var(--chevron-down)!important}.tw\:bg-\(image\:--circle-grey-dark\){background-image:var(--circle-grey-dark)!important}.tw\:from-black\/70{--tw-gradient-from:var(--tw-color-black)!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))!important}@supports (color:color-mix(in lab,red,red)){.tw\:from-black\/70{--tw-gradient-from:color-mix(in oklab,var(--tw-color-black)70%,transparent)!important}}.tw\:to-black\/10{--tw-gradient-to:var(--tw-color-black)!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))!important}@supports (color:color-mix(in lab,red,red)){.tw\:to-black\/10{--tw-gradient-to:color-mix(in oklab,var(--tw-color-black)10%,transparent)!important}}.tw\:bg-center{background-position:50%!important}.tw\:bg-no-repeat{background-repeat:no-repeat!important}.tw\:p-2{padding:calc(var(--tw-spacing)*2)!important}.tw\:p-4{padding:calc(var(--tw-spacing)*4)!important}.tw\:p-5{padding:calc(var(--tw-spacing)*5)!important}.tw\:p-6{padding:calc(var(--tw-spacing)*6)!important}.tw\:px-1{padding-inline:calc(var(--tw-spacing)*1)!important}.tw\:px-1\.5{padding-inline:calc(var(--tw-spacing)*1.5)!important}.tw\:px-2{padding-inline:calc(var(--tw-spacing)*2)!important}.tw\:px-3{padding-inline:calc(var(--tw-spacing)*3)!important}.tw\:px-4{padding-inline:calc(var(--tw-spacing)*4)!important}.tw\:py-1{padding-block:calc(var(--tw-spacing)*1)!important}.tw\:py-1\.5{padding-block:calc(var(--tw-spacing)*1.5)!important}.tw\:py-2{padding-block:calc(var(--tw-spacing)*2)!important}.tw\:py-3{padding-block:calc(var(--tw-spacing)*3)!important}.tw\:pt-\(--header-height\){padding-top:var(--header-height)!important}.tw\:pt-2{padding-top:calc(var(--tw-spacing)*2)!important}.tw\:pt-4{padding-top:calc(var(--tw-spacing)*4)!important}.tw\:pt-8{padding-top:calc(var(--tw-spacing)*8)!important}.tw\:pr-8{padding-right:calc(var(--tw-spacing)*8)!important}.tw\:pr-9{padding-right:calc(var(--tw-spacing)*9)!important}.tw\:pr-10{padding-right:calc(var(--tw-spacing)*10)!important}.tw\:pb-\[calc\(0\.5rem-3px\)\]{padding-bottom:calc(.5rem - 3px)!important}.tw\:pb-\[calc\(var\(--footer-height\)\+var\(--footer-margin\)\)\]{padding-bottom:calc(var(--footer-height) + var(--footer-margin))!important}.tw\:pl-2{padding-left:calc(var(--tw-spacing)*2)!important}.tw\:pl-3{padding-left:calc(var(--tw-spacing)*3)!important}.tw\:pl-4{padding-left:calc(var(--tw-spacing)*4)!important}.tw\:pl-5\.5{padding-left:calc(var(--tw-spacing)*5.5)!important}.tw\:pl-7{padding-left:calc(var(--tw-spacing)*7)!important}.tw\:pl-9{padding-left:calc(var(--tw-spacing)*9)!important}.tw\:text-center{text-align:center!important}.tw\:text-left{text-align:left!important}.tw\:text-right{text-align:right!important}.tw\:text-lg{font-size:var(--tw-text-lg)!important;line-height:var(--tw-leading,var(--tw-text-lg--line-height))!important}.tw\:text-sm{font-size:var(--tw-text-sm)!important;line-height:var(--tw-leading,var(--tw-text-sm--line-height))!important}.tw\:text-xl{font-size:var(--tw-text-xl)!important;line-height:var(--tw-leading,var(--tw-text-xl--line-height))!important}.tw\:font-bold{--tw-font-weight:var(--tw-font-weight-bold)!important;font-weight:var(--tw-font-weight-bold)!important}.tw\:whitespace-nowrap{white-space:nowrap!important}.tw\:text-black{color:var(--tw-color-black)!important}.tw\:text-brand{color:#4696e5!important}.tw\:text-danger{color:#dc3545!important}.tw\:text-gray-400{color:var(--tw-color-gray-400)!important}.tw\:text-gray-500{color:var(--tw-color-gray-500)!important}.tw\:text-gray-600{color:var(--tw-color-gray-600)!important}.tw\:text-placeholder{color:#6c757d!important}.tw\:text-white{color:var(--tw-color-white)!important}.tw\:text-zinc-500{color:var(--tw-color-zinc-500)!important}.tw\:no-underline{text-decoration-line:none!important}.tw\:opacity-0{opacity:0!important}.tw\:opacity-50{opacity:.5!important}.tw\:opacity-65{opacity:.65!important}.tw\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.tw\:transition-\[background-position\]{transition-property:background-position!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:transition-\[opacity_\,_translate\]{transition-property:opacity,translate!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:transition-opacity{transition-property:opacity!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:transition-transform{transition-property:transform,translate,scale,rotate!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:duration-300{--tw-duration:.3s!important;transition-duration:.3s!important}.tw\:outline-none{--tw-outline-style:none!important;outline-style:none!important}.tw\:select-none{-webkit-user-select:none!important;user-select:none!important}.tw\:\[text-shadow\:_0_2px_4px_rgb\(0_0_0\/_0\.8\)\]{text-shadow:0 2px 4px #000c!important}.tw\:not-last\:border-b-1:not(:last-child){border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.tw\:group-focus-within\:text-lm-text:is(:where(.tw\:group):focus-within *){color:#232323!important}.tw\:group-\[\&\]\/card\:bg-lm-input:is(:where(.tw\:group\/card) *){background-color:var(--tw-color-lm-primary)!important}.tw\:backdrop\:bg-black\/50::backdrop{background-color:var(--tw-color-black)!important}@supports (color:color-mix(in lab,red,red)){.tw\:backdrop\:bg-black\/50::backdrop{background-color:color-mix(in oklab,var(--tw-color-black)50%,transparent)!important}}.tw\:before\:mr-1:before{content:var(--tw-content);margin-right:calc(var(--tw-spacing)*1)!important}.tw\:before\:font-bold:before{content:var(--tw-content);--tw-font-weight:var(--tw-font-weight-bold)!important;font-weight:var(--tw-font-weight-bold)!important}.tw\:before\:content-\[attr\(data-column\)\]:before{content:var(--tw-content);--tw-content:attr(data-column)!important;content:var(--tw-content)!important}.tw\:first\:rounded-t-md:first-child{border-top-left-radius:var(--tw-radius-md)!important;border-top-right-radius:var(--tw-radius-md)!important}.tw\:first\:rounded-l:first-child{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.tw\:last\:rounded-r:last-child{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.tw\:last\:rounded-b-md:last-child{border-bottom-right-radius:var(--tw-radius-md)!important;border-bottom-left-radius:var(--tw-radius-md)!important}.tw\:last\:border-0:last-child{border-style:var(--tw-border-style)!important;border-width:0!important}.tw\:last\:border-r:last-child{border-right-style:var(--tw-border-style)!important;border-right-width:1px!important}.tw\:checked\:bg-brand:checked{background-color:#4696e5!important}.tw\:checked\:bg-\(image\:--circle-white\):checked{background-image:var(--circle-white)!important}.tw\:checked\:bg-\(image\:--tick\):checked{background-image:var(--tick)!important}.tw\:checked\:bg-right:checked{background-position:100%!important}.tw\:focus-within\:z-10:focus-within{z-index:10!important}@media (hover:hover){.tw\:hover\:bg-lm-primary:hover{background-color:#fff!important}.tw\:hover\:bg-lm-secondary:hover{background-color:#f5f6fe!important}.tw\:hover\:text-lm-text:hover{color:#232323!important}.tw\:hover\:underline:hover{text-decoration-line:underline!important}.tw\:group-\[\&\]\/card\:hover\:bg-lm-secondary:is(:where(.tw\:group\/card) *):hover{background-color:#f5f6fe!important}}.tw\:focus-visible\:z-1:focus-visible{z-index:1!important}.tw\:focus-visible\:inset-ring-2:focus-visible{--tw-inset-ring-shadow:inset 0 0 0 2px var(--tw-inset-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.tw\:focus-visible\:inset-ring-brand\/50:focus-visible{--tw-inset-ring-color:oklab(65.9429% -.0470676 -.133703/.5)!important}.tw\:focus-visible\:not-checked\:bg-\(image\:--circle-light-blue\):focus-visible:not(:checked){background-image:var(--circle-light-blue)!important}.tw\:data-open\:translate-y-0[data-open]{--tw-translate-y:calc(var(--tw-spacing)*0)!important;translate:var(--tw-translate-x)var(--tw-translate-y)!important}.tw\:data-open\:opacity-100[data-open]{opacity:1!important}@media not all and (min-width:992px){.tw\:max-lg\:absolute{position:absolute!important}.tw\:max-lg\:border-b-0{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}}@media not all and (min-width:768px){.tw\:max-md\:flex-col{flex-direction:column!important}.tw\:max-md\:p-0{padding:calc(var(--tw-spacing)*0)!important}.tw\:max-md\:py-4{padding-block:calc(var(--tw-spacing)*4)!important}}@media (min-width:576px){.tw\:sm\:w-sm{width:var(--tw-container-sm)!important}.tw\:sm\:p-6{padding:calc(var(--tw-spacing)*6)!important}}@media (min-width:768px){.tw\:md\:ml-\(--aside-menu-width\){margin-left:var(--aside-menu-width)!important}.tw\:md\:ml-auto{margin-left:auto!important}.tw\:md\:flex{display:flex!important}.tw\:md\:max-h-56{max-height:calc(var(--tw-spacing)*56)!important}.tw\:md\:w-4xl{width:var(--tw-container-4xl)!important}.tw\:md\:w-6xl{width:var(--tw-container-6xl)!important}.tw\:md\:w-lg{width:var(--tw-container-lg)!important}.tw\:md\:flex-row{flex-direction:row!important}.tw\:md\:gap-y-8{row-gap:calc(var(--tw-spacing)*8)!important}.tw\:md\:overflow-y-auto{overflow-y:auto!important}.tw\:md\:border-l{border-left-style:var(--tw-border-style)!important;border-left-width:1px!important}.tw\:md\:px-4{padding-inline:calc(var(--tw-spacing)*4)!important}}@media (min-width:992px){.tw\:lg\:table-cell{display:table-cell!important}.tw\:lg\:table-header-group{display:table-header-group!important}.tw\:lg\:table-row{display:table-row!important}.tw\:lg\:table-row-group{display:table-row-group!important}.tw\:lg\:w-\[65\%\]{width:65%!important}.tw\:lg\:w-\[80\%\]{width:80%!important}.tw\:lg\:border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.tw\:lg\:border-b-1{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}}.tw\:before\:lg\:hidden:before{content:var(--tw-content)}@media (min-width:992px){.tw\:before\:lg\:hidden:before{display:none!important}}.tw\:dark\:border-dm-border:where([data-theme=dark],[data-theme=dark] *){border-color:#ffffff26!important}.tw\:dark\:border-dm-input-border:where([data-theme=dark],[data-theme=dark] *){border-color:var(--tw-color-dm-border)!important}.tw\:dark\:bg-dm-brand:where([data-theme=dark],[data-theme=dark] *){background-color:#0b2d4e!important}.tw\:dark\:bg-dm-disabled-input:where([data-theme=dark],[data-theme=dark] *){background-color:#1a2028!important}.tw\:dark\:bg-dm-primary:where([data-theme=dark],[data-theme=dark] *){background-color:#161b22!important}.tw\:dark\:bg-dm-secondary:where([data-theme=dark],[data-theme=dark] *){background-color:#0f131a!important}.tw\:dark\:bg-\(image\:--circle-grey-light\):where([data-theme=dark],[data-theme=dark] *){background-image:var(--circle-grey-light)!important}.tw\:dark\:text-gray-400:where([data-theme=dark],[data-theme=dark] *){color:var(--tw-color-gray-400)!important}.tw\:dark\:group-focus-within\:text-dm-text:where([data-theme=dark],[data-theme=dark] *):is(:where(.tw\:group):focus-within *){color:#c9d1d9!important}.tw\:group-\[\&\]\/card\:dark\:bg-dm-input:is(:where(.tw\:group\/card) *):where([data-theme=dark],[data-theme=dark] *){background-color:#12161c!important}@media (hover:hover){.tw\:dark\:hover\:bg-dm-primary:where([data-theme=dark],[data-theme=dark] *):hover{background-color:#161b22!important}.tw\:hover\:dark\:bg-dm-secondary:hover:where([data-theme=dark],[data-theme=dark] *){background-color:#0f131a!important}.tw\:hover\:dark\:text-dm-text:hover:where([data-theme=dark],[data-theme=dark] *){color:#c9d1d9!important}.tw\:dark\:group-\[\&\]\/card\:hover\:bg-dm-secondary:where([data-theme=dark],[data-theme=dark] *):is(:where(.tw\:group\/card) *):hover{background-color:#0f131a!important}}.tw\:highlight\:border-brand-dark:hover,.tw\:highlight\:border-brand-dark:focus-visible{border-color:#1f69c0!important}.tw\:highlight\:border-danger-dark:hover,.tw\:highlight\:border-danger-dark:focus-visible{border-color:#bb2d3b!important}.tw\:highlight\:border-zinc-600:hover,.tw\:highlight\:border-zinc-600:focus-visible{border-color:var(--tw-color-zinc-600)!important}.tw\:highlight\:bg-brand:hover,.tw\:highlight\:bg-brand:focus-visible{background-color:#4696e5!important}.tw\:highlight\:bg-brand-dark:hover,.tw\:highlight\:bg-brand-dark:focus-visible{background-color:#1f69c0!important}.tw\:highlight\:bg-danger:hover,.tw\:highlight\:bg-danger:focus-visible{background-color:#dc3545!important}.tw\:highlight\:bg-danger-dark:hover,.tw\:highlight\:bg-danger-dark:focus-visible{background-color:#bb2d3b!important}.tw\:highlight\:bg-lm-secondary:hover,.tw\:highlight\:bg-lm-secondary:focus-visible{background-color:#f5f6fe!important}.tw\:highlight\:bg-zinc-500:hover,.tw\:highlight\:bg-zinc-500:focus-visible{background-color:var(--tw-color-zinc-500)!important}.tw\:highlight\:bg-zinc-600:hover,.tw\:highlight\:bg-zinc-600:focus-visible{background-color:var(--tw-color-zinc-600)!important}.tw\:highlight\:text-brand:hover,.tw\:highlight\:text-brand:focus-visible{color:#4696e5!important}.tw\:highlight\:text-brand-dark:hover,.tw\:highlight\:text-brand-dark:focus-visible{color:#1f69c0!important}.tw\:highlight\:text-white:hover,.tw\:highlight\:text-white:focus-visible{color:var(--tw-color-white)!important}.tw\:highlight\:underline:hover,.tw\:highlight\:underline:focus-visible{text-decoration-line:underline!important}.tw\:highlight\:opacity-80:hover,.tw\:highlight\:opacity-80:focus-visible{opacity:.8!important}.tw\:dark\:highlight\:bg-dm-secondary:where([data-theme=dark],[data-theme=dark] *):hover,.tw\:dark\:highlight\:bg-dm-secondary:where([data-theme=dark],[data-theme=dark] *):focus-visible{background-color:#0f131a!important}.tw\:\[\&\]\:border-danger{border-color:#dc3545!important}.tw\:\[\&\]\:px-3{padding-inline:calc(var(--tw-spacing)*3)!important}.tw\:\[\&\]\:text-white{color:var(--tw-color-white)!important}}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}/*! +@charset "UTF-8";/*! tailwindcss v4.1.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-duration:initial;--tw-content:"";--tw-outline-style:solid}}}@layer theme{:root,:host{--tw-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--tw-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--tw-color-pink-500:oklch(65.6% .241 354.308);--tw-color-pink-600:oklch(59.2% .249 .584);--tw-color-gray-400:oklch(70.7% .022 261.325);--tw-color-gray-500:oklch(55.1% .027 264.364);--tw-color-gray-600:oklch(44.6% .03 256.802);--tw-color-zinc-500:oklch(55.2% .016 285.938);--tw-color-zinc-600:oklch(44.2% .017 285.786);--tw-color-black:#000;--tw-color-white:#fff;--tw-spacing:.25rem;--tw-container-sm:24rem;--tw-container-lg:32rem;--tw-container-4xl:56rem;--tw-container-6xl:72rem;--tw-text-sm:.875rem;--tw-text-sm--line-height:calc(1.25/.875);--tw-text-base:1rem;--tw-text-lg:1.125rem;--tw-text-lg--line-height:calc(1.75/1.125);--tw-text-xl:1.25rem;--tw-text-xl--line-height:calc(1.75/1.25);--tw-text-2xl:1.5rem;--tw-font-weight-medium:500;--tw-font-weight-bold:700;--tw-radius-xs:.125rem;--tw-radius-sm:.25rem;--tw-radius-md:.375rem;--tw-default-transition-duration:.15s;--tw-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--tw-default-font-family:var(--tw-font-sans);--tw-default-mono-font-family:var(--tw-font-mono);--tw-color-lm-main:#4696e5;--tw-color-lm-main-dark:#1f69c0;--tw-color-lm-primary:#fff;--tw-color-lm-primary-alfa:rgb(var(--tw-color-lm-primary)/.5);--tw-color-lm-secondary:#f5f6fe;--tw-color-lm-text:#232323;--tw-color-lm-border:#00000020;--tw-color-lm-table-border:#dee2e6;--tw-color-lm-active:#eee;--tw-color-lm-brand:var(--tw-color-lm-main);--tw-color-lm-input:var(--tw-color-lm-primary);--tw-color-lm-disabled-input:var(--tw-color-lm-secondary);--tw-color-lm-input-text:#495057;--tw-color-lm-input-border:#00000030;--tw-color-lm-table-highlight:#00000013;--tw-color-dm-main:#4696e5;--tw-color-dm-main-dark:#1f69c0;--tw-color-dm-primary:#161b22;--tw-color-dm-primary-alfa:rgb(var(--tw-color-dm-primary)/.8);--tw-color-dm-secondary:#0f131a;--tw-color-dm-text:#c9d1d9;--tw-color-dm-border:#ffffff26;--tw-color-dm-table-border:#393d43;--tw-color-dm-active:var(--tw-color-dm-secondary);--tw-color-dm-brand:#0b2d4e;--tw-color-dm-input:#12161c;--tw-color-dm-disabled-input:#1a2028;--tw-color-dm-input-text:var(--tw-color-dm-text);--tw-color-dm-input-border:var(--tw-color-dm-border);--tw-color-dm-table-highlight:var(--tw-color-dm-border);--tw-color-brand:#4696e5;--tw-color-brand-dark:#1f69c0;--tw-color-danger:#dc3545;--tw-color-danger-dark:#bb2d3b;--tw-color-warning:#ffc107;--tw-color-warning-dark:#ffca2c;--tw-color-placeholder:#6c757d}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--tw-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--tw-default-font-feature-settings,normal);font-variation-settings:var(--tw-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--tw-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--tw-default-mono-font-feature-settings,normal);font-variation-settings:var(--tw-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html:not([data-theme=dark]){--primary-color:var(--tw-color-lm-primary);--primary-color-alfa:var(--tw-color-lm-primary-alfa);--secondary-color:var(--tw-color-lm-secondary);--text-color:var(--tw-color-lm-text);--border-color:var(--tw-color-lm-border);--active-color:var(--tw-color-lm-active);--brand-color:var(--tw-color-lm-brand);--input-color:var(--tw-color-lm-input);--input-disabled-color:var(--tw-color-lm-disabled-input);--input-text-color:var(--tw-color-lm-input-text);--input-border-color:var(--tw-color-lm-input-border);--table-border-color:var(--tw-color-lm-table-border);--table-highlight-color:var(--tw-color-lm-table-highlight)}html[data-theme=dark]{--primary-color:var(--tw-color-dm-primary);--primary-color-alfa:var(--tw-color-dm-primary-alfa);--secondary-color:var(--tw-color-dm-secondary);--text-color:var(--tw-color-dm-text);--border-color:var(--tw-color-dm-border);--active-color:var(--tw-color-dm-active);--brand-color:var(--tw-color-dm-brand);--input-color:var(--tw-color-dm-input);--input-disabled-color:var(--tw-color-dm-disabled-input);--input-text-color:var(--tw-color-dm-input-text);--input-border-color:var(--tw-color-dm-input-border);--table-border-color:var(--tw-color-dm-table-border);--table-highlight-color:var(--tw-color-dm-table-highlight)}:root{--header-height:56px;--chevron-down:url("data:image/svg+xml,");--tick:url("data:image/svg+xml,");--circle-grey-dark:url("data:image/svg+xml,");--circle-grey-light:url("data:image/svg+xml,");--circle-white:url("data:image/svg+xml,");--circle-light-blue:url("data:image/svg+xml,");scroll-behavior:auto!important;color-scheme:normal!important}:root:where([data-theme=dark],[data-theme=dark] *){color-scheme:dark!important}html,body{color:#232323!important;background-color:#f5f6fe!important;height:100%!important}:is(html,body):where([data-theme=dark],[data-theme=dark] *){color:#c9d1d9!important;background-color:#0f131a!important}a{color:var(--tw-color-brand);border-radius:var(--tw-radius-xs)}a:focus-visible{z-index:1!important;outline-style:var(--tw-outline-style)!important;outline-offset:3px!important;outline-width:3px!important;outline-color:#4696e580!important}h1{margin:calc(var(--tw-spacing)*0)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;font-size:2.5rem!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h2{margin:calc(var(--tw-spacing)*0)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;font-size:2rem!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h3{margin:calc(var(--tw-spacing)*0)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;font-size:1.75rem!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h4{margin:calc(var(--tw-spacing)*0)!important;font-size:var(--tw-text-2xl)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h5{margin:calc(var(--tw-spacing)*0)!important;font-size:var(--tw-text-xl)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}h6{margin:calc(var(--tw-spacing)*0)!important;font-size:var(--tw-text-base)!important;--tw-font-weight:var(--tw-font-weight-medium)!important;line-height:1.2!important;font-weight:var(--tw-font-weight-medium)!important}hr{margin-block:calc(var(--tw-spacing)*3)!important}p{margin:calc(var(--tw-spacing)*0)!important}code{font-family:var(--tw-font-mono)!important;font-size:var(--tw-text-sm)!important;line-height:var(--tw-leading,var(--tw-text-sm--line-height))!important;color:var(--tw-color-pink-600)!important}code:where([data-theme=dark],[data-theme=dark] *){color:var(--tw-color-pink-500)!important}:root{--header-height:56px;--footer-height:2.3rem;--footer-margin:.8rem;--aside-menu-width:260px}}@layer components;@layer utilities{.tw\:pointer-events-none{pointer-events:none!important}.tw\:sr-only{clip:rect(0,0,0,0)!important;white-space:nowrap!important;border-width:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.tw\:absolute{position:absolute!important}.tw\:fixed{position:fixed!important}.tw\:relative{position:relative!important}.tw\:sticky{position:sticky!important}.tw\:-top-1{top:calc(var(--tw-spacing)*-1)!important}.tw\:top-0{top:calc(var(--tw-spacing)*0)!important}.tw\:top-\[35px\]{top:35px!important}.tw\:top-\[50\%\]{top:50%!important}.tw\:top-full{top:100%!important}.tw\:right-0{right:calc(var(--tw-spacing)*0)!important}.tw\:right-1{right:calc(var(--tw-spacing)*1)!important}.tw\:right-1\.5{right:calc(var(--tw-spacing)*1.5)!important}.tw\:bottom-0{bottom:calc(var(--tw-spacing)*0)!important}.tw\:left-0{left:calc(var(--tw-spacing)*0)!important}.tw\:left-2{left:calc(var(--tw-spacing)*2)!important}.tw\:left-3{left:calc(var(--tw-spacing)*3)!important}.tw\:left-\[50\%\]{left:50%!important}.tw\:focus-ring{transition-property:box-shadow!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important;--tw-outline-style:none!important;outline-style:none!important}.tw\:focus-ring:focus-visible{z-index:1!important;--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important;--tw-ring-color:oklab(65.9429% -.0470676 -.133703/.5)!important}.tw\:focus-ring-danger{transition-property:box-shadow!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important;--tw-outline-style:none!important;outline-style:none!important}.tw\:focus-ring-danger:focus-visible{z-index:1!important;--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important;--tw-ring-color:oklab(59.155% .188304 .073185/.5)!important}.tw\:focus-ring-secondary{transition-property:box-shadow!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important;--tw-outline-style:none!important;outline-style:none!important}.tw\:focus-ring-secondary:focus-visible{z-index:1!important;--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important;--tw-ring-color:var(--tw-color-zinc-500)!important}@supports (color:color-mix(in lab,red,red)){.tw\:focus-ring-secondary:focus-visible{--tw-ring-color:color-mix(in oklab,var(--tw-color-zinc-500)50%,transparent)!important}}.tw\:z-10{z-index:10!important}.tw\:z-\[1040\]{z-index:1040!important}.tw\:container{width:100%!important}@media (min-width:576px){.tw\:container{max-width:576px!important}}@media (min-width:768px){.tw\:container{max-width:768px!important}}@media (min-width:992px){.tw\:container{max-width:992px!important}}@media (min-width:1200px){.tw\:container{max-width:1200px!important}}@media (min-width:1400px){.tw\:container{max-width:1400px!important}}.tw\:m-auto{margin:auto!important}.tw\:-mx-1{margin-inline:calc(var(--tw-spacing)*-1)!important}.tw\:mx-auto{margin-inline:auto!important}.tw\:mt-\(--footer-margin\){margin-top:var(--footer-margin)!important}.tw\:mt-0\.5{margin-top:calc(var(--tw-spacing)*.5)!important}.tw\:mt-1{margin-top:calc(var(--tw-spacing)*1)!important}.tw\:mt-3{margin-top:calc(var(--tw-spacing)*3)!important}.tw\:mt-4{margin-top:calc(var(--tw-spacing)*4)!important}.tw\:mr-1{margin-right:calc(var(--tw-spacing)*1)!important}.tw\:mr-2{margin-right:calc(var(--tw-spacing)*2)!important}.tw\:-mb-1{margin-bottom:calc(var(--tw-spacing)*-1)!important}.tw\:-mb-\[calc\(var\(--footer-height\)\+var\(--footer-margin\)\)\]{margin-bottom:calc(calc(var(--footer-height) + var(--footer-margin))*-1)!important}.tw\:mb-4{margin-bottom:calc(var(--tw-spacing)*4)!important}.tw\:ml-1{margin-left:calc(var(--tw-spacing)*1)!important}.tw\:ml-2{margin-left:calc(var(--tw-spacing)*2)!important}.tw\:ml-auto{margin-left:auto!important}.tw\:block{display:block!important}.tw\:flex{display:flex!important}.tw\:hidden{display:none!important}.tw\:inline{display:inline!important}.tw\:inline-flex{display:inline-flex!important}.tw\:h-\(--footer-height\){height:var(--footer-height)!important}.tw\:h-4{height:calc(var(--tw-spacing)*4)!important}.tw\:h-full{height:100%!important}.tw\:h-screen{height:100vh!important}.tw\:max-h-screen{max-height:100vh!important}.tw\:min-h-full{min-height:100%!important}.tw\:scroll-thin{scrollbar-width:thin!important}.tw\:scroll-thin::-webkit-scrollbar{width:6px!important}.tw\:scroll-thin::-webkit-scrollbar-thumb{border-radius:.5rem!important}.tw\:w-4{width:calc(var(--tw-spacing)*4)!important}.tw\:w-7{width:calc(var(--tw-spacing)*7)!important}.tw\:w-8{width:calc(var(--tw-spacing)*8)!important}.tw\:w-\[35px\]{width:35px!important}.tw\:w-\[40\%\]{width:40%!important}.tw\:w-\[700px\]{width:700px!important}.tw\:w-full{width:100%!important}.tw\:w-screen{width:100vw!important}.tw\:max-w-100{max-width:calc(var(--tw-spacing)*100)!important}.tw\:max-w-\[720px\]{max-width:720px!important}.tw\:max-w-\[calc\(100\%-30px\)\]{max-width:calc(100% - 30px)!important}.tw\:max-w-full{max-width:100%!important}.tw\:max-w-screen{max-width:100vw!important}.tw\:min-w-60{min-width:calc(var(--tw-spacing)*60)!important}.tw\:flex-grow{flex-grow:1!important}.tw\:translate-x-\[-50\%\]{--tw-translate-x:-50%!important;translate:var(--tw-translate-x)var(--tw-translate-y)!important}.tw\:-translate-y-4{--tw-translate-y:calc(var(--tw-spacing)*-4)!important;translate:var(--tw-translate-x)var(--tw-translate-y)!important}.tw\:translate-y-\[-50\%\]{--tw-translate-y:-50%!important;translate:var(--tw-translate-x)var(--tw-translate-y)!important}.tw\:scale-85{--tw-scale-x:85%!important;--tw-scale-y:85%!important;--tw-scale-z:85%!important;scale:var(--tw-scale-x)var(--tw-scale-y)!important}.tw\:rotate-180{rotate:180deg!important}.tw\:cursor-\[inherit\]{cursor:inherit!important}.tw\:cursor-pointer{cursor:pointer!important}.tw\:list-disc{list-style-type:disc!important}.tw\:appearance-none{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important}.tw\:flex-col{flex-direction:column!important}.tw\:items-center{align-items:center!important}.tw\:justify-between{justify-content:space-between!important}.tw\:justify-center{justify-content:center!important}.tw\:justify-end{justify-content:flex-end!important}.tw\:gap-0\.5{gap:calc(var(--tw-spacing)*.5)!important}.tw\:gap-1{gap:calc(var(--tw-spacing)*1)!important}.tw\:gap-2{gap:calc(var(--tw-spacing)*2)!important}.tw\:gap-4{gap:calc(var(--tw-spacing)*4)!important}.tw\:gap-12{gap:calc(var(--tw-spacing)*12)!important}.tw\:gap-x-1\.5{column-gap:calc(var(--tw-spacing)*1.5)!important}.tw\:gap-x-2{column-gap:calc(var(--tw-spacing)*2)!important}.tw\:gap-y-3{row-gap:calc(var(--tw-spacing)*3)!important}.tw\:gap-y-4{row-gap:calc(var(--tw-spacing)*4)!important}.tw\:truncate{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.tw\:overflow-auto{overflow:auto!important}.tw\:overflow-hidden{overflow:hidden!important}.tw\:rounded-full{border-radius:3.40282e38px!important}.tw\:rounded-md{border-radius:var(--tw-radius-md)!important}.tw\:rounded-none{border-radius:0!important}.tw\:rounded-sm{border-radius:var(--tw-radius-sm)!important}.tw\:rounded-t-md{border-top-left-radius:var(--tw-radius-md)!important;border-top-right-radius:var(--tw-radius-md)!important}.tw\:rounded-b-md{border-bottom-right-radius:var(--tw-radius-md)!important;border-bottom-left-radius:var(--tw-radius-md)!important}.tw\:border,.tw\:border-1{border-style:var(--tw-border-style)!important;border-width:1px!important}.tw\:border-y{border-block-style:var(--tw-border-style)!important;border-block-width:1px!important}.tw\:border-y-2{border-block-style:var(--tw-border-style)!important;border-block-width:2px!important}.tw\:border-t{border-top-style:var(--tw-border-style)!important;border-top-width:1px!important}.tw\:border-r-0{border-right-style:var(--tw-border-style)!important;border-right-width:0!important}.tw\:border-b,.tw\:border-b-1{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.tw\:border-b-3{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:3px!important}.tw\:border-brand{border-color:#4696e5!important}.tw\:border-danger{border-color:#dc3545!important}.tw\:border-lm-border{border-color:#00000020!important}.tw\:border-lm-input-border{border-color:#00000030!important}.tw\:border-zinc-500{border-color:var(--tw-color-zinc-500)!important}.tw\:border-b-brand{border-bottom-color:#4696e5!important}.tw\:border-b-transparent{border-bottom-color:#0000!important}.tw\:bg-brand{background-color:#4696e5!important}.tw\:bg-danger{background-color:#dc3545!important}.tw\:bg-lm-brand{background-color:var(--tw-color-lm-main)!important}.tw\:bg-lm-disabled-input{background-color:var(--tw-color-lm-secondary)!important}.tw\:bg-lm-primary{background-color:#fff!important}.tw\:bg-lm-secondary{background-color:#f5f6fe!important}.tw\:bg-transparent{background-color:#0000!important}.tw\:bg-warning{background-color:#ffc107!important}.tw\:bg-zinc-500{background-color:var(--tw-color-zinc-500)!important}.tw\:bg-linear-to-b{--tw-gradient-position:to bottom!important;background-image:linear-gradient(var(--tw-gradient-stops))!important}@supports (background-image:linear-gradient(in lab,red,red)){.tw\:bg-linear-to-b{--tw-gradient-position:to bottom in oklab!important}}.tw\:bg-\(image\:--chevron-down\){background-image:var(--chevron-down)!important}.tw\:bg-\(image\:--circle-grey-dark\){background-image:var(--circle-grey-dark)!important}.tw\:from-black\/70{--tw-gradient-from:var(--tw-color-black)!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))!important}@supports (color:color-mix(in lab,red,red)){.tw\:from-black\/70{--tw-gradient-from:color-mix(in oklab,var(--tw-color-black)70%,transparent)!important}}.tw\:to-black\/10{--tw-gradient-to:var(--tw-color-black)!important;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))!important}@supports (color:color-mix(in lab,red,red)){.tw\:to-black\/10{--tw-gradient-to:color-mix(in oklab,var(--tw-color-black)10%,transparent)!important}}.tw\:bg-center{background-position:50%!important}.tw\:bg-no-repeat{background-repeat:no-repeat!important}.tw\:p-2{padding:calc(var(--tw-spacing)*2)!important}.tw\:p-4{padding:calc(var(--tw-spacing)*4)!important}.tw\:p-5{padding:calc(var(--tw-spacing)*5)!important}.tw\:p-6{padding:calc(var(--tw-spacing)*6)!important}.tw\:px-1{padding-inline:calc(var(--tw-spacing)*1)!important}.tw\:px-1\.5{padding-inline:calc(var(--tw-spacing)*1.5)!important}.tw\:px-2{padding-inline:calc(var(--tw-spacing)*2)!important}.tw\:px-3{padding-inline:calc(var(--tw-spacing)*3)!important}.tw\:px-4{padding-inline:calc(var(--tw-spacing)*4)!important}.tw\:py-1{padding-block:calc(var(--tw-spacing)*1)!important}.tw\:py-1\.5{padding-block:calc(var(--tw-spacing)*1.5)!important}.tw\:py-2{padding-block:calc(var(--tw-spacing)*2)!important}.tw\:py-3{padding-block:calc(var(--tw-spacing)*3)!important}.tw\:pt-\(--header-height\){padding-top:var(--header-height)!important}.tw\:pt-2{padding-top:calc(var(--tw-spacing)*2)!important}.tw\:pt-4{padding-top:calc(var(--tw-spacing)*4)!important}.tw\:pt-8{padding-top:calc(var(--tw-spacing)*8)!important}.tw\:pr-8{padding-right:calc(var(--tw-spacing)*8)!important}.tw\:pr-9{padding-right:calc(var(--tw-spacing)*9)!important}.tw\:pr-10{padding-right:calc(var(--tw-spacing)*10)!important}.tw\:pb-\[calc\(0\.5rem-3px\)\]{padding-bottom:calc(.5rem - 3px)!important}.tw\:pb-\[calc\(var\(--footer-height\)\+var\(--footer-margin\)\)\]{padding-bottom:calc(var(--footer-height) + var(--footer-margin))!important}.tw\:pl-2{padding-left:calc(var(--tw-spacing)*2)!important}.tw\:pl-3{padding-left:calc(var(--tw-spacing)*3)!important}.tw\:pl-4{padding-left:calc(var(--tw-spacing)*4)!important}.tw\:pl-5\.5{padding-left:calc(var(--tw-spacing)*5.5)!important}.tw\:pl-7{padding-left:calc(var(--tw-spacing)*7)!important}.tw\:pl-9{padding-left:calc(var(--tw-spacing)*9)!important}.tw\:text-center{text-align:center!important}.tw\:text-left{text-align:left!important}.tw\:text-right{text-align:right!important}.tw\:text-lg{font-size:var(--tw-text-lg)!important;line-height:var(--tw-leading,var(--tw-text-lg--line-height))!important}.tw\:text-sm{font-size:var(--tw-text-sm)!important;line-height:var(--tw-leading,var(--tw-text-sm--line-height))!important}.tw\:text-xl{font-size:var(--tw-text-xl)!important;line-height:var(--tw-leading,var(--tw-text-xl--line-height))!important}.tw\:font-bold{--tw-font-weight:var(--tw-font-weight-bold)!important;font-weight:var(--tw-font-weight-bold)!important}.tw\:whitespace-nowrap{white-space:nowrap!important}.tw\:text-black{color:var(--tw-color-black)!important}.tw\:text-brand{color:#4696e5!important}.tw\:text-danger{color:#dc3545!important}.tw\:text-gray-400{color:var(--tw-color-gray-400)!important}.tw\:text-gray-500{color:var(--tw-color-gray-500)!important}.tw\:text-gray-600{color:var(--tw-color-gray-600)!important}.tw\:text-placeholder{color:#6c757d!important}.tw\:text-white{color:var(--tw-color-white)!important}.tw\:text-zinc-500{color:var(--tw-color-zinc-500)!important}.tw\:no-underline{text-decoration-line:none!important}.tw\:opacity-0{opacity:0!important}.tw\:opacity-50{opacity:.5!important}.tw\:opacity-65{opacity:.65!important}.tw\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.tw\:transition-\[background-position\]{transition-property:background-position!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:transition-\[opacity_\,_translate\]{transition-property:opacity,translate!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:transition-opacity{transition-property:opacity!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:transition-transform{transition-property:transform,translate,scale,rotate!important;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--tw-default-transition-duration))!important}.tw\:duration-300{--tw-duration:.3s!important;transition-duration:.3s!important}.tw\:outline-none{--tw-outline-style:none!important;outline-style:none!important}.tw\:select-none{-webkit-user-select:none!important;user-select:none!important}.tw\:\[text-shadow\:_0_2px_4px_rgb\(0_0_0\/_0\.8\)\]{text-shadow:0 2px 4px #000c!important}.tw\:not-last\:border-b-1:not(:last-child){border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.tw\:group-focus-within\:text-lm-text:is(:where(.tw\:group):focus-within *){color:#232323!important}.tw\:group-\[\&\]\/card\:bg-lm-input:is(:where(.tw\:group\/card) *){background-color:var(--tw-color-lm-primary)!important}.tw\:backdrop\:bg-black\/50::backdrop{background-color:var(--tw-color-black)!important}@supports (color:color-mix(in lab,red,red)){.tw\:backdrop\:bg-black\/50::backdrop{background-color:color-mix(in oklab,var(--tw-color-black)50%,transparent)!important}}.tw\:before\:mr-1:before{content:var(--tw-content);margin-right:calc(var(--tw-spacing)*1)!important}.tw\:before\:font-bold:before{content:var(--tw-content);--tw-font-weight:var(--tw-font-weight-bold)!important;font-weight:var(--tw-font-weight-bold)!important}.tw\:before\:content-\[attr\(data-column\)\]:before{content:var(--tw-content);--tw-content:attr(data-column)!important;content:var(--tw-content)!important}.tw\:first\:rounded-t-md:first-child{border-top-left-radius:var(--tw-radius-md)!important;border-top-right-radius:var(--tw-radius-md)!important}.tw\:first\:rounded-l:first-child{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.tw\:last\:rounded-r:last-child{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.tw\:last\:rounded-b-md:last-child{border-bottom-right-radius:var(--tw-radius-md)!important;border-bottom-left-radius:var(--tw-radius-md)!important}.tw\:last\:border-0:last-child{border-style:var(--tw-border-style)!important;border-width:0!important}.tw\:last\:border-r:last-child{border-right-style:var(--tw-border-style)!important;border-right-width:1px!important}.tw\:checked\:bg-brand:checked{background-color:#4696e5!important}.tw\:checked\:bg-\(image\:--circle-white\):checked{background-image:var(--circle-white)!important}.tw\:checked\:bg-\(image\:--tick\):checked{background-image:var(--tick)!important}.tw\:checked\:bg-right:checked{background-position:100%!important}.tw\:focus-within\:z-10:focus-within{z-index:10!important}@media (hover:hover){.tw\:hover\:bg-lm-primary:hover{background-color:#fff!important}.tw\:hover\:bg-lm-secondary:hover{background-color:#f5f6fe!important}.tw\:hover\:text-lm-text:hover{color:#232323!important}.tw\:hover\:underline:hover{text-decoration-line:underline!important}.tw\:group-\[\&\]\/card\:hover\:bg-lm-secondary:is(:where(.tw\:group\/card) *):hover{background-color:#f5f6fe!important}}.tw\:focus-visible\:z-1:focus-visible{z-index:1!important}.tw\:focus-visible\:inset-ring-2:focus-visible{--tw-inset-ring-shadow:inset 0 0 0 2px var(--tw-inset-ring-color,currentcolor)!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.tw\:focus-visible\:inset-ring-brand\/50:focus-visible{--tw-inset-ring-color:oklab(65.9429% -.0470676 -.133703/.5)!important}.tw\:focus-visible\:not-checked\:bg-\(image\:--circle-light-blue\):focus-visible:not(:checked){background-image:var(--circle-light-blue)!important}.tw\:data-open\:translate-y-0[data-open]{--tw-translate-y:calc(var(--tw-spacing)*0)!important;translate:var(--tw-translate-x)var(--tw-translate-y)!important}.tw\:data-open\:opacity-100[data-open]{opacity:1!important}@media not all and (min-width:992px){.tw\:max-lg\:absolute{position:absolute!important}.tw\:max-lg\:border-b-0{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}}@media not all and (min-width:768px){.tw\:max-md\:flex-col{flex-direction:column!important}.tw\:max-md\:p-0{padding:calc(var(--tw-spacing)*0)!important}.tw\:max-md\:py-4{padding-block:calc(var(--tw-spacing)*4)!important}}@media (min-width:576px){.tw\:sm\:w-sm{width:var(--tw-container-sm)!important}.tw\:sm\:p-6{padding:calc(var(--tw-spacing)*6)!important}}@media (min-width:768px){.tw\:md\:ml-\(--aside-menu-width\){margin-left:var(--aside-menu-width)!important}.tw\:md\:ml-auto{margin-left:auto!important}.tw\:md\:flex{display:flex!important}.tw\:md\:max-h-56{max-height:calc(var(--tw-spacing)*56)!important}.tw\:md\:w-4xl{width:var(--tw-container-4xl)!important}.tw\:md\:w-6xl{width:var(--tw-container-6xl)!important}.tw\:md\:w-lg{width:var(--tw-container-lg)!important}.tw\:md\:flex-row{flex-direction:row!important}.tw\:md\:gap-y-8{row-gap:calc(var(--tw-spacing)*8)!important}.tw\:md\:overflow-y-auto{overflow-y:auto!important}.tw\:md\:border-l{border-left-style:var(--tw-border-style)!important;border-left-width:1px!important}.tw\:md\:px-4{padding-inline:calc(var(--tw-spacing)*4)!important}}@media (min-width:992px){.tw\:lg\:table-cell{display:table-cell!important}.tw\:lg\:table-header-group{display:table-header-group!important}.tw\:lg\:table-row{display:table-row!important}.tw\:lg\:table-row-group{display:table-row-group!important}.tw\:lg\:w-\[65\%\]{width:65%!important}.tw\:lg\:w-\[80\%\]{width:80%!important}.tw\:lg\:border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.tw\:lg\:border-b-1{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}}.tw\:before\:lg\:hidden:before{content:var(--tw-content)}@media (min-width:992px){.tw\:before\:lg\:hidden:before{display:none!important}}.tw\:dark\:border-dm-border:where([data-theme=dark],[data-theme=dark] *){border-color:#ffffff26!important}.tw\:dark\:border-dm-input-border:where([data-theme=dark],[data-theme=dark] *){border-color:var(--tw-color-dm-border)!important}.tw\:dark\:bg-dm-brand:where([data-theme=dark],[data-theme=dark] *){background-color:#0b2d4e!important}.tw\:dark\:bg-dm-disabled-input:where([data-theme=dark],[data-theme=dark] *){background-color:#1a2028!important}.tw\:dark\:bg-dm-primary:where([data-theme=dark],[data-theme=dark] *){background-color:#161b22!important}.tw\:dark\:bg-dm-secondary:where([data-theme=dark],[data-theme=dark] *){background-color:#0f131a!important}.tw\:dark\:bg-\(image\:--circle-grey-light\):where([data-theme=dark],[data-theme=dark] *){background-image:var(--circle-grey-light)!important}.tw\:dark\:text-gray-400:where([data-theme=dark],[data-theme=dark] *){color:var(--tw-color-gray-400)!important}.tw\:dark\:group-focus-within\:text-dm-text:where([data-theme=dark],[data-theme=dark] *):is(:where(.tw\:group):focus-within *){color:#c9d1d9!important}.tw\:group-\[\&\]\/card\:dark\:bg-dm-input:is(:where(.tw\:group\/card) *):where([data-theme=dark],[data-theme=dark] *){background-color:#12161c!important}@media (hover:hover){.tw\:dark\:hover\:bg-dm-primary:where([data-theme=dark],[data-theme=dark] *):hover{background-color:#161b22!important}.tw\:hover\:dark\:bg-dm-secondary:hover:where([data-theme=dark],[data-theme=dark] *){background-color:#0f131a!important}.tw\:hover\:dark\:text-dm-text:hover:where([data-theme=dark],[data-theme=dark] *){color:#c9d1d9!important}.tw\:dark\:group-\[\&\]\/card\:hover\:bg-dm-secondary:where([data-theme=dark],[data-theme=dark] *):is(:where(.tw\:group\/card) *):hover{background-color:#0f131a!important}}.tw\:highlight\:border-brand-dark:hover,.tw\:highlight\:border-brand-dark:focus-visible{border-color:#1f69c0!important}.tw\:highlight\:border-danger-dark:hover,.tw\:highlight\:border-danger-dark:focus-visible{border-color:#bb2d3b!important}.tw\:highlight\:border-zinc-600:hover,.tw\:highlight\:border-zinc-600:focus-visible{border-color:var(--tw-color-zinc-600)!important}.tw\:highlight\:bg-brand:hover,.tw\:highlight\:bg-brand:focus-visible{background-color:#4696e5!important}.tw\:highlight\:bg-brand-dark:hover,.tw\:highlight\:bg-brand-dark:focus-visible{background-color:#1f69c0!important}.tw\:highlight\:bg-danger:hover,.tw\:highlight\:bg-danger:focus-visible{background-color:#dc3545!important}.tw\:highlight\:bg-danger-dark:hover,.tw\:highlight\:bg-danger-dark:focus-visible{background-color:#bb2d3b!important}.tw\:highlight\:bg-lm-secondary:hover,.tw\:highlight\:bg-lm-secondary:focus-visible{background-color:#f5f6fe!important}.tw\:highlight\:bg-zinc-500:hover,.tw\:highlight\:bg-zinc-500:focus-visible{background-color:var(--tw-color-zinc-500)!important}.tw\:highlight\:bg-zinc-600:hover,.tw\:highlight\:bg-zinc-600:focus-visible{background-color:var(--tw-color-zinc-600)!important}.tw\:highlight\:text-brand:hover,.tw\:highlight\:text-brand:focus-visible{color:#4696e5!important}.tw\:highlight\:text-brand-dark:hover,.tw\:highlight\:text-brand-dark:focus-visible{color:#1f69c0!important}.tw\:highlight\:text-white:hover,.tw\:highlight\:text-white:focus-visible{color:var(--tw-color-white)!important}.tw\:highlight\:underline:hover,.tw\:highlight\:underline:focus-visible{text-decoration-line:underline!important}.tw\:highlight\:opacity-80:hover,.tw\:highlight\:opacity-80:focus-visible{opacity:.8!important}.tw\:dark\:highlight\:bg-dm-secondary:where([data-theme=dark],[data-theme=dark] *):hover,.tw\:dark\:highlight\:bg-dm-secondary:where([data-theme=dark],[data-theme=dark] *):focus-visible{background-color:#0f131a!important}.tw\:\[\&\]\:border-danger{border-color:#dc3545!important}.tw\:\[\&\]\:px-3{padding-inline:calc(var(--tw-spacing)*3)!important}.tw\:\[\&\]\:text-white{color:var(--tw-color-white)!important}}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}/*! * Bootstrap v5.2.3 (https://getbootstrap.com/) * Copyright 2011-2022 The Bootstrap Authors * Copyright 2011-2022 Twitter, Inc. diff --git a/feature/server-credentials/index.html b/feature/server-credentials/index.html index 46b8c5dd..ac3eca65 100644 --- a/feature/server-credentials/index.html +++ b/feature/server-credentials/index.html @@ -79,8 +79,8 @@ Shlink — The URL shortener - - + +