Add compliance & operational document store (PocketBase)
Introduces a `documents` collection and full-stack UI for tracking pilot certificates, aircraft registrations, insurance, airspace authorisations, contracts, and other paperwork. - Migration 1720300800_add_documents.js (also provisioned live on remote PB): doc_type/owner/expiry/status/access_tier + file blob, a self-referential `replaces` version chain, audit fields, and a partial index on expiry_date. - API Server (documents.go): role-scoped CRUD, server-computed expiry assessment, ?expiring=N query, versioning (replaces -> version+1, old row auto-archived), and streamed blob download. admin.go gains multipart upload, file tokens, and protected-file streaming. - Web App: BFF passthrough (multipart create + streamed download), api.js client fns, and Documents.vue wired into the Documents nav slot. Blobs live in PocketBase file storage for now; only that backend swaps when S3-compatible object storage lands. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
e3106d7b60
commit
52f84ad6cf
14 files changed
+1481
-23
No files matched your search
@@ -465,6 +465,70 @@ func (a *App) handleExportLogbook(w http.ResponseWriter, r *http.Request) {
|
||||
_, _ = io.Copy(w, resp.Body)
|
||||
}
|
||||
|
||||
/* ---------- Documents ---------- */
|
||||
|
||||
// GET /bff/documents → API Server /api/documents (preserves ?expiring=N).
|
||||
func (a *App) handleListDocuments(w http.ResponseWriter, r *http.Request) {
|
||||
target := a.apiBaseFor(r) + "/api/documents"
|
||||
if r.URL.RawQuery != "" {
|
||||
target += "?" + r.URL.RawQuery
|
||||
}
|
||||
req, _ := http.NewRequest(http.MethodGet, target, nil)
|
||||
req.Header.Set("Authorization", tokenOf(r))
|
||||
a.doRelay(w, req)
|
||||
}
|
||||
|
||||
// POST /bff/documents → API Server /api/documents. Streams the multipart body
|
||||
// through unchanged (metadata fields + the optional file blob).
|
||||
func (a *App) handleCreateDocument(w http.ResponseWriter, r *http.Request) {
|
||||
req, _ := http.NewRequest(http.MethodPost, a.apiBaseFor(r)+"/api/documents", r.Body)
|
||||
req.Header.Set("Authorization", tokenOf(r))
|
||||
if ct := r.Header.Get("Content-Type"); ct != "" {
|
||||
req.Header.Set("Content-Type", ct)
|
||||
}
|
||||
req.ContentLength = r.ContentLength
|
||||
a.doRelay(w, req)
|
||||
}
|
||||
|
||||
// PATCH /bff/documents/{id} → API Server /api/documents/{id} (JSON metadata).
|
||||
func (a *App) handleUpdateDocument(w http.ResponseWriter, r *http.Request) {
|
||||
id := r.PathValue("id")
|
||||
body, _ := io.ReadAll(r.Body)
|
||||
req, _ := http.NewRequest(http.MethodPatch, a.apiBaseFor(r)+"/api/documents/"+url.PathEscape(id), bytes.NewReader(body))
|
||||
req.Header.Set("Authorization", tokenOf(r))
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
a.doRelay(w, req)
|
||||
}
|
||||
|
||||
// DELETE /bff/documents/{id} → API Server /api/documents/{id}
|
||||
func (a *App) handleDeleteDocument(w http.ResponseWriter, r *http.Request) {
|
||||
id := r.PathValue("id")
|
||||
req, _ := http.NewRequest(http.MethodDelete, a.apiBaseFor(r)+"/api/documents/"+url.PathEscape(id), nil)
|
||||
req.Header.Set("Authorization", tokenOf(r))
|
||||
a.doRelay(w, req)
|
||||
}
|
||||
|
||||
// GET /bff/documents/{id}/file → API Server /api/documents/{id}/file. Streams
|
||||
// the blob download, preserving the upstream Content-Type + Content-Disposition.
|
||||
func (a *App) handleDownloadDocument(w http.ResponseWriter, r *http.Request) {
|
||||
id := r.PathValue("id")
|
||||
req, _ := http.NewRequest(http.MethodGet, a.apiBaseFor(r)+"/api/documents/"+url.PathEscape(id)+"/file", nil)
|
||||
req.Header.Set("Authorization", tokenOf(r))
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
writeJSON(w, http.StatusBadGateway, map[string]any{"error": "cannot reach API server"})
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
for _, h := range []string{"Content-Type", "Content-Disposition", "Content-Length"} {
|
||||
if v := resp.Header.Get(h); v != "" {
|
||||
w.Header().Set(h, v)
|
||||
}
|
||||
}
|
||||
w.WriteHeader(resp.StatusCode)
|
||||
_, _ = io.Copy(w, resp.Body)
|
||||
}
|
||||
|
||||
// doRelay executes an outbound request and relays the response verbatim.
|
||||
func (a *App) doRelay(w http.ResponseWriter, req *http.Request) {
|
||||
resp, err := client.Do(req)
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
:root,[data-theme=light]{--navy-950: #0B1730;--navy-900: #0F1E3D;--navy-800: #1B2E52;--navy-700: #26406E;--blue-50: #EAF1FE;--blue-100: #D6E3FD;--blue-200: #B4CDFA;--blue-300: #8FB4F6;--blue-400: #5B93F5;--blue-500: #3D7BF0;--blue-600: #2B62CC;--blue-700: #1F4CA0;--slate-0: #FFFFFF;--slate-50: #F6F7F9;--slate-100: #EEF0F3;--slate-150: #E6E9EE;--slate-200: #DCE0E7;--slate-300: #C5CCD7;--slate-400: #97A1B0;--slate-500: #6B7688;--slate-600: #4C5566;--slate-700: #333B4A;--slate-800: #1E2635;--slate-900: #131A28;--slate-950: #0B111C;--steel: #5A6B85;--green-500: #1F8A5B;--green-100: #DCF1E7;--green-600:#177049;--amber-500: #D9852B;--amber-100: #FBEBD5;--amber-600:#B86C1B;--red-500: #D64545;--red-100: #FBE0E0;--red-600: #B83232;--bg-app: var(--slate-100);--bg-subtle: var(--slate-50);--surface: var(--slate-0);--surface-2: var(--slate-50);--surface-inset: var(--slate-100);--border: var(--slate-200);--border-strong: var(--slate-300);--border-subtle: var(--slate-150);--text-primary: var(--navy-900);--text-secondary:var(--steel);--text-tertiary: var(--slate-400);--text-inverse: var(--slate-0);--text-on-accent:#FFFFFF;--accent: var(--blue-500);--accent-hover: var(--blue-600);--accent-active: var(--blue-700);--accent-soft: var(--blue-50);--accent-soft-fg:var(--blue-700);--focus-ring: color-mix(in srgb, var(--blue-500) 45%, transparent);--success: var(--green-500);--success-soft: var(--green-100);--success-fg: var(--green-600);--warning: var(--amber-500);--warning-soft: var(--amber-100);--warning-fg: var(--amber-600);--danger: var(--red-500);--danger-soft: var(--red-100);--danger-fg: var(--red-600);--overlay: color-mix(in srgb, var(--navy-950) 55%, transparent);--font-sans: "Space Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Space Mono", ui-monospace, "SF Mono", "JetBrains Mono", monospace;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgba(15,30,61,.06);--shadow-sm: 0 1px 2px rgba(15,30,61,.06), 0 1px 3px rgba(15,30,61,.04);--shadow-md: 0 2px 4px rgba(15,30,61,.06), 0 6px 16px rgba(15,30,61,.08);--shadow-lg: 0 8px 24px rgba(15,30,61,.1), 0 2px 6px rgba(15,30,61,.06);--ease-standard: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-fast: .12s;--dur-base: .2s;color-scheme:light}[data-theme=dark]{--bg-app: var(--navy-950);--bg-subtle: var(--slate-950);--surface: #10203F;--surface-2: #142748;--surface-inset: var(--navy-950);--border: color-mix(in srgb, #FFFFFF 10%, transparent);--border-strong: color-mix(in srgb, #FFFFFF 18%, transparent);--border-subtle: color-mix(in srgb, #FFFFFF 6%, transparent);--text-primary: #F4F7FC;--text-secondary:#8FA0BE;--text-tertiary: #5E6E8C;--text-inverse: var(--navy-900);--text-on-accent:#FFFFFF;--accent: var(--blue-400);--accent-hover: var(--blue-300);--accent-active: var(--blue-200);--accent-soft: color-mix(in srgb, var(--blue-500) 18%, transparent);--accent-soft-fg:var(--blue-300);--focus-ring: color-mix(in srgb, var(--blue-400) 55%, transparent);--success:var(--green-500);--success-soft: color-mix(in srgb, var(--green-500) 22%, transparent);--success-fg:#5FD3A0;--warning:var(--amber-500);--warning-soft: color-mix(in srgb, var(--amber-500) 22%, transparent);--warning-fg:#F0B26A;--danger: var(--red-500);--danger-soft: color-mix(in srgb, var(--red-500) 22%, transparent);--danger-fg: #F08A8A;--overlay: color-mix(in srgb, #000000 62%, transparent);--shadow-xs: 0 1px 2px rgba(0,0,0,.35);--shadow-sm: 0 1px 3px rgba(0,0,0,.4);--shadow-md: 0 4px 12px rgba(0,0,0,.45);--shadow-lg: 0 12px 32px rgba(0,0,0,.5);color-scheme:dark}*,: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(59 130 246 / .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-Line truncated
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))l(u);new MutationObserver(u=>{for(const d of u)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&l(h)}).observe(document,{childList:!0,subtree:!0});function o(u){const d={};return u.integrity&&(d.integrity=u.integrity),u.referrerPolicy&&(d.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?d.credentials="include":u.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function l(u){if(u.ep)return;u.ep=!0;const d=o(u);fetch(u.href,d)}})();/**
|
||||
* @vue/shared v3.5.39
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/function yr(t){const i=Object.create(null);for(const o of t.split(","))i[o]=1;return o=>o in i}const ft={},_s=[],Un=()=>{},su=()=>!1,ua=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),ca=t=>t.startsWith("onUpdate:"),Ot=Object.assign,br=(t,i)=>{const o=t.indexOf(i);o>-1&&t.splice(o,1)},ed=Object.prototype.hasOwnProperty,ot=(t,i)=>ed.call(t,i),Ee=Array.isArray,ys=t=>po(t)==="[object Map]",Cs=t=>po(t)==="[object Set]",sl=t=>po(t)==="[object Date]",He=t=>typeof t=="function",xt=t=>typeof t=="string",Ln=t=>typeof t=="symbol",at=t=>t!==null&&typeof t=="object",ou=t=>(at(t)||He(t))&&He(t.then)&&He(t.catch),au=Object.prototype.toString,po=t=>au.call(t),td=t=>po(t).slice(8,-1),ru=t=>po(t)==="[object Object]",xr=t=>xt(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Xs=yr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),da=t=>{const i=Object.create(null);return(o=>i[o]||(i[o]=t(o)))},nd=/-\w/g,Tn=da(t=>t.replace(nd,i=>i.slice(1).toUpperCase())),id=/\B([A-Z])/g,Ci=da(t=>t.replace(id,"-$1").toLowerCase()),lu=da(t=>t.charAt(0).toUpperCase()+t.slice(1)),Wa=da(t=>t?`on${lu(t)}`:""),Vn=(t,i)=>!Object.is(t,i),qo=(t,...i)=>{for(let o=0;o<t.length;o++)t[o](...i)},uu=(t,i,o,l=!1)=>{Object.defineProperty(t,i,{configurable:!0,enumerable:!1,writable:l,value:o})},fa=t=>{const i=parseFloat(t);return isNaN(i)?t:i},sd=t=>{const i=xt(t)?Number(t):NaN;return isNaN(i)?t:i};let ol;const ha=()=>ol||(ol=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ss(t){if(Ee(t)){const i={};for(let o=0;o<t.length;o++){const l=t[o],u=xt(l)?ld(l):Ss(l);if(u)for(const d in u)i[d]=u[d]}return i}else if(xt(t)||at(t))return t}const od=/;(?![^(]*\))/g,ad=/:([^]+)/,rd=/\/\*[^]*?\*\//g;function ld(t){const i={};return t.replace(rd,"").split(od).forEach(o=>{if(o){const l=o.split(ad);l.length>1&&(i[l[0].trim()]=l[1].trim())}}),i}function Le(t){let i="";if(xt(t))i=t;else if(Ee(t))for(let o=0;o<t.length;o++){const l=Le(t[o]);l&&(i+=l+" ")}else if(at(t))for(const o in t)t[o]&&(i+=o+" ");return i.trim()}const ud="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",cd=yr(ud);function cu(t){return!!t||t===""}function dd(t,i){if(t.length!==i.length)return!1;let o=!0;for(let l=0;o&&l<t.length;l++)o=Si(t[l],i[l]);return o}function Si(t,i){if(t===i)return!0;let o=sl(t),l=sl(i);if(o||l)return o&&l?t.getTime()===i.getTime():!1;if(o=Ln(t),l=Ln(i),o||l)return t===i;if(o=Ee(t),l=Ee(i),o||l)return o&&l?dd(t,i):!1;if(o=at(t),l=at(i),o||l){if(!o||!l)return!1;const u=Object.keys(t).length,d=Object.keys(i).length;if(u!==d)return!1;for(const h in t){const _=t.hasOwnProperty(h),y=i.hasOwnProperty(h);if(_&&!y||!_&&y||!Si(t[h],i[h]))return!1}}return String(t)===String(i)}function wr(t,i){return t.findIndex(o=>Si(o,i))}const du=t=>!!(t&&t.__v_isRef===!0),k=t=>xt(t)?t:t==null?"":Ee(t)||at(t)&&(t.toString===au||!He(t.toString))?du(t)?k(t.value):JSON.stringify(t,fu,2):String(t),fu=(t,i)=>du(i)?fu(t,i.value):ys(i)?{[`Map(${i.size})`]:[...i.entries()].reduce((o,[l,u],d)=>(o[Ka(l,d)+" =>"]=u,o),{})}:Cs(i)?{[`Set(${i.size})`]:[...i.values()].map(o=>Ka(o))}:Ln(i)?Ka(i):at(i)&&!Ee(i)&&!ru(i)?String(i):i,Ka=(t,i="")=>{var o;return Ln(t)?`Symbol(${(o=t.description)!=null?o:i})`:t};/**
|
||||
* @vue/reactivity v3.5.39
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/let It;class fd{constructor(i=!1){this.detached=i,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!i&&It&&(It.active?(this.parent=It,this.index=(It.scopes||(It.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let i,o;if(this.scopes)for(i=0,o=this.scopes.length;i<o;i++)this.scopes[i].pause();for(i=0,o=this.effects.length;i<o;i++)this.effects[i].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let i,o;if(this.scopes)for(i=0,o=this.scopes.length;i<o;i++)this.scopes[i].resume();for(i=0,o=this.effects.length;i<o;i++)this.effects[i].resume()}}run(i){if(this._active){const o=It;try{return It=this,i()}finally{It=o}}}on(){++this._on===1&&(this.prevScope=It,It=this)}off(){if(this._on>0&&--this._on===0){if(It===this)It=this.prevScope;else{let i=It;for(;i;){if(i.prevScope===this){i.prevScope=this.prevScope;break}i=i.prevScope}}this.prevScope=void 0}}stop(i){if(this._active){this._active=!1;let o,l;for(o=0,l=this.effects.length;o<l;o++)this.effects[o].stop();for(this.effects.length=0,o=0,l=this.cleanups.length;o<l;o++)this.cleanups[o]();if(this.cleanups.length=0,this.scopes){for(o=0,l=this.scopes.length;o<l;o++)this.scopes[o].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!i){const u=this.parent.scopes.pop();u&&u!==this&&(this.parent.scopes[this.index]=u,u.index=this.index)}this.parent=void 0}}}function hd(){return It}let mt;const Ga=new WeakSet;class hu{constructor(i){this.fn=i,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,It&&(It.active?It.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ga.has(this)&&(Ga.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||mu(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,al(this),gu(this);const i=mt,o=Cn;mt=this,Cn=!0;try{return this.fn()}finally{vu(this),mt=i,Cn=o,this.flags&=-3}}stop(){if(this.flags&1){for(let i=this.deps;i;i=i.nextDep)Pr(i);this.deps=this.depsTail=void 0,al(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ga.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){sr(this)&&this.run()}get dirty(){return sr(this)}}let pu=0,Qs,eo;function mu(t,i=!1){if(t.flags|=8,i){t.next=eo,eo=t;return}t.next=Qs,Qs=t}function kr(){pu++}function Sr(){if(--pu>0)return;if(eo){let i=eo;for(eo=void 0;i;){const o=i.next;i.next=void 0,i.flags&=-9,i=o}}let t;for(;Qs;){let i=Qs;for(Qs=void 0;i;){const o=i.next;if(i.next=void 0,i.flags&=-9,i.flags&1)try{i.trigger()}catch(l){t||(t=l)}i=o}}if(t)throw t}function gu(t){for(let i=t.deps;i;i=i.nextDep)i.version=-1,i.prevActiveLink=i.dep.activeLink,i.dep.activeLink=i}function vu(t){let i,o=t.depsTail,l=o;for(;l;){const u=l.prevDep;l.version===-1?(l===o&&(o=u),Pr(l),pd(l)):i=l,l.dep.activeLink=l.prevActiveLink,l.prevActiveLink=void 0,l=u}t.deps=i,t.depsTail=o}function sr(t){for(let i=t.deps;i;i=i.nextDep)if(i.dep.version!==i.version||i.dep.computed&&(_u(i.dep.computed)||i.dep.version!==i.version))return!0;return!!t._dirty}function _u(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===oo)||(t.globalVersion=oo,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!sr(t))))return;t.flags|=2;const i=t.dep,o=mt,l=Cn;mt=t,Cn=!0;try{gu(t);const u=t.fn(t._value);(i.version===0||Vn(u,t._value))&&(t.flags|=128,t._value=u,i.version++)}catch(u){throw i.version++,u}finally{mt=o,Cn=l,vu(t),t.flags&=-3}}function Pr(t,i=!1){const{dep:o,prevSub:l,nextSub:u}=t;if(l&&(l.nextSub=u,t.prevSub=void 0),u&&(u.prevSub=l,t.nextSub=void 0),o.subs===t&&(o.subs=l,!l&&o.computed)){o.computed.flags&=-5;for(let d=o.computed.deps;d;d=d.nextDep)Pr(d,!0)}!i&&!--o.sc&&o.map&&o.map.delete(o.key)}function pd(t){const{prevDep:i,nextDep:o}=t;i&&(i.nextDep=o,t.prevDep=void 0),o&&(o.prevDep=i,t.nextDep=void 0)}let Cn=!0;const yu=[];function Zn(){yu.push(Cn),Cn=!1}function Hn(){const t=yu.pop();Cn=t===void 0?!0:t}function al(t){const{cleanup:i}=t;if(t.cleanup=void 0,i){const o=mt;mt=void 0;try{i()}finally{mt=o}}}let oo=0;class md{constructor(i,o){this.sub=i,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Tr{constructor(i){this.computed=i,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(i){if(!mt||!Cn||mt===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==mt)o=this.activeLink=new md(mt,this),mt.deps?(o.prevDep=mt.depsTail,mt.depsTail.nextDep=o,mt.depsTail=o):mt.deps=mt.depsTail=o,bu(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const l=o.nextDep;l.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=l),o.prevDep=mt.depsTail,o.nextDep=void 0,mt.depsTail.nextDep=o,mt.depsTail=o,mt.deps===o&&(mt.deps=l)}return o}trigger(i){this.versiLine truncated
|
||||
* @vue/runtime-core v3.5.39
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/function mo(t,i,o,l){try{return l?t(...l):t()}catch(u){ma(u,i,o)}}function vn(t,i,o,l){if(He(t)){const u=mo(t,i,o,l);return u&&ou(u)&&u.catch(d=>{ma(d,i,o)}),u}if(Ee(t)){const u=[];for(let d=0;d<t.length;d++)u.push(vn(t[d],i,o,l));return u}}function ma(t,i,o,l=!0){const u=i?i.vnode:null,{errorHandler:d,throwUnhandledErrorInProduction:h}=i&&i.appContext.config||ft;if(i){let _=i.parent;const y=i.proxy,T=`https://vuejs.org/error-reference/#runtime-${o}`;for(;_;){const w=_.ec;if(w){for(let z=0;z<w.length;z++)if(w[z](t,y,T)===!1)return}_=_.parent}if(d){Zn(),mo(d,null,10,[t,y,T]),Hn();return}}Bd(t,o,u,l,h)}function Bd(t,i,o,l=!0,u=!1){if(u)throw t;console.error(t)}const Kt=[];let Rn=-1;const bs=[];let ki=null,vs=0;const Lu=Promise.resolve();let Xo=null;function Mu(t){const i=Xo||Lu;return t?i.then(this?t.bind(this):t):i}function Vd(t){let i=Rn+1,o=Kt.length;for(;i<o;){const l=i+o>>>1,u=Kt[l],d=ro(u);d<t||d===t&&u.flags&2?i=l+1:o=l}return i}function Er(t){if(!(t.flags&1)){const i=ro(t),o=Kt[Kt.length-1];!o||!(t.flags&2)&&i>=ro(o)?Kt.push(t):Kt.splice(Vd(i),0,t),t.flags|=1,Eu()}}function Eu(){Xo||(Xo=Lu.then(zu))}function Ud(t){Ee(t)?bs.push(...t):ki&&t.id===-1?ki.splice(vs+1,0,t):t.flags&1||(bs.push(t),t.flags|=1),Eu()}function ll(t,i,o=Rn+1){for(;o<Kt.length;o++){const l=Kt[o];if(l&&l.flags&2){if(t&&l.id!==t.uid)continue;Kt.splice(o,1),o--,l.flags&4&&(l.flags&=-2),l(),l.flags&4||(l.flags&=-2)}}}function Ou(t){if(bs.length){const i=[...new Set(bs)].sort((o,l)=>ro(o)-ro(l));if(bs.length=0,ki){ki.push(...i);return}for(ki=i,vs=0;vs<ki.length;vs++){const o=ki[vs];o.flags&4&&(o.flags&=-2),o.flags&8||o(),o.flags&=-2}ki=null,vs=0}}const ro=t=>t.id==null?t.flags&2?-1:1/0:t.id;function zu(t){try{for(Rn=0;Rn<Kt.length;Rn++){const i=Kt[Rn];i&&!(i.flags&8)&&(i.flags&4&&(i.flags&=-2),mo(i,i.i,i.i?15:14),i.flags&4||(i.flags&=-2))}}finally{for(;Rn<Kt.length;Rn++){const i=Kt[Rn];i&&(i.flags&=-2)}Rn=-1,Kt.length=0,Ou(),Xo=null,(Kt.length||bs.length)&&zu()}}let Ft=null,Au=null;function Qo(t){const i=Ft;return Ft=t,Au=t&&t.type.__scopeId||null,i}function ye(t,i=Ft,o){if(!i||t._n)return t;const l=(...u)=>{l._d&&na(-1);const d=Qo(i);let h;try{h=t(...u)}finally{Qo(d),l._d&&na(1)}return h};return l._n=!0,l._c=!0,l._d=!0,l}function re(t,i){if(Ft===null)return t;const o=xa(Ft),l=t.dirs||(t.dirs=[]);for(let u=0;u<i.length;u++){let[d,h,_,y=ft]=i[u];d&&(He(d)&&(d={mounted:d,updated:d}),d.deep&&ai(h),l.push({dir:d,instance:o,value:h,oldValue:void 0,arg:_,modifiers:y}))}return t}function Ui(t,i,o,l){const u=t.dirs,d=i&&i.dirs;for(let h=0;h<u.length;h++){const _=u[h];d&&(_.oldValue=d[h].value);let y=_.dir[l];y&&(Zn(),vn(y,o,8,[t.el,_,t,i]),Hn())}}function Iu(t,i){if(Gt){let o=Gt.provides;const l=Gt.parent&&Gt.parent.provides;l===o&&(o=Gt.provides=Object.create(l)),o[t]=i}}function to(t,i,o=!1){const l=fc();if(l||ws){let u=ws?ws._context.provides:l?l.parent==null||l.ce?l.vnode.appContext&&l.vnode.appContext.provides:l.parent.provides:void 0;if(u&&t in u)return u[t];if(arguments.length>1)return o&&He(i)?i.call(l&&l.proxy):i}}const Zd=Symbol.for("v-scx"),Hd=()=>to(Zd);function en(t,i,o){return $u(t,i,o)}function $u(t,i,o=ft){const{immediate:l,deep:u,flush:d,once:h}=o,_=Ot({},o),y=i&&l||!i&&d!=="post";let T;if(fo){if(d==="sync"){const V=Hd();T=V.__watcherHandles||(V.__watcherHandles=[])}else if(!y){const V=()=>{};return V.stop=Un,V.resume=Un,V.pause=Un,V}}const w=Gt;_.call=(V,ue,X)=>vn(V,w,ue,X);let z=!1;d==="post"?_.scheduler=V=>{Qt(V,w&&w.suspense)}:d!=="sync"&&(z=!0,_.scheduler=(V,ue)=>{ue?V():Er(V)}),_.augmentJob=V=>{i&&(V.flags|=4),z&&(V.flags|=2,w&&(V.id=w.uid,V.i=w))};const U=Fd(t,i,_);return fo&&(T?T.push(U):y&&U()),U}function jd(t,i,o){const l=this.proxy,u=xt(t)?t.includes(".")?Du(l,t):()=>l[t]:t.bind(l,l);let d;He(i)?d=i:(d=i.handler,o=i);const h=go(this),_=$u(u,d.bind(l),o);return h(),_}function Du(t,i){const o=i.split(".");return()=>{let l=t;for(let u=0;u<o.length&&l;u++)l=l[o[u]];return l}}const Wd=Symbol("_vte"),Nu=t=>t.__isTeleport,pn=Symbol("_leaveCb"),Ws=Symbol("_enterCb");function Kd(){const t={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Li(()=>{t.isMounted=!0}),_a(()=>{t.isUnmounting=!0}),t}const fn=[Function,Array],Ru={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:fn,onEnter:fn,onAfterEnter:fn,onEnterCancelled:fn,onBeforeLeave:fn,onLeave:fn,onAfterLeave:fn,onLeaveCancelled:fn,onBeforeAppear:fn,onAppear:fn,onAfterAppear:fn,onAppearCancelled:fn},Fu=t=>{const i=t.subTree;return i.component?Fu(i.component):i},Gd={name:"BaseTransition",props:Ru,setup(t,{slots:i}){const o=fc(),l=Kd();return()=>{const u=i.default&&Uu(i.default(),!0),d=u&&u.length?Bu(u):o.subTree?R():void 0;if(!d)return;const h=tt(t),{mode:_}=h;if(l.isLeaving)return Ja(d);const y=ul(d);if(!y)return Ja(d);let T=ur(y,h,l,o,z=>T=z);y.type!==Rt&&lo(y,T);let w=o.subTree&&ul(o.subTree);if(w&&w.type!==Rt&&!Ki(w,y)&&Fu(o).type!==Rt){let z=ur(w,h,l,o);if(lo(w,z),_==="out-in"&&y.type!==Rt)return l.isLeaving=!0,z.afterLeave=()=>{l.isLea
Line truncated
|
||||
* @vue/runtime-dom v3.5.39
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/let mr;const wl=typeof window<"u"&&window.trustedTypes;if(wl)try{mr=wl.createPolicy("vue",{createHTML:t=>t})}catch{}const mc=mr?t=>mr.createHTML(t):t=>t,qf="http://www.w3.org/2000/svg",Yf="http://www.w3.org/1998/Math/MathML",ii=typeof document<"u"?document:null,kl=ii&&ii.createElement("template"),Jf={insert:(t,i,o)=>{i.insertBefore(t,o||null)},remove:t=>{const i=t.parentNode;i&&i.removeChild(t)},createElement:(t,i,o,l)=>{const u=i==="svg"?ii.createElementNS(qf,t):i==="mathml"?ii.createElementNS(Yf,t):o?ii.createElement(t,{is:o}):ii.createElement(t);return t==="select"&&l&&l.multiple!=null&&u.setAttribute("multiple",l.multiple),u},createText:t=>ii.createTextNode(t),createComment:t=>ii.createComment(t),setText:(t,i)=>{t.nodeValue=i},setElementText:(t,i)=>{t.textContent=i},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>ii.querySelector(t),setScopeId(t,i){t.setAttribute(i,"")},insertStaticContent(t,i,o,l,u,d){const h=o?o.previousSibling:i.lastChild;if(u&&(u===d||u.nextSibling))for(;i.insertBefore(u.cloneNode(!0),o),!(u===d||!(u=u.nextSibling)););else{kl.innerHTML=mc(l==="svg"?`<svg>${t}</svg>`:l==="mathml"?`<math>${t}</math>`:t);const _=kl.content;if(l==="svg"||l==="mathml"){const y=_.firstChild;for(;y.firstChild;)_.appendChild(y.firstChild);_.removeChild(y)}i.insertBefore(_,o)}return[h?h.nextSibling:i.firstChild,o?o.previousSibling:i.lastChild]}},wi="transition",Ks="animation",ho=Symbol("_vtc"),gc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Xf=Ot({},Ru,gc),Qf=t=>(t.displayName="Transition",t.props=Xf,t),eh=Qf((t,{slots:i})=>Kf(qd,th(t),i)),Hi=(t,i=[])=>{Ee(t)?t.forEach(o=>o(...i)):t&&t(...i)},Sl=t=>t?Ee(t)?t.some(i=>i.length>1):t.length>1:!1;function th(t){const i={};for(const ee in t)ee in gc||(i[ee]=t[ee]);if(t.css===!1)return i;const{name:o="v",type:l,duration:u,enterFromClass:d=`${o}-enter-from`,enterActiveClass:h=`${o}-enter-active`,enterToClass:_=`${o}-enter-to`,appearFromClass:y=d,appearActiveClass:T=h,appearToClass:w=_,leaveFromClass:z=`${o}-leave-from`,leaveActiveClass:U=`${o}-leave-active`,leaveToClass:V=`${o}-leave-to`}=t,ue=nh(u),X=ue&&ue[0],Ae=ue&&ue[1],{onBeforeEnter:$e,onEnter:Q,onEnterCancelled:me,onLeave:oe,onLeaveCancelled:de,onBeforeAppear:Ne=$e,onAppear:nt=Q,onAppearCancelled:ke=me}=i,Te=(ee,pe,Re,Ze)=>{ee._enterCancelled=Ze,ji(ee,pe?w:_),ji(ee,pe?T:h),Re&&Re()},Be=(ee,pe)=>{ee._isLeaving=!1,ji(ee,z),ji(ee,V),ji(ee,U),pe&&pe()},Ce=ee=>(pe,Re)=>{const Ze=ee?nt:Q,he=()=>Te(pe,ee,Re);Hi(Ze,[pe,he]),Pl(()=>{ji(pe,ee?y:d),ni(pe,ee?w:_),Sl(Ze)||Tl(pe,l,X,he)})};return Ot(i,{onBeforeEnter(ee){Hi($e,[ee]),ni(ee,d),ni(ee,h)},onBeforeAppear(ee){Hi(Ne,[ee]),ni(ee,y),ni(ee,T)},onEnter:Ce(!1),onAppear:Ce(!0),onLeave(ee,pe){ee._isLeaving=!0;const Re=()=>Be(ee,pe);ni(ee,z),ee._enterCancelled?(ni(ee,U),Ml(ee)):(Ml(ee),ni(ee,U)),Pl(()=>{ee._isLeaving&&(ji(ee,z),ni(ee,V),Sl(oe)||Tl(ee,l,Ae,Re))}),Hi(oe,[ee,Re])},onEnterCancelled(ee){Te(ee,!1,void 0,!0),Hi(me,[ee])},onAppearCancelled(ee){Te(ee,!0,void 0,!0),Hi(ke,[ee])},onLeaveCancelled(ee){Be(ee),Hi(de,[ee])}})}function nh(t){if(t==null)return null;if(at(t))return[tr(t.enter),tr(t.leave)];{const i=tr(t);return[i,i]}}function tr(t){return sd(t)}function ni(t,i){i.split(/\s+/).forEach(o=>o&&t.classList.add(o)),(t[ho]||(t[ho]=new Set)).add(i)}function ji(t,i){i.split(/\s+/).forEach(l=>l&&t.classList.remove(l));const o=t[ho];o&&(o.delete(i),o.size||(t[ho]=void 0))}function Pl(t){requestAnimationFrame(()=>{requestAnimationFrame(t)})}let ih=0;function Tl(t,i,o,l){const u=t._endId=++ih,d=()=>{u===t._endId&&l()};if(o!=null)return setTimeout(d,o);const{type:h,timeout:_,propCount:y}=sh(t,i);if(!h)return l();const T=h+"end";let w=0;const z=()=>{t.removeEventListener(T,U),d()},U=V=>{V.target===t&&++w>=y&&z()};setTimeout(()=>{w<y&&z()},_+1),t.addEventListener(T,U)}function sh(t,i){const o=window.getComputedStyle(t),l=ue=>(o[ue]||"").split(", "),u=l(`${wi}Delay`),d=l(`${wi}Duration`),h=Cl(u,d),_=l(`${Ks}Delay`),y=l(`${Ks}Duration`),T=Cl(_,y);let w=null,z=0,U=0;i===wi?h>0&&(w=wi,z=h,U=d.length):i===Ks?T>0&&(w=Ks,z=T,U=y.length):(z=Math.max(h,T),w=z>0?h>T?wi:Ks:null,U=w?w===wi?d.length:y.length:0);const V=w===wi&&/\b(?:transform|all)(?:,|$)/.test(l(`${wi}Property`).toString());return{type:w,timeout:z,propCount:U,hasTransform:V}}function Cl(t,i){for(;t.length<i.length;)t=t.concat(t);return Math.max(...i.map((o,l)=>Ll(o)+Ll(t[l])))}function Ll(t){return t==="auto"?0:Number(t.slice(0,-1).replace(",","."))*1e3}function Ml(t){return(t?t.ownerDocument:document).body.offsetHeight}function oh(t,i,o){const l=t[ho];l&&(i=(i?[i,...l]:[...l]).join(" ")),i==null?t.removeAttribute("class"):o?t.setAttribute("class",i):t.className=i}const oa=Symbol("_vod"),vc=Symbol("_vsh"),ah={name:"show",beforeMount(t,{value:i},{trans
Line truncated
|
||||
* Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com
|
||||
* (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade
|
||||
*/var Vp=Js.exports,Xl;function Up(){return Xl||(Xl=1,(function(t,i){(function(o,l){l(i)})(Vp,(function(o){var l="1.9.4";function u(e){var n,s,a,c;for(s=1,a=arguments.length;s<a;s++){c=arguments[s];for(n in c)e[n]=c[n]}return e}var d=Object.create||(function(){function e(){}return function(n){return e.prototype=n,new e}})();function h(e,n){var s=Array.prototype.slice;if(e.bind)return e.bind.apply(e,s.call(arguments,1));var a=s.call(arguments,2);return function(){return e.apply(n,a.length?a.concat(s.call(arguments)):arguments)}}var _=0;function y(e){return"_leaflet_id"in e||(e._leaflet_id=++_),e._leaflet_id}function T(e,n,s){var a,c,p,P;return P=function(){a=!1,c&&(p.apply(s,c),c=!1)},p=function(){a?c=arguments:(e.apply(s,arguments),setTimeout(P,n),a=!0)},p}function w(e,n,s){var a=n[1],c=n[0],p=a-c;return e===a&&s?e:((e-c)%p+p)%p+c}function z(){return!1}function U(e,n){if(n===!1)return e;var s=Math.pow(10,n===void 0?6:n);return Math.round(e*s)/s}function V(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function ue(e){return V(e).split(/\s+/)}function X(e,n){Object.prototype.hasOwnProperty.call(e,"options")||(e.options=e.options?d(e.options):{});for(var s in n)e.options[s]=n[s];return e.options}function Ae(e,n,s){var a=[];for(var c in e)a.push(encodeURIComponent(s?c.toUpperCase():c)+"="+encodeURIComponent(e[c]));return(!n||n.indexOf("?")===-1?"?":"&")+a.join("&")}var $e=/\{ *([\w_ -]+) *\}/g;function Q(e,n){return e.replace($e,function(s,a){var c=n[a];if(c===void 0)throw new Error("No value provided for variable "+s);return typeof c=="function"&&(c=c(n)),c})}var me=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"};function oe(e,n){for(var s=0;s<e.length;s++)if(e[s]===n)return s;return-1}var de="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function Ne(e){return window["webkit"+e]||window["moz"+e]||window["ms"+e]}var nt=0;function ke(e){var n=+new Date,s=Math.max(0,16-(n-nt));return nt=n+s,window.setTimeout(e,s)}var Te=window.requestAnimationFrame||Ne("RequestAnimationFrame")||ke,Be=window.cancelAnimationFrame||Ne("CancelAnimationFrame")||Ne("CancelRequestAnimationFrame")||function(e){window.clearTimeout(e)};function Ce(e,n,s){if(s&&Te===ke)e.call(n);else return Te.call(window,h(e,n))}function ee(e){e&&Be.call(window,e)}var pe={__proto__:null,extend:u,create:d,bind:h,get lastId(){return _},stamp:y,throttle:T,wrapNum:w,falseFn:z,formatNum:U,trim:V,splitWords:ue,setOptions:X,getParamString:Ae,template:Q,isArray:me,indexOf:oe,emptyImageUrl:de,requestFn:Te,cancelFn:Be,requestAnimFrame:Ce,cancelAnimFrame:ee};function Re(){}Re.extend=function(e){var n=function(){X(this),this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},s=n.__super__=this.prototype,a=d(s);a.constructor=n,n.prototype=a;for(var c in this)Object.prototype.hasOwnProperty.call(this,c)&&c!=="prototype"&&c!=="__super__"&&(n[c]=this[c]);return e.statics&&u(n,e.statics),e.includes&&(Ze(e.includes),u.apply(null,[a].concat(e.includes))),u(a,e),delete a.statics,delete a.includes,a.options&&(a.options=s.options?d(s.options):{},u(a.options,e.options)),a._initHooks=[],a.callInitHooks=function(){if(!this._initHooksCalled){s.callInitHooks&&s.callInitHooks.call(this),this._initHooksCalled=!0;for(var p=0,P=a._initHooks.length;p<P;p++)a._initHooks[p].call(this)}},n},Re.include=function(e){var n=this.prototype.options;return u(this.prototype,e),e.options&&(this.prototype.options=n,this.mergeOptions(e.options)),this},Re.mergeOptions=function(e){return u(this.prototype.options,e),this},Re.addInitHook=function(e){var n=Array.prototype.slice.call(arguments,1),s=typeof e=="function"?e:function(){this[e].apply(this,n)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(s),this};function Ze(e){if(!(typeof L>"u"||!L||!L.Mixin)){e=me(e)?e:[e];for(var n=0;n<e.length;n++)e[n]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",new Error().stack)}}var he={on:function(e,n,s){if(typeof e=="object")for(var a in e)this._on(a,e[a],n);else{e=ue(e);for(var c=0,p=e.length;c<p;c++)this._on(e[c],n,s)}return this},off:function(e,n,s){if(!arguments.length)delete this._events;else if(typeof e=="object")for(var a in e)this._off(a,e[a],n);else{e=ue(e);for(var c=arguments.length===1,p=0,P=e.length;p<P;p++)c?this._off(e[p]):this._off(e[p],n,s)}return this},_on:function(e,n,s,a){if(typeof n!="function"){console.warn("wrong listener type: "+typeof n);return}if(this._listens(e,n,s)===!1){s===this&&(s=void 0);var c={fn:n,ctx:s};a&&(c.once=!0),this._events=this._events||{},this._events[e]=this._events[e]||[],this._events[e].push(c)}},_off:function(e,n,s){var a,c,p;if(this._events&&(a=this._events[e],!!a)){if(arguments.length===1){if(this._firingCount)for(c=0,p=a.length;c<p;c++)a[c].fn=z;delete this._events[e];return}if(typeof n!="function"){console.warn("wrong listener tLine truncated
|
||||
@@ -1 +0,0 @@
|
||||
:root,[data-theme=light]{--navy-950: #0B1730;--navy-900: #0F1E3D;--navy-800: #1B2E52;--navy-700: #26406E;--blue-50: #EAF1FE;--blue-100: #D6E3FD;--blue-200: #B4CDFA;--blue-300: #8FB4F6;--blue-400: #5B93F5;--blue-500: #3D7BF0;--blue-600: #2B62CC;--blue-700: #1F4CA0;--slate-0: #FFFFFF;--slate-50: #F6F7F9;--slate-100: #EEF0F3;--slate-150: #E6E9EE;--slate-200: #DCE0E7;--slate-300: #C5CCD7;--slate-400: #97A1B0;--slate-500: #6B7688;--slate-600: #4C5566;--slate-700: #333B4A;--slate-800: #1E2635;--slate-900: #131A28;--slate-950: #0B111C;--steel: #5A6B85;--green-500: #1F8A5B;--green-100: #DCF1E7;--green-600:#177049;--amber-500: #D9852B;--amber-100: #FBEBD5;--amber-600:#B86C1B;--red-500: #D64545;--red-100: #FBE0E0;--red-600: #B83232;--bg-app: var(--slate-100);--bg-subtle: var(--slate-50);--surface: var(--slate-0);--surface-2: var(--slate-50);--surface-inset: var(--slate-100);--border: var(--slate-200);--border-strong: var(--slate-300);--border-subtle: var(--slate-150);--text-primary: var(--navy-900);--text-secondary:var(--steel);--text-tertiary: var(--slate-400);--text-inverse: var(--slate-0);--text-on-accent:#FFFFFF;--accent: var(--blue-500);--accent-hover: var(--blue-600);--accent-active: var(--blue-700);--accent-soft: var(--blue-50);--accent-soft-fg:var(--blue-700);--focus-ring: color-mix(in srgb, var(--blue-500) 45%, transparent);--success: var(--green-500);--success-soft: var(--green-100);--success-fg: var(--green-600);--warning: var(--amber-500);--warning-soft: var(--amber-100);--warning-fg: var(--amber-600);--danger: var(--red-500);--danger-soft: var(--red-100);--danger-fg: var(--red-600);--overlay: color-mix(in srgb, var(--navy-950) 55%, transparent);--font-sans: "Space Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Space Mono", ui-monospace, "SF Mono", "JetBrains Mono", monospace;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgba(15,30,61,.06);--shadow-sm: 0 1px 2px rgba(15,30,61,.06), 0 1px 3px rgba(15,30,61,.04);--shadow-md: 0 2px 4px rgba(15,30,61,.06), 0 6px 16px rgba(15,30,61,.08);--shadow-lg: 0 8px 24px rgba(15,30,61,.1), 0 2px 6px rgba(15,30,61,.06);--ease-standard: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-fast: .12s;--dur-base: .2s;color-scheme:light}[data-theme=dark]{--bg-app: var(--navy-950);--bg-subtle: var(--slate-950);--surface: #10203F;--surface-2: #142748;--surface-inset: var(--navy-950);--border: color-mix(in srgb, #FFFFFF 10%, transparent);--border-strong: color-mix(in srgb, #FFFFFF 18%, transparent);--border-subtle: color-mix(in srgb, #FFFFFF 6%, transparent);--text-primary: #F4F7FC;--text-secondary:#8FA0BE;--text-tertiary: #5E6E8C;--text-inverse: var(--navy-900);--text-on-accent:#FFFFFF;--accent: var(--blue-400);--accent-hover: var(--blue-300);--accent-active: var(--blue-200);--accent-soft: color-mix(in srgb, var(--blue-500) 18%, transparent);--accent-soft-fg:var(--blue-300);--focus-ring: color-mix(in srgb, var(--blue-400) 55%, transparent);--success:var(--green-500);--success-soft: color-mix(in srgb, var(--green-500) 22%, transparent);--success-fg:#5FD3A0;--warning:var(--amber-500);--warning-soft: color-mix(in srgb, var(--amber-500) 22%, transparent);--warning-fg:#F0B26A;--danger: var(--red-500);--danger-soft: color-mix(in srgb, var(--red-500) 22%, transparent);--danger-fg: #F08A8A;--overlay: color-mix(in srgb, #000000 62%, transparent);--shadow-xs: 0 1px 2px rgba(0,0,0,.35);--shadow-sm: 0 1px 3px rgba(0,0,0,.4);--shadow-md: 0 4px 12px rgba(0,0,0,.45);--shadow-lg: 0 12px 32px rgba(0,0,0,.5);color-scheme:dark}*,: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(59 130 246 / .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-Line truncated
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))a(l);new MutationObserver(l=>{for(const d of l)if(d.type==="childList")for(const h of d.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&a(h)}).observe(document,{childList:!0,subtree:!0});function o(l){const d={};return l.integrity&&(d.integrity=l.integrity),l.referrerPolicy&&(d.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?d.credentials="include":l.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function a(l){if(l.ep)return;l.ep=!0;const d=o(l);fetch(l.href,d)}})();/**
|
||||
* @vue/shared v3.5.39
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/function ya(e){const i=Object.create(null);for(const o of e.split(","))i[o]=1;return o=>o in i}const ue={},vs=[],Zn=()=>{},su=()=>!1,ur=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),cr=e=>e.startsWith("onUpdate:"),Oe=Object.assign,ba=(e,i)=>{const o=e.indexOf(i);o>-1&&e.splice(o,1)},Qc=Object.prototype.hasOwnProperty,ee=(e,i)=>Qc.call(e,i),wt=Array.isArray,ys=e=>po(e)==="[object Map]",Ls=e=>po(e)==="[object Set]",sl=e=>po(e)==="[object Date]",Dt=e=>typeof e=="function",be=e=>typeof e=="string",Cn=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",ou=e=>(ne(e)||Dt(e))&&Dt(e.then)&&Dt(e.catch),ru=Object.prototype.toString,po=e=>ru.call(e),td=e=>po(e).slice(8,-1),au=e=>po(e)==="[object Object]",xa=e=>be(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Xs=ya(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),dr=e=>{const i=Object.create(null);return(o=>i[o]||(i[o]=e(o)))},ed=/-\w/g,Tn=dr(e=>e.replace(ed,i=>i.slice(1).toUpperCase())),nd=/\B([A-Z])/g,Li=dr(e=>e.replace(nd,"-$1").toLowerCase()),lu=dr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Wr=dr(e=>e?`on${lu(e)}`:""),Vn=(e,i)=>!Object.is(e,i),qo=(e,...i)=>{for(let o=0;o<e.length;o++)e[o](...i)},uu=(e,i,o,a=!1)=>{Object.defineProperty(e,i,{configurable:!0,enumerable:!1,writable:a,value:o})},fr=e=>{const i=parseFloat(e);return isNaN(i)?e:i},id=e=>{const i=be(e)?Number(e):NaN;return isNaN(i)?e:i};let ol;const hr=()=>ol||(ol=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ss(e){if(wt(e)){const i={};for(let o=0;o<e.length;o++){const a=e[o],l=be(a)?ad(a):Ss(a);if(l)for(const d in l)i[d]=l[d]}return i}else if(be(e)||ne(e))return e}const sd=/;(?![^(]*\))/g,od=/:([^]+)/,rd=/\/\*[^]*?\*\//g;function ad(e){const i={};return e.replace(rd,"").split(sd).forEach(o=>{if(o){const a=o.split(od);a.length>1&&(i[a[0].trim()]=a[1].trim())}}),i}function Ct(e){let i="";if(be(e))i=e;else if(wt(e))for(let o=0;o<e.length;o++){const a=Ct(e[o]);a&&(i+=a+" ")}else if(ne(e))for(const o in e)e[o]&&(i+=o+" ");return i.trim()}const ld="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",ud=ya(ld);function cu(e){return!!e||e===""}function cd(e,i){if(e.length!==i.length)return!1;let o=!0;for(let a=0;o&&a<e.length;a++)o=Si(e[a],i[a]);return o}function Si(e,i){if(e===i)return!0;let o=sl(e),a=sl(i);if(o||a)return o&&a?e.getTime()===i.getTime():!1;if(o=Cn(e),a=Cn(i),o||a)return e===i;if(o=wt(e),a=wt(i),o||a)return o&&a?cd(e,i):!1;if(o=ne(e),a=ne(i),o||a){if(!o||!a)return!1;const l=Object.keys(e).length,d=Object.keys(i).length;if(l!==d)return!1;for(const h in e){const _=e.hasOwnProperty(h),y=i.hasOwnProperty(h);if(_&&!y||!_&&y||!Si(e[h],i[h]))return!1}}return String(e)===String(i)}function wa(e,i){return e.findIndex(o=>Si(o,i))}const du=e=>!!(e&&e.__v_isRef===!0),P=e=>be(e)?e:e==null?"":wt(e)||ne(e)&&(e.toString===ru||!Dt(e.toString))?du(e)?P(e.value):JSON.stringify(e,fu,2):String(e),fu=(e,i)=>du(i)?fu(e,i.value):ys(i)?{[`Map(${i.size})`]:[...i.entries()].reduce((o,[a,l],d)=>(o[Kr(a,d)+" =>"]=l,o),{})}:Ls(i)?{[`Set(${i.size})`]:[...i.values()].map(o=>Kr(o))}:Cn(i)?Kr(i):ne(i)&&!wt(i)&&!au(i)?String(i):i,Kr=(e,i="")=>{var o;return Cn(e)?`Symbol(${(o=e.description)!=null?o:i})`:e};/**
|
||||
* @vue/reactivity v3.5.39
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/let Ae;class dd{constructor(i=!1){this.detached=i,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!i&&Ae&&(Ae.active?(this.parent=Ae,this.index=(Ae.scopes||(Ae.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let i,o;if(this.scopes)for(i=0,o=this.scopes.length;i<o;i++)this.scopes[i].pause();for(i=0,o=this.effects.length;i<o;i++)this.effects[i].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let i,o;if(this.scopes)for(i=0,o=this.scopes.length;i<o;i++)this.scopes[i].resume();for(i=0,o=this.effects.length;i<o;i++)this.effects[i].resume()}}run(i){if(this._active){const o=Ae;try{return Ae=this,i()}finally{Ae=o}}}on(){++this._on===1&&(this.prevScope=Ae,Ae=this)}off(){if(this._on>0&&--this._on===0){if(Ae===this)Ae=this.prevScope;else{let i=Ae;for(;i;){if(i.prevScope===this){i.prevScope=this.prevScope;break}i=i.prevScope}}this.prevScope=void 0}}stop(i){if(this._active){this._active=!1;let o,a;for(o=0,a=this.effects.length;o<a;o++)this.effects[o].stop();for(this.effects.length=0,o=0,a=this.cleanups.length;o<a;o++)this.cleanups[o]();if(this.cleanups.length=0,this.scopes){for(o=0,a=this.scopes.length;o<a;o++)this.scopes[o].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!i){const l=this.parent.scopes.pop();l&&l!==this&&(this.parent.scopes[this.index]=l,l.index=this.index)}this.parent=void 0}}}function fd(){return Ae}let fe;const Gr=new WeakSet;class hu{constructor(i){this.fn=i,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Ae&&(Ae.active?Ae.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Gr.has(this)&&(Gr.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||mu(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,rl(this),gu(this);const i=fe,o=Ln;fe=this,Ln=!0;try{return this.fn()}finally{_u(this),fe=i,Ln=o,this.flags&=-3}}stop(){if(this.flags&1){for(let i=this.deps;i;i=i.nextDep)Pa(i);this.deps=this.depsTail=void 0,rl(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Gr.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){sa(this)&&this.run()}get dirty(){return sa(this)}}let pu=0,Qs,to;function mu(e,i=!1){if(e.flags|=8,i){e.next=to,to=e;return}e.next=Qs,Qs=e}function ka(){pu++}function Sa(){if(--pu>0)return;if(to){let i=to;for(to=void 0;i;){const o=i.next;i.next=void 0,i.flags&=-9,i=o}}let e;for(;Qs;){let i=Qs;for(Qs=void 0;i;){const o=i.next;if(i.next=void 0,i.flags&=-9,i.flags&1)try{i.trigger()}catch(a){e||(e=a)}i=o}}if(e)throw e}function gu(e){for(let i=e.deps;i;i=i.nextDep)i.version=-1,i.prevActiveLink=i.dep.activeLink,i.dep.activeLink=i}function _u(e){let i,o=e.depsTail,a=o;for(;a;){const l=a.prevDep;a.version===-1?(a===o&&(o=l),Pa(a),hd(a)):i=a,a.dep.activeLink=a.prevActiveLink,a.prevActiveLink=void 0,a=l}e.deps=i,e.depsTail=o}function sa(e){for(let i=e.deps;i;i=i.nextDep)if(i.dep.version!==i.version||i.dep.computed&&(vu(i.dep.computed)||i.dep.version!==i.version))return!0;return!!e._dirty}function vu(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===oo)||(e.globalVersion=oo,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!sa(e))))return;e.flags|=2;const i=e.dep,o=fe,a=Ln;fe=e,Ln=!0;try{gu(e);const l=e.fn(e._value);(i.version===0||Vn(l,e._value))&&(e.flags|=128,e._value=l,i.version++)}catch(l){throw i.version++,l}finally{fe=o,Ln=a,_u(e),e.flags&=-3}}function Pa(e,i=!1){const{dep:o,prevSub:a,nextSub:l}=e;if(a&&(a.nextSub=l,e.prevSub=void 0),l&&(l.prevSub=a,e.nextSub=void 0),o.subs===e&&(o.subs=a,!a&&o.computed)){o.computed.flags&=-5;for(let d=o.computed.deps;d;d=d.nextDep)Pa(d,!0)}!i&&!--o.sc&&o.map&&o.map.delete(o.key)}function hd(e){const{prevDep:i,nextDep:o}=e;i&&(i.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=i,e.nextDep=void 0)}let Ln=!0;const yu=[];function Un(){yu.push(Ln),Ln=!1}function Hn(){const e=yu.pop();Ln=e===void 0?!0:e}function rl(e){const{cleanup:i}=e;if(e.cleanup=void 0,i){const o=fe;fe=void 0;try{i()}finally{fe=o}}}let oo=0;class pd{constructor(i,o){this.sub=i,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ta{constructor(i){this.computed=i,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(i){if(!fe||!Ln||fe===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==fe)o=this.activeLink=new pd(fe,this),fe.deps?(o.prevDep=fe.depsTail,fe.depsTail.nextDep=o,fe.depsTail=o):fe.deps=fe.depsTail=o,bu(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const a=o.nextDep;a.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=a),o.prevDep=fe.depsTail,o.nextDep=void 0,fe.depsTail.nextDep=o,fe.depsTail=o,fe.deps===o&&(fe.deps=a)}return o}trigger(i){this.versiLine truncated
|
||||
* @vue/runtime-core v3.5.39
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/function mo(e,i,o,a){try{return a?e(...a):e()}catch(l){mr(l,i,o)}}function _n(e,i,o,a){if(Dt(e)){const l=mo(e,i,o,a);return l&&ou(l)&&l.catch(d=>{mr(d,i,o)}),l}if(wt(e)){const l=[];for(let d=0;d<e.length;d++)l.push(_n(e[d],i,o,a));return l}}function mr(e,i,o,a=!0){const l=i?i.vnode:null,{errorHandler:d,throwUnhandledErrorInProduction:h}=i&&i.appContext.config||ue;if(i){let _=i.parent;const y=i.proxy,T=`https://vuejs.org/error-reference/#runtime-${o}`;for(;_;){const w=_.ec;if(w){for(let A=0;A<w.length;A++)if(w[A](e,y,T)===!1)return}_=_.parent}if(d){Un(),mo(d,null,10,[e,y,T]),Hn();return}}Fd(e,o,l,a,h)}function Fd(e,i,o,a=!0,l=!1){if(l)throw e;console.error(e)}const We=[];let Rn=-1;const bs=[];let ki=null,_s=0;const Cu=Promise.resolve();let Xo=null;function Mu(e){const i=Xo||Cu;return e?i.then(this?e.bind(this):e):i}function Bd(e){let i=Rn+1,o=We.length;for(;i<o;){const a=i+o>>>1,l=We[a],d=ao(l);d<e||d===e&&l.flags&2?i=a+1:o=a}return i}function Oa(e){if(!(e.flags&1)){const i=ao(e),o=We[We.length-1];!o||!(e.flags&2)&&i>=ao(o)?We.push(e):We.splice(Bd(i),0,e),e.flags|=1,Ou()}}function Ou(){Xo||(Xo=Cu.then(zu))}function Vd(e){wt(e)?bs.push(...e):ki&&e.id===-1?ki.splice(_s+1,0,e):e.flags&1||(bs.push(e),e.flags|=1),Ou()}function ll(e,i,o=Rn+1){for(;o<We.length;o++){const a=We[o];if(a&&a.flags&2){if(e&&a.id!==e.uid)continue;We.splice(o,1),o--,a.flags&4&&(a.flags&=-2),a(),a.flags&4||(a.flags&=-2)}}}function Eu(e){if(bs.length){const i=[...new Set(bs)].sort((o,a)=>ao(o)-ao(a));if(bs.length=0,ki){ki.push(...i);return}for(ki=i,_s=0;_s<ki.length;_s++){const o=ki[_s];o.flags&4&&(o.flags&=-2),o.flags&8||o(),o.flags&=-2}ki=null,_s=0}}const ao=e=>e.id==null?e.flags&2?-1:1/0:e.id;function zu(e){try{for(Rn=0;Rn<We.length;Rn++){const i=We[Rn];i&&!(i.flags&8)&&(i.flags&4&&(i.flags&=-2),mo(i,i.i,i.i?15:14),i.flags&4||(i.flags&=-2))}}finally{for(;Rn<We.length;Rn++){const i=We[Rn];i&&(i.flags&=-2)}Rn=-1,We.length=0,Eu(),Xo=null,(We.length||bs.length)&&zu()}}let Re=null,Au=null;function Qo(e){const i=Re;return Re=e,Au=e&&e.type.__scopeId||null,i}function mt(e,i=Re,o){if(!i||e._n)return e;const a=(...l)=>{a._d&&nr(-1);const d=Qo(i);let h;try{h=e(...l)}finally{Qo(d),a._d&&nr(1)}return h};return a._n=!0,a._c=!0,a._d=!0,a}function ot(e,i){if(Re===null)return e;const o=xr(Re),a=e.dirs||(e.dirs=[]);for(let l=0;l<i.length;l++){let[d,h,_,y=ue]=i[l];d&&(Dt(d)&&(d={mounted:d,updated:d}),d.deep&&ri(h),a.push({dir:d,instance:o,value:h,oldValue:void 0,arg:_,modifiers:y}))}return e}function Vi(e,i,o,a){const l=e.dirs,d=i&&i.dirs;for(let h=0;h<l.length;h++){const _=l[h];d&&(_.oldValue=d[h].value);let y=_.dir[a];y&&(Un(),_n(y,o,8,[e.el,_,e,i]),Hn())}}function Iu(e,i){if(Ke){let o=Ke.provides;const a=Ke.parent&&Ke.parent.provides;a===o&&(o=Ke.provides=Object.create(a)),o[e]=i}}function eo(e,i,o=!1){const a=fc();if(a||ws){let l=ws?ws._context.provides:a?a.parent==null||a.ce?a.vnode.appContext&&a.vnode.appContext.provides:a.parent.provides:void 0;if(l&&e in l)return l[e];if(arguments.length>1)return o&&Dt(i)?i.call(a&&a.proxy):i}}const Zd=Symbol.for("v-scx"),Ud=()=>eo(Zd);function Qe(e,i,o){return $u(e,i,o)}function $u(e,i,o=ue){const{immediate:a,deep:l,flush:d,once:h}=o,_=Oe({},o),y=i&&a||!i&&d!=="post";let T;if(fo){if(d==="sync"){const V=Ud();T=V.__watcherHandles||(V.__watcherHandles=[])}else if(!y){const V=()=>{};return V.stop=Zn,V.resume=Zn,V.pause=Zn,V}}const w=Ke;_.call=(V,rt,Q)=>_n(V,w,rt,Q);let A=!1;d==="post"?_.scheduler=V=>{Xe(V,w&&w.suspense)}:d!=="sync"&&(A=!0,_.scheduler=(V,rt)=>{rt?V():Oa(V)}),_.augmentJob=V=>{i&&(V.flags|=4),A&&(V.flags|=2,w&&(V.id=w.uid,V.i=w))};const U=Rd(e,i,_);return fo&&(T?T.push(U):y&&U()),U}function Hd(e,i,o){const a=this.proxy,l=be(e)?e.includes(".")?Du(a,e):()=>a[e]:e.bind(a,a);let d;Dt(i)?d=i:(d=i.handler,o=i);const h=go(this),_=$u(l,d.bind(a),o);return h(),_}function Du(e,i){const o=i.split(".");return()=>{let a=e;for(let l=0;l<o.length&&a;l++)a=a[o[l]];return a}}const jd=Symbol("_vte"),Nu=e=>e.__isTeleport,pn=Symbol("_leaveCb"),Ws=Symbol("_enterCb");function Wd(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Yi(()=>{e.isMounted=!0}),vr(()=>{e.isUnmounting=!0}),e}const fn=[Function,Array],Ru={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:fn,onEnter:fn,onAfterEnter:fn,onEnterCancelled:fn,onBeforeLeave:fn,onLeave:fn,onAfterLeave:fn,onLeaveCancelled:fn,onBeforeAppear:fn,onAppear:fn,onAfterAppear:fn,onAppearCancelled:fn},Fu=e=>{const i=e.subTree;return i.component?Fu(i.component):i},Kd={name:"BaseTransition",props:Ru,setup(e,{slots:i}){const o=fc(),a=Wd();return()=>{const l=i.default&&Zu(i.default(),!0),d=l&&l.length?Bu(l):o.subTree?N():void 0;if(!d)return;const h=Xt(e),{mode:_}=h;if(a.isLeaving)return Jr(d);const y=ul(d);if(!y)return Jr(d);let T=ua(y,h,a,o,A=>T=A);y.type!==Ne&&lo(y,T);let w=o.subTree&&ul(o.subTree);if(w&&w.type!==Ne&&!Wi(w,y)&&Fu(o).type!==Ne){let A=ua(w,h,a,o);if(lo(w,A),_==="out-in"&&y.type!==Ne)return a.isLeaving=!0,A.afterLeave=()=>{a.isLea
Line truncated
|
||||
* @vue/runtime-dom v3.5.39
|
||||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||||
* @license MIT
|
||||
**/let ma;const wl=typeof window<"u"&&window.trustedTypes;if(wl)try{ma=wl.createPolicy("vue",{createHTML:e=>e})}catch{}const mc=ma?e=>ma.createHTML(e):e=>e,Gf="http://www.w3.org/2000/svg",qf="http://www.w3.org/1998/Math/MathML",ii=typeof document<"u"?document:null,kl=ii&&ii.createElement("template"),Yf={insert:(e,i,o)=>{i.insertBefore(e,o||null)},remove:e=>{const i=e.parentNode;i&&i.removeChild(e)},createElement:(e,i,o,a)=>{const l=i==="svg"?ii.createElementNS(Gf,e):i==="mathml"?ii.createElementNS(qf,e):o?ii.createElement(e,{is:o}):ii.createElement(e);return e==="select"&&a&&a.multiple!=null&&l.setAttribute("multiple",a.multiple),l},createText:e=>ii.createTextNode(e),createComment:e=>ii.createComment(e),setText:(e,i)=>{e.nodeValue=i},setElementText:(e,i)=>{e.textContent=i},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ii.querySelector(e),setScopeId(e,i){e.setAttribute(i,"")},insertStaticContent(e,i,o,a,l,d){const h=o?o.previousSibling:i.lastChild;if(l&&(l===d||l.nextSibling))for(;i.insertBefore(l.cloneNode(!0),o),!(l===d||!(l=l.nextSibling)););else{kl.innerHTML=mc(a==="svg"?`<svg>${e}</svg>`:a==="mathml"?`<math>${e}</math>`:e);const _=kl.content;if(a==="svg"||a==="mathml"){const y=_.firstChild;for(;y.firstChild;)_.appendChild(y.firstChild);_.removeChild(y)}i.insertBefore(_,o)}return[h?h.nextSibling:i.firstChild,o?o.previousSibling:i.lastChild]}},wi="transition",Ks="animation",ho=Symbol("_vtc"),gc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Jf=Oe({},Ru,gc),Xf=e=>(e.displayName="Transition",e.props=Jf,e),Qf=Xf((e,{slots:i})=>Wf(Gd,th(e),i)),Ui=(e,i=[])=>{wt(e)?e.forEach(o=>o(...i)):e&&e(...i)},Sl=e=>e?wt(e)?e.some(i=>i.length>1):e.length>1:!1;function th(e){const i={};for(const nt in e)nt in gc||(i[nt]=e[nt]);if(e.css===!1)return i;const{name:o="v",type:a,duration:l,enterFromClass:d=`${o}-enter-from`,enterActiveClass:h=`${o}-enter-active`,enterToClass:_=`${o}-enter-to`,appearFromClass:y=d,appearActiveClass:T=h,appearToClass:w=_,leaveFromClass:A=`${o}-leave-from`,leaveActiveClass:U=`${o}-leave-active`,leaveToClass:V=`${o}-leave-to`}=e,rt=eh(l),Q=rt&&rt[0],Ot=rt&&rt[1],{onBeforeEnter:Mt,onEnter:q,onEnterCancelled:dt,onLeave:it,onLeaveCancelled:ht,onBeforeAppear:Kt=Mt,onAppear:he=q,onAppearCancelled:pe=dt}=i,St=(nt,ut,zt,Ft)=>{nt._enterCancelled=Ft,Hi(nt,ut?w:_),Hi(nt,ut?T:h),zt&&zt()},Nt=(nt,ut)=>{nt._isLeaving=!1,Hi(nt,A),Hi(nt,V),Hi(nt,U),ut&&ut()},Et=nt=>(ut,zt)=>{const Ft=nt?he:q,lt=()=>St(ut,nt,zt);Ui(Ft,[ut,lt]),Pl(()=>{Hi(ut,nt?y:d),ni(ut,nt?w:_),Sl(Ft)||Tl(ut,a,Q,lt)})};return Oe(i,{onBeforeEnter(nt){Ui(Mt,[nt]),ni(nt,d),ni(nt,h)},onBeforeAppear(nt){Ui(Kt,[nt]),ni(nt,y),ni(nt,T)},onEnter:Et(!1),onAppear:Et(!0),onLeave(nt,ut){nt._isLeaving=!0;const zt=()=>Nt(nt,ut);ni(nt,A),nt._enterCancelled?(ni(nt,U),Ml(nt)):(Ml(nt),ni(nt,U)),Pl(()=>{nt._isLeaving&&(Hi(nt,A),ni(nt,V),Sl(it)||Tl(nt,a,Ot,zt))}),Ui(it,[nt,zt])},onEnterCancelled(nt){St(nt,!1,void 0,!0),Ui(dt,[nt])},onAppearCancelled(nt){St(nt,!0,void 0,!0),Ui(pe,[nt])},onLeaveCancelled(nt){Nt(nt),Ui(ht,[nt])}})}function eh(e){if(e==null)return null;if(ne(e))return[ea(e.enter),ea(e.leave)];{const i=ea(e);return[i,i]}}function ea(e){return id(e)}function ni(e,i){i.split(/\s+/).forEach(o=>o&&e.classList.add(o)),(e[ho]||(e[ho]=new Set)).add(i)}function Hi(e,i){i.split(/\s+/).forEach(a=>a&&e.classList.remove(a));const o=e[ho];o&&(o.delete(i),o.size||(e[ho]=void 0))}function Pl(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let nh=0;function Tl(e,i,o,a){const l=e._endId=++nh,d=()=>{l===e._endId&&a()};if(o!=null)return setTimeout(d,o);const{type:h,timeout:_,propCount:y}=ih(e,i);if(!h)return a();const T=h+"end";let w=0;const A=()=>{e.removeEventListener(T,U),d()},U=V=>{V.target===e&&++w>=y&&A()};setTimeout(()=>{w<y&&A()},_+1),e.addEventListener(T,U)}function ih(e,i){const o=window.getComputedStyle(e),a=rt=>(o[rt]||"").split(", "),l=a(`${wi}Delay`),d=a(`${wi}Duration`),h=Ll(l,d),_=a(`${Ks}Delay`),y=a(`${Ks}Duration`),T=Ll(_,y);let w=null,A=0,U=0;i===wi?h>0&&(w=wi,A=h,U=d.length):i===Ks?T>0&&(w=Ks,A=T,U=y.length):(A=Math.max(h,T),w=A>0?h>T?wi:Ks:null,U=w?w===wi?d.length:y.length:0);const V=w===wi&&/\b(?:transform|all)(?:,|$)/.test(a(`${wi}Property`).toString());return{type:w,timeout:A,propCount:U,hasTransform:V}}function Ll(e,i){for(;e.length<i.length;)e=e.concat(e);return Math.max(...i.map((o,a)=>Cl(o)+Cl(e[a])))}function Cl(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Ml(e){return(e?e.ownerDocument:document).body.offsetHeight}function sh(e,i,o){const a=e[ho];a&&(i=(i?[i,...a]:[...a]).join(" ")),i==null?e.removeAttribute("class"):o?e.setAttribute("class",i):e.className=i}const or=Symbol("_vod"),_c=Symbol("_vsh"),oh={name:"show",beforeMount(e,{value:i},{trans
Line truncated
|
||||
* Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com
|
||||
* (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade
|
||||
*/var Dp=Js.exports,Xl;function Np(){return Xl||(Xl=1,(function(e,i){(function(o,a){a(i)})(Dp,(function(o){var a="1.9.4";function l(t){var n,s,r,c;for(s=1,r=arguments.length;s<r;s++){c=arguments[s];for(n in c)t[n]=c[n]}return t}var d=Object.create||(function(){function t(){}return function(n){return t.prototype=n,new t}})();function h(t,n){var s=Array.prototype.slice;if(t.bind)return t.bind.apply(t,s.call(arguments,1));var r=s.call(arguments,2);return function(){return t.apply(n,r.length?r.concat(s.call(arguments)):arguments)}}var _=0;function y(t){return"_leaflet_id"in t||(t._leaflet_id=++_),t._leaflet_id}function T(t,n,s){var r,c,p,S;return S=function(){r=!1,c&&(p.apply(s,c),c=!1)},p=function(){r?c=arguments:(t.apply(s,arguments),setTimeout(S,n),r=!0)},p}function w(t,n,s){var r=n[1],c=n[0],p=r-c;return t===r&&s?t:((t-c)%p+p)%p+c}function A(){return!1}function U(t,n){if(n===!1)return t;var s=Math.pow(10,n===void 0?6:n);return Math.round(t*s)/s}function V(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function rt(t){return V(t).split(/\s+/)}function Q(t,n){Object.prototype.hasOwnProperty.call(t,"options")||(t.options=t.options?d(t.options):{});for(var s in n)t.options[s]=n[s];return t.options}function Ot(t,n,s){var r=[];for(var c in t)r.push(encodeURIComponent(s?c.toUpperCase():c)+"="+encodeURIComponent(t[c]));return(!n||n.indexOf("?")===-1?"?":"&")+r.join("&")}var Mt=/\{ *([\w_ -]+) *\}/g;function q(t,n){return t.replace(Mt,function(s,r){var c=n[r];if(c===void 0)throw new Error("No value provided for variable "+s);return typeof c=="function"&&(c=c(n)),c})}var dt=Array.isArray||function(t){return Object.prototype.toString.call(t)==="[object Array]"};function it(t,n){for(var s=0;s<t.length;s++)if(t[s]===n)return s;return-1}var ht="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function Kt(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}var he=0;function pe(t){var n=+new Date,s=Math.max(0,16-(n-he));return he=n+s,window.setTimeout(t,s)}var St=window.requestAnimationFrame||Kt("RequestAnimationFrame")||pe,Nt=window.cancelAnimationFrame||Kt("CancelAnimationFrame")||Kt("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)};function Et(t,n,s){if(s&&St===pe)t.call(n);else return St.call(window,h(t,n))}function nt(t){t&&Nt.call(window,t)}var ut={__proto__:null,extend:l,create:d,bind:h,get lastId(){return _},stamp:y,throttle:T,wrapNum:w,falseFn:A,formatNum:U,trim:V,splitWords:rt,setOptions:Q,getParamString:Ot,template:q,isArray:dt,indexOf:it,emptyImageUrl:ht,requestFn:St,cancelFn:Nt,requestAnimFrame:Et,cancelAnimFrame:nt};function zt(){}zt.extend=function(t){var n=function(){Q(this),this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},s=n.__super__=this.prototype,r=d(s);r.constructor=n,n.prototype=r;for(var c in this)Object.prototype.hasOwnProperty.call(this,c)&&c!=="prototype"&&c!=="__super__"&&(n[c]=this[c]);return t.statics&&l(n,t.statics),t.includes&&(Ft(t.includes),l.apply(null,[r].concat(t.includes))),l(r,t),delete r.statics,delete r.includes,r.options&&(r.options=s.options?d(s.options):{},l(r.options,t.options)),r._initHooks=[],r.callInitHooks=function(){if(!this._initHooksCalled){s.callInitHooks&&s.callInitHooks.call(this),this._initHooksCalled=!0;for(var p=0,S=r._initHooks.length;p<S;p++)r._initHooks[p].call(this)}},n},zt.include=function(t){var n=this.prototype.options;return l(this.prototype,t),t.options&&(this.prototype.options=n,this.mergeOptions(t.options)),this},zt.mergeOptions=function(t){return l(this.prototype.options,t),this},zt.addInitHook=function(t){var n=Array.prototype.slice.call(arguments,1),s=typeof t=="function"?t:function(){this[t].apply(this,n)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(s),this};function Ft(t){if(!(typeof L>"u"||!L||!L.Mixin)){t=dt(t)?t:[t];for(var n=0;n<t.length;n++)t[n]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",new Error().stack)}}var lt={on:function(t,n,s){if(typeof t=="object")for(var r in t)this._on(r,t[r],n);else{t=rt(t);for(var c=0,p=t.length;c<p;c++)this._on(t[c],n,s)}return this},off:function(t,n,s){if(!arguments.length)delete this._events;else if(typeof t=="object")for(var r in t)this._off(r,t[r],n);else{t=rt(t);for(var c=arguments.length===1,p=0,S=t.length;p<S;p++)c?this._off(t[p]):this._off(t[p],n,s)}return this},_on:function(t,n,s,r){if(typeof n!="function"){console.warn("wrong listener type: "+typeof n);return}if(this._listens(t,n,s)===!1){s===this&&(s=void 0);var c={fn:n,ctx:s};r&&(c.once=!0),this._events=this._events||{},this._events[t]=this._events[t]||[],this._events[t].push(c)}},_off:function(t,n,s){var r,c,p;if(this._events&&(r=this._events[t],!!r)){if(arguments.length===1){if(this._firingCount)for(c=0,p=r.length;c<p;c++)r[c].fn=A;delete this._events[t];return}if(typeof n!="function"){console.warn("wrong listener tLine truncated
|
||||
Vendored
+2
-2
@@ -35,8 +35,8 @@
|
||||
})()
|
||||
</script>
|
||||
<title>PilotVault — Control Panel</title>
|
||||
<script type="module" crossorigin src="./assets/index-DLbqB6QP.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-Co-T5CTN.css">
|
||||
<script type="module" crossorigin src="./assets/index-Bw9Fgeki.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-B-aj3yVr.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
@@ -82,6 +82,12 @@ func main() {
|
||||
mux.HandleFunc("PATCH /bff/flights/{id}", app.requireAuth(app.handleUpdateFlight))
|
||||
mux.HandleFunc("DELETE /bff/flights/{id}", app.requireAuth(app.handleDeleteFlight))
|
||||
mux.HandleFunc("GET /bff/logbook/export", app.requireAuth(app.handleExportLogbook))
|
||||
// Documents — the compliance + operational document store (scoping upstream)
|
||||
mux.HandleFunc("GET /bff/documents", app.requireAuth(app.handleListDocuments))
|
||||
mux.HandleFunc("POST /bff/documents", app.requireAuth(app.handleCreateDocument))
|
||||
mux.HandleFunc("PATCH /bff/documents/{id}", app.requireAuth(app.handleUpdateDocument))
|
||||
mux.HandleFunc("DELETE /bff/documents/{id}", app.requireAuth(app.handleDeleteDocument))
|
||||
mux.HandleFunc("GET /bff/documents/{id}/file", app.requireAuth(app.handleDownloadDocument))
|
||||
mux.HandleFunc("GET /bff/ws", app.handleWS)
|
||||
mux.HandleFunc("GET /healthz", func(w http.ResponseWriter, r *http.Request) {
|
||||
writeJSON(w, http.StatusOK, map[string]any{"status": "ok", "api": app.apiBase})
|
||||
|
||||
Reference in new issue
Block a user