Update
This commit is contained in:
1 parent
dd89d8388e
commit
994263dc45
5 files changed
+3523
-38
No files matched your search
@@ -1,8 +1,9 @@
|
|||||||

|

|
||||||
|
|
||||||
# 📦 StackPulse 
|
# 📦 StackPulse 
|
||||||
|
|
||||||
**StackPulse** ist eine kleine Web-App, die über die Portainer-API deine Docker-Stacks verwaltet und aktualisiert.
|
**StackPulse** ist eine kleine Web-App, die über die Portainer-API deine Docker-Stacks verwaltet und aktualisiert.
|
||||||
|
Aktuell funktionier StackPulse nur mit der Business-Edition von Portainer. Die Communitiy-Edition wird in einem späteren Release implementiert!
|
||||||
Sie besteht aus einem **Backend (Node.js/Express)** und einem **Frontend (React/Tailwind)**.
|
Sie besteht aus einem **Backend (Node.js/Express)** und einem **Frontend (React/Tailwind)**.
|
||||||
|
|
||||||
Ziel:
|
Ziel:
|
||||||
@@ -26,7 +27,7 @@ Ziel:
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details open>
|
||||||
<summary>✅ v0.2 – Release</summary>
|
<summary>✅ v0.2 – Release</summary>
|
||||||
|
|
||||||
### Backend
|
### Backend
|
||||||
@@ -47,55 +48,39 @@ Ziel:
|
|||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details open>
|
<details open>
|
||||||
<summary>✅ v0.3 – Abgeschlossen</summary>
|
<summary>🟡 v0.3 – In Entwicklung</summary>
|
||||||
|
|
||||||
### Backend
|
### Backend
|
||||||
- [x] Automatische Datenbereinigung: Duplikate bei Stack-IDs erkennen & entfernen
|
- [ ] Automatische Datenbereinigung: Duplikate bei Stack-IDs erkennen & entfernen
|
||||||
- [x] Erweiterung der Logs (Portainer- und Datenbereinigungsvorgänge)
|
- [ ] Erweiterung der Logs
|
||||||
- [x] API für Filter & Suche (Stacks nach Name/Status abrufen)
|
- [x] API für Filter & Suche (Stacks nach Name/Status abrufen)
|
||||||
- [x] API für Sortierung der Stacks
|
- [ ] API für Sortierung der Stacks
|
||||||
- [x] Portainer-Steuerung: Start/Stop/Update per Standardbefehl oder benutzerdefiniertem Skript
|
|
||||||
- [x] Maintenance-Modus: Stackpulse pausiert während Portainer-Update und reaktiviert sich automatisch
|
|
||||||
|
|
||||||
### Frontend
|
### Frontend
|
||||||
- [x] Filter: Stacks nach Name oder Status durchsuchen
|
- [x] Filter: Stacks nach Name oder Status durchsuchen
|
||||||
- [x] Sortierung: Stacks im Frontend sortieren
|
- [ ] Sortierung: Stacks im Frontend sortieren
|
||||||
- [x] Benachrichtigungen im UI: erfolgreicher/fehlgeschlagener Redeploy (Toast + Notification-Center)
|
- [ ] Benachrichtigungen im UI: erfolgreicher/fehlgeschlagener Redeploy (Toast + Notification-Center)
|
||||||
- [x] Visualisierung der Datenbereinigung (Konflikt/Auto-Fix Meldungen)
|
- [ ] Visualisierung der Datenbereinigung (Konflikt/Auto-Fix Meldungen)
|
||||||
- [x] UI-Komponenten für Portainer-Status & Update-Steuerung
|
|
||||||
- [x] Wartungsbereich mit Statusanzeige und Update-Aktion
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
- [x] Frontend-Filter und Sortierungen für schnellere Navigation bei vielen Stacks
|
- [ ] Frontend-Filter und Sortierungen für schnellere Navigation bei vielen Stacks
|
||||||
- [x] Echtzeit-Feedback im UI (Notifications)
|
- [ ] Echtzeit-Feedback im UI (Notifications)
|
||||||
- [x] Datenkonsistenz sichern: keine doppelten Stack-IDs mehr
|
- [ ] Datenkonsistenz sichern: keine doppelten Stack-IDs mehr
|
||||||
- [x] Portainer-Integration inkl. Update-Workflow und Maintenance-Modus
|
|
||||||
- [x] Verbesserte Nachvollziehbarkeit aller automatischen Prozesse
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details open>
|
<details>
|
||||||
<summary>🔮 v0.4 – Geplant</summary>
|
<summary>🔮 Geplante Features (v0.4+)</summary>
|
||||||
|
|
||||||
### Backend
|
- Notifications (z. B. via Webhooks oder Mail)
|
||||||
- [ ] Zugriffsschutz für Endpunkte (nur authentifizierte Nutzer)
|
- Authentifizierung & Benutzerverwaltung
|
||||||
- [ ] Benutzerverwaltung in SQLite (Username + Passwort speichern)
|
- Monitoring (Status, CPU/RAM)
|
||||||
- [ ] Passwort-Hashing mit bcrypt oder ähnlichem Verfahren
|
- Verbesserte UI/UX
|
||||||
- [ ] Basic Auth Middleware (HTTP-Header-basierte Authentifizierung)
|
- Export/Import von Scheduler-Jobs (z. B. JSON)
|
||||||
- [ ] Session/Token-Verwaltung nach Login
|
- Health-Checks nach Redeploy (automatisierte Tests, Statusprüfung)
|
||||||
|
- Integration Community Edition
|
||||||
|
|
||||||
### Frontend
|
</details>
|
||||||
- [ ] Settings Page: UI-Komponenten für grundlegende Einstellungen
|
|
||||||
- [ ] Login-Formular für Username + Passwort
|
|
||||||
- [ ] UI-Sichtbarkeit abhängig vom Login (nur eingeloggte Nutzer sehen Redeploy- und Stack-Funktionen)
|
|
||||||
- [ ] Fehleranzeige bei falschem Login (UI-Feedback)
|
|
||||||
|
|
||||||
### Features
|
|
||||||
- [ ] Benutzer-Authentifizierungssystem mit sicherem Login
|
|
||||||
- [ ] Zugriffsbeschränkung auf kritische Funktionen
|
|
||||||
- [ ] Einstellungsseite für zukünftige Systemkonfigurationen
|
|
||||||
- [ ] Verbesserte Sicherheit & Session-Handling
|
|
||||||
- [ ] Grundlage für Multi-User-Management
|
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(33 150 243 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(33 150 243 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#eee}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Roboto,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#bdbdbd}input::placeholder,textarea::placeholder{opacity:1;color:#bdbdbd}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 540px){.container{max-width:540px}}@media (min-width: 720px){.container{max-width:720px}}@media (min-width: 960px){.container{max-width:960px}}@media (min-width: 1140px){.container{max-width:1140px}}@media (min-width: 1320px){.container{max-width:1320px}}.pointer-events-none{pointer-eLine truncated
|
||||||
+87
@@ -0,0 +1,87 @@
|
|||||||
|
function hR(e,t){for(var r=0;r<t.length;r++){const n=t[r];if(typeof n!="string"&&!Array.isArray(n)){for(const o in n)if(o!=="default"&&!(o in e)){const a=Object.getOwnPropertyDescriptor(n,o);a&&Object.defineProperty(e,o,a.get?a:{enumerable:!0,get:()=>n[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const i of a.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(o){if(o.ep)return;o.ep=!0;const a=r(o);fetch(o.href,a)}})();function gx(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ws(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var r=function n(){return this instanceof n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}),r}var hx={exports:{}},dd={},bx={exports:{}},Ze={};/**
|
||||||
|
* @license React
|
||||||
|
* react.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/var xs=Symbol.for("react.element"),bR=Symbol.for("react.portal"),vR=Symbol.for("react.fragment"),mR=Symbol.for("react.strict_mode"),yR=Symbol.for("react.profiler"),wR=Symbol.for("react.provider"),xR=Symbol.for("react.context"),_R=Symbol.for("react.forward_ref"),TR=Symbol.for("react.suspense"),CR=Symbol.for("react.memo"),OR=Symbol.for("react.lazy"),Tm=Symbol.iterator;function SR(e){return e===null||typeof e!="object"?null:(e=Tm&&e[Tm]||e["@@iterator"],typeof e=="function"?e:null)}var vx={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},mx=Object.assign,yx={};function Ei(e,t,r){this.props=e,this.context=t,this.refs=yx,this.updater=r||vx}Ei.prototype.isReactComponent={};Ei.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Ei.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function wx(){}wx.prototype=Ei.prototype;function xg(e,t,r){this.props=e,this.context=t,this.refs=yx,this.updater=r||vx}var _g=xg.prototype=new wx;_g.constructor=xg;mx(_g,Ei.prototype);_g.isPureReactComponent=!0;var Cm=Array.isArray,xx=Object.prototype.hasOwnProperty,Tg={current:null},_x={key:!0,ref:!0,__self:!0,__source:!0};function Tx(e,t,r){var n,o={},a=null,i=null;if(t!=null)for(n in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(a=""+t.key),t)xx.call(t,n)&&!_x.hasOwnProperty(n)&&(o[n]=t[n]);var d=arguments.length-2;if(d===1)o.children=r;else if(1<d){for(var p=Array(d),h=0;h<d;h++)p[h]=arguments[h+2];o.children=p}if(e&&e.defaultProps)for(n in d=e.defaultProps,d)o[n]===void 0&&(o[n]=d[n]);return{$$typeof:xs,type:e,key:a,ref:i,props:o,_owner:Tg.current}}function PR(e,t){return{$$typeof:xs,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function Cg(e){return typeof e=="object"&&e!==null&&e.$$typeof===xs}function kR(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var Om=/\/+/g;function qf(e,t){return typeof e=="object"&&e!==null&&e.key!=null?kR(""+e.key):t.toString(36)}function Lu(e,t,r,n,o){var a=typeof e;(a==="undefined"||a==="boolean")&&(e=null);var i=!1;if(e===null)i=!0;else switch(a){case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case xs:case bR:i=!0}}if(i)return i=e,o=o(i),e=n===""?"."+qf(i,0):n,Cm(o)?(r="",e!=null&&(r=e.replace(Om,"$&/")+"/"),Lu(o,t,r,"",function(h){return h})):o!=null&&(Cg(o)&&(o=PR(o,r+(!o.key||i&&i.key===o.key?"":(""+o.key).replace(Om,"$&/")+"/")+e)),t.push(o)),1;if(i=0,n=n===""?".":n+":",Cm(e))for(var d=0;d<e.length;d++){a=e[d];var p=n+qf(a,d);i+=Lu(a,t,r,p,o)}else if(p=SR(e),typeof p=="function")for(e=p.call(e),d=0;!(a=e.next()).done;)a=a.value,p=n+qf(a,d++),i+=Lu(a,t,r,p,o);else if(a==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return i}function lu(e,t,r){if(e==null)return e;var n=[],o=0;return Lu(e,n,"","",function(a){return t.call(r,a,o++)}),n}function ER(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(r){(e._status===0||e._status===-1)&&(e._status=1,e._result=r)},function(r){(e._status===0||e._status===-1)&&(e._status=2,e._result=r)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var _r={current:null},Du={transition:null},RR={ReactCurrentDispatcher:_r,ReactCurrentBatchConfig:Du,ReactCurrentOwner:Tg};function Cx(){throw Error("act(...) is not supported in production builds of React.")}Ze.Children={map:lu,forEach:function(e,t,r){lu(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return lu(e,function(){t++}),t},toArray:function(e){return lu(e,function(t){return t})||[]},only:function(e){if(!Cg(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};Ze.Component=Ei;Ze.Fragment=vR;Ze.Profiler=yR;Ze.PureComponent=xg;Ze.StrictMode=mR;Ze.Suspense=TR;Ze.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=RR;Ze.act=Cx;Ze.cloneElement=function(e,t,r){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var n=mx({},e.props),o=e.key,a=e.ref,i=e._owner;if(t!=null){if(t.ref!==void 0&&(a=t.ref,i=Tg.current),t.key!==void 0&&(o=""+t.key),e.type&&e.type.defaultProps)var d=e.type.defaultProps;for(p in t)xx.call(t,p)&&!_x.hasOwnProperty(p)&&(n[p]=t[p]===void 0&&d!==void 0?d[p]:t[p])}var p=arguments.length-2;if(p===1)n.children=r;else if(1<p){d=Array(p);for(var h=0;h<p;h++)d[h]=arguments[h+2];n.children=d}return{$$typeof:xs,type:e.type,key:o,ref:a,props:n,_owner:i}};Ze.createContext=function(e){return e={$$typeof:xR,_currentValue:e,_currentValue2:e,_threadCountLine truncated
|
||||||
|
* @license React
|
||||||
|
* react-jsx-runtime.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/var NR=j,jR=Symbol.for("react.element"),MR=Symbol.for("react.fragment"),AR=Object.prototype.hasOwnProperty,IR=NR.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,LR={key:!0,ref:!0,__self:!0,__source:!0};function Sx(e,t,r){var n,o={},a=null,i=null;r!==void 0&&(a=""+r),t.key!==void 0&&(a=""+t.key),t.ref!==void 0&&(i=t.ref);for(n in t)AR.call(t,n)&&!LR.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps,t)o[n]===void 0&&(o[n]=t[n]);return{$$typeof:jR,type:e,key:a,ref:i,props:o,_owner:IR.current}}dd.Fragment=MR;dd.jsx=Sx;dd.jsxs=Sx;hx.exports=dd;var F=hx.exports,$p={},Px={exports:{}},$r={},kx={exports:{}},Ex={};/**
|
||||||
|
* @license React
|
||||||
|
* scheduler.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/(function(e){function t(H,B){var q=H.length;H.push(B);e:for(;0<q;){var Y=q-1>>>1,ee=H[Y];if(0<o(ee,B))H[Y]=B,H[q]=ee,q=Y;else break e}}function r(H){return H.length===0?null:H[0]}function n(H){if(H.length===0)return null;var B=H[0],q=H.pop();if(q!==B){H[0]=q;e:for(var Y=0,ee=H.length,ae=ee>>>1;Y<ae;){var ie=2*(Y+1)-1,se=H[ie],te=ie+1,ge=H[te];if(0>o(se,q))te<ee&&0>o(ge,se)?(H[Y]=ge,H[te]=q,Y=te):(H[Y]=se,H[ie]=q,Y=ie);else if(te<ee&&0>o(ge,q))H[Y]=ge,H[te]=q,Y=te;else break e}}return B}function o(H,B){var q=H.sortIndex-B.sortIndex;return q!==0?q:H.id-B.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var i=Date,d=i.now();e.unstable_now=function(){return i.now()-d}}var p=[],h=[],b=1,_=null,O=3,C=!1,T=!1,y=!1,m=typeof setTimeout=="function"?setTimeout:null,c=typeof clearTimeout=="function"?clearTimeout:null,l=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function s(H){for(var B=r(h);B!==null;){if(B.callback===null)n(h);else if(B.startTime<=H)n(h),B.sortIndex=B.expirationTime,t(p,B);else break;B=r(h)}}function u(H){if(y=!1,s(H),!T)if(r(p)!==null)T=!0,G(g);else{var B=r(h);B!==null&&X(u,B.startTime-H)}}function g(H,B){T=!1,y&&(y=!1,c(E),E=-1),C=!0;var q=O;try{for(s(B),_=r(p);_!==null&&(!(_.expirationTime>B)||H&&!N());){var Y=_.callback;if(typeof Y=="function"){_.callback=null,O=_.priorityLevel;var ee=Y(_.expirationTime<=B);B=e.unstable_now(),typeof ee=="function"?_.callback=ee:_===r(p)&&n(p),s(B)}else n(p);_=r(p)}if(_!==null)var ae=!0;else{var ie=r(h);ie!==null&&X(u,ie.startTime-B),ae=!1}return ae}finally{_=null,O=q,C=!1}}var v=!1,x=null,E=-1,k=5,P=-1;function N(){return!(e.unstable_now()-P<k)}function M(){if(x!==null){var H=e.unstable_now();P=H;var B=!0;try{B=x(!0,H)}finally{B?I():(v=!1,x=null)}}else v=!1}var I;if(typeof l=="function")I=function(){l(M)};else if(typeof MessageChannel<"u"){var L=new MessageChannel,W=L.port2;L.port1.onmessage=M,I=function(){W.postMessage(null)}}else I=function(){m(M,0)};function G(H){x=H,v||(v=!0,I())}function X(H,B){E=m(function(){H(e.unstable_now())},B)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(H){H.callback=null},e.unstable_continueExecution=function(){T||C||(T=!0,G(g))},e.unstable_forceFrameRate=function(H){0>H||125<H?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):k=0<H?Math.floor(1e3/H):5},e.unstable_getCurrentPriorityLevel=function(){return O},e.unstable_getFirstCallbackNode=function(){return r(p)},e.unstable_next=function(H){switch(O){case 1:case 2:case 3:var B=3;break;default:B=O}var q=O;O=B;try{return H()}finally{O=q}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(H,B){switch(H){case 1:case 2:case 3:case 4:case 5:break;default:H=3}var q=O;O=H;try{return B()}finally{O=q}},e.unstable_scheduleCallback=function(H,B,q){var Y=e.unstable_now();switch(typeof q=="object"&&q!==null?(q=q.delay,q=typeof q=="number"&&0<q?Y+q:Y):q=Y,H){case 1:var ee=-1;break;case 2:ee=250;break;case 5:ee=1073741823;break;case 4:ee=1e4;break;default:ee=5e3}return ee=q+ee,H={id:b++,callback:B,priorityLevel:H,startTime:q,expirationTime:ee,sortIndex:-1},q>Y?(H.sortIndex=q,t(h,H),r(p)===null&&H===r(h)&&(y?(c(E),E=-1):y=!0,X(u,q-Y))):(H.sortIndex=ee,t(p,H),T||C||(T=!0,G(g))),H},e.unstable_shouldYield=N,e.unstable_wrapCallback=function(H){var B=O;return function(){var q=O;O=B;try{return H.apply(this,arguments)}finally{O=q}}}})(Ex);kx.exports=Ex;var DR=kx.exports;/**
|
||||||
|
* @license React
|
||||||
|
* react-dom.production.min.js
|
||||||
|
*
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/var FR=j,Ur=DR;function ye(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var Rx=new Set,ql={};function Ca(e,t){pi(e,t),pi(e+"Capture",t)}function pi(e,t){for(ql[e]=t,e=0;e<t.length;e++)Rx.add(t[e])}var to=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),qp=Object.prototype.hasOwnProperty,VR=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Sm={},Pm={};function zR(e){return qp.call(Pm,e)?!0:qp.call(Sm,e)?!1:VR.test(e)?Pm[e]=!0:(Sm[e]=!0,!1)}function BR(e,t,r,n){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function WR(e,t,r,n){if(t===null||typeof t>"u"||BR(e,t,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Tr(e,t,r,n,o,a,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var ar={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ar[e]=new Tr(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ar[t]=new Tr(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ar[e]=new Tr(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ar[e]=new Tr(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ar[e]=new Tr(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ar[e]=new Tr(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ar[e]=new Tr(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ar[e]=new Tr(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ar[e]=new Tr(e,5,!1,e.toLowerCase(),null,!1,!1)});var Sg=/[\-:]([a-z])/g;function Pg(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Sg,Pg);ar[t]=new Tr(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Sg,Pg);ar[t]=new Tr(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Sg,Pg);ar[t]=new Tr(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ar[e]=new Tr(e,1,!1,e.toLowerCase(),null,!1,!1)});ar.xlinkHref=new Tr("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ar[e]=new Tr(e,1,!1,e.toLowerCase(),null,!0,!0)});function kg(e,t,r,n){var o=ar.hasOwnProperty(t)?ar[t]:null;(o!==null?o.type!==0:n||!(2<t.length)||t[0]!=="o"&&t[0]!==
Line truncated
|
||||||
|
`+Kf+e}var Gf=!1;function Yf(e,t){if(!e||Gf)return"";Gf=!0;var r=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(t,[])}catch(h){var n=h}Reflect.construct(e,[],t)}else{try{t.call()}catch(h){n=h}e.call(t.prototype)}else{try{throw Error()}catch(h){n=h}e()}}catch(h){if(h&&n&&typeof h.stack=="string"){for(var o=h.stack.split(`
|
||||||
|
`),a=n.stack.split(`
|
||||||
|
`),i=o.length-1,d=a.length-1;1<=i&&0<=d&&o[i]!==a[d];)d--;for(;1<=i&&0<=d;i--,d--)if(o[i]!==a[d]){if(i!==1||d!==1)do if(i--,d--,0>d||o[i]!==a[d]){var p=`
|
||||||
|
`+o[i].replace(" at new "," at ");return e.displayName&&p.includes("<anonymous>")&&(p=p.replace("<anonymous>",e.displayName)),p}while(1<=i&&0<=d);break}}}finally{Gf=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Cl(e):""}function UR(e){switch(e.tag){case 5:return Cl(e.type);case 16:return Cl("Lazy");case 13:return Cl("Suspense");case 19:return Cl("SuspenseList");case 0:case 2:case 15:return e=Yf(e.type,!1),e;case 11:return e=Yf(e.type.render,!1),e;case 1:return e=Yf(e.type,!0),e;default:return""}}function Xp(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Ua:return"Fragment";case Wa:return"Portal";case Kp:return"Profiler";case Eg:return"StrictMode";case Gp:return"Suspense";case Yp:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case jx:return(e.displayName||"Context")+".Consumer";case Nx:return(e._context.displayName||"Context")+".Provider";case Rg:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ng:return t=e.displayName||null,t!==null?t:Xp(e.type)||"Memo";case To:t=e._payload,e=e._init;try{return Xp(e(t))}catch{}}return null}function HR(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Xp(t);case 8:return t===Eg?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Wo(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ax(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function $R(e){var t=Ax(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var o=r.get,a=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){n=""+i,a.call(this,i)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(i){n=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function uu(e){e._valueTracker||(e._valueTracker=$R(e))}function Ix(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=Ax(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function gc(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Qp(e,t){var r=t.checked;return jt({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function Em(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=Wo(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Lx(e,t){t=t.checked,t!=null&&kg(e,"checked",t,!1)}function Zp(e,t){Lx(e,t);var r=Wo(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Jp(e,t.type,r):t.hasOwnProperty("defaultValue")&&Jp(e,t.type,Wo(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Rm(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function Jp(e,t,r){(t!=="number"||gc(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var Ol=Array.isArray;function ri(e,t,r,n){if(e=e.options,t){t={};for(var o=0;o<r.length;o++)t["$"+r[o]]=!0;for(r=0;r<e.length;r++)o=t.hasOwnProperty("$"+e[r].value),e[r].selected!==o&&(e[r].selected=o),o&&n&&(e[r].defaultSelected=!0)}else{for(r=""+Wo(r),t=null,o=0;o<e.length;o++){if(e[o].value===r){e[o].selected=!0,n&&(e[o].defaultSelected=!0);return}t!==null||e[o].disabled||(t=e[o])}t!==null&&(t.selected=!0)}}function e0(e,t){if(t.dan
Line truncated
|
||||||
|
`).replace(tj,"")}function vu(e,t,r){if(t=Jm(t),Jm(e)!==t&&r)throw Error(ye(425))}function _c(){}var p0=null,g0=null;function h0(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var b0=typeof setTimeout=="function"?setTimeout:void 0,rj=typeof clearTimeout=="function"?clearTimeout:void 0,ey=typeof Promise=="function"?Promise:void 0,nj=typeof queueMicrotask=="function"?queueMicrotask:typeof ey<"u"?function(e){return ey.resolve(null).then(e).catch(oj)}:b0;function oj(e){setTimeout(function(){throw e})}function sp(e,t){var r=t,n=0;do{var o=r.nextSibling;if(e.removeChild(r),o&&o.nodeType===8)if(r=o.data,r==="/$"){if(n===0){e.removeChild(o),Ql(t);return}n--}else r!=="$"&&r!=="$?"&&r!=="$!"||n++;r=o}while(r);Ql(t)}function Ao(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?")break;if(t==="/$")return null}}return e}function ty(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var r=e.data;if(r==="$"||r==="$!"||r==="$?"){if(t===0)return e;t--}else r==="/$"&&t++}e=e.previousSibling}return null}var Ni=Math.random().toString(36).slice(2),Ln="__reactFiber$"+Ni,rs="__reactProps$"+Ni,ro="__reactContainer$"+Ni,v0="__reactEvents$"+Ni,aj="__reactListeners$"+Ni,ij="__reactHandles$"+Ni;function ia(e){var t=e[Ln];if(t)return t;for(var r=e.parentNode;r;){if(t=r[ro]||r[Ln]){if(r=t.alternate,t.child!==null||r!==null&&r.child!==null)for(e=ty(e);e!==null;){if(r=e[Ln])return r;e=ty(e)}return t}e=r,r=e.parentNode}return null}function Cs(e){return e=e[Ln]||e[ro],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Ka(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(ye(33))}function bd(e){return e[rs]||null}var m0=[],Ga=-1;function qo(e){return{current:e}}function xt(e){0>Ga||(e.current=m0[Ga],m0[Ga]=null,Ga--)}function vt(e,t){Ga++,m0[Ga]=e.current,e.current=t}var Uo={},br=qo(Uo),Nr=qo(!1),ga=Uo;function gi(e,t){var r=e.type.contextTypes;if(!r)return Uo;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var o={},a;for(a in r)o[a]=t[a];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function jr(e){return e=e.childContextTypes,e!=null}function Tc(){xt(Nr),xt(br)}function ry(e,t,r){if(br.current!==Uo)throw Error(ye(168));vt(br,t),vt(Nr,r)}function C_(e,t,r){var n=e.stateNode;if(t=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var o in n)if(!(o in t))throw Error(ye(108,HR(e)||"Unknown",o));return jt({},r,n)}function Cc(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Uo,ga=br.current,vt(br,e),vt(Nr,Nr.current),!0}function ny(e,t,r){var n=e.stateNode;if(!n)throw Error(ye(169));r?(e=C_(e,t,ga),n.__reactInternalMemoizedMergedChildContext=e,xt(Nr),xt(br),vt(br,e)):xt(Nr),vt(Nr,r)}var Yn=null,vd=!1,up=!1;function O_(e){Yn===null?Yn=[e]:Yn.push(e)}function lj(e){vd=!0,O_(e)}function Ko(){if(!up&&Yn!==null){up=!0;var e=0,t=ut;try{var r=Yn;for(ut=1;e<r.length;e++){var n=r[e];do n=n(!0);while(n!==null)}Yn=null,vd=!1}catch(o){throw Yn!==null&&(Yn=Yn.slice(e+1)),Xx(Mg,Ko),o}finally{ut=t,up=!1}}return null}var Ya=[],Xa=0,Oc=null,Sc=0,Zr=[],Jr=0,ha=null,Xn=1,Qn="";function oa(e,t){Ya[Xa++]=Sc,Ya[Xa++]=Oc,Oc=e,Sc=t}function S_(e,t,r){Zr[Jr++]=Xn,Zr[Jr++]=Qn,Zr[Jr++]=ha,ha=e;var n=Xn;e=Qn;var o=32-mn(n)-1;n&=~(1<<o),r+=1;var a=32-mn(t)+o;if(30<a){var i=o-o%5;a=(n&(1<<i)-1).toString(32),n>>=i,o-=i,Xn=1<<32-mn(t)+o|r<<o|n,Qn=a+e}else Xn=1<<a|r<<o|n,Qn=e}function Wg(e){e.return!==null&&(oa(e,1),S_(e,1,0))}function Ug(e){for(;e===Oc;)Oc=Ya[--Xa],Ya[Xa]=null,Sc=Ya[--Xa],Ya[Xa]=null;for(;e===ha;)ha=Zr[--Jr],Zr[Jr]=null,Qn=Zr[--Jr],Zr[Jr]=null,Xn=Zr[--Jr],Zr[Jr]=null}var Br=null,zr=null,Ot=!1,hn=null;function P_(e,t){var r=tn(5,null,null,0);r.elementType="DELETED",r.stateNode=t,r.return=e,t=e.deletions,t===null?(e.deletions=[r],e.flags|=16):t.push(r)}function oy(e,t){switch(e.tag){case 5:var r=e.type;return t=t.nodeType!==1||r.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,Br=e,zr=Ao(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,Br=e,zr=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(r=ha!==null?{id:Xn,overflow:Qn}:null,e.memoizedState={dehydrated:t,treeContext:r,retryLane:1073741824},r=tn(18,null,null,0),r.stateNode=t,r.return=e,e.child=r,Br=e,zr=null,!0):!1;default:return!1}}function y0(e){return(e.mode&1)!==0&&(e.flags&128)===0}function w0(e){if(Ot){var t=zr;if(t){var r=t;if(!oy(e,t)){if(y0(e))throw Error(ye(418));t=Ao(r.nextSibling);var n=Br;t&&oy(e,t)?P_(n,r):(e.flags=e.flags&-4097|2,Ot=!1,Br=e)}}else{if(y0(e))throw Error(ye(418));e.flags=e.flags&-4097|2,Ot=!1,Br=e}}}function ay(e){
Line truncated
|
||||||
|
Error generating stack: `+a.message+`
|
||||||
|
`+a.stack}return{value:e,source:t,stack:o,digest:null}}function gp(e,t,r){return{value:e,source:null,stack:r??null,digest:t??null}}function C0(e,t){try{console.error(t.value)}catch(r){setTimeout(function(){throw r})}}var bj=typeof WeakMap=="function"?WeakMap:Map;function e5(e,t,r){r=Zn(-1,r),r.tag=3,r.payload={element:null};var n=t.value;return r.callback=function(){Ac||(Ac=!0,A0=n),C0(e,t)},r}function t5(e,t,r){r=Zn(-1,r),r.tag=3;var n=e.type.getDerivedStateFromError;if(typeof n=="function"){var o=t.value;r.payload=function(){return n(o)},r.callback=function(){C0(e,t)}}var a=e.stateNode;return a!==null&&typeof a.componentDidCatch=="function"&&(r.callback=function(){C0(e,t),typeof n!="function"&&(Lo===null?Lo=new Set([this]):Lo.add(this));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),r}function py(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new bj;var o=new Set;n.set(t,o)}else o=n.get(t),o===void 0&&(o=new Set,n.set(t,o));o.has(r)||(o.add(r),e=Rj.bind(null,e,t,r),t.then(e,e))}function gy(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function hy(e,t,r,n,o){return e.mode&1?(e.flags|=65536,e.lanes=o,e):(e===t?e.flags|=65536:(e.flags|=128,r.flags|=131072,r.flags&=-52805,r.tag===1&&(r.alternate===null?r.tag=17:(t=Zn(-1,1),t.tag=2,Io(r,t,1))),r.lanes|=1),e)}var vj=lo.ReactCurrentOwner,Er=!1;function wr(e,t,r,n){t.child=e===null?R_(t,null,r,n):bi(t,e.child,r,n)}function by(e,t,r,n,o){r=r.render;var a=t.ref;return ii(t,o),n=eh(e,t,r,n,a,o),r=th(),e!==null&&!Er?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,oo(e,t,o)):(Ot&&r&&Wg(t),t.flags|=1,wr(e,t,n,o),t.child)}function vy(e,t,r,n,o){if(e===null){var a=r.type;return typeof a=="function"&&!dh(a)&&a.defaultProps===void 0&&r.compare===null&&r.defaultProps===void 0?(t.tag=15,t.type=a,r5(e,t,a,n,o)):(e=Ku(r.type,null,n,t,t.mode,o),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,!(e.lanes&o)){var i=a.memoizedProps;if(r=r.compare,r=r!==null?r:Jl,r(i,n)&&e.ref===t.ref)return oo(e,t,o)}return t.flags|=1,e=Fo(a,n),e.ref=t.ref,e.return=t,t.child=e}function r5(e,t,r,n,o){if(e!==null){var a=e.memoizedProps;if(Jl(a,n)&&e.ref===t.ref)if(Er=!1,t.pendingProps=n=a,(e.lanes&o)!==0)e.flags&131072&&(Er=!0);else return t.lanes=e.lanes,oo(e,t,o)}return O0(e,t,r,n,o)}function n5(e,t,r){var n=t.pendingProps,o=n.children,a=e!==null?e.memoizedState:null;if(n.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},vt(Ja,Vr),Vr|=r;else{if(!(r&1073741824))return e=a!==null?a.baseLanes|r:r,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,vt(Ja,Vr),Vr|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},n=a!==null?a.baseLanes:r,vt(Ja,Vr),Vr|=n}else a!==null?(n=a.baseLanes|r,t.memoizedState=null):n=r,vt(Ja,Vr),Vr|=n;return wr(e,t,o,r),t.child}function o5(e,t){var r=t.ref;(e===null&&r!==null||e!==null&&e.ref!==r)&&(t.flags|=512,t.flags|=2097152)}function O0(e,t,r,n,o){var a=jr(r)?ga:br.current;return a=gi(t,a),ii(t,o),r=eh(e,t,r,n,a,o),n=th(),e!==null&&!Er?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,oo(e,t,o)):(Ot&&n&&Wg(t),t.flags|=1,wr(e,t,r,o),t.child)}function my(e,t,r,n,o){if(jr(r)){var a=!0;Cc(t)}else a=!1;if(ii(t,o),t.stateNode===null)Hu(e,t),J_(t,r,n),T0(t,r,n,o),n=!0;else if(e===null){var i=t.stateNode,d=t.memoizedProps;i.props=d;var p=i.context,h=r.contextType;typeof h=="object"&&h!==null?h=an(h):(h=jr(r)?ga:br.current,h=gi(t,h));var b=r.getDerivedStateFromProps,_=typeof b=="function"||typeof i.getSnapshotBeforeUpdate=="function";_||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(d!==n||p!==h)&&fy(t,i,n,h),Co=!1;var O=t.memoizedState;i.state=O,Ec(t,n,i,o),p=t.memoizedState,d!==n||O!==p||Nr.current||Co?(typeof b=="function"&&(_0(t,r,b,n),p=t.memoizedState),(d=Co||dy(t,r,d,n,O,p,h))?(_||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=n,t.memoizedState=p),i.props=n,i.state=p,i.context=h,n=d):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),n=!1)}else{i=t.stateNode,j_(e,t),d=t.memoizedProps,h=t.type===t.elementType?d:fn(t.type,d),i.props=h,_=t.pendingProps,O=i.context,p=r.contextType,typeof p=="object"&&p!==null?p=an(p):(p=jr(r)?ga:br.current,p=gi(t,p));var C=r.getDerivedStateFromProps;(b=typeof C=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(d!==_||O!==p)&&fy(t,i,n,p),Co=!1,O=t.memoizedState,i.state=O,Ec(t,n,i,o);var T=t.memoizedS
Line truncated
|
||||||
|
* @remix-run/router v1.23.0
|
||||||
|
*
|
||||||
|
* Copyright (c) Remix Software Inc.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE.md file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
* @license MIT
|
||||||
|
*/function us(){return us=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},us.apply(this,arguments)}var Ro;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(Ro||(Ro={}));const jy="popstate";function Bj(e){e===void 0&&(e={});function t(n,o){let{pathname:a,search:i,hash:d}=n.location;return F0("",{pathname:a,search:i,hash:d},o.state&&o.state.usr||null,o.state&&o.state.key||"default")}function r(n,o){return typeof o=="string"?o:Fc(o)}return Uj(t,r,null,e)}function Lt(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function k5(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Wj(){return Math.random().toString(36).substr(2,8)}function My(e,t){return{usr:e.state,key:e.key,idx:t}}function F0(e,t,r,n){return r===void 0&&(r=null),us({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?ji(t):t,{state:r,key:t&&t.key||n||Wj()})}function Fc(e){let{pathname:t="/",search:r="",hash:n=""}=e;return r&&r!=="?"&&(t+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function ji(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}function Uj(e,t,r,n){n===void 0&&(n={});let{window:o=document.defaultView,v5Compat:a=!1}=n,i=o.history,d=Ro.Pop,p=null,h=b();h==null&&(h=0,i.replaceState(us({},i.state,{idx:h}),""));function b(){return(i.state||{idx:null}).idx}function _(){d=Ro.Pop;let m=b(),c=m==null?null:m-h;h=m,p&&p({action:d,location:y.location,delta:c})}function O(m,c){d=Ro.Push;let l=F0(y.location,m,c);r&&r(l,m),h=b()+1;let s=My(l,h),u=y.createHref(l);try{i.pushState(s,"",u)}catch(g){if(g instanceof DOMException&&g.name==="DataCloneError")throw g;o.location.assign(u)}a&&p&&p({action:d,location:y.location,delta:1})}function C(m,c){d=Ro.Replace;let l=F0(y.location,m,c);r&&r(l,m),h=b();let s=My(l,h),u=y.createHref(l);i.replaceState(s,"",u),a&&p&&p({action:d,location:y.location,delta:0})}function T(m){let c=o.location.origin!=="null"?o.location.origin:o.location.href,l=typeof m=="string"?m:Fc(m);return l=l.replace(/ $/,"%20"),Lt(c,"No window.location.(origin|href) available to create URL for href: "+l),new URL(l,c)}let y={get action(){return d},get location(){return e(o,i)},listen(m){if(p)throw new Error("A history only accepts one active listener");return o.addEventListener(jy,_),p=m,()=>{o.removeEventListener(jy,_),p=null}},createHref(m){return t(o,m)},createURL:T,encodeLocation(m){let c=T(m);return{pathname:c.pathname,search:c.search,hash:c.hash}},push:O,replace:C,go(m){return i.go(m)}};return y}var Ay;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Ay||(Ay={}));function Hj(e,t,r){return r===void 0&&(r="/"),$j(e,t,r,!1)}function $j(e,t,r,n){let o=typeof t=="string"?ji(t):t,a=wi(o.pathname||"/",r);if(a==null)return null;let i=E5(e);qj(i);let d=null;for(let p=0;d==null&&p<i.length;++p){let h=nM(a);d=tM(i[p],h,n)}return d}function E5(e,t,r,n){t===void 0&&(t=[]),r===void 0&&(r=[]),n===void 0&&(n="");let o=(a,i,d)=>{let p={relativePath:d===void 0?a.path||"":d,caseSensitive:a.caseSensitive===!0,childrenIndex:i,route:a};p.relativePath.startsWith("/")&&(Lt(p.relativePath.startsWith(n),'Absolute route path "'+p.relativePath+'" nested under path '+('"'+n+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),p.relativePath=p.relativePath.slice(n.length));let h=Vo([n,p.relativePath]),b=r.concat(p);a.children&&a.children.length>0&&(Lt(a.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+h+'".')),E5(a.children,t,b,h)),!(a.path==null&&!a.index)&&t.push({path:h,score:Jj(h,a.index),routesMeta:b})};return e.forEach((a,i)=>{var d;if(a.path===""||!((d=a.path)!=null&&d.includes("?")))o(a,i);else for(let p of R5(a.path))o(a,i,p)}),t}function R5(e){let t=e.split("/");if(t.length===0)return[];let[r,...n]=t,o=r.endsWith("?"),a=r.replace(/\?$/,"");if(n.length===0)return o?[a,""]:[a];let i=R5(n.join("/")),d=[];return d.push(...i.map(p=>p===""?a:[a,p].join("/"))),o&&d.push(...i),d.map(p=>e.startsWith("/")&&p===""?"/":p)}function qj(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:eM(t.routesMeta.map(n=>n.childrenIndex),r.routesMeta.map(n=>n.childrenIndex)))}const Kj=/^:[\w-]+$/,Gj=3,Yj=2,Xj=1,Qj=10,Zj=-2,Iy=e=>e==="*";function Jj(e,t){let r=e.split("/"),n=r.length;return r.some(Iy)&&(n+=Zj),t&&(n+=Yj),r.filter(o=>!Iy(o)).reduce((o,a)=>o+(Kj.test(a)?Gj:a===""?Xj:Qj),n)}function eM(e,t){return e.length===t.length&&e.slice(0,-1).every((n,o)=>n===t[o])?e[e.length-1]-t[t.length-1]:0}function tM(e,t,r){r===void 0&&(r=!1);let{routesMeta:n}=e,o={},a="/",i=[];for(let d=0;d<n.length;++d){let p=n[d],h=d===n.length-1,b=a==="/"?t:t.slice(a.length)||"/",_=VcLine truncated
|
||||||
|
* React Router v6.30.1
|
||||||
|
*
|
||||||
|
* Copyright (c) Remix Software Inc.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE.md file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
* @license MIT
|
||||||
|
*/function cs(){return cs=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},cs.apply(this,arguments)}const Pd=j.createContext(null),A5=j.createContext(null),Go=j.createContext(null),kd=j.createContext(null),Sa=j.createContext({outlet:null,matches:[],isDataRoute:!1}),I5=j.createContext(null);function fM(e,t){let{relative:r}=t===void 0?{}:t;Ss()||Lt(!1);let{basename:n,navigator:o}=j.useContext(Go),{hash:a,pathname:i,search:d}=Ed(e,{relative:r}),p=i;return n!=="/"&&(p=i==="/"?n:Vo([n,i])),o.createHref({pathname:p,search:d,hash:a})}function Ss(){return j.useContext(kd)!=null}function Mi(){return Ss()||Lt(!1),j.useContext(kd).location}function L5(e){j.useContext(Go).static||j.useLayoutEffect(e)}function pM(){let{isDataRoute:e}=j.useContext(Sa);return e?SM():gM()}function gM(){Ss()||Lt(!1);let e=j.useContext(Pd),{basename:t,future:r,navigator:n}=j.useContext(Go),{matches:o}=j.useContext(Sa),{pathname:a}=Mi(),i=JSON.stringify(N5(o,r.v7_relativeSplatPath)),d=j.useRef(!1);return L5(()=>{d.current=!0}),j.useCallback(function(h,b){if(b===void 0&&(b={}),!d.current)return;if(typeof h=="number"){n.go(h);return}let _=j5(h,JSON.parse(i),a,b.relative==="path");e==null&&t!=="/"&&(_.pathname=_.pathname==="/"?t:Vo([t,_.pathname])),(b.replace?n.replace:n.push)(_,b.state,b)},[t,n,i,a,e])}function Ed(e,t){let{relative:r}=t===void 0?{}:t,{future:n}=j.useContext(Go),{matches:o}=j.useContext(Sa),{pathname:a}=Mi(),i=JSON.stringify(N5(o,n.v7_relativeSplatPath));return j.useMemo(()=>j5(e,JSON.parse(i),a,r==="path"),[e,i,a,r])}function hM(e,t){return bM(e,t)}function bM(e,t,r,n){Ss()||Lt(!1);let{navigator:o}=j.useContext(Go),{matches:a}=j.useContext(Sa),i=a[a.length-1],d=i?i.params:{};i&&i.pathname;let p=i?i.pathnameBase:"/";i&&i.route;let h=Mi(),b;if(t){var _;let m=typeof t=="string"?ji(t):t;p==="/"||(_=m.pathname)!=null&&_.startsWith(p)||Lt(!1),b=m}else b=h;let O=b.pathname||"/",C=O;if(p!=="/"){let m=p.replace(/^\//,"").split("/");C="/"+O.replace(/^\//,"").split("/").slice(m.length).join("/")}let T=Hj(e,{pathname:C}),y=xM(T&&T.map(m=>Object.assign({},m,{params:Object.assign({},d,m.params),pathname:Vo([p,o.encodeLocation?o.encodeLocation(m.pathname).pathname:m.pathname]),pathnameBase:m.pathnameBase==="/"?p:Vo([p,o.encodeLocation?o.encodeLocation(m.pathnameBase).pathname:m.pathnameBase])})),a,r,n);return t&&y?j.createElement(kd.Provider,{value:{location:cs({pathname:"/",search:"",hash:"",state:null,key:"default"},b),navigationType:Ro.Pop}},y):y}function vM(){let e=OM(),t=cM(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},a=null;return j.createElement(j.Fragment,null,j.createElement("h2",null,"Unexpected Application Error!"),j.createElement("h3",{style:{fontStyle:"italic"}},t),r?j.createElement("pre",{style:o},r):null,a)}const mM=j.createElement(vM,null);class yM extends j.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location||r.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:r.error,location:r.location,revalidation:t.revalidation||r.revalidation}}componentDidCatch(t,r){console.error("React Router caught the following error during render",t,r)}render(){return this.state.error!==void 0?j.createElement(Sa.Provider,{value:this.props.routeContext},j.createElement(I5.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function wM(e){let{routeContext:t,match:r,children:n}=e,o=j.useContext(Pd);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),j.createElement(Sa.Provider,{value:t},n)}function xM(e,t,r,n){var o;if(t===void 0&&(t=[]),r===void 0&&(r=null),n===void 0&&(n=null),e==null){var a;if(!r)return null;if(r.errors)e=r.matches;else if((a=n)!=null&&a.v7_partialHydration&&t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,d=(o=r)==null?void 0:o.errors;if(d!=null){let b=i.findIndex(_=>_.route.id&&(d==null?void 0:d[_.route.id])!==void 0);b>=0||Lt(!1),i=i.slice(0,Math.min(i.length,b+1))}let p=!1,h=-1;if(r&&n&&n.v7_partialHydration)for(let b=0;b<i.length;b++){let _=i[b];if((_.route.HydrateFallback||_.route.hydrateFallbackElement)&&(h=b),_.route.id){let{loaderData:O,errors:C}=r,T=_.route.loader&&O[_.route.id]===void 0&&(!C||C[_.route.id]===void 0);if(_.route.lazy||T){p=!0,h>=0?i=i.slice(0,h+1):i=[i[0]];break}}}return i.reduceRight((b,_,O)=>{let C,T=!1,y=null,m=null;r&&(C=d&&_.route.id?d[_.route.id]:void 0,y=_.route.errorElement||mM,p&&(h<0&&O===0?(PM("route-fallback",!1),T=!0,Line truncated
|
||||||
|
* React Router DOM v6.30.1
|
||||||
|
*
|
||||||
|
* Copyright (c) Remix Software Inc.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE.md file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
* @license MIT
|
||||||
|
*/function Bc(){return Bc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Bc.apply(this,arguments)}function V5(e,t){if(e==null)return{};var r={},n=Object.keys(e),o,a;for(a=0;a<n.length;a++)o=n[a],!(t.indexOf(o)>=0)&&(r[o]=e[o]);return r}function NM(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function jM(e,t){return e.button===0&&(!t||t==="_self")&&!NM(e)}const MM=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],AM=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],IM="6";try{window.__reactRouterVersion=IM}catch{}const LM=j.createContext({isTransitioning:!1}),DM="startTransition",Dy=Og[DM];function FM(e){let{basename:t,children:r,future:n,window:o}=e,a=j.useRef();a.current==null&&(a.current=Bj({window:o,v5Compat:!0}));let i=a.current,[d,p]=j.useState({action:i.action,location:i.location}),{v7_startTransition:h}=n||{},b=j.useCallback(_=>{h&&Dy?Dy(()=>p(_)):p(_)},[p,h]);return j.useLayoutEffect(()=>i.listen(b),[i,b]),j.useEffect(()=>kM(n),[n]),j.createElement(EM,{basename:t,children:r,location:d.location,navigationType:d.action,navigator:i,future:n})}const VM=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",zM=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Wc=j.forwardRef(function(t,r){let{onClick:n,relative:o,reloadDocument:a,replace:i,state:d,target:p,to:h,preventScrollReset:b,viewTransition:_}=t,O=V5(t,MM),{basename:C}=j.useContext(Go),T,y=!1;if(typeof h=="string"&&zM.test(h)&&(T=h,VM))try{let s=new URL(window.location.href),u=h.startsWith("//")?new URL(s.protocol+h):new URL(h),g=wi(u.pathname,C);u.origin===s.origin&&g!=null?h=g+u.search+u.hash:y=!0}catch{}let m=fM(h,{relative:o}),c=UM(h,{replace:i,state:d,target:p,preventScrollReset:b,relative:o,viewTransition:_});function l(s){n&&n(s),s.defaultPrevented||c(s)}return j.createElement("a",Bc({},O,{href:T||m,onClick:y||a?n:l,ref:r,target:p}))}),BM=j.forwardRef(function(t,r){let{"aria-current":n="page",caseSensitive:o=!1,className:a="",end:i=!1,style:d,to:p,viewTransition:h,children:b}=t,_=V5(t,AM),O=Ed(p,{relative:_.relative}),C=Mi(),T=j.useContext(A5),{navigator:y,basename:m}=j.useContext(Go),c=T!=null&&HM(O)&&h===!0,l=y.encodeLocation?y.encodeLocation(O).pathname:O.pathname,s=C.pathname,u=T&&T.navigation&&T.navigation.location?T.navigation.location.pathname:null;o||(s=s.toLowerCase(),u=u?u.toLowerCase():null,l=l.toLowerCase()),u&&m&&(u=wi(u,m)||u);const g=l!=="/"&&l.endsWith("/")?l.length-1:l.length;let v=s===l||!i&&s.startsWith(l)&&s.charAt(g)==="/",x=u!=null&&(u===l||!i&&u.startsWith(l)&&u.charAt(l.length)==="/"),E={isActive:v,isPending:x,isTransitioning:c},k=v?n:void 0,P;typeof a=="function"?P=a(E):P=[a,v?"active":null,x?"pending":null,c?"transitioning":null].filter(Boolean).join(" ");let N=typeof d=="function"?d(E):d;return j.createElement(Wc,Bc({},_,{"aria-current":k,className:P,ref:r,style:N,to:p,viewTransition:h}),typeof b=="function"?b(E):b)});var z0;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(z0||(z0={}));var Fy;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Fy||(Fy={}));function WM(e){let t=j.useContext(Pd);return t||Lt(!1),t}function UM(e,t){let{target:r,replace:n,state:o,preventScrollReset:a,relative:i,viewTransition:d}=t===void 0?{}:t,p=pM(),h=Mi(),b=Ed(e,{relative:i});return j.useCallback(_=>{if(jM(_,r)){_.preventDefault();let O=n!==void 0?n:Fc(h)===Fc(b);p(e,{replace:O,state:o,preventScrollReset:a,relative:i,viewTransition:d})}},[h,p,b,n,o,r,e,a,i,d])}function HM(e,t){t===void 0&&(t={});let r=j.useContext(LM);r==null&&Lt(!1);let{basename:n}=WM(z0.useViewTransitionState),o=Ed(e,{relative:t.relative});if(!r.isTransitioning)return!1;let a=wi(r.currentLocation.pathname,n)||r.currentLocation.pathname,i=wi(r.nextLocation.pathname,n)||r.nextLocation.pathname;return Vc(o.pathname,i)!=null||Vc(o.pathname,a)!=null}var be={},z5={},B5={exports:{}};/*!
|
||||||
|
Copyright (c) 2018 Jed Watson.
|
||||||
|
Licensed under the MIT License (MIT), see
|
||||||
|
http://jedwatson.github.io/classnames
|
||||||
|
*/(function(e){(function(){var t={}.hasOwnProperty;function r(){for(var n=[],o=0;o<arguments.length;o++){var a=arguments[o];if(a){var i=typeof a;if(i==="string"||i==="number")n.push(a);else if(Array.isArray(a)){if(a.length){var d=r.apply(null,a);d&&n.push(d)}}else if(i==="object"){if(a.toString!==Object.prototype.toString&&!a.toString.toString().includes("[native code]")){n.push(a.toString());continue}for(var p in a)t.call(a,p)&&a[p]&&n.push(p)}}}return n.join(" ")}e.exports?(r.default=r,e.exports=r):window.classNames=r})()})(B5);var Be=B5.exports,W5={exports:{}},dn={};function bh(){for(var e,t,r=0,n="";r<arguments.length;)(e=arguments[r++])&&(t=U5(e))&&(n&&(n+=" "),n+=t);return n}function U5(e){if(typeof e=="string")return e;for(var t,r="",n=0;n<e.length;n++)e[n]&&(t=U5(e[n]))&&(r&&(r+=" "),r+=t);return r}function B0(){return B0=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},B0.apply(this,arguments)}function $M(e){var t=function(r){var n=r.theme,o=r.prefix,a={nextPart:new Map,validators:[]};return function(i,d){return d?i.map(function(p){return[p[0],p[1].map(function(h){return typeof h=="string"?d+h:typeof h=="object"?Object.fromEntries(Object.entries(h).map(function(b){return[d+b[0],b[1]]})):h})]}):i}(Object.entries(r.classGroups),o).forEach(function(i){W0(i[1],a,i[0],n)}),a}(e);return{getClassGroupId:function(r){var n=r.split("-");return n[0]===""&&n.length!==1&&n.shift(),H5(n,t)||function(o){if(Vy.test(o)){var a=Vy.exec(o)[1],i=a==null?void 0:a.substring(0,a.indexOf(":"));if(i)return"arbitrary.."+i}}(r)},getConflictingClassGroupIds:function(r){return e.conflictingClassGroups[r]||[]}}}function H5(e,t){var r;if(e.length===0)return t.classGroupId;var n=t.nextPart.get(e[0]),o=n?H5(e.slice(1),n):void 0;if(o)return o;if(t.validators.length!==0){var a=e.join("-");return(r=t.validators.find(function(i){return(0,i.validator)(a)}))==null?void 0:r.classGroupId}}Object.defineProperty(dn,"__esModule",{value:!0});var Vy=/^\[(.+)\]$/;function W0(e,t,r,n){e.forEach(function(o){if(typeof o!="string"){if(typeof o=="function")return o.isThemeGetter?void W0(o(n),t,r,n):void t.validators.push({validator:o,classGroupId:r});Object.entries(o).forEach(function(a){W0(a[1],zy(t,a[0]),r,n)})}else(o===""?t:zy(t,o)).classGroupId=r})}function zy(e,t){var r=e;return t.split("-").forEach(function(n){r.nextPart.has(n)||r.nextPart.set(n,{nextPart:new Map,validators:[]}),r=r.nextPart.get(n)}),r}function qM(e){if(e<1)return{get:function(){},set:function(){}};var t=0,r=new Map,n=new Map;function o(a,i){r.set(a,i),++t>e&&(t=0,n=r,r=new Map)}return{get:function(a){var i=r.get(a);return i!==void 0?i:(i=n.get(a))!==void 0?(o(a,i),i):void 0},set:function(a,i){r.has(a)?r.set(a,i):o(a,i)}}}function KM(e){var t=e.separator||":";return function(r){for(var n=0,o=[],a=0,i=0;i<r.length;i++){var d=r[i];n===0&&d===t[0]&&(t.length!==1&&r.slice(i,i+t.length)!==t||(o.push(r.slice(a,i)),a=i+t.length)),d==="["?n++:d==="]"&&n--}var p=o.length===0?r:r.substring(a),h=p.startsWith("!");return{modifiers:o,hasImportantModifier:h,baseClassName:h?p.substring(1):p}}}function GM(e){return B0({cache:qM(e.cacheSize),splitModifiers:KM(e)},$M(e))}var YM=/\s+/;function XM(e,t){var r=t.splitModifiers,n=t.getClassGroupId,o=t.getConflictingClassGroupIds,a=new Set;return e.trim().split(YM).map(function(i){var d=r(i),p=d.modifiers,h=d.hasImportantModifier,b=n(d.baseClassName);if(!b)return{isTailwindClass:!1,originalClassName:i};var _=function(O){if(O.length<=1)return O;var C=[],T=[];return O.forEach(function(y){y[0]==="["?(C.push.apply(C,T.sort().concat([y])),T=[]):T.push(y)}),C.push.apply(C,T.sort()),C}(p).join(":");return{isTailwindClass:!0,modifierId:h?_+"!":_,classGroupId:b,originalClassName:i}}).reverse().filter(function(i){if(!i.isTailwindClass)return!0;var d=i.modifierId,p=i.classGroupId,h=d+p;return!a.has(h)&&(a.add(h),o(p).forEach(function(b){return a.add(d+b)}),!0)}).reverse().map(function(i){return i.originalClassName}).join(" ")}function U0(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n,o,a,i=d;function d(h){var b=t[0],_=t.slice(1).reduce(function(O,C){return C(O)},b());return n=GM(_),o=n.cache.get,a=n.cache.set,i=p,p(h)}function p(h){var b=o(h);if(b)return b;var _=XM(h,n);return a(h,_),_}return function(){return i(bh.apply(null,arguments))}}function wt(e){var t=function(r){return r[e]||[]};return t.isThemeGetter=!0,t}var Yo=/^\[(.+)\]$/,QM=/^\d+\/\d+$/,ZM=new Set(["px","full","screen"]),JM=/^(\d+)?(xs|sm|md|lg|xl)$/,eA=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh)/,tA=/^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;function Xr(e){return!Number.isNaN(Number(e))||ZM.has(e)||QM.test(e)||Oo(e)}function Oo(e){var t,r=(t=Yo.exec(e))==null?void 0:t[1];return!!r&&(r.startsWith("length:")||eA.test(r))}function $5(e){var t,r=(t=Yo.exec(e))==null?void 0:t[1];return!!r&&r.startsWLine truncated
|
||||||
|
* tabbable 6.2.0
|
||||||
|
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
|
||||||
|
*/var $L=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],og=$L.join(","),ZO=typeof Element>"u",bs=ZO?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Zc=!ZO&&Element.prototype.getRootNode?function(e){var t;return e==null||(t=e.getRootNode)===null||t===void 0?void 0:t.call(e)}:function(e){return e==null?void 0:e.ownerDocument},Jc=function e(t,r){var n;r===void 0&&(r=!0);var o=t==null||(n=t.getAttribute)===null||n===void 0?void 0:n.call(t,"inert"),a=o===""||o==="true",i=a||r&&t&&e(t.parentNode);return i},qL=function(t){var r,n=t==null||(r=t.getAttribute)===null||r===void 0?void 0:r.call(t,"contenteditable");return n===""||n==="true"},KL=function(t,r,n){if(Jc(t))return[];var o=Array.prototype.slice.apply(t.querySelectorAll(og));return r&&bs.call(t,og)&&o.unshift(t),o=o.filter(n),o},GL=function e(t,r,n){for(var o=[],a=Array.from(t);a.length;){var i=a.shift();if(!Jc(i,!1))if(i.tagName==="SLOT"){var d=i.assignedElements(),p=d.length?d:i.children,h=e(p,!0,n);n.flatten?o.push.apply(o,h):o.push({scopeParent:i,candidates:h})}else{var b=bs.call(i,og);b&&n.filter(i)&&(r||!t.includes(i))&&o.push(i);var _=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),O=!Jc(_,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(_&&O){var C=e(_===!0?i.children:_.children,!0,n);n.flatten?o.push.apply(o,C):o.push({scopeParent:i,candidates:C})}else a.unshift.apply(a,i.children)}}return o},JO=function(t){return!isNaN(parseInt(t.getAttribute("tabindex"),10))},eS=function(t){if(!t)throw new Error("No node provided");return t.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(t.tagName)||qL(t))&&!JO(t)?0:t.tabIndex},YL=function(t,r){var n=eS(t);return n<0&&r&&!JO(t)?0:n},XL=function(t,r){return t.tabIndex===r.tabIndex?t.documentOrder-r.documentOrder:t.tabIndex-r.tabIndex},tS=function(t){return t.tagName==="INPUT"},QL=function(t){return tS(t)&&t.type==="hidden"},ZL=function(t){var r=t.tagName==="DETAILS"&&Array.prototype.slice.apply(t.children).some(function(n){return n.tagName==="SUMMARY"});return r},JL=function(t,r){for(var n=0;n<t.length;n++)if(t[n].checked&&t[n].form===r)return t[n]},eD=function(t){if(!t.name)return!0;var r=t.form||Zc(t),n=function(d){return r.querySelectorAll('input[type="radio"][name="'+d+'"]')},o;if(typeof window<"u"&&typeof window.CSS<"u"&&typeof window.CSS.escape=="function")o=n(window.CSS.escape(t.name));else try{o=n(t.name)}catch(i){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",i.message),!1}var a=JL(o,t.form);return!a||a===t},tD=function(t){return tS(t)&&t.type==="radio"},rD=function(t){return tD(t)&&!eD(t)},nD=function(t){var r,n=t&&Zc(t),o=(r=n)===null||r===void 0?void 0:r.host,a=!1;if(n&&n!==t){var i,d,p;for(a=!!((i=o)!==null&&i!==void 0&&(d=i.ownerDocument)!==null&&d!==void 0&&d.contains(o)||t!=null&&(p=t.ownerDocument)!==null&&p!==void 0&&p.contains(t));!a&&o;){var h,b,_;n=Zc(o),o=(h=n)===null||h===void 0?void 0:h.host,a=!!((b=o)!==null&&b!==void 0&&(_=b.ownerDocument)!==null&&_!==void 0&&_.contains(o))}}return a},gw=function(t){var r=t.getBoundingClientRect(),n=r.width,o=r.height;return n===0&&o===0},oD=function(t,r){var n=r.displayCheck,o=r.getShadowRoot;if(getComputedStyle(t).visibility==="hidden")return!0;var a=bs.call(t,"details>summary:first-of-type"),i=a?t.parentElement:t;if(bs.call(i,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="legacy-full"){if(typeof o=="function"){for(var d=t;t;){var p=t.parentElement,h=Zc(t);if(p&&!p.shadowRoot&&o(p)===!0)return gw(t);t.assignedSlot?t=t.assignedSlot:!p&&h!==t.ownerDocument?t=h.host:t=p}t=d}if(nD(t))return!t.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return gw(t);return!1},aD=function(t){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(t.tagName))for(var r=t.parentElement;r;){if(r.tagName==="FIELDSET"&&r.disabled){for(var n=0;n<r.children.length;n++){var o=r.children.item(n);if(o.tagName==="LEGEND")return bs.call(r,"fieldset[disabled] *")?!0:!o.contains(t)}return!0}r=r.parentElement}return!1},iD=function(t,r){return!(r.disabled||Jc(r)||QL(r)||oD(r,t)||ZL(r)||aD(r))},hw=function(t,r){return!(rD(r)||eS(r)<0||!iD(t,r))},lD=function(t){var r=parseInt(t.getAttribute("tabindex"),10);return!!(isNaN(r)||r>=0)},sD=function e(t){var r=[],n=[];return t.forEach(function(o,a){var i=!!o.scopeParent,d=i?o.scopeParent:o,p=YL(d,i),h=i?e(o.candidates):d;p===0?i?r.push.apply(r,h):r.push(d):n.push({documentOrder:a,tabIndex:p,item:o,isScope:i,content:h})}),n.sort(XL).reduce(function(o,a){return a.isScope?o.push.apply(o,a.content):o.push(a.content),o},[]).concatLine truncated
|
||||||
|
|
||||||
|
More details: https://www.material-tailwind.com/docs/react/collapse
|
||||||
|
`);var k=r.default.useRef(null),P=(0,h.useTheme)().navbar,N=P.styles,M=N.base.mobileNav;u=u??{},g=g??"";var I=(0,d.twMerge)((0,i.default)((0,p.default)(M)),g),L={unmount:{height:0,opacity:0,transition:{duration:.3,times:"[0.4, 0, 0.2, 1]"}},mount:{opacity:1,height:"".concat((E=k.current)===null||E===void 0?void 0:E.scrollHeight,"px"),transition:{duration:.3,times:"[0.4, 0, 0.2, 1]"}}},W=(0,a.default)(L,u),G=n.AnimatePresence,X=(0,o.useMergeRefs)([l,k]);return r.default.createElement(n.LazyMotion,{features:n.domAnimation},r.default.createElement(G,null,r.default.createElement(n.m.div,_({},x,{ref:X,className:I,initial:"unmount",exit:"unmount",animate:s?"mount":"unmount",variants:W}),v)))});y.displayName="MaterialTailwind.MobileNav",y.propTypes={open:b.propTypesOpen,animate:b.propTypesAnimate,className:b.propTypesClassName,children:b.propTypesChildren};var m=y})(HS);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(l,s){for(var u in s)Object.defineProperty(l,u,{enumerable:!0,get:s[u]})}t(e,{Navbar:function(){return m},MobileNav:function(){return h.MobileNav},default:function(){return c}});var r=C(j),n=C(De),o=C(Be),a=Ae,i=C(St),d=C(Ie),p=je,h=HS,b=Rd;function _(l,s,u){return s in l?Object.defineProperty(l,s,{value:u,enumerable:!0,configurable:!0,writable:!0}):l[s]=u,l}function O(){return O=Object.assign||function(l){for(var s=1;s<arguments.length;s++){var u=arguments[s];for(var g in u)Object.prototype.hasOwnProperty.call(u,g)&&(l[g]=u[g])}return l},O.apply(this,arguments)}function C(l){return l&&l.__esModule?l:{default:l}}function T(l,s){if(l==null)return{};var u=y(l,s),g,v;if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(l);for(v=0;v<x.length;v++)g=x[v],!(s.indexOf(g)>=0)&&Object.prototype.propertyIsEnumerable.call(l,g)&&(u[g]=l[g])}return u}function y(l,s){if(l==null)return{};var u={},g=Object.keys(l),v,x;for(x=0;x<g.length;x++)v=g[x],!(s.indexOf(v)>=0)&&(u[v]=l[v]);return u}var m=r.default.forwardRef(function(l,s){var u=l.variant,g=l.color,v=l.shadow,x=l.blurred,E=l.fullWidth,k=l.className,P=l.children,N=T(l,["variant","color","shadow","blurred","fullWidth","className","children"]),M=(0,p.useTheme)().navbar,I=M.defaultProps,L=M.valid,W=M.styles,G=W.base,X=W.variants;u=u??I.variant,g=g??I.color,v=v??I.shadow,x=x??I.blurred,E=E??I.fullWidth,k=(0,a.twMerge)(I.className||"",k);var H,B=(0,o.default)((0,d.default)(G.navbar.initial),(H={},_(H,(0,d.default)(G.navbar.shadow),v),_(H,(0,d.default)(G.navbar.blurred),x&&g==="white"),_(H,(0,d.default)(G.navbar.fullWidth),E),H)),q=(0,o.default)((0,d.default)(X[(0,i.default)(L.variants,u,"filled")][(0,i.default)(L.colors,g,"white")])),Y=(0,a.twMerge)((0,o.default)(B,q),k);return r.default.createElement("nav",O({},N,{ref:s,className:Y}),P)});m.propTypes={variant:n.default.oneOf(b.propTypesVariant),color:n.default.oneOf(b.propTypesColor),shadow:b.propTypesShadow,blurred:b.propTypesBlurred,fullWidth:b.propTypesFullWidth,className:b.propTypesClassName,children:b.propTypesChildren},m.displayName="MaterialTailwind.Navbar";var c=Object.assign(m,{MobileNav:h.MobileNav})})(US);var $S={},Qd={},Bi={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(m,c){for(var l in c)Object.defineProperty(m,l,{enumerable:!0,get:c[l]})}t(e,{propTypesOpen:function(){return a},propTypesHandler:function(){return i},propTypesPlacement:function(){return d},propTypesOffset:function(){return p},propTypesDismiss:function(){return h},propTypesAnimate:function(){return b},propTypesContent:function(){return _},propTypesInteractive:function(){return O},propTypesClassName:function(){return C},propTypesChildren:function(){return T},propTypesContextValue:function(){return y}});var r=o(De),n=_t;function o(m){return m&&m.__esModule?m:{default:m}}var a=r.default.bool,i=r.default.func,d=n.propTypesPlacements,p=n.propTypesOffsetType,h=n.propTypesDismissType,b=n.propTypesAnimation,_=r.default.node,O=r.default.bool,C=r.default.string,T=r.default.node.isRequired,y=r.default.shape({open:r.default.bool.isRequired,strategy:r.default.oneOf(["fixed","absolute"]).isRequired,x:r.default.number,y:r.default.number,context:r.default.instanceOf(Object).isRequired,reference:r.default.func.isRequired,floating:r.default.func.isRequired,getReferenceProps:r.default.func.isRequired,getFloatingProps:r.default.func.isRequired,appliedAnimation:b.isRequired,labelId:r.default.string.isRequired,descriptionId:r.default.string.isRequired}).isRequired})(Bi);(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(p,h){for(var b in h)Object.defineProperty(p,b,{enumerable:!0,get:h[b]})}t(e,{PopoverContext:function(){return a},usePopover:function(){return i},PopoverContextProvider:function(){return d}});var r=o(j),n=Bi;function o(p){return p&&p.__esModule?p:{default:p}}var a=r.default.createContext(null);a.displayName="MaterialTailwind.PopoverContext";function i(){var p=r.default.useContext(a);if(!p)throw new Error("usePopover() must be used within a Popover. It h
Line truncated
|
||||||
|
`).forEach(function(i){o=i.indexOf(":"),r=i.substring(0,o).trim().toLowerCase(),n=i.substring(o+1).trim(),!(!r||t[r]&&oV[r])&&(r==="set-cookie"?t[r]?t[r].push(n):t[r]=[n]:t[r]=t[r]?t[r]+", "+n:n)}),t},Kw=Symbol("internals");function wl(e){return e&&String(e).trim().toLowerCase()}function ic(e){return e===!1||e==null?e:ce.isArray(e)?e.map(ic):String(e)}function iV(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(e);)t[n[1]]=n[2];return t}const lV=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Ip(e,t,r,n,o){if(ce.isFunction(n))return n.call(this,t,r);if(o&&(t=r),!!ce.isString(t)){if(ce.isString(n))return t.indexOf(n)!==-1;if(ce.isRegExp(n))return n.test(t)}}function sV(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,r,n)=>r.toUpperCase()+n)}function uV(e,t){const r=ce.toCamelCase(" "+t);["get","set","has"].forEach(n=>{Object.defineProperty(e,n+r,{value:function(o,a,i){return this[n].call(this,t,o,a,i)},configurable:!0})})}class rf{constructor(t){t&&this.set(t)}set(t,r,n){const o=this;function a(d,p,h){const b=wl(p);if(!b)throw new Error("header name must be a non-empty string");const _=ce.findKey(o,b);(!_||o[_]===void 0||h===!0||h===void 0&&o[_]!==!1)&&(o[_||p]=ic(d))}const i=(d,p)=>ce.forEach(d,(h,b)=>a(h,b,p));if(ce.isPlainObject(t)||t instanceof this.constructor)i(t,r);else if(ce.isString(t)&&(t=t.trim())&&!lV(t))i(aV(t),r);else if(ce.isObject(t)&&ce.isIterable(t)){let d={},p,h;for(const b of t){if(!ce.isArray(b))throw TypeError("Object iterator must return a key-value pair");d[h=b[0]]=(p=d[h])?ce.isArray(p)?[...p,b[1]]:[p,b[1]]:b[1]}i(d,r)}else t!=null&&a(r,t,n);return this}get(t,r){if(t=wl(t),t){const n=ce.findKey(this,t);if(n){const o=this[n];if(!r)return o;if(r===!0)return iV(o);if(ce.isFunction(r))return r.call(this,o,n);if(ce.isRegExp(r))return r.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,r){if(t=wl(t),t){const n=ce.findKey(this,t);return!!(n&&this[n]!==void 0&&(!r||Ip(this,this[n],n,r)))}return!1}delete(t,r){const n=this;let o=!1;function a(i){if(i=wl(i),i){const d=ce.findKey(n,i);d&&(!r||Ip(n,n[d],d,r))&&(delete n[d],o=!0)}}return ce.isArray(t)?t.forEach(a):a(t),o}clear(t){const r=Object.keys(this);let n=r.length,o=!1;for(;n--;){const a=r[n];(!t||Ip(this,this[a],a,t,!0))&&(delete this[a],o=!0)}return o}normalize(t){const r=this,n={};return ce.forEach(this,(o,a)=>{const i=ce.findKey(n,a);if(i){r[i]=ic(o),delete r[a];return}const d=t?sV(a):String(a).trim();d!==a&&delete r[a],r[d]=ic(o),n[d]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const r=Object.create(null);return ce.forEach(this,(n,o)=>{n!=null&&n!==!1&&(r[o]=t&&ce.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,r])=>t+": "+r).join(`
|
||||||
|
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...r){const n=new this(t);return r.forEach(o=>n.set(o)),n}static accessor(t){const n=(this[Kw]=this[Kw]={accessors:{}}).accessors,o=this.prototype;function a(i){const d=wl(i);n[d]||(uV(o,i),n[d]=!0)}return ce.isArray(t)?t.forEach(a):a(t),this}}rf.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);ce.reduceDescriptors(rf.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(n){this[r]=n}}});ce.freezeMethods(rf);const xn=rf;function Lp(e,t){const r=this||Tb,n=t||r,o=xn.from(n.headers);let a=n.data;return ce.forEach(e,function(d){a=d.call(r,a,o.normalize(),t?t.status:void 0)}),o.normalize(),a}function WP(e){return!!(e&&e.__CANCEL__)}function Hi(e,t,r){qe.call(this,e??"canceled",qe.ERR_CANCELED,t,r),this.name="CanceledError"}ce.inherits(Hi,qe,{__CANCEL__:!0});function UP(e,t,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?e(r):t(new qe("Request failed with status code "+r.status,[qe.ERR_BAD_REQUEST,qe.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function cV(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function dV(e,t){e=e||10;const r=new Array(e),n=new Array(e);let o=0,a=0,i;return t=t!==void 0?t:1e3,function(p){const h=Date.now(),b=n[a];i||(i=h),r[o]=p,n[o]=h;let _=a,O=0;for(;_!==o;)O+=r[_++],_=_%e;if(o=(o+1)%e,o===a&&(a=(a+1)%e),h-i<t)return;const C=b&&h-b;return C?Math.round(O*1e3/C):void 0}}function fV(e,t){let r=0,n=1e3/t,o,a;const i=(h,b=Date.now())=>{r=b,o=null,a&&(clearTimeout(a),a=null),e(...h)};return[(...h)=>{const b=Date.now(),_=b-r;_>=n?i(h,b):(o=h,a||(a=setTimeout(()=>{a=null,i(o)},n-_)))},()=>o&&i(o)]}const sd=(e,t,r=3)=>{let n=0;const o=dV(50,250);return fV(a=>{const i=a.loaded,d=a.lengthComputable?a.total:void 0,p=i-n,h=o(p),b=i<=d;n=i;const _={loaded:i,total:d,progress:d?i/d:void 0,bytes:p,rate:h||void 0,estimated:h&&d&&b?(d-i)/h:void 0,event:a,lengthComputable:d!=null,[t?"download":"upload"]:!0};e(_)},r)},Gw=(e,t)=>{const r=e!=null;return[n=>t[0]({lengthComputable:r,total:e,loaded:n}),t[1]]},Yw=e=>(...t)=>ce.asap(()=>e(...t)),pV=hr.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,hr.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(hr.origin),hr.navigator&&/(msie|trident)/i.test(hr.navigator.userAgent)):()=>!0,gV=hr.hasStandardBrowserEnv?{write(e,t,r,n,o,a){const i=[e+"="+encodeURIComponent(t)];ce.isNumber(r)&&i.push("expires="+new Date(r).toGMTString()),ce.isString(n)&&i.push("path="+n),ce.isString(o)&&i.push("domain="+o),a===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function hV(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function bV(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function HP(e,t,r){let n=!hV(t);return e&&(n||r==!1)?bV(e,t):t}const Xw=e=>e instanceof xn?{...e}:e;function Ta(e,t){t=t||{};const r={};function n(h,b,_,O){return ce.isPlainObject(h)&&ce.isPlainObject(b)?ce.merge.call({caseless:O},h,b):ce.isPlainObject(b)?ce.merge({},b):ce.isArray(b)?b.slice():b}function o(h,b,_,O){if(ce.isUndefined(b)){if(!ce.isUndefined(h))return n(void 0,h,_,O)}else return n(h,b,_,O)}function a(h,b){if(!ce.isUndefined(b))return n(void 0,b)}function i(h,b){if(ce.isUndefined(b)){if(!ce.isUndefined(h))return n(void 0,h)}else return n(void 0,b)}function d(h,b,_){if(_ in t)return n(h,b);if(_ in e)return n(void 0,h)}const p={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:d,headers:(h,b,_)=>o(Xw(h),Xw(b),_,!0)};return ce.forEach(Object.keys({...e,...t}),function(b){const _=p[b]||o,O=_(e[b],t[b],b);ce.isUndefined(O)&&_!==d||(r[b]=O)}),r}const $P=e=>{const t=Ta({},e);let{data:r,withXSRFToken:n,xsrfHeaderName:o,xsrfCookieName:a,headers:i,auth:d}=t;t.headers=i=xn.from(i),t.url=VP(HP(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),d&&i.set("Authorization","Basic "+btoa((d.username||"")+":"+(d.password?unescape(encodeURIComponent(d.password)):"")));let p;if(ce.isFormData(r)){if(hr.hasStandardBrowserEnv||hr.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((p=i.getContentType())!==!1){const[h,...b]=p?p.split(";").map(_=>_.trim()).filter(Boolean):[];i.setContentType([h||"multipart/form-data",...b].join("; "))}}if(hr.hasStandardBrowserEnv&&(n&&ce.isFunction(n)&&
Line truncated
|
||||||
|
`+a.map(Jw).join(`
|
||||||
|
`):" "+Jw(a[0]):"as no adapter specified";throw new qe("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return n},adapters:pg};function Dp(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Hi(null,e)}function ex(e){return Dp(e),e.headers=xn.from(e.headers),e.data=Lp.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),GP.getAdapter(e.adapter||Tb.adapter)(e).then(function(n){return Dp(e),n.data=Lp.call(e,e.transformResponse,n),n.headers=xn.from(n.headers),n},function(n){return WP(n)||(Dp(e),n&&n.response&&(n.response.data=Lp.call(e,e.transformResponse,n.response),n.response.headers=xn.from(n.response.headers))),Promise.reject(n)})}const YP="1.11.0",of={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{of[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const tx={};of.transitional=function(t,r,n){function o(a,i){return"[Axios v"+YP+"] Transitional option '"+a+"'"+i+(n?". "+n:"")}return(a,i,d)=>{if(t===!1)throw new qe(o(i," has been removed"+(r?" in "+r:"")),qe.ERR_DEPRECATED);return r&&!tx[i]&&(tx[i]=!0,console.warn(o(i," has been deprecated since v"+r+" and will be removed in the near future"))),t?t(a,i,d):!0}};of.spelling=function(t){return(r,n)=>(console.warn(`${n} is likely a misspelling of ${t}`),!0)};function RV(e,t,r){if(typeof e!="object")throw new qe("options must be an object",qe.ERR_BAD_OPTION_VALUE);const n=Object.keys(e);let o=n.length;for(;o-- >0;){const a=n[o],i=t[a];if(i){const d=e[a],p=d===void 0||i(d,a,e);if(p!==!0)throw new qe("option "+a+" must be "+p,qe.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new qe("Unknown option "+a,qe.ERR_BAD_OPTION)}}const lc={assertOptions:RV,validators:of},Mn=lc.validators;class cd{constructor(t){this.defaults=t||{},this.interceptors={request:new qw,response:new qw}}async request(t,r){try{return await this._request(t,r)}catch(n){if(n instanceof Error){let o={};Error.captureStackTrace?Error.captureStackTrace(o):o=new Error;const a=o.stack?o.stack.replace(/^.+\n/,""):"";try{n.stack?a&&!String(n.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(n.stack+=`
|
||||||
|
`+a):n.stack=a}catch{}}throw n}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=Ta(this.defaults,r);const{transitional:n,paramsSerializer:o,headers:a}=r;n!==void 0&&lc.assertOptions(n,{silentJSONParsing:Mn.transitional(Mn.boolean),forcedJSONParsing:Mn.transitional(Mn.boolean),clarifyTimeoutError:Mn.transitional(Mn.boolean)},!1),o!=null&&(ce.isFunction(o)?r.paramsSerializer={serialize:o}:lc.assertOptions(o,{encode:Mn.function,serialize:Mn.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),lc.assertOptions(r,{baseUrl:Mn.spelling("baseURL"),withXsrfToken:Mn.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let i=a&&ce.merge(a.common,a[r.method]);a&&ce.forEach(["delete","get","head","post","put","patch","common"],T=>{delete a[T]}),r.headers=xn.concat(i,a);const d=[];let p=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(r)===!1||(p=p&&y.synchronous,d.unshift(y.fulfilled,y.rejected))});const h=[];this.interceptors.response.forEach(function(y){h.push(y.fulfilled,y.rejected)});let b,_=0,O;if(!p){const T=[ex.bind(this),void 0];for(T.unshift(...d),T.push(...h),O=T.length,b=Promise.resolve(r);_<O;)b=b.then(T[_++],T[_++]);return b}O=d.length;let C=r;for(_=0;_<O;){const T=d[_++],y=d[_++];try{C=T(C)}catch(m){y.call(this,m);break}}try{b=ex.call(this,C)}catch(T){return Promise.reject(T)}for(_=0,O=h.length;_<O;)b=b.then(h[_++],h[_++]);return b}getUri(t){t=Ta(this.defaults,t);const r=HP(t.baseURL,t.url,t.allowAbsoluteUrls);return VP(r,t.params,t.paramsSerializer)}}ce.forEach(["delete","get","head","options"],function(t){cd.prototype[t]=function(r,n){return this.request(Ta(n||{},{method:t,url:r,data:(n||{}).data}))}});ce.forEach(["post","put","patch"],function(t){function r(n){return function(a,i,d){return this.request(Ta(d||{},{method:t,headers:n?{"Content-Type":"multipart/form-data"}:{},url:a,data:i}))}}cd.prototype[t]=r(),cd.prototype[t+"Form"]=r(!0)});const sc=cd;class Cb{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(a){r=a});const n=this;this.promise.then(o=>{if(!n._listeners)return;let a=n._listeners.length;for(;a-- >0;)n._listeners[a](o);n._listeners=null}),this.promise.then=o=>{let a;const i=new Promise(d=>{n.subscribe(d),a=d}).then(o);return i.cancel=function(){n.unsubscribe(a)},i},t(function(a,i,d){n.reason||(n.reason=new Hi(a,i,d),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const t=new AbortController,r=n=>{t.abort(n)};return this.subscribe(r),t.signal.unsubscribe=()=>this.unsubscribe(r),t.signal}static source(){let t;return{token:new Cb(function(o){t=o}),cancel:t}}}const NV=Cb;function jV(e){return function(r){return e.apply(null,r)}}function MV(e){return ce.isObject(e)&&e.isAxiosError===!0}const gg={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(gg).forEach(([e,t])=>{gg[t]=e});const AV=gg;function XP(e){const t=new sc(e),r=PP(sc.prototype.request,t);return ce.extend(r,sc.prototype,t,{allOwnKeys:!0}),ce.extend(r,t,null,{allOwnKeys:!0}),r.create=function(o){return XP(Ta(e,o))},r}const Wt=XP(Tb);Wt.Axios=sc;Wt.CanceledError=Hi;Wt.CancelToken=NV;Wt.isCancel=WP;Wt.VERSION=YP;Wt.toFormData=tf;Wt.AxiosError=qe;Wt.Cancel=Wt.CanceledError;Wt.all=function(t){return Promise.all(t)};Wt.spread=jV;Wt.isAxiosError=MV;Wt.mergeConfig=Ta;Wt.AxiosHeaders=xn;Wt.formToJSON=e=>BP(ce.isHTMLForm(e)?new FormData(e):e);Wt.getAdapter=GP.getAdapter;Wt.H
Line truncated
|
||||||
|
`):""}),N(!!o.passwordStored),I(!1),Y(null)},[o]);const ee=j.useMemo(()=>n?n.source==="custom"&&typeof n.custom=="string"?n.custom:n.default??n.effective??"":"",[n]),ae=n?m!==ee:!1,ie=(n==null?void 0:n.source)==="custom"?"Benutzerdefiniert":"Standard",[se,te]=j.useState([]),[ge,de]=j.useState(!0),[le,pe]=j.useState(""),[fe,Te]=j.useState(!1),[Re,Oe]=j.useState(null),[xe,Me]=j.useState(null),[Pe,rt]=j.useState(null),[at,Qe]=j.useState(!0),[it,ft]=j.useState(""),[pt,Ye]=j.useState(!1),[Ke,Pt]=j.useState(null),Mt=j.useCallback(async({silent:_e=!1}={})=>{var We,Fe;_e?Ye(!0):Qe(!0),ft("");try{const bt=(await It.get("/api/maintenance/portainer-status")).data??{};rt(bt),Pt(new Date)}catch(et){const bt=((Fe=(We=et.response)==null?void 0:We.data)==null?void 0:Fe.error)||et.message||"Fehler beim Prüfen des Portainer-Status";ft(bt)}finally{_e?Ye(!1):Qe(!1)}},[]),st=j.useCallback(async({silent:_e=!1}={})=>{var We,Fe,et;if(C||y){te([]),pe("Wartungsmodus aktiv – Duplikat-Verwaltung ist vorübergehend deaktiviert."),de(!1),Te(!1);return}_e?Te(!0):de(!0),pe("");try{const rr=(await It.get("/api/maintenance/duplicates")).data,Dr=Array.isArray(rr)?rr:(rr==null?void 0:rr.items)??[];te(Dr),Me(new Date)}catch(bt){if(((We=bt.response)==null?void 0:We.status)===423)te([]),pe("Wartungsmodus aktiv – Duplikat-Verwaltung ist vorübergehend deaktiviert.");else{const rr=((et=(Fe=bt.response)==null?void 0:Fe.data)==null?void 0:et.error)||bt.message||"Fehler beim Laden der Wartungsdaten";pe(rr)}}finally{_e?Te(!1):de(!1)}},[C,y]);j.useEffect(()=>{Mt()},[Mt]),j.useEffect(()=>{st()},[st]);const lr=j.useMemo(()=>{const _e=Array.isArray(se)?se.length:0,We=Array.isArray(se)?se.reduce((Fe,et)=>{var bt;return Fe+(((bt=et==null?void 0:et.duplicates)==null?void 0:bt.length)||0)},0):0;return{groups:_e,duplicateCount:We}},[se]),Gt=j.useCallback((_e,We)=>{k(Fe=>({...Fe,[_e]:We})),_e==="password"&&N(!1)},[]),ct=j.useMemo(()=>{const _e={host:E.host.trim(),port:Number.parseInt(E.port,10)||22,username:E.username.trim(),extraSshArgs:(E.extraSshArgs||"").split(/\r?\n/).map(Fe=>Fe.trim()).filter(Boolean)},We=E.password??"";return We?_e.password=We:P||(_e.password=""),_e},[E,P]),U=j.useCallback(async()=>{var _e,We;if(n)try{s(!0),await p(m),e({variant:"success",title:"Skript gespeichert",description:"Das benutzerdefinierte Portainer-Update-Skript wurde aktualisiert."})}catch(Fe){const et=((We=(_e=Fe.response)==null?void 0:_e.data)==null?void 0:We.error)||Fe.message||"Skript konnte nicht gespeichert werden";e({variant:"error",title:"Speichern fehlgeschlagen",description:et})}finally{s(!1)}},[p,m,n,e]),re=j.useCallback(async()=>{var _e,We;try{s(!0),await h(),e({variant:"info",title:"Standardskript wiederhergestellt",description:"Es wird wieder das Standard-Update-Skript verwendet."})}catch(Fe){const et=((We=(_e=Fe.response)==null?void 0:_e.data)==null?void 0:We.error)||Fe.message||"Standardskript konnte nicht wiederhergestellt werden";e({variant:"error",title:"Zurücksetzen fehlgeschlagen",description:et})}finally{s(!1)}},[h,e]),ve=j.useCallback(async()=>{var _e,We;try{W(!0),await b(ct),Y(null),I(!1),e({variant:"success",title:"SSH-Konfiguration gespeichert",description:"Verbindungseinstellungen wurden aktualisiert."})}catch(Fe){const et=((We=(_e=Fe.response)==null?void 0:_e.data)==null?void 0:We.error)||Fe.message||"SSH-Konfiguration konnte nicht gespeichert werden";e({variant:"error",title:"Speichern fehlgeschlagen",description:et})}finally{W(!1)}},[ct,b,e]),me=j.useCallback(async()=>{var _e,We;try{X(!0);const Fe=await O(ct);Y({success:!0,timestamp:new Date,details:Fe==null?void 0:Fe.result}),e({variant:"success",title:"SSH-Verbindung erfolgreich",description:"Verbindung zum Portainer-Host wurde hergestellt."})}catch(Fe){const et=((We=(_e=Fe.response)==null?void 0:_e.data)==null?void 0:We.error)||Fe.message||"SSH-Verbindung fehlgeschlagen";Y({success:!1,timestamp:new Date,error:et}),e({variant:"error",title:"SSH-Test fehlgeschlagen",description:et})}finally{X(!1)}},[ct,O,e]),he=j.useCallback(async()=>{var _e,We;try{B(!0),await _(),k(Up()),N(!1),I(!1),Y(null),e({variant:"info",title:"SSH-Konfiguration gelöscht",description:"Die Verbindungseinstellungen wurden zurückgesetzt."})}catch(Fe){const et=((We=(_e=Fe.response)==null?void 0:_e.data)==null?void 0:We.error)||Fe.message||"SSH-Konfiguration konnte nicht gelöscht werden";e({variant:"error",title:"Löschen fehlgeschlagen",description:et})}finally{B(!1)}},[_,e]),Ce=j.useCallback(async()=>{var We,Fe;if(C||y){e({variant:"warning",title:"Update nicht möglich",description:"Während eines aktiven Wartungsmodus kann kein weiteres Update gestartet werden."});return}const _e=(Pe==null?void 0:Pe.latestVersion)??(Pe==null?void 0:Pe.currentVersion)??"unbekannt";if(!(typeof window<"u"&&!window.confirm(`Portainer-Update starten?
|
||||||
|
Zielversion: ${_e}.
|
||||||
|
Während des Updates befindet sich StackPulse im Wartungsmodus.
|
||||||
|
Fortfahren?`)))try{x(""),g(!0),await d(),e({variant:"info",title:"Update gestartet",description:"Das Portainer-Update wurde gestartet."})}catch(et){const bt=((Fe=(We=et.response)==null?void 0:We.data)==null?void 0:Fe.error)||et.message||"Portainer-Update konnte nicht gestartet werden";x(bt),e({variant:"error",title:"Update fehlgeschlagen",description:bt})}finally{g(!1)}},[C,y,Pe,d,e]),Ne=j.useCallback(async _e=>{var bt,rr,Dr,sn;if(!_e)return;if(C||y){e({variant:"warning",title:"Aktion nicht möglich",description:"Während des Wartungsmodus sind Bereinigungen deaktiviert."});return}const We=(bt=_e.canonical)==null?void 0:bt.Id;if(!We)return;const Fe=(_e.duplicates||[]).map(sr=>sr.Id).filter(Boolean);if(!Fe.length)return;const et=((rr=_e.canonical)==null?void 0:rr.Name)||_e.name||`Stack ${We}`;if(!(typeof window<"u"&&!window.confirm(`Bereinigung für "${et}" starten?
|
||||||
|
Es werden ${Fe.length} Duplikate entfernt: ${Fe.join(", ")}`))){Oe(String(We));try{const Ut=(await It.post("/api/maintenance/duplicates/cleanup",{canonicalId:We,duplicateIds:Fe})).data??{};if(Ut.success===!1)throw new Error(Ut.error||"Bereinigung fehlgeschlagen");const uo=Array.isArray(Ut.results)?Ut.results.filter(co=>co.status==="deleted").map(co=>co.id):Fe;e({variant:"success",title:"Bereinigung abgeschlossen",description:`${et} – entfernte IDs: ${uo.join(", ")}`}),await st({silent:!0})}catch(sr){const Ut=((sn=(Dr=sr.response)==null?void 0:Dr.data)==null?void 0:sn.error)||sr.message||"Bereinigung fehlgeschlagen";e({variant:"error",title:"Bereinigung fehlgeschlagen",description:Ut})}finally{Oe(null)}}},[st,C,e,y]),He=C||y,ht=(r==null?void 0:r.status)??(y?"running":"idle"),mt=Jz[ht]??ht,Yt=_l[ht]??_l.idle,vr=r!=null&&r.stage?e6[r.stage]??r.stage:"–",Dt=(r==null?void 0:r.logs)??[],kn=(r==null?void 0:r.targetVersion)??"-",Un=(r==null?void 0:r.resultVersion)??"-",Hn=r!=null&&r.startedAt?Tl(r.startedAt):"-",Ir=r!=null&&r.finishedAt?Tl(r.finishedAt):"-",Xt=(r==null?void 0:r.message)??(y?"Update läuft…":""),Lr=y||l||a;return F.jsxs("div",{className:"space-y-6",children:[F.jsxs("div",{className:"space-y-2",children:[F.jsx("h1",{className:"text-2xl font-semibold text-white",children:"Wartung"}),F.jsx("p",{className:"text-sm text-gray-400",children:"Werkzeuge für wiederkehrende Wartungsaufgaben. Entfernt derzeit doppelte Stack-Einträge und verwaltet Portainer-Updates."})]}),(C||y)&&F.jsx("div",{className:"rounded-lg border border-amber-500/60 bg-amber-900/30 px-4 py-3 text-sm text-amber-100",children:F.jsxs("div",{className:"flex flex-col gap-1",children:[F.jsxs("span",{children:["Wartungsmodus aktiv",T?` – ${T}`:y?" – Portainer-Update läuft":"","."]}),y&&F.jsxs("span",{className:"text-xs text-amber-200",children:["Phase: ",vr]})]})}),i&&F.jsx("div",{className:"rounded-lg border border-red-500/60 bg-red-900/30 px-4 py-3 text-sm text-red-100",children:i}),F.jsxs("div",{className:"rounded-xl border border-gray-700 bg-gray-800/60 p-6 shadow-lg",children:[F.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[F.jsxs("div",{children:[F.jsx("h2",{className:"text-lg font-semibold text-white",children:"Portainer Status"}),F.jsx("p",{className:"text-sm text-gray-400",children:at?"Status wird geprüft…":it||(y?"Portainer wird aktuell aktualisiert.":(Pe==null?void 0:Pe.updateAvailable)===!0?"Es ist ein Update für Portainer verfügbar.":"Portainer ist auf dem aktuellen Stand.")}),Ke&&!at&&F.jsxs("p",{className:"mt-1 text-xs text-gray-500",children:["Stand: ",Ke.toLocaleString("de-DE",{hour:"2-digit",minute:"2-digit",second:"2-digit"})]})]}),F.jsx("div",{className:"flex items-center gap-3",children:F.jsx("button",{type:"button",onClick:()=>Mt({silent:!1}),disabled:at||pt,className:"rounded-lg border border-purple-500 px-4 py-2 text-sm font-medium text-purple-200 transition hover:bg-purple-500/20 disabled:opacity-50",children:"Status aktualisieren"})})]}),!at&&!it&&Pe&&F.jsx("div",{className:"mt-5 space-y-4 text-sm text-gray-200",children:F.jsxs("div",{className:"space-y-2",children:[F.jsxs("div",{className:"flex items-center justify-between",children:[F.jsx("span",{className:"text-gray-400",children:"Installierte Version"}),F.jsx("span",{className:"font-medium",children:Pe.currentVersion??"Unbekannt"})]}),F.jsxs("div",{className:"flex items-center justify-between",children:[F.jsx("span",{className:"text-gray-400",children:"Neueste Version"}),F.jsx("span",{className:"font-medium",children:Pe.latestVersion??"Unbekannt"})]}),F.jsxs("div",{className:"flex items-center justify-between",children:[F.jsx("span",{className:"text-gray-400",children:"Status"}),F.jsx("span",{className:`rounded-full px-3 py-0.5 text-xs font-semibold ${Pe.updateAvailable===!0?_l.error:Pe.updateAvailable===!1?_l.success:_l.idle}`,children:Pe.updateAvailable===!0?"Update verfügbar":Pe.updateAvailable===!1?"Aktuell":"Unbekannt"})]}),Pe.edition&&F.jsxs("div",{className:"flex items-center justify-between",children:[F.jsx("span",{className:"text-gray-400",children:"Edition"}),F.jsx("span",{className:"font-medium",children:Pe.edition})]}),Pe.build&&F.jsxs("div",{className:"flex items-center justify-between",children:[F.jsx("span",{className:"text-gray-400",children:"Build"}),F.jsx("span",{className:"font-medium",children:Pe.build})]}),(($n=Pe.errors)==null?void 0:$n.latestVersion)&&F.jsxs("div",{className:"rounded-md border border-amber-500/40 bg-amber-900/40 px-3 py-2 text-xs text-amber-100",children:["Neueste Version konnte nicht ermittelt werden: ",Pe.errors.latestVersion]}),((qn=Pe.errors)==null?void 0:qn.container)&&F.jsxs("div",{className:"rounded-md border border-amber-500/40 bg-amber-900/40 px-3 py-2 text-xs text-amber-100",children:["Container-Details konnten nicht ermittelt werden: ",Pe.errors.container]})]})}),F.jsxs("div",{className:"mt-6 grid gap-6 lg:grid-cols-2 xl:grid-cols-3",childre
Line truncated
|
||||||
Vendored
+15
@@ -0,0 +1,15 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>StackPulse</title>
|
||||||
|
|
||||||
|
<script type="module" crossorigin src="/assets/index-e96128a6.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assets/index-736c8c6c.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="root"></div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Generated
+3397
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user