@kuadrant/kuadrant-backstage-plugin-frontend 0.0.2-dev-24d0757 → 0.0.2-dev-7d09bfa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ApiAccessCard/ApiAccessCard.esm.js +229 -11
- package/dist/components/ApiAccessCard/ApiAccessCard.esm.js.map +1 -1
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js +15 -151
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js.map +1 -1
- package/dist/components/ApiProductDetailPage/ApiProductDetailPage.esm.js +25 -6
- package/dist/components/ApiProductDetailPage/ApiProductDetailPage.esm.js.map +1 -1
- package/dist/components/ApiProductDetails/ApiProductDetails.esm.js +6 -1
- package/dist/components/ApiProductDetails/ApiProductDetails.esm.js.map +1 -1
- package/dist/components/ApiProductInfoCard/ApiProductInfoCard.esm.js +15 -2
- package/dist/components/ApiProductInfoCard/ApiProductInfoCard.esm.js.map +1 -1
- package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js +2 -4
- package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js.map +1 -1
- package/dist/components/OidcProviderCard/OidcProviderCard.esm.js +23 -0
- package/dist/components/OidcProviderCard/OidcProviderCard.esm.js.map +1 -0
- package/dist/components/RequestAccessDialog/RequestAccessDialog.esm.js +167 -0
- package/dist/components/RequestAccessDialog/RequestAccessDialog.esm.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.esm.js +1 -1
- package/dist/plugin.esm.js +1 -9
- package/dist/plugin.esm.js.map +1 -1
- package/dist/utils/validation.esm.js.map +1 -1
- package/dist-scalprum/configSchema.json +27 -1
- package/dist-scalprum/internal.plugin-kuadrant.5d9e1e73c7f21bbed39a.js +2 -0
- package/dist-scalprum/internal.plugin-kuadrant.5d9e1e73c7f21bbed39a.js.map +1 -0
- package/dist-scalprum/plugin-manifest.json +2 -2
- package/dist-scalprum/static/1994.19e6a1c5.chunk.js +3 -0
- package/dist-scalprum/static/1994.19e6a1c5.chunk.js.map +1 -0
- package/dist-scalprum/static/{2628.6619bf8b.chunk.js → 2628.0605e07f.chunk.js} +3 -3
- package/dist-scalprum/static/2628.0605e07f.chunk.js.map +1 -0
- package/dist-scalprum/static/2752.df63f31c.chunk.js +2 -0
- package/dist-scalprum/static/2752.df63f31c.chunk.js.map +1 -0
- package/dist-scalprum/static/2822.27a4ac5b.chunk.js +2 -0
- package/dist-scalprum/static/2822.27a4ac5b.chunk.js.map +1 -0
- package/dist-scalprum/static/2967.8d9c1b1f.chunk.js +2 -0
- package/dist-scalprum/static/2967.8d9c1b1f.chunk.js.map +1 -0
- package/dist-scalprum/static/{3097.4bd6b35f.chunk.js → 3097.582b68d3.chunk.js} +2 -2
- package/dist-scalprum/static/{3097.4bd6b35f.chunk.js.map → 3097.582b68d3.chunk.js.map} +1 -1
- package/dist-scalprum/static/327.cd6b3fee.chunk.js +2 -0
- package/dist-scalprum/static/327.cd6b3fee.chunk.js.map +1 -0
- package/dist-scalprum/static/3459.a7c29521.chunk.js +2 -0
- package/dist-scalprum/static/3459.a7c29521.chunk.js.map +1 -0
- package/dist-scalprum/static/3584.c820a5c7.chunk.js +2 -0
- package/dist-scalprum/static/3584.c820a5c7.chunk.js.map +1 -0
- package/dist-scalprum/static/3587.490690d6.chunk.js +2 -0
- package/dist-scalprum/static/3587.490690d6.chunk.js.map +1 -0
- package/dist-scalprum/static/{3647.b96f9b3e.chunk.js → 3647.67079e5f.chunk.js} +2 -2
- package/dist-scalprum/static/{3647.b96f9b3e.chunk.js.map → 3647.67079e5f.chunk.js.map} +1 -1
- package/dist-scalprum/static/3650.4f0dc550.chunk.js +2 -0
- package/dist-scalprum/static/3650.4f0dc550.chunk.js.map +1 -0
- package/dist-scalprum/static/3947.7458971d.chunk.js +2 -0
- package/dist-scalprum/static/3947.7458971d.chunk.js.map +1 -0
- package/dist-scalprum/static/3984.7bc07774.chunk.js +2 -0
- package/dist-scalprum/static/3984.7bc07774.chunk.js.map +1 -0
- package/dist-scalprum/static/4302.9a59485e.chunk.js +2 -0
- package/dist-scalprum/static/4302.9a59485e.chunk.js.map +1 -0
- package/dist-scalprum/static/441.f708f1e0.chunk.js +2 -0
- package/dist-scalprum/static/441.f708f1e0.chunk.js.map +1 -0
- package/dist-scalprum/static/4611.0d064cdf.chunk.js +2 -0
- package/dist-scalprum/static/4611.0d064cdf.chunk.js.map +1 -0
- package/dist-scalprum/static/4651.c85cecc4.chunk.js +2 -0
- package/dist-scalprum/static/4651.c85cecc4.chunk.js.map +1 -0
- package/dist-scalprum/static/{4682.6959fcd1.chunk.js → 4682.3c7098a8.chunk.js} +2 -2
- package/dist-scalprum/static/{4682.6959fcd1.chunk.js.map → 4682.3c7098a8.chunk.js.map} +1 -1
- package/dist-scalprum/static/501.87de76da.chunk.js +3 -0
- package/dist-scalprum/static/501.87de76da.chunk.js.LICENSE.txt +21 -0
- package/dist-scalprum/static/501.87de76da.chunk.js.map +1 -0
- package/dist-scalprum/static/{5010.a4aa0f8e.chunk.js → 5010.2228c754.chunk.js} +3 -3
- package/dist-scalprum/static/{5010.a4aa0f8e.chunk.js.map → 5010.2228c754.chunk.js.map} +1 -1
- package/dist-scalprum/static/5203.43732b3f.chunk.js +2 -0
- package/dist-scalprum/static/5203.43732b3f.chunk.js.map +1 -0
- package/dist-scalprum/static/5235.2a59dc45.chunk.js +2 -0
- package/dist-scalprum/static/5235.2a59dc45.chunk.js.map +1 -0
- package/dist-scalprum/static/5453.b3ee2392.chunk.js +2 -0
- package/dist-scalprum/static/5453.b3ee2392.chunk.js.map +1 -0
- package/dist-scalprum/static/{7556.aa8a002f.chunk.js → 5568.5dbce633.chunk.js} +3 -3
- package/dist-scalprum/static/{3466.43dfe991.chunk.js.LICENSE.txt → 5568.5dbce633.chunk.js.LICENSE.txt} +9 -0
- package/dist-scalprum/static/5568.5dbce633.chunk.js.map +1 -0
- package/dist-scalprum/static/6272.ef31cb1c.chunk.js +2 -0
- package/dist-scalprum/static/6272.ef31cb1c.chunk.js.map +1 -0
- package/dist-scalprum/static/6371.c4899d73.chunk.js +3 -0
- package/dist-scalprum/static/6371.c4899d73.chunk.js.map +1 -0
- package/dist-scalprum/static/6386.6386.ce38cef3.css +5 -0
- package/dist-scalprum/static/6386.6386.ce38cef3.css.map +1 -0
- package/dist-scalprum/static/6386.903891f3.chunk.js +3 -0
- package/dist-scalprum/static/6386.903891f3.chunk.js.LICENSE.txt +26 -0
- package/dist-scalprum/static/6386.903891f3.chunk.js.map +1 -0
- package/dist-scalprum/static/65.0e01be7c.chunk.js +2 -0
- package/dist-scalprum/static/65.0e01be7c.chunk.js.map +1 -0
- package/dist-scalprum/static/6753.76832e72.chunk.js +2 -0
- package/dist-scalprum/static/6753.76832e72.chunk.js.map +1 -0
- package/dist-scalprum/static/{8563.7e068fb0.chunk.js → 6763.d6cd937f.chunk.js} +3 -3
- package/dist-scalprum/static/6763.d6cd937f.chunk.js.map +1 -0
- package/dist-scalprum/static/{6800.736d5da3.chunk.js → 6800.8ec3a2eb.chunk.js} +2 -2
- package/dist-scalprum/static/6800.8ec3a2eb.chunk.js.map +1 -0
- package/dist-scalprum/static/{6840.4728fab9.chunk.js → 6840.6cc88a16.chunk.js} +2 -2
- package/dist-scalprum/static/6840.6cc88a16.chunk.js.map +1 -0
- package/dist-scalprum/static/7076.8745d395.chunk.js +2 -0
- package/dist-scalprum/static/7076.8745d395.chunk.js.map +1 -0
- package/dist-scalprum/static/7367.62c9669e.chunk.js +3 -0
- package/dist-scalprum/static/7367.62c9669e.chunk.js.LICENSE.txt +21 -0
- package/dist-scalprum/static/7367.62c9669e.chunk.js.map +1 -0
- package/dist-scalprum/static/7791.55db7365.chunk.js +2 -0
- package/dist-scalprum/static/7791.55db7365.chunk.js.map +1 -0
- package/dist-scalprum/static/8172.e89bbae7.chunk.js +2 -0
- package/dist-scalprum/static/8172.e89bbae7.chunk.js.map +1 -0
- package/dist-scalprum/static/8627.111cbac9.chunk.js +2 -0
- package/dist-scalprum/static/8627.111cbac9.chunk.js.map +1 -0
- package/dist-scalprum/static/8799.4ea4639c.chunk.js +2 -0
- package/dist-scalprum/static/8799.4ea4639c.chunk.js.map +1 -0
- package/dist-scalprum/static/9510.e4112e19.chunk.js +3 -0
- package/dist-scalprum/static/{2946.167c50c2.chunk.js.LICENSE.txt → 9510.e4112e19.chunk.js.LICENSE.txt} +0 -10
- package/dist-scalprum/static/9510.e4112e19.chunk.js.map +1 -0
- package/dist-scalprum/static/9644.7d342123.chunk.js +2 -0
- package/dist-scalprum/static/9644.7d342123.chunk.js.map +1 -0
- package/dist-scalprum/static/993.c164940e.chunk.js +2 -0
- package/dist-scalprum/static/993.c164940e.chunk.js.map +1 -0
- package/dist-scalprum/static/exposed-PluginRoot.5b6638e2.chunk.js +2 -0
- package/dist-scalprum/static/exposed-PluginRoot.5b6638e2.chunk.js.map +1 -0
- package/package.json +3 -1
- package/dist/components/PlanPolicyDetailPage/PlanPolicyDetailPage.esm.js +0 -89
- package/dist/components/PlanPolicyDetailPage/PlanPolicyDetailPage.esm.js.map +0 -1
- package/dist/components/PlanPolicyDetailPage/index.esm.js +0 -2
- package/dist/components/PlanPolicyDetailPage/index.esm.js.map +0 -1
- package/dist-scalprum/internal.plugin-kuadrant.95817f34e88db81b5e8f.js +0 -2
- package/dist-scalprum/internal.plugin-kuadrant.95817f34e88db81b5e8f.js.map +0 -1
- package/dist-scalprum/static/1085.536aa0fa.chunk.js +0 -3
- package/dist-scalprum/static/1085.536aa0fa.chunk.js.map +0 -1
- package/dist-scalprum/static/1613.71f0fccd.chunk.js +0 -3
- package/dist-scalprum/static/1613.71f0fccd.chunk.js.LICENSE.txt +0 -10
- package/dist-scalprum/static/1613.71f0fccd.chunk.js.map +0 -1
- package/dist-scalprum/static/1836.b74b4c40.chunk.js +0 -3
- package/dist-scalprum/static/1836.b74b4c40.chunk.js.LICENSE.txt +0 -10
- package/dist-scalprum/static/1836.b74b4c40.chunk.js.map +0 -1
- package/dist-scalprum/static/2198.5905970e.chunk.js +0 -2
- package/dist-scalprum/static/2198.5905970e.chunk.js.map +0 -1
- package/dist-scalprum/static/2628.6619bf8b.chunk.js.map +0 -1
- package/dist-scalprum/static/2759.fceb317f.chunk.js +0 -2
- package/dist-scalprum/static/2759.fceb317f.chunk.js.map +0 -1
- package/dist-scalprum/static/2928.4303c12e.chunk.js +0 -3
- package/dist-scalprum/static/2928.4303c12e.chunk.js.map +0 -1
- package/dist-scalprum/static/2946.167c50c2.chunk.js +0 -3
- package/dist-scalprum/static/2946.167c50c2.chunk.js.map +0 -1
- package/dist-scalprum/static/2967.ac3a4bee.chunk.js +0 -2
- package/dist-scalprum/static/2967.ac3a4bee.chunk.js.map +0 -1
- package/dist-scalprum/static/2987.1da15560.chunk.js +0 -2
- package/dist-scalprum/static/2987.1da15560.chunk.js.map +0 -1
- package/dist-scalprum/static/3459.5c90b5a3.chunk.js +0 -2
- package/dist-scalprum/static/3459.5c90b5a3.chunk.js.map +0 -1
- package/dist-scalprum/static/3466.43dfe991.chunk.js +0 -3
- package/dist-scalprum/static/3466.43dfe991.chunk.js.map +0 -1
- package/dist-scalprum/static/3503.66b6e510.chunk.js +0 -2
- package/dist-scalprum/static/3503.66b6e510.chunk.js.map +0 -1
- package/dist-scalprum/static/3650.515c743a.chunk.js +0 -2
- package/dist-scalprum/static/3650.515c743a.chunk.js.map +0 -1
- package/dist-scalprum/static/3657.59d45756.chunk.js +0 -3
- package/dist-scalprum/static/3657.59d45756.chunk.js.LICENSE.txt +0 -10
- package/dist-scalprum/static/3657.59d45756.chunk.js.map +0 -1
- package/dist-scalprum/static/428.0a290bc6.chunk.js +0 -2
- package/dist-scalprum/static/428.0a290bc6.chunk.js.map +0 -1
- package/dist-scalprum/static/441.9f02e61b.chunk.js +0 -2
- package/dist-scalprum/static/441.9f02e61b.chunk.js.map +0 -1
- package/dist-scalprum/static/5453.280127dd.chunk.js +0 -2
- package/dist-scalprum/static/5453.280127dd.chunk.js.map +0 -1
- package/dist-scalprum/static/5603.05d9ca7f.chunk.js +0 -2
- package/dist-scalprum/static/5603.05d9ca7f.chunk.js.map +0 -1
- package/dist-scalprum/static/6272.b5ee5195.chunk.js +0 -3
- package/dist-scalprum/static/6272.b5ee5195.chunk.js.LICENSE.txt +0 -9
- package/dist-scalprum/static/6272.b5ee5195.chunk.js.map +0 -1
- package/dist-scalprum/static/6371.c83dc422.chunk.js +0 -2
- package/dist-scalprum/static/6371.c83dc422.chunk.js.map +0 -1
- package/dist-scalprum/static/6422.97baf774.chunk.js +0 -2
- package/dist-scalprum/static/6422.97baf774.chunk.js.map +0 -1
- package/dist-scalprum/static/6800.736d5da3.chunk.js.map +0 -1
- package/dist-scalprum/static/6840.4728fab9.chunk.js.map +0 -1
- package/dist-scalprum/static/7556.aa8a002f.chunk.js.LICENSE.txt +0 -8
- package/dist-scalprum/static/7556.aa8a002f.chunk.js.map +0 -1
- package/dist-scalprum/static/7601.4df83556.chunk.js +0 -3
- package/dist-scalprum/static/7601.4df83556.chunk.js.LICENSE.txt +0 -9
- package/dist-scalprum/static/7601.4df83556.chunk.js.map +0 -1
- package/dist-scalprum/static/7791.12162a71.chunk.js +0 -2
- package/dist-scalprum/static/7791.12162a71.chunk.js.map +0 -1
- package/dist-scalprum/static/7984.c8511b89.chunk.js +0 -2
- package/dist-scalprum/static/7984.c8511b89.chunk.js.map +0 -1
- package/dist-scalprum/static/8365.d3360f18.chunk.js +0 -2
- package/dist-scalprum/static/8365.d3360f18.chunk.js.map +0 -1
- package/dist-scalprum/static/8563.7e068fb0.chunk.js.map +0 -1
- package/dist-scalprum/static/8799.7c749838.chunk.js +0 -2
- package/dist-scalprum/static/8799.7c749838.chunk.js.map +0 -1
- package/dist-scalprum/static/exposed-PluginRoot.a5792fb2.chunk.js +0 -2
- package/dist-scalprum/static/exposed-PluginRoot.a5792fb2.chunk.js.map +0 -1
- /package/dist-scalprum/static/{2928.4303c12e.chunk.js.LICENSE.txt → 1994.19e6a1c5.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{2628.6619bf8b.chunk.js.LICENSE.txt → 2628.0605e07f.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{5010.a4aa0f8e.chunk.js.LICENSE.txt → 5010.2228c754.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{1085.536aa0fa.chunk.js.LICENSE.txt → 6371.c4899d73.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{8563.7e068fb0.chunk.js.LICENSE.txt → 6763.d6cd937f.chunk.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[6840],{16397:(e,a,t)=>{t.d(a,{e:()=>A});var n=t(31085),r=t(95478),i=t(76891),o=t(61477),
|
|
2
|
-
//# sourceMappingURL=6840.
|
|
1
|
+
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[6840],{16397:(e,a,t)=>{t.d(a,{e:()=>A});var n=t(31085),r=t(95478),i=t(76891),o=t(61477),s=t(46805),l=t(10394),d=t(72501),c=t(95061),u=t(48543),p=t(81215),h=t(26343),m=t(16249),b=t(93453),f=t(64947),k=t(78467),v=t(22097);const A=({open:e,onClose:a,onSuccess:t,request:A,availablePlans:g})=>{const y=(0,v.useApi)(v.configApiRef),x=(0,v.useApi)(v.fetchApiRef),j=y.getString("backend.baseUrl"),[C,w]=(0,r.useState)(""),[S,z]=(0,r.useState)(""),[E,T]=(0,r.useState)(!1),[_,W]=(0,r.useState)("");(0,r.useEffect)(()=>{e&&A&&(w(A.spec.planTier||""),z(A.spec.useCase||""),W(""))},[e,A]);const I=()=>{E||(W(""),a())};return(0,n.jsxs)(i.A,{open:e,onClose:I,maxWidth:"sm",fullWidth:!0,children:[(0,n.jsx)(o.A,{children:"Edit API Key"}),(0,n.jsxs)(s.A,{children:[_&&(0,n.jsx)(l.A,{mb:2,p:2,bgcolor:"error.main",color:"error.contrastText",borderRadius:1,children:(0,n.jsx)(d.A,{variant:"body2",children:_})}),(0,n.jsxs)(c.A,{fullWidth:!0,margin:"normal",children:[(0,n.jsx)(u.A,{children:"Tier"}),(0,n.jsx)(p.A,{value:C,onChange:e=>w(e.target.value),disabled:E,children:g.map(e=>{const a=Object.entries(e.limits||{}).map(([e,a])=>`${a} per ${e}`).join(", ");return(0,n.jsxs)(h.A,{value:e.tier,children:[e.tier," ",a?`(${a})`:""]},e.tier)})})]}),(0,n.jsx)(m.A,{label:"Use Case",placeholder:"Describe how you plan to use this API",multiline:!0,rows:3,fullWidth:!0,margin:"normal",value:S,onChange:e=>z(e.target.value),disabled:E,helperText:"Explain your intended use of this API for admin review"})]}),(0,n.jsxs)(b.A,{children:[(0,n.jsx)(f.A,{onClick:I,disabled:E,children:"Cancel"}),(0,n.jsx)(f.A,{onClick:async()=>{if(C){W(""),T(!0);try{const e={spec:{planTier:C,useCase:S.trim()}},n=await x.fetch(`${j}/api/kuadrant/requests/${A.metadata.namespace}/${A.metadata.name}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok){const e=await n.json().catch(()=>({}));throw new Error(e.error||`Failed to update request: ${n.status}`)}t(),a()}catch(e){console.error("Error updating API key request:",e),W(e instanceof Error?e.message:"Unknown error occurred")}finally{T(!1)}}else W("Please select a tier")},color:"primary",variant:"contained",disabled:!C||E,startIcon:E?(0,n.jsx)(k.A,{size:16,color:"inherit"}):void 0,children:E?"Saving...":"Save Changes"})]})]})}},32269:(e,a,t)=>{var n=t(4293),r=t(78920);a.A=void 0;var i=r(t(95478)),o=(0,n(t(74044)).default)(i.createElement("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"Visibility");a.A=o},34955:(e,a,t)=>{t.d(a,{Al:()=>o,DS:()=>h,EM:()=>d,FL:()=>i,J:()=>r,KV:()=>v,R_:()=>c,U3:()=>s,dp:()=>p,jH:()=>k,q0:()=>m,uL:()=>f,v_:()=>l,vs:()=>u,z4:()=>b});var n=t(83572);(0,n.i)({name:"kuadrant.planpolicy.create",attributes:{action:"create"}}),(0,n.i)({name:"kuadrant.planpolicy.read",attributes:{action:"read"}}),(0,n.i)({name:"kuadrant.planpolicy.update",attributes:{action:"update"}}),(0,n.i)({name:"kuadrant.planpolicy.delete",attributes:{action:"delete"}});const r=(0,n.i)({name:"kuadrant.planpolicy.list",attributes:{action:"read"}}),i=(0,n.i)({name:"kuadrant.apiproduct.create",attributes:{action:"create"}}),o=((0,n.i)({name:"kuadrant.apiproduct.read.own",attributes:{action:"read"}}),(0,n.i)({name:"kuadrant.apiproduct.read.all",attributes:{action:"read"}})),s=(0,n.i)({name:"kuadrant.apiproduct.update.own",attributes:{action:"update"}}),l=(0,n.i)({name:"kuadrant.apiproduct.update.all",attributes:{action:"update"}}),d=(0,n.i)({name:"kuadrant.apiproduct.delete.own",attributes:{action:"delete"}}),c=(0,n.i)({name:"kuadrant.apiproduct.delete.all",attributes:{action:"delete"}}),u=(0,n.i)({name:"kuadrant.apiproduct.list",attributes:{action:"read"}}),p=(0,n.i)({name:"kuadrant.apikey.create",attributes:{action:"create"},resourceType:"apiproduct"}),h=(0,n.i)({name:"kuadrant.apikey.read.own",attributes:{action:"read"}}),m=((0,n.i)({name:"kuadrant.apikey.read.all",attributes:{action:"read"}}),(0,n.i)({name:"kuadrant.apikey.update.own",attributes:{action:"update"}})),b=(0,n.i)({name:"kuadrant.apikey.update.all",attributes:{action:"update"}}),f=(0,n.i)({name:"kuadrant.apikey.delete.own",attributes:{action:"delete"}}),k=(0,n.i)({name:"kuadrant.apikey.delete.all",attributes:{action:"delete"}}),v=(0,n.i)({name:"kuadrant.apikey.approve",attributes:{action:"update"}})},35015:(e,a,t)=>{t.d(a,{A:()=>o});var n=t(95478),r=t(85608),i=t(71581);function o(e,a){void 0===a&&(a=[]);var t=function(e,a,t){void 0===a&&(a=[]),void 0===t&&(t={loading:!1});var o=(0,n.useRef)(0),s=(0,i.A)(),l=(0,n.useState)(t),d=l[0],c=l[1],u=(0,n.useCallback)(function(){for(var a=[],t=0;t<arguments.length;t++)a[t]=arguments[t];var n=++o.current;return d.loading||c(function(e){return(0,r.__assign)((0,r.__assign)({},e),{loading:!0})}),e.apply(void 0,a).then(function(e){return s()&&n===o.current&&c({value:e,loading:!1}),e},function(e){return s()&&n===o.current&&c({error:e,loading:!1}),e})},a);return[d,u]}(e,a,{loading:!0}),o=t[0],s=t[1];return(0,n.useEffect)(function(){s()},[s]),o}},46205:(e,a,t)=>{t.d(a,{W:()=>i,l:()=>r});var n=t(87421);function r(e,a){const t="resourceType"in e?{permission:e,resourceRef:a}:{permission:e},r=(0,n.J)(t);return{allowed:r.allowed,loading:r.loading,error:r.error}}function i(e,a,t,n){return!!n||!(!t||e!==a)}},61524:(e,a,t)=>{var n=t(4293),r=t(78920);a.A=void 0;var i=r(t(95478)),o=(0,n(t(74044)).default)(i.createElement("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");a.A=o},63221:(e,a,t)=>{t.d(a,{K:()=>f});var n=t(31085),r=t(95478),i=t(76891),o=t(61477),s=t(10394),l=t(46805),d=t(59461),c=t(72501),u=t(16249),p=t(93453),h=t(64947),m=t(78467),b=t(77225);const f=({open:e,title:a,description:t,confirmText:f,severity:k="normal",deleting:v=!1,onConfirm:A,onCancel:g})=>{const[y,x]=(0,r.useState)("");(0,r.useEffect)(()=>{e||x("")},[e]);const j="high"===k&&f,C=!j||y===f;return(0,n.jsxs)(i.A,{open:e,onClose:v?void 0:g,maxWidth:"sm",fullWidth:!0,children:[(0,n.jsxs)(o.A,{children:["high"===k&&(0,n.jsxs)(s.A,{display:"flex",alignItems:"center",style:{gap:8},children:[(0,n.jsx)(b.A,{color:"error"}),(0,n.jsx)("span",{children:a})]}),"high"!==k&&a]}),(0,n.jsxs)(l.A,{children:[(0,n.jsx)(d.A,{style:{whiteSpace:"pre-line"},children:t}),j&&(0,n.jsxs)(s.A,{mt:2,children:[(0,n.jsxs)(c.A,{variant:"body2",color:"textSecondary",gutterBottom:!0,children:["Type ",(0,n.jsx)("strong",{children:f})," to confirm:"]}),(0,n.jsx)(u.A,{fullWidth:!0,variant:"outlined",size:"small",value:y,onChange:e=>x(e.target.value),disabled:v,autoFocus:!0,placeholder:f})]})]}),(0,n.jsxs)(p.A,{children:[(0,n.jsx)(h.A,{onClick:g,disabled:v,children:"Cancel"}),(0,n.jsx)(h.A,{onClick:()=>{C&&A()},color:"secondary",variant:"contained",disabled:v||!C,startIcon:v?(0,n.jsx)(m.A,{size:16,color:"inherit"}):void 0,children:v?"Deleting...":"Delete"})]})]})}}}]);
|
|
2
|
+
//# sourceMappingURL=6840.6cc88a16.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/6840.6cc88a16.chunk.js","mappings":"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","sources":["webpack://internal.plugin-kuadrant/./src/components/EditAPIKeyDialog/EditAPIKeyDialog.tsx","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/icons/Visibility.js","webpack://internal.plugin-kuadrant/./src/permissions.ts","webpack://internal.plugin-kuadrant/../../node_modules/react-use/esm/useAsync.js","webpack://internal.plugin-kuadrant/../../node_modules/react-use/esm/useAsyncFn.js","webpack://internal.plugin-kuadrant/./src/utils/permissions.ts","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/icons/VisibilityOff.js","webpack://internal.plugin-kuadrant/./src/components/ConfirmDeleteDialog/ConfirmDeleteDialog.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n TextField,\n Box,\n Typography,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n CircularProgress,\n} from \"@material-ui/core\";\nimport { useApi, configApiRef, fetchApiRef } from \"@backstage/core-plugin-api\";\nimport { APIKey } from \"../../types/api-management\";\n\ninterface EditAPIKeyDialogProps {\n open: boolean;\n onClose: () => void;\n onSuccess: () => void;\n request: APIKey;\n availablePlans: Array<{\n tier: string;\n description?: string;\n limits?: any;\n }>;\n}\n\nexport const EditAPIKeyDialog = ({\n open,\n onClose,\n onSuccess,\n request,\n availablePlans,\n}: EditAPIKeyDialogProps) => {\n const config = useApi(configApiRef);\n const fetchApi = useApi(fetchApiRef);\n const backendUrl = config.getString(\"backend.baseUrl\");\n\n const [planTier, setPlanTier] = useState(\"\");\n const [useCase, setUseCase] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState(\"\");\n\n useEffect(() => {\n if (open && request) {\n setPlanTier(request.spec.planTier || \"\");\n setUseCase(request.spec.useCase || \"\");\n setError(\"\");\n }\n }, [open, request]);\n\n const handleSave = async () => {\n if (!planTier) {\n setError(\"Please select a tier\");\n return;\n }\n\n setError(\"\");\n setSaving(true);\n\n try {\n const patch = {\n spec: {\n planTier,\n useCase: useCase.trim(),\n },\n };\n\n const response = await fetchApi.fetch(\n `${backendUrl}/api/kuadrant/requests/${request.metadata.namespace}/${request.metadata.name}`,\n {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(patch),\n },\n );\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n throw new Error(\n errorData.error || `Failed to update request: ${response.status}`,\n );\n }\n\n onSuccess();\n onClose();\n } catch (err) {\n console.error(\"Error updating API key request:\", err);\n setError(err instanceof Error ? err.message : \"Unknown error occurred\");\n } finally {\n setSaving(false);\n }\n };\n\n const handleClose = () => {\n if (!saving) {\n setError(\"\");\n onClose();\n }\n };\n\n return (\n <Dialog open={open} onClose={handleClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>Edit API Key</DialogTitle>\n <DialogContent>\n {error && (\n <Box\n mb={2}\n p={2}\n bgcolor=\"error.main\"\n color=\"error.contrastText\"\n borderRadius={1}\n >\n <Typography variant=\"body2\">{error}</Typography>\n </Box>\n )}\n\n <FormControl fullWidth margin=\"normal\">\n <InputLabel>Tier</InputLabel>\n <Select\n value={planTier}\n onChange={(e) => setPlanTier(e.target.value as string)}\n disabled={saving}\n >\n {availablePlans.map((plan) => {\n const limitDesc = Object.entries(plan.limits || {})\n .map(([key, val]) => `${val} per ${key}`)\n .join(\", \");\n return (\n <MenuItem key={plan.tier} value={plan.tier}>\n {plan.tier} {limitDesc ? `(${limitDesc})` : \"\"}\n </MenuItem>\n );\n })}\n </Select>\n </FormControl>\n\n <TextField\n label=\"Use Case\"\n placeholder=\"Describe how you plan to use this API\"\n multiline\n rows={3}\n fullWidth\n margin=\"normal\"\n value={useCase}\n onChange={(e) => setUseCase(e.target.value)}\n disabled={saving}\n helperText=\"Explain your intended use of this API for admin review\"\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={handleClose} disabled={saving}>\n Cancel\n </Button>\n <Button\n onClick={handleSave}\n color=\"primary\"\n variant=\"contained\"\n disabled={!planTier || saving}\n startIcon={\n saving ? <CircularProgress size={16} color=\"inherit\" /> : undefined\n }\n >\n {saving ? \"Saving...\" : \"Save Changes\"}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'Visibility');\n\nexports.default = _default;","import { createPermission } from '@backstage/plugin-permission-common';\n\n/**\n * permission definitions for the kuadrant plugin\n *\n * these permissions control access to kuadrant resources and operations.\n * they must match the permissions defined in the backend plugin.\n *\n * permission types:\n * - BasicPermission: standard permission that applies globally\n * - ResourcePermission: permission scoped to specific resource types (e.g., apiproduct)\n *\n * permission patterns:\n * - `.create` - create new resources\n * - `.read` - read resource details\n * - `.read.own` - read only resources owned by the user\n * - `.read.all` - read all resources regardless of ownership\n * - `.update` - modify existing resources\n * - `.delete` - delete resources\n * - `.delete.own` - delete only resources owned by the user\n * - `.delete.all` - delete any resource regardless of ownership\n * - `.list` - list/view collections of resources\n */\n\n// planpolicy permissions\nexport const kuadrantPlanPolicyCreatePermission = createPermission({\n name: 'kuadrant.planpolicy.create',\n attributes: { action: 'create' },\n});\n\nexport const kuadrantPlanPolicyReadPermission = createPermission({\n name: 'kuadrant.planpolicy.read',\n attributes: { action: 'read' },\n});\n\nexport const kuadrantPlanPolicyUpdatePermission = createPermission({\n name: 'kuadrant.planpolicy.update',\n attributes: { action: 'update' },\n});\n\nexport const kuadrantPlanPolicyDeletePermission = createPermission({\n name: 'kuadrant.planpolicy.delete',\n attributes: { action: 'delete' },\n});\n\nexport const kuadrantPlanPolicyListPermission = createPermission({\n name: 'kuadrant.planpolicy.list',\n attributes: { action: 'read' },\n});\n\n// apiproduct permissions\n\n/**\n * permission to create new API products\n * granted to api owners and admins\n */\nexport const kuadrantApiProductCreatePermission = createPermission({\n name: 'kuadrant.apiproduct.create',\n attributes: { action: 'create' },\n});\n\n/**\n * permission to read API products owned by the current user\n * for api owners to view their own products\n */\nexport const kuadrantApiProductReadOwnPermission = createPermission({\n name: 'kuadrant.apiproduct.read.own',\n attributes: { action: 'read' },\n});\n\n/**\n * permission to read all API products regardless of ownership\n * for platform engineers/admins who need to view all products\n */\nexport const kuadrantApiProductReadAllPermission = createPermission({\n name: 'kuadrant.apiproduct.read.all',\n attributes: { action: 'read' },\n});\n\n/**\n * permission to update API products owned by the current user\n * for api owners to modify their own products\n */\nexport const kuadrantApiProductUpdateOwnPermission = createPermission({\n name: 'kuadrant.apiproduct.update.own',\n attributes: { action: 'update' },\n});\n\n/**\n * permission to update any API product regardless of ownership\n * for platform engineers/admins\n */\nexport const kuadrantApiProductUpdateAllPermission = createPermission({\n name: 'kuadrant.apiproduct.update.all',\n attributes: { action: 'update' },\n});\n\n/**\n * permission to delete API products owned by the current user\n * for api owners to remove their own products\n */\nexport const kuadrantApiProductDeleteOwnPermission = createPermission({\n name: 'kuadrant.apiproduct.delete.own',\n attributes: { action: 'delete' },\n});\n\n/**\n * permission to delete any API product regardless of ownership\n * for platform engineers/admins\n */\nexport const kuadrantApiProductDeleteAllPermission = createPermission({\n name: 'kuadrant.apiproduct.delete.all',\n attributes: { action: 'delete' },\n});\n\n/**\n * permission to list API products\n * backend filters results based on .own vs .all read permissions\n */\nexport const kuadrantApiProductListPermission = createPermission({\n name: 'kuadrant.apiproduct.list',\n attributes: { action: 'read' },\n});\n\n// apikey permissions\n\n/**\n * permission to create API keys (request API access)\n *\n * this is a ResourcePermission scoped to 'apiproduct', allowing\n * fine-grained control over which API products users can request access to.\n *\n * use in frontend: useKuadrantPermission(kuadrantApiKeyCreatePermission)\n * use in backend with resource: { permission, resourceRef: 'apiproduct:namespace/name' }\n */\nexport const kuadrantApiKeyCreatePermission = createPermission({\n name: 'kuadrant.apikey.create',\n attributes: { action: 'create' },\n resourceType: 'apiproduct',\n});\n\n/**\n * permission to read API keys owned by the current user\n * allows users to view their own API keys and request history\n */\nexport const kuadrantApiKeyReadOwnPermission = createPermission({\n name: 'kuadrant.apikey.read.own',\n attributes: { action: 'read' },\n});\n\n/**\n * permission to read all API keys regardless of ownership\n * for platform engineers/admins who need to view the approval queue and audit keys\n */\nexport const kuadrantApiKeyReadAllPermission = createPermission({\n name: 'kuadrant.apikey.read.all',\n attributes: { action: 'read' },\n});\n\n/**\n * permission to update API keys owned by the current user\n * allows users to edit their own pending requests (change plan tier, use case)\n */\nexport const kuadrantApiKeyUpdateOwnPermission = createPermission({\n name: 'kuadrant.apikey.update.own',\n attributes: { action: 'update' },\n});\n\n/**\n * permission to update any API key regardless of ownership\n * typically granted to API owners and platform engineers for approving/rejecting requests\n */\nexport const kuadrantApiKeyUpdateAllPermission = createPermission({\n name: 'kuadrant.apikey.update.all',\n attributes: { action: 'update' },\n});\n\n/**\n * permission to delete API keys owned by the current user\n * allows users to cancel their own requests or revoke their own access\n */\nexport const kuadrantApiKeyDeleteOwnPermission = createPermission({\n name: 'kuadrant.apikey.delete.own',\n attributes: { action: 'delete' },\n});\n\n/**\n * permission to delete any API key regardless of ownership\n * for platform engineers/admins who need to revoke access\n */\nexport const kuadrantApiKeyDeleteAllPermission = createPermission({\n name: 'kuadrant.apikey.delete.all',\n attributes: { action: 'delete' },\n});\n\n/**\n * permission to approve/reject API key requests\n * grants access to the approval queue - for API owners and admins only\n * separate from update.own which consumers use to edit their pending requests\n */\nexport const kuadrantApiKeyApprovePermission = createPermission({\n name: 'kuadrant.apikey.approve',\n attributes: { action: 'update' },\n});\n\nexport const kuadrantPermissions = [\n kuadrantPlanPolicyCreatePermission,\n kuadrantPlanPolicyReadPermission,\n kuadrantPlanPolicyUpdatePermission,\n kuadrantPlanPolicyDeletePermission,\n kuadrantPlanPolicyListPermission,\n kuadrantApiProductCreatePermission,\n kuadrantApiProductReadOwnPermission,\n kuadrantApiProductReadAllPermission,\n kuadrantApiProductUpdateOwnPermission,\n kuadrantApiProductUpdateAllPermission,\n kuadrantApiProductDeleteOwnPermission,\n kuadrantApiProductDeleteAllPermission,\n kuadrantApiProductListPermission,\n kuadrantApiKeyCreatePermission,\n kuadrantApiKeyReadOwnPermission,\n kuadrantApiKeyReadAllPermission,\n kuadrantApiKeyUpdateOwnPermission,\n kuadrantApiKeyUpdateAllPermission,\n kuadrantApiKeyDeleteOwnPermission,\n kuadrantApiKeyDeleteAllPermission,\n kuadrantApiKeyApprovePermission,\n];\n","import { useEffect } from 'react';\nimport useAsyncFn from './useAsyncFn';\nexport default function useAsync(fn, deps) {\n if (deps === void 0) { deps = []; }\n var _a = useAsyncFn(fn, deps, {\n loading: true,\n }), state = _a[0], callback = _a[1];\n useEffect(function () {\n callback();\n }, [callback]);\n return state;\n}\n","import { __assign } from \"tslib\";\nimport { useCallback, useRef, useState } from 'react';\nimport useMountedState from './useMountedState';\nexport default function useAsyncFn(fn, deps, initialState) {\n if (deps === void 0) { deps = []; }\n if (initialState === void 0) { initialState = { loading: false }; }\n var lastCallId = useRef(0);\n var isMounted = useMountedState();\n var _a = useState(initialState), state = _a[0], set = _a[1];\n var callback = useCallback(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var callId = ++lastCallId.current;\n if (!state.loading) {\n set(function (prevState) { return (__assign(__assign({}, prevState), { loading: true })); });\n }\n return fn.apply(void 0, args).then(function (value) {\n isMounted() && callId === lastCallId.current && set({ value: value, loading: false });\n return value;\n }, function (error) {\n isMounted() && callId === lastCallId.current && set({ error: error, loading: false });\n return error;\n });\n }, deps);\n return [state, callback];\n}\n","import { usePermission } from '@backstage/plugin-permission-react';\nimport { Permission, ResourcePermission } from '@backstage/plugin-permission-common';\n\n/**\n * result of a permission check including error state\n */\nexport interface PermissionCheckResult {\n allowed: boolean;\n loading: boolean;\n error?: Error;\n}\n\n/**\n * custom hook for checking kuadrant permissions that handles both\n * BasicPermission and ResourcePermission types without type bypasses\n *\n * @param permission - the permission to check\n * @param resourceRef - optional resource reference for ResourcePermissions\n * @returns permission check result with error handling\n *\n * @example\n * // basic permission\n * const { allowed, loading, error } = useKuadrantPermission(\n * kuadrantApiProductListPermission\n * );\n *\n * @example\n * // resource permission\n * const { allowed, loading, error } = useKuadrantPermission(\n * kuadrantApiKeyCreatePermission,\n * 'apiproduct:namespace/name'\n * );\n */\nexport function useKuadrantPermission(\n permission: Permission,\n resourceRef?: string,\n): PermissionCheckResult {\n // construct the permission request based on whether it's a ResourcePermission\n const permissionRequest = 'resourceType' in permission\n ? { permission: permission as ResourcePermission, resourceRef }\n : { permission };\n\n const result = usePermission(permissionRequest as any);\n\n return {\n allowed: result.allowed,\n loading: result.loading,\n error: result.error,\n };\n}\n\n/**\n * helper to determine if a user can delete a specific API key or request\n *\n * @param ownerId - the user id who owns the key/request\n * @param currentUserId - the current user's id\n * @param canDeleteOwn - whether user has permission to delete their own keys\n * @param canDeleteAll - whether user has permission to delete all keys\n * @returns true if user can delete this specific key/request\n */\nexport function canDeleteResource(\n ownerId: string,\n currentUserId: string,\n canDeleteOwn: boolean,\n canDeleteAll: boolean,\n): boolean {\n if (canDeleteAll) return true;\n if (canDeleteOwn && ownerId === currentUserId) return true;\n return false;\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\n\nexports.default = _default;","import React, { useState, useEffect } from 'react';\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogContentText,\n DialogActions,\n Button,\n TextField,\n Typography,\n Box,\n CircularProgress,\n} from '@material-ui/core';\nimport WarningIcon from '@material-ui/icons/Warning';\n\nexport interface ConfirmDeleteDialogProps {\n open: boolean;\n title: string;\n description: string;\n // for dangerous deletes, require typing this text to confirm\n confirmText?: string;\n // severity affects styling - 'high' shows warning icon and requires text confirmation\n severity?: 'normal' | 'high';\n deleting?: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n}\n\nexport const ConfirmDeleteDialog = ({\n open,\n title,\n description,\n confirmText,\n severity = 'normal',\n deleting = false,\n onConfirm,\n onCancel,\n}: ConfirmDeleteDialogProps) => {\n const [inputValue, setInputValue] = useState('');\n\n // reset input when dialog opens/closes\n useEffect(() => {\n if (!open) {\n setInputValue('');\n }\n }, [open]);\n\n const requiresTextConfirmation = severity === 'high' && confirmText;\n const canConfirm = requiresTextConfirmation ? inputValue === confirmText : true;\n\n const handleConfirm = () => {\n if (canConfirm) {\n onConfirm();\n }\n };\n\n return (\n <Dialog\n open={open}\n onClose={deleting ? undefined : onCancel}\n maxWidth=\"sm\"\n fullWidth\n >\n <DialogTitle>\n {severity === 'high' && (\n <Box display=\"flex\" alignItems=\"center\" style={{ gap: 8 }}>\n <WarningIcon color=\"error\" />\n <span>{title}</span>\n </Box>\n )}\n {severity !== 'high' && title}\n </DialogTitle>\n <DialogContent>\n <DialogContentText style={{ whiteSpace: 'pre-line' }}>\n {description}\n </DialogContentText>\n {requiresTextConfirmation && (\n <Box mt={2}>\n <Typography variant=\"body2\" color=\"textSecondary\" gutterBottom>\n Type <strong>{confirmText}</strong> to confirm:\n </Typography>\n <TextField\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n value={inputValue}\n onChange={e => setInputValue(e.target.value)}\n disabled={deleting}\n autoFocus\n placeholder={confirmText}\n />\n </Box>\n )}\n </DialogContent>\n <DialogActions>\n <Button onClick={onCancel} disabled={deleting}>\n Cancel\n </Button>\n <Button\n onClick={handleConfirm}\n color=\"secondary\"\n variant=\"contained\"\n disabled={deleting || !canConfirm}\n startIcon={deleting ? <CircularProgress size={16} color=\"inherit\" /> : undefined}\n >\n {deleting ? 'Deleting...' : 'Delete'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":["EditAPIKeyDialog","open","onClose","onSuccess","request","availablePlans","config","useApi","configApiRef","fetchApi","fetchApiRef","backendUrl","getString","planTier","setPlanTier","useState","useCase","setUseCase","saving","setSaving","error","setError","useEffect","spec","handleClose","Dialog","maxWidth","fullWidth","DialogTitle","DialogContent","Box","mb","p","bgcolor","color","borderRadius","Typography","variant","FormControl","margin","InputLabel","Select","value","onChange","e","target","disabled","map","plan","limitDesc","Object","entries","limits","key","val","join","MenuItem","tier","TextField","label","placeholder","multiline","rows","helperText","DialogActions","Button","onClick","async","patch","trim","response","fetch","metadata","namespace","name","method","headers","body","JSON","stringify","ok","errorData","json","catch","Error","status","err","console","message","startIcon","CircularProgress","size","undefined","_interopRequireDefault","_interopRequireWildcard","exports","React","_default","default","createElement","d","createPermission","attributes","action","kuadrantPlanPolicyListPermission","kuadrantApiProductCreatePermission","kuadrantApiProductReadAllPermission","kuadrantApiProductUpdateOwnPermission","kuadrantApiProductUpdateAllPermission","kuadrantApiProductDeleteOwnPermission","kuadrantApiProductDeleteAllPermission","kuadrantApiProductListPermission","kuadrantApiKeyCreatePermission","resourceType","kuadrantApiKeyReadOwnPermission","kuadrantApiKeyUpdateOwnPermission","kuadrantApiKeyUpdateAllPermission","kuadrantApiKeyDeleteOwnPermission","kuadrantApiKeyDeleteAllPermission","kuadrantApiKeyApprovePermission","useAsync","fn","deps","_a","initialState","loading","lastCallId","useRef","isMounted","useMountedState","state","set","callback","useCallback","args","_i","arguments","length","callId","current","prevState","__assign","apply","then","useAsyncFn","useKuadrantPermission","permission","resourceRef","permissionRequest","result","usePermission","allowed","canDeleteResource","ownerId","currentUserId","canDeleteOwn","canDeleteAll","ConfirmDeleteDialog","title","description","confirmText","severity","deleting","onConfirm","onCancel","inputValue","setInputValue","requiresTextConfirmation","canConfirm","display","alignItems","style","gap","WarningIcon","span","DialogContentText","whiteSpace","mt","gutterBottom","strong","autoFocus"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[7076],{31653:(e,t,r)=>{r.d(t,{A:()=>E});var o,n=r(89575),l=r(39850),a=r(24586),i=r(95478),c=(r(26948),r(36274)),s=r(2589),d=r(82431);function u(){if(o)return o;var e=document.createElement("div"),t=document.createElement("div");return t.style.width="10px",t.style.height="1px",e.appendChild(t),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),o="reverse",e.scrollLeft>0?o="default":(e.scrollLeft=1,0===e.scrollLeft&&(o="negative")),document.body.removeChild(e),o}function f(e,t){var r=e.scrollLeft;if("rtl"!==t)return r;switch(u()){case"negative":return e.scrollWidth-e.clientWidth+r;case"reverse":return e.scrollWidth-e.clientWidth-r;default:return r}}function p(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}var m={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function h(e){var t=e.onChange,r=(0,l.A)(e,["onChange"]),o=i.useRef(),a=i.useRef(null),c=function(){o.current=a.current.offsetHeight-a.current.clientHeight};return i.useEffect(function(){var e=(0,s.A)(function(){var e=o.current;c(),e!==o.current&&t(o.current)});return window.addEventListener("resize",e),function(){e.clear(),window.removeEventListener("resize",e)}},[t]),i.useEffect(function(){c(),t(o.current)},[t]),i.createElement("div",(0,n.A)({style:m,ref:a},r))}var v=r(7031),b=r(11192),g=i.forwardRef(function(e,t){var r=e.classes,o=e.className,a=e.color,s=e.orientation,d=(0,l.A)(e,["classes","className","color","orientation"]);return i.createElement("span",(0,n.A)({className:(0,c.A)(r.root,r["color".concat((0,b.A)(a))],o,"vertical"===s&&r.vertical),ref:t},d))});const A=(0,v.A)(function(e){return{root:{position:"absolute",height:2,bottom:0,width:"100%",transition:e.transitions.create()},colorPrimary:{backgroundColor:e.palette.primary.main},colorSecondary:{backgroundColor:e.palette.secondary.main},vertical:{height:"100%",width:2,right:0}}},{name:"PrivateTabIndicator"})(g);var w=r(41433),y=r(70020),x=r(54917),C=i.forwardRef(function(e,t){var r=e["aria-label"],o=e["aria-labelledby"],m=e.action,v=e.centered,b=void 0!==v&&v,g=e.children,C=e.classes,E=e.className,k=e.component,S=void 0===k?"div":k,N=e.indicatorColor,B=void 0===N?"secondary":N,W=e.onChange,L=e.orientation,R=void 0===L?"horizontal":L,M=e.ScrollButtonComponent,z=void 0===M?w.A:M,T=e.scrollButtons,F=void 0===T?"auto":T,I=e.selectionFollowsFocus,H=e.TabIndicatorProps,P=void 0===H?{}:H,D=e.TabScrollButtonProps,$=e.textColor,q=void 0===$?"inherit":$,V=e.value,_=e.variant,K=void 0===_?"standard":_,j=(0,l.A)(e,["aria-label","aria-labelledby","action","centered","children","classes","className","component","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant"]),X=(0,x.A)(),G="scrollable"===K,O="rtl"===X.direction,U="vertical"===R,J=U?"scrollTop":"scrollLeft",Q=U?"top":"left",Y=U?"bottom":"right",Z=U?"clientHeight":"clientWidth",ee=U?"height":"width",te=i.useState(!1),re=te[0],oe=te[1],ne=i.useState({}),le=ne[0],ae=ne[1],ie=i.useState({start:!1,end:!1}),ce=ie[0],se=ie[1],de=i.useState({overflow:"hidden",marginBottom:null}),ue=de[0],fe=de[1],pe=new Map,me=i.useRef(null),he=i.useRef(null),ve=function(){var e,t,r=me.current;if(r){var o=r.getBoundingClientRect();e={clientWidth:r.clientWidth,scrollLeft:r.scrollLeft,scrollTop:r.scrollTop,scrollLeftNormalized:f(r,X.direction),scrollWidth:r.scrollWidth,top:o.top,bottom:o.bottom,left:o.left,right:o.right}}if(r&&!1!==V){var n=he.current.children;if(n.length>0){var l=n[pe.get(V)];t=l?l.getBoundingClientRect():null}}return{tabsMeta:e,tabMeta:t}},be=(0,y.A)(function(){var e,t=ve(),r=t.tabsMeta,o=t.tabMeta,n=0;if(o&&r)if(U)n=o.top-r.top+r.scrollTop;else{var l=O?r.scrollLeftNormalized+r.clientWidth-r.scrollWidth:r.scrollLeft;n=o.left-r.left+l}var i=(e={},(0,a.A)(e,Q,n),(0,a.A)(e,ee,o?o[ee]:0),e);if(isNaN(le[Q])||isNaN(le[ee]))ae(i);else{var c=Math.abs(le[Q]-i[Q]),s=Math.abs(le[ee]-i[ee]);(c>=1||s>=1)&&ae(i)}}),ge=function(e){!function(e,t,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){},l=o.ease,a=void 0===l?p:l,i=o.duration,c=void 0===i?300:i,s=null,d=t[e],u=!1;d===r?n(new Error("Element already at target position")):requestAnimationFrame(function o(l){if(u)n(new Error("Animation cancelled"));else{null===s&&(s=l);var i=Math.min(1,(l-s)/c);t[e]=a(i)*(r-d)+d,i>=1?requestAnimationFrame(function(){n(null)}):requestAnimationFrame(o)}})}(J,me.current,e)},Ae=function(e){var t=me.current[J];U?t+=e:(t+=e*(O?-1:1),t*=O&&"reverse"===u()?-1:1),ge(t)},we=function(){Ae(-me.current[Z])},ye=function(){Ae(me.current[Z])},xe=i.useCallback(function(e){fe({overflow:null,marginBottom:-e})},[]),Ce=(0,y.A)(function(){var e=ve(),t=e.tabsMeta,r=e.tabMeta;if(r&&t)if(r[Q]<t[Q]){var o=t[J]+(r[Q]-t[Q]);ge(o)}else if(r[Y]>t[Y]){var n=t[J]+(r[Y]-t[Y]);ge(n)}}),Ee=(0,y.A)(function(){if(G&&"off"!==F){var e,t,r=me.current,o=r.scrollTop,n=r.scrollHeight,l=r.clientHeight,a=r.scrollWidth,i=r.clientWidth;if(U)e=o>1,t=o<n-l-1;else{var c=f(me.current,X.direction);e=O?c<a-i-1:c>1,t=O?c>1:c<a-i-1}e===ce.start&&t===ce.end||se({start:e,end:t})}});i.useEffect(function(){var e=(0,s.A)(function(){be(),Ee()}),t=(0,d.A)(me.current);return t.addEventListener("resize",e),function(){e.clear(),t.removeEventListener("resize",e)}},[be,Ee]);var ke=i.useCallback((0,s.A)(function(){Ee()}));i.useEffect(function(){return function(){ke.clear()}},[ke]),i.useEffect(function(){oe(!0)},[]),i.useEffect(function(){be(),Ee()}),i.useEffect(function(){Ce()},[Ce,le]),i.useImperativeHandle(m,function(){return{updateIndicator:be,updateScrollButtons:Ee}},[be,Ee]);var Se=i.createElement(A,(0,n.A)({className:C.indicator,orientation:R,color:B},P,{style:(0,n.A)({},le,P.style)})),Ne=0,Be=i.Children.map(g,function(e){if(!i.isValidElement(e))return null;var t=void 0===e.props.value?Ne:e.props.value;pe.set(t,Ne);var r=t===V;return Ne+=1,i.cloneElement(e,{fullWidth:"fullWidth"===K,indicator:r&&!re&&Se,selected:r,selectionFollowsFocus:I,onChange:W,textColor:q,value:t})}),We=function(){var e={};e.scrollbarSizeListener=G?i.createElement(h,{className:C.scrollable,onChange:xe}):null;var t=ce.start||ce.end,r=G&&("auto"===F&&t||"desktop"===F||"on"===F);return e.scrollButtonStart=r?i.createElement(z,(0,n.A)({orientation:R,direction:O?"right":"left",onClick:we,disabled:!ce.start,className:(0,c.A)(C.scrollButtons,"on"!==F&&C.scrollButtonsDesktop)},D)):null,e.scrollButtonEnd=r?i.createElement(z,(0,n.A)({orientation:R,direction:O?"left":"right",onClick:ye,disabled:!ce.end,className:(0,c.A)(C.scrollButtons,"on"!==F&&C.scrollButtonsDesktop)},D)):null,e}();return i.createElement(S,(0,n.A)({className:(0,c.A)(C.root,E,U&&C.vertical),ref:t},j),We.scrollButtonStart,We.scrollbarSizeListener,i.createElement("div",{className:(0,c.A)(C.scroller,G?C.scrollable:C.fixed),style:ue,ref:me,onScroll:ke},i.createElement("div",{"aria-label":r,"aria-labelledby":o,className:(0,c.A)(C.flexContainer,U&&C.flexContainerVertical,b&&!G&&C.centered),onKeyDown:function(e){var t=e.target;if("tab"===t.getAttribute("role")){var r=null,o="vertical"!==R?"ArrowLeft":"ArrowUp",n="vertical"!==R?"ArrowRight":"ArrowDown";switch("vertical"!==R&&"rtl"===X.direction&&(o="ArrowRight",n="ArrowLeft"),e.key){case o:r=t.previousElementSibling||he.current.lastChild;break;case n:r=t.nextElementSibling||he.current.firstChild;break;case"Home":r=he.current.firstChild;break;case"End":r=he.current.lastChild}null!==r&&(r.focus(),e.preventDefault())}},ref:he,role:"tablist"},Be),re&&Se),We.scrollButtonEnd)});const E=(0,v.A)(function(e){return{root:{overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},vertical:{flexDirection:"column"},flexContainer:{display:"flex"},flexContainerVertical:{flexDirection:"column"},centered:{justifyContent:"center"},scroller:{position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},fixed:{overflowX:"hidden",width:"100%"},scrollable:{overflowX:"scroll",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},scrollButtons:{},scrollButtonsDesktop:(0,a.A)({},e.breakpoints.down("xs"),{display:"none"}),indicator:{}}},{name:"MuiTabs"})(C)},38605:(e,t,r)=>{r.d(t,{A:()=>f});var o=r(39850),n=r(24586),l=r(89575),a=r(95478),i=r(36274),c=r(7031),s=r(97740),d=r(11192),u=a.forwardRef(function(e,t){var r=e.classes,n=e.className,c=e.disabled,u=void 0!==c&&c,f=e.disableFocusRipple,p=void 0!==f&&f,m=e.fullWidth,h=e.icon,v=e.indicator,b=e.label,g=e.onChange,A=e.onClick,w=e.onFocus,y=e.selected,x=e.selectionFollowsFocus,C=e.textColor,E=void 0===C?"inherit":C,k=e.value,S=e.wrapped,N=void 0!==S&&S,B=(0,o.A)(e,["classes","className","disabled","disableFocusRipple","fullWidth","icon","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"]);return a.createElement(s.A,(0,l.A)({focusRipple:!p,className:(0,i.A)(r.root,r["textColor".concat((0,d.A)(E))],n,u&&r.disabled,y&&r.selected,b&&h&&r.labelIcon,m&&r.fullWidth,N&&r.wrapped),ref:t,role:"tab","aria-selected":y,disabled:u,onClick:function(e){g&&g(e,k),A&&A(e)},onFocus:function(e){x&&!y&&g&&g(e,k),w&&w(e)},tabIndex:y?0:-1},B),a.createElement("span",{className:r.wrapper},h,b),v)});const f=(0,c.A)(function(e){var t;return{root:(0,l.A)({},e.typography.button,(t={maxWidth:264,minWidth:72,position:"relative",boxSizing:"border-box",minHeight:48,flexShrink:0,padding:"6px 12px"},(0,n.A)(t,e.breakpoints.up("sm"),{padding:"6px 24px"}),(0,n.A)(t,"overflow","hidden"),(0,n.A)(t,"whiteSpace","normal"),(0,n.A)(t,"textAlign","center"),(0,n.A)(t,e.breakpoints.up("sm"),{minWidth:160}),t)),labelIcon:{minHeight:72,paddingTop:9,"& $wrapper > *:first-child":{marginBottom:6}},textColorInherit:{color:"inherit",opacity:.7,"&$selected":{opacity:1},"&$disabled":{opacity:.5}},textColorPrimary:{color:e.palette.text.secondary,"&$selected":{color:e.palette.primary.main},"&$disabled":{color:e.palette.text.disabled}},textColorSecondary:{color:e.palette.text.secondary,"&$selected":{color:e.palette.secondary.main},"&$disabled":{color:e.palette.text.disabled}},selected:{},disabled:{},fullWidth:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},wrapped:{fontSize:e.typography.pxToRem(12),lineHeight:1.5},wrapper:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"100%",flexDirection:"column"}}},{name:"MuiTab"})(u)},41433:(e,t,r)=>{r.d(t,{A:()=>m});var o=r(89575),n=r(39850),l=r(95478),a=r(36274),i=r(49839),c=r(50222),s=r(7031),d=r(97740),u=l.createElement(i.A,{fontSize:"small"}),f=l.createElement(c.A,{fontSize:"small"}),p=l.forwardRef(function(e,t){var r=e.classes,i=e.className,c=e.direction,s=e.orientation,p=e.disabled,m=(0,n.A)(e,["classes","className","direction","orientation","disabled"]);return l.createElement(d.A,(0,o.A)({component:"div",className:(0,a.A)(r.root,i,p&&r.disabled,"vertical"===s&&r.vertical),ref:t,role:null,tabIndex:null},m),"left"===c?u:f)});const m=(0,s.A)({root:{width:40,flexShrink:0,opacity:.8,"&$disabled":{opacity:0}},vertical:{width:"100%",height:40,"& svg":{transform:"rotate(90deg)"}},disabled:{}},{name:"MuiTabScrollButton"})(p)},45634:(e,t,r)=>{r.d(t,{A:()=>h});var o=r(89575),n=r(83705),l=r(39850),a=r(95478),i=(r(26948),r(36274)),c=r(7031),s=r(72501),d=r(268);const u=(0,r(38483).A)(a.createElement("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreHoriz");var f=r(97740);const p=(0,c.A)(function(e){return{root:{display:"flex",marginLeft:e.spacing(.5),marginRight:e.spacing(.5),backgroundColor:e.palette.grey[100],color:e.palette.grey[700],borderRadius:2,cursor:"pointer","&:hover, &:focus":{backgroundColor:e.palette.grey[200]},"&:active":{boxShadow:e.shadows[0],backgroundColor:(0,d.tL)(e.palette.grey[200],.12)}},icon:{width:24,height:16}}},{name:"PrivateBreadcrumbCollapsed"})(function(e){var t=e.classes,r=(0,l.A)(e,["classes"]);return a.createElement(f.A,(0,o.A)({component:"li",className:t.root,focusRipple:!0},r),a.createElement(u,{className:t.icon}))});var m=a.forwardRef(function(e,t){var r=e.children,c=e.classes,d=e.className,u=e.component,f=void 0===u?"nav":u,m=e.expandText,h=void 0===m?"Show path":m,v=e.itemsAfterCollapse,b=void 0===v?1:v,g=e.itemsBeforeCollapse,A=void 0===g?1:g,w=e.maxItems,y=void 0===w?8:w,x=e.separator,C=void 0===x?"/":x,E=(0,l.A)(e,["children","classes","className","component","expandText","itemsAfterCollapse","itemsBeforeCollapse","maxItems","separator"]),k=a.useState(!1),S=k[0],N=k[1],B=a.Children.toArray(r).filter(function(e){return a.isValidElement(e)}).map(function(e,t){return a.createElement("li",{className:c.li,key:"child-".concat(t)},e)});return a.createElement(s.A,(0,o.A)({ref:t,component:f,color:"textSecondary",className:(0,i.A)(c.root,d)},E),a.createElement("ol",{className:c.ol},function(e,t,r){return e.reduce(function(o,n,l){return l<e.length-1?o=o.concat(n,a.createElement("li",{"aria-hidden":!0,key:"separator-".concat(l),className:t},r)):o.push(n),o},[])}(S||y&&B.length<=y?B:function(e){return A+b>=e.length?e:[].concat((0,n.A)(e.slice(0,A)),[a.createElement(p,{"aria-label":h,key:"ellipsis",onClick:function(e){N(!0);var t=e.currentTarget.parentNode.querySelector("a[href],button,[tabindex]");t&&t.focus()}})],(0,n.A)(e.slice(e.length-b,e.length)))}(B),c.separator,C)))});const h=(0,c.A)({root:{},ol:{display:"flex",flexWrap:"wrap",alignItems:"center",padding:0,margin:0,listStyle:"none"},li:{},separator:{display:"flex",userSelect:"none",marginLeft:8,marginRight:8}},{name:"MuiBreadcrumbs"})(m)},49839:(e,t,r)=>{r.d(t,{A:()=>n});var o=r(95478);const n=(0,r(38483).A)(o.createElement("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft")},50222:(e,t,r)=>{r.d(t,{A:()=>n});var o=r(95478);const n=(0,r(38483).A)(o.createElement("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight")},58837:(e,t,r)=>{r.d(t,{A:()=>a});var o=r(89575),n=r(11942),l=r(37247);const a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,n.makeStyles)(e,(0,o.A)({defaultTheme:l.A},t))}}}]);
|
|
2
|
+
//# sourceMappingURL=7076.8745d395.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/7076.8745d395.chunk.js","mappings":"0JACIA,E,uFAqBG,SAASC,IACd,GAAID,EACF,OAAOA,EAGT,IAAIE,EAAQC,SAASC,cAAc,OAC/BC,EAAYF,SAASC,cAAc,OAyBvC,OAxBAC,EAAUC,MAAMC,MAAQ,OACxBF,EAAUC,MAAME,OAAS,MACzBN,EAAMO,YAAYJ,GAClBH,EAAMQ,IAAM,MACZR,EAAMI,MAAMK,SAAW,OACvBT,EAAMI,MAAMC,MAAQ,MACpBL,EAAMI,MAAME,OAAS,MACrBN,EAAMI,MAAMM,SAAW,WACvBV,EAAMI,MAAMO,IAAM,UAClBX,EAAMI,MAAMQ,SAAW,SACvBX,SAASY,KAAKN,YAAYP,GAC1BF,EAAa,UAETE,EAAMc,WAAa,EACrBhB,EAAa,WAEbE,EAAMc,WAAa,EAEM,IAArBd,EAAMc,aACRhB,EAAa,aAIjBG,SAASY,KAAKE,YAAYf,GACnBF,CACT,CAEO,SAASkB,EAAwBC,EAASC,GAC/C,IAAIJ,EAAaG,EAAQH,WAEzB,GAAkB,QAAdI,EACF,OAAOJ,EAKT,OAFWf,KAGT,IAAK,WACH,OAAOkB,EAAQE,YAAcF,EAAQG,YAAcN,EAErD,IAAK,UACH,OAAOG,EAAQE,YAAcF,EAAQG,YAAcN,EAErD,QACE,OAAOA,EAEb,CC3EA,SAASO,EAAaC,GACpB,OAAQ,EAAIC,KAAKC,IAAID,KAAKE,GAAKH,EAAOC,KAAKE,GAAK,IAAM,CACxD,CCGA,IAAIC,EAAS,CACXrB,MAAO,GACPC,OAAQ,GACRI,SAAU,WACVC,KAAM,KACNC,SAAU,UAQG,SAASe,EAAcC,GACpC,IAAIC,EAAWD,EAAMC,SACjBC,GAAQ,OAAyBF,EAAO,CAAC,aAEzCG,EAAkB,WAClBC,EAAU,SAAa,MAEvBC,EAAkB,WACpBF,EAAgBG,QAAUF,EAAQE,QAAQC,aAAeH,EAAQE,QAAQE,YAC3E,EAqBA,OAnBA,YAAgB,WACd,IAAIC,GAAe,EAAAC,EAAA,GAAS,WAC1B,IAAIC,EAAaR,EAAgBG,QACjCD,IAEIM,IAAeR,EAAgBG,SACjCL,EAASE,EAAgBG,QAE7B,GAEA,OADAM,OAAOC,iBAAiB,SAAUJ,GAC3B,WACLA,EAAaK,QACbF,OAAOG,oBAAoB,SAAUN,EACvC,CACF,EAAG,CAACR,IACJ,YAAgB,WACdI,IACAJ,EAASE,EAAgBG,QAC3B,EAAG,CAACL,IACgB,gBAAoB,OAAO,OAAS,CACtDzB,MAAOsB,EACPkB,IAAKZ,GACJF,GACL,C,yBCnBIe,EAA4B,aAAiB,SAAsBjB,EAAOgB,GAC5E,IAAIE,EAAUlB,EAAMkB,QAChBC,EAAYnB,EAAMmB,UAClBC,EAAQpB,EAAMoB,MACdC,EAAcrB,EAAMqB,YACpBnB,GAAQ,OAAyBF,EAAO,CAAC,UAAW,YAAa,QAAS,gBAE9E,OAAoB,gBAAoB,QAAQ,OAAS,CACvDmB,WAAW,OAAKD,EAAQI,KAAMJ,EAAQ,QAAQK,QAAO,EAAAC,EAAA,GAAWJ,KAAUD,EAA2B,aAAhBE,GAA8BH,EAAQO,UAC3HT,IAAKA,GACJd,GACL,GAwBA,SAAe,EAAAwB,EAAA,GA7DK,SAAgBC,GAClC,MAAO,CACLL,KAAM,CACJxC,SAAU,WACVJ,OAAQ,EACRkD,OAAQ,EACRnD,MAAO,OACPoD,WAAYF,EAAMG,YAAYC,UAEhCC,aAAc,CACZC,gBAAiBN,EAAMO,QAAQC,QAAQC,MAEzCC,eAAgB,CACdJ,gBAAiBN,EAAMO,QAAQI,UAAUF,MAE3CX,SAAU,CACR/C,OAAQ,OACRD,MAAO,EACP8D,MAAO,GAGb,EAwCkC,CAChCC,KAAM,uBADR,CAEGvB,G,qCCiBCwB,EAAoB,aAAiB,SAAczC,EAAOgB,GAC5D,IAAI0B,EAAY1C,EAAM,cAClB2C,EAAiB3C,EAAM,mBACvB4C,EAAS5C,EAAM4C,OACfC,EAAkB7C,EAAM8C,SACxBA,OAA+B,IAApBD,GAAqCA,EAChDE,EAAe/C,EAAMgD,SACrB9B,EAAUlB,EAAMkB,QAChBC,EAAYnB,EAAMmB,UAClB8B,EAAmBjD,EAAMkD,UACzBC,OAAiC,IAArBF,EAA8B,MAAQA,EAClDG,EAAwBpD,EAAMqD,eAC9BA,OAA2C,IAA1BD,EAAmC,YAAcA,EAClEnD,EAAWD,EAAMC,SACjBqD,EAAqBtD,EAAMqB,YAC3BA,OAAqC,IAAvBiC,EAAgC,aAAeA,EAC7DC,EAAwBvD,EAAMwD,sBAC9BA,OAAkD,IAA1BD,EAAmCE,EAAA,EAAkBF,EAC7EG,EAAuB1D,EAAM2D,cAC7BA,OAAyC,IAAzBD,EAAkC,OAASA,EAC3DE,EAAwB5D,EAAM4D,sBAC9BC,EAAwB7D,EAAM8D,kBAC9BA,OAA8C,IAA1BD,EAAmC,CAAC,EAAIA,EAC5DE,EAAuB/D,EAAM+D,qBAC7BC,EAAmBhE,EAAMiE,UACzBA,OAAiC,IAArBD,EAA8B,UAAYA,EACtDE,EAAQlE,EAAMkE,MACdC,EAAiBnE,EAAMoE,QACvBA,OAA6B,IAAnBD,EAA4B,WAAaA,EACnDjE,GAAQ,OAAyBF,EAAO,CAAC,aAAc,kBAAmB,SAAU,WAAY,WAAY,UAAW,YAAa,YAAa,iBAAkB,WAAY,cAAe,wBAAyB,gBAAiB,wBAAyB,oBAAqB,uBAAwB,YAAa,QAAS,YAEpU2B,GAAQ,EAAA0C,EAAA,KACRC,EAAyB,eAAZF,EACbG,EAA4B,QAApB5C,EAAMrC,UACdmC,EAA2B,aAAhBJ,EACXmD,EAAc/C,EAAW,YAAc,aACvCgD,EAAQhD,EAAW,MAAQ,OAC3BiD,EAAMjD,EAAW,SAAW,QAC5BkD,EAAalD,EAAW,eAAiB,cACzCmD,GAAOnD,EAAW,SAAW,QAQ7BoD,GAAkB,YAAe,GACjCC,GAAUD,GAAgB,GAC1BE,GAAaF,GAAgB,GAE7BG,GAAmB,WAAe,CAAC,GACnCC,GAAiBD,GAAiB,GAClCE,GAAoBF,GAAiB,GAErCG,GAAmB,WAAe,CACpCV,OAAO,EACPC,KAAK,IAEHU,GAAgBD,GAAiB,GACjCE,GAAmBF,GAAiB,GAEpCG,GAAmB,WAAe,CACpCtG,SAAU,SACVuG,aAAc,OAEZC,GAAgBF,GAAiB,GACjCG,GAAmBH,GAAiB,GAEpCI,GAAe,IAAIC,IACnBC,GAAU,SAAa,MACvBC,GAAa,SAAa,MAE1BC,GAAc,WAChB,IACIC,EAkBAC,EAnBAC,EAAWL,GAAQtF,QAGvB,GAAI2F,EAAU,CACZ,IAAIC,EAAOD,EAASE,wBAEpBJ,EAAW,CACTvG,YAAayG,EAASzG,YACtBN,WAAY+G,EAAS/G,WACrBkH,UAAWH,EAASG,UACpBC,qBAAsBjH,EAAwB6G,EAAUtE,EAAMrC,WAC9DC,YAAa0G,EAAS1G,YACtBR,IAAKmH,EAAKnH,IACV6C,OAAQsE,EAAKtE,OACb0E,KAAMJ,EAAKI,KACX/D,MAAO2D,EAAK3D,MAEhB,CAIA,GAAI0D,IAAsB,IAAV/B,EAAiB,CAC/B,IAAIqC,EAAYV,GAAWvF,QAAQ0C,SAEnC,GAAIuD,EAAUC,OAAS,EAAG,CACxB,IAAIC,EAAMF,EAAUb,GAAagB,IAAIxC,IAQrC8B,EAAUS,EAAMA,EAAIN,wBAA0B,IAChD,CACF,CAEA,MAAO,CACLJ,SAAUA,EACVC,QAASA,EAEb,EAEIW,IAAuB,EAAAC,EAAA,GAAiB,WAC1C,IAAIC,EAEAC,EAAehB,KACfC,EAAWe,EAAaf,SACxBC,EAAUc,EAAad,QAEvBe,EAAa,EAEjB,GAAIf,GAAWD,EACb,GAAItE,EACFsF,EAAaf,EAAQjH,IAAMgH,EAAShH,IAAMgH,EAASK,cAC9C,CACL,IAAIY,EAAazC,EAAQwB,EAASM,qBAAuBN,EAASvG,YAAcuG,EAASxG,YAAcwG,EAAS7G,WAChH6H,EAAaf,EAAQM,KAAOP,EAASO,KAAOU,CAC9C,CAGF,IAAIC,GAAqBJ,EAAqB,CAAC,GAAG,OAAgBA,EAAoBpC,EAAOsC,IAAa,OAAgBF,EAAoBjC,GAAMoB,EAAUA,EAAQpB,IAAQ,GAAIiC,GAElL,GAAIK,MAAMjC,GAAeR,KAAWyC,MAAMjC,GAAeL,KACvDM,GAAkB+B,OACb,CACL,IAAIE,EAASxH,KAAKyH,IAAInC,GAAeR,GAASwC,EAAkBxC,IAC5D4C,EAAQ1H,KAAKyH,IAAInC,GAAeL,IAAQqC,EAAkBrC,MAE1DuC,GAAU,GAAKE,GAAS,IAC1BnC,GAAkB+B,EAEtB,CACF,GAEIK,GAAS,SAAgBC,IHxOhB,SAAiBC,EAAUnI,EAASoI,GACjD,IAAIC,EAAUC,UAAUnB,OAAS,QAAsBoB,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EE,EAAKF,UAAUnB,OAAS,QAAsBoB,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,WAAa,EACtFG,EAAgBJ,EAAQK,KACxBA,OAAyB,IAAlBD,EAA2BrI,EAAeqI,EACjDE,EAAoBN,EAAQO,SAC5BA,OAAiC,IAAtBD,EAA+B,IAAMA,EAChDvD,EAAQ,KACRyD,EAAO7I,EAAQmI,GACfW,GAAY,EA6BZD,IAAST,EACXI,EAAG,IAAIO,MAAM,uCAIfC,sBA5BW,SAASC,EAAKC,GACvB,GAAIJ,EACFN,EAAG,IAAIO,MAAM,4BADf,CAKc,OAAV3D,IACFA,EAAQ8D,GAGV,IAAI7I,EAAOC,KAAK6I,IAAI,GAAID,EAAY9D,GAASwD,GAC7C5I,EAAQmI,GAAYO,EAAKrI,IAAS+H,EAAKS,GAAQA,EAE3CxI,GAAQ,EACV2I,sBAAsB,WACpBR,EAAG,KACL,GAIFQ,sBAAsBC,EAhBtB,CAiBF,EASF,CG4LIG,CAAQjE,EAAaoB,GAAQtF,QAASiH,EACxC,EAEImB,GAAiB,SAAwBC,GAC3C,IAAIpB,EAAc3B,GAAQtF,QAAQkE,GAE9B/C,EACF8F,GAAeoB,GAEfpB,GAAeoB,GAASpE,GAAS,EAAI,GAErCgD,GAAehD,GAAgC,YAAvBpG,KAAoC,EAAI,GAGlEmJ,GAAOC,EACT,EAEIqB,GAAyB,WAC3BF,IAAgB9C,GAAQtF,QAAQqE,GAClC,EAEIkE,GAAuB,WACzBH,GAAe9C,GAAQtF,QAAQqE,GACjC,EAEImE,GAA4B,cAAkB,SAAU3I,GAC1DsF,GAAiB,CACfzG,SAAU,KACVuG,cAAepF,GAEnB,EAAG,IA2BC4I,IAAyB,EAAAnC,EAAA,GAAiB,WAC5C,IAAIoC,EAAgBlD,KAChBC,EAAWiD,EAAcjD,SACzBC,EAAUgD,EAAchD,QAE5B,GAAKA,GAAYD,EAIjB,GAAIC,EAAQvB,GAASsB,EAAStB,GAAQ,CAEpC,IAAIwE,EAAkBlD,EAASvB,IAAgBwB,EAAQvB,GAASsB,EAAStB,IACzE6C,GAAO2B,EACT,MAAO,GAAIjD,EAAQtB,GAAOqB,EAASrB,GAAM,CAEvC,IAAIwE,EAAmBnD,EAASvB,IAAgBwB,EAAQtB,GAAOqB,EAASrB,IAExE4C,GAAO4B,EACT,CACF,GACIC,IAA0B,EAAAvC,EAAA,GAAiB,WAC7C,GAAItC,GAAgC,QAAlBX,EAAyB,CACzC,IAMIyF,EACAC,EAPAC,EAAmB1D,GAAQtF,QAC3B8F,EAAYkD,EAAiBlD,UAC7BmD,EAAeD,EAAiBC,aAChC/I,EAAe8I,EAAiB9I,aAChCjB,EAAc+J,EAAiB/J,YAC/BC,EAAc8J,EAAiB9J,YAInC,GAAIiC,EACF2H,EAAkBhD,EAAY,EAC9BiD,EAAgBjD,EAAYmD,EAAe/I,EAAe,MACrD,CACL,IAAItB,EAAaE,EAAwBwG,GAAQtF,QAASqB,EAAMrC,WAEhE8J,EAAkB7E,EAAQrF,EAAaK,EAAcC,EAAc,EAAIN,EAAa,EACpFmK,EAAiB9E,EAAqDrF,EAAa,EAA1DA,EAAaK,EAAcC,EAAc,CACpE,CAEI4J,IAAoBhE,GAAcX,OAAS4E,IAAkBjE,GAAcV,KAC7EW,GAAiB,CACfZ,MAAO2E,EACP1E,IAAK2E,GAGX,CACF,GACA,YAAgB,WACd,IAAI5I,GAAe,EAAAC,EAAA,GAAS,WAC1BiG,KACAwC,IACF,GACIK,GAAM,EAAAC,EAAA,GAAY7D,GAAQtF,SAE9B,OADAkJ,EAAI3I,iBAAiB,SAAUJ,GACxB,WACLA,EAAaK,QACb0I,EAAIzI,oBAAoB,SAAUN,EACpC,CACF,EAAG,CAACkG,GAAsBwC,KAC1B,IAAIO,GAAmB,eAAkB,EAAAhJ,EAAA,GAAS,WAChDyI,IACF,IACA,YAAgB,WACd,OAAO,WACLO,GAAiB5I,OACnB,CACF,EAAG,CAAC4I,KACJ,YAAgB,WACd3E,IAAW,EACb,EAAG,IACH,YAAgB,WACd4B,KACAwC,IACF,GACA,YAAgB,WACdJ,IACF,EAAG,CAACA,GAAwB9D,KAC5B,sBAA0BrC,EAAQ,WAChC,MAAO,CACL+G,gBAAiBhD,GACjBiD,oBAAqBT,GAEzB,EAAG,CAACxC,GAAsBwC,KAC1B,IAAIU,GAAyB,gBAAoB,GAAc,OAAS,CACtE1I,UAAWD,EAAQ2I,UACnBxI,YAAaA,EACbD,MAAOiC,GACNS,EAAmB,CACpBtF,OAAO,OAAS,CAAC,EAAGyG,GAAgBnB,EAAkBtF,UAEpDsL,GAAa,EACb9G,GAAW,WAAe+G,IAAIhH,EAAc,SAAUiH,GACxD,IAAmB,iBAAqBA,GACtC,OAAO,KAST,IAAIC,OAAmCrC,IAAtBoC,EAAMhK,MAAMkE,MAAsB4F,GAAaE,EAAMhK,MAAMkE,MAC5EwB,GAAawE,IAAID,EAAYH,IAC7B,IAAIK,EAAWF,IAAe/F,EAE9B,OADA4F,IAAc,EACM,eAAmBE,EAAO,CAC5CI,UAAuB,cAAZhG,EACXyF,UAAWM,IAAarF,IAAW+E,GACnCM,SAAUA,EACVvG,sBAAuBA,EACvB3D,SAAUA,EACVgE,UAAWA,EACXC,MAAO+F,GAEX,GAkDII,GAhMyB,WAC3B,IAAIA,EAAsB,CAAC,EAC3BA,EAAoBC,sBAAwBhG,EAA0B,gBAAoBvE,EAAe,CACvGoB,UAAWD,EAAQoD,WACnBrE,SAAU6I,KACP,KACL,IAAIyB,EAAsBnF,GAAcX,OAASW,GAAcV,IAC3D8F,EAAoBlG,IAAiC,SAAlBX,GAA4B4G,GAAyC,YAAlB5G,GAAiD,OAAlBA,GAezH,OAdA0G,EAAoBI,kBAAoBD,EAAiC,gBAAoBhH,GAAuB,OAAS,CAC3HnC,YAAaA,EACb/B,UAAWiF,EAAQ,QAAU,OAC7BmG,QAAS9B,GACT+B,UAAWvF,GAAcX,MACzBtD,WAAW,OAAKD,EAAQyC,cAAiC,OAAlBA,GAA0BzC,EAAQ0J,uBACxE7G,IAAyB,KAC5BsG,EAAoBQ,gBAAkBL,EAAiC,gBAAoBhH,GAAuB,OAAS,CACzHnC,YAAaA,EACb/B,UAAWiF,EAAQ,OAAS,QAC5BmG,QAAS7B,GACT8B,UAAWvF,GAAcV,IACzBvD,WAAW,OAAKD,EAAQyC,cAAiC,OAAlBA,GAA0BzC,EAAQ0J,uBACxE7G,IAAyB,KACrBsG,CACT,CAyK0BS,GAC1B,OAAoB,gBAAoB3H,GAAW,OAAS,CAC1DhC,WAAW,OAAKD,EAAQI,KAAMH,EAAWM,GAAYP,EAAQO,UAC7DT,IAAKA,GACJd,GAAQmK,GAAoBI,kBAAmBJ,GAAoBC,sBAAoC,gBAAoB,MAAO,CACnInJ,WAAW,OAAKD,EAAQ6J,SAAUzG,EAAapD,EAAQoD,WAAapD,EAAQ8J,OAC5ExM,MAAOgH,GACPxE,IAAK4E,GACLqF,SAAUvB,IACI,gBAAoB,MAAO,CACzC,aAAchH,EACd,kBAAmBC,EACnBxB,WAAW,OAAKD,EAAQgK,cAAezJ,GAAYP,EAAQiK,sBAAuBrI,IAAawB,GAAcpD,EAAQ4B,UACrHsI,UA7DkB,SAAuBC,GACzC,IAAIC,EAASD,EAAMC,OAMnB,GAAa,QAFFA,EAAOC,aAAa,QAE/B,CAIA,IAAIC,EAAiB,KACjBC,EAAkC,aAAhBpK,EAA6B,YAAc,UAC7DqK,EAA8B,aAAhBrK,EAA6B,aAAe,YAQ9D,OANoB,aAAhBA,GAAkD,QAApBM,EAAMrC,YAEtCmM,EAAkB,aAClBC,EAAc,aAGRL,EAAMM,KACZ,KAAKF,EACHD,EAAiBF,EAAOM,wBAA0B/F,GAAWvF,QAAQuL,UACrE,MAEF,KAAKH,EACHF,EAAiBF,EAAOQ,oBAAsBjG,GAAWvF,QAAQyL,WACjE,MAEF,IAAK,OACHP,EAAiB3F,GAAWvF,QAAQyL,WACpC,MAEF,IAAK,MACHP,EAAiB3F,GAAWvF,QAAQuL,UAOjB,OAAnBL,IACFA,EAAeQ,QACfX,EAAMY,iBAnCR,CAqCF,EAgBEjL,IAAK6E,GACLqG,KAAM,WACLlJ,IAAW8B,IAAW+E,IAAYQ,GAAoBQ,gBAC3D,GAgIA,SAAe,EAAAnJ,EAAA,GA5kBK,SAAgBC,GAClC,MAAO,CAELL,KAAM,CACJtC,SAAU,SACVmN,UAAW,GACXC,wBAAyB,QAEzBC,QAAS,QAIX5K,SAAU,CACR6K,cAAe,UAIjBpB,cAAe,CACbmB,QAAS,QAIXlB,sBAAuB,CACrBmB,cAAe,UAIjBxJ,SAAU,CACRyJ,eAAgB,UAIlBxB,SAAU,CACRjM,SAAU,WACVuN,QAAS,eACTG,KAAM,WACNC,WAAY,UAIdzB,MAAO,CACL0B,UAAW,SACXjO,MAAO,QAIT6F,WAAY,CACVoI,UAAW,SAEXC,eAAgB,OAEhB,uBAAwB,CACtBN,QAAS,SAMb1I,cAAe,CAAC,EAGhBiH,sBAAsB,OAAgB,CAAC,EAAGjJ,EAAMiL,YAAYC,KAAK,MAAO,CACtER,QAAS,SAIXxC,UAAW,CAAC,EAEhB,EAwgBkC,CAChCrH,KAAM,WADR,CAEGC,E,8HC1fCqK,EAAmB,aAAiB,SAAa9M,EAAOgB,GAC1D,IAAIE,EAAUlB,EAAMkB,QAChBC,EAAYnB,EAAMmB,UAClB4L,EAAkB/M,EAAM2K,SACxBA,OAA+B,IAApBoC,GAAqCA,EAChDC,EAAwBhN,EAAMiN,mBAC9BA,OAA+C,IAA1BD,GAA2CA,EAChE5C,EAAYpK,EAAMoK,UAClB8C,EAAOlN,EAAMkN,KACbrD,EAAY7J,EAAM6J,UAClBsD,EAAQnN,EAAMmN,MACdlN,EAAWD,EAAMC,SACjByK,EAAU1K,EAAM0K,QAChB0C,EAAUpN,EAAMoN,QAChBjD,EAAWnK,EAAMmK,SACjBvG,EAAwB5D,EAAM4D,sBAC9BI,EAAmBhE,EAAMiE,UACzBA,OAAiC,IAArBD,EAA8B,UAAYA,EACtDE,EAAQlE,EAAMkE,MACdmJ,EAAiBrN,EAAMsN,QACvBA,OAA6B,IAAnBD,GAAoCA,EAC9CnN,GAAQ,OAAyBF,EAAO,CAAC,UAAW,YAAa,WAAY,qBAAsB,YAAa,OAAQ,YAAa,QAAS,WAAY,UAAW,UAAW,WAAY,wBAAyB,YAAa,QAAS,YAsB/O,OAAoB,gBAAoB,KAAY,OAAS,CAC3DuN,aAAcN,EACd9L,WAAW,OAAKD,EAAQI,KAAMJ,EAAQ,YAAYK,QAAO,OAAW0C,KAAc9C,EAAWwJ,GAAYzJ,EAAQyJ,SAAUR,GAAYjJ,EAAQiJ,SAAUgD,GAASD,GAAQhM,EAAQsM,UAAWpD,GAAalJ,EAAQkJ,UAAWkD,GAAWpM,EAAQoM,SAChPtM,IAAKA,EACLkL,KAAM,MACN,gBAAiB/B,EACjBQ,SAAUA,EACVD,QA3BgB,SAAqBW,GACjCpL,GACFA,EAASoL,EAAOnH,GAGdwG,GACFA,EAAQW,EAEZ,EAoBE+B,QAlBgB,SAAqB/B,GACjCzH,IAA0BuG,GAAYlK,GACxCA,EAASoL,EAAOnH,GAGdkJ,GACFA,EAAQ/B,EAEZ,EAWEoC,SAAUtD,EAAW,GAAK,GACzBjK,GAAqB,gBAAoB,OAAQ,CAClDiB,UAAWD,EAAQwM,SAClBR,EAAMC,GAAQtD,EACnB,GAiGA,SAAe,OArPK,SAAgBlI,GAClC,IAAIgM,EAEJ,MAAO,CAELrM,MAAM,OAAS,CAAC,EAAGK,EAAMiM,WAAWC,QAASF,EAAY,CACvDG,SAAU,IACVC,SAAU,GACVjP,SAAU,WACVkP,UAAW,aACX7B,UAAW,GACX8B,WAAY,EACZC,QAAS,aACR,OAAgBP,EAAWhM,EAAMiL,YAAYuB,GAAG,MAAO,CACxDD,QAAS,cACP,OAAgBP,EAAW,WAAY,WAAW,OAAgBA,EAAW,aAAc,WAAW,OAAgBA,EAAW,YAAa,WAAW,OAAgBA,EAAWhM,EAAMiL,YAAYuB,GAAG,MAAO,CAClNJ,SAAU,MACRJ,IAGJH,UAAW,CACTrB,UAAW,GACXiC,WAAY,EACZ,6BAA8B,CAC5B7I,aAAc,IAKlB8I,iBAAkB,CAChBjN,MAAO,UACPkN,QAAS,GACT,aAAc,CACZA,QAAS,GAEX,aAAc,CACZA,QAAS,KAKbC,iBAAkB,CAChBnN,MAAOO,EAAMO,QAAQsM,KAAKlM,UAC1B,aAAc,CACZlB,MAAOO,EAAMO,QAAQC,QAAQC,MAE/B,aAAc,CACZhB,MAAOO,EAAMO,QAAQsM,KAAK7D,WAK9B8D,mBAAoB,CAClBrN,MAAOO,EAAMO,QAAQsM,KAAKlM,UAC1B,aAAc,CACZlB,MAAOO,EAAMO,QAAQI,UAAUF,MAEjC,aAAc,CACZhB,MAAOO,EAAMO,QAAQsM,KAAK7D,WAK9BR,SAAU,CAAC,EAGXQ,SAAU,CAAC,EAGXP,UAAW,CACT6D,WAAY,EACZS,SAAU,EACVC,UAAW,EACXb,SAAU,QAIZR,QAAS,CACPzO,SAAU8C,EAAMiM,WAAWgB,QAAQ,IACnCC,WAAY,KAIdnB,QAAS,CACPrB,QAAS,cACTyC,WAAY,SACZvC,eAAgB,SAChB9N,MAAO,OACP6N,cAAe,UAGrB,EA0JkC,CAChC9J,KAAM,UADR,CAEGsK,E,8HC9NCiC,EAAoB,gBAAoB,IAAmB,CAC7DlQ,SAAU,UAGRmQ,EAAqB,gBAAoB,IAAoB,CAC/DnQ,SAAU,UAGR4E,EAA+B,aAAiB,SAAyBzD,EAAOgB,GAClF,IAAIE,EAAUlB,EAAMkB,QAChB+N,EAAgBjP,EAAMmB,UACtB7B,EAAYU,EAAMV,UAClB+B,EAAcrB,EAAMqB,YACpBsJ,EAAW3K,EAAM2K,SACjBzK,GAAQ,OAAyBF,EAAO,CAAC,UAAW,YAAa,YAAa,cAAe,aAEjG,OAAoB,gBAAoB,KAAY,OAAS,CAC3DkD,UAAW,MACX/B,WAAW,OAAKD,EAAQI,KAAM2N,EAAetE,GAAYzJ,EAAQyJ,SAA0B,aAAhBtJ,GAA8BH,EAAQO,UACjHT,IAAKA,EACLkL,KAAM,KACNuB,SAAU,MACTvN,GAAsB,SAAdZ,EAAuByP,EAAOC,EAC3C,GAsCA,SAAe,OArFK,CAElB1N,KAAM,CACJ7C,MAAO,GACPwP,WAAY,EACZK,QAAS,GACT,aAAc,CACZA,QAAS,IAKb7M,SAAU,CACRhD,MAAO,OACPC,OAAQ,GACR,QAAS,CACPwQ,UAAW,kBAKfvE,SAAU,CAAC,GAgEqB,CAChCnI,KAAM,sBADR,CAEGiB,E,uIC5FH,SAAe,E,SAAA,GAA4B,gBAAoB,OAAQ,CACrE0L,EAAG,wJACD,a,eCiDJ,SAAe,EAAAzN,EAAA,GAhDF,SAAgBC,GAC3B,MAAO,CACLL,KAAM,CACJ+K,QAAS,OACT+C,WAAYzN,EAAM0N,QAAQ,IAC1BC,YAAa3N,EAAM0N,QAAQ,IAC3BpN,gBAAiBN,EAAMO,QAAQqN,KAAK,KACpCnO,MAAOO,EAAMO,QAAQqN,KAAK,KAC1BC,aAAc,EACdC,OAAQ,UACR,mBAAoB,CAClBxN,gBAAiBN,EAAMO,QAAQqN,KAAK,MAEtC,WAAY,CACVG,UAAW/N,EAAMgO,QAAQ,GACzB1N,iBAAiB,QAAUN,EAAMO,QAAQqN,KAAK,KAAM,OAGxDrC,KAAM,CACJzO,MAAO,GACPC,OAAQ,IAGd,EAyBkC,CAChC8D,KAAM,8BADR,CAnBA,SAA6BxC,GAC3B,IAAIkB,EAAUlB,EAAMkB,QAChBhB,GAAQ,OAAyBF,EAAO,CAAC,YAE7C,OAAoB,gBAAoB4P,EAAA,GAAY,OAAS,CAC3D1M,UAAW,KACX/B,UAAWD,EAAQI,KACnBiM,aAAa,GACZrN,GAAqB,gBAAoB2P,EAAe,CACzD1O,UAAWD,EAAQgM,OAEvB,GCGA,IAAI4C,EAA2B,aAAiB,SAAqB9P,EAAOgB,GAC1E,IAAIgC,EAAWhD,EAAMgD,SACjB9B,EAAUlB,EAAMkB,QAChBC,EAAYnB,EAAMmB,UAClB8B,EAAmBjD,EAAMkD,UACzBC,OAAiC,IAArBF,EAA8B,MAAQA,EAClD8M,EAAoB/P,EAAMgQ,WAC1BA,OAAmC,IAAtBD,EAA+B,YAAcA,EAC1DE,EAAwBjQ,EAAMkQ,mBAC9BA,OAA+C,IAA1BD,EAAmC,EAAIA,EAC5DE,EAAwBnQ,EAAMoQ,oBAC9BA,OAAgD,IAA1BD,EAAmC,EAAIA,EAC7DE,EAAkBrQ,EAAMsQ,SACxBA,OAA+B,IAApBD,EAA6B,EAAIA,EAC5CE,EAAmBvQ,EAAMwQ,UACzBA,OAAiC,IAArBD,EAA8B,IAAMA,EAChDrQ,GAAQ,OAAyBF,EAAO,CAAC,WAAY,UAAW,YAAa,YAAa,aAAc,qBAAsB,sBAAuB,WAAY,cAEjK6E,EAAkB,YAAe,GACjC4L,EAAW5L,EAAgB,GAC3B6L,EAAc7L,EAAgB,GA+B9B8L,EAAW,WAAeC,QAAQ5N,GAAU6N,OAAO,SAAU7G,GAO/D,OAAoB,iBAAqBA,EAC3C,GAAGD,IAAI,SAAUC,EAAO8G,GACtB,OAAoB,gBAAoB,KAAM,CAC5C3P,UAAWD,EAAQ6P,GACnBpF,IAAK,SAASpK,OAAOuP,IACpB9G,EACL,GACA,OAAoB,gBAAoBgH,EAAA,GAAY,OAAS,CAC3DhQ,IAAKA,EACLkC,UAAWC,EACX/B,MAAO,gBACPD,WAAW,OAAKD,EAAQI,KAAMH,IAC7BjB,GAAqB,gBAAoB,KAAM,CAChDiB,UAAWD,EAAQ+P,IAvFvB,SAA0BC,EAAO/P,EAAWqP,GAC1C,OAAOU,EAAMC,OAAO,SAAUC,EAAK9Q,EAASwQ,GAW1C,OAVIA,EAAQI,EAAM1K,OAAS,EACzB4K,EAAMA,EAAI7P,OAAOjB,EAAsB,gBAAoB,KAAM,CAC/D,eAAe,EACfqL,IAAK,aAAapK,OAAOuP,GACzB3P,UAAWA,GACVqP,IAEHY,EAAIC,KAAK/Q,GAGJ8Q,CACT,EAAG,GACL,CA0EKE,CAAiBb,GAAYH,GAAYK,EAASnK,QAAU8J,EAAWK,EAlD1C,SAAmCA,GAcjE,OAAIP,EAAsBF,GAAsBS,EAASnK,OAKhDmK,EAGF,GAAGpP,QAAO,OAAmBoP,EAASY,MAAM,EAAGnB,IAAuB,CAAc,gBAAoB,EAAqB,CAClI,aAAcJ,EACdrE,IAAK,WACLjB,QAxBsB,SAA2BW,GACjDqF,GAAY,GAGZ,IAAIc,EAAYnG,EAAMoG,cAAcC,WAAWC,cAAc,6BAEzDH,GACFA,EAAUxF,OAEd,MAgBK,OAAmB2E,EAASY,MAAMZ,EAASnK,OAAS0J,EAAoBS,EAASnK,SACxF,CAuBqFoL,CAA0BjB,GAAWzP,EAAQsP,UAAWA,IAC/I,GA4DA,SAAe,EAAA9O,EAAA,GA/KK,CAElBJ,KAAM,CAAC,EAGP2P,GAAI,CACF5E,QAAS,OACTwF,SAAU,OACV/C,WAAY,SACZZ,QAAS,EACT4D,OAAQ,EACRC,UAAW,QAIbhB,GAAI,CAAC,EAGLP,UAAW,CACTnE,QAAS,OACT2F,WAAY,OACZ5C,WAAY,EACZE,YAAa,IAyJiB,CAChC9M,KAAM,kBADR,CAEGsN,E,kDCrLH,SAAe,E,SAAA,GAA4B,gBAAoB,OAAQ,CACrEX,EAAG,uDACD,oB,kDCFJ,SAAe,E,SAAA,GAA4B,gBAAoB,OAAQ,CACrEA,EAAG,qDACD,qB,wECGJ,QAPA,SAAoB8C,GAClB,IAAIvK,EAAUC,UAAUnB,OAAS,QAAsBoB,IAAjBD,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAO,IAAAuK,YAAyBD,GAAiB,OAAS,CACxDE,aAAc,KACbzK,GACL,C","sources":["webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/utils/scrollLeft.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/internal/animate.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Tabs/ScrollbarSize.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Tabs/TabIndicator.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Tabs/Tabs.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Tab/Tab.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/TabScrollButton/TabScrollButton.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/internal/svg-icons/MoreHoriz.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Breadcrumbs/BreadcrumbCollapsed.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/Breadcrumbs/Breadcrumbs.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/internal/svg-icons/KeyboardArrowLeft.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/internal/svg-icons/KeyboardArrowRight.js","webpack://internal.plugin-kuadrant/../../node_modules/@material-ui/core/esm/styles/makeStyles.js"],"sourcesContent":["// Source from https://github.com/alitaheri/normalize-scroll-left\nvar cachedType;\n/**\n * Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type\n *\n * Types of scrollLeft, assuming scrollWidth=100 and direction is rtl.\n *\n * Type | <- Most Left | Most Right -> | Initial\n * ---------------- | ------------ | ------------- | -------\n * default | 0 | 100 | 100\n * negative (spec*) | -100 | 0 | 0\n * reverse | 100 | 0 | 0\n *\n * Edge 85: default\n * Safari 14: negative\n * Chrome 85: negative\n * Firefox 81: negative\n * IE 11: reverse\n *\n * spec* https://drafts.csswg.org/cssom-view/#dom-window-scroll\n */\n\nexport function detectScrollType() {\n if (cachedType) {\n return cachedType;\n }\n\n var dummy = document.createElement('div');\n var container = document.createElement('div');\n container.style.width = '10px';\n container.style.height = '1px';\n dummy.appendChild(container);\n dummy.dir = 'rtl';\n dummy.style.fontSize = '14px';\n dummy.style.width = '4px';\n dummy.style.height = '1px';\n dummy.style.position = 'absolute';\n dummy.style.top = '-1000px';\n dummy.style.overflow = 'scroll';\n document.body.appendChild(dummy);\n cachedType = 'reverse';\n\n if (dummy.scrollLeft > 0) {\n cachedType = 'default';\n } else {\n dummy.scrollLeft = 1;\n\n if (dummy.scrollLeft === 0) {\n cachedType = 'negative';\n }\n }\n\n document.body.removeChild(dummy);\n return cachedType;\n} // Based on https://stackoverflow.com/a/24394376\n\nexport function getNormalizedScrollLeft(element, direction) {\n var scrollLeft = element.scrollLeft; // Perform the calculations only when direction is rtl to avoid messing up the ltr bahavior\n\n if (direction !== 'rtl') {\n return scrollLeft;\n }\n\n var type = detectScrollType();\n\n switch (type) {\n case 'negative':\n return element.scrollWidth - element.clientWidth + scrollLeft;\n\n case 'reverse':\n return element.scrollWidth - element.clientWidth - scrollLeft;\n\n default:\n return scrollLeft;\n }\n}","function easeInOutSin(time) {\n return (1 + Math.sin(Math.PI * time - Math.PI / 2)) / 2;\n}\n\nexport default function animate(property, element, to) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var cb = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function () {};\n var _options$ease = options.ease,\n ease = _options$ease === void 0 ? easeInOutSin : _options$ease,\n _options$duration = options.duration,\n duration = _options$duration === void 0 ? 300 : _options$duration;\n var start = null;\n var from = element[property];\n var cancelled = false;\n\n var cancel = function cancel() {\n cancelled = true;\n };\n\n var step = function step(timestamp) {\n if (cancelled) {\n cb(new Error('Animation cancelled'));\n return;\n }\n\n if (start === null) {\n start = timestamp;\n }\n\n var time = Math.min(1, (timestamp - start) / duration);\n element[property] = ease(time) * (to - from) + from;\n\n if (time >= 1) {\n requestAnimationFrame(function () {\n cb(null);\n });\n return;\n }\n\n requestAnimationFrame(step);\n };\n\n if (from === to) {\n cb(new Error('Element already at target position'));\n return cancel;\n }\n\n requestAnimationFrame(step);\n return cancel;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from '../utils/debounce';\nvar styles = {\n width: 99,\n height: 99,\n position: 'absolute',\n top: -9999,\n overflow: 'scroll'\n};\n/**\n * @ignore - internal component.\n * The component originates from https://github.com/STORIS/react-scrollbar-size.\n * It has been moved into the core in order to minimize the bundle size.\n */\n\nexport default function ScrollbarSize(props) {\n var onChange = props.onChange,\n other = _objectWithoutProperties(props, [\"onChange\"]);\n\n var scrollbarHeight = React.useRef();\n var nodeRef = React.useRef(null);\n\n var setMeasurements = function setMeasurements() {\n scrollbarHeight.current = nodeRef.current.offsetHeight - nodeRef.current.clientHeight;\n };\n\n React.useEffect(function () {\n var handleResize = debounce(function () {\n var prevHeight = scrollbarHeight.current;\n setMeasurements();\n\n if (prevHeight !== scrollbarHeight.current) {\n onChange(scrollbarHeight.current);\n }\n });\n window.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n window.removeEventListener('resize', handleResize);\n };\n }, [onChange]);\n React.useEffect(function () {\n setMeasurements();\n onChange(scrollbarHeight.current);\n }, [onChange]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n style: styles,\n ref: nodeRef\n }, other));\n}\nprocess.env.NODE_ENV !== \"production\" ? ScrollbarSize.propTypes = {\n onChange: PropTypes.func.isRequired\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n root: {\n position: 'absolute',\n height: 2,\n bottom: 0,\n width: '100%',\n transition: theme.transitions.create()\n },\n colorPrimary: {\n backgroundColor: theme.palette.primary.main\n },\n colorSecondary: {\n backgroundColor: theme.palette.secondary.main\n },\n vertical: {\n height: '100%',\n width: 2,\n right: 0\n }\n };\n};\n/**\n * @ignore - internal component.\n */\n\nvar TabIndicator = /*#__PURE__*/React.forwardRef(function TabIndicator(props, ref) {\n var classes = props.classes,\n className = props.className,\n color = props.color,\n orientation = props.orientation,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"orientation\"]);\n\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n className: clsx(classes.root, classes[\"color\".concat(capitalize(color))], className, orientation === 'vertical' && classes.vertical),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabIndicator.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * @ignore\n * The color of the tab indicator.\n */\n color: PropTypes.oneOf(['primary', 'secondary']).isRequired,\n\n /**\n * The tabs orientation (layout flow direction).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired\n} : void 0;\nexport default withStyles(styles, {\n name: 'PrivateTabIndicator'\n})(TabIndicator);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport debounce from '../utils/debounce';\nimport ownerWindow from '../utils/ownerWindow';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport withStyles from '../styles/withStyles';\nimport TabIndicator from './TabIndicator';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport useTheme from '../styles/useTheme';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden',\n minHeight: 48,\n WebkitOverflowScrolling: 'touch',\n // Add iOS momentum scrolling.\n display: 'flex'\n },\n\n /* Styles applied to the root element if `orientation=\"vertical\"`. */\n vertical: {\n flexDirection: 'column'\n },\n\n /* Styles applied to the flex container element. */\n flexContainer: {\n display: 'flex'\n },\n\n /* Styles applied to the flex container element if `orientation=\"vertical\"`. */\n flexContainerVertical: {\n flexDirection: 'column'\n },\n\n /* Styles applied to the flex container element if `centered={true}` & `!variant=\"scrollable\"`. */\n centered: {\n justifyContent: 'center'\n },\n\n /* Styles applied to the tablist element. */\n scroller: {\n position: 'relative',\n display: 'inline-block',\n flex: '1 1 auto',\n whiteSpace: 'nowrap'\n },\n\n /* Styles applied to the tablist element if `!variant=\"scrollable\"`\b\b\b. */\n fixed: {\n overflowX: 'hidden',\n width: '100%'\n },\n\n /* Styles applied to the tablist element if `variant=\"scrollable\"`. */\n scrollable: {\n overflowX: 'scroll',\n // Hide dimensionless scrollbar on MacOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n\n }\n },\n\n /* Styles applied to the `ScrollButtonComponent` component. */\n scrollButtons: {},\n\n /* Styles applied to the `ScrollButtonComponent` component if `scrollButtons=\"auto\"` or scrollButtons=\"desktop\"`. */\n scrollButtonsDesktop: _defineProperty({}, theme.breakpoints.down('xs'), {\n display: 'none'\n }),\n\n /* Styles applied to the `TabIndicator` component. */\n indicator: {}\n };\n};\nvar Tabs = /*#__PURE__*/React.forwardRef(function Tabs(props, ref) {\n var ariaLabel = props['aria-label'],\n ariaLabelledBy = props['aria-labelledby'],\n action = props.action,\n _props$centered = props.centered,\n centered = _props$centered === void 0 ? false : _props$centered,\n childrenProp = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$indicatorColor = props.indicatorColor,\n indicatorColor = _props$indicatorColor === void 0 ? 'secondary' : _props$indicatorColor,\n onChange = props.onChange,\n _props$orientation = props.orientation,\n orientation = _props$orientation === void 0 ? 'horizontal' : _props$orientation,\n _props$ScrollButtonCo = props.ScrollButtonComponent,\n ScrollButtonComponent = _props$ScrollButtonCo === void 0 ? TabScrollButton : _props$ScrollButtonCo,\n _props$scrollButtons = props.scrollButtons,\n scrollButtons = _props$scrollButtons === void 0 ? 'auto' : _props$scrollButtons,\n selectionFollowsFocus = props.selectionFollowsFocus,\n _props$TabIndicatorPr = props.TabIndicatorProps,\n TabIndicatorProps = _props$TabIndicatorPr === void 0 ? {} : _props$TabIndicatorPr,\n TabScrollButtonProps = props.TabScrollButtonProps,\n _props$textColor = props.textColor,\n textColor = _props$textColor === void 0 ? 'inherit' : _props$textColor,\n value = props.value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"classes\", \"className\", \"component\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\"]);\n\n var theme = useTheme();\n var scrollable = variant === 'scrollable';\n var isRtl = theme.direction === 'rtl';\n var vertical = orientation === 'vertical';\n var scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n var start = vertical ? 'top' : 'left';\n var end = vertical ? 'bottom' : 'right';\n var clientSize = vertical ? 'clientHeight' : 'clientWidth';\n var size = vertical ? 'height' : 'width';\n\n if (process.env.NODE_ENV !== 'production') {\n if (centered && scrollable) {\n console.error('Material-UI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n }\n }\n\n var _React$useState = React.useState(false),\n mounted = _React$useState[0],\n setMounted = _React$useState[1];\n\n var _React$useState2 = React.useState({}),\n indicatorStyle = _React$useState2[0],\n setIndicatorStyle = _React$useState2[1];\n\n var _React$useState3 = React.useState({\n start: false,\n end: false\n }),\n displayScroll = _React$useState3[0],\n setDisplayScroll = _React$useState3[1];\n\n var _React$useState4 = React.useState({\n overflow: 'hidden',\n marginBottom: null\n }),\n scrollerStyle = _React$useState4[0],\n setScrollerStyle = _React$useState4[1];\n\n var valueToIndex = new Map();\n var tabsRef = React.useRef(null);\n var tabListRef = React.useRef(null);\n\n var getTabsMeta = function getTabsMeta() {\n var tabsNode = tabsRef.current;\n var tabsMeta;\n\n if (tabsNode) {\n var rect = tabsNode.getBoundingClientRect(); // create a new object with ClientRect class props + scrollLeft\n\n tabsMeta = {\n clientWidth: tabsNode.clientWidth,\n scrollLeft: tabsNode.scrollLeft,\n scrollTop: tabsNode.scrollTop,\n scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),\n scrollWidth: tabsNode.scrollWidth,\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n right: rect.right\n };\n }\n\n var tabMeta;\n\n if (tabsNode && value !== false) {\n var _children = tabListRef.current.children;\n\n if (_children.length > 0) {\n var tab = _children[valueToIndex.get(value)];\n\n if (process.env.NODE_ENV !== 'production') {\n if (!tab) {\n console.error([\"Material-UI: The value provided to the Tabs component is invalid.\", \"None of the Tabs' children match with `\".concat(value, \"`.\"), valueToIndex.keys ? \"You can provide one of the following values: \".concat(Array.from(valueToIndex.keys()).join(', '), \".\") : null].join('\\n'));\n }\n }\n\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n }\n }\n\n return {\n tabsMeta: tabsMeta,\n tabMeta: tabMeta\n };\n };\n\n var updateIndicatorState = useEventCallback(function () {\n var _newIndicatorStyle;\n\n var _getTabsMeta = getTabsMeta(),\n tabsMeta = _getTabsMeta.tabsMeta,\n tabMeta = _getTabsMeta.tabMeta;\n\n var startValue = 0;\n\n if (tabMeta && tabsMeta) {\n if (vertical) {\n startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n } else {\n var correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n startValue = tabMeta.left - tabsMeta.left + correction;\n }\n }\n\n var newIndicatorStyle = (_newIndicatorStyle = {}, _defineProperty(_newIndicatorStyle, start, startValue), _defineProperty(_newIndicatorStyle, size, tabMeta ? tabMeta[size] : 0), _newIndicatorStyle);\n\n if (isNaN(indicatorStyle[start]) || isNaN(indicatorStyle[size])) {\n setIndicatorStyle(newIndicatorStyle);\n } else {\n var dStart = Math.abs(indicatorStyle[start] - newIndicatorStyle[start]);\n var dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(newIndicatorStyle);\n }\n }\n });\n\n var scroll = function scroll(scrollValue) {\n animate(scrollStart, tabsRef.current, scrollValue);\n };\n\n var moveTabsScroll = function moveTabsScroll(delta) {\n var scrollValue = tabsRef.current[scrollStart];\n\n if (vertical) {\n scrollValue += delta;\n } else {\n scrollValue += delta * (isRtl ? -1 : 1); // Fix for Edge\n\n scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n }\n\n scroll(scrollValue);\n };\n\n var handleStartScrollClick = function handleStartScrollClick() {\n moveTabsScroll(-tabsRef.current[clientSize]);\n };\n\n var handleEndScrollClick = function handleEndScrollClick() {\n moveTabsScroll(tabsRef.current[clientSize]);\n };\n\n var handleScrollbarSizeChange = React.useCallback(function (scrollbarHeight) {\n setScrollerStyle({\n overflow: null,\n marginBottom: -scrollbarHeight\n });\n }, []);\n\n var getConditionalElements = function getConditionalElements() {\n var conditionalElements = {};\n conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/React.createElement(ScrollbarSize, {\n className: classes.scrollable,\n onChange: handleScrollbarSizeChange\n }) : null;\n var scrollButtonsActive = displayScroll.start || displayScroll.end;\n var showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === 'desktop' || scrollButtons === 'on');\n conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/React.createElement(ScrollButtonComponent, _extends({\n orientation: orientation,\n direction: isRtl ? 'right' : 'left',\n onClick: handleStartScrollClick,\n disabled: !displayScroll.start,\n className: clsx(classes.scrollButtons, scrollButtons !== 'on' && classes.scrollButtonsDesktop)\n }, TabScrollButtonProps)) : null;\n conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/React.createElement(ScrollButtonComponent, _extends({\n orientation: orientation,\n direction: isRtl ? 'left' : 'right',\n onClick: handleEndScrollClick,\n disabled: !displayScroll.end,\n className: clsx(classes.scrollButtons, scrollButtons !== 'on' && classes.scrollButtonsDesktop)\n }, TabScrollButtonProps)) : null;\n return conditionalElements;\n };\n\n var scrollSelectedIntoView = useEventCallback(function () {\n var _getTabsMeta2 = getTabsMeta(),\n tabsMeta = _getTabsMeta2.tabsMeta,\n tabMeta = _getTabsMeta2.tabMeta;\n\n if (!tabMeta || !tabsMeta) {\n return;\n }\n\n if (tabMeta[start] < tabsMeta[start]) {\n // left side of button is out of view\n var nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n scroll(nextScrollStart);\n } else if (tabMeta[end] > tabsMeta[end]) {\n // right side of button is out of view\n var _nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n\n scroll(_nextScrollStart);\n }\n });\n var updateScrollButtonState = useEventCallback(function () {\n if (scrollable && scrollButtons !== 'off') {\n var _tabsRef$current = tabsRef.current,\n scrollTop = _tabsRef$current.scrollTop,\n scrollHeight = _tabsRef$current.scrollHeight,\n clientHeight = _tabsRef$current.clientHeight,\n scrollWidth = _tabsRef$current.scrollWidth,\n clientWidth = _tabsRef$current.clientWidth;\n var showStartScroll;\n var showEndScroll;\n\n if (vertical) {\n showStartScroll = scrollTop > 1;\n showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n } else {\n var scrollLeft = getNormalizedScrollLeft(tabsRef.current, theme.direction); // use 1 for the potential rounding error with browser zooms.\n\n showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n }\n\n if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n setDisplayScroll({\n start: showStartScroll,\n end: showEndScroll\n });\n }\n }\n });\n React.useEffect(function () {\n var handleResize = debounce(function () {\n updateIndicatorState();\n updateScrollButtonState();\n });\n var win = ownerWindow(tabsRef.current);\n win.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n win.removeEventListener('resize', handleResize);\n };\n }, [updateIndicatorState, updateScrollButtonState]);\n var handleTabsScroll = React.useCallback(debounce(function () {\n updateScrollButtonState();\n }));\n React.useEffect(function () {\n return function () {\n handleTabsScroll.clear();\n };\n }, [handleTabsScroll]);\n React.useEffect(function () {\n setMounted(true);\n }, []);\n React.useEffect(function () {\n updateIndicatorState();\n updateScrollButtonState();\n });\n React.useEffect(function () {\n scrollSelectedIntoView();\n }, [scrollSelectedIntoView, indicatorStyle]);\n React.useImperativeHandle(action, function () {\n return {\n updateIndicator: updateIndicatorState,\n updateScrollButtons: updateScrollButtonState\n };\n }, [updateIndicatorState, updateScrollButtonState]);\n var indicator = /*#__PURE__*/React.createElement(TabIndicator, _extends({\n className: classes.indicator,\n orientation: orientation,\n color: indicatorColor\n }, TabIndicatorProps, {\n style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n }));\n var childIndex = 0;\n var children = React.Children.map(childrenProp, function (child) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n var childValue = child.props.value === undefined ? childIndex : child.props.value;\n valueToIndex.set(childValue, childIndex);\n var selected = childValue === value;\n childIndex += 1;\n return /*#__PURE__*/React.cloneElement(child, {\n fullWidth: variant === 'fullWidth',\n indicator: selected && !mounted && indicator,\n selected: selected,\n selectionFollowsFocus: selectionFollowsFocus,\n onChange: onChange,\n textColor: textColor,\n value: childValue\n });\n });\n\n var handleKeyDown = function handleKeyDown(event) {\n var target = event.target; // Keyboard navigation assumes that [role=\"tab\"] are siblings\n // though we might warn in the future about nested, interactive elements\n // as a a11y violation\n\n var role = target.getAttribute('role');\n\n if (role !== 'tab') {\n return;\n }\n\n var newFocusTarget = null;\n var previousItemKey = orientation !== \"vertical\" ? 'ArrowLeft' : 'ArrowUp';\n var nextItemKey = orientation !== \"vertical\" ? 'ArrowRight' : 'ArrowDown';\n\n if (orientation !== \"vertical\" && theme.direction === 'rtl') {\n // swap previousItemKey with nextItemKey\n previousItemKey = 'ArrowRight';\n nextItemKey = 'ArrowLeft';\n }\n\n switch (event.key) {\n case previousItemKey:\n newFocusTarget = target.previousElementSibling || tabListRef.current.lastChild;\n break;\n\n case nextItemKey:\n newFocusTarget = target.nextElementSibling || tabListRef.current.firstChild;\n break;\n\n case 'Home':\n newFocusTarget = tabListRef.current.firstChild;\n break;\n\n case 'End':\n newFocusTarget = tabListRef.current.lastChild;\n break;\n\n default:\n break;\n }\n\n if (newFocusTarget !== null) {\n newFocusTarget.focus();\n event.preventDefault();\n }\n };\n\n var conditionalElements = getConditionalElements();\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, vertical && classes.vertical),\n ref: ref\n }, other), conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(classes.scroller, scrollable ? classes.scrollable : classes.fixed),\n style: scrollerStyle,\n ref: tabsRef,\n onScroll: handleTabsScroll\n }, /*#__PURE__*/React.createElement(\"div\", {\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n className: clsx(classes.flexContainer, vertical && classes.flexContainerVertical, centered && !scrollable && classes.centered),\n onKeyDown: handleKeyDown,\n ref: tabListRef,\n role: \"tablist\"\n }, children), mounted && indicator), conditionalElements.scrollButtonEnd);\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Callback fired when the component mounts.\n * This is useful when you want to trigger an action programmatically.\n * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n *\n * @param {object} actions This object contains all possible actions\n * that can be triggered programmatically.\n */\n action: refType,\n\n /**\n * The label for the Tabs as a string.\n */\n 'aria-label': PropTypes.string,\n\n /**\n * An id or list of ids separated by a space that label the Tabs.\n */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * If `true`, the tabs will be centered.\n * This property is intended for large views.\n */\n centered: PropTypes.bool,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Determines the color of the indicator.\n */\n indicatorColor: PropTypes.oneOf(['primary', 'secondary']),\n\n /**\n * Callback fired when the value changes.\n *\n * @param {object} event The event source of the callback\n * @param {any} value We default to the index of the child (number)\n */\n onChange: PropTypes.func,\n\n /**\n * The tabs orientation (layout flow direction).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n /**\n * The component used to render the scroll buttons.\n */\n ScrollButtonComponent: PropTypes.elementType,\n\n /**\n * Determine behavior of scroll buttons when tabs are set to scroll:\n *\n * - `auto` will only present them when not all the items are visible.\n * - `desktop` will only present them on medium and larger viewports.\n * - `on` will always present them.\n * - `off` will never present them.\n */\n scrollButtons: PropTypes.oneOf(['auto', 'desktop', 'off', 'on']),\n\n /**\n * If `true` the selected tab changes on focus. Otherwise it only\n * changes on activation.\n */\n selectionFollowsFocus: PropTypes.bool,\n\n /**\n * Props applied to the tab indicator element.\n */\n TabIndicatorProps: PropTypes.object,\n\n /**\n * Props applied to the [`TabScrollButton`](/api/tab-scroll-button/) element.\n */\n TabScrollButtonProps: PropTypes.object,\n\n /**\n * Determines the color of the `Tab`.\n */\n textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n\n /**\n * The value of the currently selected `Tab`.\n * If you don't want any selected `Tab`, you can set this property to `false`.\n */\n value: PropTypes.any,\n\n /**\n * Determines additional display behavior of the tabs:\n *\n * - `scrollable` will invoke scrolling properties and allow for horizontally\n * scrolling (or swiping) of the tab bar.\n * -`fullWidth` will make the tabs grow to use all the available space,\n * which should be used for small views, like on mobile.\n * - `standard` will render the default state.\n */\n variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTabs'\n})(Tabs);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport unsupportedProp from '../utils/unsupportedProp';\nexport var styles = function styles(theme) {\n var _extends2;\n\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.button, (_extends2 = {\n maxWidth: 264,\n minWidth: 72,\n position: 'relative',\n boxSizing: 'border-box',\n minHeight: 48,\n flexShrink: 0,\n padding: '6px 12px'\n }, _defineProperty(_extends2, theme.breakpoints.up('sm'), {\n padding: '6px 24px'\n }), _defineProperty(_extends2, \"overflow\", 'hidden'), _defineProperty(_extends2, \"whiteSpace\", 'normal'), _defineProperty(_extends2, \"textAlign\", 'center'), _defineProperty(_extends2, theme.breakpoints.up('sm'), {\n minWidth: 160\n }), _extends2)),\n\n /* Styles applied to the root element if both `icon` and `label` are provided. */\n labelIcon: {\n minHeight: 72,\n paddingTop: 9,\n '& $wrapper > *:first-child': {\n marginBottom: 6\n }\n },\n\n /* Styles applied to the root element if the parent [`Tabs`](/api/tabs/) has `textColor=\"inherit\"`. */\n textColorInherit: {\n color: 'inherit',\n opacity: 0.7,\n '&$selected': {\n opacity: 1\n },\n '&$disabled': {\n opacity: 0.5\n }\n },\n\n /* Styles applied to the root element if the parent [`Tabs`](/api/tabs/) has `textColor=\"primary\"`. */\n textColorPrimary: {\n color: theme.palette.text.secondary,\n '&$selected': {\n color: theme.palette.primary.main\n },\n '&$disabled': {\n color: theme.palette.text.disabled\n }\n },\n\n /* Styles applied to the root element if the parent [`Tabs`](/api/tabs/) has `textColor=\"secondary\"`. */\n textColorSecondary: {\n color: theme.palette.text.secondary,\n '&$selected': {\n color: theme.palette.secondary.main\n },\n '&$disabled': {\n color: theme.palette.text.disabled\n }\n },\n\n /* Pseudo-class applied to the root element if `selected={true}` (controlled by the Tabs component). */\n selected: {},\n\n /* Pseudo-class applied to the root element if `disabled={true}` (controlled by the Tabs component). */\n disabled: {},\n\n /* Styles applied to the root element if `fullWidth={true}` (controlled by the Tabs component). */\n fullWidth: {\n flexShrink: 1,\n flexGrow: 1,\n flexBasis: 0,\n maxWidth: 'none'\n },\n\n /* Styles applied to the root element if `wrapped={true}`. */\n wrapped: {\n fontSize: theme.typography.pxToRem(12),\n lineHeight: 1.5\n },\n\n /* Styles applied to the `icon` and `label`'s wrapper element. */\n wrapper: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n flexDirection: 'column'\n }\n };\n};\nvar Tab = /*#__PURE__*/React.forwardRef(function Tab(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableFocusRi = props.disableFocusRipple,\n disableFocusRipple = _props$disableFocusRi === void 0 ? false : _props$disableFocusRi,\n fullWidth = props.fullWidth,\n icon = props.icon,\n indicator = props.indicator,\n label = props.label,\n onChange = props.onChange,\n onClick = props.onClick,\n onFocus = props.onFocus,\n selected = props.selected,\n selectionFollowsFocus = props.selectionFollowsFocus,\n _props$textColor = props.textColor,\n textColor = _props$textColor === void 0 ? 'inherit' : _props$textColor,\n value = props.value,\n _props$wrapped = props.wrapped,\n wrapped = _props$wrapped === void 0 ? false : _props$wrapped,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"disabled\", \"disableFocusRipple\", \"fullWidth\", \"icon\", \"indicator\", \"label\", \"onChange\", \"onClick\", \"onFocus\", \"selected\", \"selectionFollowsFocus\", \"textColor\", \"value\", \"wrapped\"]);\n\n var handleClick = function handleClick(event) {\n if (onChange) {\n onChange(event, value);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n var handleFocus = function handleFocus(event) {\n if (selectionFollowsFocus && !selected && onChange) {\n onChange(event, value);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n focusRipple: !disableFocusRipple,\n className: clsx(classes.root, classes[\"textColor\".concat(capitalize(textColor))], className, disabled && classes.disabled, selected && classes.selected, label && icon && classes.labelIcon, fullWidth && classes.fullWidth, wrapped && classes.wrapped),\n ref: ref,\n role: \"tab\",\n \"aria-selected\": selected,\n disabled: disabled,\n onClick: handleClick,\n onFocus: handleFocus,\n tabIndex: selected ? 0 : -1\n }, other), /*#__PURE__*/React.createElement(\"span\", {\n className: classes.wrapper\n }, icon, label), indicator);\n});\nprocess.env.NODE_ENV !== \"production\" ? Tab.propTypes = {\n /**\n * This prop isn't supported.\n * Use the `component` prop if you need to change the children structure.\n */\n children: unsupportedProp,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the tab will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple will be disabled.\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect will be disabled.\n */\n disableRipple: PropTypes.bool,\n\n /**\n * @ignore\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The icon element.\n */\n icon: PropTypes.node,\n\n /**\n * @ignore\n * For server-side rendering consideration, we let the selected tab\n * render the indicator.\n */\n indicator: PropTypes.node,\n\n /**\n * The label element.\n */\n label: PropTypes.node,\n\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n\n /**\n * @ignore\n */\n selected: PropTypes.bool,\n\n /**\n * @ignore\n */\n selectionFollowsFocus: PropTypes.bool,\n\n /**\n * @ignore\n */\n textColor: PropTypes.oneOf(['secondary', 'primary', 'inherit']),\n\n /**\n * You can provide your own value. Otherwise, we fallback to the child position index.\n */\n value: PropTypes.any,\n\n /**\n * Tab labels appear in a single row.\n * They can use a second line if needed.\n */\n wrapped: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTab'\n})(Tab);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n\n/* eslint-disable jsx-a11y/aria-role */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport KeyboardArrowLeft from '../internal/svg-icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '../internal/svg-icons/KeyboardArrowRight';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n width: 40,\n flexShrink: 0,\n opacity: 0.8,\n '&$disabled': {\n opacity: 0\n }\n },\n\n /* Styles applied to the root element if `orientation=\"vertical\"`. */\n vertical: {\n width: '100%',\n height: 40,\n '& svg': {\n transform: 'rotate(90deg)'\n }\n },\n\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {}\n};\n\nvar _ref = /*#__PURE__*/React.createElement(KeyboardArrowLeft, {\n fontSize: \"small\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(KeyboardArrowRight, {\n fontSize: \"small\"\n});\n\nvar TabScrollButton = /*#__PURE__*/React.forwardRef(function TabScrollButton(props, ref) {\n var classes = props.classes,\n classNameProp = props.className,\n direction = props.direction,\n orientation = props.orientation,\n disabled = props.disabled,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"direction\", \"orientation\", \"disabled\"]);\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n component: \"div\",\n className: clsx(classes.root, classNameProp, disabled && classes.disabled, orientation === 'vertical' && classes.vertical),\n ref: ref,\n role: null,\n tabIndex: null\n }, other), direction === 'left' ? _ref : _ref2);\n});\nprocess.env.NODE_ENV !== \"production\" ? TabScrollButton.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Which direction should the button indicate?\n */\n direction: PropTypes.oneOf(['left', 'right']).isRequired,\n\n /**\n * If `true`, the element will be disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * The tabs orientation (layout flow direction).\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTabScrollButton'\n})(TabScrollButton);","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreHoriz');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '../styles/withStyles';\nimport { emphasize } from '../styles/colorManipulator';\nimport MoreHorizIcon from '../internal/svg-icons/MoreHoriz';\nimport ButtonBase from '../ButtonBase';\n\nvar styles = function styles(theme) {\n return {\n root: {\n display: 'flex',\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n backgroundColor: theme.palette.grey[100],\n color: theme.palette.grey[700],\n borderRadius: 2,\n cursor: 'pointer',\n '&:hover, &:focus': {\n backgroundColor: theme.palette.grey[200]\n },\n '&:active': {\n boxShadow: theme.shadows[0],\n backgroundColor: emphasize(theme.palette.grey[200], 0.12)\n }\n },\n icon: {\n width: 24,\n height: 16\n }\n };\n};\n/**\n * @ignore - internal component.\n */\n\n\nfunction BreadcrumbCollapsed(props) {\n var classes = props.classes,\n other = _objectWithoutProperties(props, [\"classes\"]);\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n component: \"li\",\n className: classes.root,\n focusRipple: true\n }, other), /*#__PURE__*/React.createElement(MoreHorizIcon, {\n className: classes.icon\n }));\n}\n\nprocess.env.NODE_ENV !== \"production\" ? BreadcrumbCollapsed.propTypes = {\n /**\n * @ignore\n */\n classes: PropTypes.object.isRequired\n} : void 0;\nexport default withStyles(styles, {\n name: 'PrivateBreadcrumbCollapsed'\n})(BreadcrumbCollapsed);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nimport BreadcrumbCollapsed from './BreadcrumbCollapsed';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {},\n\n /* Styles applied to the ol element. */\n ol: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n padding: 0,\n margin: 0,\n listStyle: 'none'\n },\n\n /* Styles applied to the li element. */\n li: {},\n\n /* Styles applied to the separator element. */\n separator: {\n display: 'flex',\n userSelect: 'none',\n marginLeft: 8,\n marginRight: 8\n }\n};\n\nfunction insertSeparators(items, className, separator) {\n return items.reduce(function (acc, current, index) {\n if (index < items.length - 1) {\n acc = acc.concat(current, /*#__PURE__*/React.createElement(\"li\", {\n \"aria-hidden\": true,\n key: \"separator-\".concat(index),\n className: className\n }, separator));\n } else {\n acc.push(current);\n }\n\n return acc;\n }, []);\n}\n\nvar Breadcrumbs = /*#__PURE__*/React.forwardRef(function Breadcrumbs(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'nav' : _props$component,\n _props$expandText = props.expandText,\n expandText = _props$expandText === void 0 ? 'Show path' : _props$expandText,\n _props$itemsAfterColl = props.itemsAfterCollapse,\n itemsAfterCollapse = _props$itemsAfterColl === void 0 ? 1 : _props$itemsAfterColl,\n _props$itemsBeforeCol = props.itemsBeforeCollapse,\n itemsBeforeCollapse = _props$itemsBeforeCol === void 0 ? 1 : _props$itemsBeforeCol,\n _props$maxItems = props.maxItems,\n maxItems = _props$maxItems === void 0 ? 8 : _props$maxItems,\n _props$separator = props.separator,\n separator = _props$separator === void 0 ? '/' : _props$separator,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"expandText\", \"itemsAfterCollapse\", \"itemsBeforeCollapse\", \"maxItems\", \"separator\"]);\n\n var _React$useState = React.useState(false),\n expanded = _React$useState[0],\n setExpanded = _React$useState[1];\n\n var renderItemsBeforeAndAfter = function renderItemsBeforeAndAfter(allItems) {\n var handleClickExpand = function handleClickExpand(event) {\n setExpanded(true); // The clicked element received the focus but gets removed from the DOM.\n // Let's keep the focus in the component after expanding.\n\n var focusable = event.currentTarget.parentNode.querySelector('a[href],button,[tabindex]');\n\n if (focusable) {\n focusable.focus();\n }\n }; // This defends against someone passing weird input, to ensure that if all\n // items would be shown anyway, we just show all items without the EllipsisItem\n\n\n if (itemsBeforeCollapse + itemsAfterCollapse >= allItems.length) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['Material-UI: You have provided an invalid combination of props to the Breadcrumbs.', \"itemsAfterCollapse={\".concat(itemsAfterCollapse, \"} + itemsBeforeCollapse={\").concat(itemsBeforeCollapse, \"} >= maxItems={\").concat(maxItems, \"}\")].join('\\n'));\n }\n\n return allItems;\n }\n\n return [].concat(_toConsumableArray(allItems.slice(0, itemsBeforeCollapse)), [/*#__PURE__*/React.createElement(BreadcrumbCollapsed, {\n \"aria-label\": expandText,\n key: \"ellipsis\",\n onClick: handleClickExpand\n })], _toConsumableArray(allItems.slice(allItems.length - itemsAfterCollapse, allItems.length)));\n };\n\n var allItems = React.Children.toArray(children).filter(function (child) {\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Breadcrumbs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n return /*#__PURE__*/React.isValidElement(child);\n }).map(function (child, index) {\n return /*#__PURE__*/React.createElement(\"li\", {\n className: classes.li,\n key: \"child-\".concat(index)\n }, child);\n });\n return /*#__PURE__*/React.createElement(Typography, _extends({\n ref: ref,\n component: Component,\n color: \"textSecondary\",\n className: clsx(classes.root, className)\n }, other), /*#__PURE__*/React.createElement(\"ol\", {\n className: classes.ol\n }, insertSeparators(expanded || maxItems && allItems.length <= maxItems ? allItems : renderItemsBeforeAndAfter(allItems), classes.separator, separator)));\n});\nprocess.env.NODE_ENV !== \"production\" ? Breadcrumbs.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The breadcrumb children.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * Override the default label for the expand button.\n *\n * For localization purposes, you can use the provided [translations](/guides/localization/).\n */\n expandText: PropTypes.string,\n\n /**\n * If max items is exceeded, the number of items to show after the ellipsis.\n */\n itemsAfterCollapse: PropTypes.number,\n\n /**\n * If max items is exceeded, the number of items to show before the ellipsis.\n */\n itemsBeforeCollapse: PropTypes.number,\n\n /**\n * Specifies the maximum number of breadcrumbs to display. When there are more\n * than the maximum number, only the first `itemsBeforeCollapse` and last `itemsAfterCollapse`\n * will be shown, with an ellipsis in between.\n */\n maxItems: PropTypes.number,\n\n /**\n * Custom separator node.\n */\n separator: PropTypes.node\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiBreadcrumbs'\n})(Breadcrumbs);","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"\n}), 'KeyboardArrowLeft');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"\n}), 'KeyboardArrowRight');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { makeStyles as makeStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\n\nfunction makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return makeStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\n\nexport default makeStyles;"],"names":["cachedType","detectScrollType","dummy","document","createElement","container","style","width","height","appendChild","dir","fontSize","position","top","overflow","body","scrollLeft","removeChild","getNormalizedScrollLeft","element","direction","scrollWidth","clientWidth","easeInOutSin","time","Math","sin","PI","styles","ScrollbarSize","props","onChange","other","scrollbarHeight","nodeRef","setMeasurements","current","offsetHeight","clientHeight","handleResize","debounce","prevHeight","window","addEventListener","clear","removeEventListener","ref","TabIndicator","classes","className","color","orientation","root","concat","capitalize","vertical","withStyles","theme","bottom","transition","transitions","create","colorPrimary","backgroundColor","palette","primary","main","colorSecondary","secondary","right","name","Tabs","ariaLabel","ariaLabelledBy","action","_props$centered","centered","childrenProp","children","_props$component","component","Component","_props$indicatorColor","indicatorColor","_props$orientation","_props$ScrollButtonCo","ScrollButtonComponent","TabScrollButton","_props$scrollButtons","scrollButtons","selectionFollowsFocus","_props$TabIndicatorPr","TabIndicatorProps","TabScrollButtonProps","_props$textColor","textColor","value","_props$variant","variant","useTheme","scrollable","isRtl","scrollStart","start","end","clientSize","size","_React$useState","mounted","setMounted","_React$useState2","indicatorStyle","setIndicatorStyle","_React$useState3","displayScroll","setDisplayScroll","_React$useState4","marginBottom","scrollerStyle","setScrollerStyle","valueToIndex","Map","tabsRef","tabListRef","getTabsMeta","tabsMeta","tabMeta","tabsNode","rect","getBoundingClientRect","scrollTop","scrollLeftNormalized","left","_children","length","tab","get","updateIndicatorState","useEventCallback","_newIndicatorStyle","_getTabsMeta","startValue","correction","newIndicatorStyle","isNaN","dStart","abs","dSize","scroll","scrollValue","property","to","options","arguments","undefined","cb","_options$ease","ease","_options$duration","duration","from","cancelled","Error","requestAnimationFrame","step","timestamp","min","animate","moveTabsScroll","delta","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","scrollSelectedIntoView","_getTabsMeta2","nextScrollStart","_nextScrollStart","updateScrollButtonState","showStartScroll","showEndScroll","_tabsRef$current","scrollHeight","win","ownerWindow","handleTabsScroll","updateIndicator","updateScrollButtons","indicator","childIndex","map","child","childValue","set","selected","fullWidth","conditionalElements","scrollbarSizeListener","scrollButtonsActive","showScrollButtons","scrollButtonStart","onClick","disabled","scrollButtonsDesktop","scrollButtonEnd","getConditionalElements","scroller","fixed","onScroll","flexContainer","flexContainerVertical","onKeyDown","event","target","getAttribute","newFocusTarget","previousItemKey","nextItemKey","key","previousElementSibling","lastChild","nextElementSibling","firstChild","focus","preventDefault","role","minHeight","WebkitOverflowScrolling","display","flexDirection","justifyContent","flex","whiteSpace","overflowX","scrollbarWidth","breakpoints","down","Tab","_props$disabled","_props$disableFocusRi","disableFocusRipple","icon","label","onFocus","_props$wrapped","wrapped","focusRipple","labelIcon","tabIndex","wrapper","_extends2","typography","button","maxWidth","minWidth","boxSizing","flexShrink","padding","up","paddingTop","textColorInherit","opacity","textColorPrimary","text","textColorSecondary","flexGrow","flexBasis","pxToRem","lineHeight","alignItems","_ref","_ref2","classNameProp","transform","d","marginLeft","spacing","marginRight","grey","borderRadius","cursor","boxShadow","shadows","ButtonBase","MoreHoriz","Breadcrumbs","_props$expandText","expandText","_props$itemsAfterColl","itemsAfterCollapse","_props$itemsBeforeCol","itemsBeforeCollapse","_props$maxItems","maxItems","_props$separator","separator","expanded","setExpanded","allItems","toArray","filter","index","li","Typography","ol","items","reduce","acc","push","insertSeparators","slice","focusable","currentTarget","parentNode","querySelector","renderItemsBeforeAndAfter","flexWrap","margin","listStyle","userSelect","stylesOrCreator","makeStyles","defaultTheme"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 7367.62c9669e.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[7367],{97367:(e,t,r)=>{r.r(t),r.d(t,{AbortedDeferredError:()=>K,Await:()=>rr,MemoryRouter:()=>Xt,Navigate:()=>Gt,NavigationType:()=>a,Outlet:()=>Qt,Route:()=>Zt,Router:()=>er,RouterProvider:()=>Vt,Routes:()=>tr,UNSAFE_DataRouterContext:()=>tt,UNSAFE_DataRouterStateContext:()=>rt,UNSAFE_LocationContext:()=>ot,UNSAFE_NavigationContext:()=>nt,UNSAFE_RouteContext:()=>it,UNSAFE_logV6DeprecationWarnings:()=>Kt,UNSAFE_mapRouteProperties:()=>ur,UNSAFE_useRouteId:()=>At,UNSAFE_useRoutesImpl:()=>Et,createMemoryRouter:()=>cr,createPath:()=>d,createRoutesFromChildren:()=>sr,createRoutesFromElements:()=>sr,defer:()=>Y,generatePath:()=>_,isRouteErrorResponse:()=>ee,json:()=>J,matchPath:()=>L,matchRoutes:()=>m,parsePath:()=>h,redirect:()=>X,redirectDocument:()=>G,renderMatches:()=>lr,replace:()=>Q,resolvePath:()=>O,useActionData:()=>Ft,useAsyncError:()=>zt,useAsyncValue:()=>It,useBlocker:()=>Wt,useHref:()=>lt,useInRouterContext:()=>ut,useLoaderData:()=>Tt,useLocation:()=>ct,useMatch:()=>ht,useMatches:()=>Ot,useNavigate:()=>pt,useNavigation:()=>jt,useNavigationType:()=>dt,useOutlet:()=>yt,useOutletContext:()=>vt,useParams:()=>gt,useResolvedPath:()=>bt,useRevalidator:()=>Ut,useRouteError:()=>Bt,useRouteLoaderData:()=>Nt,useRoutes:()=>wt});var a,n,o=r(95478);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},i.apply(this,arguments)}function s(e){void 0===e&&(e={});let t,{initialEntries:r=["/"],initialIndex:n,v5Compat:o=!1}=e;t=r.map((e,t)=>m(e,"string"==typeof e?null:e.state,0===t?"default":void 0));let i=f(null==n?t.length-1:n),s=a.Pop,l=null;function f(e){return Math.min(Math.max(e,0),t.length-1)}function p(){return t[i]}function m(e,r,a){void 0===r&&(r=null);let n=c(t?p().pathname:"/",e,r,a);return u("/"===n.pathname.charAt(0),"relative pathnames are not supported in memory history: "+JSON.stringify(e)),n}function v(e){return"string"==typeof e?e:d(e)}return{get index(){return i},get action(){return s},get location(){return p()},createHref:v,createURL:e=>new URL(v(e),"http://localhost"),encodeLocation(e){let t="string"==typeof e?h(e):e;return{pathname:t.pathname||"",search:t.search||"",hash:t.hash||""}},push(e,r){s=a.Push;let n=m(e,r);i+=1,t.splice(i,t.length,n),o&&l&&l({action:s,location:n,delta:1})},replace(e,r){s=a.Replace;let n=m(e,r);t[i]=n,o&&l&&l({action:s,location:n,delta:0})},go(e){s=a.Pop;let r=f(i+e),n=t[r];i=r,l&&l({action:s,location:n,delta:e})},listen:e=>(l=e,()=>{l=null})}}function l(e,t){if(!1===e||null==e)throw new Error(t)}function u(e,t){if(!e){"undefined"!=typeof console&&console.warn(t);try{throw new Error(t)}catch(e){}}}function c(e,t,r,a){return void 0===r&&(r=null),i({pathname:"string"==typeof e?e:e.pathname,search:"",hash:""},"string"==typeof t?h(t):t,{state:r,key:t&&t.key||a||Math.random().toString(36).substr(2,8)})}function d(e){let{pathname:t="/",search:r="",hash:a=""}=e;return r&&"?"!==r&&(t+="?"===r.charAt(0)?r:"?"+r),a&&"#"!==a&&(t+="#"===a.charAt(0)?a:"#"+a),t}function h(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let a=e.indexOf("?");a>=0&&(t.search=e.substr(a),e=e.substr(0,a)),e&&(t.pathname=e)}return t}!function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"}(a||(a={})),function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(n||(n={}));const f=new Set(["lazy","caseSensitive","path","id","index","children"]);function p(e,t,r,a){return void 0===r&&(r=[]),void 0===a&&(a={}),e.map((e,n)=>{let o=[...r,String(n)],s="string"==typeof e.id?e.id:o.join("-");if(l(!0!==e.index||!e.children,"Cannot specify children on an index route"),l(!a[s],'Found a route id collision on id "'+s+"\". Route id's must be globally unique within Data Router usages"),function(e){return!0===e.index}(e)){let r=i({},e,t(e),{id:s});return a[s]=r,r}{let r=i({},e,t(e),{id:s,children:void 0});return a[s]=r,e.children&&(r.children=p(e.children,t,o,a)),r}})}function m(e,t,r){return void 0===r&&(r="/"),v(e,t,r,!1)}function v(e,t,r,a){let n=A(("string"==typeof t?h(t):t).pathname||"/",r);if(null==n)return null;let o=g(e);!function(e){e.sort((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){return e.length===t.length&&e.slice(0,-1).every((e,r)=>e===t[r])?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)))}(o);let i=null;for(let e=0;null==i&&e<o.length;++e){let t=M(n);i=k(o[e],t,a)}return i}function y(e,t){let{route:r,pathname:a,params:n}=e;return{id:r.id,pathname:a,params:n,data:t[r.id],handle:r.handle}}function g(e,t,r,a){void 0===t&&(t=[]),void 0===r&&(r=[]),void 0===a&&(a="");let n=(e,n,o)=>{let i={relativePath:void 0===o?e.path||"":o,caseSensitive:!0===e.caseSensitive,childrenIndex:n,route:e};i.relativePath.startsWith("/")&&(l(i.relativePath.startsWith(a),'Absolute route path "'+i.relativePath+'" nested under path "'+a+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),i.relativePath=i.relativePath.slice(a.length));let s=z([a,i.relativePath]),u=r.concat(i);e.children&&e.children.length>0&&(l(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+s+'".'),g(e.children,t,u,s)),(null!=e.path||e.index)&&t.push({path:s,score:C(s,e.index),routesMeta:u})};return e.forEach((e,t)=>{var r;if(""!==e.path&&null!=(r=e.path)&&r.includes("?"))for(let r of b(e.path))n(e,t,r);else n(e,t)}),t}function b(e){let t=e.split("/");if(0===t.length)return[];let[r,...a]=t,n=r.endsWith("?"),o=r.replace(/\?$/,"");if(0===a.length)return n?[o,""]:[o];let i=b(a.join("/")),s=[];return s.push(...i.map(e=>""===e?o:[o,e].join("/"))),n&&s.push(...i),s.map(t=>e.startsWith("/")&&""===t?"/":t)}const w=/^:[\w-]+$/,E=3,R=2,S=1,x=10,D=-2,P=e=>"*"===e;function C(e,t){let r=e.split("/"),a=r.length;return r.some(P)&&(a+=D),t&&(a+=R),r.filter(e=>!P(e)).reduce((e,t)=>e+(w.test(t)?E:""===t?S:x),a)}function k(e,t,r){void 0===r&&(r=!1);let{routesMeta:a}=e,n={},o="/",i=[];for(let e=0;e<a.length;++e){let s=a[e],l=e===a.length-1,u="/"===o?t:t.slice(o.length)||"/",c=L({path:s.relativePath,caseSensitive:s.caseSensitive,end:l},u),d=s.route;if(!c&&l&&r&&!a[a.length-1].route.index&&(c=L({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},u)),!c)return null;Object.assign(n,c.params),i.push({params:n,pathname:z([o,c.pathname]),pathnameBase:H(z([o,c.pathnameBase])),route:d}),"/"!==c.pathnameBase&&(o=z([o,c.pathnameBase]))}return i}function _(e,t){void 0===t&&(t={});let r=e;r.endsWith("*")&&"*"!==r&&!r.endsWith("/*")&&(u(!1,'Route path "'+r+'" will be treated as if it were "'+r.replace(/\*$/,"/*")+'" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to "'+r.replace(/\*$/,"/*")+'".'),r=r.replace(/\*$/,"/*"));const a=r.startsWith("/")?"/":"",n=e=>null==e?"":"string"==typeof e?e:String(e);return a+r.split(/\/+/).map((e,r,a)=>{if(r===a.length-1&&"*"===e)return n(t["*"]);const o=e.match(/^:([\w-]+)(\??)$/);if(o){const[,e,r]=o;let a=t[e];return l("?"===r||null!=a,'Missing ":'+e+'" param'),n(a)}return e.replace(/\?$/g,"")}).filter(e=>!!e).join("/")}function L(e,t){"string"==typeof e&&(e={path:e,caseSensitive:!1,end:!0});let[r,a]=function(e,t,r){void 0===t&&(t=!1),void 0===r&&(r=!0),u("*"===e||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were "'+e.replace(/\*$/,"/*")+'" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to "'+e.replace(/\*$/,"/*")+'".');let a=[],n="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(e,t,r)=>(a.push({paramName:t,isOptional:null!=r}),r?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(a.push({paramName:"*"}),n+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?n+="\\/*$":""!==e&&"/"!==e&&(n+="(?:(?=\\/|$))"),[new RegExp(n,t?void 0:"i"),a]}(e.path,e.caseSensitive,e.end),n=t.match(r);if(!n)return null;let o=n[0],i=o.replace(/(.)\/+$/,"$1"),s=n.slice(1);return{params:a.reduce((e,t,r)=>{let{paramName:a,isOptional:n}=t;if("*"===a){let e=s[r]||"";i=o.slice(0,o.length-e.length).replace(/(.)\/+$/,"$1")}const l=s[r];return e[a]=n&&!l?void 0:(l||"").replace(/%2F/g,"/"),e},{}),pathname:o,pathnameBase:i,pattern:e}}function M(e){try{return e.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(t){return u(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function A(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,a=e.charAt(r);return a&&"/"!==a?null:e.slice(r)||"/"}const j=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,U=e=>j.test(e);function O(e,t){void 0===t&&(t="/");let r,{pathname:a,search:n="",hash:o=""}="string"==typeof e?h(e):e;if(a)if(U(a))r=a;else{if(a.includes("//")){let e=a;a=a.replace(/\/\/+/g,"/"),u(!1,"Pathnames cannot have embedded double slashes - normalizing "+e+" -> "+a)}r=a.startsWith("/")?T(a.substring(1),"/"):T(a,t)}else r=t;return{pathname:r,search:W(n),hash:$(o)}}function T(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(e=>{".."===e?r.length>1&&r.pop():"."!==e&&r.push(e)}),r.length>1?r.join("/"):"/"}function N(e,t,r,a){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(a)+"]. Please separate it out to the `to."+r+'` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.'}function F(e){return e.filter((e,t)=>0===t||e.route.path&&e.route.path.length>0)}function B(e,t){let r=F(e);return t?r.map((e,t)=>t===r.length-1?e.pathname:e.pathnameBase):r.map(e=>e.pathnameBase)}function I(e,t,r,a){let n;void 0===a&&(a=!1),"string"==typeof e?n=h(e):(n=i({},e),l(!n.pathname||!n.pathname.includes("?"),N("?","pathname","search",n)),l(!n.pathname||!n.pathname.includes("#"),N("#","pathname","hash",n)),l(!n.search||!n.search.includes("#"),N("#","search","hash",n)));let o,s=""===e||""===n.pathname,u=s?"/":n.pathname;if(null==u)o=r;else{let e=t.length-1;if(!a&&u.startsWith("..")){let t=u.split("/");for(;".."===t[0];)t.shift(),e-=1;n.pathname=t.join("/")}o=e>=0?t[e]:"/"}let c=O(n,o),d=u&&"/"!==u&&u.endsWith("/"),f=(s||"."===u)&&r.endsWith("/");return c.pathname.endsWith("/")||!d&&!f||(c.pathname+="/"),c}const z=e=>e.join("/").replace(/\/\/+/g,"/"),H=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),W=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",$=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"",J=function(e,t){void 0===t&&(t={});let r="number"==typeof t?{status:t}:t,a=new Headers(r.headers);return a.has("Content-Type")||a.set("Content-Type","application/json; charset=utf-8"),new Response(JSON.stringify(e),i({},r,{headers:a}))};class K extends Error{}class q{constructor(e,t){let r;this.pendingKeysSet=new Set,this.subscribers=new Set,this.deferredKeys=[],l(e&&"object"==typeof e&&!Array.isArray(e),"defer() only accepts plain objects"),this.abortPromise=new Promise((e,t)=>r=t),this.controller=new AbortController;let a=()=>r(new K("Deferred data aborted"));this.unlistenAbortSignal=()=>this.controller.signal.removeEventListener("abort",a),this.controller.signal.addEventListener("abort",a),this.data=Object.entries(e).reduce((e,t)=>{let[r,a]=t;return Object.assign(e,{[r]:this.trackPromise(r,a)})},{}),this.done&&this.unlistenAbortSignal(),this.init=t}trackPromise(e,t){if(!(t instanceof Promise))return t;this.deferredKeys.push(e),this.pendingKeysSet.add(e);let r=Promise.race([t,this.abortPromise]).then(t=>this.onSettle(r,e,void 0,t),t=>this.onSettle(r,e,t));return r.catch(()=>{}),Object.defineProperty(r,"_tracked",{get:()=>!0}),r}onSettle(e,t,r,a){if(this.controller.signal.aborted&&r instanceof K)return this.unlistenAbortSignal(),Object.defineProperty(e,"_error",{get:()=>r}),Promise.reject(r);if(this.pendingKeysSet.delete(t),this.done&&this.unlistenAbortSignal(),void 0===r&&void 0===a){let r=new Error('Deferred data for key "'+t+'" resolved/rejected with `undefined`, you must resolve/reject with a value or `null`.');return Object.defineProperty(e,"_error",{get:()=>r}),this.emit(!1,t),Promise.reject(r)}return void 0===a?(Object.defineProperty(e,"_error",{get:()=>r}),this.emit(!1,t),Promise.reject(r)):(Object.defineProperty(e,"_data",{get:()=>a}),this.emit(!1,t),a)}emit(e,t){this.subscribers.forEach(r=>r(e,t))}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}cancel(){this.controller.abort(),this.pendingKeysSet.forEach((e,t)=>this.pendingKeysSet.delete(t)),this.emit(!0)}async resolveData(e){let t=!1;if(!this.done){let r=()=>this.cancel();e.addEventListener("abort",r),t=await new Promise(t=>{this.subscribe(a=>{e.removeEventListener("abort",r),(a||this.done)&&t(a)})})}return t}get done(){return 0===this.pendingKeysSet.size}get unwrappedData(){return l(null!==this.data&&this.done,"Can only unwrap data on initialized and settled deferreds"),Object.entries(this.data).reduce((e,t)=>{let[r,a]=t;return Object.assign(e,{[r]:V(a)})},{})}get pendingKeys(){return Array.from(this.pendingKeysSet)}}function V(e){if(!function(e){return e instanceof Promise&&!0===e._tracked}(e))return e;if(e._error)throw e._error;return e._data}const Y=function(e,t){return void 0===t&&(t={}),new q(e,"number"==typeof t?{status:t}:t)},X=function(e,t){void 0===t&&(t=302);let r=t;"number"==typeof r?r={status:r}:void 0===r.status&&(r.status=302);let a=new Headers(r.headers);return a.set("Location",e),new Response(null,i({},r,{headers:a}))},G=(e,t)=>{let r=X(e,t);return r.headers.set("X-Remix-Reload-Document","true"),r},Q=(e,t)=>{let r=X(e,t);return r.headers.set("X-Remix-Replace","true"),r};class Z{constructor(e,t,r,a){void 0===a&&(a=!1),this.status=e,this.statusText=t||"",this.internal=a,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function ee(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"boolean"==typeof e.internal&&"data"in e}const te=["post","put","patch","delete"],re=new Set(te),ae=["get",...te],ne=new Set(ae),oe=new Set([301,302,303,307,308]),ie=new Set([307,308]),se={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},le={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ue={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},ce=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,de=e=>({hasErrorBoundary:Boolean(e.hasErrorBoundary)}),he="remix-router-transitions";function fe(e){const t=e.window?e.window:"undefined"!=typeof window?window:void 0,r=void 0!==t&&void 0!==t.document&&void 0!==t.document.createElement,o=!r;let s;if(l(e.routes.length>0,"You must provide a non-empty routes array to createRouter"),e.mapRouteProperties)s=e.mapRouteProperties;else if(e.detectErrorBoundary){let t=e.detectErrorBoundary;s=e=>({hasErrorBoundary:t(e)})}else s=de;let d,h,g,b={},w=p(e.routes,s,void 0,b),E=e.basename||"/",R=e.dataStrategy||Se,S=e.patchRoutesOnNavigation,x=i({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,v7_skipActionErrorRevalidation:!1},e.future),D=null,P=new Set,C=null,k=null,_=null,L=null!=e.hydrationData,M=m(w,e.history.location,E),j=!1,U=null;if(null==M&&!S){let t=Oe(404,{pathname:e.history.location.pathname}),{matches:r,route:a}=Ue(w);M=r,U={[a.id]:t}}if(M&&!e.hydrationData&&ct(M,w,e.history.location.pathname).active&&(M=null),M)if(M.some(e=>e.route.lazy))h=!1;else if(M.some(e=>e.route.loader))if(x.v7_partialHydration){let t=e.hydrationData?e.hydrationData.loaderData:null,r=e.hydrationData?e.hydrationData.errors:null;if(r){let e=M.findIndex(e=>void 0!==r[e.route.id]);h=M.slice(0,e+1).every(e=>!ge(e.route,t,r))}else h=M.every(e=>!ge(e.route,t,r))}else h=null!=e.hydrationData;else h=!0;else if(h=!1,M=[],x.v7_partialHydration){let t=ct(null,w,e.history.location.pathname);t.active&&t.matches&&(j=!0,M=t.matches)}let O,T,N={historyAction:e.history.action,location:e.history.location,matches:M,initialized:h,navigation:se,restoreScrollPosition:null==e.hydrationData&&null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||U,fetchers:new Map,blockers:new Map},F=a.Pop,B=!1,I=!1,z=new Map,H=null,W=!1,$=!1,J=[],K=new Set,q=new Map,V=0,Y=-1,X=new Map,G=new Set,Q=new Map,Z=new Map,te=new Set,re=new Map,ae=new Map;function ne(e,t){void 0===t&&(t={}),N=i({},N,e);let r=[],a=[];x.v7_fetcherPersist&&N.fetchers.forEach((e,t)=>{"idle"===e.state&&(te.has(t)?a.push(t):r.push(t))}),te.forEach(e=>{N.fetchers.has(e)||q.has(e)||a.push(e)}),[...P].forEach(e=>e(N,{deletedFetchers:a,viewTransitionOpts:t.viewTransitionOpts,flushSync:!0===t.flushSync})),x.v7_fetcherPersist?(r.forEach(e=>N.fetchers.delete(e)),a.forEach(e=>We(e))):a.forEach(e=>te.delete(e))}function oe(t,r,n){var o,s;let l,{flushSync:u}=void 0===n?{}:n,c=null!=N.actionData&&null!=N.navigation.formMethod&&$e(N.navigation.formMethod)&&"loading"===N.navigation.state&&!0!==(null==(o=t.state)?void 0:o._isRedirect);l=r.actionData?Object.keys(r.actionData).length>0?r.actionData:null:c?N.actionData:null;let h=r.loaderData?Me(N.loaderData,r.loaderData,r.matches||[],r.errors):N.loaderData,f=N.blockers;f.size>0&&(f=new Map(f),f.forEach((e,t)=>f.set(t,ue)));let p,m=!0===B||null!=N.navigation.formMethod&&$e(N.navigation.formMethod)&&!0!==(null==(s=t.state)?void 0:s._isRedirect);if(d&&(w=d,d=void 0),W||F===a.Pop||(F===a.Push?e.history.push(t,t.state):F===a.Replace&&e.history.replace(t,t.state)),F===a.Pop){let e=z.get(N.location.pathname);e&&e.has(t.pathname)?p={currentLocation:N.location,nextLocation:t}:z.has(t.pathname)&&(p={currentLocation:t,nextLocation:N.location})}else if(I){let e=z.get(N.location.pathname);e?e.add(t.pathname):(e=new Set([t.pathname]),z.set(N.location.pathname,e)),p={currentLocation:N.location,nextLocation:t}}ne(i({},r,{actionData:l,loaderData:h,historyAction:F,location:t,initialized:!0,navigation:se,revalidation:"idle",restoreScrollPosition:ut(t,r.matches||N.matches),preventScrollReset:m,blockers:f}),{viewTransitionOpts:p,flushSync:!0===u}),F=a.Pop,B=!1,I=!1,W=!1,$=!1,J=[]}async function fe(t,r,o){O&&O.abort(),O=null,F=t,W=!0===(o&&o.startUninterruptedRevalidation),function(e,t){if(C&&_){let r=lt(e,t);C[r]=_()}}(N.location,N.matches),B=!0===(o&&o.preventScrollReset),I=!0===(o&&o.enableViewTransition);let s=d||w,l=o&&o.overrideNavigation,u=null!=o&&o.initialHydration&&N.matches&&N.matches.length>0&&!j?N.matches:m(s,r,E),c=!0===(o&&o.flushSync);if(u&&N.initialized&&!$&&(h=N.location,f=r,h.pathname===f.pathname&&h.search===f.search&&(""===h.hash?""!==f.hash:h.hash===f.hash||""!==f.hash))&&!(o&&o.submission&&$e(o.submission.formMethod)))return void oe(r,{matches:u},{flushSync:c});var h,f;let p=ct(u,s,r.pathname);if(p.active&&p.matches&&(u=p.matches),!u){let{error:e,notFoundMatches:t,route:a}=it(r.pathname);return void oe(r,{matches:t,loaderData:{},errors:{[a.id]:e}},{flushSync:c})}O=new AbortController;let v,y=Ce(e.history,r,O.signal,o&&o.submission);if(o&&o.pendingError)v=[je(u).route.id,{type:n.error,error:o.pendingError}];else if(o&&o.submission&&$e(o.submission.formMethod)){let t=await async function(t,r,o,i,s,l){void 0===l&&(l={}),ke();let u,c=function(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}(r,o);if(ne({navigation:c},{flushSync:!0===l.flushSync}),s){let e=await dt(i,r.pathname,t.signal);if("aborted"===e.type)return{shortCircuited:!0};if("error"===e.type){let t=je(e.partialMatches).route.id;return{matches:e.partialMatches,pendingActionResult:[t,{type:n.error,error:e.error}]}}if(!e.matches){let{notFoundMatches:e,error:t,route:a}=it(r.pathname);return{matches:e,pendingActionResult:[a.id,{type:n.error,error:t}]}}i=e.matches}let d=Ye(i,r);if(d.route.action||d.route.lazy){if(u=(await we("action",N,t,[d],i,null))[d.route.id],t.signal.aborted)return{shortCircuited:!0}}else u={type:n.error,error:Oe(405,{method:t.method,pathname:r.pathname,routeId:d.route.id})};if(ze(u)){let r;return r=l&&null!=l.replace?l.replace:Pe(u.response.headers.get("Location"),new URL(t.url),E,e.history)===N.location.pathname+N.location.search,await be(t,u,!0,{submission:o,replace:r}),{shortCircuited:!0}}if(Be(u))throw Oe(400,{type:"defer-action"});if(Ie(u)){let e=je(i,d.route.id);return!0!==(l&&l.replace)&&(F=a.Push),{matches:i,pendingActionResult:[e.route.id,u]}}return{matches:i,pendingActionResult:[d.route.id,u]}}(y,r,o.submission,u,p.active,{replace:o.replace,flushSync:c});if(t.shortCircuited)return;if(t.pendingActionResult){let[e,a]=t.pendingActionResult;if(Ie(a)&&ee(a.error)&&404===a.error.status)return O=null,void oe(r,{matches:t.matches,loaderData:{},errors:{[e]:a.error}})}u=t.matches||u,v=t.pendingActionResult,l=Ge(r,o.submission),c=!1,p.active=!1,y=Ce(e.history,y.url,y.signal)}let{shortCircuited:g,matches:b,loaderData:R,errors:S}=await async function(t,r,a,n,o,s,l,u,c,h,f){let p=o||Ge(r,s),m=s||l||Xe(p),v=!(W||x.v7_partialHydration&&c);if(n){if(v){let e=ve(f);ne(i({navigation:p},void 0!==e?{actionData:e}:{}),{flushSync:h})}let e=await dt(a,r.pathname,t.signal);if("aborted"===e.type)return{shortCircuited:!0};if("error"===e.type){let t=je(e.partialMatches).route.id;return{matches:e.partialMatches,loaderData:{},errors:{[t]:e.error}}}if(!e.matches){let{error:e,notFoundMatches:t,route:a}=it(r.pathname);return{matches:t,loaderData:{},errors:{[a.id]:e}}}a=e.matches}let y=d||w,[g,b]=ye(e.history,N,a,m,r,x.v7_partialHydration&&!0===c,x.v7_skipActionErrorRevalidation,$,J,K,te,Q,G,y,E,f);if(st(e=>!(a&&a.some(t=>t.route.id===e))||g&&g.some(t=>t.route.id===e)),Y=++V,0===g.length&&0===b.length){let e=tt();return oe(r,i({matches:a,loaderData:{},errors:f&&Ie(f[1])?{[f[0]]:f[1].error}:null},Ae(f),e?{fetchers:new Map(N.fetchers)}:{}),{flushSync:h}),{shortCircuited:!0}}if(v){let e={};if(!n){e.navigation=p;let t=ve(f);void 0!==t&&(e.actionData=t)}b.length>0&&(e.fetchers=function(e){return e.forEach(e=>{let t=N.fetchers.get(e.key),r=Qe(void 0,t?t.data:void 0);N.fetchers.set(e.key,r)}),new Map(N.fetchers)}(b)),ne(e,{flushSync:h})}b.forEach(e=>{Ve(e.key),e.controller&&q.set(e.key,e.controller)});let R=()=>b.forEach(e=>Ve(e.key));O&&O.signal.addEventListener("abort",R);let{loaderResults:S,fetcherResults:D}=await Re(N,a,g,b,t);if(t.signal.aborted)return{shortCircuited:!0};O&&O.signal.removeEventListener("abort",R),b.forEach(e=>q.delete(e.key));let P=Te(S);if(P)return await be(t,P.result,!0,{replace:u}),{shortCircuited:!0};if(P=Te(D),P)return G.add(P.key),await be(t,P.result,!0,{replace:u}),{shortCircuited:!0};let{loaderData:C,errors:k}=Le(N,a,S,f,b,D,re);re.forEach((e,t)=>{e.subscribe(r=>{(r||e.done)&&re.delete(t)})}),x.v7_partialHydration&&c&&N.errors&&(k=i({},N.errors,k));let _=tt(),L=rt(Y),M=_||L||b.length>0;return i({matches:a,loaderData:C,errors:k},M?{fetchers:new Map(N.fetchers)}:{})}(y,r,u,p.active,l,o&&o.submission,o&&o.fetcherSubmission,o&&o.replace,o&&!0===o.initialHydration,c,v);g||(O=null,oe(r,i({matches:b||u},Ae(v),{loaderData:R,errors:S})))}function ve(e){return e&&!Ie(e[1])?{[e[0]]:e[1].data}:N.actionData?0===Object.keys(N.actionData).length?null:N.actionData:void 0}async function be(n,o,s,u){let{submission:d,fetcherSubmission:h,preventScrollReset:f,replace:p}=void 0===u?{}:u;o.response.headers.has("X-Remix-Revalidate")&&($=!0);let m=o.response.headers.get("Location");l(m,"Expected a Location header on the redirect Response"),m=Pe(m,new URL(n.url),E,e.history);let v=c(N.location,m,{_isRedirect:!0});if(r){let r=!1;if(o.response.headers.has("X-Remix-Reload-Document"))r=!0;else if(ce.test(m)){const a=e.history.createURL(m);r=a.origin!==t.location.origin||null==A(a.pathname,E)}if(r)return void(p?t.location.replace(m):t.location.assign(m))}O=null;let y=!0===p||o.response.headers.has("X-Remix-Replace")?a.Replace:a.Push,{formMethod:g,formAction:b,formEncType:w}=N.navigation;!d&&!h&&g&&b&&w&&(d=Xe(N.navigation));let R=d||h;if(ie.has(o.response.status)&&R&&$e(R.formMethod))await fe(y,v,{submission:i({},R,{formAction:m}),preventScrollReset:f||B,enableViewTransition:s?I:void 0});else{let e=Ge(v,d);await fe(y,v,{overrideNavigation:e,fetcherSubmission:h,preventScrollReset:f||B,enableViewTransition:s?I:void 0})}}async function we(e,t,r,a,o,c){let d,h={};try{d=await async function(e,t,r,a,o,s,c,d,h,p){let m=s.map(e=>e.route.lazy?async function(e,t,r){if(!e.lazy)return;let a=await e.lazy();if(!e.lazy)return;let n=r[e.id];l(n,"No route found in manifest");let o={};for(let e in a){let t=void 0!==n[e]&&"hasErrorBoundary"!==e;u(!t,'Route "'+n.id+'" has a static property "'+e+'" defined but its lazy function is also returning a value for this property. The lazy route property "'+e+'" will be ignored.'),t||f.has(e)||(o[e]=a[e])}Object.assign(n,o),Object.assign(n,i({},t(n),{lazy:void 0}))}(e.route,h,d):void 0),v=s.map((e,r)=>{let s=m[r],u=o.some(t=>t.route.id===e.route.id);return i({},e,{shouldLoad:u,resolve:async r=>(r&&"GET"===a.method&&(e.route.lazy||e.route.loader)&&(u=!0),u?async function(e,t,r,a,o,i){let s,u,c=a=>{let n,s=new Promise((e,t)=>n=t);u=()=>n(),t.signal.addEventListener("abort",u);let l=n=>"function"!=typeof a?Promise.reject(new Error('You cannot call the handler for a route which defines a boolean "'+e+'" [routeId: '+r.route.id+"]")):a({request:t,params:r.params,context:i},...void 0!==n?[n]:[]),c=(async()=>{try{return{type:"data",result:await(o?o(e=>l(e)):l())}}catch(e){return{type:"error",result:e}}})();return Promise.race([c,s])};try{let o=r.route[e];if(a)if(o){let e,[t]=await Promise.all([c(o).catch(t=>{e=t}),a]);if(void 0!==e)throw e;s=t}else{if(await a,o=r.route[e],!o){if("action"===e){let e=new URL(t.url),a=e.pathname+e.search;throw Oe(405,{method:t.method,pathname:a,routeId:r.route.id})}return{type:n.data,result:void 0}}s=await c(o)}else{if(!o){let e=new URL(t.url);throw Oe(404,{pathname:e.pathname+e.search})}s=await c(o)}l(void 0!==s.result,"You defined "+("action"===e?"an action":"a loader")+' for route "'+r.route.id+"\" but didn't return anything from your `"+e+"` function. Please return a value or `null`.")}catch(e){return{type:n.error,result:e}}finally{u&&t.signal.removeEventListener("abort",u)}return s}(t,a,e,s,r,p):Promise.resolve({type:n.data,result:void 0}))})}),y=await e({matches:v,request:a,params:s[0].params,fetcherKey:c,context:p});try{await Promise.all(m)}catch(e){}return y}(R,e,0,r,a,o,c,b,s)}catch(e){return a.forEach(t=>{h[t.route.id]={type:n.error,error:e}}),h}for(let[e,t]of Object.entries(d))if(Fe(t)){let a=t.result;h[e]={type:n.redirect,response:De(a,r,e,o,E,x.v7_relativeSplatPath)}}else h[e]=await xe(t);return h}async function Re(t,r,a,o,i){let s=t.matches,l=we("loader",0,i,a,r,null),u=Promise.all(o.map(async t=>{if(t.matches&&t.match&&t.controller){let r=(await we("loader",0,Ce(e.history,t.path,t.controller.signal),[t.match],t.matches,t.key))[t.match.route.id];return{[t.key]:r}}return Promise.resolve({[t.key]:{type:n.error,error:Oe(404,{pathname:t.path})}})})),c=await l,d=(await u).reduce((e,t)=>Object.assign(e,t),{});return await Promise.all([Je(r,c,i.signal,s,t.loaderData),Ke(r,d,o)]),{loaderResults:c,fetcherResults:d}}function ke(){$=!0,J.push(...st()),Q.forEach((e,t)=>{q.has(t)&&K.add(t),Ve(t)})}function _e(e,t,r){void 0===r&&(r={}),N.fetchers.set(e,t),ne({fetchers:new Map(N.fetchers)},{flushSync:!0===(r&&r.flushSync)})}function Ne(e,t,r,a){void 0===a&&(a={});let n=je(N.matches,t);We(e),ne({errors:{[n.route.id]:r},fetchers:new Map(N.fetchers)},{flushSync:!0===(a&&a.flushSync)})}function He(e){return Z.set(e,(Z.get(e)||0)+1),te.has(e)&&te.delete(e),N.fetchers.get(e)||le}function We(e){let t=N.fetchers.get(e);!q.has(e)||t&&"loading"===t.state&&X.has(e)||Ve(e),Q.delete(e),X.delete(e),G.delete(e),x.v7_fetcherPersist&&te.delete(e),K.delete(e),N.fetchers.delete(e)}function Ve(e){let t=q.get(e);t&&(t.abort(),q.delete(e))}function et(e){for(let t of e){let e=Ze(He(t).data);N.fetchers.set(t,e)}}function tt(){let e=[],t=!1;for(let r of G){let a=N.fetchers.get(r);l(a,"Expected fetcher: "+r),"loading"===a.state&&(G.delete(r),e.push(r),t=!0)}return et(e),t}function rt(e){let t=[];for(let[r,a]of X)if(a<e){let e=N.fetchers.get(r);l(e,"Expected fetcher: "+r),"loading"===e.state&&(Ve(r),X.delete(r),t.push(r))}return et(t),t.length>0}function at(e){N.blockers.delete(e),ae.delete(e)}function nt(e,t){let r=N.blockers.get(e)||ue;l("unblocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"proceeding"===t.state||"blocked"===r.state&&"unblocked"===t.state||"proceeding"===r.state&&"unblocked"===t.state,"Invalid blocker state transition: "+r.state+" -> "+t.state);let a=new Map(N.blockers);a.set(e,t),ne({blockers:a})}function ot(e){let{currentLocation:t,nextLocation:r,historyAction:a}=e;if(0===ae.size)return;ae.size>1&&u(!1,"A router only supports one blocker at a time");let n=Array.from(ae.entries()),[o,i]=n[n.length-1],s=N.blockers.get(o);return s&&"proceeding"===s.state?void 0:i({currentLocation:t,nextLocation:r,historyAction:a})?o:void 0}function it(e){let t=Oe(404,{pathname:e}),r=d||w,{matches:a,route:n}=Ue(r);return st(),{notFoundMatches:a,route:n,error:t}}function st(e){let t=[];return re.forEach((r,a)=>{e&&!e(a)||(r.cancel(),t.push(a),re.delete(a))}),t}function lt(e,t){return k&&k(e,t.map(e=>y(e,N.loaderData)))||e.key}function ut(e,t){if(C){let r=lt(e,t),a=C[r];if("number"==typeof a)return a}return null}function ct(e,t,r){if(S){if(!e)return{active:!0,matches:v(t,r,E,!0)||[]};if(Object.keys(e[0].params).length>0)return{active:!0,matches:v(t,r,E,!0)}}return{active:!1,matches:null}}async function dt(e,t,r,a){if(!S)return{type:"success",matches:e};let n=e;for(;;){let e=null==d,o=d||w,i=b;try{await S({signal:r,path:t,matches:n,fetcherKey:a,patch:(e,t)=>{r.aborted||Ee(e,t,o,i,s)}})}catch(e){return{type:"error",error:e,partialMatches:n}}finally{e&&!r.aborted&&(w=[...w])}if(r.aborted)return{type:"aborted"};let l=m(o,t,E);if(l)return{type:"success",matches:l};let u=v(o,t,E,!0);if(!u||n.length===u.length&&n.every((e,t)=>e.route.id===u[t].route.id))return{type:"success",matches:null};n=u}}return g={get basename(){return E},get future(){return x},get state(){return N},get routes(){return w},get window(){return t},initialize:function(){if(D=e.history.listen(t=>{let{action:r,location:a,delta:n}=t;if(T)return T(),void(T=void 0);u(0===ae.size||null!=n,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let o=ot({currentLocation:N.location,nextLocation:a,historyAction:r});if(o&&null!=n){let t=new Promise(e=>{T=e});return e.history.go(-1*n),void nt(o,{state:"blocked",location:a,proceed(){nt(o,{state:"proceeding",proceed:void 0,reset:void 0,location:a}),t.then(()=>e.history.go(n))},reset(){let e=new Map(N.blockers);e.set(o,ue),ne({blockers:e})}})}return fe(r,a)}),r){!function(e,t){try{let r=e.sessionStorage.getItem(he);if(r){let e=JSON.parse(r);for(let[r,a]of Object.entries(e||{}))a&&Array.isArray(a)&&t.set(r,new Set(a||[]))}}catch(e){}}(t,z);let e=()=>function(e,t){if(t.size>0){let r={};for(let[e,a]of t)r[e]=[...a];try{e.sessionStorage.setItem(he,JSON.stringify(r))}catch(e){u(!1,"Failed to save applied view transitions in sessionStorage ("+e+").")}}}(t,z);t.addEventListener("pagehide",e),H=()=>t.removeEventListener("pagehide",e)}return N.initialized||fe(a.Pop,N.location,{initialHydration:!0}),g},subscribe:function(e){return P.add(e),()=>P.delete(e)},enableScrollRestoration:function(e,t,r){if(C=e,_=t,k=r||null,!L&&N.navigation===se){L=!0;let e=ut(N.location,N.matches);null!=e&&ne({restoreScrollPosition:e})}return()=>{C=null,_=null,k=null}},navigate:async function t(r,n){if("number"==typeof r)return void e.history.go(r);let o=pe(N.location,N.matches,E,x.v7_prependBasename,r,x.v7_relativeSplatPath,null==n?void 0:n.fromRouteId,null==n?void 0:n.relative),{path:s,submission:l,error:u}=me(x.v7_normalizeFormMethod,!1,o,n),d=N.location,h=c(N.location,s,n&&n.state);h=i({},h,e.history.encodeLocation(h));let f=n&&null!=n.replace?n.replace:void 0,p=a.Push;!0===f?p=a.Replace:!1===f||null!=l&&$e(l.formMethod)&&l.formAction===N.location.pathname+N.location.search&&(p=a.Replace);let m=n&&"preventScrollReset"in n?!0===n.preventScrollReset:void 0,v=!0===(n&&n.flushSync),y=ot({currentLocation:d,nextLocation:h,historyAction:p});if(!y)return await fe(p,h,{submission:l,pendingError:u,preventScrollReset:m,replace:n&&n.replace,enableViewTransition:n&&n.viewTransition,flushSync:v});nt(y,{state:"blocked",location:h,proceed(){nt(y,{state:"proceeding",proceed:void 0,reset:void 0,location:h}),t(r,n)},reset(){let e=new Map(N.blockers);e.set(y,ue),ne({blockers:e})}})},fetch:function(t,r,a,n){if(o)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");Ve(t);let i=!0===(n&&n.flushSync),s=d||w,u=pe(N.location,N.matches,E,x.v7_prependBasename,a,x.v7_relativeSplatPath,r,null==n?void 0:n.relative),c=m(s,u,E),h=ct(c,s,u);if(h.active&&h.matches&&(c=h.matches),!c)return void Ne(t,r,Oe(404,{pathname:u}),{flushSync:i});let{path:f,submission:p,error:v}=me(x.v7_normalizeFormMethod,!0,u,n);if(v)return void Ne(t,r,v,{flushSync:i});let y=Ye(c,f),g=!0===(n&&n.preventScrollReset);p&&$e(p.formMethod)?async function(t,r,a,n,o,i,s,u,c){function h(e){if(!e.route.action&&!e.route.lazy){let e=Oe(405,{method:c.formMethod,pathname:a,routeId:r});return Ne(t,r,e,{flushSync:s}),!0}return!1}if(ke(),Q.delete(t),!i&&h(n))return;let f=N.fetchers.get(t);_e(t,function(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}(c,f),{flushSync:s});let p=new AbortController,v=Ce(e.history,a,p.signal,c);if(i){let e=await dt(o,new URL(v.url).pathname,v.signal,t);if("aborted"===e.type)return;if("error"===e.type)return void Ne(t,r,e.error,{flushSync:s});if(!e.matches)return void Ne(t,r,Oe(404,{pathname:a}),{flushSync:s});if(h(n=Ye(o=e.matches,a)))return}q.set(t,p);let y=V,g=(await we("action",0,v,[n],o,t))[n.route.id];if(v.signal.aborted)return void(q.get(t)===p&&q.delete(t));if(x.v7_fetcherPersist&&te.has(t)){if(ze(g)||Ie(g))return void _e(t,Ze(void 0))}else{if(ze(g))return q.delete(t),Y>y?void _e(t,Ze(void 0)):(G.add(t),_e(t,Qe(c)),be(v,g,!1,{fetcherSubmission:c,preventScrollReset:u}));if(Ie(g))return void Ne(t,r,g.error)}if(Be(g))throw Oe(400,{type:"defer-action"});let b=N.navigation.location||N.location,R=Ce(e.history,b,p.signal),S=d||w,D="idle"!==N.navigation.state?m(S,N.navigation.location,E):N.matches;l(D,"Didn't find any matches after fetcher action");let P=++V;X.set(t,P);let C=Qe(c,g.data);N.fetchers.set(t,C);let[k,_]=ye(e.history,N,D,c,b,!1,x.v7_skipActionErrorRevalidation,$,J,K,te,Q,G,S,E,[n.route.id,g]);_.filter(e=>e.key!==t).forEach(e=>{let t=e.key,r=N.fetchers.get(t),a=Qe(void 0,r?r.data:void 0);N.fetchers.set(t,a),Ve(t),e.controller&&q.set(t,e.controller)}),ne({fetchers:new Map(N.fetchers)});let L=()=>_.forEach(e=>Ve(e.key));p.signal.addEventListener("abort",L);let{loaderResults:M,fetcherResults:A}=await Re(N,D,k,_,R);if(p.signal.aborted)return;p.signal.removeEventListener("abort",L),X.delete(t),q.delete(t),_.forEach(e=>q.delete(e.key));let j=Te(M);if(j)return be(R,j.result,!1,{preventScrollReset:u});if(j=Te(A),j)return G.add(j.key),be(R,j.result,!1,{preventScrollReset:u});let{loaderData:U,errors:T}=Le(N,D,M,void 0,_,A,re);if(N.fetchers.has(t)){let e=Ze(g.data);N.fetchers.set(t,e)}rt(P),"loading"===N.navigation.state&&P>Y?(l(F,"Expected pending action"),O&&O.abort(),oe(N.navigation.location,{matches:D,loaderData:U,errors:T,fetchers:new Map(N.fetchers)})):(ne({errors:T,loaderData:Me(N.loaderData,U,D,T),fetchers:new Map(N.fetchers)}),$=!1)}(t,r,f,y,c,h.active,i,g,p):(Q.set(t,{routeId:r,path:f}),async function(t,r,a,n,o,i,s,u,c){let d=N.fetchers.get(t);_e(t,Qe(c,d?d.data:void 0),{flushSync:s});let h=new AbortController,f=Ce(e.history,a,h.signal);if(i){let e=await dt(o,new URL(f.url).pathname,f.signal,t);if("aborted"===e.type)return;if("error"===e.type)return void Ne(t,r,e.error,{flushSync:s});if(!e.matches)return void Ne(t,r,Oe(404,{pathname:a}),{flushSync:s});n=Ye(o=e.matches,a)}q.set(t,h);let p=V,m=(await we("loader",0,f,[n],o,t))[n.route.id];if(Be(m)&&(m=await qe(m,f.signal,!0)||m),q.get(t)===h&&q.delete(t),!f.signal.aborted){if(!te.has(t))return ze(m)?Y>p?void _e(t,Ze(void 0)):(G.add(t),void await be(f,m,!1,{preventScrollReset:u})):void(Ie(m)?Ne(t,r,m.error):(l(!Be(m),"Unhandled fetcher deferred data"),_e(t,Ze(m.data))));_e(t,Ze(void 0))}}(t,r,f,y,c,h.active,i,g,p))},revalidate:function(){ke(),ne({revalidation:"loading"}),"submitting"!==N.navigation.state&&("idle"!==N.navigation.state?fe(F||N.historyAction,N.navigation.location,{overrideNavigation:N.navigation,enableViewTransition:!0===I}):fe(N.historyAction,N.location,{startUninterruptedRevalidation:!0}))},createHref:t=>e.history.createHref(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:He,deleteFetcher:function(e){let t=(Z.get(e)||0)-1;t<=0?(Z.delete(e),te.add(e),x.v7_fetcherPersist||We(e)):Z.set(e,t),ne({fetchers:new Map(N.fetchers)})},dispose:function(){D&&D(),H&&H(),P.clear(),O&&O.abort(),N.fetchers.forEach((e,t)=>We(t)),N.blockers.forEach((e,t)=>at(t))},getBlocker:function(e,t){let r=N.blockers.get(e)||ue;return ae.get(e)!==t&&ae.set(e,t),r},deleteBlocker:at,patchRoutes:function(e,t){let r=null==d;Ee(e,t,d||w,b,s),r&&(w=[...w],ne({}))},_internalFetchControllers:q,_internalActiveDeferreds:re,_internalSetRoutes:function(e){b={},d=p(e,s,void 0,b)}},g}function pe(e,t,r,a,n,o,i,s){let l,u;if(i){l=[];for(let e of t)if(l.push(e),e.route.id===i){u=e;break}}else l=t,u=t[t.length-1];let c=I(n||".",B(l,o),A(e.pathname,r)||e.pathname,"path"===s);if(null==n&&(c.search=e.search,c.hash=e.hash),(null==n||""===n||"."===n)&&u){let e=Ve(c.search);if(u.route.index&&!e)c.search=c.search?c.search.replace(/^\?/,"?index&"):"?index";else if(!u.route.index&&e){let e=new URLSearchParams(c.search),t=e.getAll("index");e.delete("index"),t.filter(e=>e).forEach(t=>e.append("index",t));let r=e.toString();c.search=r?"?"+r:""}}return a&&"/"!==r&&(c.pathname="/"===c.pathname?r:z([r,c.pathname])),d(c)}function me(e,t,r,a){if(!a||!function(e){return null!=e&&("formData"in e&&null!=e.formData||"body"in e&&void 0!==e.body)}(a))return{path:r};if(a.formMethod&&(n=a.formMethod,!ne.has(n.toLowerCase())))return{path:r,error:Oe(405,{method:a.formMethod})};var n;let o,i,s=()=>({path:r,error:Oe(400,{type:"invalid-body"})}),u=a.formMethod||"get",c=e?u.toUpperCase():u.toLowerCase(),f=Ne(r);if(void 0!==a.body){if("text/plain"===a.formEncType){if(!$e(c))return s();let e="string"==typeof a.body?a.body:a.body instanceof FormData||a.body instanceof URLSearchParams?Array.from(a.body.entries()).reduce((e,t)=>{let[r,a]=t;return""+e+r+"="+a+"\n"},""):String(a.body);return{path:r,submission:{formMethod:c,formAction:f,formEncType:a.formEncType,formData:void 0,json:void 0,text:e}}}if("application/json"===a.formEncType){if(!$e(c))return s();try{let e="string"==typeof a.body?JSON.parse(a.body):a.body;return{path:r,submission:{formMethod:c,formAction:f,formEncType:a.formEncType,formData:void 0,json:e,text:void 0}}}catch(e){return s()}}}if(l("function"==typeof FormData,"FormData is not available in this environment"),a.formData)o=ke(a.formData),i=a.formData;else if(a.body instanceof FormData)o=ke(a.body),i=a.body;else if(a.body instanceof URLSearchParams)o=a.body,i=_e(o);else if(null==a.body)o=new URLSearchParams,i=new FormData;else try{o=new URLSearchParams(a.body),i=_e(o)}catch(e){return s()}let p={formMethod:c,formAction:f,formEncType:a&&a.formEncType||"application/x-www-form-urlencoded",formData:i,json:void 0,text:void 0};if($e(p.formMethod))return{path:r,submission:p};let m=h(r);return t&&m.search&&Ve(m.search)&&o.append("index",""),m.search="?"+o,{path:d(m),submission:p}}function ve(e,t,r){void 0===r&&(r=!1);let a=e.findIndex(e=>e.route.id===t);return a>=0?e.slice(0,r?a+1:a):e}function ye(e,t,r,a,n,o,s,l,u,c,d,h,f,p,v,y){let g=y?Ie(y[1])?y[1].error:y[1].data:void 0,b=e.createURL(t.location),w=e.createURL(n),E=r;o&&t.errors?E=ve(r,Object.keys(t.errors)[0],!0):y&&Ie(y[1])&&(E=ve(r,y[0]));let R=y?y[1].statusCode:void 0,S=s&&R&&R>=400,x=E.filter((e,r)=>{let{route:n}=e;if(n.lazy)return!0;if(null==n.loader)return!1;if(o)return ge(n,t.loaderData,t.errors);if(function(e,t,r){let a=!t||r.route.id!==t.route.id,n=void 0===e[r.route.id];return a||n}(t.loaderData,t.matches[r],e)||u.some(t=>t===e.route.id))return!0;let s=t.matches[r],c=e;return we(e,i({currentUrl:b,currentParams:s.params,nextUrl:w,nextParams:c.params},a,{actionResult:g,actionStatus:R,defaultShouldRevalidate:!S&&(l||b.pathname+b.search===w.pathname+w.search||b.search!==w.search||be(s,c))}))}),D=[];return h.forEach((e,n)=>{if(o||!r.some(t=>t.route.id===e.routeId)||d.has(n))return;let s=m(p,e.path,v);if(!s)return void D.push({key:n,routeId:e.routeId,path:e.path,matches:null,match:null,controller:null});let u=t.fetchers.get(n),h=Ye(s,e.path),y=!1;f.has(n)?y=!1:c.has(n)?(c.delete(n),y=!0):y=u&&"idle"!==u.state&&void 0===u.data?l:we(h,i({currentUrl:b,currentParams:t.matches[t.matches.length-1].params,nextUrl:w,nextParams:r[r.length-1].params},a,{actionResult:g,actionStatus:R,defaultShouldRevalidate:!S&&l})),y&&D.push({key:n,routeId:e.routeId,path:e.path,matches:s,match:h,controller:new AbortController})}),[x,D]}function ge(e,t,r){if(e.lazy)return!0;if(!e.loader)return!1;let a=null!=t&&void 0!==t[e.id],n=null!=r&&void 0!==r[e.id];return!(!a&&n)&&("function"==typeof e.loader&&!0===e.loader.hydrate||!a&&!n)}function be(e,t){let r=e.route.path;return e.pathname!==t.pathname||null!=r&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function we(e,t){if(e.route.shouldRevalidate){let r=e.route.shouldRevalidate(t);if("boolean"==typeof r)return r}return t.defaultShouldRevalidate}function Ee(e,t,r,a,n){var o;let i;if(e){let t=a[e];l(t,"No route found to patch children into: routeId = "+e),t.children||(t.children=[]),i=t.children}else i=r;let s=p(t.filter(e=>!i.some(t=>Re(e,t))),n,[e||"_","patch",String((null==(o=i)?void 0:o.length)||"0")],a);i.push(...s)}function Re(e,t){return"id"in e&&"id"in t&&e.id===t.id||e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive&&(!(e.children&&0!==e.children.length||t.children&&0!==t.children.length)||e.children.every((e,r)=>{var a;return null==(a=t.children)?void 0:a.some(t=>Re(e,t))}))}async function Se(e){let{matches:t}=e,r=t.filter(e=>e.shouldLoad);return(await Promise.all(r.map(e=>e.resolve()))).reduce((e,t,a)=>Object.assign(e,{[r[a].route.id]:t}),{})}async function xe(e){let{result:t,type:r}=e;if(We(t)){let e;try{let r=t.headers.get("Content-Type");e=r&&/\bapplication\/json\b/.test(r)?null==t.body?null:await t.json():await t.text()}catch(e){return{type:n.error,error:e}}return r===n.error?{type:n.error,error:new Z(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}:{type:n.data,data:e,statusCode:t.status,headers:t.headers}}var a,o,i,s,l,u,c,d;return r===n.error?He(t)?t.data instanceof Error?{type:n.error,error:t.data,statusCode:null==(i=t.init)?void 0:i.status,headers:null!=(s=t.init)&&s.headers?new Headers(t.init.headers):void 0}:{type:n.error,error:new Z((null==(a=t.init)?void 0:a.status)||500,void 0,t.data),statusCode:ee(t)?t.status:void 0,headers:null!=(o=t.init)&&o.headers?new Headers(t.init.headers):void 0}:{type:n.error,error:t,statusCode:ee(t)?t.status:void 0}:function(e){let t=e;return t&&"object"==typeof t&&"object"==typeof t.data&&"function"==typeof t.subscribe&&"function"==typeof t.cancel&&"function"==typeof t.resolveData}(t)?{type:n.deferred,deferredData:t,statusCode:null==(l=t.init)?void 0:l.status,headers:(null==(u=t.init)?void 0:u.headers)&&new Headers(t.init.headers)}:He(t)?{type:n.data,data:t.data,statusCode:null==(c=t.init)?void 0:c.status,headers:null!=(d=t.init)&&d.headers?new Headers(t.init.headers):void 0}:{type:n.data,data:t}}function De(e,t,r,a,n,o){let i=e.headers.get("Location");if(l(i,"Redirects returned/thrown from loaders/actions must have a Location header"),!ce.test(i)){let s=a.slice(0,a.findIndex(e=>e.route.id===r)+1);i=pe(new URL(t.url),s,n,!0,i,o),e.headers.set("Location",i)}return e}function Pe(e,t,r,a){let n=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];if(ce.test(e)){let a=e,o=a.startsWith("//")?new URL(t.protocol+a):new URL(a);if(n.includes(o.protocol))throw new Error("Invalid redirect location");let i=null!=A(o.pathname,r);if(o.origin===t.origin&&i)return o.pathname+o.search+o.hash}try{let t=a.createURL(e);if(n.includes(t.protocol))throw new Error("Invalid redirect location")}catch(e){}return e}function Ce(e,t,r,a){let n=e.createURL(Ne(t)).toString(),o={signal:r};if(a&&$e(a.formMethod)){let{formMethod:e,formEncType:t}=a;o.method=e.toUpperCase(),"application/json"===t?(o.headers=new Headers({"Content-Type":t}),o.body=JSON.stringify(a.json)):"text/plain"===t?o.body=a.text:"application/x-www-form-urlencoded"===t&&a.formData?o.body=ke(a.formData):o.body=a.formData}return new Request(n,o)}function ke(e){let t=new URLSearchParams;for(let[r,a]of e.entries())t.append(r,"string"==typeof a?a:a.name);return t}function _e(e){let t=new FormData;for(let[r,a]of e.entries())t.append(r,a);return t}function Le(e,t,r,a,n,o,s){let{loaderData:u,errors:c}=function(e,t,r,a,n){let o,i={},s=null,u=!1,c={},d=r&&Ie(r[1])?r[1].error:void 0;return e.forEach(r=>{if(!(r.route.id in t))return;let h=r.route.id,f=t[h];if(l(!ze(f),"Cannot handle redirect results in processLoaderData"),Ie(f)){let t=f.error;if(void 0!==d&&(t=d,d=void 0),s=s||{},n)s[h]=t;else{let r=je(e,h);null==s[r.route.id]&&(s[r.route.id]=t)}i[h]=void 0,u||(u=!0,o=ee(f.error)?f.error.status:500),f.headers&&(c[h]=f.headers)}else Be(f)?(a.set(h,f.deferredData),i[h]=f.deferredData.data,null==f.statusCode||200===f.statusCode||u||(o=f.statusCode),f.headers&&(c[h]=f.headers)):(i[h]=f.data,f.statusCode&&200!==f.statusCode&&!u&&(o=f.statusCode),f.headers&&(c[h]=f.headers))}),void 0!==d&&r&&(s={[r[0]]:d},i[r[0]]=void 0),{loaderData:i,errors:s,statusCode:o||200,loaderHeaders:c}}(t,r,a,s,!1);return n.forEach(t=>{let{key:r,match:a,controller:n}=t,s=o[r];if(l(s,"Did not find corresponding fetcher result"),!n||!n.signal.aborted)if(Ie(s)){let t=je(e.matches,null==a?void 0:a.route.id);c&&c[t.route.id]||(c=i({},c,{[t.route.id]:s.error})),e.fetchers.delete(r)}else if(ze(s))l(!1,"Unhandled fetcher revalidation redirect");else if(Be(s))l(!1,"Unhandled fetcher deferred data");else{let t=Ze(s.data);e.fetchers.set(r,t)}}),{loaderData:u,errors:c}}function Me(e,t,r,a){let n=i({},t);for(let o of r){let r=o.route.id;if(t.hasOwnProperty(r)?void 0!==t[r]&&(n[r]=t[r]):void 0!==e[r]&&o.route.loader&&(n[r]=e[r]),a&&a.hasOwnProperty(r))break}return n}function Ae(e){return e?Ie(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function je(e,t){return(t?e.slice(0,e.findIndex(e=>e.route.id===t)+1):[...e]).reverse().find(e=>!0===e.route.hasErrorBoundary)||e[0]}function Ue(e){let t=1===e.length?e[0]:e.find(e=>e.index||!e.path||"/"===e.path)||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Oe(e,t){let{pathname:r,routeId:a,method:n,type:o,message:i}=void 0===t?{}:t,s="Unknown Server Error",l="Unknown @remix-run/router error";return 400===e?(s="Bad Request",n&&r&&a?l="You made a "+n+' request to "'+r+'" but did not provide a `loader` for route "'+a+'", so there is no way to handle the request.':"defer-action"===o?l="defer() is not supported in actions":"invalid-body"===o&&(l="Unable to encode submission body")):403===e?(s="Forbidden",l='Route "'+a+'" does not match URL "'+r+'"'):404===e?(s="Not Found",l='No route matches URL "'+r+'"'):405===e&&(s="Method Not Allowed",n&&r&&a?l="You made a "+n.toUpperCase()+' request to "'+r+'" but did not provide an `action` for route "'+a+'", so there is no way to handle the request.':n&&(l='Invalid request method "'+n.toUpperCase()+'"')),new Z(e||500,s,new Error(l),!0)}function Te(e){let t=Object.entries(e);for(let e=t.length-1;e>=0;e--){let[r,a]=t[e];if(ze(a))return{key:r,result:a}}}function Ne(e){return d(i({},"string"==typeof e?h(e):e,{hash:""}))}function Fe(e){return We(e.result)&&oe.has(e.result.status)}function Be(e){return e.type===n.deferred}function Ie(e){return e.type===n.error}function ze(e){return(e&&e.type)===n.redirect}function He(e){return"object"==typeof e&&null!=e&&"type"in e&&"data"in e&&"init"in e&&"DataWithResponseInit"===e.type}function We(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"object"==typeof e.headers&&void 0!==e.body}function $e(e){return re.has(e.toLowerCase())}async function Je(e,t,r,a,n){let o=Object.entries(t);for(let i=0;i<o.length;i++){let[s,l]=o[i],u=e.find(e=>(null==e?void 0:e.route.id)===s);if(!u)continue;let c=a.find(e=>e.route.id===u.route.id),d=null!=c&&!be(c,u)&&void 0!==(n&&n[u.route.id]);Be(l)&&d&&await qe(l,r,!1).then(e=>{e&&(t[s]=e)})}}async function Ke(e,t,r){for(let a=0;a<r.length;a++){let{key:n,routeId:o,controller:i}=r[a],s=t[n];e.find(e=>(null==e?void 0:e.route.id)===o)&&Be(s)&&(l(i,"Expected an AbortController for revalidating fetcher deferred result"),await qe(s,i.signal,!0).then(e=>{e&&(t[n]=e)}))}}async function qe(e,t,r){if(void 0===r&&(r=!1),!await e.deferredData.resolveData(t)){if(r)try{return{type:n.data,data:e.deferredData.unwrappedData}}catch(e){return{type:n.error,error:e}}return{type:n.data,data:e.deferredData.data}}}function Ve(e){return new URLSearchParams(e).getAll("index").some(e=>""===e)}function Ye(e,t){let r="string"==typeof t?h(t).search:t.search;if(e[e.length-1].route.index&&Ve(r||""))return e[e.length-1];let a=F(e);return a[a.length-1]}function Xe(e){let{formMethod:t,formAction:r,formEncType:a,text:n,formData:o,json:i}=e;if(t&&r&&a)return null!=n?{formMethod:t,formAction:r,formEncType:a,formData:void 0,json:void 0,text:n}:null!=o?{formMethod:t,formAction:r,formEncType:a,formData:o,json:void 0,text:void 0}:void 0!==i?{formMethod:t,formAction:r,formEncType:a,formData:void 0,json:i,text:void 0}:void 0}function Ge(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Qe(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Ze(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function et(){return et=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},et.apply(this,arguments)}Symbol("deferred");const tt=o.createContext(null),rt=o.createContext(null),at=o.createContext(null),nt=o.createContext(null),ot=o.createContext(null),it=o.createContext({outlet:null,matches:[],isDataRoute:!1}),st=o.createContext(null);function lt(e,t){let{relative:r}=void 0===t?{}:t;ut()||l(!1);let{basename:a,navigator:n}=o.useContext(nt),{hash:i,pathname:s,search:u}=bt(e,{relative:r}),c=s;return"/"!==a&&(c="/"===s?a:z([a,s])),n.createHref({pathname:c,search:u,hash:i})}function ut(){return null!=o.useContext(ot)}function ct(){return ut()||l(!1),o.useContext(ot).location}function dt(){return o.useContext(ot).navigationType}function ht(e){ut()||l(!1);let{pathname:t}=ct();return o.useMemo(()=>L(e,M(t)),[t,e])}function ft(e){o.useContext(nt).static||o.useLayoutEffect(e)}function pt(){let{isDataRoute:e}=o.useContext(it);return e?function(){let{router:e}=_t(Ct.UseNavigateStable),t=Mt(kt.UseNavigateStable),r=o.useRef(!1);return ft(()=>{r.current=!0}),o.useCallback(function(a,n){void 0===n&&(n={}),r.current&&("number"==typeof a?e.navigate(a):e.navigate(a,et({fromRouteId:t},n)))},[e,t])}():function(){ut()||l(!1);let e=o.useContext(tt),{basename:t,future:r,navigator:a}=o.useContext(nt),{matches:n}=o.useContext(it),{pathname:i}=ct(),s=JSON.stringify(B(n,r.v7_relativeSplatPath)),u=o.useRef(!1);return ft(()=>{u.current=!0}),o.useCallback(function(r,n){if(void 0===n&&(n={}),!u.current)return;if("number"==typeof r)return void a.go(r);let o=I(r,JSON.parse(s),i,"path"===n.relative);null==e&&"/"!==t&&(o.pathname="/"===o.pathname?t:z([t,o.pathname])),(n.replace?a.replace:a.push)(o,n.state,n)},[t,a,s,i,e])}()}const mt=o.createContext(null);function vt(){return o.useContext(mt)}function yt(e){let t=o.useContext(it).outlet;return t?o.createElement(mt.Provider,{value:e},t):t}function gt(){let{matches:e}=o.useContext(it),t=e[e.length-1];return t?t.params:{}}function bt(e,t){let{relative:r}=void 0===t?{}:t,{future:a}=o.useContext(nt),{matches:n}=o.useContext(it),{pathname:i}=ct(),s=JSON.stringify(B(n,a.v7_relativeSplatPath));return o.useMemo(()=>I(e,JSON.parse(s),i,"path"===r),[e,s,i,r])}function wt(e,t){return Et(e,t)}function Et(e,t,r,n){ut()||l(!1);let{navigator:i}=o.useContext(nt),{matches:s}=o.useContext(it),u=s[s.length-1],c=u?u.params:{},d=(u&&u.pathname,u?u.pathnameBase:"/");u&&u.route;let f,p=ct();if(t){var v;let e="string"==typeof t?h(t):t;"/"===d||(null==(v=e.pathname)?void 0:v.startsWith(d))||l(!1),f=e}else f=p;let y=f.pathname||"/",g=y;if("/"!==d){let e=d.replace(/^\//,"").split("/");g="/"+y.replace(/^\//,"").split("/").slice(e.length).join("/")}let b=m(e,{pathname:g}),w=Pt(b&&b.map(e=>Object.assign({},e,{params:Object.assign({},c,e.params),pathname:z([d,i.encodeLocation?i.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?d:z([d,i.encodeLocation?i.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])})),s,r,n);return t&&w?o.createElement(ot.Provider,{value:{location:et({pathname:"/",search:"",hash:"",state:null,key:"default"},f),navigationType:a.Pop}},w):w}function Rt(){let e=Bt(),t=ee(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,a={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return o.createElement(o.Fragment,null,o.createElement("h2",null,"Unexpected Application Error!"),o.createElement("h3",{style:{fontStyle:"italic"}},t),r?o.createElement("pre",{style:a},r):null,null)}const St=o.createElement(Rt,null);class xt extends o.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?o.createElement(it.Provider,{value:this.props.routeContext},o.createElement(st.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Dt(e){let{routeContext:t,match:r,children:a}=e,n=o.useContext(tt);return n&&n.static&&n.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(n.staticContext._deepestRenderedBoundaryId=r.route.id),o.createElement(it.Provider,{value:t},a)}function Pt(e,t,r,a){var n;if(void 0===t&&(t=[]),void 0===r&&(r=null),void 0===a&&(a=null),null==e){var i;if(!r)return null;if(r.errors)e=r.matches;else{if(!(null!=(i=a)&&i.v7_partialHydration&&0===t.length&&!r.initialized&&r.matches.length>0))return null;e=r.matches}}let s=e,u=null==(n=r)?void 0:n.errors;if(null!=u){let e=s.findIndex(e=>e.route.id&&void 0!==(null==u?void 0:u[e.route.id]));e>=0||l(!1),s=s.slice(0,Math.min(s.length,e+1))}let c=!1,d=-1;if(r&&a&&a.v7_partialHydration)for(let e=0;e<s.length;e++){let t=s[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(d=e),t.route.id){let{loaderData:e,errors:a}=r,n=t.route.loader&&void 0===e[t.route.id]&&(!a||void 0===a[t.route.id]);if(t.route.lazy||n){c=!0,s=d>=0?s.slice(0,d+1):[s[0]];break}}}return s.reduceRight((e,a,n)=>{let i,l=!1,h=null,f=null;var p;r&&(i=u&&a.route.id?u[a.route.id]:void 0,h=a.route.errorElement||St,c&&(d<0&&0===n?($t[p="route-fallback"]||($t[p]=!0),l=!0,f=null):d===n&&(l=!0,f=a.route.hydrateFallbackElement||null)));let m=t.concat(s.slice(0,n+1)),v=()=>{let t;return t=i?h:l?f:a.route.Component?o.createElement(a.route.Component,null):a.route.element?a.route.element:e,o.createElement(Dt,{match:a,routeContext:{outlet:e,matches:m,isDataRoute:null!=r},children:t})};return r&&(a.route.ErrorBoundary||a.route.errorElement||0===n)?o.createElement(xt,{location:r.location,revalidation:r.revalidation,component:h,error:i,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()},null)}var Ct=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Ct||{}),kt=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(kt||{});function _t(e){let t=o.useContext(tt);return t||l(!1),t}function Lt(e){let t=o.useContext(rt);return t||l(!1),t}function Mt(e){let t=function(){let e=o.useContext(it);return e||l(!1),e}(),r=t.matches[t.matches.length-1];return r.route.id||l(!1),r.route.id}function At(){return Mt(kt.UseRouteId)}function jt(){return Lt(kt.UseNavigation).navigation}function Ut(){let e=_t(Ct.UseRevalidator),t=Lt(kt.UseRevalidator);return o.useMemo(()=>({revalidate:e.router.revalidate,state:t.revalidation}),[e.router.revalidate,t.revalidation])}function Ot(){let{matches:e,loaderData:t}=Lt(kt.UseMatches);return o.useMemo(()=>e.map(e=>y(e,t)),[e,t])}function Tt(){let e=Lt(kt.UseLoaderData),t=Mt(kt.UseLoaderData);if(!e.errors||null==e.errors[t])return e.loaderData[t];console.error("You cannot `useLoaderData` in an errorElement (routeId: "+t+")")}function Nt(e){return Lt(kt.UseRouteLoaderData).loaderData[e]}function Ft(){let e=Lt(kt.UseActionData),t=Mt(kt.UseLoaderData);return e.actionData?e.actionData[t]:void 0}function Bt(){var e;let t=o.useContext(st),r=Lt(kt.UseRouteError),a=Mt(kt.UseRouteError);return void 0!==t?t:null==(e=r.errors)?void 0:e[a]}function It(){let e=o.useContext(at);return null==e?void 0:e._data}function zt(){let e=o.useContext(at);return null==e?void 0:e._error}let Ht=0;function Wt(e){let{router:t,basename:r}=_t(Ct.UseBlocker),a=Lt(kt.UseBlocker),[n,i]=o.useState(""),s=o.useCallback(t=>{if("function"!=typeof e)return!!e;if("/"===r)return e(t);let{currentLocation:a,nextLocation:n,historyAction:o}=t;return e({currentLocation:et({},a,{pathname:A(a.pathname,r)||a.pathname}),nextLocation:et({},n,{pathname:A(n.pathname,r)||n.pathname}),historyAction:o})},[r,e]);return o.useEffect(()=>{let e=String(++Ht);return i(e),()=>t.deleteBlocker(e)},[t]),o.useEffect(()=>{""!==n&&t.getBlocker(n,s)},[t,n,s]),n&&a.blockers.has(n)?a.blockers.get(n):ue}const $t={},Jt=(e,t,r)=>{};function Kt(e,t){void 0===(null==e?void 0:e.v7_startTransition)&&Jt("v7_startTransition","React Router will begin wrapping state updates in `React.startTransition` in v7","https://reactrouter.com/v6/upgrading/future#v7_starttransition"),void 0!==(null==e?void 0:e.v7_relativeSplatPath)||t&&void 0!==t.v7_relativeSplatPath||Jt("v7_relativeSplatPath","Relative route resolution within Splat routes is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath"),t&&(void 0===t.v7_fetcherPersist&&Jt("v7_fetcherPersist","The persistence behavior of fetchers is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist"),void 0===t.v7_normalizeFormMethod&&Jt("v7_normalizeFormMethod","Casing of `formMethod` fields is being normalized to uppercase in v7","https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod"),void 0===t.v7_partialHydration&&Jt("v7_partialHydration","`RouterProvider` hydration behavior is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_partialhydration"),void 0===t.v7_skipActionErrorRevalidation&&Jt("v7_skipActionErrorRevalidation","The revalidation behavior after 4xx/5xx `action` responses is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation"))}const qt=o.startTransition;function Vt(e){let{fallbackElement:t,router:r,future:a}=e,[n,i]=o.useState(r.state),{v7_startTransition:s}=a||{},l=o.useCallback(e=>{s&&qt?qt(()=>i(e)):i(e)},[i,s]);o.useLayoutEffect(()=>r.subscribe(l),[r,l]),o.useEffect(()=>{},[]);let u=o.useMemo(()=>({createHref:r.createHref,encodeLocation:r.encodeLocation,go:e=>r.navigate(e),push:(e,t,a)=>r.navigate(e,{state:t,preventScrollReset:null==a?void 0:a.preventScrollReset}),replace:(e,t,a)=>r.navigate(e,{replace:!0,state:t,preventScrollReset:null==a?void 0:a.preventScrollReset})}),[r]),c=r.basename||"/",d=o.useMemo(()=>({router:r,navigator:u,static:!1,basename:c}),[r,u,c]);return o.useEffect(()=>Kt(a,r.future),[r,a]),o.createElement(o.Fragment,null,o.createElement(tt.Provider,{value:d},o.createElement(rt.Provider,{value:n},o.createElement(er,{basename:c,location:n.location,navigationType:n.historyAction,navigator:u,future:{v7_relativeSplatPath:r.future.v7_relativeSplatPath}},n.initialized||r.future.v7_partialHydration?o.createElement(Yt,{routes:r.routes,future:r.future,state:n}):t))),null)}function Yt(e){let{routes:t,future:r,state:a}=e;return Et(t,void 0,a,r)}function Xt(e){let{basename:t,children:r,initialEntries:a,initialIndex:n,future:i}=e,l=o.useRef();null==l.current&&(l.current=s({initialEntries:a,initialIndex:n,v5Compat:!0}));let u=l.current,[c,d]=o.useState({action:u.action,location:u.location}),{v7_startTransition:h}=i||{},f=o.useCallback(e=>{h&&qt?qt(()=>d(e)):d(e)},[d,h]);return o.useLayoutEffect(()=>u.listen(f),[u,f]),o.useEffect(()=>Kt(i),[i]),o.createElement(er,{basename:t,children:r,location:c.location,navigationType:c.action,navigator:u,future:i})}function Gt(e){let{to:t,replace:r,state:a,relative:n}=e;ut()||l(!1);let{future:i,static:s}=o.useContext(nt),{matches:u}=o.useContext(it),{pathname:c}=ct(),d=pt(),h=I(t,B(u,i.v7_relativeSplatPath),c,"path"===n),f=JSON.stringify(h);return o.useEffect(()=>d(JSON.parse(f),{replace:r,state:a,relative:n}),[d,f,n,r,a]),null}function Qt(e){return yt(e.context)}function Zt(e){l(!1)}function er(e){let{basename:t="/",children:r=null,location:n,navigationType:i=a.Pop,navigator:s,static:u=!1,future:c}=e;ut()&&l(!1);let d=t.replace(/^\/*/,"/"),f=o.useMemo(()=>({basename:d,navigator:s,static:u,future:et({v7_relativeSplatPath:!1},c)}),[d,c,s,u]);"string"==typeof n&&(n=h(n));let{pathname:p="/",search:m="",hash:v="",state:y=null,key:g="default"}=n,b=o.useMemo(()=>{let e=A(p,d);return null==e?null:{location:{pathname:e,search:m,hash:v,state:y,key:g},navigationType:i}},[d,p,m,v,y,g,i]);return null==b?null:o.createElement(nt.Provider,{value:f},o.createElement(ot.Provider,{children:r,value:b}))}function tr(e){let{children:t,location:r}=e;return wt(sr(t),r)}function rr(e){let{children:t,errorElement:r,resolve:a}=e;return o.createElement(or,{resolve:a,errorElement:r},o.createElement(ir,null,t))}var ar=function(e){return e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error",e}(ar||{});const nr=new Promise(()=>{});class or extends o.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("<Await> caught the following error during render",e,t)}render(){let{children:e,errorElement:t,resolve:r}=this.props,a=null,n=ar.pending;if(r instanceof Promise)if(this.state.error){n=ar.error;let e=this.state.error;a=Promise.reject().catch(()=>{}),Object.defineProperty(a,"_tracked",{get:()=>!0}),Object.defineProperty(a,"_error",{get:()=>e})}else r._tracked?(a=r,n="_error"in a?ar.error:"_data"in a?ar.success:ar.pending):(n=ar.pending,Object.defineProperty(r,"_tracked",{get:()=>!0}),a=r.then(e=>Object.defineProperty(r,"_data",{get:()=>e}),e=>Object.defineProperty(r,"_error",{get:()=>e})));else n=ar.success,a=Promise.resolve(),Object.defineProperty(a,"_tracked",{get:()=>!0}),Object.defineProperty(a,"_data",{get:()=>r});if(n===ar.error&&a._error instanceof K)throw nr;if(n===ar.error&&!t)throw a._error;if(n===ar.error)return o.createElement(at.Provider,{value:a,children:t});if(n===ar.success)return o.createElement(at.Provider,{value:a,children:e});throw a}}function ir(e){let{children:t}=e,r=It(),a="function"==typeof t?t(r):t;return o.createElement(o.Fragment,null,a)}function sr(e,t){void 0===t&&(t=[]);let r=[];return o.Children.forEach(e,(e,a)=>{if(!o.isValidElement(e))return;let n=[...t,a];if(e.type===o.Fragment)return void r.push.apply(r,sr(e.props.children,n));e.type!==Zt&&l(!1),e.props.index&&e.props.children&&l(!1);let i={id:e.props.id||n.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(i.children=sr(e.props.children,n)),r.push(i)}),r}function lr(e){return Pt(e)}function ur(e){let t={hasErrorBoundary:null!=e.ErrorBoundary||null!=e.errorElement};return e.Component&&Object.assign(t,{element:o.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:o.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:o.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}function cr(e,t){return fe({basename:null==t?void 0:t.basename,future:et({},null==t?void 0:t.future,{v7_prependBasename:!0}),history:s({initialEntries:null==t?void 0:t.initialEntries,initialIndex:null==t?void 0:t.initialIndex}),hydrationData:null==t?void 0:t.hydrationData,routes:e,mapRouteProperties:ur,dataStrategy:null==t?void 0:t.dataStrategy,patchRoutesOnNavigation:null==t?void 0:t.patchRoutesOnNavigation}).initialize()}}}]);
|
|
3
|
+
//# sourceMappingURL=7367.62c9669e.chunk.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @remix-run/router v1.23.2
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) Remix Software Inc.
|
|
5
|
+
*
|
|
6
|
+
* This source code is licensed under the MIT license found in the
|
|
7
|
+
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
+
*
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* React Router v6.30.3
|
|
14
|
+
*
|
|
15
|
+
* Copyright (c) Remix Software Inc.
|
|
16
|
+
*
|
|
17
|
+
* This source code is licensed under the MIT license found in the
|
|
18
|
+
* LICENSE.md file in the root directory of this source tree.
|
|
19
|
+
*
|
|
20
|
+
* @license MIT
|
|
21
|
+
*/
|