@bryanhu/codexly 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -1
- package/README.md +4 -1
- package/README.zh-CN.md +4 -1
- package/dist/{chunk-63TSFHXS.js → chunk-C3PIS4SQ.js} +916 -399
- package/dist/{chunk-6W2NSQP6.js → chunk-DEKHLAWT.js} +1 -1
- package/dist/{chunk-I5XCZA2U.js → chunk-NUY5U24W.js} +876 -56
- package/dist/{chunk-3OBVX5TN.js → chunk-RNTA4MFS.js} +9 -1
- package/dist/{chunk-TGDKFWII.js → chunk-TEWPWZPG.js} +116 -7
- package/dist/cli.js +10 -6
- package/dist/client/index.js +35 -5
- package/dist/core/index.js +1 -1
- package/dist/protocol/index.js +1 -1
- package/dist/providers/codex/index.js +3 -3
- package/dist/server/index.js +5 -5
- package/dist/sqlite-state-worker.js +117 -7
- package/dist/web/.vite/manifest.json +254 -128
- package/dist/web/.vite/manifest.json.br +0 -0
- package/dist/web/.vite/manifest.json.gz +0 -0
- package/dist/web/assets/button-group-b2-xCzBP.js +1 -0
- package/dist/web/assets/button-group-b2-xCzBP.js.br +0 -0
- package/dist/web/assets/button-group-b2-xCzBP.js.gz +0 -0
- package/dist/web/assets/check-DExH7zwT.js +1 -0
- package/dist/web/assets/check-DExH7zwT.js.br +0 -0
- package/dist/web/assets/check-DExH7zwT.js.gz +0 -0
- package/dist/web/assets/checkbox-Cft8ypsb.js +1 -0
- package/dist/web/assets/checkbox-Cft8ypsb.js.br +0 -0
- package/dist/web/assets/checkbox-Cft8ypsb.js.gz +0 -0
- package/dist/web/assets/{chunk-BO2N2NFS-D3J36g1Z.js → chunk-BO2N2NFS-BZtBhhTV.js} +4 -4
- package/dist/web/assets/chunk-BO2N2NFS-BZtBhhTV.js.br +0 -0
- package/dist/web/assets/chunk-BO2N2NFS-BZtBhhTV.js.gz +0 -0
- package/dist/web/assets/{code-highlighter-Cl_7OKC4.js → code-highlighter-BG341hSJ.js} +1 -1
- package/dist/web/assets/code-highlighter-BG341hSJ.js.br +0 -0
- package/dist/web/assets/code-highlighter-BG341hSJ.js.gz +0 -0
- package/dist/web/assets/{code-languages-CoeGleQS.js → code-languages-DA_FG9-T.js} +1 -1
- package/dist/web/assets/code-languages-DA_FG9-T.js.br +0 -0
- package/dist/web/assets/code-languages-DA_FG9-T.js.gz +0 -0
- package/dist/web/assets/context-menu-CZuXyHCN.js +1 -0
- package/dist/web/assets/context-menu-CZuXyHCN.js.br +0 -0
- package/dist/web/assets/context-menu-CZuXyHCN.js.gz +0 -0
- package/dist/web/assets/dist-ByRtqJXv.js +1 -0
- package/dist/web/assets/dist-ByRtqJXv.js.br +0 -0
- package/dist/web/assets/dist-ByRtqJXv.js.gz +0 -0
- package/dist/web/assets/dist-hozmU7_C.js +1 -0
- package/dist/web/assets/dist-hozmU7_C.js.br +0 -0
- package/dist/web/assets/dist-hozmU7_C.js.gz +0 -0
- package/dist/web/assets/es2015-Cd8ehGwJ.js +41 -0
- package/dist/web/assets/es2015-Cd8ehGwJ.js.br +0 -0
- package/dist/web/assets/es2015-Cd8ehGwJ.js.gz +0 -0
- package/dist/web/assets/file-code-corner-D1h7_C7f.js +1 -0
- package/dist/web/assets/file-code-corner-D1h7_C7f.js.br +0 -0
- package/dist/web/assets/file-code-corner-D1h7_C7f.js.gz +0 -0
- package/dist/web/assets/file-navigation-view-preference-BikLLmlP.js +1 -0
- package/dist/web/assets/file-navigation-view-preference-BikLLmlP.js.br +0 -0
- package/dist/web/assets/file-navigation-view-preference-BikLLmlP.js.gz +0 -0
- package/dist/web/assets/file-review-dialog-dlOxwNrj.js +2 -0
- package/dist/web/assets/file-review-dialog-dlOxwNrj.js.br +0 -0
- package/dist/web/assets/file-review-dialog-dlOxwNrj.js.gz +0 -0
- package/dist/web/assets/file-tree-CbuG5nkz.js +1 -0
- package/dist/web/assets/file-tree-CbuG5nkz.js.br +0 -0
- package/dist/web/assets/file-tree-CbuG5nkz.js.gz +0 -0
- package/dist/web/assets/git-commit-horizontal-BJGxHnV4.js +1 -0
- package/dist/web/assets/git-commit-horizontal-BJGxHnV4.js.br +0 -0
- package/dist/web/assets/git-commit-horizontal-BJGxHnV4.js.gz +0 -0
- package/dist/web/assets/git-history-panel-DqiTnaf1.js +2 -0
- package/dist/web/assets/git-history-panel-DqiTnaf1.js.br +0 -0
- package/dist/web/assets/git-history-panel-DqiTnaf1.js.gz +0 -0
- package/dist/web/assets/global-settings-dialog-DFjxQX_B.js +1 -0
- package/dist/web/assets/global-settings-dialog-DFjxQX_B.js.br +0 -0
- package/dist/web/assets/global-settings-dialog-DFjxQX_B.js.gz +0 -0
- package/dist/web/assets/{highlighted-body-OFNGDK62-DLuRF1Ir.js → highlighted-body-OFNGDK62-bj8RQV-D.js} +1 -1
- package/dist/web/assets/highlighted-body-OFNGDK62-bj8RQV-D.js.br +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-bj8RQV-D.js.gz +0 -0
- package/dist/web/assets/index-BZYdzDQ3.css +2 -0
- package/dist/web/assets/index-BZYdzDQ3.css.br +0 -0
- package/dist/web/assets/index-BZYdzDQ3.css.gz +0 -0
- package/dist/web/assets/index-DTJVeg10.js +4 -0
- package/dist/web/assets/index-DTJVeg10.js.br +0 -0
- package/dist/web/assets/index-DTJVeg10.js.gz +0 -0
- package/dist/web/assets/lazy-message-response-8zk6PTbZ.js +2 -0
- package/dist/web/assets/lazy-message-response-8zk6PTbZ.js.br +0 -0
- package/dist/web/assets/lazy-message-response-8zk6PTbZ.js.gz +0 -0
- package/dist/web/assets/loader-circle-CYc50iXi.js +1 -0
- package/dist/web/assets/loader-circle-CYc50iXi.js.br +0 -0
- package/dist/web/assets/loader-circle-CYc50iXi.js.gz +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-BDoa2Ho_.js +1 -0
- package/dist/web/assets/mermaid-GHXKKRXX-BDoa2Ho_.js.br +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-BDoa2Ho_.js.gz +0 -0
- package/dist/web/assets/message-response-CKPW6CRi.js +7 -0
- package/dist/web/assets/message-response-CKPW6CRi.js.br +0 -0
- package/dist/web/assets/message-response-CKPW6CRi.js.gz +0 -0
- package/dist/web/assets/{patch-diff-viewer-7Ar-plzV.js → patch-diff-viewer-CaWTvh9_.js} +2 -2
- package/dist/web/assets/patch-diff-viewer-CaWTvh9_.js.br +0 -0
- package/dist/web/assets/patch-diff-viewer-CaWTvh9_.js.gz +0 -0
- package/dist/web/assets/project-file-popup-page-Cmjoovjs.js +1 -0
- package/dist/web/assets/project-file-popup-page-Cmjoovjs.js.br +0 -0
- package/dist/web/assets/project-file-popup-page-Cmjoovjs.js.gz +0 -0
- package/dist/web/assets/project-source-panel-0Chmfe7s.js +3 -0
- package/dist/web/assets/project-source-panel-0Chmfe7s.js.br +0 -0
- package/dist/web/assets/project-source-panel-0Chmfe7s.js.gz +0 -0
- package/dist/web/assets/prompt-input-controls-CT6f-1tO.js +1 -0
- package/dist/web/assets/prompt-input-controls-CT6f-1tO.js.br +0 -0
- package/dist/web/assets/prompt-input-controls-CT6f-1tO.js.gz +0 -0
- package/dist/web/assets/prompt-reference-token-CTm_xv2R.js +1 -0
- package/dist/web/assets/prompt-reference-token-CTm_xv2R.js.br +0 -0
- package/dist/web/assets/prompt-reference-token-CTm_xv2R.js.gz +0 -0
- package/dist/web/assets/provider-connection-queries-CLpiOnBN.js +1 -0
- package/dist/web/assets/provider-connection-queries-CLpiOnBN.js.br +0 -0
- package/dist/web/assets/provider-connection-queries-CLpiOnBN.js.gz +0 -0
- package/dist/web/assets/{shiki-bundle-UDLEjOL9.js → shiki-bundle-BEmB8kBs.js} +1 -1
- package/dist/web/assets/shiki-bundle-BEmB8kBs.js.br +0 -0
- package/dist/web/assets/shiki-bundle-BEmB8kBs.js.gz +0 -0
- package/dist/web/assets/tooltip-BU1Qoscx.js +1 -0
- package/dist/web/assets/tooltip-BU1Qoscx.js.br +0 -0
- package/dist/web/assets/tooltip-BU1Qoscx.js.gz +0 -0
- package/dist/web/assets/upload-BDX8w8rQ.js +1 -0
- package/dist/web/assets/upload-BDX8w8rQ.js.br +0 -0
- package/dist/web/assets/upload-BDX8w8rQ.js.gz +0 -0
- package/dist/web/assets/useInfiniteQuery-Bj31MvqL.js +1 -0
- package/dist/web/assets/useInfiniteQuery-Bj31MvqL.js.br +0 -0
- package/dist/web/assets/useInfiniteQuery-Bj31MvqL.js.gz +0 -0
- package/dist/web/assets/workbench-inspector-changes-CWeWA-hv.js +2 -0
- package/dist/web/assets/workbench-inspector-changes-CWeWA-hv.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-CWeWA-hv.js.gz +0 -0
- package/dist/web/assets/workbench-pet-canvas-CO4nVH5z.js +1 -0
- package/dist/web/assets/workbench-pet-canvas-CO4nVH5z.js.br +0 -0
- package/dist/web/assets/workbench-pet-canvas-CO4nVH5z.js.gz +0 -0
- package/dist/web/assets/workbench-shell-BOnddpen.js +15 -0
- package/dist/web/assets/workbench-shell-BOnddpen.js.br +0 -0
- package/dist/web/assets/workbench-shell-BOnddpen.js.gz +0 -0
- package/dist/web/index.html +12 -8
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/package.json +1 -1
- package/dist/web/assets/button-SdoQawHa.js +0 -1
- package/dist/web/assets/button-SdoQawHa.js.br +0 -0
- package/dist/web/assets/button-SdoQawHa.js.gz +0 -0
- package/dist/web/assets/button-group-cIDkfDF9.js +0 -1
- package/dist/web/assets/button-group-cIDkfDF9.js.br +0 -0
- package/dist/web/assets/button-group-cIDkfDF9.js.gz +0 -0
- package/dist/web/assets/checkbox-BlpFo5_d.js +0 -1
- package/dist/web/assets/checkbox-BlpFo5_d.js.br +0 -0
- package/dist/web/assets/checkbox-BlpFo5_d.js.gz +0 -0
- package/dist/web/assets/chunk-BO2N2NFS-D3J36g1Z.js.br +0 -0
- package/dist/web/assets/chunk-BO2N2NFS-D3J36g1Z.js.gz +0 -0
- package/dist/web/assets/code-highlighter-Cl_7OKC4.js.br +0 -0
- package/dist/web/assets/code-highlighter-Cl_7OKC4.js.gz +0 -0
- package/dist/web/assets/code-languages-CoeGleQS.js.br +0 -0
- package/dist/web/assets/code-languages-CoeGleQS.js.gz +0 -0
- package/dist/web/assets/es2015-B-skuqay.js +0 -41
- package/dist/web/assets/es2015-B-skuqay.js.br +0 -0
- package/dist/web/assets/es2015-B-skuqay.js.gz +0 -0
- package/dist/web/assets/file-DwOQ4CRt.js +0 -1
- package/dist/web/assets/file-DwOQ4CRt.js.br +0 -0
- package/dist/web/assets/file-DwOQ4CRt.js.gz +0 -0
- package/dist/web/assets/file-review-dialog-BmXxZad1.js +0 -2
- package/dist/web/assets/file-review-dialog-BmXxZad1.js.br +0 -0
- package/dist/web/assets/file-review-dialog-BmXxZad1.js.gz +0 -0
- package/dist/web/assets/file-tree-Bl6o98td.js +0 -1
- package/dist/web/assets/file-tree-Bl6o98td.js.br +0 -0
- package/dist/web/assets/file-tree-Bl6o98td.js.gz +0 -0
- package/dist/web/assets/git-commit-horizontal-1BtAo1_y.js +0 -1
- package/dist/web/assets/git-commit-horizontal-1BtAo1_y.js.br +0 -0
- package/dist/web/assets/git-commit-horizontal-1BtAo1_y.js.gz +0 -0
- package/dist/web/assets/git-history-panel-zXprGDsD.js +0 -2
- package/dist/web/assets/git-history-panel-zXprGDsD.js.br +0 -0
- package/dist/web/assets/git-history-panel-zXprGDsD.js.gz +0 -0
- package/dist/web/assets/global-settings-dialog-CQK8OvfF.js +0 -1
- package/dist/web/assets/global-settings-dialog-CQK8OvfF.js.br +0 -0
- package/dist/web/assets/global-settings-dialog-CQK8OvfF.js.gz +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-DLuRF1Ir.js.br +0 -0
- package/dist/web/assets/highlighted-body-OFNGDK62-DLuRF1Ir.js.gz +0 -0
- package/dist/web/assets/index-BQDjXTIj.js +0 -4
- package/dist/web/assets/index-BQDjXTIj.js.br +0 -0
- package/dist/web/assets/index-BQDjXTIj.js.gz +0 -0
- package/dist/web/assets/index-Cg_JyLiC.css +0 -2
- package/dist/web/assets/index-Cg_JyLiC.css.br +0 -0
- package/dist/web/assets/index-Cg_JyLiC.css.gz +0 -0
- package/dist/web/assets/lazy-message-response-BAESsr6y.js +0 -2
- package/dist/web/assets/lazy-message-response-BAESsr6y.js.br +0 -0
- package/dist/web/assets/lazy-message-response-BAESsr6y.js.gz +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-D80VLkUl.js +0 -1
- package/dist/web/assets/mermaid-GHXKKRXX-D80VLkUl.js.br +0 -0
- package/dist/web/assets/mermaid-GHXKKRXX-D80VLkUl.js.gz +0 -0
- package/dist/web/assets/message-response-ll2GyVvz.js +0 -7
- package/dist/web/assets/message-response-ll2GyVvz.js.br +0 -0
- package/dist/web/assets/message-response-ll2GyVvz.js.gz +0 -0
- package/dist/web/assets/patch-diff-viewer-7Ar-plzV.js.br +0 -0
- package/dist/web/assets/patch-diff-viewer-7Ar-plzV.js.gz +0 -0
- package/dist/web/assets/prompt-input-controls-t69FYoWk.js +0 -1
- package/dist/web/assets/prompt-input-controls-t69FYoWk.js.br +0 -0
- package/dist/web/assets/prompt-input-controls-t69FYoWk.js.gz +0 -0
- package/dist/web/assets/prompt-reference-token-Cxx6C-IR.js +0 -1
- package/dist/web/assets/prompt-reference-token-Cxx6C-IR.js.br +0 -0
- package/dist/web/assets/prompt-reference-token-Cxx6C-IR.js.gz +0 -0
- package/dist/web/assets/provider-connection-queries-BKyJMJn1.js +0 -1
- package/dist/web/assets/provider-connection-queries-BKyJMJn1.js.br +0 -0
- package/dist/web/assets/provider-connection-queries-BKyJMJn1.js.gz +0 -0
- package/dist/web/assets/shiki-bundle-UDLEjOL9.js.br +0 -0
- package/dist/web/assets/shiki-bundle-UDLEjOL9.js.gz +0 -0
- package/dist/web/assets/upload-Bbk2LEzM.js +0 -1
- package/dist/web/assets/upload-Bbk2LEzM.js.br +0 -0
- package/dist/web/assets/upload-Bbk2LEzM.js.gz +0 -0
- package/dist/web/assets/workbench-inspector-changes-CumCxeA7.js +0 -1
- package/dist/web/assets/workbench-inspector-changes-CumCxeA7.js.br +0 -0
- package/dist/web/assets/workbench-inspector-changes-CumCxeA7.js.gz +0 -0
- package/dist/web/assets/workbench-shell-D21PPmmO.js +0 -13
- package/dist/web/assets/workbench-shell-D21PPmmO.js.br +0 -0
- package/dist/web/assets/workbench-shell-D21PPmmO.js.gz +0 -0
|
Binary file
|
|
Binary file
|
package/dist/web/index.html
CHANGED
|
@@ -7,17 +7,21 @@
|
|
|
7
7
|
<meta name="theme-color" content="#181818" media="(prefers-color-scheme: dark)" />
|
|
8
8
|
<link rel="icon" href="/favicon.svg?v=4" type="image/svg+xml" />
|
|
9
9
|
<title>Codexly</title>
|
|
10
|
-
<script type="module" crossorigin src="/assets/index-
|
|
10
|
+
<script type="module" crossorigin src="/assets/index-DTJVeg10.js"></script>
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/react-runtime-CVaUQXZF.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/bundle-mjs-rHxsej31.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
20
|
-
<link rel="
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/dist-hozmU7_C.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/tooltip-BU1Qoscx.js">
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/useInfiniteQuery-Bj31MvqL.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/check-DExH7zwT.js">
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/checkbox-Cft8ypsb.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/loader-circle-CYc50iXi.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/es2015-Cd8ehGwJ.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/dist-ByRtqJXv.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="/assets/file-tree-CbuG5nkz.js">
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-connection-queries-CLpiOnBN.js">
|
|
24
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BZYdzDQ3.css">
|
|
21
25
|
</head>
|
|
22
26
|
<body>
|
|
23
27
|
<div id="root"></div>
|
package/dist/web/index.html.br
CHANGED
|
Binary file
|
package/dist/web/index.html.gz
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e,t}from"./rolldown-runtime-QTnfLwEv.js";import{i as n,t as r}from"./react-runtime-CVaUQXZF.js";import{r as i,t as a}from"./bundle-mjs-rHxsej31.js";var o=t((e=>{var t=n();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=t.useState,o=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),s=t(((e,t)=>{t.exports=o()})),c=e(n()),l=s(),u=e=>typeof e==`string`,d=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},f=e=>e==null?``:String(e),p=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},m=/###/g,h=e=>e&&e.includes(`###`)?e.replace(m,`.`):e,g=e=>!e||u(e),_=(e,t,n)=>{let r=u(t)?t.split(`.`):t,i=0;for(;i<r.length-1;){if(g(e))return{};let t=h(r[i]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++i}return g(e)?{}:{obj:e,k:h(r[i])}},v=(e,t,n)=>{let{obj:r,k:i}=_(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=_(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=_(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},y=(e,t,n,r)=>{let{obj:i,k:a}=_(e,t,Object);i[a]=i[a]||[],i[a].push(n)},b=(e,t)=>{let{obj:n,k:r}=_(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},x=(e,t,n)=>{let r=b(e,n);return r===void 0?b(t,n):r},S=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(Object.prototype.hasOwnProperty.call(e,r)?u(e[r])||e[r]instanceof String||u(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):S(e[r],t[r],n):e[r]=t[r]);return e},C=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),w={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`,"/":`/`},T=e=>u(e)?e.replace(/[&<>"'\/]/g,e=>w[e]):e,E=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},D=[` `,`,`,`?`,`!`,`;`],ee=new E(20),O=(e,t,n)=>{t||=``,n||=``;let r=D.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=ee.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},k=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},A=e=>e?.replace(/_/g,`-`),te={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},j=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||te,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>u(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),u(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},M=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},N=class extends M{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):u(n)&&i?o.push(...n.split(i)):o.push(n)));let s=b(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!u(n)?s:k(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),v(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(u(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=b(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?S(s,n,i):s={...s,...n},v(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},ne={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},re=Symbol(`i18next/PATH_KEY`);function ie(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===re?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function P(e,t){let{[re]:n}=e(ie()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`,a=t?.enableSelector===`strict`;if(n.length>1&&i){let e=t?.ns,o=a?Array.isArray(e)?e:e?[e]:null:Array.isArray(e)?e:null;if(o&&(a?o:o.length>1?o.slice(1):[]).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var F=e=>!u(e)&&typeof e!=`boolean`&&typeof e!=`number`,ae=class e extends M{constructor(e,t={}){super(),p([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=j.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=F(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!O(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:u(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:u(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=P(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?P(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],d=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;d===void 0&&(d=`:`);let f=i.lng||this.language,p=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f?.toLowerCase()===`cimode`)return p?a?{res:`${l}${d}${s}`,usedKey:s,exactUsedKey:s,usedLng:f,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${d}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:f,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let m=this.resolve(t,i),h=m?.res,g=m?.usedKey||s,_=m?.exactUsedKey||s,v=[`[object Number]`,`[object Function]`,`[object RegExp]`],y=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject,x=i.count!==void 0&&!u(i.count),S=e.hasDefaultValue(i),C=x?this.pluralResolver.getSuffix(f,i.count,i):``,w=i.ordinal&&x?this.pluralResolver.getSuffix(f,i.count,{ordinal:!1}):``,T=x&&!i.ordinal&&i.count===0,E=T&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${C}`]||i[`defaultValue${w}`]||i.defaultValue,D=h;b&&!h&&S&&(D=E);let ee=F(D),O=Object.prototype.toString.apply(D);if(b&&D&&ee&&!v.includes(O)&&!(u(y)&&Array.isArray(D))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,D,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(m.res=e,m.usedParams=this.getUsedParamsDetails(i),m):e}if(o){let e=Array.isArray(D),t=e?[]:{},n=e?_:g;for(let e in D)if(Object.prototype.hasOwnProperty.call(D,e)){let r=`${n}${o}${e}`;S&&!h?t[e]=this.translate(r,{...i,defaultValue:F(E)?E[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=D[e])}h=t}}else if(b&&u(y)&&Array.isArray(h))h=h.join(y),h&&=this.extendTranslation(h,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(h)&&S&&(e=!0,h=E),this.isValidLookup(h)||(n=!0,h=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:h,c=S&&E!==h&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,f,l,x&&!c?`${s}${this.pluralResolver.getSuffix(f,i.count,i)}`:s,c?E:h),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let n=(e,t,n)=>{let r=S&&n!==h?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,h)};this.options.saveMissing&&(this.options.saveMissingPlurals&&x?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);T&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||E)})}):n(e,s,E))}h=this.extendTranslation(h,t,i,m,r),n&&h===s&&this.options.appendNamespaceToMissingKey&&(h=`${l}${d}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(h=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${d}${s}`:s,e?h:void 0,i))}return a?(m.res=h,m.usedParams=this.getUsedParamsDetails(i),m):h}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=u(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!u(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;o<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>i?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=u(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=ne.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return u(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?P(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let d=t.count!==void 0&&!u(t.count),f=d&&!t.ordinal&&t.count===0,p=t.context!==void 0&&(u(t.context)||typeof t.context==`number`)&&t.context!==``,m=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${m[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${m[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${m.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),m.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;d&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(d&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),f&&o.push(c+n)),p){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),d&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),f&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!u(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r={...r,count:e.count}),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},oe=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=j.create(`languageUtils`)}getScriptPartFromCode(e){if(e=A(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=A(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(u(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),u(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return u(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):u(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},se={zero:0,one:1,two:2,few:3,many:4,other:5},ce={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},le=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=j.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=A(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),ce;if(!e.match(/-|_/))return ce;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>se[e]-se[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},ue=(e,t,n,r=`.`,i=!0)=>{let a=x(e,t,n);return!a&&i&&u(n)&&(a=k(e,n,r),a===void 0&&(a=k(t,n,r))),a},de=e=>e.replace(/\$/g,`$$$$`),fe=class{constructor(e={}){this.logger=j.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?T:t,this.escapeValue=n===void 0||n,this.useRawValueToEscape=r!==void 0&&r,this.prefix=i?C(i):a||`{{`,this.suffix=o?C(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?C(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?C(l):``,this.nestingPrefix=d?C(d):f||C(`$t(`),this.nestingSuffix=p?C(p):m||C(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_!==void 0&&_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=ue(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(ue(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,d=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>e},{regex:this.regexp,safeValue:e=>this.escapeValue?this.escape(e):e}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=u(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(d){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else!u(a)&&!this.useRawValueToEscape&&(a=f(a));let s=t.safeValue(a);if(e=e.replace(i[0],de(s)),d?(t.regex.lastIndex+=s.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${C(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!u(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/s.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!u(i))return i;u(i)||(i=f(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},pe=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},me=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(A(r),i),t[o]=s),s(n)}},he=e=>(t,n,r)=>e(A(n),r)(t),ge=class{constructor(e={}){this.logger=j.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?me:he;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=me(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator),a=[];for(let e=0;e<i.length;e++){let t=i[e];for(;t.indexOf(`(`)>-1&&!t.includes(`)`)&&e+1<i.length;)t=`${t}${this.formatSeparator}${i[++e]}`;a.push(t)}return a.reduce((e,t)=>{let{formatName:i,formatOptions:a}=pe(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},_e=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},ve=class extends M{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=j.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{y(n.loaded,[i],a),_e(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();u(e)&&(e=this.languageUtils.toResolveHierarchy(e)),u(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},I=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),u(e[1])&&(t.defaultValue=e[1]),u(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),L=e=>(u(e.ns)&&(e.ns=[e.ns]),u(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),u(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),R=()=>{},ye=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},z=class e extends M{constructor(e={},t){if(super(),this.options=L(e),this.services={},this.logger=j,this.modules={external:[]},ye(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(u(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=I();this.options={...n,...this.options,...L(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?j.init(r(this.modules.logger),this.options):j.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:ge;let t=new oe(this.options);this.store=new N(this.options.resources,this.options);let n=this.services;n.logger=j,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new le(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new fe(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new ve(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new ae(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=R,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=d(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=R){let n=t,r=u(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=d();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=R,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&ne.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=d();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=u(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(u(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n,r){let i=r?.scopeNs,a=(e,t,...r)=>{let o;o=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(r)),o.lng=o.lng||a.lng,o.lngs=o.lngs||a.lngs;let s=o.ns!==void 0&&o.ns!==null;o.ns=o.ns||a.ns,o.keyPrefix!==``&&(o.keyPrefix=o.keyPrefix||n||a.keyPrefix);let c={...this.options,...o};Array.isArray(i)&&!s&&(c.ns=i),typeof o.keyPrefix==`function`&&(o.keyPrefix=P(o.keyPrefix,c));let l=this.options.keySeparator||`.`,u;return o.keyPrefix&&Array.isArray(e)?u=e.map(e=>(typeof e==`function`&&(e=P(e,c)),`${o.keyPrefix}${l}${e}`)):(typeof e==`function`&&(e=P(e,c)),u=o.keyPrefix?`${o.keyPrefix}${l}${e}`:e),this.t(u,o)};return u(e)?a.lng=e:a.lngs=e,a.ns=t,a.keyPrefix=n,a}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=d();return this.options.ns?(u(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=d();u(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new oe(I());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=R){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new N(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...I().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new fe(n)}return a.translator=new ae(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();z.createInstance,z.dir,z.init,z.loadResources,z.reloadResources,z.use,z.changeLanguage,z.getFixedT,z.t,z.exists,z.setDefaultNamespace,z.hasLoadedNamespace,z.loadNamespaces,z.loadLanguages;var be=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);H(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},xe={},B=(e,t,n,r)=>{H(n)&&xe[n]||(H(n)&&(xe[n]=new Date),be(e,t,n,r))},Se=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},V=(e,t,n)=>{e.loadNamespaces(t,Se(e,n))},Ce=(e,t,n,r)=>{if(H(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return V(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,Se(e,r))},we=(e,t,n={})=>!t.languages||!t.languages.length?(B(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),H=e=>typeof e==`string`,Te=e=>typeof e==`object`&&!!e,Ee=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,De={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},Oe=e=>De[e],ke=e=>e.replace(Ee,Oe),U={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:ke,transDefaultProps:void 0},Ae=(e={})=>{U={...U,...e}},je=()=>U,Me,Ne=e=>{Me=e},Pe=()=>Me,Fe={type:`3rdParty`,init(e){Ae(e.options.react),Ne(e)}},Ie=(0,c.createContext)(),Le=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},Re={t:(e,t)=>{if(H(t))return t;if(Te(t)&&H(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},ze=()=>()=>{},Be=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,c.useContext)(Ie)||{},a=n||r||Pe();a&&!a.reportNamespaces&&(a.reportNamespaces=new Le),a||B(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.`);let o=(0,c.useMemo)(()=>({...je(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:u}=o,d=e||i||a?.options?.defaultNS,f=H(d)?[d]:d||[`translation`],p=(0,c.useMemo)(()=>f,f);a?.reportNamespaces?.addUsedNamespaces?.(p);let m=(0,c.useRef)(0),h=(0,c.useCallback)(e=>{if(!a)return ze;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{m.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),g=(0,c.useRef)(),_=(0,c.useCallback)(()=>{if(!a)return Re;let e=!!(a.isInitialized||a.initializedStoreOnce)&&p.every(e=>we(e,a,o)),n=t.lng||a.language,r=m.current,i=g.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===u&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?p:p[0],u,{scopeNs:p}),ready:e,lng:n,keyPrefix:u,revision:r};return g.current=s,s},[a,p,u,o,t.lng]),[v,y]=(0,c.useState)(0),{t:b,ready:x}=(0,l.useSyncExternalStore)(h,_,_);(0,c.useEffect)(()=>{if(a&&!x&&!s){let e=()=>y(e=>e+1);t.lng?Ce(a,t.lng,p,e):V(a,p,e)}},[a,t.lng,p,x,s,v]);let S=a||{},C=(0,c.useRef)(null),w=(0,c.useRef)(),T=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,"__original",{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},E=(0,c.useMemo)(()=>{let e=S,t=e?.language,n=e;e&&(C.current&&C.current.__original===e&&w.current===t?n=C.current:(n=T(e),C.current=n,w.current=t));let r=!x&&!s?(...e)=>(B(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),b(...e)):b,i=[r,n,x];return i.t=r,i.i18n=n,i.ready=x,i},[b,S,x,S.resolvedLanguage,S.language,S.languages]);if(a&&s&&!x){let e=!1;try{e=!1}catch{}throw e&&B(a,`SUSPENDED_WHILE_LOADING`,`useTranslation: suspended while translations are loading (useSuspense is true by default). Add a <Suspense> boundary above this component, or set react.useSuspense: false in the i18next init options. https://react.i18next.com/latest/usetranslation-hook`),new Promise(e=>{let n=()=>e();t.lng?Ce(a,t.lng,p,n):V(a,p,n)})}return E},Ve=`codexly.language-preference`,He=1,Ue=`zh-CN`;function We(e){return e===`zh-CN`||e===`en`}function Ge(e){for(let t of e){let e=t.toLowerCase();if(e===`en`||e.startsWith(`en-`))return`en`;if(e===`zh`||e.startsWith(`zh-`))return`zh-CN`}return Ue}function Ke(e){try{let t=JSON.parse(e.getItem(Ve)??`null`);if(typeof t==`object`&&t&&`version`in t&&t.version===He&&`language`in t&&We(t.language))return t.language}catch{}return null}function qe(e,t){try{t.setItem(Ve,JSON.stringify({language:e,version:He}))}catch{}}function Je(e,t){t.lang=e}function Ye(e,t){return(e===null?null:Ke(e))??Ge(t)}var Xe={access:{checking:`Checking access`,codeLabel:`Access password`,loadError:`Unable to check access`,pair:`Pair`,pairing:`Pairing`,pairingDescription:`Enter the access password configured or shown when Codexly started.`,pairingError:`Unable to pair. Check the access password and try again`,pairingTitle:`Connect to a trusted LAN session`},actions:{backToWorkbench:`Back to workbench`,retry:`Retry`},app:{actionFailed:`Action failed`,actionSucceeded:`Action completed`,loadingProjects:`Loading projects`,noProjects:`No projects added`,notificationRegion:`Notifications`},errors:{notFoundDescription:`This address does not match a registered application route.`,notFoundTitle:`Page not found`,routeErrorLabel:`Route error`,routeErrorTitle:`Failed to load page`,runtimeUnavailableDescription:`First run <command>codex login</command> in the official Codex CLI, then retry after signing in.`,runtimeUnavailableTitle:`Codex Runtime unavailable`},language:{english:`English`,simplifiedChinese:`Simplified Chinese`}},Ze={agentComponents:{addFile:`Add file`,addImage:`Add image`,addImageOrFile:`Add image or file`,approval:`Approval`,approvalAccepted:`Request allowed`,approvalRejected:`Request denied`,approvalRequest:`{{title}} request`,codeComments:`{{count}} code comments`,contextPercent:`{{percentage}}% of context used`,contextSummary:`{{percentage}}% of context used`,contextUnknown:`Context usage unavailable`,contextWaiting:`Waiting for context usage from the model`,copied:`Copied`,copyCode:`Copy code`,copyOutput:`Copy command output`,copiedCode:`Code copied`,copiedOutput:`Command output copied`,fileTooLarge:`{{name}} exceeds the size limit`,folderCollapse:`Collapse folder {{name}}`,folderExpand:`Expand folder {{name}}`,invalidFileType:`{{name}} has an unsupported file type`,nextBranch:`Next response branch`,previousBranch:`Previous response branch`,removeAttachment:`Remove {{name}}`,scrollToBottom:`Scroll to bottom`,status:{completed:`Completed`,error:`Failed`,inProgress:`In progress`,pending:`Pending`,denied:`Denied`,responded:`Responded`,running:`Running`,waitingApproval:`Awaiting approval`},streamingOutput:`Receiving command output`,tooManyImages:`You can add up to {{count}} images`,totalAttachmentSizeExceeded:`Attachments exceed the total size limit`,totalImageSizeExceeded:`Images exceed the total size limit`,toolError:`Error`,toolInput:`Parameters`,toolResult:`Result`},errors:{addProject:`Failed to add project`,deleteProject:`Failed to delete project`,renameProject:`Failed to rename project`,reorderProject:`Failed to save project order`,reorderProjectChanged:`The project list changed. Try reordering again.`,stopTerminal:`Failed to stop terminal`},inspector:{attachmentDetail:`Attachment`,changeIndicator:`{{path}}, {{additions}} additions, {{removals}} deletions`,changeStats:`Change statistics`,changes:`Changes`,closeFile:`Close file`,commit:`Commit`,context:`Context`,contextSources:`Context sources`,emptyFolder:`Empty folder`,fileTree:`Project files`,file:`File`,gitChanges:`Uncommitted changes`,gitChangesCount:`{{count}} changes`,gitChangesRetrying:`Git change refresh failed. Retrying automatically`,gitLoading:`Loading Git changes...`,goal:`Goal`,goalClear:`Clear goal`,goalDuration:`{{minutes}}m {{seconds}}s`,goalMutationFailed:`Unable to update the goal. Try again.`,goalPause:`Pause goal`,goalResume:`Resume goal`,goalSeconds:`{{count}}s`,goalStatus:{active:`Active`,blocked:`Blocked`,budget_limited:`Budget exhausted`,complete:`Complete`,paused:`Paused`,usage_limited:`Usage limited`},goalTokenBudget:`{{used}} / {{budget}} tokens`,goalTokens:`{{used}} tokens used`,history:`History`,loading:`Loading...`,mcpEmpty:`No MCP servers are readable by this task`,mcpEnabled:`MCP servers readable by this task`,mcpError:`Failed to load MCP servers`,mcpErrorLog:`View error log`,mcpFailureReason:{reauthenticationRequired:`Reauthentication required`},mcpLoading:`Loading MCP servers...`,mcpReload:`Reload MCP servers`,mcpReloading:`Reloading MCP servers`,mcpRetryError:`Failed to reload MCP servers`,mcpStatus:{cancelled:`Cancelled`,failed:`Startup failed`,ready:`Ready`,starting:`Starting`},project:`Project`,mcpAuth:{bearerToken:`Bearer Token`,notLoggedIn:`Not signed in`,oAuth:`OAuth`,unknown:`Authentication status unknown`,unsupported:`Authentication unsupported`},mcpToolCount:`{{count}} tools`,mcpVersion:`Version {{version}}`,openFailed:`The selected application could not open the target`,plan:`Plan`,planStatus:{completed:`Completed`,in_progress:`In progress`,pending:`Pending`},projectDirectory:`Project directory`,projectFilesEmpty:`This project has no files to display`,projectFilesError:`Failed to load project files`,projectFilesLoading:`Loading project files...`,readFolder:`Loading folder {{name}}`,readFolderError:`Failed to load folder {{name}}`,reading:`Loading`,refreshFolder:`Reload folder {{name}}`,refreshGit:`Refresh Git changes`,refreshProject:`Refresh project {{name}}`,refreshProjectFiles:`Reload project files`,commitChanges:`Commit {{count}} uncommitted changes`,source:`Sources`,sourceRole:{admin:`Admin`,repo:`Project`,system:`System`,user:`User`},subagents:`Subagents`,subagentCount:`{{count}} subagents`,subagentOutput:`View output from subagent {{nickname}}`,terminalError:`Failed to load running terminals`,terminalLoading:`Loading terminals...`,terminalRunning:`Terminal running`,terminalStop:`Stop terminal {{command}}`,terminalStopping:`Stopping {{command}}`,terminalStopRetry:`Failed to stop terminal. Try again.`,terminals:`Running terminals`,title:`Runtime environment`},gitHistory:{branch:`Current branch: {{branch}}`,branchLoading:`Current branch: Loading...`,commits:`Commit history`,empty:`This repository has no commits`,diffLoadError:`Failed to load this file's commit Diff`,diffLoading:`Loading file Diff...`,diffTruncated:`This Diff is too long; showing the first 512 KiB`,filesEmpty:`This commit has no files to review`,filesLoadError:`Failed to load commit files`,filesLoading:`Loading commit files...`,end:`All commits loaded`,loadError:`Failed to load Git history`,loadMore:`Load more`,loadMoreFiles:`Load more files`,loading:`Loading Git history...`,loadingMore:`Loading...`,loadingMoreFiles:`Loading files...`,repositories:`Repositories`,retry:`Retry`},notification:{completed:`Task completed`,failed:`Task failed`,failedWithMessage:`Task failed: {{message}}`,interrupted:`Task was interrupted and cannot continue`,waitingApproval:`Task is waiting for approval`,waitingInput:`Task is waiting for input`},taskTitle:{replying:`Replying`},reorder:{cancelled:`Project reordering cancelled`,moved:`{{name}} moved to position {{position}}`,projectFallback:`Project`,started:`Project reordering started. Drag and release to save the position.`,title:`Drag to reorder, or press Alt + Arrow Up/Down`},subagent:{count:`{{count}} subagents`,defaultName:`Subagent {{index}}`,operationCompleted:`Subagent operation completed`,operationFailed:`{{count}} subagents failed`,operationRunning:`{{count}} subagents running`,operationSucceeded:`{{count}} subagents completed`,operationTitles:{close:`Close subagent`,resume:`Resume subagent`,sendInput:`Send message to subagent`,spawn:`Start subagent`,wait:`Wait for subagent`},orchestrating:`Coordinating subagents`},timeline:{approvalReview:{action:{command:`Command`,file_change:`File change`,mcp_tool_call:`MCP tool`,network_access:`Network access`,permissions:`Permission request`},actionDetail:`{{action}}: {{detail}}`,authorization:`User authorization: {{level}}`,authorizationLevel:{high:`High`,low:`Low`,medium:`Medium`,unknown:`Unknown`},rationale:`Review rationale: {{rationale}}`,reviewing:`Running automatic approval review`,risk:`Risk: {{level}}`,riskLevel:{critical:`Critical`,high:`High`,low:`Low`,medium:`Medium`},status:{aborted:`Aborted`,approved:`Approved`,denied:`Denied`,in_progress:`Reviewing`,timed_out:`Timed out`},title:`Automatic approval: {{status}}`},aiRunning:`AI response is running`,aiRunningOperation:`AI response is running: {{operation}}`,attachments:`Message attachments`,changedFiles:`This response changed {{count}} files`,collapseFiles:`Collapse file list`,collapseProcess:`Collapse process`,closeImagePreview:`Close image preview`,commandPending:`Running command`,conversation:`Conversation`,copied:`Copied`,copyMessage:`Copy message`,downloadAttachment:`Download attachment {{name}}`,openAttachment:`Open attachment {{name}}`,emptyAfter:`?`,emptyBefore:`What should we do in`,expandProcess:`Expand process`,fileChange:`{{operation}} {{name}}, {{additions}} additions, {{removals}} deletions, open Diff`,fileOperation:{create:`Created`,delete:`Deleted`,update:`Edited`},fork:`Fork task`,forkFailed:`Failed to fork task. Try again.`,forking:`Forking task`,loading:`Loading task history`,loadError:`Failed to load task history`,loadingOlder:`Loading earlier messages...`,loadOlder:`Load earlier messages`,loadOlderError:`Could not load earlier messages. Try again.`,jumpToMessage:`Jump to user message {{index}}`,moreFiles:`Show {{count}} more files`,noHistory:`This task has no history`,output:`Output`,outputOmitted:`Command output omitted {{bytes}} UTF-8 bytes and {{lines}} lines. Showing the beginning and end.`,outputRetained:`Older command output was removed to stay within the memory budget`,operationGroup:{collapse:`Collapse operation details: {{summary}}`,commandsOnly:`Commands complete: {{count}}`,expand:`Expand operation details: {{summary}}`,failed:`; {{count}} failed`,summary:`Operations complete: {{toolCount}} tool calls, {{commandCount}} commands`,toolsOnly:`Tool calls complete: {{count}}`},buildPlan:`Build`,plan:`Plan`,planGenerating:`Generating plan`,planReady:`Plan ready to build`,processing:`Processed`,quickNavigation:`User message quick navigation`,reconnecting:`Restoring live connection`,review:`Review`,reviewMode:`Review mode`,reviewPrompt:{baseBranch:`Review my changes against {{branch}}`,commit:`Review commit {{sha}}`,commitWithTitle:`Review commit {{sha}}: {{title}}`,custom:`Review the code using these instructions: {{instructions}}`,uncommitted:`Review my uncommitted changes`},running:`Running`,runningOperation:`Running {{operation}}`,selectProject:`Select a project for the new chat`,showImage:`View image {{name}}`,skillsUsed:`Skills used`,editedFiles:`Edited {{count}} files`,editingFiles:`Editing {{count}} files`,liveDiff:`Live file changes`,liveFileChange:`Editing {{name}}, {{additions}} additions, {{removals}} deletions`,notice:{guardian_warning:`Safety warning`,hook_status:`Hook status`,model_verification:`Model verification`,modelVerification:`Verifying model availability`,runtime_warning:`Runtime warning`,strict_review_required:`Strict review required`,strictReviewRequired:`Safety review was escalated; this action will continue after review`},reasoning:`Reasoning summary`,reasoningStreaming:`Reasoning`,runtimeStatus:{duration:`Completed in {{duration}} ms`,fasterModel:`A faster model is available: {{model}}`,hook:`Running hook {{eventName}}`,modelRerouted:`Rerouted from {{fromModel}} to {{toModel}}`,safetyBuffering:`Using safety buffering model {{model}}`}}},Qe={about:{available:`Version {{version}} is available`,check:`Check for updates`,checking:`Checking`,codexlyVersion:`Codexly version`,codexVersion:`Codex version`,current:`Codexly is up to date`,github:`Project GitHub`,loading:`Checking for updates`,restartRequired:`Update installed. Restart Codexly to apply it.`,retry:`Check again`,releaseNotes:`Release notes`,releaseNotesTitle:`{{version}} release notes`,releaseNotesUnavailable:`Release notes for this version are temporarily unavailable.`,update:`Software update`,updateTo:`Update to {{version}}`,updating:`Updating`},access:{currentSession:`Current browser`,loggingOut:`Logging out`,logout:`Log out of LAN access`,sessionDescription:`This browser is paired with the current Codexly LAN session.`},actions:{cancel:`Cancel`,close:`Close`,closeDialog:`Close global settings`,closeReleaseNotes:`Close release notes`,save:`Save global defaults`,saving:`Saving`},appearance:{automatic:`Automatic`,automaticMode:`Automatic mode`,colorMode:`Color mode`,dark:`Dark`,darkMode:`Dark mode`,language:`Language`,light:`Light`,lightMode:`Light mode`,notifications:`Notifications`},approval:{autoReview:`Automatic review`,never:`Never ask`,onRequest:`On request`},background:{bing:`Bing wallpaper`,bingAria:`Bing daily wallpaper`,custom:`Custom`,customAria:`Custom workbench background`,invalidImage:`Choose a PNG, JPEG, WebP, or GIF image up to 20 MiB.`,label:`Workbench background`,none:`None`,noneAria:`No workbench background`,overlayOpacity:`Wallpaper overlay opacity`,previewAlt:`Custom workbench background preview`,upload:`Upload image`,uploadInput:`Upload custom background image`,uploadRequired:`Image required`},effort:{high:`High`,low:`Low`,medium:`Medium`,minimal:`Minimal`,xhigh:`Extra high`},errors:{appInfo:`Unable to load version information`,load:`Unable to load global settings`,logout:`Unable to log out of LAN access`,save:`Unable to save global settings`,update:`Update failed. Try again.`,updateCheck:`Unable to check for updates`},fields:{approvalPolicy:`Approval policy`,commitMessagePrompt:`Commit message prompt`,commitModel:`Commit model`,defaultOpenWith:`Default open with`,fastMode:`Fast mode`,followUpMessages:`Follow-up messages`,model:`Model`,prompt:`Prompt`,reasoningEffort:`Reasoning effort`,sandbox:`Sandbox`},followUp:{queue:`Queue`,steer:`Steer`},integration:{automatic:`Select automatically`},languages:{en:`English`,zhCN:`简体中文`},loading:`Loading global settings`,navigationLabel:`Settings categories`,notifications:{disabled:`Off`,enabled:`On`},provider:{apiKey:`API key (optional)`,baseUrl:`API base URL`,cancelLogin:`Cancel login`,connect:`Connect`,connected:`Connected`,custom:`Custom API`,disconnected:`Not connected`,errors:{connect:`Unable to connect to the custom API`,load:`Unable to read model service status`,login:`Unable to start official login`},loading:`Reading model service status`,login:`Sign in with ChatGPT`,logout:`Log out`,addModel:`Add model`,modelId:`Model ID`,modelName:`Model name`,mode:`Model service mode`,models:`Custom models (optional)`,official:`Official login`,reconnect:`Reconnect`,removeModel:`Remove model`,retry:`Retry`,title:`Connect a Codex model service`,waiting:`Waiting for browser login`},sandbox:{dangerFullAccess:`Full access`,readOnly:`Read only`,workspaceWrite:`Workspace write`},sections:{about:`About`,access:`LAN access`,agent:`Agent defaults`,appearance:`General`,commit:`Commit messages`,integration:`App integrations`,provider:`Model service`},title:`Global settings`},$e={actions:{cancel:`Cancel`,close:`Close`,retry:`Retry`,save:`Save`},commit:{allFiles:`All files`,commit:`Commit`,commitActions:`Choose commit action`,commitAndPush:`Commit and push`,commitAndPushComplete:`Commit and push completed`,commitAndPushSucceeded:`Committed and pushed successfully`,commitComplete:`Commit completed`,commitCompletePushFailed:`Commit completed, but push failed`,commitCompleteUpstreamMissing:`Commit completed; the current branch has no upstream`,commitMessage:`Commit message`,commitSucceeded:`Committed successfully`,changes:`Changes`,generateMessage:`Generate message content`,messagePlaceholder:`Enter a commit message`,repository:`Git project`,repositoryLoading:`Loading Git project`,repositoryUnavailable:`No committable Git project was found`,selectAllFiles:`Select all files`,selectFiles:`Select files`,selectRepository:`Select Git project`,selectionLabel:`Select files, {{selected}} of {{total}} selected`,staged:`Staged`,totalFiles_one:`{{count}} total`,totalFiles_other:`{{count}} total`,unstaged:`Unstaged`},diff:{changedFiles:`Changed files`,changedFilesNavigation:`Changed files navigation`,close:`Close file Diff`,closeReview:`Close file review`,collapseChangedFilesNavigation:`Collapse changed files navigation`,expandChangedFilesNavigation:`Expand changed files navigation`,fileStats:`{{path}}, {{additions}} lines added, {{removals}} lines removed`,loading:`Loading Diff`,nextFile:`Review next file`,previousFile:`Review previous file`,reviewContent:`File review content`},composer:{addedAttachments:`Added attachments`,approvalMode:`Approval policy`,attachmentCount_one:`{{count}} attachment`,attachmentCount_other:`{{count}} attachments`,attachmentReadFailed:`Unable to read attachment`,attachmentUploadFailed:`Unable to upload attachment`,baseBranchReview:`Review against a base branch`,buildPlanPrompt:`Start implementing the plan above.`,cancelGoalMode:`Cancel Goal mode`,cancelPlanMode:`Cancel plan mode`,cancelQueued:`Cancel queued message: {{summary}}`,cancelQueuedTooltip:`Cancel queued message`,editQueued:`Edit queued message: {{summary}}`,editQueuedTooltip:`Edit queued message`,disableFastMode:`Disable fast mode`,enableFastMode:`Enable fast mode`,commandGroup:`Commands`,commandInput:`Command input`,commandNoMatch:`No matching Skill or command`,fileSearch:`Search project files`,fileSearchEmpty:`No matching project files`,fileSearchFailed:`Project file search failed`,fileSearchGroup:`Project files`,fileSearchLoading:`Searching project files`,compacting:`Compacting context`,gitBranchMissing:`No branch checked out`,branchSwitcherLabel:`Switch branch, current branch {{branch}}`,branchSwitcherMenu:`Switch branch`,detachedHead:`detached HEAD`,branchSwitchFailed:`Unable to create or switch branches. Try again.`,branchName:`Branch name`,createBranch:`New branch`,createBranchDescription:`Create from the current branch and switch immediately`,createAndSwitchBranch:`Create and switch`,createAndSwitchWorktree:`Create and switch`,createWorktree:`New worktree`,createWorktreeDescription:`Create a sibling worktree and switch to it`,worktreeListEmpty:`No other worktrees`,worktreeListFailed:`Unable to load worktrees`,worktreeListLoading:`Loading worktrees`,worktreeSwitcherMenu:`Switch worktree`,goalMode:`Goal`,goalStatus:{active:`Goal active`,blocked:`Goal blocked`,budget_limited:`Goal budget exhausted`,complete:`Goal complete`,paused:`Goal paused`,usage_limited:`Goal usage limited`},goalStatusLabel:`{{status}}: {{objective}}`,goalObjectiveRequired:`Goal mode requires an objective`,goalObjectiveTooLong:`The goal objective cannot exceed 4,000 characters`,goalStructuredInputUnsupported:`Goal mode does not support attachments or Skills; use text and @file paths instead`,initializingAgentsPrompt:`Inspect the current project and create or improve AGENTS.md in the project root with Codex project guidance, common commands, and verification requirements.`,landmark:`Message composer`,modelListFailed:`Failed to load model list`,modelLoading:`Loading models`,model:`Model`,modelAndReasoningMenu:`Model and reasoning`,modelAndReasoningSelect:`Model and reasoning: {{model}}, {{effort}}`,modelSelect:`Select model`,moveQueuedDown:`Move queued message down: {{summary}}`,moveQueuedDownTooltip:`Move down`,moveQueuedUp:`Move queued message up: {{summary}}`,moveQueuedUpTooltip:`Move up`,noBaseBranch:`No base branch available`,noModels:`No models available`,openProjectFolder:`Open in system file manager`,operationFailed:`Operation failed. Please retry.`,placeholder:`Tell Codexly what you want to accomplish`,planMode:`Plan`,projectPath:`Project path`,queueMessage:`Queue message`,queuedMessages:`Queued messages`,reasonEffortSelect:`Select reasoning effort`,reasoningEffort:`Reasoning effort`,reviewBaseBranchGroup:`Select base branch`,reviewScopeGroup:`Select review scope`,reviewStarted:`Code review started`,reviewUncommitted:`Review uncommitted changes`,sandboxMode:`Sandbox mode`,sendSteer:`Send steer`,steerNow:`Steer now: {{summary}}`,steerNowTooltip:`Send as a steer now`,stop:`Stop`,submit:`Submit`,taskInput:`Task input`,taskRunning:`Task is running`,uncommittedChangesMissing:`No uncommitted changes available`,waitingToSend:`Waiting to send`,followUpPlaceholder:`Enter follow-up instructions`},openMenu:{choose:`Choose how to open`,copyAbsolutePath:`Copy absolute path`,copyName:`Copy name`,copyRelativePath:`Copy relative path`,detect:`Detecting available apps`,moreActions:`More actions`,none:`No apps available`,open:`Open`,openIn:`Open in {{app}}`,reference:`Reference`,systemDefault:`System default app`,targetLabel:`Actions for {{path}}`},promptCommand:{availability:{noTask:`Open a task first`,notReady:`Runtime capabilities are not ready`,unsupported:`The current Runtime does not support this command`},compact:{description:`Compact the context for this task`,label:`Compact`},fork:{description:`Copy the current task and its conversation history`,label:`Fork`},goal:{description:`Set a persistent goal and keep working until it is complete`,label:`Goal`},initialize:{description:`Create an AGENTS.md file with Codex guidance`,label:`Initialize`},plan:{description:`Analyze the task and propose an implementation plan first`,label:`Plan`},review:{description:`Review uncommitted changes or compare against a branch`,label:`Code review`}},pending:{allow:`Allow`,allowTurn:`Allow for this turn`,additionalPermissions:`Additional permissions`,allowSession:`Allow for this session`,answerFailed:`Unable to submit the answer. Please retry.`,commandApproval:`Command approval`,cancel:`Cancel`,deny:`Deny`,expired:`Request expired`,fileChangeApproval:`File change approval`,fileChangeFallback:`File change awaiting confirmation`,inputRequired:`Your input is required`,mcpForm:`{{server}} input request`,mcpRequest:`{{server}} confirmation`,networkApproval:`Network access approval`,networkPermission:`Network access`,other:`Other`,otherAnswer:`{{header}} other answer`,openUrl:`Open link`,previousPending:`Waiting for the previous item`,processed:`Request processed`,permissionAccess:{deny:`Deny`,read:`Read`,write:`Write`},permissionApproval:`Permission approval`,permissionGlobDepth:`Glob scan depth: {{depth}}`,permissionMinimal:`Minimal filesystem`,permissionProjectRoots:`Project roots`,permissionRoot:`Filesystem root`,permissionTmpdir:`System temporary directory`,permissionUnknownPath:`Unknown path`,fileSystemPermission:`Filesystem`,requestFailed:`Unable to process the request. Please retry.`,submitAnswers:`Submit answers`,unsupportedForm:`This form cannot be displayed safely. Decline or cancel the request.`},projectDialog:{closeImagePreview:`Close image preview`,closeSource:`Close source file`,delete:`Remove`,loadImageError:`Unable to load image`,loadMoreSourceError:`Unable to load more content`,loadSourceError:`Unable to load source file`,loadingMoreSource:`Loading more content`,loadingSource:`Loading source file`,name:`Project name`,previewMarkdown:`Preview Markdown`,remove:`Remove project`,removeDescription:`Remove {{name}} from Codexly? Files on disk will not be deleted.`,rename:`Rename project`,renameDescription:`This changes only the sidebar display name, not the folder name on disk.`,showRawContent:`Show raw content`,sourcePartial:`Partial content`},projectPicker:{primaryRoot:`Primary`,primaryRootHint:`The first selected folder becomes the primary folder`,primaryRootSummary:`{{path}} (Primary)`,rootSeparator:`, `,selectedRoots:`{{count}} project folders selected`,selectRoot:`Select {{name}}`,add:`Add this folder`,addError:`Unable to add the selected folder`,adding:`Adding`,description:`Browse folders on the device running Codexly`,directPathReady:`Directory verified and ready to add`,empty:`This folder has no subfolders`,filesystemRoot:`Select drive`,goToPath:`Go to path`,hideHidden:`Hide hidden folders`,loadBranchError:`Unable to read this folder`,loadError:`Unable to read folders`,loading:`Reading folders`,loadingBranch:`Reading`,noSelection:`No folder selected`,parent:`Go to parent folder`,pathLabel:`Absolute directory path`,pathPlaceholder:`Enter an absolute directory path`,resolvingPath:`Locating home directory`,title:`Select project folder`,showHidden:`Show hidden folders`,treeLabel:`Project folder tree`},hostAttachmentPicker:{add:`Add selected file`,description:`Browse files on the device running Codexly`,empty:`This folder has no supported files`,filesystemRoot:`Select drive`,fileTitle:`Select local file`,goToPath:`Go to path`,hideHidden:`Hide hidden files`,imageTitle:`Select local image`,importError:`Unable to add the selected file`,importing:`Adding`,loadBranchError:`Unable to read this folder`,loadError:`Unable to read files`,loading:`Reading files`,loadingBranch:`Reading`,noSelection:`No file selected`,parent:`Go to parent folder`,pathLabel:`Absolute directory path`,pathPlaceholder:`Enter an absolute directory path`,resolvingPath:`Locating home directory`,showHidden:`Show hidden files`,treeLabel:`Local file tree`},subagentOutput:{close:`Close subagent output`,error:`Unable to load subagent output`,loading:`Loading subagent output`,reconnecting:`Restoring the live subagent connection`,task:`Subagent {{taskId}}`,title:`Subagent output`},shell:{selectProjectRoot:`Select project folder`,closeInspector:`Close context panel`,closeSidebar:`Close project sidebar`,collapseInspector:`Collapse context panel`,collapseSidebar:`Collapse project sidebar`,expandInspector:`Expand context panel`,expandSidebar:`Expand project sidebar`,newChat:`New chat`,renameTask:`Rename task {{title}}`,resizeInspector:`Resize context panel`,resizeSidebar:`Resize project sidebar`,timeline:`Task timeline`,temporaryTask:`Temporary task`},skillEditor:{tokenLabel:`Skill {{name}}, serialized text {{text}}`},archivedTasks:{confirmDelete:`Delete permanently`,confirmDeleteAll:`Delete all permanently`,delete:`Delete permanently`,deleteAll:`Delete all`,deleteAllDescription:`All archived tasks in "{{project}}" and their associated history will be permanently deleted. This cannot be undone.`,deleteAllTitle:`Permanently delete all archived tasks`,deleteDescription:`"{{task}}" and its associated history will be permanently deleted. This cannot be undone.`,deleteTask:`Permanently delete task {{task}}`,deleteTitle:`Permanently delete task`,empty:`No archived tasks`,loadError:`Unable to load archived tasks`,loading:`Loading archived tasks`,next:`Next page`,page:`Page {{page}}`,previous:`Previous page`,restore:`Restore`,restoreTask:`Restore task {{task}}`,search:`Search archived tasks`,title:`Archived tasks for {{project}}`,updatedAt:`Updated {{date}}`},sidebar:{addProject:`Add project`,agentNavigation:`Agent navigation`,archive:`Archive`,archived:`Archived`,close:`Close project sidebar`,collapse:`Show less`,connection:{connecting:`Connecting`,offline:`Offline`,online:`Online`,reconnecting:`Reconnecting`},aboutStatus:`About, Codexly {{version}}{{update}}, terminal connection status: {{status}}`,createInProject:`Create a task in {{project}}`,deletePermanently:`Delete permanently`,deleteTaskDescription:`"{{task}}" and its associated history will be permanently deleted. This cannot be undone.`,deleteTaskTitle:`Permanently delete task`,errorAddProject:`Unable to add project`,errorArchiveTask:`Unable to archive task`,errorLoadTasks:`Unable to load tasks`,errorPinTask:`Unable to update pin status`,errorProjectOrder:`Unable to save project order`,errorRenameTask:`Unable to rename task`,errorSearchTasks:`Unable to search tasks`,expand:`Show more`,expandLoading:`Loading more`,expandRetry:`Retry loading more`,newTask:`New task`,landmark:`Project sidebar`,noMatchingTasks:`No matching tasks`,noTasks:`No tasks yet`,noTemporaryTasks:`No temporary tasks yet`,openProjectActions:`Open actions for {{project}}`,openTaskActions:`Open actions for {{task}}`,pin:`Pin`,pinned:`Pinned`,projects:`Projects`,projectActions:`Actions for {{project}}`,remove:`Remove`,rename:`Rename`,search:`Search tasks`,searchAll:`Searching all tasks`,settings:`Settings`,updateAvailableLabel:`, update available`,taskActions:`Actions for {{task}}`,taskApproval:`Task awaiting approval`,taskComplete:`AI response completed`,taskIncomplete:`AI response incomplete`,taskLoading:`Loading tasks`,taskRunning:`Task running`,temporaryTasks:`Temporary tasks`,toggleProject:`Toggle project {{project}}`,unpin:`Unpin`},taskDialog:{name:`Task name`,rename:`Rename task`}},et={access:{checking:`正在验证访问权限`,codeLabel:`访问密码`,loadError:`无法验证访问权限`,pair:`配对`,pairing:`正在配对`,pairingDescription:`输入 Codexly 启动时设置或显示的访问密码。`,pairingError:`无法完成配对,请检查访问密码后重试`,pairingTitle:`连接可信局域网会话`},actions:{backToWorkbench:`返回工作台`,retry:`重试`},app:{actionFailed:`操作失败`,actionSucceeded:`操作成功`,loadingProjects:`正在加载项目`,noProjects:`尚未添加项目`,notificationRegion:`通知`},errors:{notFoundDescription:`当前地址不属于已注册的应用路由。`,notFoundTitle:`页面不存在`,routeErrorLabel:`路由错误`,routeErrorTitle:`页面加载失败`,runtimeUnavailableDescription:`请先在官方 Codex CLI 中运行 <command>codex login</command>,完成登录后重试。`,runtimeUnavailableTitle:`Codex Runtime 不可用`},language:{english:`English`,simplifiedChinese:`简体中文`}},tt={agentComponents:{addFile:`添加文件`,addImage:`添加图片`,addImageOrFile:`添加图片或文件`,approval:`审批`,approvalAccepted:`请求已允许`,approvalRejected:`请求已拒绝`,approvalRequest:`{{title}}请求`,codeComments:`{{count}} 个代码评论`,contextPercent:`上下文已使用 {{percentage}}%`,contextSummary:`{{percentage}}% 上下文已使用`,contextUnknown:`上下文用量未知`,contextWaiting:`等待模型返回上下文用量`,copied:`已复制`,copyCode:`复制代码`,copyOutput:`复制命令输出`,copiedCode:`代码已复制`,copiedOutput:`命令输出已复制`,fileTooLarge:`{{name}} 超过大小限制`,folderCollapse:`收起文件夹 {{name}}`,folderExpand:`展开文件夹 {{name}}`,invalidFileType:`{{name}} 的文件类型不受支持`,nextBranch:`下一个回复分支`,previousBranch:`上一个回复分支`,removeAttachment:`移除 {{name}}`,scrollToBottom:`回到底部`,status:{completed:`已完成`,error:`失败`,inProgress:`进行中`,pending:`等待中`,denied:`已拒绝`,responded:`已响应`,running:`运行中`,waitingApproval:`等待批准`},streamingOutput:`正在接收命令输出`,tooManyImages:`最多添加 {{count}} 张图片`,totalAttachmentSizeExceeded:`附件总大小超过限制`,totalImageSizeExceeded:`图片总大小超过限制`,toolError:`错误`,toolInput:`参数`,toolResult:`结果`},errors:{addProject:`添加项目失败`,deleteProject:`无法删除项目`,renameProject:`无法重命名项目`,reorderProject:`保存项目排序失败`,reorderProjectChanged:`项目列表已变化,请重试排序`,stopTerminal:`停止终端失败`},inspector:{attachmentDetail:`附件`,changeIndicator:`{{path}},新增 {{additions}} 行,删除 {{removals}} 行`,changeStats:`变更统计`,changes:`变更`,closeFile:`关闭文件`,commit:`提交`,context:`上下文`,contextSources:`上下文来源`,emptyFolder:`空文件夹`,fileTree:`项目文件`,file:`文件`,gitChanges:`未提交变更`,gitChangesCount:`{{count}} 个变更`,gitChangesRetrying:`Git 变更刷新失败,正在自动重试`,gitLoading:`正在读取 Git 变更...`,goal:`目标`,goalClear:`清除目标`,goalDuration:`{{minutes}} 分 {{seconds}} 秒`,goalMutationFailed:`无法更新目标,请重试`,goalPause:`暂停目标`,goalResume:`恢复目标`,goalSeconds:`{{count}} 秒`,goalStatus:{active:`进行中`,blocked:`受阻`,budget_limited:`预算已用尽`,complete:`已完成`,paused:`已暂停`,usage_limited:`用量受限`},goalTokenBudget:`{{used}} / {{budget}} tokens`,goalTokens:`已使用 {{used}} tokens`,history:`历史`,loading:`正在读取...`,mcpEmpty:`当前任务没有可读取的 MCP`,mcpEnabled:`当前任务可读取的 MCP`,mcpError:`无法读取 MCP`,mcpErrorLog:`查看错误日志`,mcpFailureReason:{reauthenticationRequired:`需要重新认证`},mcpLoading:`正在读取 MCP...`,mcpReload:`重新加载 MCP`,mcpReloading:`正在重新加载 MCP`,mcpRetryError:`重新加载 MCP 失败`,mcpStatus:{cancelled:`已取消`,failed:`启动失败`,ready:`已就绪`,starting:`正在启动`},project:`项目`,mcpAuth:{bearerToken:`Bearer Token`,notLoggedIn:`未登录`,oAuth:`OAuth`,unknown:`认证状态未知`,unsupported:`不支持认证`},mcpToolCount:`{{count}} 个工具`,mcpVersion:`版本 {{version}}`,openFailed:`无法使用所选应用打开目标`,plan:`计划`,planStatus:{completed:`已完成`,in_progress:`进行中`,pending:`待处理`},projectDirectory:`项目目录`,projectFilesEmpty:`当前项目没有可显示的文件`,projectFilesError:`无法读取项目文件`,projectFilesLoading:`正在读取项目文件...`,readFolder:`正在读取文件夹 {{name}}`,readFolderError:`无法读取文件夹 {{name}}`,reading:`正在读取`,refreshFolder:`重新读取文件夹 {{name}}`,refreshGit:`手动刷新 Git 变更`,refreshProject:`刷新项目 {{name}}`,refreshProjectFiles:`重新读取项目文件`,commitChanges:`提交 {{count}} 个未提交变更`,source:`来源`,sourceRole:{admin:`管理员`,repo:`项目`,system:`系统`,user:`用户`},subagents:`子代理`,subagentCount:`{{count}} 个子代理`,subagentOutput:`查看子代理 {{nickname}} 的输出`,terminalError:`无法读取运行中的终端`,terminalLoading:`正在读取终端...`,terminalRunning:`终端运行中`,terminalStop:`停止终端 {{command}}`,terminalStopping:`正在停止 {{command}}`,terminalStopRetry:`停止终端失败,请重试`,terminals:`运行中的终端`,title:`运行环境`},gitHistory:{branch:`当前分支:{{branch}}`,branchLoading:`当前分支:读取中...`,commits:`提交记录`,empty:`当前仓库暂无提交记录`,diffLoadError:`无法读取此文件的提交 Diff`,diffLoading:`正在读取文件 Diff...`,diffTruncated:`Diff 过长,仅展示前 512 KiB`,filesEmpty:`此提交没有可审核的文件`,filesLoadError:`无法读取提交文件`,filesLoading:`正在读取提交文件...`,end:`已加载全部提交`,loadError:`无法读取 Git 历史`,loadMore:`加载更多`,loadMoreFiles:`加载更多文件`,loading:`正在读取 Git 历史...`,loadingMore:`正在加载...`,loadingMoreFiles:`正在加载文件...`,repositories:`子仓库`,retry:`重试`},notification:{completed:`Task 已完成`,failed:`Task 运行失败`,failedWithMessage:`Task 运行失败:{{message}}`,interrupted:`Task 已中断,无法继续`,waitingApproval:`Task 等待审批`,waitingInput:`Task 等待输入`},taskTitle:{replying:`正在回复`},reorder:{cancelled:`已取消项目排序`,moved:`{{name}} 已移动到第 {{position}} 位`,projectFallback:`项目`,started:`已进入项目排序,拖动后释放以保存位置`,title:`拖动排序;也可按 Alt + 上下方向键移动`},subagent:{count:`{{count}} 个子代理`,defaultName:`子代理 {{index}}`,operationCompleted:`子代理操作已完成`,operationFailed:`{{count}} 个子代理执行失败`,operationRunning:`{{count}} 个子代理正在执行`,operationSucceeded:`{{count}} 个子代理已完成`,operationTitles:{close:`关闭子代理`,resume:`恢复子代理`,sendInput:`向子代理发送消息`,spawn:`启动子代理`,wait:`等待子代理`},orchestrating:`正在协调子代理`},timeline:{approvalReview:{action:{command:`命令`,file_change:`文件变更`,mcp_tool_call:`MCP 工具`,network_access:`网络访问`,permissions:`权限请求`},actionDetail:`{{action}}:{{detail}}`,authorization:`用户授权:{{level}}`,authorizationLevel:{high:`高`,low:`低`,medium:`中`,unknown:`未知`},rationale:`审批理由:{{rationale}}`,reviewing:`正在自动审批`,risk:`风险:{{level}}`,riskLevel:{critical:`严重`,high:`高`,low:`低`,medium:`中`},status:{aborted:`已中止`,approved:`已批准`,denied:`已拒绝`,in_progress:`审批中`,timed_out:`已超时`},title:`自动审批:{{status}}`},aiRunning:`AI 回复正在运行`,aiRunningOperation:`AI 回复正在运行:{{operation}}`,attachments:`消息附件`,changedFiles:`本次修改了 {{count}} 个文件`,collapseFiles:`收起文件列表`,collapseProcess:`收起执行过程`,closeImagePreview:`关闭图片预览`,commandPending:`正在执行命令`,conversation:`会话内容`,copied:`已复制`,copyMessage:`复制消息`,downloadAttachment:`下载附件 {{name}}`,openAttachment:`打开附件 {{name}}`,emptyAfter:`中做些什么?`,emptyBefore:`我们应该在`,expandProcess:`展开执行过程`,fileChange:`{{operation}} {{name}},新增 {{additions}} 行,删除 {{removals}} 行,打开 Diff`,fileOperation:{create:`已创建`,delete:`已删除`,update:`已编辑`},fork:`复制任务`,forkFailed:`复制任务失败,请重试`,forking:`正在复制任务`,loading:`正在加载任务历史`,loadError:`无法加载任务历史`,loadingOlder:`正在加载更早记录...`,loadOlder:`加载更早记录`,loadOlderError:`无法加载更早记录,请重试`,jumpToMessage:`跳转到用户消息 {{index}}`,moreFiles:`再显示 {{count}} 个文件`,noHistory:`此任务暂无历史`,output:`输出`,outputOmitted:`命令输出已省略 {{bytes}} 个 UTF-8 字节和 {{lines}} 行,显示开头和结尾内容。`,outputRetained:`较早的命令输出已按内存预算清理`,operationGroup:{collapse:`收起执行详情:{{summary}}`,commandsOnly:`命令执行完成:{{count}} 条`,expand:`展开执行详情:{{summary}}`,failed:`;其中 {{count}} 项失败`,summary:`操作完成:调用 {{toolCount}} 个工具,执行 {{commandCount}} 条命令`,toolsOnly:`工具调用完成:{{count}} 个`},buildPlan:`构建`,plan:`计划`,planGenerating:`正在生成计划`,planReady:`计划已生成,可开始构建`,processing:`已处理`,quickNavigation:`用户消息快捷导航`,reconnecting:`实时连接恢复中`,review:`审核`,reviewMode:`审查模式`,reviewPrompt:{baseBranch:`请检查我相对于 {{branch}} 的更改`,commit:`请检查提交 {{sha}}`,commitWithTitle:`请检查提交 {{sha}}:{{title}}`,custom:`请按以下要求检查代码:{{instructions}}`,uncommitted:`请检查我未提交的更改`},running:`正在运行`,runningOperation:`正在运行 {{operation}}`,selectProject:`选择新聊天项目`,showImage:`查看图片 {{name}}`,skillsUsed:`使用的 Skills`,editedFiles:`已编辑 {{count}} 个文件`,editingFiles:`正在编辑 {{count}} 个文件`,liveDiff:`实时文件变更`,liveFileChange:`正在修改 {{name}},新增 {{additions}} 行,删除 {{removals}} 行`,notice:{guardian_warning:`安全警告`,hook_status:`Hook 状态`,model_verification:`模型验证`,modelVerification:`正在验证模型可用性`,runtime_warning:`运行时警告`,strict_review_required:`需要严格审核`,strictReviewRequired:`安全审核已升级,当前操作将在严格审核完成后继续`},reasoning:`推理摘要`,reasoningStreaming:`正在推理`,runtimeStatus:{duration:`耗时 {{duration}} 毫秒`,fasterModel:`可使用更快的模型:{{model}}`,hook:`正在运行 Hook {{eventName}}`,modelRerouted:`模型已从 {{fromModel}} 切换到 {{toModel}}`,safetyBuffering:`正在使用安全缓冲模型 {{model}}`}}},nt={about:{available:`发现新版本 {{version}}`,check:`检查更新`,checking:`正在检查`,codexlyVersion:`Codexly 版本`,codexVersion:`Codex 版本`,current:`已是最新版本`,github:`项目 GitHub`,loading:`正在检查更新`,restartRequired:`更新完成,重启 Codexly 后生效`,retry:`重新检查`,releaseNotes:`更新日志`,releaseNotesTitle:`{{version}} 更新日志`,releaseNotesUnavailable:`暂时无法获取此版本的更新日志。`,update:`软件更新`,updateTo:`更新到 {{version}}`,updating:`正在更新`},access:{currentSession:`当前浏览器`,loggingOut:`正在退出`,logout:`退出局域网访问`,sessionDescription:`此浏览器当前已配对到本次 Codexly 局域网会话。`},actions:{cancel:`取消`,close:`关闭`,closeDialog:`关闭全局设置`,closeReleaseNotes:`关闭更新日志`,save:`保存全局默认`,saving:`正在保存`},appearance:{automatic:`自动`,automaticMode:`自动模式`,colorMode:`颜色模式`,dark:`深色`,darkMode:`深色模式`,language:`语言`,light:`浅色`,lightMode:`浅色模式`,notifications:`通知`},approval:{autoReview:`自动审核`,never:`从不询问`,onRequest:`按需审批`},background:{bing:`Bing 壁纸`,bingAria:`Bing 每日壁纸`,custom:`自定义`,customAria:`自定义工作台背景`,invalidImage:`请选择 20 MiB 以内的 PNG、JPEG、WebP 或 GIF 图片。`,label:`工作台背景`,none:`无`,noneAria:`无工作台背景`,overlayOpacity:`壁纸遮罩不透明度`,previewAlt:`自定义工作台背景预览`,upload:`上传图片`,uploadInput:`上传自定义背景图片`,uploadRequired:`需要上传图片`},effort:{high:`高`,low:`低`,medium:`中`,minimal:`最低`,xhigh:`极高`},errors:{appInfo:`无法加载版本信息`,load:`无法加载全局设置`,logout:`无法退出局域网访问`,save:`无法保存全局设置`,update:`更新失败,请重试`,updateCheck:`无法检查更新`},fields:{approvalPolicy:`审批`,commitMessagePrompt:`提交提示词`,commitModel:`提交模型`,defaultOpenWith:`默认打开方式`,fastMode:`快速模式`,followUpMessages:`跟进消息`,model:`模型`,prompt:`提示词`,reasoningEffort:`思考量`,sandbox:`工作区`},followUp:{queue:`排队`,steer:`引导`},integration:{automatic:`自动选择`},languages:{en:`English`,zhCN:`简体中文`},loading:`正在加载全局设置`,navigationLabel:`设置分类`,notifications:{disabled:`关闭`,enabled:`开启`},provider:{apiKey:`API Key(可选)`,baseUrl:`API Base URL`,cancelLogin:`取消登录`,connect:`连接`,connected:`已连接`,custom:`自定义 API`,disconnected:`未连接`,errors:{connect:`无法连接自定义 API`,load:`无法读取模型服务状态`,login:`无法启动官方登录`},loading:`正在读取模型服务状态`,login:`使用 ChatGPT 登录`,logout:`退出登录`,addModel:`添加模型`,modelId:`模型 ID`,modelName:`模型名称`,mode:`模型服务模式`,models:`自定义模型(可选)`,official:`官方登录`,reconnect:`重新连接`,removeModel:`删除模型`,retry:`重试`,title:`连接 Codex 模型服务`,waiting:`等待浏览器登录`},sandbox:{dangerFullAccess:`完全访问`,readOnly:`只读`,workspaceWrite:`工作区可写`},sections:{about:`关于`,access:`局域网访问`,agent:`Agent 默认值`,appearance:`基础设置`,commit:`提交消息`,integration:`应用集成`,provider:`模型服务`},title:`全局设置`},rt={actions:{cancel:`取消`,close:`关闭`,retry:`重试`,save:`保存`},commit:{allFiles:`全选`,commit:`提交`,commitActions:`选择提交方式`,commitAndPush:`提交并推送`,commitAndPushComplete:`提交并推送已完成`,commitAndPushSucceeded:`提交并推送成功`,commitComplete:`提交已完成`,commitCompletePushFailed:`提交已完成,但推送失败`,commitCompleteUpstreamMissing:`提交已完成,当前分支未配置上游`,commitMessage:`提交信息`,commitSucceeded:`提交成功`,changes:`变更`,generateMessage:`生成 message 信息`,messagePlaceholder:`输入提交信息`,repository:`Git 项目`,repositoryLoading:`正在加载 Git 项目`,repositoryUnavailable:`未找到可提交的 Git 项目`,selectAllFiles:`全选文件`,selectFiles:`选择文件`,selectRepository:`选择 Git 项目`,selectionLabel:`选择文件,已选择 {{selected}}/{{total}} 个文件`,staged:`已暂存`,totalFiles_one:`共 {{count}} 个`,totalFiles_other:`共 {{count}} 个`,unstaged:`未暂存`},diff:{changedFiles:`变更文件`,changedFilesNavigation:`变更文件导航`,close:`关闭文件 Diff`,closeReview:`关闭文件审核`,collapseChangedFilesNavigation:`收起变更文件导航`,expandChangedFilesNavigation:`展开变更文件导航`,fileStats:`{{path}},新增 {{additions}} 行,删除 {{removals}} 行`,loading:`正在加载 Diff`,nextFile:`审核下一个文件`,previousFile:`审核上一个文件`,reviewContent:`审核文件内容`},composer:{addedAttachments:`已添加附件`,approvalMode:`批准模式`,attachmentCount_one:`{{count}} 个附件`,attachmentCount_other:`{{count}} 个附件`,attachmentReadFailed:`附件读取失败`,attachmentUploadFailed:`附件上传失败`,baseBranchReview:`基于基础分支进行审查`,buildPlanPrompt:`请开始按照上述计划进行开发。`,cancelGoalMode:`取消目标模式`,cancelPlanMode:`取消计划模式`,cancelQueued:`取消排队:{{summary}}`,cancelQueuedTooltip:`取消排队`,editQueued:`编辑排队消息:{{summary}}`,editQueuedTooltip:`编辑排队消息`,disableFastMode:`关闭快速模式`,enableFastMode:`开启快速模式`,commandGroup:`命令`,commandInput:`输入命令`,commandNoMatch:`没有匹配的 Skill 或命令`,fileSearch:`搜索项目文件`,fileSearchEmpty:`没有匹配的项目文件`,fileSearchFailed:`无法搜索项目文件`,fileSearchGroup:`项目文件`,fileSearchLoading:`正在搜索项目文件`,compacting:`正在压缩上下文`,gitBranchMissing:`未检出分支`,branchSwitcherLabel:`切换分支,当前分支 {{branch}}`,branchSwitcherMenu:`切换分支`,detachedHead:`detached HEAD`,branchSwitchFailed:`无法创建或切换分支,请重试`,branchName:`分支名称`,createBranch:`新建分支`,createBranchDescription:`基于当前分支创建并立即切换`,createAndSwitchBranch:`创建并切换`,createAndSwitchWorktree:`创建并切换`,createWorktree:`新建 worktree`,createWorktreeDescription:`在仓库同级目录创建 worktree 并切换`,worktreeListEmpty:`暂无其他 worktree`,worktreeListFailed:`无法读取 worktree`,worktreeListLoading:`正在读取 worktree`,worktreeSwitcherMenu:`切换 worktree`,goalMode:`目标`,goalStatus:{active:`目标进行中`,blocked:`目标受阻`,budget_limited:`目标预算已用尽`,complete:`目标已完成`,paused:`目标已暂停`,usage_limited:`目标用量受限`},goalStatusLabel:`{{status}}:{{objective}}`,goalObjectiveRequired:`目标模式需要输入目标文本`,goalObjectiveTooLong:`目标文本不能超过 4,000 个字符`,goalStructuredInputUnsupported:`目标模式暂不支持附件或 Skill,请改用文本和 @文件路径`,initializingAgentsPrompt:`请检查当前项目,并在项目根目录创建或完善 AGENTS.md,写入适用于 Codex 的项目说明、常用命令和验证要求。`,landmark:`消息编辑器`,modelListFailed:`模型列表加载失败`,modelLoading:`模型加载中`,model:`模型`,modelAndReasoningMenu:`模型和思考量`,modelAndReasoningSelect:`模型和思考量:{{model}},{{effort}}`,modelSelect:`选择模型`,moveQueuedDown:`下移排队消息:{{summary}}`,moveQueuedDownTooltip:`下移`,moveQueuedUp:`上移排队消息:{{summary}}`,moveQueuedUpTooltip:`上移`,noBaseBranch:`未发现可用分支`,noModels:`暂无可用模型`,openProjectFolder:`在系统文件夹中打开`,operationFailed:`操作失败,请重试`,placeholder:`告诉 Codexly 你想完成什么`,planMode:`计划`,projectPath:`项目路径`,queueMessage:`排队消息`,queuedMessages:`已排队消息`,reasonEffortSelect:`选择思考量`,reasoningEffort:`思考量`,reviewBaseBranchGroup:`选择基础分支`,reviewScopeGroup:`选择审查范围`,reviewStarted:`代码审查已开始`,reviewUncommitted:`审查未提交的更改`,sandboxMode:`沙盒模式`,sendSteer:`发送引导`,steerNow:`立即引导:{{summary}}`,steerNowTooltip:`立即作为引导发送`,stop:`停止`,submit:`提交`,taskInput:`任务输入`,taskRunning:`任务运行中`,uncommittedChangesMissing:`未发现可用的基础分支`,waitingToSend:`等待发送`,followUpPlaceholder:`输入后续要求`},openMenu:{choose:`选择打开方式`,copyAbsolutePath:`复制绝对路径`,copyName:`复制名称`,copyRelativePath:`复制相对路径`,detect:`正在检测打开方式`,moreActions:`更多操作`,none:`没有可用的打开方式`,open:`打开`,openIn:`在 {{app}} 中打开`,reference:`引用`,systemDefault:`系统默认应用`,targetLabel:`{{path}} 的操作`},promptCommand:{availability:{noTask:`需要先打开一个任务`,notReady:`运行时能力尚未就绪`,unsupported:`当前运行时不支持此命令`},compact:{description:`压缩此任务的上下文`,label:`压缩`},fork:{description:`复制当前任务及其对话历史`,label:`复制`},goal:{description:`设置持久目标并持续工作直到完成`,label:`目标`},initialize:{description:`创建包含 Codex 说明的 AGENTS.md 文件`,label:`初始化`},plan:{description:`先分析任务并制定实施计划`,label:`计划`},review:{description:`审查未暂存的更改,或与某个分支进行比较`,label:`代码审查`}},pending:{allow:`允许`,allowTurn:`本轮允许`,additionalPermissions:`额外权限`,allowSession:`本次会话允许`,answerFailed:`回答提交失败,请重试`,commandApproval:`命令审批`,cancel:`取消`,deny:`拒绝`,expired:`请求已过期`,fileChangeApproval:`文件变更审批`,fileChangeFallback:`待确认文件变更`,inputRequired:`需要你的输入`,mcpForm:`{{server}} 输入请求`,mcpRequest:`{{server}} 确认请求`,networkApproval:`网络访问审批`,networkPermission:`网络访问`,other:`其他`,otherAnswer:`{{header}}其他回答`,openUrl:`打开链接`,previousPending:`等待处理前一项`,processed:`请求已处理`,permissionAccess:{deny:`拒绝`,read:`读取`,write:`写入`},permissionApproval:`权限审批`,permissionGlobDepth:`Glob 扫描深度:{{depth}}`,permissionMinimal:`最小文件系统`,permissionProjectRoots:`项目根目录`,permissionRoot:`文件系统根目录`,permissionTmpdir:`系统临时目录`,permissionUnknownPath:`未知路径`,fileSystemPermission:`文件系统`,requestFailed:`请求处理失败,请重试`,submitAnswers:`提交回答`,unsupportedForm:`此表单无法安全显示,请拒绝或取消请求。`},projectDialog:{closeImagePreview:`关闭图片预览`,closeSource:`关闭源文件`,delete:`删除`,loadImageError:`无法加载图片`,loadMoreSourceError:`加载更多内容失败`,loadSourceError:`无法加载源文件`,loadingMoreSource:`正在加载更多内容`,loadingSource:`正在加载源文件`,name:`项目名称`,previewMarkdown:`预览 Markdown`,remove:`移除项目`,removeDescription:`将“{{name}}”从 Codexly 左栏移除,不会删除磁盘上的文件夹及文件。`,rename:`重命名项目`,renameDescription:`只修改左栏显示名称,不会修改磁盘上的文件夹名称。`,showRawContent:`显示原始内容`,sourcePartial:`部分内容`},projectPicker:{primaryRoot:`主目录`,primaryRootHint:`首个勾选的文件夹将作为主目录`,primaryRootSummary:`{{path}}(主目录)`,rootSeparator:`、`,selectedRoots:`已选择 {{count}} 个项目目录`,selectRoot:`选择 {{name}}`,add:`添加此文件夹`,addError:`无法添加所选文件夹`,adding:`正在添加`,description:`浏览 Codexly 运行设备上的文件夹`,directPathReady:`已验证目录,可直接添加`,empty:`此文件夹中没有子文件夹`,filesystemRoot:`选择磁盘`,goToPath:`前往此路径`,hideHidden:`隐藏隐藏文件夹`,loadBranchError:`无法读取此文件夹`,loadError:`无法读取文件夹`,loading:`正在读取文件夹`,loadingBranch:`正在读取`,noSelection:`尚未选择文件夹`,parent:`返回上一级文件夹`,pathLabel:`绝对目录路径`,pathPlaceholder:`输入绝对目录路径`,resolvingPath:`正在定位主目录`,title:`选择项目文件夹`,showHidden:`显示隐藏文件夹`,treeLabel:`项目文件夹目录树`},hostAttachmentPicker:{add:`添加所选文件`,description:`浏览 Codexly 运行设备上的文件`,empty:`此文件夹中没有支持的文件`,filesystemRoot:`选择磁盘`,fileTitle:`选择本机文件`,goToPath:`前往此路径`,hideHidden:`隐藏隐藏文件`,imageTitle:`选择本机图片`,importError:`无法添加所选文件`,importing:`正在添加`,loadBranchError:`无法读取此文件夹`,loadError:`无法读取文件`,loading:`正在读取文件`,loadingBranch:`正在读取`,noSelection:`尚未选择文件`,parent:`返回上一级文件夹`,pathLabel:`绝对目录路径`,pathPlaceholder:`输入绝对目录路径`,resolvingPath:`正在定位主目录`,showHidden:`显示隐藏文件`,treeLabel:`本机文件目录树`},subagentOutput:{close:`关闭子代理输出`,error:`无法加载子代理输出`,loading:`正在加载子代理输出`,reconnecting:`子代理实时连接恢复中`,task:`子代理 {{taskId}}`,title:`子代理输出`},shell:{selectProjectRoot:`选择项目目录`,closeInspector:`关闭上下文面板`,closeSidebar:`关闭项目侧栏`,collapseInspector:`收起上下文面板`,collapseSidebar:`收起项目侧栏`,expandInspector:`展开上下文面板`,expandSidebar:`展开项目侧栏`,newChat:`新聊天`,renameTask:`重命名任务 {{title}}`,resizeInspector:`调整上下文面板宽度`,resizeSidebar:`调整项目侧栏宽度`,timeline:`任务时间线`,temporaryTask:`临时任务`},skillEditor:{tokenLabel:`Skill {{name}},实际文本 {{text}}`},archivedTasks:{confirmDelete:`永久删除`,confirmDeleteAll:`全部永久删除`,delete:`永久删除`,deleteAll:`全部删除`,deleteAllDescription:`“{{project}}”中的全部已归档任务及其关联历史将被永久删除,此操作无法撤销。`,deleteAllTitle:`永久删除全部已归档任务`,deleteDescription:`“{{task}}”及其关联历史将被永久删除,此操作无法撤销。`,deleteTask:`永久删除任务 {{task}}`,deleteTitle:`永久删除任务`,empty:`没有已归档任务`,loadError:`无法加载已归档任务`,loading:`正在加载已归档任务`,next:`下一页`,page:`第 {{page}} 页`,previous:`上一页`,restore:`恢复`,restoreTask:`恢复任务 {{task}}`,search:`搜索已归档任务`,title:`{{project}} 的已归档任务`,updatedAt:`更新于 {{date}}`},sidebar:{addProject:`添加项目`,agentNavigation:`Agent 导航`,archive:`归档`,archived:`已归档`,close:`关闭项目侧栏`,collapse:`收起`,connection:{connecting:`正在连接`,offline:`离线`,online:`在线`,reconnecting:`正在重新连接`},aboutStatus:`关于,Codexly {{version}}{{update}},终端连接状态:{{status}}`,createInProject:`在 {{project}} 中新建任务`,deletePermanently:`永久删除`,deleteTaskDescription:`“{{task}}”及其关联历史将被永久删除,此操作无法撤销。`,deleteTaskTitle:`永久删除任务`,errorAddProject:`无法添加项目`,errorArchiveTask:`无法归档任务`,errorLoadTasks:`无法加载任务`,errorPinTask:`无法更新固定状态`,errorProjectOrder:`无法保存项目排序`,errorRenameTask:`无法重命名任务`,errorSearchTasks:`无法搜索任务`,expand:`显示更多`,expandLoading:`正在加载更多`,expandRetry:`重试加载更多`,newTask:`新建任务`,landmark:`项目侧栏`,noMatchingTasks:`未找到匹配任务`,noTasks:`暂无任务`,noTemporaryTasks:`暂无临时任务`,openProjectActions:`打开 {{project}} 的项目操作菜单`,openTaskActions:`打开 {{task}} 的操作菜单`,pin:`固定`,pinned:`已固定`,projects:`项目`,projectActions:`{{project}} 的项目操作`,remove:`删除`,rename:`重命名`,search:`搜索任务`,searchAll:`正在搜索全部任务`,settings:`设置`,updateAvailableLabel:`,有可用更新`,taskActions:`{{task}} 的任务操作`,taskApproval:`任务等待审批`,taskComplete:`AI 回复已完成`,taskIncomplete:`AI 回复未完成`,taskLoading:`正在加载任务`,taskRunning:`任务运行中`,temporaryTasks:`临时任务`,toggleProject:`切换项目 {{project}}`,unpin:`取消固定`},taskDialog:{name:`任务名称`,rename:`重命名任务`}},it=`common`,at=[`common`,`settings`,`workbench`,`conversation`],ot={en:{common:Xe,conversation:Ze,settings:Qe,workbench:$e},"zh-CN":{common:et,conversation:tt,settings:nt,workbench:rt}};function st(){try{return typeof window>`u`?null:window.localStorage}catch{return null}}var W=st(),ct=Ye(W,typeof window>`u`||typeof navigator>`u`?[]:navigator.languages);z.use(Fe).init({defaultNS:it,fallbackLng:`zh-CN`,initAsync:!1,interpolation:{escapeValue:!1},lng:ct,ns:at,resources:ot,supportedLngs:[`zh-CN`,`en`]}),typeof document<`u`&&Je(ct,document.documentElement);async function lt(e){qe(e,W??{setItem:()=>void 0}),typeof document<`u`&&Je(e,document.documentElement),await z.changeLanguage(e)}function ut(){return Ke(W??{getItem:()=>null})??(z.resolvedLanguage===`en`?`en`:`zh-CN`)}var dt=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),ft=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),pt=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),mt=e=>{let t=pt(e);return t.charAt(0).toUpperCase()+t.slice(1)},G={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},ht=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},gt=(0,c.createContext)({}),_t=()=>(0,c.useContext)(gt),vt=(0,c.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},l)=>{let{size:u=24,strokeWidth:d=2,absoluteStrokeWidth:f=!1,color:p=`currentColor`,className:m=``}=_t()??{},h=r??f?Number(n??d)*24/Number(t??u):n??d;return(0,c.createElement)(`svg`,{ref:l,...G,width:t??u??G.width,height:t??u??G.height,stroke:e??p,strokeWidth:h,className:dt(`lucide`,m,i),...!a&&!ht(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,c.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),yt=(e,t)=>{let n=(0,c.forwardRef)(({className:n,...r},i)=>(0,c.createElement)(vt,{ref:i,iconNode:t,className:dt(`lucide-${ft(mt(e))}`,`lucide-${e}`,n),...r}));return n.displayName=mt(e),n},bt=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,xt=i,St=(e,t)=>n=>{if(t?.variants==null)return xt(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=bt(t)||bt(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return xt(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},Ct=Object.defineProperty,K=(e,t)=>Ct(e,`name`,{value:t,configurable:!0});function q(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}K(q,`setRef`);function J(...e){return t=>{let n=!1,r=e.map(e=>{let r=q(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];typeof n==`function`?n():q(e[t],null)}}}}K(J,`composeRefs`);function Y(...e){return c.useCallback(J(...e),e)}K(Y,`useComposedRefs`);var wt=Object.defineProperty,X=(e,t)=>wt(e,`name`,{value:t,configurable:!0});function Z(e){let t=c.forwardRef((t,n)=>{let{children:r,...i}=t,a=null,o=!1,s=[];Q(r)&&typeof $==`function`&&(r=$(r._payload)),c.Children.forEach(r,e=>{if(jt(e)){o=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;Q(n)&&typeof $==`function`&&(n=$(n._payload)),a=Ot(t,n),s.push(a?.props?.children)}else s.push(e)}),a?a=c.cloneElement(a,void 0,s):!o&&c.Children.count(r)===1&&c.isValidElement(r)&&(a=r);let l=a?At(a):void 0,u=Y(n,l);if(!a){if(r||r===0)throw Error(o?Ft(e):Pt(e));return r}let d=kt(i,a.props??{});return a.type!==c.Fragment&&(d.ref=n?u:l),c.cloneElement(a,d)});return t.displayName=`${e}.Slot`,t}X(Z,`createSlot`);var Tt=Z(`Slot`),Et=Symbol.for(`radix.slottable`);function Dt(e){let t=X(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=Et,t}X(Dt,`createSlottable`);var Ot=X((e,t)=>{if(`child`in e.props){let t=e.props.child;return c.isValidElement(t)?c.cloneElement(t,void 0,e.props.children(t.props.children)):null}return c.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function kt(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}X(kt,`mergeProps`);function At(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}X(At,`getElementRef`);function jt(e){return c.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===Et}X(jt,`isSlottable`);var Mt=Symbol.for(`react.lazy`);function Q(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===Mt&&`_payload`in e&&Nt(e._payload)}X(Q,`isLazyComponent`);function Nt(e){return typeof e==`object`&&!!e&&`then`in e}X(Nt,`isPromiseLike`);var Pt=X(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),Ft=X(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),$=c.use,It=a({extend:{theme:{text:[`caption`,`meta`,`label`,`body-small`,`body`,`heading`,`title`,`display`]}}});function Lt(...e){return It(i(e))}var Rt=r(),zt=St(`inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap rounded-control text-body-small outline-none transition-colors focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{defaultVariants:{contentAlign:`center`,size:`default`,variant:`default`},variants:{contentAlign:{center:`justify-center`,start:`justify-start text-left`},size:{compact:`h-8 px-3 text-label`,default:`h-8 px-3`,embedded:`h-auto p-0`,sm:`h-7 px-2 text-label max-workbench:h-11`,toolbar:`h-6 px-2 text-label max-workbench:h-11 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 px-4 text-body`,icon:`inline-grid size-9 place-items-center px-0 max-workbench:size-11`,"icon-compact":`inline-grid size-8 place-items-center px-0 max-workbench:size-11`,"icon-sm":`inline-grid size-7 place-items-center px-0 max-workbench:size-11 [&_svg:not([class*='size-'])]:size-3.5`,"icon-toolbar":`inline-grid size-6 place-items-center px-0 max-workbench:size-11 [&_svg:not([class*='size-'])]:size-3`,"icon-lg":`inline-grid size-10 place-items-center px-0 max-workbench:size-11`},variant:{default:`bg-brand font-medium text-white hover:bg-brand-strong`,destructive:`bg-danger font-medium text-white hover:opacity-90`,embedded:`rounded-none bg-transparent text-inherit hover:bg-transparent hover:text-inherit focus-visible:shadow-none`,ghost:`bg-transparent text-muted-foreground hover:bg-control-hover hover:text-foreground`,inverse:`rounded-pill bg-foreground text-raised hover:bg-brand-strong disabled:bg-control-active disabled:text-muted-foreground`,link:`h-auto px-0 text-brand underline-offset-4 hover:text-brand-strong hover:underline [&_svg:not([class*='size-'])]:size-3.5`,outline:`border border-separator-strong bg-panel text-foreground hover:bg-control-hover hover:text-foreground`,secondary:`bg-raised text-foreground shadow-sm hover:bg-control-hover`}}});function Bt({asChild:e=!1,className:t,contentAlign:n=`center`,size:r=`default`,variant:i=`default`,...a}){return(0,Rt.jsx)(e?Tt:`button`,{className:Lt(zt({className:t,contentAlign:n,size:r,variant:i})),"data-content-align":n,"data-size":r,"data-slot":`button`,"data-variant":i,...a})}export{be as _,Y as a,P as b,lt as c,Ie as d,Pe as f,H as g,Te as h,Dt as i,ut as l,ke as m,Lt as n,St as o,je as p,Z as r,yt as s,Bt as t,Be as u,B as v,s as x,z as y};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./react-runtime-CVaUQXZF.js";import{n as t,s as n}from"./button-SdoQawHa.js";var r=n(`file-pen-line`,[[`path`,{d:`M14.364 13.634a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506l4.013-4.009a1 1 0 0 0-3.004-3.004z`,key:`ukzhwg`}],[`path`,{d:`M14.487 7.858A1 1 0 0 1 14 7V2`,key:`1klhew`}],[`path`,{d:`M20 19.645V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l2.516 2.516`,key:`rxaxab`}],[`path`,{d:`M8 18h1`,key:`13wk12`}]]),i=e();function a({className:e,orientation:n=`horizontal`,role:r=`group`,...a}){return(0,i.jsx)(`div`,{className:t(`flex w-fit items-stretch [&>*]:relative [&>*]:focus-visible:z-10`,n===`vertical`?`flex-col`:`flex-row`,e),"data-orientation":n,"data-slot":`button-group`,role:r,...a})}export{r as n,a as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{i as t,r as n,t as r}from"./react-runtime-CVaUQXZF.js";import{a as i,n as a,s as o,y as s}from"./button-SdoQawHa.js";import{At as c,C as l,Dt as u,E as d,Et as f,St as p,T as m,_ as h,_t as g,bt as _,d as v,ft as y,ht as b,pt as x,st as S,u as C}from"./es2015-B-skuqay.js";var w=class extends y{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||T(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=x({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let r=this.state.status===`pending`,i=!this.#r.canStart();try{if(r)t();else{this.#i({type:`pending`,variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:i})}let a=await this.#r.start();return await this.#n.config.onSuccess?.(a,e,this.state.context,this,n),await this.options.onSuccess?.(a,e,this.state.context,n),await this.#n.config.onSettled?.(a,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(a,null,e,this.state.context,n),this.#i({type:`success`,data:a}),a}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),b.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function T(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var E=class extends c{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}#e;#t;#n;build(e,t,n){let r=new w({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=D(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=D(e);if(typeof t==`string`){let n=this.#t.get(t);if(n)if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=D(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}else return!0}runNext(e){let t=D(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){b.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>_(t,e))}findAll(e={}){return this.getAll().filter(t=>_(e,t))}notify(e){b.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return b.batch(()=>Promise.all(e.map(e=>e.continue().catch(p))))}};function D(e){return e.options.scope?.id}var O=class extends c{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),f(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&g(t.mutationKey)!==g(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??T();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){b.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},k=e(t(),1);function A(e,t){let n=S(t),[r]=k.useState(()=>new O(n,e));k.useEffect(()=>{r.setOptions(e)},[r,e]);let i=k.useSyncExternalStore(k.useCallback(e=>r.subscribe(b.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=k.useCallback((e,t)=>{r.mutate(e,t).catch(p)},[r]);if(i.error&&u(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}function j(){let e=!1;return{async run(t){if(!e){e=!0;try{return await t()}finally{e=!1}}}}}var ee=e(n(),1);function te(e){if(!e||typeof document>`u`)return;let t=document.head||document.getElementsByTagName(`head`)[0],n=document.createElement(`style`);n.type=`text/css`,t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}var M=e=>{switch(e){case`success`:return P;case`info`:return I;case`warning`:return F;case`error`:return re;default:return null}},N=Array(12).fill(0),ne=({visible:e,className:t})=>k.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},k.createElement(`div`,{className:`sonner-spinner`},N.map((e,t)=>k.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),P=k.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},k.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),F=k.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},k.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),I=k.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},k.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),re=k.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},k.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),ie=k.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},k.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),k.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),ae=()=>{let[e,t]=k.useState(document.hidden);return k.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},oe=1,L=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:oe++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0||e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=Promise.resolve(e instanceof Function?e():e),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],k.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(ce(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,o=typeof r==`object`&&!k.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(e instanceof Error){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!k.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!k.isValidElement(r)?r:{message:r};this.create({id:n,type:`success`,description:a,...o})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!k.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}}).finally(()=>{i&&(this.dismiss(n),n=void 0),t.finally==null||t.finally.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=t?.id||oe++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},se=(e,t)=>{let n=t?.id||oe++;return L.addToast({title:e,...t,id:n}),n},ce=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,le=Object.assign(se,{success:L.success,info:L.info,warning:L.warning,error:L.error,custom:L.custom,message:L.message,promise:L.promise,dismiss:L.dismiss,loading:L.loading},{getHistory:()=>L.toasts,getToasts:()=>L.getActiveToasts()});te(`[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}`);function R(e){return e.label!==void 0}var ue=3,z=`24px`,de=`16px`,fe=4e3,B=356,pe=14,me=45,he=200;function V(...e){return e.filter(Boolean).join(` `)}function ge(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var _e=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:l,expanded:u,removeToast:d,defaultRichColors:f,closeButton:p,style:m,cancelButtonStyle:h,actionButtonStyle:g,className:_=``,descriptionClassName:v=``,duration:y,position:b,gap:x,expandByDefault:S,classNames:C,icons:w,closeButtonAriaLabel:T=`Close toast`}=e,[E,D]=k.useState(null),[O,A]=k.useState(null),[j,ee]=k.useState(!1),[te,N]=k.useState(!1),[P,F]=k.useState(!1),[I,re]=k.useState(!1),[oe,L]=k.useState(!1),[se,ce]=k.useState(0),[le,ue]=k.useState(0),z=k.useRef(n.duration||y||fe),de=k.useRef(null),B=k.useRef(null),pe=c===0,_e=c+1<=o,H=n.type,U=n.dismissible!==!1,ve=n.className||``,ye=n.descriptionClassName||``,W=k.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),be=k.useMemo(()=>n.closeButton??p,[n.closeButton,p]),G=k.useMemo(()=>n.duration||y||fe,[n.duration,y]),K=k.useRef(0),q=k.useRef(0),xe=k.useRef(0),J=k.useRef(null),[Se,Ce]=b.split(`-`),Y=k.useMemo(()=>s.reduce((e,t,n)=>n>=W?e:e+t.height,0),[s,W]),we=ae(),X=n.invert||t,Z=H===`loading`;q.current=k.useMemo(()=>W*x+Y,[W,Y]),k.useEffect(()=>{z.current=G},[G]),k.useEffect(()=>{ee(!0)},[]),k.useEffect(()=>{let e=B.current;if(e){let t=e.getBoundingClientRect().height;return ue(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),k.useLayoutEffect(()=>{if(!j)return;let e=B.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,ue(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[j,n.title,n.description,a,n.id,n.jsx,n.action,n.cancel]);let Q=k.useCallback(()=>{N(!0),ce(q.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{d(n)},he)},[n,d,a,q]);k.useEffect(()=>{if(n.promise&&H===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return u||i||we?(()=>{if(xe.current<K.current){let e=new Date().getTime()-K.current;z.current-=e}xe.current=new Date().getTime()})():z.current!==1/0&&(K.current=new Date().getTime(),e=setTimeout(()=>{n.onAutoClose==null||n.onAutoClose.call(n,n),Q()},z.current)),()=>clearTimeout(e)},[u,i,n,H,we,Q]),k.useEffect(()=>{n.delete&&(Q(),n.onDismiss==null||n.onDismiss.call(n,n))},[Q,n.delete]);function Te(){return w?.loading?k.createElement(`div`,{className:V(C?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":H===`loading`},w.loading):k.createElement(ne,{className:V(C?.loader,n?.classNames?.loader),visible:H===`loading`})}let Ee=n.icon||w?.[H]||M(H);return k.createElement(`li`,{tabIndex:0,ref:B,className:V(_,ve,C?.toast,n?.classNames?.toast,C?.default,C?.[H],n?.classNames?.[H]),"data-sonner-toast":``,"data-rich-colors":n.richColors??f,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":j,"data-promise":!!n.promise,"data-swiped":oe,"data-removed":te,"data-visible":_e,"data-y-position":Se,"data-x-position":Ce,"data-index":c,"data-front":pe,"data-swiping":P,"data-dismissible":U,"data-type":H,"data-invert":X,"data-swipe-out":I,"data-swipe-direction":O,"data-expanded":!!(u||S&&j),"data-testid":n.testId,style:{"--index":c,"--toasts-before":c,"--z-index":l.length-c,"--offset":`${te?se:q.current}px`,"--initial-height":S?`auto`:`${le}px`,...m,...n.style},onDragEnd:()=>{F(!1),D(null),J.current=null},onPointerDown:e=>{e.button!==2&&(Z||!U||(de.current=new Date,ce(q.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(F(!0),J.current={x:e.clientX,y:e.clientY})))},onPointerUp:()=>{if(I||!U)return;J.current=null;let e=Number(B.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(B.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),r=new Date().getTime()-de.current?.getTime(),i=E===`x`?e:t,a=Math.abs(i)/r;if(Math.abs(i)>=me||a>.11){ce(q.current),n.onDismiss==null||n.onDismiss.call(n,n),A(E===`x`?e>0?`right`:`left`:t>0?`down`:`up`),Q(),re(!0);return}else{var o,s;(o=B.current)==null||o.style.setProperty(`--swipe-amount-x`,`0px`),(s=B.current)==null||s.style.setProperty(`--swipe-amount-y`,`0px`)}L(!1),F(!1),D(null)},onPointerMove:t=>{var n,r;if(!J.current||!U||window.getSelection()?.toString().length>0)return;let i=t.clientY-J.current.y,a=t.clientX-J.current.x,o=e.swipeDirections??ge(b);!E&&(Math.abs(a)>1||Math.abs(i)>1)&&D(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0},c=e=>1/(1.5+Math.abs(e)/20);if(E===`y`){if(o.includes(`top`)||o.includes(`bottom`))if(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)s.y=i;else{let e=i*c(i);s.y=Math.abs(e)<Math.abs(i)?e:i}}else if(E===`x`&&(o.includes(`left`)||o.includes(`right`)))if(o.includes(`left`)&&a<0||o.includes(`right`)&&a>0)s.x=a;else{let e=a*c(a);s.x=Math.abs(e)<Math.abs(a)?e:a}(Math.abs(s.x)>0||Math.abs(s.y)>0)&&L(!0),(n=B.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=B.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},be&&!n.jsx&&H!==`loading`?k.createElement(`button`,{"aria-label":T,"data-disabled":Z,"data-close-button":!0,onClick:Z||!U?()=>{}:()=>{Q(),n.onDismiss==null||n.onDismiss.call(n,n)},className:V(C?.closeButton,n?.classNames?.closeButton)},w?.close??ie):null,(H||n.icon||n.promise)&&n.icon!==null&&(w?.[H]!==null||n.icon)?k.createElement(`div`,{"data-icon":``,className:V(C?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||Te():null,n.type===`loading`?null:Ee):null,k.createElement(`div`,{"data-content":``,className:V(C?.content,n?.classNames?.content)},k.createElement(`div`,{"data-title":``,className:V(C?.title,n?.classNames?.title)},n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title),n.description?k.createElement(`div`,{"data-description":``,className:V(v,ye,C?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),k.isValidElement(n.cancel)?n.cancel:n.cancel&&R(n.cancel)?k.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||h,onClick:e=>{R(n.cancel)&&U&&(n.cancel.onClick==null||n.cancel.onClick.call(n.cancel,e),Q())},className:V(C?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,k.isValidElement(n.action)?n.action:n.action&&R(n.action)?k.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||g,onClick:e=>{R(n.action)&&(n.action.onClick==null||n.action.onClick.call(n.action,e),!e.defaultPrevented&&Q())},className:V(C?.actionButton,n?.classNames?.actionButton)},n.action.label):null)};function H(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function U(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?de:z;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var ve=k.forwardRef(function(e,t){let{id:n,invert:r,position:i=`bottom-right`,hotkey:a=[`altKey`,`KeyT`],expand:o,closeButton:s,className:c,offset:l,mobileOffset:u,theme:d=`light`,richColors:f,duration:p,style:m,visibleToasts:h=ue,toastOptions:g,dir:_=H(),gap:v=pe,icons:y,containerAriaLabel:b=`Notifications`}=e,[x,S]=k.useState([]),C=k.useMemo(()=>n?x.filter(e=>e.toasterId===n):x.filter(e=>!e.toasterId),[x,n]),w=k.useMemo(()=>Array.from(new Set([i].concat(C.filter(e=>e.position).map(e=>e.position)))),[C,i]),[T,E]=k.useState([]),[D,O]=k.useState(!1),[A,j]=k.useState(!1),[te,M]=k.useState(d===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:d),N=k.useRef(null),ne=a.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),P=k.useRef(null),F=k.useRef(!1),I=k.useCallback(e=>{S(t=>(t.find(t=>t.id===e.id)?.delete||L.dismiss(e.id),t.filter(({id:t})=>t!==e.id)))},[]);return k.useEffect(()=>L.subscribe(e=>{if(e.dismiss){requestAnimationFrame(()=>{S(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t))});return}setTimeout(()=>{ee.flushSync(()=>{S(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[x]),k.useEffect(()=>{if(d!==`system`){M(d);return}if(d===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?M(`dark`):M(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{M(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{M(e?`dark`:`light`)}catch(e){console.error(e)}})}},[d]),k.useEffect(()=>{x.length<=1&&O(!1)},[x]),k.useEffect(()=>{let e=e=>{if(a.every(t=>e[t]||e.code===t)){var t;O(!0),(t=N.current)==null||t.focus()}e.code===`Escape`&&(document.activeElement===N.current||N.current?.contains(document.activeElement))&&O(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a]),k.useEffect(()=>{if(N.current)return()=>{P.current&&(P.current.focus({preventScroll:!0}),P.current=null,F.current=!1)}},[N.current]),k.createElement(`section`,{ref:t,"aria-label":`${b} ${ne}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},w.map((t,n)=>{let[i,a]=t.split(`-`);return C.length?k.createElement(`ol`,{key:t,dir:_===`auto`?H():_,tabIndex:-1,ref:N,className:c,"data-sonner-toaster":!0,"data-sonner-theme":te,"data-y-position":i,"data-x-position":a,style:{"--front-toast-height":`${T[0]?.height||0}px`,"--width":`${B}px`,"--gap":`${v}px`,...m,...U(l,u)},onBlur:e=>{F.current&&!e.currentTarget.contains(e.relatedTarget)&&(F.current=!1,P.current&&=(P.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||F.current||(F.current=!0,P.current=e.relatedTarget)},onMouseEnter:()=>O(!0),onMouseMove:()=>O(!0),onMouseLeave:()=>{A||O(!1)},onDragEnd:()=>O(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||j(!0)},onPointerUp:()=>j(!1)},C.filter(e=>!e.position&&n===0||e.position===t).map((n,i)=>k.createElement(_e,{key:n.id,icons:y,index:i,toast:n,defaultRichColors:f,duration:g?.duration??p,className:g?.className,descriptionClassName:g?.descriptionClassName,invert:r,visibleToasts:h,closeButton:g?.closeButton??s,interacting:A,position:t,style:g?.style,unstyled:g?.unstyled,classNames:g?.classNames,cancelButtonStyle:g?.cancelButtonStyle,actionButtonStyle:g?.actionButtonStyle,closeButtonAriaLabel:g?.closeButtonAriaLabel,removeToast:I,toasts:C.filter(e=>e.position==n.position),heights:T.filter(e=>e.position==n.position),setHeights:E,expandByDefault:o,gap:v,expanded:D,swipeDirections:e.swipeDirections}))):null}))}),ye=`actionNotification`;function W(e){let t=e.meta?.[ye];if(t===!1)return!1;if(typeof t!=`object`||!t||Array.isArray(t))return;let n=`error`in t&&typeof t.error==`boolean`?t.error:void 0,r=`successMessage`in t&&(typeof t.successMessage==`string`||t.successMessage===!1)?t.successMessage:void 0;return{...n===void 0?{}:{error:n},...r===void 0?{}:{successMessage:r}}}function be(e){return e instanceof Error&&e.message.trim().length>0?e.message:typeof e==`string`&&e.trim().length>0?e:s.t(`app.actionFailed`,{ns:`common`})}function G(e){le.error(be(e))}function K(e=s.t(`app.actionSucceeded`,{ns:`common`})){le.success(e)}function q(){return new E({onError(e,t,n,r){let i=W(r);i!==!1&&i?.error!==!1&&G(e)},onSuccess(e,t,n,r){let i=W(r);i===!1||i?.successMessage===!1||K(i?.successMessage)}})}var xe=o(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),J=o(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),Se=o(`minus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]),Ce=o(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Y=r(),we=Object.defineProperty,X=(e,t)=>we(e,`name`,{value:t,configurable:!0}),Z=`Checkbox`,[Q,Te]=m(Z),[Ee,De]=Q(Z);function Oe(e){let{__scopeCheckbox:t,checked:n,children:r,defaultChecked:i,disabled:a,form:o,name:s,onCheckedChange:c,required:l,value:u=`on`,internal_do_not_use_render:d}=e,[f,p]=C({prop:n,defaultProp:i??!1,onChange:c,caller:Z}),[m,h]=k.useState(null),[g,_]=k.useState(null),v=k.useRef(!1),[y,b]=k.useReducer(e=>e+1,0),x=!m||!!o||!!m.closest(`form`),S={checked:f,disabled:a,setChecked:p,control:m,setControl:h,name:s,form:o,value:u,hasConsumerStoppedPropagationRef:v,userInteractionCount:y,onUserInteraction:b,required:l,defaultChecked:!$(i)&&i,isFormControl:x,bubbleInput:g,setBubbleInput:_};return(0,Y.jsx)(Ee,{scope:t,...S,children:Ie(d)?d(S):r})}X(Oe,`CheckboxProvider`);var ke=`CheckboxTrigger`,Ae=k.forwardRef(X(function({__scopeCheckbox:e,onKeyDown:t,onClick:n,...r},a){let{control:o,value:s,disabled:c,checked:u,required:f,setControl:p,setChecked:m,hasConsumerStoppedPropagationRef:h,onUserInteraction:g,isFormControl:_,bubbleInput:v}=De(ke,e),y=i(a,p),b=k.useRef(u);return k.useEffect(()=>{let e=o?.form;if(e){let t=X(()=>m(b.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[o,m]),(0,Y.jsx)(l.button,{type:`button`,role:`checkbox`,"aria-checked":$(u)?`mixed`:u,"aria-required":f,"data-state":Le(u),"data-disabled":c?``:void 0,disabled:c,value:s,...r,ref:y,onKeyDown:d(t,e=>{e.key===`Enter`&&e.preventDefault()}),onClick:d(n,e=>{g(),m(e=>$(e)?!0:!e),v&&_&&(h.current=e.isPropagationStopped(),h.current||e.stopPropagation())})})},`CheckboxTrigger`)),je=k.forwardRef(X(function(e,t){let{__scopeCheckbox:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c,onCheckedChange:l,form:u,...d}=e;return(0,Y.jsx)(Oe,{__scopeCheckbox:n,checked:i,defaultChecked:a,disabled:s,required:o,onCheckedChange:l,name:r,form:u,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Ae,{...d,ref:t,__scopeCheckbox:n}),e&&(0,Y.jsx)(Fe,{__scopeCheckbox:n})]})})},`Checkbox`)),Me=`CheckboxIndicator`,Ne=k.forwardRef(X(function(e,t){let{__scopeCheckbox:n,forceMount:r,...i}=e,a=De(Me,n);return(0,Y.jsx)(v,{present:r||$(a.checked)||a.checked===!0,children:(0,Y.jsx)(l.span,{"data-state":Le(a.checked),"data-disabled":a.disabled?``:void 0,...i,ref:t,style:{pointerEvents:`none`,...e.style}})})},`CheckboxIndicator`)),Pe=`CheckboxBubbleInput`,Fe=k.forwardRef(X(function({__scopeCheckbox:e,onClick:t,...n},r){let{control:a,hasConsumerStoppedPropagationRef:o,userInteractionCount:s,checked:c,defaultChecked:u,required:f,disabled:p,name:m,value:g,form:_,bubbleInput:v,setBubbleInput:y}=De(Pe,e),b=i(r,y),x=h(a),S=k.useRef(!1),C=k.useRef(c),w=k.useRef(s);k.useEffect(()=>{let e=v;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set,r=s!==w.current;w.current=s;let i=C.current!==c;C.current=c;let a=!(r&&o.current);if(i&&n){S.current=!r;let t=new Event(`click`,{bubbles:a});e.indeterminate=$(c),n.call(e,!$(c)&&c),e.dispatchEvent(t),S.current=!1}},[v,c,o,s]);let T=k.useRef(!$(c)&&c);return(0,Y.jsx)(l.input,{type:`checkbox`,"aria-hidden":!0,defaultChecked:u??T.current,required:f,disabled:p,name:m,value:g,form:_,...n,tabIndex:-1,ref:b,onClick:d(t,e=>{S.current&&e.stopPropagation()}),style:{...n.style,...x,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0,transform:`translateX(-100%)`}})},`CheckboxBubbleInput`));function Ie(e){return typeof e==`function`}X(Ie,`isFunction`);function $(e){return e===`indeterminate`}X($,`isIndeterminate`);function Le(e){return $(e)?`indeterminate`:e?`checked`:`unchecked`}X(Le,`getState`);function Re({className:e,...t}){return(0,Y.jsx)(je,{className:a(`peer inline-grid size-4 shrink-0 place-items-center rounded-[4px] border border-separator-strong bg-panel text-brand-contrast shadow-sm outline-none transition-colors focus-visible:border-brand focus-visible:shadow-focus disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-brand data-[state=checked]:bg-brand data-[state=indeterminate]:border-brand data-[state=indeterminate]:bg-brand`,e),"data-slot":`checkbox`,...t,children:(0,Y.jsxs)(Ne,{className:`group [&_svg]:size-3`,"data-slot":`checkbox-indicator`,children:[(0,Y.jsx)(J,{"aria-hidden":`true`,className:`group-data-[state=indeterminate]:hidden`}),(0,Y.jsx)(Se,{"aria-hidden":`true`,className:`hidden group-data-[state=indeterminate]:block`})]})})}export{q as a,ve as c,E as d,xe as i,j as l,Ce as n,G as o,J as r,K as s,Re as t,A as u};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|