From 35e562026c87f0253b9bbe291982ce642097cde4 Mon Sep 17 00:00:00 2001 From: bboysoul Date: Sun, 6 Sep 2026 07:56:23 +0800 Subject: [PATCH] feat: remove calendar and refine habits --- backend/main.py | 2 + backend/mvp.py | 125 +---------- backend/static/assets/index-CmIuUToo.js | 4 + backend/static/assets/index-CpBTIN38.css | 2 - backend/static/assets/index-Dq8LoBCn.js | 4 - backend/static/assets/index-nhCaMkMR.css | 2 + backend/static/index.html | 4 +- backend/static/sw.js | 11 +- frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 53 ----- frontend/src/App.vue | 15 +- frontend/src/MvpPanel.vue | 271 ++++++++++++++++------- frontend/src/lib/mvp-utils.test.ts | 29 ++- frontend/src/lib/mvp-utils.ts | 31 +-- frontend/src/style.css | 20 +- tests/test_mvp_backend.py | 202 +---------------- 16 files changed, 277 insertions(+), 500 deletions(-) create mode 100644 backend/static/assets/index-CmIuUToo.js delete mode 100644 backend/static/assets/index-CpBTIN38.css delete mode 100644 backend/static/assets/index-Dq8LoBCn.js create mode 100644 backend/static/assets/index-nhCaMkMR.css diff --git a/backend/main.py b/backend/main.py index ad10bd5..e62918e 100644 --- a/backend/main.py +++ b/backend/main.py @@ -806,6 +806,8 @@ if static_dir.exists(): @app.get("/{path:path}", include_in_schema=False) async def spa(path: str): + if path == "api" or path.startswith("api/"): + raise HTTPException(status_code=404, detail="Not Found") root = static_dir.resolve() target = (root / path).resolve() headers = {"Cache-Control": "no-cache, no-store, must-revalidate, max-age=0"} diff --git a/backend/mvp.py b/backend/mvp.py index f487cd3..c6bf987 100644 --- a/backend/mvp.py +++ b/backend/mvp.py @@ -4,7 +4,6 @@ import re from datetime import UTC, date, datetime, time, timedelta from pathlib import Path from uuid import UUID -from zoneinfo import ZoneInfo, ZoneInfoNotFoundError from fastapi import APIRouter, Depends, File, HTTPException, Query, Response, UploadFile from fastapi.responses import FileResponse @@ -127,7 +126,6 @@ def occurrences(rule: str, starts: datetime, start: datetime, end: datetime, cut def is_occurrence(rule: str, starts: datetime, at: datetime) -> bool: """Return True when `at` is the exact timestamp of an occurrence this rule generates.""" parts = parse_rrule(rule) - interval = int(parts.get("INTERVAL", 1)) if starts.tzinfo is None: starts = starts.replace(tzinfo=UTC) else: @@ -143,38 +141,9 @@ def is_occurrence(rule: str, starts: datetime, at: datetime) -> bool: until = until.replace(tzinfo=UTC) if until.tzinfo is None else until.astimezone(UTC) if at > until: return False - if "COUNT" in parts: - count = int(parts["COUNT"]) - match = 0 - cursor = starts - guard = 0 - while cursor <= at and guard < 40000: - if parts["FREQ"] == "DAILY": - include = (cursor.date() - starts.date()).days % interval == 0 - elif parts["FREQ"] == "WEEKLY": - days = {_WEEKDAYS[x] for x in parts.get("BYDAY", list(_WEEKDAYS)[starts.weekday()]).split(",")} - include = cursor.weekday() in days and ((cursor.date() - starts.date()).days // 7) % interval == 0 - elif parts["FREQ"] == "MONTHLY": - month_delta = (cursor.year - starts.year) * 12 + cursor.month - starts.month - month_days = {int(x) for x in parts.get("BYMONTHDAY", str(starts.day)).split(",")} - include = month_delta % interval == 0 and cursor.day in month_days - else: - years = cursor.year - starts.year - months = {int(x) for x in parts.get("BYMONTH", str(starts.month)).split(",")} - month_days = {int(x) for x in parts.get("BYMONTHDAY", str(starts.day)).split(",")} - include = years % interval == 0 and cursor.month in months and cursor.day in month_days - if include and cursor >= starts: - match += 1 - if cursor == at: - return True - if match >= count: - return False - guard += 1 - cursor += timedelta(days=1) - return False - # Exact-match validation via the same canonical day generator used for - # rendering, so time-of-day is preserved and nothing outside the rule is - # accepted as a valid occurrence. + # Exact-match validation via the same canonical generator used for recurrence + # mutations, so COUNT/UNTIL, time-of-day, BYDAY/BYMONTHDAY and sparse yearly + # rules all share one behavior. candidates = occurrences(rule, starts, starts, at, None) return at in candidates @@ -222,94 +191,6 @@ async def create_recurrence(payload: RecurrenceCreate, user: User = Depends(curr return {"id": row.id, "task_id": row.task_id, "rrule": row.rrule, "starts_at": row.starts_at} -@router.get("/calendar") -async def calendar(start: date, end: date, timezone: str = Query(default="UTC", pattern=r"^[A-Za-z0-9_+\-]+(/[A-Za-z0-9_+\-]+)*$"), timezone_offset: int | None = Query(default=None, ge=-840, le=840), user: User = Depends(current_user), db: AsyncSession = Depends(get_db)): - if end < start or (end - start).days > 366: - raise HTTPException(422, "日期范围无效或超过一年") - try: - zone = ZoneInfo(timezone) - except ZoneInfoNotFoundError: - raise HTTPException(422, "未知时区") - if timezone_offset is not None and timezone == "UTC": - # Legacy clients pass an offset instead of an IANA name. - zone = ZoneInfo("UTC") - start_dt = datetime.combine(start, time.min, tzinfo=UTC) - timedelta(minutes=timezone_offset) - end_dt = datetime.combine(end + timedelta(days=1), time.min, tzinfo=UTC) - timedelta(minutes=timezone_offset) - timedelta(microseconds=1) - else: - start_dt = datetime.combine(start, time.min, tzinfo=zone).astimezone(UTC) - end_dt = datetime.combine(end + timedelta(days=1), time.min, tzinfo=zone).astimezone(UTC) - timedelta(microseconds=1) - - def as_utc(value: datetime) -> datetime: - if value.tzinfo is None: - return value.replace(tzinfo=UTC) - return value.astimezone(UTC) - - recurrence_rows = (await db.execute(select(RecurrenceTemplate, Task).join(Task).where(RecurrenceTemplate.user_id == user.id, Task.deleted_at.is_(None)))).all() - template_ids = [template.id for template, _ in recurrence_rows] - exception_rows = [] if not template_ids else list((await db.scalars(select(RecurrenceException).where(RecurrenceException.template_id.in_(template_ids)))).all()) - exceptions_by_template = {} - for exception in exception_rows: - key = as_utc(exception.occurrence_at) - exceptions_by_template.setdefault(exception.template_id, {})[key] = exception - - recurring_task_ids = {task.id for _, task in recurrence_rows} - normal_query = select(Task).where( - Task.user_id == user.id, - Task.deleted_at.is_(None), - Task.parent_id.is_(None), - Task.due_at >= start_dt, - Task.due_at <= end_dt, - ) - if recurring_task_ids: - normal_query = normal_query.where(Task.id.not_in(recurring_task_ids)) - normal_tasks = list((await db.scalars(normal_query)).all()) - output = [{ - "id": task.id, - "recurrence_id": None, - "task_id": task.id, - "occurrence_at": task.due_at, - "title": task.title, - "due_at": task.due_at, - "completed": task.completed, - "version": task.version, - } for task in normal_tasks] - emitted = set() - for template, task in recurrence_rows: - exceptions = exceptions_by_template.get(template.id, {}) - # Canonical series from the template's true start so every exception - # whose occurrence is real and inside this series is considered. - series_start = template.starts_at - if exceptions: - first_exception = min(as_utc(at) for at in exceptions) - series_start = min(as_utc(series_start), first_exception) - generated = occurrences(template.rrule, template.starts_at, as_utc(series_start), end_dt, template.ends_at) - for at in generated: - exception = exceptions.get(as_utc(at)) - if exception and exception.deleted: - continue - due_at = as_utc(exception.due_at) if exception and exception.due_at else at - if due_at < start_dt or due_at > end_dt: - continue - output.append({"recurrence_id": template.id, "task_id": task.id, "occurrence_at": at, "title": exception.title if exception and exception.title else task.title, "due_at": due_at, "completed": bool(exception and exception.completed)}) - emitted.add(as_utc(at)) - # Fall back for stored exceptions whose original slot is real but which - # the canonical generation skipped only because their original date is - # outside the requested window (e.g. moved backwards across the month). - for occurrence_at, exception in exceptions.items(): - if exception.deleted or exception.due_at is None: - continue - if occurrence_at in emitted: - continue - if not is_occurrence(template.rrule, template.starts_at, occurrence_at): - continue - if template.ends_at and occurrence_at > as_utc(template.ends_at): - continue - due_at = as_utc(exception.due_at) - if start_dt <= due_at <= end_dt: - output.append({"recurrence_id": template.id, "task_id": task.id, "occurrence_at": occurrence_at, "title": exception.title or task.title, "due_at": due_at, "completed": bool(exception.completed)}) - return sorted(output, key=lambda item: item["occurrence_at"].replace(tzinfo=UTC) if item["occurrence_at"].tzinfo is None else item["occurrence_at"]) - - async def upsert_exception(db, template_id, at): row = await db.scalar(select(RecurrenceException).where(RecurrenceException.template_id == template_id, RecurrenceException.occurrence_at == at)) if not row: diff --git a/backend/static/assets/index-CmIuUToo.js b/backend/static/assets/index-CmIuUToo.js new file mode 100644 index 0000000..e6025b9 --- /dev/null +++ b/backend/static/assets/index-CmIuUToo.js @@ -0,0 +1,4 @@ +(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function e(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var t={},n=[],r=()=>{},i=()=>!1,a=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),o=e=>e.startsWith(`onUpdate:`),s=Object.assign,c=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},l=Object.prototype.hasOwnProperty,u=(e,t)=>l.call(e,t),d=Array.isArray,f=e=>x(e)===`[object Map]`,p=e=>x(e)===`[object Set]`,m=e=>x(e)===`[object Date]`,h=e=>typeof e==`function`,g=e=>typeof e==`string`,_=e=>typeof e==`symbol`,v=e=>typeof e==`object`&&!!e,y=e=>(v(e)||h(e))&&h(e.then)&&h(e.catch),b=Object.prototype.toString,x=e=>b.call(e),S=e=>x(e).slice(8,-1),C=e=>x(e)===`[object Object]`,w=e=>g(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,T=e(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),E=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ee=/-\w/g,D=E(e=>e.replace(ee,e=>e.slice(1).toUpperCase())),te=/\B([A-Z])/g,O=E(e=>e.replace(te,`-$1`).toLowerCase()),ne=E(e=>e.charAt(0).toUpperCase()+e.slice(1)),re=E(e=>e?`on${ne(e)}`:``),k=(e,t)=>!Object.is(e,t),A=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},ie=e=>{let t=parseFloat(e);return isNaN(t)?e:t},ae=e=>{let t=g(e)?Number(e):NaN;return isNaN(t)?e:t},oe,se=()=>oe||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{};function ce(e){if(d(e)){let t={};for(let n=0;n{if(e){let n=e.split(ue);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function M(e){let t=``;if(g(e))t=e;else if(d(e))for(let n=0;nP(e,t))}var ve=e=>!!(e&&e.__v_isRef===!0),F=e=>g(e)?e:e==null?``:d(e)||v(e)&&(e.toString===b||!h(e.toString))?ve(e)?F(e.value):JSON.stringify(e,ye,2):String(e),ye=(e,t)=>ve(t)?ye(e,t.value):f(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[be(t,r)+` =>`]=n,e),{})}:p(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>be(e))}:_(t)?be(t):v(t)&&!d(t)&&!C(t)?String(t):t,be=(e,t=``)=>_(e)?`Symbol(${e.description??t})`:e,I,xe=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&I&&(I.active?(this.parent=I,this.index=(I.scopes||(I.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){let n=this.scopes.slice();for(e=0,t=n.length;e0&&--this._on===0){if(I===this)I=this.prevScope;else{let e=I;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t0)return;if(De){let e=De;for(De=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;Ee;){let t=Ee;for(Ee=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function je(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Me(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),Fe(r),Ie(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function Ne(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Pe(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Pe(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===He)||(e.globalVersion=He,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ne(e))))return;e.flags|=2;let t=e.dep,n=L,r=Le;L=e,Le=!0;try{je(e);let n=e.fn(e._value);(t.version===0||k(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{L=n,Le=r,Me(e),e.flags&=-3}}function Fe(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)Fe(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ie(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}var Le=!0,Re=[];function ze(){Re.push(Le),Le=!1}function Be(){let e=Re.pop();Le=e===void 0||e}function Ve(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=L;L=void 0;try{t()}finally{L=e}}}var He=0,Ue=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},We=class{constructor(e){this.computed=e,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(e){if(!L||!Le||L===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==L)t=this.activeLink=new Ue(L,this),L.deps?(t.prevDep=L.depsTail,L.depsTail.nextDep=t,L.depsTail=t):L.deps=L.depsTail=t,Ge(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=L.depsTail,t.nextDep=void 0,L.depsTail.nextDep=t,L.depsTail=t,L.deps===t&&(L.deps=e)}return t}trigger(e){this.version++,He++,this.notify(e)}notify(e){ke();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{Ae()}}};function Ge(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)Ge(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var Ke=new WeakMap,qe=Symbol(``),Je=Symbol(``),Ye=Symbol(``);function R(e,t,n){if(Le&&L){let t=Ke.get(e);t||Ke.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new We),r.map=t,r.key=n),r.track()}}function Xe(e,t,n,r,i,a){let o=Ke.get(e);if(!o){He++;return}let s=e=>{e&&e.trigger()};if(ke(),t===`clear`)o.forEach(s);else{let i=d(e),a=i&&w(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===Ye||!_(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(Ye)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(qe)),f(e)&&s(o.get(Je)));break;case`delete`:i||(s(o.get(qe)),f(e)&&s(o.get(Je)));break;case`set`:f(e)&&s(o.get(qe))}}Ae()}function Ze(e){let t=z(e);return t===e?t:(R(t,`iterate`,Ye),It(e)?t:t.map(zt))}function Qe(e){return R(e=z(e),`iterate`,Ye),e}function $e(e,t){return Ft(e)?Bt(Pt(e)?zt(t):t):zt(t)}var et={__proto__:null,[Symbol.iterator](){return tt(this,Symbol.iterator,e=>$e(this,e))},concat(...e){return Ze(this).concat(...e.map(e=>d(e)?Ze(e):e))},entries(){return tt(this,`entries`,e=>(e[1]=$e(this,e[1]),e))},every(e,t){return rt(this,`every`,e,t,void 0,arguments)},filter(e,t){return rt(this,`filter`,e,t,e=>e.map(e=>$e(this,e)),arguments)},find(e,t){return rt(this,`find`,e,t,e=>$e(this,e),arguments)},findIndex(e,t){return rt(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return rt(this,`findLast`,e,t,e=>$e(this,e),arguments)},findLastIndex(e,t){return rt(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return rt(this,`forEach`,e,t,void 0,arguments)},includes(...e){return at(this,`includes`,e)},indexOf(...e){return at(this,`indexOf`,e)},join(e){return Ze(this).join(e)},lastIndexOf(...e){return at(this,`lastIndexOf`,e)},map(e,t){return rt(this,`map`,e,t,void 0,arguments)},pop(){return ot(this,`pop`)},push(...e){return ot(this,`push`,e)},reduce(e,...t){return it(this,`reduce`,e,t)},reduceRight(e,...t){return it(this,`reduceRight`,e,t)},shift(){return ot(this,`shift`)},some(e,t){return rt(this,`some`,e,t,void 0,arguments)},splice(...e){return ot(this,`splice`,e)},toReversed(){return Ze(this).toReversed()},toSorted(e){return Ze(this).toSorted(e)},toSpliced(...e){return Ze(this).toSpliced(...e)},unshift(...e){return ot(this,`unshift`,e)},values(){return tt(this,`values`,e=>$e(this,e))}};function tt(e,t,n){let r=Qe(e),i=r[t]();return r!==e&&!It(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var nt=Array.prototype;function rt(e,t,n,r,i,a){let o=Qe(e),s=o!==e&&!It(e),c=o[t];if(c!==nt[t]){let t=c.apply(e,a);return s?zt(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,$e(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function it(e,t,n,r){let i=Qe(e),a=i!==e&&!It(e),o=n,s=!1;i!==e&&(a?(s=r.length===0,o=function(t,r,i){return s&&(s=!1,t=$e(e,t)),n.call(this,t,$e(e,r),i,e)}):n.length>3&&(o=function(t,r,i){return n.call(this,t,r,i,e)}));let c=i[t](o,...r);return s?$e(e,c):c}function at(e,t,n){let r=z(e);R(r,`iterate`,Ye);let i=r[t](...n);return(i===-1||i===!1)&&Lt(n[0])?(n[0]=z(n[0]),r[t](...n)):i}function ot(e,t,n=[]){ze(),ke();let r=z(e)[t].apply(e,n);return Ae(),Be(),r}var st=e(`__proto__,__v_isRef,__isVue`),ct=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(_));function lt(e){_(e)||(e=String(e));let t=z(this);return R(t,`has`,e),t.hasOwnProperty(e)}var ut=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?Ot:Dt:i?Et:Tt).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=d(e);if(!r){let e;if(a&&(e=et[t]))return e;if(t===`hasOwnProperty`)return lt}let o=Reflect.get(e,t,B(e)?e:n);if((_(t)?ct.has(t):st(t))||(r||R(e,`get`,t),i))return o;if(B(o)){let e=a&&w(t)?o:o.value;return r&&v(e)?Mt(e):e}return v(o)?r?Mt(o):At(o):o}},dt=class extends ut{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=d(e)&&w(t);if(!this._isShallow){let e=Ft(i);if(!It(n)&&!Ft(n)&&(i=z(i),n=z(n)),!a&&B(i)&&!B(n))return e||(i.value=n),!0}let o=a?Number(t)e,_t=e=>Reflect.getPrototypeOf(e);function vt(e,t,n){return function(...r){let i=this.__v_raw,a=z(i),o=f(a),c=e===`entries`||e===Symbol.iterator&&o,l=e===`keys`&&o,u=i[e](...r),d=n?gt:t?Bt:zt;return!t&&R(a,`iterate`,l?Je:qe),s(Object.create(u),{next(){let{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[d(e[0]),d(e[1])]:d(e),done:t}}})}}function yt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function bt(e,t){let n={get(n){let r=this.__v_raw,i=z(r),a=z(n);e||(k(n,a)&&R(i,`get`,n),R(i,`get`,a));let{has:o}=_t(i),s=t?gt:e?Bt:zt;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&R(z(t),`iterate`,qe),t.size},has(t){let n=this.__v_raw,r=z(n),i=z(t);return e||(k(t,i)&&R(r,`has`,t),R(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=z(a),s=t?gt:e?Bt:zt;return!e&&R(o,`iterate`,qe),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return s(n,e?{add:yt(`add`),set:yt(`set`),delete:yt(`delete`),clear:yt(`clear`)}:{add(e){let n=z(this),r=_t(n),i=z(e),a=!t&&!It(e)&&!Ft(e)?i:e;return r.has.call(n,a)||k(e,a)&&r.has.call(n,e)||k(i,a)&&r.has.call(n,i)||(n.add(a),Xe(n,`add`,a,a)),this},set(e,n){!t&&!It(n)&&!Ft(n)&&(n=z(n));let r=z(this),{has:i,get:a}=_t(r),o=i.call(r,e);o||=(e=z(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?k(n,s)&&Xe(r,`set`,e,n,s):Xe(r,`add`,e,n),this},delete(e){let t=z(this),{has:n,get:r}=_t(t),i=n.call(t,e);i||=(e=z(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&Xe(t,`delete`,e,void 0,a),o},clear(){let e=z(this),t=e.size!==0,n=e.clear();return t&&Xe(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=vt(r,e,t)}),n}function xt(e,t){let n=bt(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(u(n,r)&&r in t?n:t,r,i)}var St={get:xt(!1,!1)},Ct={get:xt(!1,!0)},wt={get:xt(!0,!1)},Tt=new WeakMap,Et=new WeakMap,Dt=new WeakMap,Ot=new WeakMap;function kt(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function At(e){return Ft(e)?e:Nt(e,!1,pt,St,Tt)}function jt(e){return Nt(e,!1,ht,Ct,Et)}function Mt(e){return Nt(e,!0,mt,wt,Dt)}function Nt(e,t,n,r,i){if(!v(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let a=i.get(e);if(a)return a;let o=kt(S(e));if(o===0)return e;let s=new Proxy(e,o===2?r:n);return i.set(e,s),s}function Pt(e){return Ft(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function Ft(e){return!!(e&&e.__v_isReadonly)}function It(e){return!!(e&&e.__v_isShallow)}function Lt(e){return e?!!e.__v_raw:!1}function z(e){let t=e&&e.__v_raw;return t?z(t):e}function Rt(e){return!u(e,`__v_skip`)&&Object.isExtensible(e)&&j(e,`__v_skip`,!0),e}var zt=e=>v(e)?At(e):e,Bt=e=>v(e)?Mt(e):e;function B(e){return e?e.__v_isRef===!0:!1}function V(e){return Vt(e,!1)}function Vt(e,t){return B(e)?e:new Ht(e,t)}var Ht=class{constructor(e,t){this.dep=new We,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:z(e),this._value=t?e:zt(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||It(e)||Ft(e);e=n?e:z(e),k(e,t)&&(this._rawValue=e,this._value=n?e:zt(e),this.dep.trigger())}};function H(e){return B(e)?e.value:e}var Ut={get:(e,t,n)=>t===`__v_raw`?e:H(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return B(i)&&!B(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Wt(e){return Pt(e)?e:new Proxy(e,Ut)}var Gt=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new We(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=He-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&L!==this)return Oe(this,!0),!0}get value(){let e=this.dep.track();return Pe(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function Kt(e,t,n=!1){let r,i;return h(e)?r=e:(r=e.get,i=e.set),new Gt(r,i,n)}var qt={},Jt=new WeakMap,Yt=void 0;function Xt(e,t=!1,n=Yt){if(n){let t=Jt.get(n);t||Jt.set(n,t=[]),t.push(e)}}function Zt(e,n,i=t){let{immediate:a,deep:o,once:s,scheduler:l,augmentJob:u,call:f}=i,p=e=>o?e:It(e)||o===!1||o===0?Qt(e,1):Qt(e),m,g,_,v,y=!1,b=!1;if(B(e)?(g=()=>e.value,y=It(e)):Pt(e)?(g=()=>p(e),y=!0):d(e)?(b=!0,y=e.some(e=>Pt(e)||It(e)),g=()=>e.map(e=>{if(B(e))return e.value;if(Pt(e))return p(e);if(h(e))return f?f(e,2):e()})):g=h(e)?n?f?()=>f(e,2):e:()=>{if(_){ze();try{_()}finally{Be()}}let t=Yt;Yt=m;try{return f?f(e,3,[v]):e(v)}finally{Yt=t}}:r,n&&o){let e=g,t=o===!0?1/0:o;g=()=>Qt(e(),t)}let x=Se(),S=()=>{m.stop(),x&&x.active&&c(x.effects,m)};if(s&&n){let e=n;n=(...t)=>{let n=e(...t);return S(),n}}let C=b?Array(e.length).fill(qt):qt,w=e=>{if(m.flags&1&&(m.dirty||e)){if(n){let t=m.run();if(e||o||y||(b?t.some((e,t)=>k(e,C[t])):k(t,C))){_&&_();let e=Yt;Yt=m;try{let e=[t,C===qt?void 0:b&&C[0]===qt?[]:C,v];C=t,f?f(n,3,e):n(...e)}finally{Yt=e}}}else m.run()}};return u&&u(w),m=new we(g),m.scheduler=l?()=>l(w,!1):w,v=e=>Xt(e,!1,m),_=m.onStop=()=>{let e=Jt.get(m);if(e){if(f)f(e,4);else for(let t of e)t();Jt.delete(m)}},n?a?w(!0):C=m.run():l?l(w.bind(null,!0),!0):m.run(),S.pause=m.pause.bind(m),S.resume=m.resume.bind(m),S.stop=S,S}function Qt(e,t=1/0,n){if(t<=0||!v(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,B(e))Qt(e.value,t,n);else if(d(e))for(let r=0;r{Qt(e,t,n)});else if(C(e)){for(let r in e)Qt(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Qt(e[r],t,n)}return e}function $t(e,t,n,r){try{return r?e(...r):e()}catch(e){tn(e,t,n)}}function en(e,t,n,r){if(h(e)){let i=$t(e,t,n,r);return i&&y(i)&&i.catch(e=>{tn(e,t,n)}),i}if(d(e)){let i=[];for(let a=0;a>>1,i=U[r],a=_n(i);a=_n(n)?U.push(e):U.splice(dn(t),0,e),e.flags|=1,pn()}}function pn(){ln||=cn.then(vn)}function mn(e){if(!d(e))on&&e.id===-1?on.splice(sn+1,0,e):e.flags&1||(an.push(e),e.flags|=1);else for(let t=0;t_n(e)-_n(t));if(an.length=0,on){for(let t=0;te.id==null?e.flags&2?-1:1/0:e.id;function vn(e){try{for(rn=0;rn{r._d&&Bi(-1);let i=xn(t),a=Ii.length,o;try{o=e(...n)}finally{for(let e=Ii.length;e>a;e--)Ri();xn(i),r._d&&Bi(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function W(e,n){if(yn===null)return e;let r=va(yn),i=e.dirs||=[];for(let e=0;e1)return n&&h(t)?t.call(r&&r.proxy):t}}var En=Symbol.for(`v-scx`),Dn=()=>Tn(En);function On(e,t,n){return kn(e,t,n)}function kn(e,n,i=t){let{immediate:a,deep:o,flush:c,once:l}=i,u=s({},i),d=n&&a||!n&&c!==`post`,f;if(da){if(c===`sync`){let e=Dn();f=e.__watcherHandles||=[]}else if(!d){let e=()=>{};return e.stop=r,e.resume=r,e.pause=r,e}}let p=ia;u.call=(e,t,n)=>en(e,p,t,n);let m=!1;c===`post`?u.scheduler=e=>{bi(e,p&&p.suspense)}:c!==`sync`&&(m=!0,u.scheduler=(e,t)=>{t?e():fn(e)}),u.augmentJob=e=>{n&&(e.flags|=4),m&&(e.flags|=2,p&&(e.id=p.uid,e.i=p))};let h=Zt(e,n,u);return da&&(f?f.push(h):d&&h()),h}function An(e,t,n){let r=this.proxy,i=g(e)?e.includes(`.`)?jn(r,e):()=>r[e]:e.bind(r,r),a;h(t)?a=t:(a=t.handler,n=t);let o=ca(this),s=kn(i,a.bind(r),n);return o(),s}function jn(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;ee.__isTeleport,Pn=Symbol(`_leaveCb`),Fn=Symbol(`_enterCb`);function In(){let e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ur(()=>{e.isMounted=!0}),pr(()=>{e.isUnmounting=!0}),e}var Ln=[Function,Array],Rn={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ln,onEnter:Ln,onAfterEnter:Ln,onEnterCancelled:Ln,onBeforeLeave:Ln,onLeave:Ln,onAfterLeave:Ln,onLeaveCancelled:Ln,onBeforeAppear:Ln,onAppear:Ln,onAfterAppear:Ln,onAppearCancelled:Ln},zn=e=>{let t=e.subTree;return t.component?zn(t.component):t},Bn={name:`BaseTransition`,props:Rn,setup(e,{slots:t}){let n=aa(),r=In();return()=>{let i=t.default&&Jn(t.default(),!0),a=i&&i.length?Vn(i):n.subTree?Q():void 0;if(!a)return;let o=z(e),{mode:s}=o;if(r.isLeaving)return Gn(a);let c=Kn(a);if(!c)return Gn(a);let l=Wn(c,o,r,n,e=>l=e);c.type!==Pi&&qn(c,l);let u=n.subTree&&Kn(n.subTree);if(u&&u.type!==Pi&&!Wi(u,c)&&zn(n).type!==Pi){let e=Wn(u,o,r,n);if(qn(u,e),s===`out-in`&&c.type!==Pi)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete e.afterLeave,u=void 0},Gn(a);s===`in-out`&&c.type!==Pi?e.delayLeave=(e,t,n)=>{let i=Un(r,u);i[String(u.key)]=u,e[Pn]=()=>{t(),e[Pn]=void 0,delete l.delayedLeave,u=void 0},l.delayedLeave=()=>{n(),delete l.delayedLeave,u=void 0}}:u=void 0}else u&&=void 0;return a}}};function Vn(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==Pi){t=n;break}}return t}var Hn=Bn;function Un(e,t){let{leavingVNodes:n}=e,r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Wn(e,t,n,r,i){let{appear:a,mode:o,persisted:s=!1,onBeforeEnter:c,onEnter:l,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:p,onLeave:m,onAfterLeave:h,onLeaveCancelled:g,onBeforeAppear:_,onAppear:v,onAfterAppear:y,onAppearCancelled:b}=t,x=String(e.key),S=Un(n,e),C=(e,t)=>{e&&en(e,r,9,t)},w=(e,t)=>{let n=t[1];C(e,t),d(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},T={mode:o,persisted:s,beforeEnter(t){let r=c;if(!n.isMounted){if(a)r=_||c;else return}t[Pn]&&t[Pn](!0);let i=S[x];i&&Wi(e,i)&&i.el[Pn]&&i.el[Pn](),C(r,[t])},enter(t){if(S[x]===e)return;let r=l,i=u,o=f;if(!n.isMounted){if(a)r=v||l,i=y||u,o=b||f;else return}let s=!1;t[Fn]=e=>{s||(s=!0,C(e?o:i,[t]),T.delayedLeave&&T.delayedLeave(),t[Fn]=void 0)};let c=t[Fn].bind(null,!1);r?w(r,[t,c]):c()},leave(t,r){let i=String(e.key);if(t[Fn]&&t[Fn](!0),n.isUnmounting)return r();C(p,[t]);let a=!1;t[Pn]=n=>{a||(a=!0,r(),C(n?g:h,[t]),t[Pn]=void 0,S[i]===e&&delete S[i])};let o=t[Pn].bind(null,!1);S[i]=e,m?w(m,[t,o]):o()},clone(e){let a=Wn(e,t,n,r,i);return i&&i(a),a}};return T}function Gn(e){if(nr(e))return e=Yi(e),e.children=null,e}function Kn(e){if(!nr(e))return Nn(e.type)&&e.children?Vn(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&h(n.default))return n.default()}}function qn(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let n=e.component.subTree;qn(Nn(n.type)&&Kn(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Jn(e,t=!1,n){let r=[],i=0;for(let a=0;a1)for(let e=0;e$n(e,n&&(d(n)?n[t]:n),r,a,o));return}if(tr(a)&&!o){a.shapeFlag&512&&a.type.__asyncResolved&&a.component.subTree.component&&$n(e,n,r,a.component.subTree);return}let s=a.shapeFlag&4?va(a.component):a.el,l=o?null:s,{i:f,r:p}=e,m=n&&n.r,_=f.refs===t?f.refs={}:f.refs,v=f.setupState,y=z(v),b=v===t?i:e=>!Zn(_,e)&&u(y,e),x=(e,t)=>!(t&&Zn(_,t));if(m!=null&&m!==p){if(er(n),g(m))_[m]=null,b(m)&&(v[m]=null);else if(B(m)){let e=n;x(m,e.k)&&(m.value=null),e.k&&(_[e.k]=null)}}if(h(p))$t(p,f,12,[l,_]);else{let t=g(p),n=B(p);if(t||n){let i=()=>{if(e.f){let n=t?b(p)?v[p]:_[p]:x(p)||!e.k?p.value:_[e.k];if(o)d(n)&&c(n,s);else if(d(n))n.includes(s)||n.push(s);else if(t)_[p]=[s],b(p)&&(v[p]=_[p]);else{let t=[s];x(p,e.k)&&(p.value=t),e.k&&(_[e.k]=t)}}else t?(_[p]=l,b(p)&&(v[p]=l)):n&&(x(p,e.k)&&(p.value=l),e.k&&(_[e.k]=l))};if(l){let t=()=>{i(),Qn.delete(e)};t.id=-1,Qn.set(e,t),bi(t,r)}else er(e),i()}}}function er(e){let t=Qn.get(e);t&&(t.flags|=8,Qn.delete(e))}se().requestIdleCallback,se().cancelIdleCallback;var tr=e=>!!e.type.__asyncLoader,nr=e=>e.type.__isKeepAlive;function rr(e,t){ar(e,`a`,t)}function ir(e,t){ar(e,`da`,t)}function ar(e,t,n=ia){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(sr(t,r,n),n){let e=n.parent;for(;e&&e.parent;)nr(e.parent.vnode)&&or(r,t,n,e),e=e.parent}}function or(e,t,n,r){let i=sr(t,e,r,!0);mr(()=>{c(r[t],i)},n)}function sr(e,t,n=ia,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{ze();let i=ca(n),a=en(t,n,e,r);return i(),Be(),a};return r?i.unshift(a):i.push(a),a}}var cr=e=>(t,n=ia)=>{(!da||e===`sp`)&&sr(e,(...e)=>t(...e),n)},lr=cr(`bm`),ur=cr(`m`),dr=cr(`bu`),fr=cr(`u`),pr=cr(`bum`),mr=cr(`um`),hr=cr(`sp`),gr=cr(`rtg`),_r=cr(`rtc`);function vr(e,t=ia){sr(`ec`,e,t)}var yr=Symbol.for(`v-ndc`);function br(e,t,n,r){let i,a=n&&n[r],o=d(e);if(o||g(e)){let n=o&&Pt(e),r=!1,s=!1;n&&(r=!It(e),s=Ft(e),e=Qe(e)),i=Array(e.length);for(let n=0,o=e.length;nt(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;re?ua(e)?va(e):xr(e.parent):null,Sr=s(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>xr(e.parent),$root:e=>xr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>jr(e),$forceUpdate:e=>e.f||=()=>{fn(e.update)},$nextTick:e=>e.n||=un.bind(e.proxy),$watch:e=>An.bind(e)}),Cr=(e,n)=>e!==t&&!e.__isScriptSetup&&u(e,n),wr={get({_:e},n){if(n===`__v_skip`)return!0;let{ctx:r,setupState:i,data:a,props:o,accessCache:s,type:c,appContext:l}=e;if(n[0]!==`$`){let e=s[n];if(e!==void 0)switch(e){case 1:return i[n];case 2:return a[n];case 4:return r[n];case 3:return o[n]}else if(Cr(i,n))return s[n]=1,i[n];else if(a!==t&&u(a,n))return s[n]=2,a[n];else if(u(o,n))return s[n]=3,o[n];else if(r!==t&&u(r,n))return s[n]=4,r[n];else Er&&(s[n]=0)}let d=Sr[n],f,p;if(d)return n===`$attrs`&&R(e.attrs,`get`,``),d(e);if((f=c.__cssModules)&&(f=f[n]))return f;if(r!==t&&u(r,n))return s[n]=4,r[n];if(p=l.config.globalProperties,u(p,n))return p[n]},set({_:e},n,r){let{data:i,setupState:a,ctx:o}=e;return Cr(a,n)?(a[n]=r,!0):i!==t&&u(i,n)?(i[n]=r,!0):u(e.props,n)||n[0]===`$`&&n.slice(1)in e?!1:(o[n]=r,!0)},has({_:{data:e,setupState:n,accessCache:r,ctx:i,appContext:a,props:o,type:s}},c){let l;return!!(r[c]||e!==t&&c[0]!==`$`&&u(e,c)||Cr(n,c)||u(o,c)||u(i,c)||u(Sr,c)||u(a.config.globalProperties,c)||(l=s.__cssModules)&&l[c])},defineProperty(e,t,n){return n.get==null?u(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}};function Tr(e){return d(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}var Er=!0;function Dr(e){let t=jr(e),n=e.proxy,i=e.ctx;Er=!1,t.beforeCreate&&kr(t.beforeCreate,e,`bc`);let{data:a,computed:o,methods:s,watch:c,provide:l,inject:u,created:f,beforeMount:p,mounted:m,beforeUpdate:g,updated:_,activated:y,deactivated:b,beforeDestroy:x,beforeUnmount:S,destroyed:C,unmounted:w,render:T,renderTracked:E,renderTriggered:ee,errorCaptured:D,serverPrefetch:te,expose:O,inheritAttrs:ne,components:re,directives:k,filters:A}=t;if(u&&Or(u,i,null),s)for(let e in s){let t=s[e];h(t)&&(i[e]=t.bind(n))}if(a){let t=a.call(n,n);v(t)&&(e.data=At(t))}if(Er=!0,o)for(let e in o){let t=o[e],a=ba({get:h(t)?t.bind(n,n):h(t.get)?t.get.bind(n,n):r,set:!h(t)&&h(t.set)?t.set.bind(n):r});Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e})}if(c)for(let e in c)Ar(c[e],i,n,e);if(l){let e=h(l)?l.call(n):l;Reflect.ownKeys(e).forEach(t=>{wn(t,e[t])})}f&&kr(f,e,`c`);function j(e,t){d(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(j(lr,p),j(ur,m),j(dr,g),j(fr,_),j(rr,y),j(ir,b),j(vr,D),j(_r,E),j(gr,ee),j(pr,S),j(mr,w),j(hr,te),d(O)){if(O.length){let t=e.exposed||={};O.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={}}T&&e.render===r&&(e.render=T),ne!=null&&(e.inheritAttrs=ne),re&&(e.components=re),k&&(e.directives=k),te&&Xn(e)}function Or(e,t,n=r){d(e)&&(e=Ir(e));for(let n in e){let r=e[n],i;i=v(r)?`default`in r?Tn(r.from||n,r.default,!0):Tn(r.from||n):Tn(r),B(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function kr(e,t,n){en(d(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ar(e,t,n,r){let i=r.includes(`.`)?jn(n,r):()=>n[r];if(g(e)){let n=t[e];h(n)&&On(i,n)}else if(h(e))On(i,e.bind(n));else if(v(e)){if(d(e))e.forEach(e=>Ar(e,t,n,r));else{let r=h(e.handler)?e.handler.bind(n):t[e.handler];h(r)&&On(i,r,e)}}}function jr(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>Mr(c,e,o,!0)),Mr(c,t,o)),v(t)&&a.set(t,c),c}function Mr(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&Mr(e,a,n,!0),i&&i.forEach(t=>Mr(e,t,n,!0));for(let i in t)if(!(r&&i===`expose`)){let r=Nr[i]||n&&n[i];e[i]=r?r(e[i],t[i]):t[i]}return e}var Nr={data:Pr,props:Rr,emits:Rr,methods:Lr,computed:Lr,beforeCreate:G,created:G,beforeMount:G,mounted:G,beforeUpdate:G,updated:G,beforeDestroy:G,beforeUnmount:G,destroyed:G,unmounted:G,activated:G,deactivated:G,errorCaptured:G,serverPrefetch:G,components:Lr,directives:Lr,watch:zr,provide:Pr,inject:Fr};function Pr(e,t){return t?e?function(){return s(h(e)?e.call(this,this):e,h(t)?t.call(this,this):t)}:t:e}function Fr(e,t){return Lr(Ir(e),Ir(t))}function Ir(e){if(d(e)){let t={};for(let n=0;nt===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${D(t)}Modifiers`]||e[`${O(t)}Modifiers`];function Gr(e,n,...r){if(e.isUnmounted)return;let i=e.vnode.props||t,a=r,o=n.startsWith(`update:`),s=o&&Wr(i,n.slice(7));s&&(s.trim&&(a=r.map(e=>g(e)?e.trim():e)),s.number&&(a=a.map(ie)));let c,l=i[c=re(n)]||i[c=re(D(n))];!l&&o&&(l=i[c=re(O(n))]),l&&en(l,e,6,a);let u=i[c+`Once`];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,en(u,e,6,a)}}var Kr=new WeakMap;function qr(e,t,n=!1){let r=n?Kr:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},c=!1;if(!h(e)){let r=e=>{let n=qr(e,t,!0);n&&(c=!0,s(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!c?(v(e)&&r.set(e,null),null):(d(a)?a.forEach(e=>o[e]=null):s(o,a),v(e)&&r.set(e,o),o)}function Jr(e,t){return!e||!a(t)?!1:(t=t.slice(2),t=t===`Once`?t:t.replace(/Once$/,``),u(e,t[0].toLowerCase()+t.slice(1))||u(e,O(t))||u(e,t))}function Yr(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:s,attrs:c,emit:l,render:u,renderCache:d,props:f,data:p,setupState:m,ctx:h,inheritAttrs:g}=e,_=xn(e),v,y;try{if(n.shapeFlag&4){let e=i||r,t=e;v=Xi(u.call(t,e,d,f,m,p,h)),y=c}else{let e=t;v=Xi(e.length>1?e(f,{attrs:c,slots:s,emit:l}):e(f,null)),y=t.props?c:Xr(c)}}catch(t){Ii.length=0,tn(t,e,1),v=X(Pi)}let b=v;if(y&&g!==!1){let e=Object.keys(y),{shapeFlag:t}=b;e.length&&t&7&&(a&&e.some(o)&&(y=Zr(y,a)),b=Yi(b,y,!1,!0))}return n.dirs&&(b=Yi(b,null,!1,!0),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&qn(Nn(b.type)&&Kn(b)||b,n.transition),v=b,xn(_),v}var Xr=e=>{let t;for(let n in e)(n===`class`||n===`style`||a(n))&&((t||={})[n]=e[n]);return t},Zr=(e,t)=>{let n={};for(let r in e)(!o(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Qr(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?$r(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(ni),ii=e=>Object.getPrototypeOf(e)===ni;function ai(e,t,n,r=!1){let i={},a=ri();e.propsDefaults=Object.create(null),si(e,t,i,a);for(let t in e.propsOptions[0])t in i||(i[t]=void 0);e.props=n?r?i:jt(i):e.type.props?i:a,e.attrs=a}function oi(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=z(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{p=!0;let[t,n]=ui(e,r,!0);s(l,t),n&&f.push(...n)};!i&&r.mixins.length&&r.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!c&&!p)return v(e)&&a.set(e,n),n;if(d(c))for(let e=0;ee===`_`||e===`_ctx`||e===`$stable`,pi=e=>d(e)?e.map(Xi):[Xi(e)],mi=(e,t,n)=>{if(t._n)return t;let r=Sn((...e)=>pi(t(...e)),n);return r._c=!1,r},hi=(e,t,n)=>{let r=e._ctx;for(let n in e){if(fi(n))continue;let i=e[n];if(h(i))t[n]=mi(n,i,r);else if(i!=null){let e=pi(i);t[n]=()=>e}}},gi=(e,t)=>{let n=pi(t);e.slots.default=()=>n},_i=(e,t,n)=>{for(let r in t)(n||!fi(r))&&(e[r]=t[r])},vi=(e,t,n)=>{let r=e.slots=ri();if(e.vnode.shapeFlag&32){let e=t._;e?(_i(r,t,n),n&&j(r,`_`,e,!0)):hi(t,r)}else t&&gi(e,t)},yi=(e,n,r)=>{let{vnode:i,slots:a}=e,o=!0,s=t;if(i.shapeFlag&32){let e=n._;e?r&&e===1?o=!1:_i(a,n,r):(o=!n.$stable,hi(n,a)),s=n}else n&&(gi(e,n),s={default:1});if(o)for(let e in a)!fi(e)&&s[e]==null&&delete a[e]},bi=Mi;function xi(e){return Si(e)}function Si(e,i){let a=se();a.__VUE__=!0;let{insert:o,remove:s,patchProp:c,createElement:l,createText:u,createComment:d,setText:f,setElementText:p,parentNode:m,nextSibling:h,setScopeId:g=r,insertStaticContent:_}=e,v=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!Wi(e,t)&&(r=he(e),fe(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case Ni:y(e,t,n,r);break;case Pi:b(e,t,n,r);break;case Fi:e??x(t,n,r,o);break;case K:re(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?k(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,_e)}u!=null&&i?$n(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&$n(e.ref,null,a,e,!0)},y=(e,t,n,r)=>{if(e==null)o(t.el=u(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{e==null?o(t.el=d(t.children||``),n,r):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=_(e.children,t,n,r,e.el,e.anchor)},S=({el:e,anchor:t},n,r)=>{let i;for(;e&&e!==t;)i=h(e),o(e,n,r),e=i;o(t,n,r)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),s(e),e=n;s(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)E(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),te(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},E=(e,t,n,r,i,a,s,u)=>{let d,f,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(d=e.el=l(e.type,a,m&&m.is,m),h&8?p(d,e.children):h&16&&D(e.children,d,null,r,i,Ci(e,a),s,u),_&&Cn(e,null,r,`created`),ee(d,e,e.scopeId,s,r),m){for(let e in m)e!==`value`&&!T(e)&&c(d,e,null,m[e],a,r);`value`in m&&c(d,`value`,null,m.value,a),(f=m.onVnodeBeforeMount)&&ea(f,r,e)}_&&Cn(e,null,r,`beforeMount`);let v=Ti(i,g);v&&g.beforeEnter(d),o(d,t,n),((f=m&&m.onVnodeMounted)||v||_)&&bi(()=>{try{f&&ea(f,r,e),v&&g.enter(d),_&&Cn(e,null,r,`mounted`)}finally{}},i)},ee=(e,t,n,r,i)=>{if(n&&g(e,n),r)for(let t=0;t{for(let l=c;l{let l=n.el=e.el,{patchFlag:u,dynamicChildren:d,dirs:f}=n;u|=e.patchFlag&16;let m=e.props||t,h=n.props||t,g;if(r&&wi(r,!1),(g=h.onVnodeBeforeUpdate)&&ea(g,r,n,e),f&&Cn(n,e,r,`beforeUpdate`),r&&wi(r,!0),d&&(!e.dynamicChildren||e.dynamicChildren.length!==d.length)&&(u=0,s=!1,d=null),(m.innerHTML&&h.innerHTML==null||m.textContent&&h.textContent==null)&&p(l,``),d?O(e.dynamicChildren,d,l,r,i,Ci(n,a),o):s||ce(e,n,l,null,r,i,Ci(n,a),o,!1),u>0){if(u&16)ne(l,m,h,r,a);else if(u&2&&m.class!==h.class&&c(l,`class`,null,h.class,a),u&4&&c(l,`style`,m.style,h.style,a),u&8){let e=n.dynamicProps;for(let t=0;t{g&&ea(g,r,n,e),f&&Cn(n,e,r,`updated`)},i)},O=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(n!==r){if(n!==t)for(let t in n)!T(t)&&!(t in r)&&c(e,t,n[t],null,a,i);for(let t in r){if(T(t))continue;let o=r[t],s=n[t];o!==s&&t!==`value`&&c(e,t,s,o,a,i)}`value`in r&&c(e,`value`,n.value,r.value,a)}},re=(e,t,n,r,i,a,s,c,l)=>{let d=t.el=e?e.el:u(``),f=t.anchor=e?e.anchor:u(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(c=c?c.concat(h):h),e==null?(o(d,n,r),o(f,n,r),D(t.children||[],n,f,i,a,s,c,l)):p>0&&p&64&&m&&e.dynamicChildren&&e.dynamicChildren.length===m.length?(O(e.dynamicChildren,m,n,i,a,s,c),(t.key!=null||i&&t===i.subTree)&&Ei(e,t,!0)):ce(e,t,n,f,i,a,s,c,l)},k=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):j(t,n,r,i,a,o,c):ie(e,t,c)},j=(e,t,n,r,i,a,o)=>{let s=e.component=ra(e,r,i);if(nr(e)&&(s.ctx.renderer=_e),fa(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,ae,o),!e.el){let r=s.subTree=X(Pi);b(null,r,t,n),e.placeholder=r.el}}else ae(s,e,t,n,i,a,o)},ie=(e,t,n)=>{let r=t.component=e.component;if(Qr(e,t,n)){if(r.asyncDep&&!r.asyncResolved){oe(r,t,n);return}r.next=t,r.update()}else t.el=e.el,r.vnode=t},ae=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:s,vnode:c}=e;{let n=Oi(e);if(n){t&&(t.el=c.el,oe(e,t,o)),n.asyncDep.then(()=>{bi(()=>{e.isUnmounted||l()},i)});return}}let u=t,d;wi(e,!1),t?(t.el=c.el,oe(e,t,o)):t=c,n&&A(n),(d=t.props&&t.props.onVnodeBeforeUpdate)&&ea(d,s,t,c),wi(e,!0);let f=Yr(e),p=e.subTree;e.subTree=f,v(p,f,m(p.el),he(p),e,i,a),t.el=f.el,u===null&&ti(e,f.el),r&&bi(r,i),(d=t.props&&t.props.onVnodeUpdated)&&bi(()=>ea(d,s,t,c),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=tr(t);if(wi(e,!1),l&&A(l),!m&&(o=c&&c.onVnodeBeforeMount)&&ea(o,d,t),wi(e,!0),s&&F){let t=()=>{e.subTree=Yr(e),F(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._hasShadowRoot()&&f.ce._injectChildStyle(p,e.parent?e.parent.type:void 0);let o=e.subTree=Yr(e);v(null,o,n,r,e,i,a),t.el=o.el}if(u&&bi(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;bi(()=>ea(o,d,e),i)}(t.shapeFlag&256||d&&tr(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&bi(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new we(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>fn(u),wi(e,!0),l()},oe=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,oi(e,t.props,r,n),yi(e,t.children,n),ze(),hn(e),Be()},ce=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:m}=t;if(f>0){if(f&128){ue(l,d,n,r,i,a,o,s,c);return}if(f&256){le(l,d,n,r,i,a,o,s,c);return}}m&8?(u&16&&me(l,i,a),d!==l&&p(n,d)):u&16?m&16?ue(l,d,n,r,i,a,o,s,c):me(l,i,a,!0):(u&8&&p(n,``),m&16&&D(d,n,r,i,a,o,s,c))},le=(e,t,r,i,a,o,s,c,l)=>{e||=n,t||=n;let u=e.length,d=t.length,f=Math.min(u,d),p=0;for(;pd?me(e,a,o,!0,!1,f):D(t,r,i,a,o,s,c,l,f)},ue=(e,t,r,i,a,o,s,c,l)=>{let u=0,d=t.length,f=e.length-1,p=d-1;for(;u<=f&&u<=p;){let n=e[u],i=t[u]=l?Zi(t[u]):Xi(t[u]);if(Wi(n,i))v(n,i,r,null,a,o,s,c,l);else break;u++}for(;u<=f&&u<=p;){let n=e[f],i=t[p]=l?Zi(t[p]):Xi(t[p]);if(Wi(n,i))v(n,i,r,null,a,o,s,c,l);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,n=ep)for(;u<=f;)fe(e[u],a,o,!0),u++;else{let m=u,h=u,g=new Map;for(u=h;u<=p;u++){let e=t[u]=l?Zi(t[u]):Xi(t[u]);e.key!=null&&g.set(e.key,u)}let _,y=0,b=p-h+1,x=!1,S=0,C=Array(b);for(u=0;u=b){fe(n,a,o,!0);continue}let i;if(n.key!=null)i=g.get(n.key);else for(_=h;_<=p;_++)if(C[_-h]===0&&Wi(n,t[_])){i=_;break}i===void 0?fe(n,a,o,!0):(C[i-h]=u+1,i>=S?S=i:x=!0,v(n,t[i],r,null,a,o,s,c,l),y++)}let w=x?Di(C):n;for(_=w.length-1,u=b-1;u>=0;u--){let e=h+u,n=t[e],f=t[e+1],p=e+1{let{el:a,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){de(e.component.subTree,t,n,r);return}if(d&128){e.suspense.move(t,n,r);return}if(d&64){c.move(e,t,n,_e);return}if(c===K){o(a,t,n);for(let e=0;el.enter(a),i));else{let{leave:r,delayLeave:i,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?s(a):o(a,t,n)},d=()=>{let e=a._isLeaving||!!a[Pn];a._isLeaving&&a[Pn](!0),l.persisted&&!e?u():r(a,()=>{u(),c&&c()})};i?i(a,u,d):d()}}else o(a,t,n)},fe=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p,memo:m}=e;if(d===-2&&(i=!1),s!=null&&(ze(),$n(s,null,n,e,!0),Be()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let h=u&1&&f,g=!tr(e),_;if(g&&(_=o&&o.onVnodeBeforeUnmount)&&ea(_,t,e),u&6)N(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}h&&Cn(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,_e,r):l&&!l.hasOnce&&(a!==K||d>0&&d&64)?me(l,t,n,!1,!0):(a===K&&d&384||!i&&u&16)&&me(c,t,n),r&&M(e)}let v=m!=null&&p==null;(g&&(_=o&&o.onVnodeUnmounted)||h||v)&&bi(()=>{_&&ea(_,t,e),h&&Cn(e,null,t,`unmounted`),v&&(e.el=null)},n)},M=e=>{let{type:t,el:n,anchor:r,transition:i}=e;if(t===K){pe(n,r);return}if(t===Fi){C(e);return}let a=()=>{s(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(e.shapeFlag&1&&i&&!i.persisted){let{leave:t,delayLeave:r}=i,o=()=>t(n,a);r?r(e.el,a,o):o()}else a()},pe=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},N=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;ki(c),ki(l),r&&A(r),i.stop(),a&&(a.flags|=8,fe(o,e,t,n)),s&&bi(s,t),bi(()=>{e.isUnmounted=!0},t)},me=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return he(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[Mn];return n?h(n):t},ge=!1,P=(e,t,n)=>{let r;e==null?t._vnode&&(fe(t._vnode,null,null,!0),r=t._vnode.component):v(t._vnode||null,e,t,null,null,null,n),t._vnode=e,ge||=(ge=!0,hn(r),gn(),!1)},_e={p:v,um:fe,m:de,r:M,mt:j,mc:D,pc:ce,pbc:O,n:he,o:e},ve,F;return i&&([ve,F]=i(_e)),{render:P,hydrate:ve,createApp:Hr(P,ve)}}function Ci({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function wi({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ti(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ei(e,t,n=!1){let r=e.children,i=t.children;if(d(r)&&d(i))for(let e=0;e>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-->0;)n[a]=o,o=t[o];return n}function Oi(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Oi(t)}function ki(e){if(e)for(let t=0;te.__isSuspense;function Mi(e,t){t&&t.pendingBranch?d(e)?t.effects.push(...e):t.effects.push(e):mn(e)}var K=Symbol.for(`v-fgt`),Ni=Symbol.for(`v-txt`),Pi=Symbol.for(`v-cmt`),Fi=Symbol.for(`v-stc`),Ii=[],Li=null;function q(e=!1){Ii.push(Li=e?null:[])}function Ri(){Ii.pop(),Li=Ii[Ii.length-1]||null}var zi=1;function Bi(e,t=!1){zi+=e,e<0&&Li&&t&&(Li.hasOnce=!0)}function Vi(e){return e.dynamicChildren=zi>0?Li||n:null,Ri(),zi>0&&Li&&Li.push(e),e}function J(e,t,n,r,i,a){return Vi(Y(e,t,n,r,i,a,!0))}function Hi(e,t,n,r,i){return Vi(X(e,t,n,r,i,!0))}function Ui(e){return e?e.__v_isVNode===!0:!1}function Wi(e,t){return e.type===t.type&&e.key===t.key}var Gi=({key:e})=>e??null,Ki=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:g(e)||B(e)||h(e)?{i:yn,r:e,k:t,f:!!n}:e);function Y(e,t=null,n=null,r=0,i=null,a=e===K?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Gi(t),ref:t&&Ki(t),scopeId:bn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:yn};return s?(Qi(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=g(n)?8:16),zi>0&&!o&&Li&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&Li.push(c),c}var X=qi;function qi(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===yr)&&(e=Pi),Ui(e)){let r=Yi(e,t,!0);return n&&Qi(r,n),zi>0&&!a&&Li&&(r.shapeFlag&6?Li[Li.indexOf(e)]=r:Li.push(r)),r.patchFlag=-2,r}if(ya(e)&&(e=e.__vccOpts),t){t=Ji(t);let{class:e,style:n}=t;e&&!g(e)&&(t.class=M(e)),v(n)&&(Lt(n)&&!d(n)&&(n=s({},n)),t.style=ce(n))}let o=g(e)?1:ji(e)?128:Nn(e)?64:v(e)?4:h(e)?2:0;return Y(e,t,n,r,i,o,a,!0)}function Ji(e){return e?Lt(e)||ii(e)?s({},e):e:null}function Yi(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?$i(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Gi(l),ref:t&&t.ref?n&&a?d(a)?a.concat(Ki(t)):[a,Ki(t)]:Ki(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==K?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Yi(e.ssContent),ssFallback:e.ssFallback&&Yi(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&qn(u,c.clone(u)),u}function Z(e=` `,t=0){return X(Ni,null,e,t)}function Q(e=``,t=!1){return t?(q(),Hi(Pi,null,e)):X(Pi,null,e)}function Xi(e){return e==null||typeof e==`boolean`?X(Pi):d(e)?X(K,null,e.slice()):Ui(e)?Zi(e):X(Ni,null,String(e))}function Zi(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Yi(e)}function Qi(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(d(t))n=16;else if(typeof t==`object`){if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),Qi(e,n()),n._c&&(n._d=!0));return}{n=32;let r=t._;!r&&!ii(t)?t._ctx=yn:r===3&&yn&&(yn.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}}else if(h(t)){if(r&65){Qi(e,{default:t});return}t={default:t,_ctx:yn},n=32}else t=String(t),r&64?(n=16,t=[Z(t)]):n=8;e.children=t,e.shapeFlag|=n}function $i(...e){let t={};for(let n=0;nia||yn,oa,sa;{let e=se(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};oa=t(`__VUE_INSTANCE_SETTERS__`,e=>ia=e),sa=t(`__VUE_SSR_SETTERS__`,e=>da=e)}var ca=e=>{let t=ia;return oa(e),e.scope.on(),()=>{e.scope.off(),oa(t)}},la=()=>{ia&&ia.scope.off(),oa(null)};function ua(e){return e.vnode.shapeFlag&4}var da=!1;function fa(e,t=!1,n=!1){t&&sa(t);let{props:r,children:i}=e.vnode,a=ua(e);ai(e,r,a,t),vi(e,i,n||t);let o=a?pa(e,t):void 0;return t&&sa(!1),o}function pa(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,wr);let{setup:r}=n;if(r){ze();let n=e.setupContext=r.length>1?_a(e):null,i=ca(e),a=$t(r,e,0,[e.props,n]),o=y(a);if(Be(),i(),(o||e.sp)&&!tr(e)&&Xn(e),o){if(a.then(la,la),t)return a.then(n=>{sa(!0);try{ma(e,n,t)}finally{sa(!1)}}).catch(t=>{tn(t,e,0)});e.asyncDep=a}else ma(e,a,t)}else ha(e,t)}function ma(e,t,n){h(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:v(t)&&(e.setupState=Wt(t)),ha(e,n)}function ha(e,t,n){let i=e.type;e.render||=i.render||r;{let t=ca(e);ze();try{Dr(e)}finally{Be(),t()}}}var ga={get(e,t){return R(e,`get`,``),e[t]}};function _a(e){return{attrs:new Proxy(e.attrs,ga),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function va(e){return e.exposed?e.exposeProxy||=new Proxy(Wt(Rt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Sr)return Sr[n](e)},has(e,t){return t in e||t in Sr}}):e.proxy}function ya(e){return h(e)&&`__vccOpts`in e}var ba=(e,t)=>Kt(e,t,da);function xa(e,t,n){try{Bi(-1);let r=arguments.length;return r===2?v(t)&&!d(t)?Ui(t)?X(e,null,[t]):X(e,t):X(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Ui(n)&&(n=[n]),X(e,t,n))}finally{Bi(1)}}var Sa=`3.5.42`,Ca=void 0,wa=typeof window<`u`&&window.trustedTypes;if(wa)try{Ca=wa.createPolicy(`vue`,{createHTML:e=>e})}catch{}var Ta=Ca?e=>Ca.createHTML(e):e=>e,Ea=`http://www.w3.org/2000/svg`,Da=`http://www.w3.org/1998/Math/MathML`,Oa=typeof document<`u`?document:null,ka=Oa&&Oa.createElement(`template`),Aa={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?Oa.createElementNS(Ea,e):t===`mathml`?Oa.createElementNS(Da,e):n?Oa.createElement(e,{is:n}):Oa.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>Oa.createTextNode(e),createComment:e=>Oa.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Oa.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),i!==a&&(i=i.nextSibling););else{ka.innerHTML=Ta(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=ka.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ja=`transition`,Ma=`animation`,Na=Symbol(`_vtc`),Pa={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},Fa=s({},Rn,Pa),Ia=(e=>(e.displayName=`Transition`,e.props=Fa,e))((e,{slots:t})=>xa(Hn,za(e),t)),La=(e,t=[])=>{d(e)?e.forEach(e=>e(...t)):e&&e(...t)},Ra=e=>e?d(e)?e.some(e=>e.length>1):e.length>1:!1;function za(e){let t={};for(let n in e)n in Pa||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:l=a,appearActiveClass:u=o,appearToClass:d=c,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,h=Ba(i),g=h&&h[0],_=h&&h[1],{onBeforeEnter:v,onEnter:y,onEnterCancelled:b,onLeave:x,onLeaveCancelled:S,onBeforeAppear:C=v,onAppear:w=y,onAppearCancelled:T=b}=t,E=(e,t,n,r)=>{e._enterCancelled=r,Ua(e,t?d:c),Ua(e,t?u:o),n&&n()},ee=(e,t)=>{e._isLeaving=!1,Ua(e,f),Ua(e,m),Ua(e,p),t&&t()},D=e=>(t,n)=>{let i=e?w:y,o=()=>E(t,e,n);La(i,[t,o]),Wa(()=>{Ua(t,e?l:a),Ha(t,e?d:c),Ra(i)||Ka(t,r,g,o)})};return s(t,{onBeforeEnter(e){La(v,[e]),Ha(e,a),Ha(e,o)},onBeforeAppear(e){La(C,[e]),Ha(e,l),Ha(e,u)},onEnter:D(!1),onAppear:D(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>ee(e,t);Ha(e,f),e._enterCancelled?(Ha(e,p),Xa(e)):(Xa(e),Ha(e,p)),Wa(()=>{e._isLeaving&&(Ua(e,f),Ha(e,m),Ra(x)||Ka(e,r,_,n))}),La(x,[e,n])},onEnterCancelled(e){E(e,!1,void 0,!0),La(b,[e])},onAppearCancelled(e){E(e,!0,void 0,!0),La(T,[e])},onLeaveCancelled(e){ee(e),La(S,[e])}})}function Ba(e){if(e==null)return null;if(v(e))return[Va(e.enter),Va(e.leave)];{let t=Va(e);return[t,t]}}function Va(e){return ae(e)}function Ha(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[Na]||(e[Na]=new Set)).add(t)}function Ua(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[Na];n&&(n.delete(t),n.size||(e[Na]=void 0))}function Wa(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var Ga=0;function Ka(e,t,n,r){let i=e._endId=++Ga,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=qa(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u(n[e]||``).split(`, `),i=r(`${ja}Delay`),a=r(`${ja}Duration`),o=Ja(i,a),s=r(`${Ma}Delay`),c=r(`${Ma}Duration`),l=Ja(s,c),u=null,d=0,f=0;t===ja?o>0&&(u=ja,d=o,f=a.length):t===Ma?l>0&&(u=Ma,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?ja:Ma:null,f=u?u===ja?a.length:c.length:0);let p=u===ja&&/\b(?:transform|all)(?:,|$)/.test(r(`${ja}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function Ja(e,t){for(;e.lengthYa(t)+Ya(e[n])))}function Ya(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function Xa(e){return(e?e.ownerDocument:document).body.offsetHeight}function Za(e,t,n){let r=e[Na];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var Qa=Symbol(`_vod`),$a=Symbol(`_vsh`),eo={name:`show`,beforeMount(e,{value:t},{transition:n}){e[Qa]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):to(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),to(e,!0),r.enter(e)):r.leave(e,()=>{to(e,!1)}):to(e,t))},beforeUnmount(e,{value:t}){to(e,t)}};function to(e,t){e.style.display=t?e[Qa]:`none`,e[$a]=!t}var no=Symbol(``),ro=/(?:^|;)\s*display\s*:/;function io(e,t,n){let r=e.style,i=g(n),a=!1;if(n&&!i){if(t){if(g(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??oo(r,t,``)}else for(let e in t)n[e]??oo(r,e,``)}for(let i in n){i===`display`&&(a=!0);let o=n[i];o==null?oo(r,i,``):uo(e,i,!g(t)&&t?t[i]:void 0,o)||oo(r,i,o)}}else if(i){if(t!==n){let e=r[no];e&&(n+=`;`+e),r.cssText=n,a=ro.test(n)}}else t&&e.removeAttribute(`style`);Qa in e&&(e[Qa]=a?r.display:``,e[$a]&&(r.display=`none`))}var ao=/\s*!important$/;function oo(e,t,n){if(d(n))n.forEach(n=>oo(e,t,n));else if(n??=``,t.startsWith(`--`))ao.test(n)?e.setProperty(t,n.replace(ao,``),`important`):e.setProperty(t,n);else{let r=lo(e,t);ao.test(n)?e.setProperty(O(r),n.replace(ao,``),`important`):e[r]=n}}var so=[`Webkit`,`Moz`,`ms`],co={};function lo(e,t){let n=co[t];if(n)return n;let r=D(t);if(r!==`filter`&&r in e)return co[t]=r;r=ne(r);for(let n=0;nSo||=(Co.then(()=>So=0),Date.now());function To(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;let r=n.value;if(d(r)){let n=e.stopImmediatePropagation;e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0};let i=r.slice(),a=[e];for(let n=0;ne.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Do=(e,t,n,r,i,s)=>{let c=i===`svg`;t===`class`?Za(e,r,c):t===`style`?io(e,n,r):a(t)?o(t)||vo(e,t,n,r,s):(t[0]===`.`?(t=t.slice(1),1):t[0]===`^`?(t=t.slice(1),0):Oo(e,t,r,c))?(mo(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&po(e,t,r,c,s,t!==`value`)):e._isVueCE&&(ko(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!g(r)))?mo(e,D(t),r,s,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),po(e,t,r,c))};function Oo(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&Eo(t)&&h(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return Eo(t)&&g(n)?!1:t in e}function ko(e,t){let n=e._def.props;if(!n)return!1;let r=D(t);return Array.isArray(n)?n.some(e=>D(e)===r):Object.keys(n).some(e=>D(e)===r)}var Ao=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return d(t)?e=>A(t,e):t};function jo(e){e.target.composing=!0}function Mo(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var No=Symbol(`_assign`),Po=Symbol(`_initialValue`);function Fo(e,t,n){return t&&(e=e.trim()),n&&(e=ie(e)),e}var Io={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e.parentNode&&(e.type===`text`?e[Po]=e.defaultValue.replace(/[\r\n]/g,``):e.type===`textarea`&&(e[Po]=e.defaultValue.replace(/\r\n?/g,` +`))),e[No]=Ao(i);let a=r||i.props&&i.props.type===`number`;ho(e,t?`change`:`input`,t=>{t.target.composing||e[No](Fo(e.value,n,a))}),(n||a)&&ho(e,`change`,()=>{e.value=Fo(e.value,n,a)}),t||(ho(e,`compositionstart`,jo),ho(e,`compositionend`,Mo),ho(e,`change`,Mo))},mounted(e,{value:t,modifiers:{trim:n,number:r}}){let i=t??``,a=e[Po];delete e[Po],a!==void 0&&(e.type===`text`||e.type===`textarea`)&&e.value!==a?e[No](Fo(e.value,n,r)):e.value=i},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[No]=Ao(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?ie(e.value):e.value,c=t??``;if(s===c)return;let l=e.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c)}},Lo={deep:!0,created(e,t,n){e[No]=Ao(n),ho(e,`change`,()=>{let t=e._modelValue,n=Ho(e),r=e.checked,i=e[No];if(d(t)){let e=_e(t,n),a=e!==-1;if(r&&!a)i(t.concat(n));else if(!r&&a){let n=[...t];n.splice(e,1),i(n)}}else if(p(t)){let e=new Set(t);r?e.add(n):e.delete(n),i(e)}else i(Uo(e,r))})},mounted:Ro,beforeUpdate(e,t,n){e[No]=Ao(n),Ro(e,t,n)}};function Ro(e,{value:t,oldValue:n},r){e._modelValue=t;let i;if(d(t))i=_e(t,r.props.value)>-1;else if(p(t))i=t.has(r.props.value);else{if(t===n)return;i=P(t,Uo(e,!0))}e.checked!==i&&(e.checked=i)}var zo={deep:!0,created(e,{value:t,modifiers:{number:n}},r){e._modelValue=t,ho(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?ie(Ho(e)):Ho(e)),r=e.multiple,i=r?p(e._modelValue)?new Set(t):t:t[0],a=e._pendingValue=[r,r?d(i)?t.slice():t:i];try{e[No](i)}finally{un(()=>{e._pendingValue===a&&(e._pendingValue=void 0)})}}),e[No]=Ao(r)},mounted(e,{value:t}){Vo(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[No]=Ao(n)},updated(e,{value:t}){let n=e._pendingValue;e._pendingValue=void 0,(!n||n[0]!==e.multiple||!Bo(t,n[1],n[0]))&&Vo(e,t)}};function Bo(e,t,n){if(!n||d(e))return P(e,t);if(p(e)){if(e.size!==t.length)return!1;for(let n of t)if(!e.has(n))return!1;return!0}return!1}function Vo(e,t){let n=e.multiple,r=d(t);if(!n||r||p(t)){for(let i=0,a=e.options.length;iString(e)===String(o)):_e(t,o)>-1}else a.selected=t.has(o)}else if(P(Ho(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Ho(e){return`_value`in e?e._value:e.value}function Uo(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var Wo=[`ctrl`,`shift`,`alt`,`meta`],Go={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>Wo.some(n=>e[`${n}Key`]&&!t.includes(n))},Ko=(e,t)=>{if(!e)return e;let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=O(n.key);if(t.some(e=>e===r||qo[e]===r))return e(n)}))},Yo=s({patchProp:Do},Aa),Xo;function Zo(){return Xo||=xi(Yo)}var Qo=((...e)=>{let t=Zo().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=es(e);if(!r)return;let i=t._component;!h(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,$o(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t});function $o(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function es(e){return g(e)?document.querySelector(e):e}var ts=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),ns={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},rs=({size:e,strokeWidth:t=2,absoluteStrokeWidth:n,color:r,iconNode:i,name:a,class:o,...s},{slots:c})=>xa(`svg`,{...ns,width:e||ns.width,height:e||ns.height,stroke:r||ns.stroke,"stroke-width":n?Number(t)*24/Number(e):t,class:[`lucide`,`lucide-${ts(a??`icon`)}`],...s},[...i.map(e=>xa(...e)),...c.default?[c.default()]:[]]),$=(e,t)=>(n,{slots:r})=>xa(rs,{...n,iconNode:t,name:e},r),is=$(`ActivityIcon`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),as=$(`ArchiveRestoreIcon`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h2`,key:`tvwodi`}],[`path`,{d:`M20 8v11a2 2 0 0 1-2 2h-2`,key:`1gkqxj`}],[`path`,{d:`m9 15 3-3 3 3`,key:`1pd0qc`}],[`path`,{d:`M12 12v9`,key:`192myk`}]]),os=$(`CalendarDaysIcon`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),ss=$(`CheckIcon`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),cs=$(`ChevronDownIcon`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),ls=$(`ChevronRightIcon`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),us=$(`CirclePlusIcon`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),ds=$(`DownloadIcon`,[[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`polyline`,{points:`7 10 12 15 17 10`,key:`2ggqvy`}],[`line`,{x1:`12`,x2:`12`,y1:`15`,y2:`3`,key:`1vk2je`}]]),fs=$(`FileJsonIcon`,[[`path`,{d:`M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z`,key:`1rqfz7`}],[`path`,{d:`M14 2v4a2 2 0 0 0 2 2h4`,key:`tnqrlb`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),ps=$(`FolderIcon`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),ms=$(`GripVerticalIcon`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),hs=$(`InboxIcon`,[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]),gs=$(`ListChecksIcon`,[[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}],[`path`,{d:`M13 6h8`,key:`15sg57`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 18h8`,key:`oe0vm4`}]]),_s=$(`ListTodoIcon`,[[`rect`,{x:`3`,y:`5`,width:`6`,height:`6`,rx:`1`,key:`1defrl`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`M13 6h8`,key:`15sg57`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 18h8`,key:`oe0vm4`}]]),vs=$(`LogOutIcon`,[[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}],[`polyline`,{points:`16 17 21 12 16 7`,key:`1gabdz`}],[`line`,{x1:`21`,x2:`9`,y1:`12`,y2:`12`,key:`1uyos4`}]]),ys=$(`MenuIcon`,[[`line`,{x1:`4`,x2:`20`,y1:`12`,y2:`12`,key:`1e0a9i`}],[`line`,{x1:`4`,x2:`20`,y1:`6`,y2:`6`,key:`1owob3`}],[`line`,{x1:`4`,x2:`20`,y1:`18`,y2:`18`,key:`yk5zj1`}]]),bs=$(`PencilIcon`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),xs=$(`PlusIcon`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Ss=$(`RefreshCwIcon`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),Cs=$(`Repeat2Icon`,[[`path`,{d:`m2 9 3-3 3 3`,key:`1ltn5i`}],[`path`,{d:`M13 18H7a2 2 0 0 1-2-2V6`,key:`1r6tfw`}],[`path`,{d:`m22 15-3 3-3-3`,key:`4rnwn2`}],[`path`,{d:`M11 6h6a2 2 0 0 1 2 2v10`,key:`2f72bc`}]]),ws=$(`SearchIcon`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]),Ts=$(`SettingsIcon`,[[`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`,key:`1qme2f`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Es=$(`Trash2Icon`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),Ds=$(`UploadIcon`,[[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`polyline`,{points:`17 8 12 3 7 8`,key:`t8dd8p`}],[`line`,{x1:`12`,x2:`12`,y1:`3`,y2:`15`,key:`widbto`}]]),Os=$(`XIcon`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),ks=e=>e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`).replace(/'/g,`'`),As=e=>{let t=ks(e);return t=t.replace(/`([^`]+)`/g,`$1`),t=t.replace(/\*\*([^*]+)\*\*/g,`$1`),t=t.replace(/\*([^*]+)\*/g,`$1`),t=t.replace(/\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)/g,`$1`),t};function js(e=``){let t=e.replace(/\r\n/g,` +`).split(` +`),n=[],r=!1,i=()=>{r&&=(n.push(``),!1)};for(let e of t){let t=e.trimEnd();if(!t.trim()){i();continue}t.startsWith(`# `)?(i(),n.push(`

${As(t.slice(2))}

`)):t.startsWith(`## `)?(i(),n.push(`

${As(t.slice(3))}

`)):/^[-*] /.test(t)?(r||=(n.push(`
    `),!0),n.push(`
  • ${As(t.slice(2))}
  • `)):(i(),n.push(`

    ${As(t)}

    `))}return i(),n.join(``)}function Ms(e,t){let n=t.trim().toLowerCase();return n?e.filter(e=>[e.title,e.description??``,e.list_name??``,...(e.tags??[]).map(e=>e.name)].join(` `).toLowerCase().includes(n)):e}function Ns(e){let t=new Map;for(let n of e)n.parent_id&&t.set(n.parent_id,[...t.get(n.parent_id)??[],n]);return e.filter(e=>!e.parent_id).map(e=>({task:e,subtasks:t.get(e.id)??[]}))}function Ps(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.valueOf())?``:`${t.getFullYear()}-${`${t.getMonth()+1}`.padStart(2,`0`)}-${`${t.getDate()}`.padStart(2,`0`)}T${`${t.getHours()}`.padStart(2,`0`)}:${`${t.getMinutes()}`.padStart(2,`0`)}`}function Fs(e){return e?new Date(e).toISOString():null}function Is(e){return`${e.getFullYear()}-${`${e.getMonth()+1}`.padStart(2,`0`)}-${`${e.getDate()}`.padStart(2,`0`)}`}function Ls(e){return Array.isArray(e)?{items:e,nextCursor:null}:{items:e.items??[],nextCursor:e.next_cursor??null}}function Rs(e){return e===`tasks`||e===`today`||e===`upcoming`}function zs(e,t,n=1){return e===`numeric`?Number(t??0)>=n:!!t}function Bs(e){if(e===void 0||e===``)return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function Vs(e){if(e&&![`GET`,`HEAD`,`OPTIONS`].includes(e.toUpperCase())){let e=Hs(`dodo_csrf`);if(e)return{"x-csrf-token":e}}return{}}function Hs(e){if(typeof document>`u`)return``;let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n=document.cookie.match(RegExp(`(?:^|; )${t}=([^;]*)`));return n?decodeURIComponent(n[1]):``}var Us={key:0,class:`inline-error`},Ws={class:`view-intro`},Gs={class:`primary-small`},Ks={class:`habit-list`},qs={key:0,class:`habit-main`},Js={class:`habit-name`},Ys=[`aria-label`,`aria-pressed`,`onClick`],Xs={key:1,class:`habit-main numeric-habit`},Zs={class:`habit-name`},Qs={class:`numeric-action`},$s=[`onUpdate:modelValue`,`max`,`placeholder`,`aria-label`],ec=[`onClick`],tc=[`onClick`],nc={key:0,class:`empty-panel`},rc={class:`settings-grid`},ic={class:`tool-card`},ac={class:`file-button`},oc={class:`tool-card`},sc={class:`file-button`},cc=[`disabled`],lc={key:0},uc={class:`tool-card wide`},dc=[`onClick`],fc={key:0},pc={key:0,class:`tool-card wide`},mc=Yn({__name:`MvpPanel`,props:{view:{}},emits:[`changed`,`notice`],setup(e,{emit:t}){let n=e,r=t,i=V([]),a=V([]),o=V([]),s=V(!1),c=V(``),l=V(``),u=V(`boolean`),d=V(1),f=V(null),p=V(null),m=V(null),h=V({}),g=V(Is(new Date)),_;function v(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(e=>e&&typeof e==`object`&&`msg`in e&&typeof e.msg==`string`?e.msg:String(e)).join(`;`)||`请求参数有误`;if(e&&typeof e==`object`){let t=e;return`detail`in t?v(t.detail):JSON.stringify(e)}return`请求失败`}async function y(e,t={}){let n={...t.headers||{}};t.body&&!(t.body instanceof FormData)&&(n[`Content-Type`]=`application/json`);let r=Vs(t.method);r[`x-csrf-token`]&&(n[`x-csrf-token`]=r[`x-csrf-token`]);let i=await fetch(`/api/v1`+e,{credentials:`include`,...t,headers:n});if(!i.ok){let e=await i.json().catch(()=>({}));throw Error(v(e.detail))}let a=i.headers.get(`content-type`)||``;return i.status===204?null:a.includes(`json`)?i.json():i.blob()}async function b(e){s.value=!0,c.value=``;try{await e()}catch(e){c.value=e instanceof Error?e.message:`请求失败`}finally{s.value=!1}}function x(e,t){return(e.cells??[]).find(e=>e.day===t)}function S(e,t){return zs(e.kind,x(e,t)?.value,e.target??1)}async function C(e,t){if(s.value)return;let n=+!x(e,t)?.value;await b(async()=>{await y(`/habits/${e.id}/logs/${t}`,{method:`PUT`,body:JSON.stringify({value:n})}),await D(),r(`notice`,n?`打卡成功 🎉`:`已取消打卡`)})}async function w(e,t){if(s.value)return;let n=Bs(h.value[e.id]);n===null||e.max_value!=null&&n>e.max_value||await b(async()=>{await y(`/habits/${e.id}/logs/${t}`,{method:`PUT`,body:JSON.stringify({value:n})}),await D(),r(`notice`,n>0?`已记录 🎉`:`已清零`)})}async function T(){l.value.trim()&&await b(async()=>{await y(`/habits`,{method:`POST`,body:JSON.stringify({name:l.value.trim(),kind:u.value,target:d.value,schedule_type:`daily`})}),l.value=``,await D(),r(`notice`,`习惯已创建`)})}async function E(e){confirm(`归档习惯“${e.name}”?历史打卡记录会保留。`)&&await b(async()=>{await y(`/habits/${e.id}`,{method:`DELETE`}),await D(),r(`notice`,`习惯已归档`)})}function ee(){let e=Is(new Date);e!==g.value&&(g.value=e,n.view===`habits`&&D())}async function D(){await b(async()=>{let e=await y(`/habits/grid?week=${Is(new Date)}`);i.value=e.habits??[]})}async function te(){await b(async()=>{let[e,t]=await Promise.all([y(`/sessions`).catch(()=>[]),y(`/audit-logs?limit=20`).catch(()=>[])]);a.value=Ls(e).items,o.value=Ls(t).items})}async function O(e){await b(async()=>{await y(`/sessions/${e}`,{method:`DELETE`}),await te(),r(`notice`,`会话已撤销`)})}function ne(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}async function re(){await b(async()=>ne(await y(`/export`),`dodo-export.json`))}async function k(){f.value&&await b(async()=>{let e=new FormData;e.append(`file`,f.value),p.value=await y(`/import/ticktick/preview`,{method:`POST`,body:e})})}async function A(){await b(async()=>{let e=new FormData;e.append(`file`,f.value);let t=await y(`/import/ticktick`,{method:`POST`,body:e});p.value=null,r(`changed`),r(`notice`,`导入完成:新增 ${t?.imported??0},跳过 ${t?.skipped??0}`)})}async function j(){m.value&&confirm(`恢复为合并模式,将导入 JSON 中的清单与任务。继续吗?`)&&await b(async()=>{await y(`/restore?mode=merge`,{method:`POST`,body:await m.value.text()}),r(`changed`),r(`notice`,`数据已恢复`)})}return ur(()=>{n.view===`habits`?(ee(),D(),_=setInterval(ee,6e4)):te()}),pr(()=>{_&&clearInterval(_)}),(t,n)=>(q(),J(`section`,{class:M([`mvp-view`,{loading:s.value}])},[c.value?(q(),J(`p`,Us,F(c.value),1)):Q(``,!0),e.view===`habits`?(q(),J(K,{key:1},[Y(`header`,Ws,[n[6]||=Y(`div`,null,[Y(`small`,null,`把想坚持的事,变成每天的日常`),Y(`h2`,null,`习惯`)],-1),Y(`button`,{class:`soft-button`,onClick:D},[X(H(Ss)),n[5]||=Z(`刷新`,-1)])]),Y(`form`,{class:`habit-create`,onSubmit:Ko(T,[`prevent`])},[W(Y(`input`,{"onUpdate:modelValue":n[0]||=e=>l.value=e,placeholder:`新习惯名称(如:喝水 8 杯)`,"aria-label":`新习惯名称`},null,512),[[Io,l.value]]),W(Y(`select`,{"onUpdate:modelValue":n[1]||=e=>u.value=e,"aria-label":`习惯类型`},[...n[7]||=[Y(`option`,{value:`boolean`},`完成 / 未完成`,-1),Y(`option`,{value:`numeric`},`按数量记录`,-1)]],512),[[zo,u.value]]),u.value===`numeric`?W((q(),J(`input`,{key:0,"onUpdate:modelValue":n[2]||=e=>d.value=e,type:`number`,min:`0`,step:`any`,placeholder:`目标值`,"aria-label":`目标值`},null,512)),[[Io,d.value,void 0,{number:!0}]]):Q(``,!0),Y(`button`,Gs,[X(H(xs)),n[8]||=Z(`添加`,-1)])],32),Y(`div`,Ks,[(q(!0),J(K,null,br(i.value,e=>(q(),J(`article`,{key:e.id,class:M([`habit-row`,{done:S(e,g.value)}])},[e.kind===`numeric`?(q(),J(`div`,Xs,[Y(`span`,null,[Y(`span`,Zs,F(e.name),1),Y(`small`,null,`今天 `+F(x(e,g.value)?.value||0)+` / `+F(e.target||1)+F(e.unit||``),1)]),Y(`span`,Qs,[W(Y(`input`,{"onUpdate:modelValue":t=>h.value[e.id]=t,type:`number`,min:`0`,max:e.max_value??void 0,step:`any`,placeholder:String(e.target||1),"aria-label":`${e.name}今日数值`},null,8,$s),[[Io,h.value[e.id],void 0,{number:!0}]]),Y(`button`,{class:`soft-button`,onClick:t=>w(e,g.value)},`记录`,8,ec)])])):(q(),J(`div`,qs,[Y(`span`,null,[Y(`span`,Js,F(e.name),1),Y(`small`,null,F(S(e,g.value)?`今天已打卡`:`今天还没做`),1)]),Y(`button`,{class:M([`habit-check-button`,{done:S(e,g.value)}]),"aria-label":S(e,g.value)?`取消${e.name}今天的打卡`:`完成${e.name}今天的打卡`,"aria-pressed":S(e,g.value),onClick:t=>C(e,g.value)},[S(e,g.value)?(q(),Hi(H(ss),{key:0})):Q(``,!0)],10,Ys)])),Y(`button`,{class:`icon ghost`,"aria-label":`归档习惯`,onClick:t=>E(e)},[X(H(Es))],8,tc)],2))),128)),!i.value.length&&!s.value?(q(),J(`div`,nc,`还没有习惯,从一件容易坚持的小事开始。`)):Q(``,!0)])],64)):(q(),J(K,{key:2},[n[18]||=Y(`header`,{class:`view-intro`},[Y(`div`,null,[Y(`small`,null,`备份、迁移与安全`),Y(`h2`,null,`设置与数据`)])],-1),Y(`div`,rc,[Y(`article`,ic,[X(H(fs)),n[11]||=Y(`h3`,null,`数据导出与恢复`,-1),n[12]||=Y(`p`,null,`下载完整 JSON 备份,或从备份恢复。`,-1),Y(`button`,{class:`soft-button`,onClick:re},[X(H(ds)),n[9]||=Z(`导出 JSON`,-1)]),Y(`label`,ac,[X(H(as)),n[10]||=Z(`选择备份`,-1),Y(`input`,{type:`file`,accept:`application/json`,onChange:n[3]||=e=>m.value=e.target.files?.[0]||null},null,32)]),m.value?(q(),J(`button`,{key:0,class:`danger-button`,onClick:j},`确认恢复`)):Q(``,!0)]),Y(`article`,oc,[X(H(Ds)),n[14]||=Y(`h3`,null,`导入`,-1),n[15]||=Y(`p`,null,`先预览变化,确认后才写入。`,-1),Y(`label`,sc,[n[13]||=Z(`选择文件`,-1),Y(`input`,{type:`file`,accept:`.json,.csv`,onChange:n[4]||=e=>f.value=e.target.files?.[0]||null},null,32)]),Y(`button`,{disabled:!f.value,class:`soft-button`,onClick:k},`生成预览`,8,cc),p.value?(q(),J(`pre`,lc,F(JSON.stringify(p.value,null,2)),1)):Q(``,!0),p.value?(q(),J(`button`,{key:1,class:`primary-small`,onClick:A},`确认导入`)):Q(``,!0)]),Y(`article`,uc,[X(H(vs)),n[16]||=Y(`h3`,null,`登录会话`,-1),(q(!0),J(K,null,br(a.value,e=>(q(),J(`div`,{key:e.id,class:`session-row`},[Y(`span`,null,[Y(`b`,null,F(e.current?`当前设备`:`其他设备`),1),Y(`small`,null,F(e.user_agent||`未知设备`)+` · `+F(e.last_seen_at||e.created_at),1)]),e.current?Q(``,!0):(q(),J(`button`,{key:0,class:`danger-text`,onClick:t=>O(e.id)},`撤销`,8,dc))]))),128)),a.value.length?Q(``,!0):(q(),J(`p`,fc,`没有可显示的会话。`))]),o.value.length?(q(),J(`article`,pc,[X(H(is)),n[17]||=Y(`h3`,null,`最近活动`,-1),(q(!0),J(K,null,br(o.value,(e,t)=>(q(),J(`div`,{key:e.id||t,class:`audit-row`},[Y(`span`,null,F(e.action||e.event||`变更`),1),Y(`small`,null,F(e.created_at||e.timestamp),1)]))),128))])):Q(``,!0)])],64))],2))}}),hc={key:0,class:`center`},gc={key:1,class:`auth-shell`},_c={class:`auth-card`},vc={key:0,role:`alert`},yc={key:2,class:`shell`},bc={class:`brand-row`},xc={class:`primary-nav`},Sc={class:`section-title`},Cc={class:`folders`},wc={class:`folder-row`},Tc=[`onClick`],Ec={class:`row-actions`},Dc=[`onClick`],Oc=[`onClick`],kc=[`onClick`],Ac=[`onClick`],jc={class:`row-actions`},Mc=[`onClick`],Nc=[`onClick`],Pc=[`onClick`],Fc={class:`row-actions`},Ic=[`onClick`],Lc=[`onClick`],Rc={class:`topbar`},zc={class:`search`},Bc={class:`list-toolbar`},Vc={key:0},Hc={key:1,class:`pager`},Uc=[`disabled`],Wc=[`disabled`],Gc=[`onClick`],Kc=[`onClick`],qc={class:`meta`},Jc={key:0},Yc={key:1},Xc=[`title`],Zc=[`onClick`],Qc=[`onClick`],$c=[`onClick`],el=[`onClick`],tl=[`onClick`],nl={key:0,class:`empty`},rl={class:`detail-head`},il={key:0,class:`detail-form`},al={class:`detail-title`},ol=[`value`],sl=[`value`],cl={key:0},ll={class:`field`},ul={class:`field-label`},dl={class:`tag-picker`},fl=[`onClick`],pl={key:0,class:`hint`},ml={class:`field markdown`},hl={class:`field-label`},gl=[`innerHTML`],_l={class:`subtasks`},vl={class:`field-label`},yl=[`onClick`],bl={class:`check`},xl={key:0,class:`hint`},Sl={class:`detail-actions`},Cl={key:1,class:`paper`},wl={class:`bottom`},Tl={key:0,class:`toast`,role:`status`},El={key:2,class:`error-toast`,role:`alert`},Dl=50;Qo(Yn({__name:`App`,setup(e){let t=V(null),n=V(!1),r=V(``),i=V(``),a=V([]),o=V([]),s=V([]),c=V([]),l=V([]),u=V(``),d=V(`tasks`),f=V(null),p=V(``),m=V(``),h=V(``),g=V(``),_=V(!1),v=V(!1),y=V(!1),b=V(!1),x=V(!0),S=V(1),C=V(0),w=ba(()=>Math.max(1,Math.ceil(C.value/Dl))),T=V(new Set),E=V(!1),ee=ba(()=>d.value===`trash`?`回收站`:d.value===`today`?`今天`:d.value===`upcoming`?`最近 7 天`:d.value===`habits`?`习惯`:d.value===`settings`?`设置与数据`:o.value.find(e=>e.id===u.value)?.name||`收集箱`),D=ba(()=>d.value===`trash`?l.value:c.value),te=ba(()=>{let e=new Date,t=new Date(e);t.setDate(t.getDate()+7);let n=D.value;return[`habits`,`settings`].includes(d.value)?[]:(d.value===`today`&&(n=n.filter(t=>t.due_at&&new Date(t.due_at).toDateString()===e.toDateString())),d.value===`upcoming`&&(n=n.filter(n=>n.due_at&&new Date(n.due_at)>=e&&new Date(n.due_at)<=t)),m.value.trim()?Ms(n,m.value):n)}),O=ba(()=>Ns(te.value)),ne=ba(()=>O.value),re;On(m,()=>{re&&window.clearTimeout(re),Rs(d.value)&&(S.value=1,re=window.setTimeout(()=>ue(),250))}),On(x,()=>{Rs(d.value)&&(S.value=1,ue())});async function k(e,t={}){let n=new Headers(t.headers||{});!n.has(`Content-Type`)&&t.body&&!(t.body instanceof FormData)&&n.set(`Content-Type`,`application/json`);let r=Vs(t.method);r[`x-csrf-token`]&&n.set(`x-csrf-token`,r[`x-csrf-token`]);let i=await fetch(`/api/v1`+e,{credentials:`include`,headers:n,...t});if(!i.ok){let e=`请求失败`;try{let t=await i.json();e=typeof t.detail==`string`?t.detail:e}catch{}throw Error(e)}return i.status===204?null:i.json()}function A(e){g.value=e,window.setTimeout(()=>{g.value===e&&(g.value=``)},2400)}function j(e){h.value=e instanceof Error?e.message:`请求失败`}async function ie(){try{let e=await k(`/setup/status`);if(t.value=e.initialized,e.initialized){let e=await k(`/bootstrap`);n.value=!0,a.value=e.folders??[],o.value=e.lists??[],s.value=e.tags??[],E.value=!0,u.value=e.inbox_id||o.value.find(e=>e.is_inbox)?.id||o.value[0]?.id||``,T.value=new Set(a.value.map(e=>e.id)),await ue()}}catch{n.value=!1,t.value??=!0}}async function ae(){h.value=``;try{await k(t.value?`/auth/login`:`/setup/initialize`,{method:`POST`,body:JSON.stringify({username:r.value,password:i.value})}),t.value=!0,n.value=!0;let e=await k(`/bootstrap`);a.value=e.folders??[],o.value=e.lists??[],s.value=e.tags??[],E.value=!0,u.value=e.inbox_id||o.value.find(e=>e.is_inbox)?.id||o.value[0]?.id||``,T.value=new Set(a.value.map(e=>e.id)),await ue()}catch(e){j(e)}}function oe(e){let t=new Date;return t.setDate(t.getDate()+e),t.setHours(0,0,0,0),t.toISOString()}async function se(){let e=new URLSearchParams({page:String(S.value),page_size:String(Dl)});m.value?e.set(`q`,m.value):d.value===`tasks`&&u.value&&e.set(`list_id`,u.value),d.value===`today`&&(e.set(`due_from`,oe(0)),e.set(`due_to`,oe(1))),d.value===`upcoming`&&(e.set(`due_from`,oe(0)),e.set(`due_to`,oe(8))),!x.value&&d.value!==`trash`&&e.set(`completed`,`false`);let t=await k(`/tasks?${e}`);c.value=t.items??[],C.value=t.total??c.value.length}async function le(e=!1){if(!e&&E.value)return;let[t,n,r]=await Promise.all([k(`/folders`),k(`/lists`),k(`/tags`).catch(()=>[])]);a.value=t,o.value=n,s.value=r,E.value=!0,o.value.some(e=>e.id===u.value)||(u.value=o.value.find(e=>e.is_inbox)?.id||o.value[0]?.id||``),T.value=new Set(a.value.map(e=>e.id))}async function ue(){_.value=!0,h.value=``;try{E.value||await le(),await se(),S.value>w.value&&(S.value=w.value,await se())}catch(e){j(e)}finally{_.value=!1}}async function de(){E.value=!1,await ue()}async function fe(){let e=await k(`/trash?page=${S.value}&page_size=${Dl}`);l.value=e.items??[],C.value=e.total??l.value.length}async function pe(){_.value=!0,h.value=``;try{await fe()}catch(e){j(e)}finally{_.value=!1}}async function N(e,t){d.value=e,t&&(u.value=t),S.value=1,f.value=null,v.value=!1,y.value=!1,e===`trash`?await pe():Rs(e)?await ue():c.value=[]}async function me(){if(p.value.trim()&&u.value)try{let e=await k(`/tasks`,{method:`POST`,body:JSON.stringify({title:p.value.trim(),list_id:u.value})});c.value.push(e),p.value=``,I(e),A(`任务已添加`)}catch(e){j(e)}}async function he(e,t){let n=await k(`/tasks/${e.id}`,{method:`PATCH`,body:JSON.stringify({...t,version:e.version})}),r=c.value.findIndex(t=>t.id===e.id);return r>=0&&(c.value[r]={...c.value[r],...n}),f.value?.id===e.id&&(f.value={...f.value,...n}),n}async function ge(e){try{await he(e,{completed:!e.completed}),A(e.completed?`已重新打开`:`完成啦`)}catch(e){j(e)}}async function P(){if(f.value?.title.trim())try{let e=f.value;await he(e,{title:e.title.trim(),description:e.description,priority:Number(e.priority),due_at:Fs(Ps(e.due_at)),list_id:e.list_id,recurrence_rule:e.recurrence_rule||null,recurrence_end_at:e.recurrence_end_at||null,tag_ids:(e.tags??[]).map(e=>e.id)}),A(`已保存`)}catch(e){j(e)}}async function _e(e){if(window.confirm(`把“${e.title}”移到回收站?`))try{await k(`/tasks/${e.id}`,{method:`DELETE`}),c.value=c.value.filter(t=>t.id!==e.id&&t.parent_id!==e.id),f.value=null,y.value=!1,A(`已移到回收站`)}catch(e){j(e)}}async function ve(e){try{await k(`/tasks/${e.id}/restore`,{method:`POST`}),l.value=l.value.filter(t=>t.id!==e.id),A(`任务已恢复`)}catch(e){j(e)}}async function ye(e){if(window.confirm(`永久删除“${e.title}”?这个操作不能撤销。`))try{await k(`/trash/${e.id}`,{method:`DELETE`}),l.value=l.value.filter(t=>t.id!==e.id),A(`已永久删除`)}catch(e){j(e)}}async function be(){if(!f.value)return;let e=window.prompt(`子任务名称`)?.trim();if(e)try{let t=await k(`/tasks`,{method:`POST`,body:JSON.stringify({title:e,list_id:f.value.list_id,parent_id:f.value.id})});c.value.push(t),A(`子任务已添加`)}catch(e){j(e)}}function I(e){f.value={...e,tags:e.tags?[...e.tags]:[]},b.value=!1,y.value=!0}async function xe(){let e=window.prompt(`文件夹名称`)?.trim();if(e)try{a.value.push(await k(`/folders`,{method:`POST`,body:JSON.stringify({name:e})})),A(`文件夹已创建`)}catch(e){j(e)}}async function Se(e=null){let t=window.prompt(`清单名称`)?.trim();if(t)try{let n=await k(`/lists`,{method:`POST`,body:JSON.stringify({name:t,folder_id:e})});o.value.push(n),await N(`tasks`,n.id),A(`清单已创建`)}catch(e){j(e)}}async function L(e,t){let n=window.prompt(`新名称`,t.name)?.trim();if(n&&n!==t.name)try{let r=await k(`/${e}/${t.id}`,{method:`PATCH`,body:JSON.stringify({name:n})});Object.assign(t,r),A(`已重命名`)}catch(e){j(e)}}async function Ce(e,t){if(window.confirm(`删除“${t.name}”?`))try{await k(`/${e}/${t.id}`,{method:`DELETE`}),await de(),A(`已删除`)}catch(e){j(e)}}async function we(){let e=window.prompt(`标签名称`)?.trim();if(!e)return;let t=window.prompt(`标签颜色`,`#F15A29`)||`#F15A29`;try{s.value.push(await k(`/tags`,{method:`POST`,body:JSON.stringify({name:e,color:t})})),A(`标签已创建`)}catch(e){j(e)}}function Te(e){return!!f.value?.tags?.some(t=>t.id===e.id)}function Ee(e){f.value&&(f.value.tags=Te(e)?(f.value.tags??[]).filter(t=>t.id!==e.id):[...f.value.tags??[],e])}function De(e){let t=new Set(T.value);t.has(e)?t.delete(e):t.add(e),T.value=t}function Oe(e){return e?new Intl.DateTimeFormat(`zh-CN`,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(new Date(e)):``}function ke(){un(()=>document.querySelector(`.quick-input`)?.focus())}function Ae(){S.value<=1||_.value||(--S.value,d.value===`trash`?pe():Rs(d.value)&&ue())}function je(){S.value>=w.value||_.value||(S.value+=1,d.value===`trash`?pe():Rs(d.value)&&ue())}return ur(ie),(e,l)=>t.value===null?(q(),J(`div`,hc,[...l[33]||=[Y(`span`,{class:`loader`},null,-1),Z(`正在打开 dodo…`,-1)]])):n.value?(q(),J(`div`,yc,[v.value||y.value?(q(),J(`div`,{key:0,class:`scrim`,onClick:l[2]||=e=>{v.value=!1,y.value=!1}})):Q(``,!0),Y(`aside`,{class:M([`sidebar`,{open:v.value}])},[Y(`div`,bc,[l[37]||=Y(`div`,{class:`brand small`},[Z(`do`),Y(`span`,null,`do`)],-1),Y(`button`,{class:`icon mobile-only`,"aria-label":`关闭菜单`,onClick:l[3]||=e=>v.value=!1},[X(H(Os))])]),Y(`nav`,xc,[Y(`button`,{class:M({active:d.value===`tasks`&&o.value.find(e=>e.id===u.value)?.is_inbox}),onClick:l[4]||=e=>N(`tasks`,o.value.find(e=>e.is_inbox)?.id)},[X(H(hs)),l[38]||=Z(`收集箱`,-1)],2),Y(`button`,{class:M({active:d.value===`today`}),onClick:l[5]||=e=>N(`today`)},[X(H(_s)),l[39]||=Z(`今天`,-1)],2),Y(`button`,{class:M({active:d.value===`upcoming`}),onClick:l[6]||=e=>N(`upcoming`)},[X(H(os)),l[40]||=Z(`最近 7 天`,-1)],2),Y(`button`,{class:M({active:d.value===`habits`}),onClick:l[7]||=e=>N(`habits`)},[X(H(Cs)),l[41]||=Z(`习惯`,-1)],2),Y(`button`,{class:M({active:d.value===`trash`}),onClick:l[8]||=e=>N(`trash`)},[X(H(Es)),l[42]||=Z(`回收站`,-1)],2)]),Y(`div`,Sc,[l[43]||=Y(`span`,null,`我的清单`,-1),Y(`span`,null,[Y(`button`,{class:`mini-icon`,"aria-label":`新建文件夹`,onClick:xe},[X(H(ps))]),Y(`button`,{class:`mini-icon`,"aria-label":`新建清单`,onClick:l[9]||=e=>Se(null)},[X(H(xs))])])]),Y(`div`,Cc,[(q(!0),J(K,null,br(a.value,e=>(q(),J(`div`,{key:e.id,class:`folder-block`},[Y(`div`,wc,[Y(`button`,{onClick:t=>De(e.id)},[T.value.has(e.id)?(q(),Hi(H(cs),{key:0})):(q(),Hi(H(ls),{key:1})),X(H(ps)),Z(F(e.name),1)],8,Tc),Y(`span`,Ec,[Y(`button`,{"aria-label":`重命名文件夹`,onClick:t=>L(`folders`,e)},[X(H(bs))],8,Dc),Y(`button`,{"aria-label":`删除文件夹`,onClick:t=>Ce(`folders`,e)},[X(H(Es))],8,Oc),Y(`button`,{"aria-label":`在文件夹中新建清单`,onClick:t=>Se(e.id)},[X(H(xs))],8,kc)])]),(q(!0),J(K,null,br(o.value.filter(t=>t.folder_id===e.id&&!t.is_inbox),t=>W((q(),J(`button`,{key:t.id,class:M([`list-row`,{active:d.value===`tasks`&&u.value===t.id}]),onClick:e=>N(`tasks`,t.id)},[l[44]||=Y(`i`,null,null,-1),Y(`span`,null,F(t.name),1),Y(`span`,jc,[Y(`button`,{"aria-label":`重命名清单`,onClick:Ko(e=>L(`lists`,t),[`stop`])},[X(H(bs))],8,Mc),Y(`button`,{"aria-label":`删除清单`,onClick:Ko(e=>Ce(`lists`,t),[`stop`])},[X(H(Es))],8,Nc)])],10,Ac)),[[eo,T.value.has(e.id)]])),128))]))),128)),(q(!0),J(K,null,br(o.value.filter(e=>!e.folder_id&&!e.is_inbox),e=>(q(),J(`button`,{key:e.id,class:M([`list-row`,{active:d.value===`tasks`&&u.value===e.id}]),onClick:t=>N(`tasks`,e.id)},[l[45]||=Y(`i`,null,null,-1),Y(`span`,null,F(e.name),1),Y(`span`,Fc,[Y(`button`,{"aria-label":`重命名清单`,onClick:Ko(t=>L(`lists`,e),[`stop`])},[X(H(bs))],8,Ic),Y(`button`,{"aria-label":`删除清单`,onClick:Ko(t=>Ce(`lists`,e),[`stop`])},[X(H(Es))],8,Lc)])],10,Pc))),128))]),Y(`button`,{class:M([`settings`,{active:d.value===`settings`}]),onClick:l[10]||=e=>N(`settings`)},[X(H(Ts)),l[46]||=Z(`设置`,-1)],2)],2),Y(`main`,null,[Y(`header`,Rc,[Y(`button`,{class:`icon mobile-only`,"aria-label":`打开菜单`,onClick:l[11]||=e=>v.value=!0},[X(H(ys))]),Y(`div`,null,[l[47]||=Y(`p`,null,`今天也慢慢来`,-1),Y(`h1`,null,F(ee.value),1)]),Y(`label`,zc,[X(H(ws)),W(Y(`input`,{"onUpdate:modelValue":l[12]||=e=>m.value=e,placeholder:`搜索任务…`,"aria-label":`搜索任务`},null,512),[[Io,m.value]]),l[48]||=Y(`kbd`,null,`⌘ K`,-1)])]),[`habits`,`settings`].includes(d.value)?(q(),Hi(mc,{key:d.value,view:d.value,onChanged:de,onNotice:A},null,8,[`view`])):(q(),J(K,{key:1},[d.value===`trash`?Q(``,!0):(q(),J(`form`,{key:0,class:`quick`,onSubmit:Ko(me,[`prevent`])},[X(H(us)),W(Y(`input`,{"onUpdate:modelValue":l[13]||=e=>p.value=e,class:`quick-input`,placeholder:`添加任务,按回车保存`},null,512),[[Io,p.value]]),l[49]||=Y(`button`,null,`添加`,-1)],32)),Y(`div`,Bc,[d.value===`trash`?Q(``,!0):(q(),J(`label`,Vc,[W(Y(`input`,{"onUpdate:modelValue":l[14]||=e=>x.value=e,type:`checkbox`},null,512),[[Lo,x.value]]),l[50]||=Z(` 显示已完成`,-1)])),Y(`span`,null,`第 `+F(S.value)+` / `+F(w.value)+` 页 · 共 `+F(C.value)+` 项`,1),m.value?(q(),J(`button`,{key:1,class:`link`,onClick:l[15]||=e=>m.value=``},`清除搜索`)):Q(``,!0)]),d.value!==`trash`&&w.value>1?(q(),J(`div`,Hc,[Y(`button`,{class:`secondary`,disabled:S.value<=1||_.value,onClick:Ae},`上一页`,8,Uc),Y(`span`,null,F(S.value)+` / `+F(w.value),1),Y(`button`,{class:`secondary`,disabled:S.value>=w.value||_.value,onClick:je},`下一页`,8,Wc)])):Q(``,!0),Y(`section`,{class:M([`task-list`,{loading:_.value}])},[(q(!0),J(K,null,br(ne.value,e=>(q(),J(K,{key:e.task.id},[Y(`article`,{class:M([`task-row`,{done:e.task.completed,selected:f.value?.id===e.task.id}])},[d.value===`trash`?Q(``,!0):(q(),J(`button`,{key:0,class:M([`check`,`p${e.task.priority}`]),"aria-label":`切换完成状态`,onClick:Ko(t=>ge(e.task),[`stop`])},[e.task.completed?(q(),Hi(H(ss),{key:0})):Q(``,!0)],10,Gc)),Y(`button`,{class:`task-main`,onClick:t=>d.value===`trash`?void 0:I(e.task)},[Y(`strong`,null,F(e.task.title),1),Y(`span`,qc,[e.task.due_at?(q(),J(`span`,Jc,[X(H(os)),Z(F(Oe(e.task.due_at)),1)])):Q(``,!0),e.subtasks.length?(q(),J(`span`,Yc,[X(H(gs)),Z(F(e.subtasks.filter(e=>e.completed).length)+`/`+F(e.subtasks.length),1)])):Q(``,!0),(q(!0),J(K,null,br(e.task.tags,e=>(q(),J(`i`,{key:e.id,class:`tag-dot`,style:ce({background:e.color}),title:e.name},null,12,Xc))),128))])],8,Kc),e.task.priority?(q(),J(`span`,{key:1,class:M([`priority`,`p${e.task.priority}`])},F([``,`低`,`中`,`高`][e.task.priority]),3)):Q(``,!0),d.value===`trash`?(q(),J(`button`,{key:2,class:`restore`,onClick:t=>ve(e.task)},[X(H(as)),l[51]||=Z(`恢复`,-1)],8,Zc)):(q(),J(`button`,{key:3,class:`icon ghost`,"aria-label":`删除任务`,onClick:Ko(t=>_e(e.task),[`stop`])},[X(H(Es))],8,Qc)),d.value===`trash`?(q(),J(`button`,{key:4,class:`icon danger ghost`,"aria-label":`永久删除`,onClick:Ko(t=>ye(e.task),[`stop`])},[X(H(Os))],8,$c)):Q(``,!0)],2),(q(!0),J(K,null,br(e.subtasks,e=>(q(),J(`article`,{key:e.id,class:M([`task-row subtask`,{done:e.completed}])},[X(H(ms)),Y(`button`,{class:`check`,onClick:t=>ge(e)},[e.completed?(q(),Hi(H(ss),{key:0})):Q(``,!0)],8,el),Y(`button`,{class:`task-main`,onClick:t=>I(e)},[Y(`strong`,null,F(e.title),1)],8,tl)],2))),128))],64))),128)),!te.value.length&&!_.value?(q(),J(`div`,nl,[X(H(_s)),Y(`b`,null,F(m.value?`没有匹配的任务`:`这里还很安静`),1),Y(`span`,null,F(m.value?`换个关键词试试`:`写下第一件想完成的小事吧`),1)])):Q(``,!0)],2)],64))]),Y(`aside`,{class:M([`detail`,{open:y.value}])},[Y(`div`,rl,[l[52]||=Y(`span`,null,`任务详情`,-1),Y(`button`,{class:`icon mobile-only`,"aria-label":`关闭详情`,onClick:l[16]||=e=>y.value=!1},[X(H(Os))])]),f.value?(q(),J(`div`,il,[Y(`div`,al,[Y(`button`,{class:M([`check large`,`p${f.value.priority}`]),onClick:l[17]||=e=>ge(f.value)},[f.value.completed?(q(),Hi(H(ss),{key:0})):Q(``,!0)],2),W(Y(`textarea`,{"onUpdate:modelValue":l[18]||=e=>f.value.title=e,rows:`2`,"aria-label":`任务标题`,onBlur:P},null,544),[[Io,f.value.title]])]),Y(`label`,null,[l[53]||=Z(`清单`,-1),W(Y(`select`,{"onUpdate:modelValue":l[19]||=e=>f.value.list_id=e,onChange:P},[(q(!0),J(K,null,br(o.value,e=>(q(),J(`option`,{key:e.id,value:e.id},F(e.name),9,ol))),128))],544),[[zo,f.value.list_id]])]),Y(`label`,null,[l[54]||=Z(`截止时间`,-1),Y(`input`,{value:H(Ps)(f.value.due_at),type:`datetime-local`,onChange:l[20]||=e=>{f.value.due_at=e.target.value,P()}},null,40,sl)]),Y(`label`,null,[l[56]||=Z(`优先级`,-1),W(Y(`select`,{"onUpdate:modelValue":l[21]||=e=>f.value.priority=e,onChange:P},[...l[55]||=[Y(`option`,{value:0},`无`,-1),Y(`option`,{value:1},`低`,-1),Y(`option`,{value:2},`中`,-1),Y(`option`,{value:3},`高`,-1)]],544),[[zo,f.value.priority,void 0,{number:!0}]])]),Y(`label`,null,[l[58]||=Z(`重复`,-1),W(Y(`select`,{"onUpdate:modelValue":l[22]||=e=>f.value.recurrence_rule=e,onChange:P},[...l[57]||=[Y(`option`,{value:``},`不重复`,-1),Y(`option`,{value:`FREQ=DAILY`},`每天`,-1),Y(`option`,{value:`FREQ=WEEKLY`},`每周`,-1),Y(`option`,{value:`FREQ=MONTHLY`},`每月`,-1)]],544),[[zo,f.value.recurrence_rule]])]),f.value.recurrence_rule?(q(),J(`label`,cl,[l[59]||=Z(`重复截止`,-1),W(Y(`input`,{"onUpdate:modelValue":l[23]||=e=>f.value.recurrence_end_at=e,type:`date`,onChange:P},null,544),[[Io,f.value.recurrence_end_at]])])):Q(``,!0),Y(`div`,ll,[Y(`div`,ul,[l[61]||=Y(`span`,null,`标签`,-1),Y(`button`,{class:`link`,onClick:we},[X(H(xs)),l[60]||=Z(`新建`,-1)])]),Y(`div`,dl,[(q(!0),J(K,null,br(s.value,e=>(q(),J(`button`,{key:e.id,class:M({chosen:Te(e)}),onClick:t=>{Ee(e),P()}},[Y(`i`,{style:ce({background:e.color})},null,4),Z(F(e.name),1)],10,fl))),128)),s.value.length?Q(``,!0):(q(),J(`span`,pl,`还没有标签`))])]),Y(`div`,ml,[Y(`div`,hl,[l[62]||=Y(`span`,null,`备注`,-1),Y(`span`,null,[Y(`button`,{class:M({active:!b.value}),onClick:l[24]||=e=>b.value=!1},`编辑`,2),Y(`button`,{class:M({active:b.value}),onClick:l[25]||=e=>b.value=!0},`预览`,2)])]),b.value?(q(),J(`div`,{key:0,class:`markdown-preview`,innerHTML:H(js)(f.value.description)},null,8,gl)):W((q(),J(`textarea`,{key:1,"onUpdate:modelValue":l[26]||=e=>f.value.description=e,rows:`9`,placeholder:`支持 Markdown…`,onBlur:P},null,544)),[[Io,f.value.description]])]),Y(`div`,_l,[Y(`div`,vl,[l[64]||=Y(`span`,null,`子任务`,-1),Y(`button`,{class:`link`,onClick:be},[X(H(xs)),l[63]||=Z(`添加`,-1)])]),(q(!0),J(K,null,br(c.value.filter(e=>e.parent_id===f.value?.id),e=>(q(),J(`button`,{key:e.id,class:`subtask-detail`,onClick:t=>ge(e)},[Y(`span`,bl,[e.completed?(q(),Hi(H(ss),{key:0})):Q(``,!0)]),Y(`span`,{class:M({strike:e.completed})},F(e.title),3)],8,yl))),128)),c.value.some(e=>e.parent_id===f.value?.id)?Q(``,!0):(q(),J(`span`,xl,`把这件事拆成更小的步骤`))]),Y(`div`,Sl,[Y(`button`,{class:`secondary`,onClick:P},`保存更改`),Y(`button`,{class:`danger-text`,onClick:l[27]||=e=>_e(f.value)},[X(H(Es)),l[65]||=Z(`移到回收站`,-1)])])])):(q(),J(`div`,Cl,[X(H(gs)),l[66]||=Y(`b`,null,`选中一个任务`,-1),l[67]||=Y(`p`,null,`日期、优先级、标签、子任务和 Markdown 备注会出现在这里。`,-1)]))],2),Y(`nav`,wl,[Y(`button`,{class:M({active:d.value===`today`}),onClick:l[28]||=e=>N(`today`)},[X(H(_s)),l[68]||=Y(`span`,null,`今天`,-1)],2),Y(`button`,{class:M({active:d.value===`tasks`}),onClick:l[29]||=e=>N(`tasks`,u.value)},[X(H(hs)),l[69]||=Y(`span`,null,`任务`,-1)],2),Y(`button`,{class:M({active:d.value===`habits`}),onClick:l[30]||=e=>N(`habits`)},[X(H(Cs)),l[70]||=Y(`span`,null,`习惯`,-1)],2),Y(`button`,{class:M({active:d.value===`settings`}),onClick:l[31]||=e=>N(`settings`)},[X(H(Ts)),l[71]||=Y(`span`,null,`设置`,-1)],2)]),[`tasks`,`today`,`upcoming`].includes(d.value)?(q(),J(`button`,{key:1,class:`fab`,"aria-label":`添加任务`,onClick:ke},[X(H(us))])):Q(``,!0),X(Ia,{name:`toast`},{default:Sn(()=>[g.value?(q(),J(`div`,Tl,F(g.value),1)):Q(``,!0)]),_:1}),h.value?(q(),J(`div`,El,[Z(F(h.value),1),Y(`button`,{onClick:l[32]||=e=>h.value=``},[X(H(Os))])])):Q(``,!0)])):(q(),J(`div`,gc,[Y(`section`,_c,[l[36]||=Y(`div`,{class:`brand`},[Z(`do`),Y(`span`,null,`do`)],-1),Y(`p`,null,F(t.value?`欢迎回来,继续把生活理顺。`:`创建你的 dodo`),1),Y(`label`,null,[l[34]||=Z(`用户名`,-1),W(Y(`input`,{"onUpdate:modelValue":l[0]||=e=>r.value=e,autocomplete:`username`,placeholder:`你的用户名`},null,512),[[Io,r.value]])]),Y(`label`,null,[l[35]||=Z(`密码`,-1),W(Y(`input`,{"onUpdate:modelValue":l[1]||=e=>i.value=e,type:`password`,autocomplete:`current-password`,placeholder:`至少 12 位`,onKeyup:Jo(ae,[`enter`])},null,544),[[Io,i.value]])]),Y(`button`,{class:`primary`,onClick:ae},F(t.value?`登录`:`开始使用`),1),h.value?(q(),J(`small`,vc,F(h.value),1)):Q(``,!0)])]))}})).mount(`#app`),`serviceWorker`in navigator&&(navigator.serviceWorker.getRegistrations().then(e=>{e.forEach(e=>e.unregister())}),caches.keys().then(e=>e.forEach(e=>caches.delete(e)))); \ No newline at end of file diff --git a/backend/static/assets/index-CpBTIN38.css b/backend/static/assets/index-CpBTIN38.css deleted file mode 100644 index 3ba3567..0000000 --- a/backend/static/assets/index-CpBTIN38.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ -@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components,utilities;:root{color:#2d2924;--accent:#f15a29;--accent-soft:#fbe6dc;--paper:#fffdf8;--sidebar:#f6f0e4;--line:#e7ddcc;--muted:#8b8275;--danger:#bd3827;--shadow:0 12px 36px #4e3a221a;background:#f8f3e8;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Noto Sans CJK SC,sans-serif}*{box-sizing:border-box}body{background:#f8f3e8;margin:0}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}svg{stroke-width:1.8px;width:18px;height:18px}.center,.auth-shell{place-items:center;min-height:100vh;display:grid}.center{color:var(--muted);align-content:center;gap:12px}.loader{border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-shell{background:radial-gradient(circle at 20% 10%,#ffe3d5 0,#0000 28%),linear-gradient(135deg,#f8f3e8,#fffaf0)}.auth-card{background:var(--paper);border:1px solid var(--line);width:min(390px,90vw);box-shadow:var(--shadow);border-radius:14px;gap:16px;padding:38px;display:grid}.brand{letter-spacing:-3px;font-size:40px;font-weight:850}.brand span{color:var(--accent)}.brand.small{font-size:29px}.auth-card p{color:var(--muted);margin:0 0 8px}.auth-card label,.detail-form>label{color:#756d61;gap:7px;font-size:12px;font-weight:650;display:grid}.auth-card input,.detail-form input,.detail-form select{border:1px solid var(--line);background:#fff;border-radius:9px;outline:none;width:100%;padding:11px}.auth-card input:focus,.detail-form input:focus,.detail-form select:focus,.detail-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #f15a291a}.primary{background:var(--accent);color:#fff;border:0;border-radius:9px;padding:12px;font-weight:700;box-shadow:0 5px 12px #f15a2933}.auth-card small{color:var(--danger)}.shell{background:var(--paper);grid-template-columns:238px minmax(430px,1fr) 350px;height:100vh;display:grid;overflow:hidden}.sidebar{border-right:1px solid var(--line);background:var(--sidebar);flex-direction:column;min-height:0;display:flex}.brand-row{justify-content:space-between;align-items:center;height:76px;padding:0 20px;display:flex}.primary-nav{gap:3px;padding:4px 12px 12px;display:grid}.primary-nav button,.settings{color:#665e52;text-align:left;background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;padding:10px 12px;display:flex}.primary-nav button:hover,.list-row:hover,.folder-row>button:hover{background:#ffffff85}.primary-nav button.active,.list-row.active{background:var(--accent-soft);color:#b7421e;font-weight:700}.section-title{color:#958b7d;text-transform:uppercase;letter-spacing:.08em;justify-content:space-between;align-items:center;padding:17px 17px 7px 22px;font-size:11px;font-weight:750;display:flex}.section-title>span:last-child{display:flex}.mini-icon,.row-actions button{color:#8e8477;background:0 0;border:0;padding:4px}.mini-icon svg,.row-actions svg{width:14px;height:14px}.folders{padding:0 10px;overflow:auto}.folder-row{align-items:center;display:flex}.folder-row>button{color:#6d6559;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:7px;min-width:0;padding:8px;display:flex}.folder-row>button svg{width:14px}.row-actions{opacity:0;transition:opacity .15s;display:flex}.folder-row:hover .row-actions,.list-row:hover .row-actions{opacity:1}.list-row{text-align:left;color:#665f55;background:0 0;border:0;border-radius:8px;align-items:center;gap:9px;width:100%;padding:8px 7px 8px 31px;display:flex}.list-row>span:nth-child(2){white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.list-row i{background:#d89b62;border-radius:3px;width:8px;height:8px}.settings{margin:auto 12px 14px}.mobile-only,.bottom,.fab{display:none}main{background:linear-gradient(#fffdf8eb,#fffdf8eb),repeating-linear-gradient(0deg,#0000,#0000 31px,#eee3d2 32px);min-width:0;padding:27px 34px 50px;overflow:auto}.topbar{align-items:center;gap:14px;display:flex}.topbar>div{flex:1}.topbar p{color:var(--muted);margin:0;font-size:12px}.topbar h1{letter-spacing:-.03em;margin:3px 0 21px;font-size:27px}.search{border:1px solid var(--line);width:min(260px,36%);color:var(--muted);background:#faf7f0;border-radius:9px;align-items:center;gap:8px;margin-bottom:18px;padding:8px 10px;display:flex}.search input{background:0 0;border:0;outline:0;width:100%;min-width:0}.search kbd{white-space:nowrap;border:1px solid var(--line);border-radius:4px;padding:2px 4px;font-size:10px}.quick{border:1px solid var(--line);background:#fff;border-radius:11px;align-items:center;gap:10px;padding:7px 7px 7px 13px;transition:all .18s;display:flex;box-shadow:0 2px 10px #513d260d}.quick:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #f15a2917}.quick>svg{color:var(--accent)}.quick input{background:0 0;border:0;outline:0;flex:1;min-width:0}.quick button{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:8px 15px;font-weight:650}.list-toolbar{height:42px;color:var(--muted);align-items:center;gap:14px;font-size:12px;display:flex}.list-toolbar label{margin-right:auto}.link{color:var(--accent);background:0 0;border:0;align-items:center;gap:3px;padding:3px;display:inline-flex}.link svg{width:14px}.batch-bar{z-index:5;background:#fff7f2;border:1px solid #f3c2ae;border-radius:10px;align-items:center;gap:7px;margin-bottom:8px;padding:8px 10px;display:flex;position:sticky;top:-12px;box-shadow:0 8px 18px #603e2814}.batch-bar b{margin-right:auto;font-size:13px}.batch-bar>button:not(.icon){background:#fff;border:0;border-radius:7px;align-items:center;gap:4px;padding:6px 9px;display:flex}.batch-bar svg{width:14px}.batch-bar .danger{color:var(--danger)}.task-list{transition:opacity .2s}.task-list.loading{opacity:.45}.task-row{border-bottom:1px solid var(--line);align-items:center;gap:10px;min-height:53px;padding:4px 8px;transition:background .15s,transform .15s;display:flex}.task-row:hover,.task-row.selected{background:#faf0e5bf}.task-row:hover{transform:translate(2px)}.select-box,.check{background:#fff;border:1.6px solid #c6baa8;border-radius:5px;flex:0 0 19px;place-items:center;width:19px;height:19px;padding:0;display:grid}.select-box{opacity:.2;border-radius:3px;flex-basis:16px;width:16px;height:16px}.task-row:hover .select-box,.select-box.checked{opacity:1}.select-box.checked{color:#fff;background:#796f63}.check svg,.select-box svg{width:13px}.check.p1{border-color:#4b93d1}.check.p2{border-color:#d79b25}.check.p3{border-color:#dc4b30}.done .check{color:#fff;background:#afa595}.task-main{text-align:left;background:0 0;border:0;flex:1;min-width:0;padding:8px 0}.task-main strong{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:590;display:block;overflow:hidden}.done .task-main strong{color:#9b9388;text-decoration:line-through}.meta{color:#9b9286;align-items:center;gap:9px;margin-top:3px;font-size:11px;display:flex}.meta span{align-items:center;gap:3px;display:flex}.meta svg{width:12px}.tag-dot{border-radius:50%;width:7px;height:7px}.priority{border-radius:5px;padding:3px 6px;font-size:10px;font-weight:750}.priority.p1{color:#3f80ba;background:#e5f2fc}.priority.p2{color:#a56b05;background:#fff1cb}.priority.p3{color:#bd3827;background:#fde2dc}.icon,.ghost{background:0 0;border:0;border-radius:6px;place-items:center;padding:5px;display:grid}.ghost{opacity:0;color:#9d9387}.task-row:hover .ghost{opacity:1}.ghost:hover{color:var(--danger);background:#fce7e2}.restore{border:1px solid var(--line);background:#fff;border-radius:7px;align-items:center;gap:5px;padding:6px 8px;font-size:12px;display:flex}.restore svg{width:14px}.subtask{color:#6d655b;min-height:42px;padding-left:53px}.subtask>svg{color:#bbb0a2;width:13px}.empty{color:#aaa094;text-align:center;align-content:center;place-items:center;gap:8px;min-height:300px;display:grid}.empty>svg{color:#d8cabb;width:38px;height:38px}.empty b{color:#6f675c}.empty span{font-size:13px}.detail{border-left:1px solid var(--line);background:#faf7f0;min-width:0;overflow:auto}.detail-head{border-bottom:1px solid var(--line);color:#80766a;text-transform:uppercase;letter-spacing:.08em;justify-content:space-between;align-items:center;height:57px;padding:0 21px;font-size:12px;font-weight:700;display:flex}.paper{border:1px solid var(--line);text-align:center;color:#8f8578;background:#fff;border-radius:11px;align-content:center;place-items:center;min-height:180px;margin:22px;padding:28px 20px;display:grid;box-shadow:0 4px 18px #4c39220d}.paper svg{color:#ceb8a4;width:32px;height:32px;margin-bottom:12px}.paper b{color:#625b50}.paper p{font-size:13px;line-height:1.6}.detail-form{gap:15px;padding:19px;display:grid}.detail-title{align-items:flex-start;gap:10px;display:flex}.check.large{flex-basis:22px;width:22px;height:22px;margin-top:8px}.detail-title textarea{resize:none;background:0 0;border:0;outline:none;flex:1;font-size:19px;font-weight:700;line-height:1.4}.detail-form>label{grid-template-columns:80px 1fr;align-items:center}.detail-form>label input,.detail-form>label select{padding:8px}.field{gap:7px;display:grid}.field-label{color:#756d61;justify-content:space-between;align-items:center;font-size:12px;font-weight:700;display:flex}.tag-picker{flex-wrap:wrap;gap:6px;display:flex}.tag-picker button{border:1px solid var(--line);background:#fff;border-radius:999px;align-items:center;gap:5px;padding:5px 8px;font-size:11px;display:flex}.tag-picker button.chosen{background:#fff1e9;border-color:#c89077}.tag-picker i{border-radius:50%;width:8px;height:8px}.hint{color:#a49a8d;font-size:12px}.markdown .field-label>span:last-child{background:#eee7dc;border-radius:6px;padding:2px;display:flex}.markdown .field-label button{background:0 0;border:0;border-radius:5px;padding:4px 8px;font-size:11px}.markdown .field-label button.active{color:var(--accent);background:#fff}.markdown textarea{border:1px solid var(--line);resize:vertical;background:#fff;border-radius:9px;outline:none;padding:11px;font:13px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace}.markdown-preview{border:1px solid var(--line);overflow-wrap:anywhere;background:#fff;border-radius:9px;min-height:160px;padding:10px 12px;font-size:13px;line-height:1.65}.markdown-preview h1{font-size:20px}.markdown-preview h2{font-size:16px}.markdown-preview p{margin:8px 0}.markdown-preview code{background:#f2ece2;border-radius:4px;padding:2px 4px}.markdown-preview a{color:var(--accent)}.subtasks{gap:5px;display:grid}.subtask-detail{text-align:left;background:#fff;border:0;border-radius:7px;align-items:center;gap:8px;padding:8px;display:flex}.subtask-detail .check{pointer-events:none}.strike{color:var(--muted);text-decoration:line-through}.detail-actions{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding-top:10px;display:flex}.secondary{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 11px;font-weight:650}.danger-text{color:var(--danger);background:0 0;border:0;align-items:center;gap:5px;font-size:12px;display:flex}.danger-text svg{width:14px}.toast,.error-toast{z-index:50;color:#fff;box-shadow:var(--shadow);background:#322d28;border-radius:9px;padding:10px 15px;font-size:13px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.error-toast{background:var(--danger);align-items:center;gap:10px;display:flex}.error-toast button{color:#fff;background:0 0;border:0;padding:0}.toast-enter-active,.toast-leave-active{transition:all .2s}.toast-enter-from,.toast-leave-to{opacity:0;transform:translate(-50%,8px)}@media (width<=1050px){.shell{grid-template-columns:220px minmax(400px,1fr) 310px}main{padding-inline:24px}}@media (width<=800px){.shell{height:100dvh;display:block;overflow:auto}.sidebar,.detail{z-index:30;box-shadow:var(--shadow);transition:transform .22s;display:flex;position:fixed;top:0;bottom:0}.sidebar{width:min(300px,86vw);left:0;transform:translate(-105%)}.sidebar.open{transform:none}.detail{width:min(430px,94vw);right:0;transform:translate(105%)}.detail.open{transform:none}.scrim{z-index:20;background:#2d261f42;position:fixed;inset:0}.mobile-only{display:grid}main{min-height:100dvh;padding:20px 17px 112px}.topbar h1{margin-bottom:17px;font-size:24px}.search{width:auto;margin-bottom:13px;padding:8px}.search input{width:90px}.search kbd,.quick button{display:none}.select-box{opacity:.45}.row-actions{opacity:1}.bottom{z-index:15;border-top:1px solid var(--line);padding:8px 5px max(8px,env(safe-area-inset-bottom));background:#fffdf8f5;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -5px 18px #4f3b220f}.bottom button{color:#81786d;background:0 0;border:0;place-items:center;gap:2px;min-width:60px;font-size:10px;display:grid}.bottom button.active{color:var(--accent);font-weight:700}.bottom svg{width:20px}.fab{z-index:16;background:var(--accent);color:#fff;border:0;border-radius:50%;place-items:center;width:52px;height:52px;transition:transform .15s;display:grid;position:fixed;bottom:76px;right:18px;box-shadow:0 7px 20px #f15a2961}.fab:active{transform:scale(.94)}.toast,.error-toast{bottom:142px}.batch-bar{overflow:auto}.batch-bar b{white-space:nowrap}.task-row{padding-inline:2px}.subtask{padding-left:35px}.ghost{opacity:.45}}.mvp-view{gap:16px;padding-bottom:36px;display:grid}.view-intro{border-bottom:1px dashed var(--line);justify-content:space-between;align-items:end;padding-bottom:12px;display:flex}.view-intro h2{margin:2px 0 0;font-size:22px}.view-intro small,.view-intro>span{color:var(--muted);font-size:12px}.calendar-card,.habit-card,.tool-card,.empty-panel{border:1px solid var(--line);background:#fff;border-radius:12px;padding:16px;box-shadow:0 3px 14px #513d260d}.fc{--fc-button-bg-color:var(--accent);--fc-button-border-color:var(--accent);--fc-button-hover-bg-color:#cf461d;--fc-today-bg-color:#fff3eb;font-size:13px}.fc .fc-toolbar-title{font-size:18px}.fc .fc-event{border-color:var(--accent);background:var(--accent);cursor:grab}.soft-button,.primary-small,.danger-button,.file-button{border:1px solid var(--line);background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px 11px;font-size:12px;display:inline-flex}.soft-button svg,.file-button svg{width:15px}.primary-small{background:var(--accent);border-color:var(--accent);color:#fff}.danger-button{color:var(--danger);border-color:#e5b7ad}.habit-create{grid-template-columns:1fr 150px 90px auto;gap:8px;display:grid}.habit-create input,.habit-create select{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:0;padding:9px}.habit-create button{background:var(--accent);color:#fff;border:0;border-radius:8px;align-items:center;gap:5px;padding:8px 13px;display:flex}.habit-list{gap:10px;display:grid}.habit-title{justify-content:space-between;align-items:start;display:flex}.habit-title h3,.tool-card h3{margin:0 0 4px}.habit-title small{color:var(--muted)}.week-grid{grid-template-columns:repeat(7,1fr);gap:7px;margin-top:13px;display:grid}.week-grid>div{text-align:center;place-items:center;gap:5px;display:grid}.week-grid small{color:var(--muted);font-size:10px}.habit-check{border:1px solid var(--line);background:#faf7f0;border-radius:50%;width:34px;height:34px}.habit-check.done{background:var(--accent);border-color:var(--accent);color:#fff}.week-grid input{border:1px solid var(--line);text-align:center;border-radius:7px;width:100%;min-width:0;padding:7px}.empty-panel{text-align:center;color:var(--muted)}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.tool-card{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.tool-card>svg{color:var(--accent);width:25px;height:25px}.tool-card p{color:var(--muted);margin:0;font-size:13px}.tool-card.wide{grid-column:1/-1}.file-button input{display:none}.tool-card pre{background:#f8f3e8;border-radius:8px;width:100%;max-height:180px;padding:10px;font-size:10px;overflow:auto}.session-row,.audit-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;width:100%;padding:9px 0;display:flex}.session-row span{display:grid}.session-row small,.audit-row small{color:var(--muted);font-size:11px}.inline-error{color:var(--danger);background:#fff0ed;border-radius:8px;padding:9px}.settings.active{background:var(--accent-soft);color:#b7421e;font-weight:700}@media (width<=800px){.habit-create{grid-template-columns:1fr 1fr}.habit-create button{justify-content:center}.settings-grid{grid-template-columns:1fr}.tool-card.wide{grid-column:auto}.fc .fc-toolbar{align-items:flex-start}.fc .fc-toolbar-title{font-size:16px}.calendar-card{padding:8px}.week-grid{gap:3px}.habit-card{padding:12px}.habit-check{width:30px;height:30px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}} diff --git a/backend/static/assets/index-Dq8LoBCn.js b/backend/static/assets/index-Dq8LoBCn.js deleted file mode 100644 index 7bed871..0000000 --- a/backend/static/assets/index-Dq8LoBCn.js +++ /dev/null @@ -1,4 +0,0 @@ -(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function e(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var t={},n=[],r=()=>{},i=()=>!1,a=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),o=e=>e.startsWith(`onUpdate:`),s=Object.assign,c=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},l=Object.prototype.hasOwnProperty,u=(e,t)=>l.call(e,t),d=Array.isArray,f=e=>x(e)===`[object Map]`,p=e=>x(e)===`[object Set]`,m=e=>x(e)===`[object Date]`,h=e=>typeof e==`function`,g=e=>typeof e==`string`,_=e=>typeof e==`symbol`,v=e=>typeof e==`object`&&!!e,y=e=>(v(e)||h(e))&&h(e.then)&&h(e.catch),b=Object.prototype.toString,x=e=>b.call(e),S=e=>x(e).slice(8,-1),C=e=>x(e)===`[object Object]`,w=e=>g(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,ee=e(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),te=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ne=/-\w/g,T=te(e=>e.replace(ne,e=>e.slice(1).toUpperCase())),re=/\B([A-Z])/g,ie=te(e=>e.replace(re,`-$1`).toLowerCase()),E=te(e=>e.charAt(0).toUpperCase()+e.slice(1)),D=te(e=>e?`on${E(e)}`:``),O=(e,t)=>!Object.is(e,t),ae=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},se=e=>{let t=parseFloat(e);return isNaN(t)?e:t},ce=e=>{let t=g(e)?Number(e):NaN;return isNaN(t)?e:t},le,k=()=>le||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{};function ue(e){if(d(e)){let t={};for(let n=0;n{if(e){let n=e.split(fe);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function A(e){let t=``;if(g(e))t=e;else if(d(e))for(let n=0;nbe(e,t))}var Se=e=>!!(e&&e.__v_isRef===!0),j=e=>g(e)?e:e==null?``:d(e)||v(e)&&(e.toString===b||!h(e.toString))?Se(e)?j(e.value):JSON.stringify(e,Ce,2):String(e),Ce=(e,t)=>Se(t)?Ce(e,t.value):f(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[we(t,r)+` =>`]=n,e),{})}:p(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>we(e))}:_(t)?we(t):v(t)&&!d(t)&&!C(t)?String(t):t,we=(e,t=``)=>_(e)?`Symbol(${e.description??t})`:e,M,Te=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&M&&(M.active?(this.parent=M,this.index=(M.scopes||(M.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){let n=this.scopes.slice();for(e=0,t=n.length;e0&&--this._on===0){if(M===this)M=this.prevScope;else{let e=M;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t0)return;if(je){let e=je;for(je=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;Ae;){let t=Ae;for(Ae=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function Fe(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ie(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),ze(r),Be(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function Le(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Re(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Re(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ke)||(e.globalVersion=Ke,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Le(e))))return;e.flags|=2;let t=e.dep,n=N,r=Ve;N=e,Ve=!0;try{Fe(e);let n=e.fn(e._value);(t.version===0||O(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{N=n,Ve=r,Ie(e),e.flags&=-3}}function ze(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)ze(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Be(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}var Ve=!0,He=[];function Ue(){He.push(Ve),Ve=!1}function We(){let e=He.pop();Ve=e===void 0||e}function Ge(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=N;N=void 0;try{t()}finally{N=e}}}var Ke=0,qe=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},Je=class{constructor(e){this.computed=e,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(e){if(!N||!Ve||N===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==N)t=this.activeLink=new qe(N,this),N.deps?(t.prevDep=N.depsTail,N.depsTail.nextDep=t,N.depsTail=t):N.deps=N.depsTail=t,Ye(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=N.depsTail,t.nextDep=void 0,N.depsTail.nextDep=t,N.depsTail=t,N.deps===t&&(N.deps=e)}return t}trigger(e){this.version++,Ke++,this.notify(e)}notify(e){Ne();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{Pe()}}};function Ye(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)Ye(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var Xe=new WeakMap,Ze=Symbol(``),Qe=Symbol(``),$e=Symbol(``);function et(e,t,n){if(Ve&&N){let t=Xe.get(e);t||Xe.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new Je),r.map=t,r.key=n),r.track()}}function tt(e,t,n,r,i,a){let o=Xe.get(e);if(!o){Ke++;return}let s=e=>{e&&e.trigger()};if(Ne(),t===`clear`)o.forEach(s);else{let i=d(e),a=i&&w(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===$e||!_(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get($e)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(Ze)),f(e)&&s(o.get(Qe)));break;case`delete`:i||(s(o.get(Ze)),f(e)&&s(o.get(Qe)));break;case`set`:f(e)&&s(o.get(Ze))}}Pe()}function nt(e){let t=P(e);return t===e?t:(et(t,`iterate`,$e),Vt(e)?t:t.map(Wt))}function rt(e){return et(e=P(e),`iterate`,$e),e}function it(e,t){return Bt(e)?Gt(zt(e)?Wt(t):t):Wt(t)}var at={__proto__:null,[Symbol.iterator](){return ot(this,Symbol.iterator,e=>it(this,e))},concat(...e){return nt(this).concat(...e.map(e=>d(e)?nt(e):e))},entries(){return ot(this,`entries`,e=>(e[1]=it(this,e[1]),e))},every(e,t){return ct(this,`every`,e,t,void 0,arguments)},filter(e,t){return ct(this,`filter`,e,t,e=>e.map(e=>it(this,e)),arguments)},find(e,t){return ct(this,`find`,e,t,e=>it(this,e),arguments)},findIndex(e,t){return ct(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return ct(this,`findLast`,e,t,e=>it(this,e),arguments)},findLastIndex(e,t){return ct(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return ct(this,`forEach`,e,t,void 0,arguments)},includes(...e){return ut(this,`includes`,e)},indexOf(...e){return ut(this,`indexOf`,e)},join(e){return nt(this).join(e)},lastIndexOf(...e){return ut(this,`lastIndexOf`,e)},map(e,t){return ct(this,`map`,e,t,void 0,arguments)},pop(){return dt(this,`pop`)},push(...e){return dt(this,`push`,e)},reduce(e,...t){return lt(this,`reduce`,e,t)},reduceRight(e,...t){return lt(this,`reduceRight`,e,t)},shift(){return dt(this,`shift`)},some(e,t){return ct(this,`some`,e,t,void 0,arguments)},splice(...e){return dt(this,`splice`,e)},toReversed(){return nt(this).toReversed()},toSorted(e){return nt(this).toSorted(e)},toSpliced(...e){return nt(this).toSpliced(...e)},unshift(...e){return dt(this,`unshift`,e)},values(){return ot(this,`values`,e=>it(this,e))}};function ot(e,t,n){let r=rt(e),i=r[t]();return r!==e&&!Vt(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var st=Array.prototype;function ct(e,t,n,r,i,a){let o=rt(e),s=o!==e&&!Vt(e),c=o[t];if(c!==st[t]){let t=c.apply(e,a);return s?Wt(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,it(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function lt(e,t,n,r){let i=rt(e),a=i!==e&&!Vt(e),o=n,s=!1;i!==e&&(a?(s=r.length===0,o=function(t,r,i){return s&&(s=!1,t=it(e,t)),n.call(this,t,it(e,r),i,e)}):n.length>3&&(o=function(t,r,i){return n.call(this,t,r,i,e)}));let c=i[t](o,...r);return s?it(e,c):c}function ut(e,t,n){let r=P(e);et(r,`iterate`,$e);let i=r[t](...n);return(i===-1||i===!1)&&Ht(n[0])?(n[0]=P(n[0]),r[t](...n)):i}function dt(e,t,n=[]){Ue(),Ne();let r=P(e)[t].apply(e,n);return Pe(),We(),r}var ft=e(`__proto__,__v_isRef,__isVue`),pt=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(_));function mt(e){_(e)||(e=String(e));let t=P(this);return et(t,`has`,e),t.hasOwnProperty(e)}var ht=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?Nt:Mt:i?jt:At).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=d(e);if(!r){let e;if(a&&(e=at[t]))return e;if(t===`hasOwnProperty`)return mt}let o=Reflect.get(e,t,Kt(e)?e:n);if((_(t)?pt.has(t):ft(t))||(r||et(e,`get`,t),i))return o;if(Kt(o)){let e=a&&w(t)?o:o.value;return r&&v(e)?Lt(e):e}return v(o)?r?Lt(o):Ft(o):o}},gt=class extends ht{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=d(e)&&w(t);if(!this._isShallow){let e=Bt(i);if(!Vt(n)&&!Bt(n)&&(i=P(i),n=P(n)),!a&&Kt(i)&&!Kt(n))return e||(i.value=n),!0}let o=a?Number(t)e,St=e=>Reflect.getPrototypeOf(e);function Ct(e,t,n){return function(...r){let i=this.__v_raw,a=P(i),o=f(a),c=e===`entries`||e===Symbol.iterator&&o,l=e===`keys`&&o,u=i[e](...r),d=n?xt:t?Gt:Wt;return!t&&et(a,`iterate`,l?Qe:Ze),s(Object.create(u),{next(){let{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[d(e[0]),d(e[1])]:d(e),done:t}}})}}function wt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function Tt(e,t){let n={get(n){let r=this.__v_raw,i=P(r),a=P(n);e||(O(n,a)&&et(i,`get`,n),et(i,`get`,a));let{has:o}=St(i),s=t?xt:e?Gt:Wt;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&et(P(t),`iterate`,Ze),t.size},has(t){let n=this.__v_raw,r=P(n),i=P(t);return e||(O(t,i)&&et(r,`has`,t),et(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=P(a),s=t?xt:e?Gt:Wt;return!e&&et(o,`iterate`,Ze),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return s(n,e?{add:wt(`add`),set:wt(`set`),delete:wt(`delete`),clear:wt(`clear`)}:{add(e){let n=P(this),r=St(n),i=P(e),a=!t&&!Vt(e)&&!Bt(e)?i:e;return r.has.call(n,a)||O(e,a)&&r.has.call(n,e)||O(i,a)&&r.has.call(n,i)||(n.add(a),tt(n,`add`,a,a)),this},set(e,n){!t&&!Vt(n)&&!Bt(n)&&(n=P(n));let r=P(this),{has:i,get:a}=St(r),o=i.call(r,e);o||=(e=P(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?O(n,s)&&tt(r,`set`,e,n,s):tt(r,`add`,e,n),this},delete(e){let t=P(this),{has:n,get:r}=St(t),i=n.call(t,e);i||=(e=P(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&tt(t,`delete`,e,void 0,a),o},clear(){let e=P(this),t=e.size!==0,n=e.clear();return t&&tt(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=Ct(r,e,t)}),n}function Et(e,t){let n=Tt(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(u(n,r)&&r in t?n:t,r,i)}var Dt={get:Et(!1,!1)},Ot={get:Et(!1,!0)},kt={get:Et(!0,!1)},At=new WeakMap,jt=new WeakMap,Mt=new WeakMap,Nt=new WeakMap;function Pt(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function Ft(e){return Bt(e)?e:Rt(e,!1,vt,Dt,At)}function It(e){return Rt(e,!1,bt,Ot,jt)}function Lt(e){return Rt(e,!0,yt,kt,Mt)}function Rt(e,t,n,r,i){if(!v(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let a=i.get(e);if(a)return a;let o=Pt(S(e));if(o===0)return e;let s=new Proxy(e,o===2?r:n);return i.set(e,s),s}function zt(e){return Bt(e)?zt(e.__v_raw):!!(e&&e.__v_isReactive)}function Bt(e){return!!(e&&e.__v_isReadonly)}function Vt(e){return!!(e&&e.__v_isShallow)}function Ht(e){return e?!!e.__v_raw:!1}function P(e){let t=e&&e.__v_raw;return t?P(t):e}function Ut(e){return!u(e,`__v_skip`)&&Object.isExtensible(e)&&oe(e,`__v_skip`,!0),e}var Wt=e=>v(e)?Ft(e):e,Gt=e=>v(e)?Lt(e):e;function Kt(e){return e?e.__v_isRef===!0:!1}function F(e){return qt(e,!1)}function qt(e,t){return Kt(e)?e:new Jt(e,t)}var Jt=class{constructor(e,t){this.dep=new Je,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:P(e),this._value=t?e:Wt(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||Vt(e)||Bt(e);e=n?e:P(e),O(e,t)&&(this._rawValue=e,this._value=n?e:Wt(e),this.dep.trigger())}};function I(e){return Kt(e)?e.value:e}var Yt={get:(e,t,n)=>t===`__v_raw`?e:I(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return Kt(i)&&!Kt(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Xt(e){return zt(e)?e:new Proxy(e,Yt)}var Zt=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new Je(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ke-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&N!==this)return Me(this,!0),!0}get value(){let e=this.dep.track();return Re(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function Qt(e,t,n=!1){let r,i;return h(e)?r=e:(r=e.get,i=e.set),new Zt(r,i,n)}var $t={},en=new WeakMap,tn=void 0;function nn(e,t=!1,n=tn){if(n){let t=en.get(n);t||en.set(n,t=[]),t.push(e)}}function rn(e,n,i=t){let{immediate:a,deep:o,once:s,scheduler:l,augmentJob:u,call:f}=i,p=e=>o?e:Vt(e)||o===!1||o===0?an(e,1):an(e),m,g,_,v,y=!1,b=!1;if(Kt(e)?(g=()=>e.value,y=Vt(e)):zt(e)?(g=()=>p(e),y=!0):d(e)?(b=!0,y=e.some(e=>zt(e)||Vt(e)),g=()=>e.map(e=>{if(Kt(e))return e.value;if(zt(e))return p(e);if(h(e))return f?f(e,2):e()})):g=h(e)?n?f?()=>f(e,2):e:()=>{if(_){Ue();try{_()}finally{We()}}let t=tn;tn=m;try{return f?f(e,3,[v]):e(v)}finally{tn=t}}:r,n&&o){let e=g,t=o===!0?1/0:o;g=()=>an(e(),t)}let x=Ee(),S=()=>{m.stop(),x&&x.active&&c(x.effects,m)};if(s&&n){let e=n;n=(...t)=>{let n=e(...t);return S(),n}}let C=b?Array(e.length).fill($t):$t,w=e=>{if(m.flags&1&&(m.dirty||e)){if(n){let t=m.run();if(e||o||y||(b?t.some((e,t)=>O(e,C[t])):O(t,C))){_&&_();let e=tn;tn=m;try{let e=[t,C===$t?void 0:b&&C[0]===$t?[]:C,v];C=t,f?f(n,3,e):n(...e)}finally{tn=e}}}else m.run()}};return u&&u(w),m=new Oe(g),m.scheduler=l?()=>l(w,!1):w,v=e=>nn(e,!1,m),_=m.onStop=()=>{let e=en.get(m);if(e){if(f)f(e,4);else for(let t of e)t();en.delete(m)}},n?a?w(!0):C=m.run():l?l(w.bind(null,!0),!0):m.run(),S.pause=m.pause.bind(m),S.resume=m.resume.bind(m),S.stop=S,S}function an(e,t=1/0,n){if(t<=0||!v(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Kt(e))an(e.value,t,n);else if(d(e))for(let r=0;r{an(e,t,n)});else if(C(e)){for(let r in e)an(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&an(e[r],t,n)}return e}function on(e,t,n,r){try{return r?e(...r):e()}catch(e){cn(e,t,n)}}function sn(e,t,n,r){if(h(e)){let i=on(e,t,n,r);return i&&y(i)&&i.catch(e=>{cn(e,t,n)}),i}if(d(e)){let i=[];for(let a=0;a>>1,i=un[r],a=wn(i);a=wn(n)?un.push(e):un.splice(vn(t),0,e),e.flags|=1,bn()}}function bn(){gn||=hn.then(Tn)}function xn(e){if(!d(e))pn&&e.id===-1?pn.splice(mn+1,0,e):e.flags&1||(fn.push(e),e.flags|=1);else for(let t=0;twn(e)-wn(t));if(fn.length=0,pn){for(let t=0;te.id==null?e.flags&2?-1:1/0:e.id;function Tn(e){try{for(dn=0;dn{r._d&&sa(-1);let i=On(t),a=ra.length,o;try{o=e(...n)}finally{for(let e=ra.length;e>a;e--)aa();On(i),r._d&&sa(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function An(e,n){if(En===null)return e;let r=za(En),i=e.dirs||=[];for(let e=0;e1)return n&&h(t)?t.call(r&&r.proxy):t}}var Pn=Symbol.for(`v-scx`),Fn=()=>Nn(Pn);function In(e,t,n){return Ln(e,t,n)}function Ln(e,n,i=t){let{immediate:a,deep:o,flush:c,once:l}=i,u=s({},i),d=n&&a||!n&&c!==`post`,f;if(Ma){if(c===`sync`){let e=Fn();f=e.__watcherHandles||=[]}else if(!d){let e=()=>{};return e.stop=r,e.resume=r,e.pause=r,e}}let p=Ta;u.call=(e,t,n)=>sn(e,p,t,n);let m=!1;c===`post`?u.scheduler=e=>{Vi(e,p&&p.suspense)}:c!==`sync`&&(m=!0,u.scheduler=(e,t)=>{t?e():yn(e)}),u.augmentJob=e=>{n&&(e.flags|=4),m&&(e.flags|=2,p&&(e.id=p.uid,e.i=p))};let h=rn(e,n,u);return Ma&&(f?f.push(h):d&&h()),h}function Rn(e,t,n){let r=this.proxy,i=g(e)?e.includes(`.`)?zn(r,e):()=>r[e]:e.bind(r,r),a;h(t)?a=t:(a=t.handler,n=t);let o=ka(this),s=Ln(i,a.bind(r),n);return o(),s}function zn(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;ee.__isTeleport,Un=e=>e&&(e.disabled||e.disabled===``),Wn=e=>e&&(e.defer||e.defer===``),Gn=e=>typeof SVGElement<`u`&&e instanceof SVGElement,Kn=e=>typeof MathMLElement==`function`&&e instanceof MathMLElement,qn=(e,t)=>{let n=e&&e.to;return g(n)?t?t(n):null:n},Jn={name:`Teleport`,__isTeleport:!0,process(e,t,n,r,i,a,o,s,c,l){let{mc:u,pc:d,pbc:f,o:{insert:p,querySelector:m,createText:h,createComment:g,parentNode:_}}=l,v=Un(t.props),{dynamicChildren:y}=t,b=(e,t,n)=>{e.shapeFlag&16&&u(e.children,t,n,i,a,o,s,c)},x=(e=t)=>{let n=Un(e.props),r=e.target=qn(e.props,m),a=$n(r,e,h,p);r&&(o!==`svg`&&Gn(r)?o=`svg`:o!==`mathml`&&Kn(r)&&(o=`mathml`),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(r),n||(b(e,r,a),Qn(e,!1)))},S=e=>{let t=()=>{if(Bn.get(e)===t){if(Bn.delete(e),Un(e.props)){let t=_(e.el)||n;b(e,t,e.anchor),Qn(e,!0)}x(e)}};Bn.set(e,t),Vi(t,a)};if(e==null){let e=t.el=h(``),i=t.anchor=h(``);if(p(e,n,r),p(i,n,r),Wn(t.props)||a&&a.pendingBranch){S(t);return}v&&(b(t,n,i),Qn(t,!0)),x()}else{t.el=e.el;let r=t.anchor=e.anchor,u=Bn.get(e);if(u){u.flags|=8,Bn.delete(e),S(t);return}t.targetStart=e.targetStart;let p=t.target=e.target,h=t.targetAnchor=e.targetAnchor,g=Un(e.props),_=g?n:p,b=g?r:h;if(o===`svg`||Gn(p)?o=`svg`:(o===`mathml`||Kn(p))&&(o=`mathml`),y?(f(e.dynamicChildren,y,_,i,a,o,s),qi(e,t,!0)):c||d(e,t,_,b,i,a,o,s,!1),v)g?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Yn(t,n,r,l,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=qn(t.props,m);e&&(t.target=e,Yn(t,e,null,l,0))}else g&&Yn(t,p,h,l,1);Qn(t,v)}},remove(e,t,n,{um:r,o:{remove:i}},a){let{shapeFlag:o,children:s,anchor:c,targetStart:l,targetAnchor:u,target:d,props:f}=e,p=Un(f),m=a||!p,h=Bn.get(e);if(h&&(h.flags|=8,Bn.delete(e)),d&&(i(l),i(u)),a&&i(c),!h&&(p||d)&&o&16)for(let e=0;e{e.isMounted=!0}),Nr(()=>{e.isUnmounting=!0}),e}var rr=[Function,Array],ir={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:rr,onEnter:rr,onAfterEnter:rr,onEnterCancelled:rr,onBeforeLeave:rr,onLeave:rr,onAfterLeave:rr,onLeaveCancelled:rr,onBeforeAppear:rr,onAppear:rr,onAfterAppear:rr,onAppearCancelled:rr},ar=e=>{let t=e.subTree;return t.component?ar(t.component):t},or={name:`BaseTransition`,props:ir,setup(e,{slots:t}){let n=Ea(),r=nr();return()=>{let i=t.default&&mr(t.default(),!0),a=i&&i.length?sr(i):n.subTree?U():void 0;if(!a)return;let o=P(e),{mode:s}=o;if(r.isLeaving)return dr(a);let c=fr(a);if(!c)return dr(a);let l=ur(c,o,r,n,e=>l=e);c.type!==ta&&pr(c,l);let u=n.subTree&&fr(n.subTree);if(u&&u.type!==ta&&!da(u,c)&&ar(n).type!==ta){let e=ur(u,o,r,n);if(pr(u,e),s===`out-in`&&c.type!==ta)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete e.afterLeave,u=void 0},dr(a);s===`in-out`&&c.type!==ta?e.delayLeave=(e,t,n)=>{let i=lr(r,u);i[String(u.key)]=u,e[er]=()=>{t(),e[er]=void 0,delete l.delayedLeave,u=void 0},l.delayedLeave=()=>{n(),delete l.delayedLeave,u=void 0}}:u=void 0}else u&&=void 0;return a}}};function sr(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==ta){t=n;break}}return t}var cr=or;function lr(e,t){let{leavingVNodes:n}=e,r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function ur(e,t,n,r,i){let{appear:a,mode:o,persisted:s=!1,onBeforeEnter:c,onEnter:l,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:p,onLeave:m,onAfterLeave:h,onLeaveCancelled:g,onBeforeAppear:_,onAppear:v,onAfterAppear:y,onAppearCancelled:b}=t,x=String(e.key),S=lr(n,e),C=(e,t)=>{e&&sn(e,r,9,t)},w=(e,t)=>{let n=t[1];C(e,t),d(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},ee={mode:o,persisted:s,beforeEnter(t){let r=c;if(!n.isMounted){if(a)r=_||c;else return}t[er]&&t[er](!0);let i=S[x];i&&da(e,i)&&i.el[er]&&i.el[er](),C(r,[t])},enter(t){if(S[x]===e)return;let r=l,i=u,o=f;if(!n.isMounted){if(a)r=v||l,i=y||u,o=b||f;else return}let s=!1;t[tr]=e=>{s||(s=!0,C(e?o:i,[t]),ee.delayedLeave&&ee.delayedLeave(),t[tr]=void 0)};let c=t[tr].bind(null,!1);r?w(r,[t,c]):c()},leave(t,r){let i=String(e.key);if(t[tr]&&t[tr](!0),n.isUnmounting)return r();C(p,[t]);let a=!1;t[er]=n=>{a||(a=!0,r(),C(n?g:h,[t]),t[er]=void 0,S[i]===e&&delete S[i])};let o=t[er].bind(null,!1);S[i]=e,m?w(m,[t,o]):o()},clone(e){let a=ur(e,t,n,r,i);return i&&i(a),a}};return ee}function dr(e){if(Sr(e))return e=ga(e),e.children=null,e}function fr(e){if(!Sr(e))return Hn(e.type)&&e.children?sr(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&h(n.default))return n.default()}}function pr(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let n=e.component.subTree;pr(Hn(n.type)&&fr(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function mr(e,t=!1,n){let r=[],i=0;for(let a=0;a1)for(let e=0;eyr(e,n&&(d(n)?n[t]:n),r,a,o));return}if(xr(a)&&!o){a.shapeFlag&512&&a.type.__asyncResolved&&a.component.subTree.component&&yr(e,n,r,a.component.subTree);return}let s=a.shapeFlag&4?za(a.component):a.el,l=o?null:s,{i:f,r:p}=e,m=n&&n.r,_=f.refs===t?f.refs={}:f.refs,v=f.setupState,y=P(v),b=v===t?i:e=>!_r(_,e)&&u(y,e),x=(e,t)=>!(t&&_r(_,t));if(m!=null&&m!==p){if(br(n),g(m))_[m]=null,b(m)&&(v[m]=null);else if(Kt(m)){let e=n;x(m,e.k)&&(m.value=null),e.k&&(_[e.k]=null)}}if(h(p))on(p,f,12,[l,_]);else{let t=g(p),n=Kt(p);if(t||n){let i=()=>{if(e.f){let n=t?b(p)?v[p]:_[p]:x(p)||!e.k?p.value:_[e.k];if(o)d(n)&&c(n,s);else if(d(n))n.includes(s)||n.push(s);else if(t)_[p]=[s],b(p)&&(v[p]=_[p]);else{let t=[s];x(p,e.k)&&(p.value=t),e.k&&(_[e.k]=t)}}else t?(_[p]=l,b(p)&&(v[p]=l)):n&&(x(p,e.k)&&(p.value=l),e.k&&(_[e.k]=l))};if(l){let t=()=>{i(),vr.delete(e)};t.id=-1,vr.set(e,t),Vi(t,r)}else br(e),i()}}}function br(e){let t=vr.get(e);t&&(t.flags|=8,vr.delete(e))}k().requestIdleCallback,k().cancelIdleCallback;var xr=e=>!!e.type.__asyncLoader,Sr=e=>e.type.__isKeepAlive;function Cr(e,t){Tr(e,`a`,t)}function wr(e,t){Tr(e,`da`,t)}function Tr(e,t,n=Ta){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Dr(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Sr(e.parent.vnode)&&Er(r,t,n,e),e=e.parent}}function Er(e,t,n,r){let i=Dr(t,e,r,!0);Pr(()=>{c(r[t],i)},n)}function Dr(e,t,n=Ta,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{Ue();let i=ka(n),a=sn(t,n,e,r);return i(),We(),a};return r?i.unshift(a):i.push(a),a}}var Or=e=>(t,n=Ta)=>{(!Ma||e===`sp`)&&Dr(e,(...e)=>t(...e),n)},kr=Or(`bm`),Ar=Or(`m`),jr=Or(`bu`),Mr=Or(`u`),Nr=Or(`bum`),Pr=Or(`um`),Fr=Or(`sp`),Ir=Or(`rtg`),Lr=Or(`rtc`);function Rr(e,t=Ta){Dr(`ec`,e,t)}var zr=Symbol.for(`v-ndc`);function Br(e,t,n,r){let i,a=n&&n[r],o=d(e);if(o||g(e)){let n=o&&zt(e),r=!1,s=!1;n&&(r=!Vt(e),s=Bt(e),e=rt(e)),i=Array(e.length);for(let n=0,o=e.length;nt(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;re?ja(e)?za(e):Vr(e.parent):null,Hr=s(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Vr(e.parent),$root:e=>Vr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Zr(e),$forceUpdate:e=>e.f||=()=>{yn(e.update)},$nextTick:e=>e.n||=_n.bind(e.proxy),$watch:e=>Rn.bind(e)}),Ur=(e,n)=>e!==t&&!e.__isScriptSetup&&u(e,n),Wr={get({_:e},n){if(n===`__v_skip`)return!0;let{ctx:r,setupState:i,data:a,props:o,accessCache:s,type:c,appContext:l}=e;if(n[0]!==`$`){let e=s[n];if(e!==void 0)switch(e){case 1:return i[n];case 2:return a[n];case 4:return r[n];case 3:return o[n]}else if(Ur(i,n))return s[n]=1,i[n];else if(a!==t&&u(a,n))return s[n]=2,a[n];else if(u(o,n))return s[n]=3,o[n];else if(r!==t&&u(r,n))return s[n]=4,r[n];else Kr&&(s[n]=0)}let d=Hr[n],f,p;if(d)return n===`$attrs`&&et(e.attrs,`get`,``),d(e);if((f=c.__cssModules)&&(f=f[n]))return f;if(r!==t&&u(r,n))return s[n]=4,r[n];if(p=l.config.globalProperties,u(p,n))return p[n]},set({_:e},n,r){let{data:i,setupState:a,ctx:o}=e;return Ur(a,n)?(a[n]=r,!0):i!==t&&u(i,n)?(i[n]=r,!0):u(e.props,n)||n[0]===`$`&&n.slice(1)in e?!1:(o[n]=r,!0)},has({_:{data:e,setupState:n,accessCache:r,ctx:i,appContext:a,props:o,type:s}},c){let l;return!!(r[c]||e!==t&&c[0]!==`$`&&u(e,c)||Ur(n,c)||u(o,c)||u(i,c)||u(Hr,c)||u(a.config.globalProperties,c)||(l=s.__cssModules)&&l[c])},defineProperty(e,t,n){return n.get==null?u(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}};function Gr(e){return d(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}var Kr=!0;function qr(e){let t=Zr(e),n=e.proxy,i=e.ctx;Kr=!1,t.beforeCreate&&Yr(t.beforeCreate,e,`bc`);let{data:a,computed:o,methods:s,watch:c,provide:l,inject:u,created:f,beforeMount:p,mounted:m,beforeUpdate:g,updated:_,activated:y,deactivated:b,beforeDestroy:x,beforeUnmount:S,destroyed:C,unmounted:w,render:ee,renderTracked:te,renderTriggered:ne,errorCaptured:T,serverPrefetch:re,expose:ie,inheritAttrs:E,components:D,directives:O,filters:ae}=t;if(u&&Jr(u,i,null),s)for(let e in s){let t=s[e];h(t)&&(i[e]=t.bind(n))}if(a){let t=a.call(n,n);v(t)&&(e.data=Ft(t))}if(Kr=!0,o)for(let e in o){let t=o[e],a=Va({get:h(t)?t.bind(n,n):h(t.get)?t.get.bind(n,n):r,set:!h(t)&&h(t.set)?t.set.bind(n):r});Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e})}if(c)for(let e in c)Xr(c[e],i,n,e);if(l){let e=h(l)?l.call(n):l;Reflect.ownKeys(e).forEach(t=>{Mn(t,e[t])})}f&&Yr(f,e,`c`);function oe(e,t){d(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(oe(kr,p),oe(Ar,m),oe(jr,g),oe(Mr,_),oe(Cr,y),oe(wr,b),oe(Rr,T),oe(Lr,te),oe(Ir,ne),oe(Nr,S),oe(Pr,w),oe(Fr,re),d(ie)){if(ie.length){let t=e.exposed||={};ie.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={}}ee&&e.render===r&&(e.render=ee),E!=null&&(e.inheritAttrs=E),D&&(e.components=D),O&&(e.directives=O),re&&gr(e)}function Jr(e,t,n=r){d(e)&&(e=ni(e));for(let n in e){let r=e[n],i;i=v(r)?`default`in r?Nn(r.from||n,r.default,!0):Nn(r.from||n):Nn(r),Kt(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function Yr(e,t,n){sn(d(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Xr(e,t,n,r){let i=r.includes(`.`)?zn(n,r):()=>n[r];if(g(e)){let n=t[e];h(n)&&In(i,n)}else if(h(e))In(i,e.bind(n));else if(v(e)){if(d(e))e.forEach(e=>Xr(e,t,n,r));else{let r=h(e.handler)?e.handler.bind(n):t[e.handler];h(r)&&In(i,r,e)}}}function Zr(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>Qr(c,e,o,!0)),Qr(c,t,o)),v(t)&&a.set(t,c),c}function Qr(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&Qr(e,a,n,!0),i&&i.forEach(t=>Qr(e,t,n,!0));for(let i in t)if(!(r&&i===`expose`)){let r=$r[i]||n&&n[i];e[i]=r?r(e[i],t[i]):t[i]}return e}var $r={data:ei,props:ai,emits:ai,methods:ii,computed:ii,beforeCreate:ri,created:ri,beforeMount:ri,mounted:ri,beforeUpdate:ri,updated:ri,beforeDestroy:ri,beforeUnmount:ri,destroyed:ri,unmounted:ri,activated:ri,deactivated:ri,errorCaptured:ri,serverPrefetch:ri,components:ii,directives:ii,watch:oi,provide:ei,inject:ti};function ei(e,t){return t?e?function(){return s(h(e)?e.call(this,this):e,h(t)?t.call(this,this):t)}:t:e}function ti(e,t){return ii(ni(e),ni(t))}function ni(e){if(d(e)){let t={};for(let n=0;nt===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${T(t)}Modifiers`]||e[`${ie(t)}Modifiers`];function fi(e,n,...r){if(e.isUnmounted)return;let i=e.vnode.props||t,a=r,o=n.startsWith(`update:`),s=o&&di(i,n.slice(7));s&&(s.trim&&(a=r.map(e=>g(e)?e.trim():e)),s.number&&(a=a.map(se)));let c,l=i[c=D(n)]||i[c=D(T(n))];!l&&o&&(l=i[c=D(ie(n))]),l&&sn(l,e,6,a);let u=i[c+`Once`];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,sn(u,e,6,a)}}var pi=new WeakMap;function mi(e,t,n=!1){let r=n?pi:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},c=!1;if(!h(e)){let r=e=>{let n=mi(e,t,!0);n&&(c=!0,s(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!c?(v(e)&&r.set(e,null),null):(d(a)?a.forEach(e=>o[e]=null):s(o,a),v(e)&&r.set(e,o),o)}function hi(e,t){return!e||!a(t)?!1:(t=t.slice(2),t=t===`Once`?t:t.replace(/Once$/,``),u(e,t[0].toLowerCase()+t.slice(1))||u(e,ie(t))||u(e,t))}function gi(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:s,attrs:c,emit:l,render:u,renderCache:d,props:f,data:p,setupState:m,ctx:h,inheritAttrs:g}=e,_=On(e),v,y;try{if(n.shapeFlag&4){let e=i||r,t=e;v=_a(u.call(t,e,d,f,m,p,h)),y=c}else{let e=t;v=_a(e.length>1?e(f,{attrs:c,slots:s,emit:l}):e(f,null)),y=t.props?c:_i(c)}}catch(t){ra.length=0,cn(t,e,1),v=V(ta)}let b=v;if(y&&g!==!1){let e=Object.keys(y),{shapeFlag:t}=b;e.length&&t&7&&(a&&e.some(o)&&(y=vi(y,a)),b=ga(b,y,!1,!0))}return n.dirs&&(b=ga(b,null,!1,!0),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&pr(Hn(b.type)&&fr(b)||b,n.transition),v=b,On(_),v}var _i=e=>{let t;for(let n in e)(n===`class`||n===`style`||a(n))&&((t||={})[n]=e[n]);return t},vi=(e,t)=>{let n={};for(let r in e)(!o(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function yi(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?bi(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(Ci),Ti=e=>Object.getPrototypeOf(e)===Ci;function Ei(e,t,n,r=!1){let i={},a=wi();e.propsDefaults=Object.create(null),Oi(e,t,i,a);for(let t in e.propsOptions[0])t in i||(i[t]=void 0);e.props=n?r?i:It(i):e.type.props?i:a,e.attrs=a}function Di(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=P(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{p=!0;let[t,n]=ji(e,r,!0);s(l,t),n&&f.push(...n)};!i&&r.mixins.length&&r.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!c&&!p)return v(e)&&a.set(e,n),n;if(d(c))for(let e=0;ee===`_`||e===`_ctx`||e===`$stable`,Pi=e=>d(e)?e.map(_a):[_a(e)],Fi=(e,t,n)=>{if(t._n)return t;let r=kn((...e)=>Pi(t(...e)),n);return r._c=!1,r},Ii=(e,t,n)=>{let r=e._ctx;for(let n in e){if(Ni(n))continue;let i=e[n];if(h(i))t[n]=Fi(n,i,r);else if(i!=null){let e=Pi(i);t[n]=()=>e}}},Li=(e,t)=>{let n=Pi(t);e.slots.default=()=>n},Ri=(e,t,n)=>{for(let r in t)(n||!Ni(r))&&(e[r]=t[r])},zi=(e,t,n)=>{let r=e.slots=wi();if(e.vnode.shapeFlag&32){let e=t._;e?(Ri(r,t,n),n&&oe(r,`_`,e,!0)):Ii(t,r)}else t&&Li(e,t)},Bi=(e,n,r)=>{let{vnode:i,slots:a}=e,o=!0,s=t;if(i.shapeFlag&32){let e=n._;e?r&&e===1?o=!1:Ri(a,n,r):(o=!n.$stable,Ii(n,a)),s=n}else n&&(Li(e,n),s={default:1});if(o)for(let e in a)!Ni(e)&&s[e]==null&&delete a[e]},Vi=$i;function Hi(e){return Ui(e)}function Ui(e,i){let a=k();a.__VUE__=!0;let{insert:o,remove:s,patchProp:c,createElement:l,createText:u,createComment:d,setText:f,setElementText:p,parentNode:m,nextSibling:h,setScopeId:g=r,insertStaticContent:_}=e,v=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!da(e,t)&&(r=ve(e),me(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case ea:y(e,t,n,r);break;case ta:b(e,t,n,r);break;case na:e??x(t,n,r,o);break;case L:D(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?O(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,xe)}u!=null&&i?yr(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&yr(e.ref,null,a,e,!0)},y=(e,t,n,r)=>{if(e==null)o(t.el=u(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{e==null?o(t.el=d(t.children||``),n,r):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=_(e.children,t,n,r,e.el,e.anchor)},S=({el:e,anchor:t},n,r)=>{let i;for(;e&&e!==t;)i=h(e),o(e,n,r),e=i;o(t,n,r)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),s(e),e=n;s(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)te(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),re(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},te=(e,t,n,r,i,a,s,u)=>{let d,f,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(d=e.el=l(e.type,a,m&&m.is,m),h&8?p(d,e.children):h&16&&T(e.children,d,null,r,i,Wi(e,a),s,u),_&&jn(e,null,r,`created`),ne(d,e,e.scopeId,s,r),m){for(let e in m)e!==`value`&&!ee(e)&&c(d,e,null,m[e],a,r);`value`in m&&c(d,`value`,null,m.value,a),(f=m.onVnodeBeforeMount)&&xa(f,r,e)}_&&jn(e,null,r,`beforeMount`);let v=Ki(i,g);v&&g.beforeEnter(d),o(d,t,n),((f=m&&m.onVnodeMounted)||v||_)&&Vi(()=>{try{f&&xa(f,r,e),v&&g.enter(d),_&&jn(e,null,r,`mounted`)}finally{}},i)},ne=(e,t,n,r,i)=>{if(n&&g(e,n),r)for(let t=0;t{for(let l=c;l{let l=n.el=e.el,{patchFlag:u,dynamicChildren:d,dirs:f}=n;u|=e.patchFlag&16;let m=e.props||t,h=n.props||t,g;if(r&&Gi(r,!1),(g=h.onVnodeBeforeUpdate)&&xa(g,r,n,e),f&&jn(n,e,r,`beforeUpdate`),r&&Gi(r,!0),d&&(!e.dynamicChildren||e.dynamicChildren.length!==d.length)&&(u=0,s=!1,d=null),(m.innerHTML&&h.innerHTML==null||m.textContent&&h.textContent==null)&&p(l,``),d?ie(e.dynamicChildren,d,l,r,i,Wi(n,a),o):s||ue(e,n,l,null,r,i,Wi(n,a),o,!1),u>0){if(u&16)E(l,m,h,r,a);else if(u&2&&m.class!==h.class&&c(l,`class`,null,h.class,a),u&4&&c(l,`style`,m.style,h.style,a),u&8){let e=n.dynamicProps;for(let t=0;t{g&&xa(g,r,n,e),f&&jn(n,e,r,`updated`)},i)},ie=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(n!==r){if(n!==t)for(let t in n)!ee(t)&&!(t in r)&&c(e,t,n[t],null,a,i);for(let t in r){if(ee(t))continue;let o=r[t],s=n[t];o!==s&&t!==`value`&&c(e,t,s,o,a,i)}`value`in r&&c(e,`value`,n.value,r.value,a)}},D=(e,t,n,r,i,a,s,c,l)=>{let d=t.el=e?e.el:u(``),f=t.anchor=e?e.anchor:u(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(c=c?c.concat(h):h),e==null?(o(d,n,r),o(f,n,r),T(t.children||[],n,f,i,a,s,c,l)):p>0&&p&64&&m&&e.dynamicChildren&&e.dynamicChildren.length===m.length?(ie(e.dynamicChildren,m,n,i,a,s,c),(t.key!=null||i&&t===i.subTree)&&qi(e,t,!0)):ue(e,t,n,f,i,a,s,c,l)},O=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):oe(t,n,r,i,a,o,c):se(e,t,c)},oe=(e,t,n,r,i,a,o)=>{let s=e.component=wa(e,r,i);if(Sr(e)&&(s.ctx.renderer=xe),Na(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,ce,o),!e.el){let r=s.subTree=V(ta);b(null,r,t,n),e.placeholder=r.el}}else ce(s,e,t,n,i,a,o)},se=(e,t,n)=>{let r=t.component=e.component;if(yi(e,t,n)){if(r.asyncDep&&!r.asyncResolved){le(r,t,n);return}r.next=t,r.update()}else t.el=e.el,r.vnode=t},ce=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:s,vnode:c}=e;{let n=Yi(e);if(n){t&&(t.el=c.el,le(e,t,o)),n.asyncDep.then(()=>{Vi(()=>{e.isUnmounted||l()},i)});return}}let u=t,d;Gi(e,!1),t?(t.el=c.el,le(e,t,o)):t=c,n&&ae(n),(d=t.props&&t.props.onVnodeBeforeUpdate)&&xa(d,s,t,c),Gi(e,!0);let f=gi(e),p=e.subTree;e.subTree=f,v(p,f,m(p.el),ve(p),e,i,a),t.el=f.el,u===null&&Si(e,f.el),r&&Vi(r,i),(d=t.props&&t.props.onVnodeUpdated)&&Vi(()=>xa(d,s,t,c),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=xr(t);if(Gi(e,!1),l&&ae(l),!m&&(o=c&&c.onVnodeBeforeMount)&&xa(o,d,t),Gi(e,!0),s&&j){let t=()=>{e.subTree=gi(e),j(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._hasShadowRoot()&&f.ce._injectChildStyle(p,e.parent?e.parent.type:void 0);let o=e.subTree=gi(e);v(null,o,n,r,e,i,a),t.el=o.el}if(u&&Vi(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;Vi(()=>xa(o,d,e),i)}(t.shapeFlag&256||d&&xr(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&Vi(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new Oe(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>yn(u),Gi(e,!0),l()},le=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,Di(e,t.props,r,n),Bi(e,t.children,n),Ue(),Sn(e),We()},ue=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:m}=t;if(f>0){if(f&128){fe(l,d,n,r,i,a,o,s,c);return}if(f&256){de(l,d,n,r,i,a,o,s,c);return}}m&8?(u&16&&_e(l,i,a),d!==l&&p(n,d)):u&16?m&16?fe(l,d,n,r,i,a,o,s,c):_e(l,i,a,!0):(u&8&&p(n,``),m&16&&T(d,n,r,i,a,o,s,c))},de=(e,t,r,i,a,o,s,c,l)=>{e||=n,t||=n;let u=e.length,d=t.length,f=Math.min(u,d),p=0;for(;pd?_e(e,a,o,!0,!1,f):T(t,r,i,a,o,s,c,l,f)},fe=(e,t,r,i,a,o,s,c,l)=>{let u=0,d=t.length,f=e.length-1,p=d-1;for(;u<=f&&u<=p;){let n=e[u],i=t[u]=l?va(t[u]):_a(t[u]);if(da(n,i))v(n,i,r,null,a,o,s,c,l);else break;u++}for(;u<=f&&u<=p;){let n=e[f],i=t[p]=l?va(t[p]):_a(t[p]);if(da(n,i))v(n,i,r,null,a,o,s,c,l);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,n=ep)for(;u<=f;)me(e[u],a,o,!0),u++;else{let m=u,h=u,g=new Map;for(u=h;u<=p;u++){let e=t[u]=l?va(t[u]):_a(t[u]);e.key!=null&&g.set(e.key,u)}let _,y=0,b=p-h+1,x=!1,S=0,C=Array(b);for(u=0;u=b){me(n,a,o,!0);continue}let i;if(n.key!=null)i=g.get(n.key);else for(_=h;_<=p;_++)if(C[_-h]===0&&da(n,t[_])){i=_;break}i===void 0?me(n,a,o,!0):(C[i-h]=u+1,i>=S?S=i:x=!0,v(n,t[i],r,null,a,o,s,c,l),y++)}let w=x?Ji(C):n;for(_=w.length-1,u=b-1;u>=0;u--){let e=h+u,n=t[e],f=t[e+1],p=e+1{let{el:a,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){pe(e.component.subTree,t,n,r);return}if(d&128){e.suspense.move(t,n,r);return}if(d&64){c.move(e,t,n,xe);return}if(c===L){o(a,t,n);for(let e=0;el.enter(a),i));else{let{leave:r,delayLeave:i,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?s(a):o(a,t,n)},d=()=>{let e=a._isLeaving||!!a[er];a._isLeaving&&a[er](!0),l.persisted&&!e?u():r(a,()=>{u(),c&&c()})};i?i(a,u,d):d()}}else o(a,t,n)},me=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p,memo:m}=e;if(d===-2&&(i=!1),s!=null&&(Ue(),yr(s,null,n,e,!0),We()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let h=u&1&&f,g=!xr(e),_;if(g&&(_=o&&o.onVnodeBeforeUnmount)&&xa(_,t,e),u&6)ge(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}h&&jn(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,xe,r):l&&!l.hasOnce&&(a!==L||d>0&&d&64)?_e(l,t,n,!1,!0):(a===L&&d&384||!i&&u&16)&&_e(c,t,n),r&&A(e)}let v=m!=null&&p==null;(g&&(_=o&&o.onVnodeUnmounted)||h||v)&&Vi(()=>{_&&xa(_,t,e),h&&jn(e,null,t,`unmounted`),v&&(e.el=null)},n)},A=e=>{let{type:t,el:n,anchor:r,transition:i}=e;if(t===L){he(n,r);return}if(t===na){C(e);return}let a=()=>{s(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(e.shapeFlag&1&&i&&!i.persisted){let{leave:t,delayLeave:r}=i,o=()=>t(n,a);r?r(e.el,a,o):o()}else a()},he=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},ge=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;Xi(c),Xi(l),r&&ae(r),i.stop(),a&&(a.flags|=8,me(o,e,t,n)),s&&Vi(s,t),Vi(()=>{e.isUnmounted=!0},t)},_e=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return ve(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[Vn];return n?h(n):t},ye=!1,be=(e,t,n)=>{let r;e==null?t._vnode&&(me(t._vnode,null,null,!0),r=t._vnode.component):v(t._vnode||null,e,t,null,null,null,n),t._vnode=e,ye||=(ye=!0,Sn(r),Cn(),!1)},xe={p:v,um:me,m:pe,r:A,mt:oe,mc:T,pc:ue,pbc:ie,n:ve,o:e},Se,j;return i&&([Se,j]=i(xe)),{render:be,hydrate:Se,createApp:li(be,Se)}}function Wi({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function Gi({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ki(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function qi(e,t,n=!1){let r=e.children,i=t.children;if(d(r)&&d(i))for(let e=0;e>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-->0;)n[a]=o,o=t[o];return n}function Yi(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Yi(t)}function Xi(e){if(e)for(let t=0;te.__isSuspense;function $i(e,t){t&&t.pendingBranch?d(e)?t.effects.push(...e):t.effects.push(e):xn(e)}var L=Symbol.for(`v-fgt`),ea=Symbol.for(`v-txt`),ta=Symbol.for(`v-cmt`),na=Symbol.for(`v-stc`),ra=[],ia=null;function R(e=!1){ra.push(ia=e?null:[])}function aa(){ra.pop(),ia=ra[ra.length-1]||null}var oa=1;function sa(e,t=!1){oa+=e,e<0&&ia&&t&&(ia.hasOnce=!0)}function ca(e){return e.dynamicChildren=oa>0?ia||n:null,aa(),oa>0&&ia&&ia.push(e),e}function z(e,t,n,r,i,a){return ca(B(e,t,n,r,i,a,!0))}function la(e,t,n,r,i){return ca(V(e,t,n,r,i,!0))}function ua(e){return e?e.__v_isVNode===!0:!1}function da(e,t){return e.type===t.type&&e.key===t.key}var fa=({key:e})=>e??null,pa=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:g(e)||Kt(e)||h(e)?{i:En,r:e,k:t,f:!!n}:e);function B(e,t=null,n=null,r=0,i=null,a=e===L?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&fa(t),ref:t&&pa(t),scopeId:Dn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:En};return s?(ya(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=g(n)?8:16),oa>0&&!o&&ia&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&ia.push(c),c}var V=ma;function ma(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===zr)&&(e=ta),ua(e)){let r=ga(e,t,!0);return n&&ya(r,n),oa>0&&!a&&ia&&(r.shapeFlag&6?ia[ia.indexOf(e)]=r:ia.push(r)),r.patchFlag=-2,r}if(Ba(e)&&(e=e.__vccOpts),t){t=ha(t);let{class:e,style:n}=t;e&&!g(e)&&(t.class=A(e)),v(n)&&(Ht(n)&&!d(n)&&(n=s({},n)),t.style=ue(n))}let o=g(e)?1:Qi(e)?128:Hn(e)?64:v(e)?4:h(e)?2:0;return B(e,t,n,r,i,o,a,!0)}function ha(e){return e?Ht(e)||Ti(e)?s({},e):e:null}function ga(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?ba(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&fa(l),ref:t&&t.ref?n&&a?d(a)?a.concat(pa(t)):[a,pa(t)]:pa(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==L?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ga(e.ssContent),ssFallback:e.ssFallback&&ga(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&pr(u,c.clone(u)),u}function H(e=` `,t=0){return V(ea,null,e,t)}function U(e=``,t=!1){return t?(R(),la(ta,null,e)):V(ta,null,e)}function _a(e){return e==null||typeof e==`boolean`?V(ta):d(e)?V(L,null,e.slice()):ua(e)?va(e):V(ea,null,String(e))}function va(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ga(e)}function ya(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(d(t))n=16;else if(typeof t==`object`){if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),ya(e,n()),n._c&&(n._d=!0));return}{n=32;let r=t._;!r&&!Ti(t)?t._ctx=En:r===3&&En&&(En.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}}else if(h(t)){if(r&65){ya(e,{default:t});return}t={default:t,_ctx:En},n=32}else t=String(t),r&64?(n=16,t=[H(t)]):n=8;e.children=t,e.shapeFlag|=n}function ba(...e){let t={};for(let n=0;nTa||En,Da,Oa;{let e=k(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};Da=t(`__VUE_INSTANCE_SETTERS__`,e=>Ta=e),Oa=t(`__VUE_SSR_SETTERS__`,e=>Ma=e)}var ka=e=>{let t=Ta;return Da(e),e.scope.on(),()=>{e.scope.off(),Da(t)}},Aa=()=>{Ta&&Ta.scope.off(),Da(null)};function ja(e){return e.vnode.shapeFlag&4}var Ma=!1;function Na(e,t=!1,n=!1){t&&Oa(t);let{props:r,children:i}=e.vnode,a=ja(e);Ei(e,r,a,t),zi(e,i,n||t);let o=a?Pa(e,t):void 0;return t&&Oa(!1),o}function Pa(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Wr);let{setup:r}=n;if(r){Ue();let n=e.setupContext=r.length>1?Ra(e):null,i=ka(e),a=on(r,e,0,[e.props,n]),o=y(a);if(We(),i(),(o||e.sp)&&!xr(e)&&gr(e),o){if(a.then(Aa,Aa),t)return a.then(n=>{Oa(!0);try{Fa(e,n,t)}finally{Oa(!1)}}).catch(t=>{cn(t,e,0)});e.asyncDep=a}else Fa(e,a,t)}else Ia(e,t)}function Fa(e,t,n){h(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:v(t)&&(e.setupState=Xt(t)),Ia(e,n)}function Ia(e,t,n){let i=e.type;e.render||=i.render||r;{let t=ka(e);Ue();try{qr(e)}finally{We(),t()}}}var La={get(e,t){return et(e,`get`,``),e[t]}};function Ra(e){return{attrs:new Proxy(e.attrs,La),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function za(e){return e.exposed?e.exposeProxy||=new Proxy(Xt(Ut(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Hr)return Hr[n](e)},has(e,t){return t in e||t in Hr}}):e.proxy}function Ba(e){return h(e)&&`__vccOpts`in e}var Va=(e,t)=>Qt(e,t,Ma);function Ha(e,t,n){try{sa(-1);let r=arguments.length;return r===2?v(t)&&!d(t)?ua(t)?V(e,null,[t]):V(e,t):V(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&ua(n)&&(n=[n]),V(e,t,n))}finally{sa(1)}}var Ua=`3.5.42`,Wa=void 0,Ga=typeof window<`u`&&window.trustedTypes;if(Ga)try{Wa=Ga.createPolicy(`vue`,{createHTML:e=>e})}catch{}var Ka=Wa?e=>Wa.createHTML(e):e=>e,qa=`http://www.w3.org/2000/svg`,Ja=`http://www.w3.org/1998/Math/MathML`,Ya=typeof document<`u`?document:null,Xa=Ya&&Ya.createElement(`template`),Za={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?Ya.createElementNS(qa,e):t===`mathml`?Ya.createElementNS(Ja,e):n?Ya.createElement(e,{is:n}):Ya.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>Ya.createTextNode(e),createComment:e=>Ya.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ya.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),i!==a&&(i=i.nextSibling););else{Xa.innerHTML=Ka(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=Xa.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Qa=`transition`,$a=`animation`,eo=Symbol(`_vtc`),to={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},no=s({},ir,to),ro=(e=>(e.displayName=`Transition`,e.props=no,e))((e,{slots:t})=>Ha(cr,oo(e),t)),io=(e,t=[])=>{d(e)?e.forEach(e=>e(...t)):e&&e(...t)},ao=e=>e?d(e)?e.some(e=>e.length>1):e.length>1:!1;function oo(e){let t={};for(let n in e)n in to||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:l=a,appearActiveClass:u=o,appearToClass:d=c,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,h=so(i),g=h&&h[0],_=h&&h[1],{onBeforeEnter:v,onEnter:y,onEnterCancelled:b,onLeave:x,onLeaveCancelled:S,onBeforeAppear:C=v,onAppear:w=y,onAppearCancelled:ee=b}=t,te=(e,t,n,r)=>{e._enterCancelled=r,uo(e,t?d:c),uo(e,t?u:o),n&&n()},ne=(e,t)=>{e._isLeaving=!1,uo(e,f),uo(e,m),uo(e,p),t&&t()},T=e=>(t,n)=>{let i=e?w:y,o=()=>te(t,e,n);io(i,[t,o]),fo(()=>{uo(t,e?l:a),lo(t,e?d:c),ao(i)||mo(t,r,g,o)})};return s(t,{onBeforeEnter(e){io(v,[e]),lo(e,a),lo(e,o)},onBeforeAppear(e){io(C,[e]),lo(e,l),lo(e,u)},onEnter:T(!1),onAppear:T(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>ne(e,t);lo(e,f),e._enterCancelled?(lo(e,p),vo(e)):(vo(e),lo(e,p)),fo(()=>{e._isLeaving&&(uo(e,f),lo(e,m),ao(x)||mo(e,r,_,n))}),io(x,[e,n])},onEnterCancelled(e){te(e,!1,void 0,!0),io(b,[e])},onAppearCancelled(e){te(e,!0,void 0,!0),io(ee,[e])},onLeaveCancelled(e){ne(e),io(S,[e])}})}function so(e){if(e==null)return null;if(v(e))return[co(e.enter),co(e.leave)];{let t=co(e);return[t,t]}}function co(e){return ce(e)}function lo(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[eo]||(e[eo]=new Set)).add(t)}function uo(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[eo];n&&(n.delete(t),n.size||(e[eo]=void 0))}function fo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var po=0;function mo(e,t,n,r){let i=e._endId=++po,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=ho(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u(n[e]||``).split(`, `),i=r(`${Qa}Delay`),a=r(`${Qa}Duration`),o=go(i,a),s=r(`${$a}Delay`),c=r(`${$a}Duration`),l=go(s,c),u=null,d=0,f=0;t===Qa?o>0&&(u=Qa,d=o,f=a.length):t===$a?l>0&&(u=$a,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?Qa:$a:null,f=u?u===Qa?a.length:c.length:0);let p=u===Qa&&/\b(?:transform|all)(?:,|$)/.test(r(`${Qa}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function go(e,t){for(;e.length_o(t)+_o(e[n])))}function _o(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function vo(e){return(e?e.ownerDocument:document).body.offsetHeight}function yo(e,t,n){let r=e[eo];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var bo=Symbol(`_vod`),xo=Symbol(`_vsh`),So={name:`show`,beforeMount(e,{value:t},{transition:n}){e[bo]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):Co(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Co(e,!0),r.enter(e)):r.leave(e,()=>{Co(e,!1)}):Co(e,t))},beforeUnmount(e,{value:t}){Co(e,t)}};function Co(e,t){e.style.display=t?e[bo]:`none`,e[xo]=!t}var wo=Symbol(``),To=/(?:^|;)\s*display\s*:/;function Eo(e,t,n){let r=e.style,i=g(n),a=!1;if(n&&!i){if(t){if(g(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??Oo(r,t,``)}else for(let e in t)n[e]??Oo(r,e,``)}for(let i in n){i===`display`&&(a=!0);let o=n[i];o==null?Oo(r,i,``):Mo(e,i,!g(t)&&t?t[i]:void 0,o)||Oo(r,i,o)}}else if(i){if(t!==n){let e=r[wo];e&&(n+=`;`+e),r.cssText=n,a=To.test(n)}}else t&&e.removeAttribute(`style`);bo in e&&(e[bo]=a?r.display:``,e[xo]&&(r.display=`none`))}var Do=/\s*!important$/;function Oo(e,t,n){if(d(n))n.forEach(n=>Oo(e,t,n));else if(n??=``,t.startsWith(`--`))Do.test(n)?e.setProperty(t,n.replace(Do,``),`important`):e.setProperty(t,n);else{let r=jo(e,t);Do.test(n)?e.setProperty(ie(r),n.replace(Do,``),`important`):e[r]=n}}var ko=[`Webkit`,`Moz`,`ms`],Ao={};function jo(e,t){let n=Ao[t];if(n)return n;let r=T(t);if(r!==`filter`&&r in e)return Ao[t]=r;r=E(r);for(let n=0;nUo||=(Wo.then(()=>Uo=0),Date.now());function Ko(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;let r=n.value;if(d(r)){let n=e.stopImmediatePropagation;e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0};let i=r.slice(),a=[e];for(let n=0;ne.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Jo=(e,t,n,r,i,s)=>{let c=i===`svg`;t===`class`?yo(e,r,c):t===`style`?Eo(e,n,r):a(t)?o(t)||zo(e,t,n,r,s):(t[0]===`.`?(t=t.slice(1),1):t[0]===`^`?(t=t.slice(1),0):Yo(e,t,r,c))?(Fo(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&Po(e,t,r,c,s,t!==`value`)):e._isVueCE&&(Xo(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!g(r)))?Fo(e,T(t),r,s,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),Po(e,t,r,c))};function Yo(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&qo(t)&&h(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return qo(t)&&g(n)?!1:t in e}function Xo(e,t){let n=e._def.props;if(!n)return!1;let r=T(t);return Array.isArray(n)?n.some(e=>T(e)===r):Object.keys(n).some(e=>T(e)===r)}var Zo=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return d(t)?e=>ae(t,e):t};function Qo(e){e.target.composing=!0}function $o(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var es=Symbol(`_assign`),ts=Symbol(`_initialValue`);function ns(e,t,n){return t&&(e=e.trim()),n&&(e=se(e)),e}var rs={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e.parentNode&&(e.type===`text`?e[ts]=e.defaultValue.replace(/[\r\n]/g,``):e.type===`textarea`&&(e[ts]=e.defaultValue.replace(/\r\n?/g,` -`))),e[es]=Zo(i);let a=r||i.props&&i.props.type===`number`;Io(e,t?`change`:`input`,t=>{t.target.composing||e[es](ns(e.value,n,a))}),(n||a)&&Io(e,`change`,()=>{e.value=ns(e.value,n,a)}),t||(Io(e,`compositionstart`,Qo),Io(e,`compositionend`,$o),Io(e,`change`,$o))},mounted(e,{value:t,modifiers:{trim:n,number:r}}){let i=t??``,a=e[ts];delete e[ts],a!==void 0&&(e.type===`text`||e.type===`textarea`)&&e.value!==a?e[es](ns(e.value,n,r)):e.value=i},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[es]=Zo(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?se(e.value):e.value,c=t??``;if(s===c)return;let l=e.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c)}},is={deep:!0,created(e,t,n){e[es]=Zo(n),Io(e,`change`,()=>{let t=e._modelValue,n=ls(e),r=e.checked,i=e[es];if(d(t)){let e=xe(t,n),a=e!==-1;if(r&&!a)i(t.concat(n));else if(!r&&a){let n=[...t];n.splice(e,1),i(n)}}else if(p(t)){let e=new Set(t);r?e.add(n):e.delete(n),i(e)}else i(us(e,r))})},mounted:as,beforeUpdate(e,t,n){e[es]=Zo(n),as(e,t,n)}};function as(e,{value:t,oldValue:n},r){e._modelValue=t;let i;if(d(t))i=xe(t,r.props.value)>-1;else if(p(t))i=t.has(r.props.value);else{if(t===n)return;i=be(t,us(e,!0))}e.checked!==i&&(e.checked=i)}var os={deep:!0,created(e,{value:t,modifiers:{number:n}},r){e._modelValue=t,Io(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?se(ls(e)):ls(e)),r=e.multiple,i=r?p(e._modelValue)?new Set(t):t:t[0],a=e._pendingValue=[r,r?d(i)?t.slice():t:i];try{e[es](i)}finally{_n(()=>{e._pendingValue===a&&(e._pendingValue=void 0)})}}),e[es]=Zo(r)},mounted(e,{value:t}){cs(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[es]=Zo(n)},updated(e,{value:t}){let n=e._pendingValue;e._pendingValue=void 0,(!n||n[0]!==e.multiple||!ss(t,n[1],n[0]))&&cs(e,t)}};function ss(e,t,n){if(!n||d(e))return be(e,t);if(p(e)){if(e.size!==t.length)return!1;for(let n of t)if(!e.has(n))return!1;return!0}return!1}function cs(e,t){let n=e.multiple,r=d(t);if(!n||r||p(t)){for(let i=0,a=e.options.length;iString(e)===String(o)):xe(t,o)>-1}else a.selected=t.has(o)}else if(be(ls(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function ls(e){return`_value`in e?e._value:e.value}function us(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var ds=[`ctrl`,`shift`,`alt`,`meta`],fs={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>ds.some(n=>e[`${n}Key`]&&!t.includes(n))},ps=(e,t)=>{if(!e)return e;let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=ie(n.key);if(t.some(e=>e===r||ms[e]===r))return e(n)}))},gs=s({patchProp:Jo},Za),_s;function vs(){return _s||=Hi(gs)}var ys=((...e)=>{let t=vs().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=xs(e);if(!r)return;let i=t._component;!h(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,bs(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t});function bs(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function xs(e){return g(e)?document.querySelector(e):e}var Ss=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),Cs={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},ws=({size:e,strokeWidth:t=2,absoluteStrokeWidth:n,color:r,iconNode:i,name:a,class:o,...s},{slots:c})=>Ha(`svg`,{...Cs,width:e||Cs.width,height:e||Cs.height,stroke:r||Cs.stroke,"stroke-width":n?Number(t)*24/Number(e):t,class:[`lucide`,`lucide-${Ss(a??`icon`)}`],...s},[...i.map(e=>Ha(...e)),...c.default?[c.default()]:[]]),W=(e,t)=>(n,{slots:r})=>Ha(ws,{...n,iconNode:t,name:e},r),Ts=W(`ActivityIcon`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),Es=W(`ArchiveRestoreIcon`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h2`,key:`tvwodi`}],[`path`,{d:`M20 8v11a2 2 0 0 1-2 2h-2`,key:`1gkqxj`}],[`path`,{d:`m9 15 3-3 3 3`,key:`1pd0qc`}],[`path`,{d:`M12 12v9`,key:`192myk`}]]),Ds=W(`CalendarDaysIcon`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),Os=W(`CalendarRangeIcon`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M17 14h-6`,key:`bkmgh3`}],[`path`,{d:`M13 18H7`,key:`bb0bb7`}],[`path`,{d:`M7 14h.01`,key:`1qa3f1`}],[`path`,{d:`M17 18h.01`,key:`1bdyru`}]]),ks=W(`CheckIcon`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),As=W(`ChevronDownIcon`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),js=W(`ChevronRightIcon`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),Ms=W(`CirclePlusIcon`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),Ns=W(`DownloadIcon`,[[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`polyline`,{points:`7 10 12 15 17 10`,key:`2ggqvy`}],[`line`,{x1:`12`,x2:`12`,y1:`15`,y2:`3`,key:`1vk2je`}]]),Ps=W(`FileJsonIcon`,[[`path`,{d:`M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z`,key:`1rqfz7`}],[`path`,{d:`M14 2v4a2 2 0 0 0 2 2h4`,key:`tnqrlb`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),Fs=W(`FolderIcon`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),Is=W(`GripVerticalIcon`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),Ls=W(`InboxIcon`,[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]),Rs=W(`ListChecksIcon`,[[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}],[`path`,{d:`M13 6h8`,key:`15sg57`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 18h8`,key:`oe0vm4`}]]),zs=W(`ListTodoIcon`,[[`rect`,{x:`3`,y:`5`,width:`6`,height:`6`,rx:`1`,key:`1defrl`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`M13 6h8`,key:`15sg57`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 18h8`,key:`oe0vm4`}]]),Bs=W(`LogOutIcon`,[[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}],[`polyline`,{points:`16 17 21 12 16 7`,key:`1gabdz`}],[`line`,{x1:`21`,x2:`9`,y1:`12`,y2:`12`,key:`1uyos4`}]]),Vs=W(`MenuIcon`,[[`line`,{x1:`4`,x2:`20`,y1:`12`,y2:`12`,key:`1e0a9i`}],[`line`,{x1:`4`,x2:`20`,y1:`6`,y2:`6`,key:`1owob3`}],[`line`,{x1:`4`,x2:`20`,y1:`18`,y2:`18`,key:`yk5zj1`}]]),Hs=W(`PencilIcon`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Us=W(`PlusIcon`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Ws=W(`RefreshCwIcon`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),Gs=W(`Repeat2Icon`,[[`path`,{d:`m2 9 3-3 3 3`,key:`1ltn5i`}],[`path`,{d:`M13 18H7a2 2 0 0 1-2-2V6`,key:`1r6tfw`}],[`path`,{d:`m22 15-3 3-3-3`,key:`4rnwn2`}],[`path`,{d:`M11 6h6a2 2 0 0 1 2 2v10`,key:`2f72bc`}]]),Ks=W(`SearchIcon`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]),qs=W(`SettingsIcon`,[[`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`,key:`1qme2f`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Js=W(`Trash2Icon`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),Ys=W(`UploadIcon`,[[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`polyline`,{points:`17 8 12 3 7 8`,key:`t8dd8p`}],[`line`,{x1:`12`,x2:`12`,y1:`3`,y2:`15`,key:`widbto`}]]),Xs=W(`XIcon`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Zs=e=>e.replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`).replace(/'/g,`'`),Qs=e=>{let t=Zs(e);return t=t.replace(/`([^`]+)`/g,`$1`),t=t.replace(/\*\*([^*]+)\*\*/g,`$1`),t=t.replace(/\*([^*]+)\*/g,`$1`),t=t.replace(/\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)/g,`$1`),t};function $s(e=``){let t=e.replace(/\r\n/g,` -`).split(` -`),n=[],r=!1,i=()=>{r&&=(n.push(`
`),!1)};for(let e of t){let t=e.trimEnd();if(!t.trim()){i();continue}t.startsWith(`# `)?(i(),n.push(`

${Qs(t.slice(2))}

`)):t.startsWith(`## `)?(i(),n.push(`

${Qs(t.slice(3))}

`)):/^[-*] /.test(t)?(r||=(n.push(`
    `),!0),n.push(`
  • ${Qs(t.slice(2))}
  • `)):(i(),n.push(`

    ${Qs(t)}

    `))}return i(),n.join(``)}function ec(e,t){let n=t.trim().toLowerCase();return n?e.filter(e=>[e.title,e.description??``,e.list_name??``,...(e.tags??[]).map(e=>e.name)].join(` `).toLowerCase().includes(n)):e}function tc(e){let t=new Map;for(let n of e)n.parent_id&&t.set(n.parent_id,[...t.get(n.parent_id)??[],n]);return e.filter(e=>!e.parent_id).map(e=>({task:e,subtasks:t.get(e.id)??[]}))}function nc(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.valueOf())?``:`${t.getFullYear()}-${`${t.getMonth()+1}`.padStart(2,`0`)}-${`${t.getDate()}`.padStart(2,`0`)}T${`${t.getHours()}`.padStart(2,`0`)}:${`${t.getMinutes()}`.padStart(2,`0`)}`}function rc(e){return e?new Date(e).toISOString():null}var ic,G,ac,oc,sc,cc,lc,uc,dc,fc={},pc=[],mc=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function hc(e,t){for(var n in t)e[n]=t[n];return e}function gc(e){var t=e.parentNode;t&&t.removeChild(e)}function K(e,t,n){var r,i,a,o={};for(a in t)a==`key`?r=t[a]:a==`ref`?i=t[a]:o[a]=t[a];if(arguments.length>2&&(o.children=arguments.length>3?ic.call(arguments,2):n),typeof e==`function`&&e.defaultProps!=null)for(a in e.defaultProps)o[a]===void 0&&(o[a]=e.defaultProps[a]);return _c(e,o,r,i,null)}function _c(e,t,n,r,i){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++ac};return i==null&&G.vnode!=null&&G.vnode(a),a}function vc(){return{current:null}}function q(e){return e.children}function yc(e,t,n,r,i){for(var a in n)a===`children`||a===`key`||a in t||xc(e,a,null,n[a],r);for(a in t)i&&typeof t[a]!=`function`||a===`children`||a===`key`||a===`value`||a===`checked`||n[a]===t[a]||xc(e,a,t[a],n[a],r)}function bc(e,t,n){t[0]===`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||mc.test(t)?n:n+`px`}function xc(e,t,n,r,i){var a;n:if(t===`style`){if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||bc(e.style,t,``);if(n)for(t in n)r&&n[t]===r[t]||bc(e.style,t,n[t])}}else if(t[0]===`o`&&t[1]===`n`)a=t!==(t=t.replace(/Capture$/,``)),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r||e.addEventListener(t,a?Cc:Sc,a):e.removeEventListener(t,a?Cc:Sc,a);else if(t!==`dangerouslySetInnerHTML`){if(i)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!==`width`&&t!==`height`&&t!==`href`&&t!==`list`&&t!==`form`&&t!==`tabIndex`&&t!==`download`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t.indexOf(`-`)==-1?e.removeAttribute(t):e.setAttribute(t,n))}}function Sc(e){sc=!0;try{return this.l[e.type+!1](G.event?G.event(e):e)}finally{sc=!1}}function Cc(e){sc=!0;try{return this.l[e.type+!0](G.event?G.event(e):e)}finally{sc=!1}}function wc(e,t){this.props=e,this.context=t}function Tc(e,t){if(t==null)return e.__?Tc(e.__,e.__.__k.indexOf(e)+1):null;for(var n;tt&&cc.sort(function(e,t){return e.__v.__b-t.__v.__b}));kc.__r=0}function Ac(e,t,n,r,i,a,o,s,c,l){var u,d,f,p,m,h,g,_=r&&r.__k||pc,v=_.length;for(n.__k=[],u=0;u0?_c(p.type,p.props,p.key,p.ref?p.ref:null,p.__v):p)!=null){if(p.__=n,p.__b=n.__b+1,(f=_[u])===null||f&&p.key==f.key&&p.type===f.type)_[u]=void 0;else for(d=0;d=0;t--)if((n=e.__k[t])&&(r=Pc(n)))return r}return null}function Fc(e,t,n,r,i,a,o,s,c){var l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w=t.type;if(t.constructor!==void 0)return null;n.__h!=null&&(c=n.__h,s=t.__e=n.__e,t.__h=null,a=[s]),(l=G.__b)&&l(t);try{n:if(typeof w==`function`){if(g=t.props,_=(l=w.contextType)&&r[l.__c],v=l?_?_.props.value:l.__:r,n.__c?h=(u=t.__c=n.__c).__=u.__E:(`prototype`in w&&w.prototype.render?t.__c=u=new w(g,v):(t.__c=u=new wc(g,v),u.constructor=w,u.render=Bc),_&&_.sub(u),u.props=g,u.state||(u.state={}),u.context=v,u.__n=r,d=u.__d=!0,u.__h=[],u._sb=[]),u.__s??(u.__s=u.state),w.getDerivedStateFromProps!=null&&(u.__s==u.state&&(u.__s=hc({},u.__s)),hc(u.__s,w.getDerivedStateFromProps(g,u.__s))),f=u.props,p=u.state,u.__v=t,d)w.getDerivedStateFromProps==null&&u.componentWillMount!=null&&u.componentWillMount(),u.componentDidMount!=null&&u.__h.push(u.componentDidMount);else{if(w.getDerivedStateFromProps==null&&g!==f&&u.componentWillReceiveProps!=null&&u.componentWillReceiveProps(g,v),!u.__e&&u.shouldComponentUpdate!=null&&!1===u.shouldComponentUpdate(g,u.__s,v)||t.__v===n.__v){for(t.__v!==n.__v&&(u.props=g,u.state=u.__s,u.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.forEach(function(e){e&&(e.__=t)}),y=0;y3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(e)}}),Vc(K(gl,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function vl(e,t){var n=K(_l,{__v:e,i:t});return n.containerInfo=t,n}(ml.prototype=new wc).__a=function(e){var t=this,n=pl(t.__v),r=t.o.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),hl(t,e,r)):i()};n?n(a):a()}},ml.prototype.render=function(e){this.u=null,this.o=new Map;var t=Mc(e.children);e.revealOrder&&e.revealOrder[0]===`b`&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},ml.prototype.componentDidUpdate=ml.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,n){hl(e,n,t)})};var yl=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.element`)||60103,bl=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,xl=typeof document<`u`,Sl=function(e){return(typeof Symbol<`u`&&typeof Symbol()==`symbol`?/fil|che|rad/i:/fil|che|ra/i).test(e)};wc.prototype.isReactComponent={},[`componentWillMount`,`componentWillReceiveProps`,`componentWillUpdate`].forEach(function(e){Object.defineProperty(wc.prototype,e,{configurable:!0,get:function(){return this[`UNSAFE_`+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Cl=G.event;function wl(){}function Tl(){return this.cancelBubble}function El(){return this.defaultPrevented}G.event=function(e){return Cl&&(e=Cl(e)),e.persist=wl,e.isPropagationStopped=Tl,e.isDefaultPrevented=El,e.nativeEvent=e};var Dl={configurable:!0,get:function(){return this.class}},Ol=G.vnode;G.vnode=function(e){var t=e.type,n=e.props,r=n;if(typeof t==`string`){var i=t.indexOf(`-`)===-1;for(var a in r={},n){var o=n[a];xl&&a===`children`&&t===`noscript`||a===`value`&&`defaultValue`in n&&o==null||(a===`defaultValue`&&`value`in n&&n.value==null?a=`value`:a===`download`&&!0===o?o=``:/ondoubleclick/i.test(a)?a=`ondblclick`:/^onchange(textarea|input)/i.test(a+t)&&!Sl(n.type)?a=`oninput`:/^onfocus$/i.test(a)?a=`onfocusin`:/^onblur$/i.test(a)?a=`onfocusout`:/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&bl.test(a)?a=a.replace(/[A-Z0-9]/g,`-$&`).toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),r[a]&&(a=`oninputCapture`)),r[a]=o)}t==`select`&&r.multiple&&Array.isArray(r.value)&&(r.value=Mc(n.children).forEach(function(e){e.props.selected=r.value.indexOf(e.props.value)!=-1})),t==`select`&&r.defaultValue!=null&&(r.value=Mc(n.children).forEach(function(e){e.props.selected=r.multiple?r.defaultValue.indexOf(e.props.value)!=-1:r.defaultValue==e.props.value})),e.props=r,n.class!=n.className&&(Dl.enumerable=`className`in n,n.className!=null&&(r.class=n.className),Object.defineProperty(r,"className",Dl))}e.$$typeof=yl,Ol&&Ol(e)};var kl=G.__r;G.__r=function(e){kl&&kl(e),e.__c};var Al=[],jl=new Map;function Ml(e){Al.push(e),jl.forEach(t=>{Il(t,e)})}function Nl(e){e.isConnected&&e.getRootNode&&Pl(e.getRootNode())}function Pl(e){let t=jl.get(e);if(!t||!t.isConnected){if(t=e.querySelector(`style[data-fullcalendar]`),!t){t=document.createElement(`style`),t.setAttribute(`data-fullcalendar`,``);let n=Rl();n&&(t.nonce=n);let r=e===document?document.head:e,i=e===document?r.querySelector(`script,link[rel=stylesheet],link[as=style],style`):r.firstChild;r.insertBefore(t,i)}jl.set(e,t),Fl(t)}}function Fl(e){for(let t of Al)Il(e,t)}function Il(e,t){let{sheet:n}=e,r=n.cssRules.length;t.split(`}`).forEach((e,t)=>{e=e.trim(),e&&n.insertRule(e+`}`,r+t)})}var Ll;function Rl(){return Ll===void 0&&(Ll=zl()),Ll}function zl(){let e=document.querySelector(`meta[name="csp-nonce"]`);if(e&&e.hasAttribute(`content`))return e.getAttribute(`content`);let t=document.querySelector(`script[nonce]`);return t&&t.nonce||``}typeof document<`u`&&Pl(document),Ml(`:root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:"\\e900"}.fc-icon-chevron-right:before{content:"\\e901"}.fc-icon-chevrons-left:before{content:"\\e902"}.fc-icon-chevrons-right:before{content:"\\e903"}.fc-icon-minus-square:before{content:"\\e904"}.fc-icon-plus-square:before{content:"\\e905"}.fc-icon-x:before{content:"\\e906"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:"";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:"";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}`);var Bl=class{constructor(e){this.drainedOption=e,this.isRunning=!1,this.isDirty=!1,this.pauseDepths={},this.timeoutId=0}request(e){this.isDirty=!0,this.isPaused()||(this.clearTimeout(),e==null?this.tryDrain():this.timeoutId=setTimeout(this.tryDrain.bind(this),e))}pause(e=``){let{pauseDepths:t}=this;t[e]=(t[e]||0)+1,this.clearTimeout()}resume(e=``,t){let{pauseDepths:n}=this;e in n&&(t?delete n[e]:(--n[e],n[e]<=0&&delete n[e]),this.tryDrain())}isPaused(){return Object.keys(this.pauseDepths).length}tryDrain(){if(!this.isRunning&&!this.isPaused()){for(this.isRunning=!0;this.isDirty;)this.isDirty=!1,this.drained();this.isRunning=!1}}clear(){this.clearTimeout(),this.isDirty=!1,this.pauseDepths={}}clearTimeout(){this.timeoutId&&=(clearTimeout(this.timeoutId),0)}drained(){this.drainedOption&&this.drainedOption()}};function Vl(e){e.parentNode&&e.parentNode.removeChild(e)}function Hl(e,t){if(e.closest)return e.closest(t);if(!document.documentElement.contains(e))return null;do{if(Ul(e,t))return e;e=e.parentElement||e.parentNode}while(e!==null&&e.nodeType===1);return null}function Ul(e,t){return(e.matches||e.matchesSelector||e.msMatchesSelector).call(e,t)}function Wl(e,t){let n=e instanceof HTMLElement?[e]:e,r=[];for(let e=0;e{let r=Hl(n.target,e);r&&t.call(r,n,r)}}function $l(e,t,n,r){let i=Ql(n,r);return e.addEventListener(t,i),()=>{e.removeEventListener(t,i)}}function eu(e,t,n,r){let i;return $l(e,`mouseover`,t,(e,t)=>{if(t!==i){i=t,n(e,t);let a=e=>{i=null,r(e,t),t.removeEventListener(`mouseleave`,a)};t.addEventListener(`mouseleave`,a)}})}var tu=[`webkitTransitionEnd`,`otransitionend`,`oTransitionEnd`,`msTransitionEnd`,`transitionend`];function nu(e,t){let n=r=>{t(r),tu.forEach(t=>{e.removeEventListener(t,n)})};tu.forEach(t=>{e.addEventListener(t,n)})}function ru(e){return Object.assign({onClick:e},iu(e))}function iu(e){return{tabIndex:0,onKeyDown(t){(t.key===`Enter`||t.key===` `)&&(e(t),t.preventDefault())}}}var au=0;function ou(){return au+=1,String(au)}function su(){document.body.classList.add(`fc-not-allowed`)}function cu(){document.body.classList.remove(`fc-not-allowed`)}function lu(e){e.style.userSelect=`none`,e.style.webkitUserSelect=`none`,e.addEventListener(`selectstart`,Zl)}function uu(e){e.style.userSelect=``,e.style.webkitUserSelect=``,e.removeEventListener(`selectstart`,Zl)}function du(e){e.addEventListener(`contextmenu`,Zl)}function fu(e){e.removeEventListener(`contextmenu`,Zl)}function pu(e){let t=[],n=[],r,i;for(typeof e==`string`?n=e.split(/\s*,\s*/):typeof e==`function`?n=[e]:Array.isArray(e)&&(n=e),r=0;re.replace(`$`+n,t||``),e):n}function yu(e,t){return e-t}function bu(e){return e%1==0}function xu(e){let t=e.querySelector(`.fc-scrollgrid-shrink-frame`),n=e.querySelector(`.fc-scrollgrid-shrink-cushion`);if(!t)throw Error(`needs fc-scrollgrid-shrink-frame className`);if(!n)throw Error(`needs fc-scrollgrid-shrink-cushion className`);return e.getBoundingClientRect().width-t.getBoundingClientRect().width+n.getBoundingClientRect().width}var Su=/^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/;function J(e,t){return typeof e==`string`?Cu(e):typeof e==`object`&&e?wu(e):typeof e==`number`?wu({[t||`milliseconds`]:e}):null}function Cu(e){let t=Su.exec(e);if(t){let e=t[1]?-1:1;return{years:0,months:0,days:e*(t[2]?parseInt(t[2],10):0),milliseconds:e*((t[3]?parseInt(t[3],10):0)*60*60*1e3+(t[4]?parseInt(t[4],10):0)*60*1e3+(t[5]?parseInt(t[5],10):0)*1e3+(t[6]?parseInt(t[6],10):0))}}return null}function wu(e){let t={years:e.years||e.year||0,months:e.months||e.month||0,days:e.days||e.day||0,milliseconds:(e.hours||e.hour||0)*60*60*1e3+(e.minutes||e.minute||0)*60*1e3+(e.seconds||e.second||0)*1e3+(e.milliseconds||e.millisecond||e.ms||0)},n=e.weeks||e.week;return n&&(t.days+=n*7,t.specifiedWeeks=!0),t}function Tu(e,t){return e.years===t.years&&e.months===t.months&&e.days===t.days&&e.milliseconds===t.milliseconds}function Eu(e,t){return{years:e.years-t.years,months:e.months-t.months,days:e.days-t.days,milliseconds:e.milliseconds-t.milliseconds}}function Du(e){return ku(e)/365}function Ou(e){return ku(e)/30}function ku(e){return Au(e)/864e5}function Au(e){return e.years*31536e6+e.months*2592e6+e.days*864e5+e.milliseconds}function ju(e){let t=e.milliseconds;if(t){if(t%1e3!=0)return{unit:`millisecond`,value:t};if(t%6e4!=0)return{unit:`second`,value:t/1e3};if(t%36e5!=0)return{unit:`minute`,value:t/6e4};if(t)return{unit:`hour`,value:t/36e5}}return e.days?e.specifiedWeeks&&e.days%7==0?{unit:`week`,value:e.days/7}:{unit:`day`,value:e.days}:e.months?{unit:`month`,value:e.months}:e.years?{unit:`year`,value:e.years}:{unit:`millisecond`,value:0}}function Mu(e,t,n){if(e===t)return!0;let r=e.length,i;if(r!==t.length)return!1;for(i=0;i=1?Math.min(i,a):i}function Yu(e,t,n,r){let i=ed([t,0,1+Xu(t,n,r)]),a=Y(e),o=Math.round(Ru(i,a));return Math.floor(o/7)+1}function Xu(e,t,n){let r=7+t-n;return-((7+ed([e,0,r]).getUTCDay()-t)%7)+r-1}function Zu(e){return[e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()]}function Qu(e){return new Date(e[0],e[1]||0,e[2]==null?1:e[2],e[3]||0,e[4]||0,e[5]||0)}function $u(e){return[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}function ed(e){return e.length===1&&(e=e.concat([0])),new Date(Date.UTC(...e))}function td(e){return!isNaN(e.valueOf())}function nd(e){return e.getUTCHours()*1e3*60*60+e.getUTCMinutes()*1e3*60+e.getUTCSeconds()*1e3+e.getUTCMilliseconds()}function rd(e,t,n=!1){let r=e.toISOString();return r=r.replace(`.000`,``),n&&(r=r.replace(`T00:00:00Z`,``)),r.length>10&&(t==null?r=r.replace(`Z`,``):t!==0&&(r=r.replace(`Z`,od(t,!0)))),r}function id(e){return e.toISOString().replace(/T.*$/,``)}function ad(e){return e.toISOString().match(/^\d{4}-\d{2}/)[0]}function od(e,t=!1){let n=e<0?`-`:`+`,r=Math.abs(e),i=Math.floor(r/60),a=Math.round(r%60);return t?`${n+_u(i,2)}:${_u(a,2)}`:`GMT${n}${i}${a?`:${_u(a,2)}`:``}`}function X(e,t,n){let r,i;return function(...a){if(!r)i=e.apply(this,a);else if(!Mu(r,a)){n&&n(i);let r=e.apply(this,a);(!t||!t(r,i))&&(i=r)}return r=a,i}}function sd(e,t,n){let r,i;return a=>{if(!r)i=e.call(this,a);else if(!Kd(r,a)){n&&n(i);let r=e.call(this,a);(!t||!t(r,i))&&(i=r)}return r=a,i}}var cd={week:3,separator:9,omitZeroMinute:9,meridiem:9,omitCommas:9},ld={timeZoneName:7,era:6,year:5,month:4,day:2,weekday:2,hour:1,minute:1,second:1},ud=/\s*([ap])\.?m\.?/i,dd=/,/g,fd=/\s+/g,pd=/\u200e/g,md=/UTC|GMT/,hd=class{constructor(e){let t={},n={},r=9;for(let i in e)i in cd?(n[i]=e[i],cd[i]<9&&(r=Math.min(cd[i],r))):(t[i]=e[i],i in ld&&(r=Math.min(ld[i],r)));this.standardDateProps=t,this.extendedSettings=n,this.smallestUnitNum=r,this.buildFormattingFunc=X(gd)}format(e,t){return this.buildFormattingFunc(this.standardDateProps,this.extendedSettings,t)(e)}formatRange(e,t,n,r){let{standardDateProps:i,extendedSettings:a}=this,o=Sd(e.marker,t.marker,n.calendarSystem);if(!o)return this.format(e,n);let s=o;s>1&&(i.year===`numeric`||i.year===`2-digit`)&&(i.month===`numeric`||i.month===`2-digit`)&&(i.day===`numeric`||i.day===`2-digit`)&&(s=1);let c=this.format(e,n),l=this.format(t,n);if(c===l)return c;let u=gd(Cd(i,s),a,n),d=u(e),f=u(t),p=wd(c,d,l,f),m=a.separator||r||n.defaultSeparator||``;return p?p.before+d+m+f+p.after:c+m+l}getSmallestUnit(){switch(this.smallestUnitNum){case 7:case 6:case 5:return`year`;case 4:return`month`;case 3:return`week`;case 2:return`day`;default:return`time`}}};function gd(e,t,n){let r=Object.keys(e).length;return r===1&&e.timeZoneName===`short`?e=>od(e.timeZoneOffset):r===0&&t.week?e=>xd(n.computeWeekNumber(e.marker),n.weekText,n.weekTextLong,n.locale,t.week):_d(e,t,n)}function _d(e,t,n){e=Object.assign({},e),t=Object.assign({},t),vd(e,t),e.timeZone=`UTC`;let r=new Intl.DateTimeFormat(n.locale.codes,e),i;if(t.omitZeroMinute){let t=Object.assign({},e);delete t.minute,i=new Intl.DateTimeFormat(n.locale.codes,t)}return a=>{let{marker:o}=a,s;return s=i&&!o.getUTCMinutes()?i:r,yd(s.format(o),a,e,t,n)}}function vd(e,t){e.timeZoneName&&(e.hour||=`2-digit`,e.minute||=`2-digit`),e.timeZoneName===`long`&&(e.timeZoneName=`short`),t.omitZeroMinute&&(e.second||e.millisecond)&&delete t.omitZeroMinute}function yd(e,t,n,r,i){return e=e.replace(pd,``),n.timeZoneName===`short`&&(e=bd(e,i.timeZone===`UTC`||t.timeZoneOffset==null?`UTC`:od(t.timeZoneOffset))),r.omitCommas&&(e=e.replace(dd,``).trim()),r.omitZeroMinute&&(e=e.replace(`:00`,``)),r.meridiem===!1?e=e.replace(ud,``).trim():r.meridiem===`narrow`?e=e.replace(ud,(e,t)=>t.toLocaleLowerCase()):r.meridiem===`short`?e=e.replace(ud,(e,t)=>`${t.toLocaleLowerCase()}m`):r.meridiem===`lowercase`&&(e=e.replace(ud,e=>e.toLocaleLowerCase())),e=e.replace(fd,` `),e=e.trim(),e}function bd(e,t){let n=!1;return e=e.replace(md,()=>(n=!0,t)),n||(e+=` ${t}`),e}function xd(e,t,n,r,i){let a=[];return i===`long`?a.push(n):(i===`short`||i===`narrow`)&&a.push(t),(i===`long`||i===`short`)&&a.push(` `),a.push(r.simpleNumberFormat.format(e)),r.options.direction===`rtl`&&a.reverse(),a.join(``)}function Sd(e,t,n){return n.getMarkerYear(e)===n.getMarkerYear(t)?n.getMarkerMonth(e)===n.getMarkerMonth(t)?n.getMarkerDay(e)===n.getMarkerDay(t)?nd(e)===nd(t)?0:1:2:4:5}function Cd(e,t){let n={};for(let r in e)(!(r in ld)||ld[r]<=t)&&(n[r]=e[r]);return n}function wd(e,t,n,r){let i=0;for(;i=0;--i){let a=e[i][r];if(typeof a==`object`&&a)t.unshift(a);else if(a!==void 0){n[r]=a;break}}t.length&&(n[r]=Vd(t))}}for(let t=e.length-1;t>=0;--t){let r=e[t];for(let e in r)e in n||(n[e]=r[e])}return n}function Hd(e,t){let n={};for(let r in e)t(e[r],r)&&(n[r]=e[r]);return n}function Ud(e,t){let n={};for(let r in e)n[r]=t(e[r],r);return n}function Wd(e){let t={};for(let n of e)t[n]=!0;return t}function Gd(e){let t=[];for(let n in e)t.push(e[n]);return t}function Kd(e,t){if(e===t)return!0;for(let n in e)if(Bd.call(e,n)&&!(n in t))return!1;for(let n in t)if(Bd.call(t,n)&&e[n]!==t[n])return!1;return!0}var qd=/^on[A-Z]/;function Jd(e,t){let n=Yd(e,t);for(let e of n)if(!qd.test(e))return!1;return!0}function Yd(e,t){let n=[];for(let r in e)Bd.call(e,r)&&(r in t||n.push(r));for(let r in t)Bd.call(t,r)&&e[r]!==t[r]&&n.push(r);return n}function Xd(e,t,n={}){if(e===t)return!0;for(let r in t)if(!(r in e&&Zd(e[r],t[r],n[r])))return!1;for(let n in e)if(!(n in t))return!1;return!0}function Zd(e,t,n){return e===t||n===!0?!0:n?n(e,t):!1}function Qd(e,t=0,n,r=1){let i=[];n??=Object.keys(e).length;for(let a=t;a{this.props.value!==t.value&&e.forEach(e=>{e.context=t.value,e.forceUpdate()})},this.sub=t=>{e.push(t);let n=t.componentWillUnmount;t.componentWillUnmount=()=>{e.splice(e.indexOf(t),1),n&&n.call(t)}}}return t},t}var uf=class{constructor(e,t,n,r){this.execFunc=e,this.emitter=t,this.scrollTime=n,this.scrollTimeReset=r,this.handleScrollRequest=e=>{this.queuedRequest=Object.assign({},this.queuedRequest||{},e),this.drain()},t.on(`_scrollRequest`,this.handleScrollRequest),this.fireInitialScroll()}detach(){this.emitter.off(`_scrollRequest`,this.handleScrollRequest)}update(e){e&&this.scrollTimeReset?this.fireInitialScroll():this.drain()}fireInitialScroll(){this.handleScrollRequest({time:this.scrollTime})}drain(){this.queuedRequest&&this.execFunc(this.queuedRequest)&&(this.queuedRequest=null)}},df=lf({});function ff(e,t,n,r,i,a,o,s,c,l,u,d,f,p){return{dateEnv:i,nowManager:a,options:n,pluginHooks:s,emitter:u,dispatch:c,getCurrentData:l,calendarApi:d,viewSpec:e,viewApi:t,dateProfileGenerator:r,theme:o,isRtl:n.direction===`rtl`,addResizeHandler(e){u.on(`_resize`,e)},removeResizeHandler(e){u.off(`_resize`,e)},createScrollResponder(e){return new uf(e,u,J(n.scrollTime),n.scrollTimeReset)},registerInteractiveComponent:f,unregisterInteractiveComponent:p}}var pf=class extends wc{shouldComponentUpdate(e,t){return!Xd(this.props,e,this.propEquality)||!Xd(this.state,t,this.stateEquality)}safeSetState(e){Xd(this.state,Object.assign(Object.assign({},this.state),e),this.stateEquality)||this.setState(e)}};pf.addPropsEquality=mf,pf.addStateEquality=hf,pf.contextType=df,pf.prototype.propEquality={},pf.prototype.stateEquality={};var Q=class extends pf{};Q.contextType=df;function mf(e){let t=Object.create(this.prototype.propEquality);Object.assign(t,e),this.prototype.propEquality=t}function hf(e){let t=Object.create(this.prototype.stateEquality);Object.assign(t,e),this.prototype.stateEquality=t}function gf(e,t){typeof e==`function`?e(t):e&&(e.current=t)}var _f=class extends Q{constructor(){super(...arguments),this.id=ou(),this.queuedDomNodes=[],this.currentDomNodes=[],this.handleEl=e=>{let{options:t}=this.context,{generatorName:n}=this.props;(!t.customRenderingReplaces||!vf(n,t))&&this.updateElRef(e)},this.updateElRef=e=>{this.props.elRef&&gf(this.props.elRef,e)}}render(){let{props:e,context:t}=this,{options:n}=t,{customGenerator:r,defaultGenerator:i,renderProps:a}=e,o=yf(e,[],this.handleEl),s=!1,c,l=[],u;if(r!=null){let e=typeof r==`function`?r(a,K):r;if(e===!0)s=!0;else{let t=e&&typeof e==`object`;t&&`html`in e?o.dangerouslySetInnerHTML={__html:e.html}:t&&`domNodes`in e?l=Array.prototype.slice.call(e.domNodes):(t?oc(e):typeof e!=`function`)?c=e:u=e}}else s=!vf(e.generatorName,n);return s&&i&&(c=i(a)),this.queuedDomNodes=l,this.currentGeneratorMeta=u,K(e.elTag,o,c)}componentDidMount(){this.applyQueueudDomNodes(),this.triggerCustomRendering(!0)}componentDidUpdate(){this.applyQueueudDomNodes(),this.triggerCustomRendering(!0)}componentWillUnmount(){this.triggerCustomRendering(!1)}triggerCustomRendering(e){let{props:t,context:n}=this,{handleCustomRendering:r,customRenderingMetaMap:i}=n.options;if(r){let n=this.currentGeneratorMeta??i?.[t.generatorName];n&&r(Object.assign(Object.assign({id:this.id,isActive:e,containerEl:this.base,reportNewContainerEl:this.updateElRef,generatorMeta:n},t),{elClasses:(t.elClasses||[]).filter(bf)}))}}applyQueueudDomNodes(){let{queuedDomNodes:e,currentDomNodes:t}=this,n=this.base;if(!Mu(e,t)){t.forEach(Vl);for(let t of e)n.appendChild(t);this.currentDomNodes=e}}};_f.addPropsEquality({elClasses:Mu,elStyle:Kd,elAttrs:Jd,renderProps:Kd});function vf(e,t){return!!(t.handleCustomRendering&&e&&t.customRenderingMetaMap?.[e])}function yf(e,t,n){let r=Object.assign(Object.assign({},e.elAttrs),{ref:n});return(e.elClasses||t)&&(r.className=(e.elClasses||[]).concat(t||[]).concat(r.className||[]).filter(Boolean).join(` `)),e.elStyle&&(r.style=e.elStyle),r}function bf(e){return!!e}var xf=lf(0),Sf=class extends wc{constructor(){super(...arguments),this.InnerContent=Cf.bind(void 0,this),this.handleEl=e=>{this.el=e,this.props.elRef&&(gf(this.props.elRef,e),e&&this.didMountMisfire&&this.componentDidMount())}}render(){let{props:e}=this,t=wf(e.classNameGenerator,e.renderProps);if(e.children){let n=yf(e,t,this.handleEl),r=e.children(this.InnerContent,e.renderProps,n);return e.elTag?K(e.elTag,n,r):r}return K(_f,Object.assign(Object.assign({},e),{elRef:this.handleEl,elTag:e.elTag||`div`,elClasses:(e.elClasses||[]).concat(t),renderId:this.context}))}componentDidMount(){var e,t;this.el?(t=(e=this.props).didMount)==null||t.call(e,Object.assign(Object.assign({},this.props.renderProps),{el:this.el})):this.didMountMisfire=!0}componentWillUnmount(){var e,t;(t=(e=this.props).willUnmount)==null||t.call(e,Object.assign(Object.assign({},this.props.renderProps),{el:this.el}))}};Sf.contextType=xf;function Cf(e,t){let n=e.props;return K(_f,Object.assign({renderProps:n.renderProps,generatorName:n.generatorName,customGenerator:n.customGenerator,defaultGenerator:n.defaultGenerator,renderId:e.context},t))}function wf(e,t){let n=typeof e==`function`?e(t):e||[];return typeof n==`string`?[n]:n}var Tf=class extends Q{render(){let{props:e,context:t}=this,{options:n}=t,r={view:t.viewApi};return K(Sf,{elRef:e.elRef,elTag:e.elTag||`div`,elAttrs:e.elAttrs,elClasses:[...Ef(e.viewSpec),...e.elClasses||[]],elStyle:e.elStyle,renderProps:r,classNameGenerator:n.viewClassNames,generatorName:void 0,didMount:n.viewDidMount,willUnmount:n.viewWillUnmount},()=>e.children)}};function Ef(e){return[`fc-${e.type}-view`,`fc-view`]}function Df(e,t){let n=null,r=null;return e.start&&(n=t.createMarker(e.start)),e.end&&(r=t.createMarker(e.end)),!n&&!r||n&&r&&rr&&n.push({start:r,end:a.start}),a.end>r&&(r=a.end);return rt.start)&&(e.start===null||t.end===null||e.start=e.start)&&(e.end===null||t.end!==null&&t.end<=e.end)}function Pf(e,t){return(e.start===null||t>=e.start)&&(e.end===null||t=t.end?new Date(t.end.valueOf()-1):e}function If(e){let t=Math.floor(Ru(e.start,e.end))||1,n=Y(e.start);return{start:n,end:Fu(n,t)}}function Lf(e,t=J(0)){let n=null,r=null;if(e.end){r=Y(e.end);let n=e.end.valueOf()-r.valueOf();n&&n>=Au(t)&&(r=Fu(r,1))}return e.start&&(n=Y(e.start),r&&r<=n&&(r=Fu(n,1))),{start:n,end:r}}function Rf(e,t,n,r){return r===`year`?J(n.diffWholeYears(e,t),`year`):r===`month`?J(n.diffWholeMonths(e,t),`month`):Hu(e,t)}var zf=class{constructor(e){this.props=e,this.initHiddenDays()}buildPrev(e,t,n){let{dateEnv:r}=this.props,i=r.subtract(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(i,-1,n)}buildNext(e,t,n){let{dateEnv:r}=this.props,i=r.add(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(i,1,n)}build(e,t,n=!0){let{props:r}=this,i,a,o,s,c,l;return i=this.buildValidRange(),i=this.trimHiddenDays(i),n&&(e=Ff(e,i)),a=this.buildCurrentRangeInfo(e,t),o=/^(year|month|week|day)$/.test(a.unit),s=this.buildRenderRange(this.trimHiddenDays(a.range),a.unit,o),s=this.trimHiddenDays(s),c=s,r.showNonCurrentDates||(c=Af(c,a.range)),c=this.adjustActiveRange(c),c=Af(c,i),l=Mf(a.range,i),Pf(s,e)||(e=s.start),{currentDate:e,validRange:i,currentRange:a.range,currentRangeUnit:a.unit,isRangeAllDay:o,activeRange:c,renderRange:s,slotMinTime:r.slotMinTime,slotMaxTime:r.slotMaxTime,isValid:l,dateIncrement:this.buildDateIncrement(a.duration)}}buildValidRange(){let e=this.props.validRangeInput,t=typeof e==`function`?e.call(this.props.calendarApi,this.props.dateEnv.toDate(this.props.nowManager.getDateMarker())):e;return this.refineRange(t)||{start:null,end:null}}buildCurrentRangeInfo(e,t){let{props:n}=this,r=null,i=null,a=null,o;return n.duration?(r=n.duration,i=n.durationUnit,a=this.buildRangeFromDuration(e,t,r,i)):(o=this.props.dayCount)?(i=`day`,a=this.buildRangeFromDayCount(e,t,o)):(a=this.buildCustomVisibleRange(e))?i=n.dateEnv.greatestWholeUnit(a.start,a.end).unit:(r=this.getFallbackDuration(),i=ju(r).unit,a=this.buildRangeFromDuration(e,t,r,i)),{duration:r,unit:i,range:a}}getFallbackDuration(){return J({day:1})}adjustActiveRange(e){let{dateEnv:t,usesMinMaxTime:n,slotMinTime:r,slotMaxTime:i}=this.props,{start:a,end:o}=e;return n&&(ku(r)<0&&(a=Y(a),a=t.add(a,r)),ku(i)>1&&(o=Y(o),o=Fu(o,-1),o=t.add(o,i))),{start:a,end:o}}buildRangeFromDuration(e,t,n,r){let{dateEnv:i,dateAlignment:a}=this.props,o,s,c;if(!a){let{dateIncrement:e}=this.props;a=e&&Au(e)!o[e.defId].recurringDef);for(let e in o){let n=o[e];if(n.recurringDef){let{duration:o}=n.recurringDef;o||=n.allDay?a.defaultAllDayEventDuration:a.defaultTimedEventDuration;let c=Uf(n,o,t,r,i.recurringTypes);for(let t of c){let n=Bf(e,{start:t,end:r.add(t,o)});s[n.instanceId]=n}}}return{defs:o,instances:s}}function Uf(e,t,n,r,i){let a=i[e.recurringDef.typeId].expand(e.recurringDef.typeData,{start:r.subtract(n.start,t),end:n.end},r);return e.allDay&&(a=a.map(Y)),a}var Wf={id:String,groupId:String,title:String,url:String,interactive:Boolean},Gf={start:Z,end:Z,date:Z,allDay:Boolean},Kf=Object.assign(Object.assign(Object.assign({},Wf),Gf),{extendedProps:Z});function qf(e,t,n,r,i=Yf(n),a,o){let{refined:s,extra:c}=Jf(e,n,i),l=Qf(t,n),u=Vf(s,l,n.dateEnv,n.pluginHooks.recurringTypes);if(u){let e=Xf(s,c,t?t.sourceId:``,u.allDay,!!u.duration,n,a);return e.recurringDef={typeId:u.typeId,typeData:u.typeData,duration:u.duration},{def:e,instance:null}}let d=Zf(s,l,n,r);if(d){let e=Xf(s,c,t?t.sourceId:``,d.allDay,d.hasEnd,n,a),r=Bf(e.defId,d.range,d.forcedStartTzo,d.forcedEndTzo);return o&&e.publicId&&o[e.publicId]&&(r.instanceId=o[e.publicId]),{def:e,instance:r}}return null}function Jf(e,t,n=Yf(t)){return zd(e,n)}function Yf(e){return Object.assign(Object.assign(Object.assign({},lp),Kf),e.pluginHooks.eventRefiners)}function Xf(e,t,n,r,i,a,o){let s={title:e.title||``,groupId:e.groupId||``,publicId:e.id||``,url:e.url||``,recurringDef:null,defId:(o&&e.id?o[e.id]:``)||ou(),sourceId:n,allDay:r,hasEnd:i,interactive:e.interactive,ui:dp(e,a),extendedProps:Object.assign(Object.assign({},e.extendedProps||{}),t)};for(let t of a.pluginHooks.eventDefMemberAdders)Object.assign(s,t(e));return Object.freeze(s.ui.classNames),Object.freeze(s.extendedProps),s}function Zf(e,t,n,r){let{allDay:i}=e,a,o=null,s=!1,c,l=null,u=e.start==null?e.date:e.start;if(a=n.dateEnv.createMarkerMeta(u),a)o=a.marker;else if(!r)return null;return e.end!=null&&(c=n.dateEnv.createMarkerMeta(e.end)),i??=t??((!a||a.isTimeUnspecified)&&(!c||c.isTimeUnspecified)),i&&o&&(o=Y(o)),c&&(l=c.marker,i&&(l=Y(l)),o&&l<=o&&(l=null)),l?s=!0:r||(s=n.options.forceEventDuration||!1,l=n.dateEnv.add(o,i?n.options.defaultAllDayEventDuration:n.options.defaultTimedEventDuration)),{allDay:i,hasEnd:s,range:{start:o,end:l},forcedStartTzo:a?a.forcedTzo:null,forcedEndTzo:c?c.forcedTzo:null}}function Qf(e,t){let n=null;return e&&(n=e.defaultAllDay),n??=t.options.defaultAllDay,n}function $f(e,t,n,r,i,a){let o=rp(),s=Yf(n);for(let c of e){let e=qf(c,t,n,r,s,i,a);e&&ep(e,o)}return o}function ep(e,t=rp()){return t.defs[e.def.defId]=e.def,e.instance&&(t.instances[e.instance.instanceId]=e.instance),t}function tp(e,t){let n=e.instances[t];if(n){let t=e.defs[n.defId],r=ap(e,e=>np(t,e));return r.defs[t.defId]=t,r.instances[n.instanceId]=n,r}return rp()}function np(e,t){return!!(e.groupId&&e.groupId===t.groupId)}function rp(){return{defs:{},instances:{}}}function ip(e,t){return{defs:Object.assign(Object.assign({},e.defs),t.defs),instances:Object.assign(Object.assign({},e.instances),t.instances)}}function ap(e,t){let n=Hd(e.defs,t);return{defs:n,instances:Hd(e.instances,e=>n[e.defId])}}function op(e,t){let{defs:n,instances:r}=e,i={},a={};for(let e in n)t.defs[e]||(i[e]=n[e]);for(let e in r)!t.instances[e]&&i[r[e].defId]&&(a[e]=r[e]);return{defs:i,instances:a}}function sp(e,t){return Array.isArray(e)?$f(e,null,t,!0):typeof e==`object`&&e?$f([e],null,t,!0):e==null?null:String(e)}function cp(e){return Array.isArray(e)?e:typeof e==`string`?e.split(/\s+/):[]}var lp={display:String,editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:Z,overlap:Z,allow:Z,className:cp,classNames:cp,color:String,backgroundColor:String,borderColor:String,textColor:String},up={display:null,startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],backgroundColor:``,borderColor:``,textColor:``,classNames:[]};function dp(e,t){let n=sp(e.constraint,t);return{display:e.display||null,startEditable:e.startEditable==null?e.editable:e.startEditable,durationEditable:e.durationEditable==null?e.editable:e.durationEditable,constraints:n==null?[]:[n],overlap:e.overlap==null?null:e.overlap,allows:e.allow==null?[]:[e.allow],backgroundColor:e.backgroundColor||e.color||``,borderColor:e.borderColor||e.color||``,textColor:e.textColor||``,classNames:(e.className||[]).concat(e.classNames||[])}}function fp(e){return e.reduce(pp,up)}function pp(e,t){return{display:t.display==null?e.display:t.display,startEditable:t.startEditable==null?e.startEditable:t.startEditable,durationEditable:t.durationEditable==null?e.durationEditable:t.durationEditable,constraints:e.constraints.concat(t.constraints),overlap:typeof t.overlap==`boolean`?t.overlap:e.overlap,allows:e.allows.concat(t.allows),backgroundColor:t.backgroundColor||e.backgroundColor,borderColor:t.borderColor||e.borderColor,textColor:t.textColor||e.textColor,classNames:e.classNames.concat(t.classNames)}}var mp={id:String,defaultAllDay:Boolean,url:String,format:String,events:Z,eventDataTransform:Z,success:Z,failure:Z};function hp(e,t,n=gp(t)){let r;if(typeof e==`string`?r={url:e}:typeof e==`function`||Array.isArray(e)?r={events:e}:typeof e==`object`&&e&&(r=e),r){let{refined:i,extra:a}=zd(r,n),o=_p(i,t);if(o)return{_raw:e,isFetching:!1,latestFetchId:``,fetchRange:null,defaultAllDay:i.defaultAllDay,eventDataTransform:i.eventDataTransform,success:i.success,failure:i.failure,publicId:i.id||``,sourceId:ou(),sourceDefId:o.sourceDefId,meta:o.meta,ui:dp(i,t),extendedProps:a}}return null}function gp(e){return Object.assign(Object.assign(Object.assign({},lp),mp),e.pluginHooks.eventSourceRefiners)}function _p(e,t){let n=t.pluginHooks.eventSourceDefs;for(let t=n.length-1;t>=0;--t){let r=n[t].parseMeta(e);if(r)return{sourceDefId:t,meta:r}}return null}function vp(e,t,n,r,i){switch(t.type){case`RECEIVE_EVENTS`:return yp(e,n[t.sourceId],t.fetchId,t.fetchRange,t.rawEvents,i);case`RESET_RAW_EVENTS`:return bp(e,n[t.sourceId],t.rawEvents,r.activeRange,i);case`ADD_EVENTS`:return Cp(e,t.eventStore,r?r.activeRange:null,i);case`RESET_EVENTS`:return t.eventStore;case`MERGE_EVENTS`:return ip(e,t.eventStore);case`PREV`:case`NEXT`:case`CHANGE_DATE`:case`CHANGE_VIEW_TYPE`:return r?Hf(e,r.activeRange,i):e;case`REMOVE_EVENTS`:return op(e,t.eventStore);case`REMOVE_EVENT_SOURCE`:return Tp(e,t.sourceId);case`REMOVE_ALL_EVENT_SOURCES`:return ap(e,e=>!e.sourceId);case`REMOVE_ALL_EVENTS`:return rp();default:return e}}function yp(e,t,n,r,i,a){if(t&&n===t.latestFetchId){let n=$f(xp(i,t,a),t,a);return r&&(n=Hf(n,r,a)),ip(Tp(e,t.sourceId),n)}return e}function bp(e,t,n,r,i){let{defIdMap:a,instanceIdMap:o}=Dp(e);return Hf($f(xp(n,t,i),t,i,!1,a,o),r,i)}function xp(e,t,n){let r=n.options.eventDataTransform,i=t?t.eventDataTransform:null;return i&&(e=Sp(e,i)),r&&(e=Sp(e,r)),e}function Sp(e,t){let n;if(!t)n=e;else{n=[];for(let r of e){let e=t(r);e?n.push(e):e??n.push(r)}}return n}function Cp(e,t,n,r){return n&&(t=Hf(t,n,r)),ip(e,t)}function wp(e,t,n){let{defs:r}=e;return{defs:r,instances:Ud(e.instances,e=>r[e.defId].allDay?e:Object.assign(Object.assign({},e),{range:{start:n.createMarker(t.toDate(e.range.start,e.forcedStartTzo)),end:n.createMarker(t.toDate(e.range.end,e.forcedEndTzo))},forcedStartTzo:n.canComputeOffset?null:e.forcedStartTzo,forcedEndTzo:n.canComputeOffset?null:e.forcedEndTzo}))}}function Tp(e,t){return ap(e,e=>e.sourceId!==t)}function Ep(e,t){return{defs:e.defs,instances:Hd(e.instances,e=>!t[e.instanceId])}}function Dp(e){let{defs:t,instances:n}=e,r={},i={};for(let e in t){let{publicId:n}=t[e];n&&(r[n]=e)}for(let e in n){let{publicId:r}=t[n[e].defId];r&&(i[r]=e)}return{defIdMap:r,instanceIdMap:i}}var Op=class{constructor(){this.handlers={},this.thisContext=null}setThisContext(e){this.thisContext=e}setOptions(e){this.options=e}on(e,t){kp(this.handlers,e,t)}off(e,t){Ap(this.handlers,e,t)}trigger(e,...t){let n=this.handlers[e]||[],r=this.options&&this.options[e],i=[].concat(r||[],n);for(let e of i)e.apply(this.thisContext,t)}hasHandlers(e){return!!(this.handlers[e]&&this.handlers[e].length||this.options&&this.options[e])}};function kp(e,t,n){(e[t]||(e[t]=[])).push(n)}function Ap(e,t,n){n?e[t]&&(e[t]=e[t].filter(e=>e!==n)):delete e[t]}var jp={startTime:`09:00`,endTime:`17:00`,daysOfWeek:[1,2,3,4,5],display:`inverse-background`,classNames:`fc-non-business`,groupId:`_businessHours`};function Mp(e,t){return $f(Np(e),null,t)}function Np(e){let t;return t=e===!0?[{}]:Array.isArray(e)?e.filter(e=>e.daysOfWeek):typeof e==`object`&&e?[e]:[],t=t.map(e=>Object.assign(Object.assign({},jp),e)),t}function Pp(e,t,n){n.emitter.trigger(`select`,Object.assign(Object.assign({},Ip(e,n)),{jsEvent:t?t.origEvent:null,view:n.viewApi||n.calendarApi.view}))}function Fp(e,t){t.emitter.trigger(`unselect`,{jsEvent:e?e.origEvent:null,view:t.viewApi||t.calendarApi.view})}function Ip(e,t){let n={};for(let r of t.pluginHooks.dateSpanTransforms)Object.assign(n,r(e,t));return Object.assign(n,um(e,t.dateEnv)),n}function Lp(e,t,n){let{dateEnv:r,options:i}=n,a=t;return e?(a=Y(a),a=r.add(a,i.defaultAllDayEventDuration)):a=r.add(a,i.defaultTimedEventDuration),a}function Rp(e,t,n,r){let i=qp(e.defs,t),a=rp();for(let t in e.defs){let o=e.defs[t];a.defs[t]=zp(o,i[t],n,r)}for(let t in e.instances){let o=e.instances[t],s=a.defs[o.defId];a.instances[t]=Bp(o,s,i[o.defId],n,r)}return a}function zp(e,t,n,r){let i=n.standardProps||{};i.hasEnd==null&&t.durationEditable&&(n.startDelta||n.endDelta)&&(i.hasEnd=!0);let a=Object.assign(Object.assign(Object.assign({},e),i),{ui:Object.assign(Object.assign({},e.ui),i.ui)});n.extendedProps&&(a.extendedProps=Object.assign(Object.assign({},a.extendedProps),n.extendedProps));for(let e of r.pluginHooks.eventDefMutationAppliers)e(a,n,r);return!a.hasEnd&&r.options.forceEventDuration&&(a.hasEnd=!0),a}function Bp(e,t,n,r,i){let{dateEnv:a}=i,o=r.standardProps&&r.standardProps.allDay===!0,s=r.standardProps&&r.standardProps.hasEnd===!1,c=Object.assign({},e);return o&&(c.range=If(c.range)),r.datesDelta&&n.startEditable&&(c.range={start:a.add(c.range.start,r.datesDelta),end:a.add(c.range.end,r.datesDelta)}),r.startDelta&&n.durationEditable&&(c.range={start:a.add(c.range.start,r.startDelta),end:c.range.end}),r.endDelta&&n.durationEditable&&(c.range={start:c.range.start,end:a.add(c.range.end,r.endDelta)}),s&&(c.range={start:c.range.start,end:Lp(t.allDay,c.range.start,i)}),t.allDay&&(c.range={start:Y(c.range.start),end:Y(c.range.end)}),c.range.endJp(e,t))}function Jp(e,t){let n=[];return t[``]&&n.push(t[``]),t[e.defId]&&n.push(t[e.defId]),n.push(e.ui),fp(n)}function Yp(e,t){let n=e.map(Xp);return n.sort((e,n)=>mu(e,n,t)),n.map(e=>e._seg)}function Xp(e){let{eventRange:t}=e,n=t.def,r=t.instance?t.instance.range:t.range,i=r.start?r.start.valueOf():0,a=r.end?r.end.valueOf():0;return Object.assign(Object.assign(Object.assign({},n.extendedProps),n),{id:n.publicId,start:i,end:a,duration:a-i,allDay:Number(n.allDay),_seg:e})}function Zp(e,t){let{pluginHooks:n}=t,r=n.isDraggableTransformers,{def:i,ui:a}=e.eventRange,o=a.startEditable;for(let e of r)o=e(o,i,a,t);return o}function Qp(e,t){return e.isStart&&e.eventRange.ui.durationEditable&&t.options.eventResizableFromStart}function $p(e,t){return e.isEnd&&e.eventRange.ui.durationEditable}function em(e,t,n,r,i,a,o){let{dateEnv:s,options:c}=n,{displayEventTime:l,displayEventEnd:u}=c,d=e.eventRange.def,f=e.eventRange.instance;l??=r!==!1,u??=i!==!1;let p=f.range.start,m=f.range.end,h=a||e.start||e.eventRange.range.start,g=o||e.end||e.eventRange.range.end,_=Y(p).valueOf()===Y(h).valueOf(),v=Y(Iu(m,-1)).valueOf()===Y(Iu(g,-1)).valueOf();return l&&!d.allDay&&(_||v)?(h=_?p:h,g=v?m:g,u&&d.hasEnd?s.formatRange(h,g,t,{forcedStartTzo:a?null:f.forcedStartTzo,forcedEndTzo:o?null:f.forcedEndTzo}):s.format(h,t,{forcedTzo:a?null:f.forcedStartTzo})):``}function tm(e,t,n){let r=e.eventRange.range;return{isPast:r.end<=(n||t.start),isFuture:r.start>=(n||t.end),isToday:t&&Pf(t,r.start)}}function nm(e){let t=[`fc-event`];return e.isMirror&&t.push(`fc-event-mirror`),e.isDraggable&&t.push(`fc-event-draggable`),(e.isStartResizable||e.isEndResizable)&&t.push(`fc-event-resizable`),e.isDragging&&t.push(`fc-event-dragging`),e.isResizing&&t.push(`fc-event-resizing`),e.isSelected&&t.push(`fc-event-selected`),e.isStart&&t.push(`fc-event-start`),e.isEnd&&t.push(`fc-event-end`),e.isPast&&t.push(`fc-event-past`),e.isToday&&t.push(`fc-event-today`),e.isFuture&&t.push(`fc-event-future`),t}function rm(e){return e.instance?e.instance.instanceId:`${e.def.defId}:${e.range.start.toISOString()}`}function im(e,t){let{def:n,instance:r}=e.eventRange,{url:i}=n;if(i)return{href:i};let{emitter:a,options:o}=t,{eventInteractive:s}=o;return s??(s=n.interactive,s??=!!a.hasHandlers(`eventClick`)),s?iu(e=>{a.trigger(`eventClick`,{el:e.target,event:new $(t,n,r),jsEvent:e,view:t.viewApi})}):{}}var am={start:Z,end:Z,allDay:Boolean};function om(e,t,n){let r=sm(e,t),{range:i}=r;if(!i.start)return null;if(!i.end){if(n==null)return null;i.end=t.add(i.start,n)}return r}function sm(e,t){let{refined:n,extra:r}=zd(e,am),i=n.start?t.createMarkerMeta(n.start):null,a=n.end?t.createMarkerMeta(n.end):null,{allDay:o}=n;return o??=i&&i.isTimeUnspecified&&(!a||a.isTimeUnspecified),Object.assign({range:{start:i?i.marker:null,end:a?a.marker:null},allDay:o},r)}function cm(e,t){return jf(e.range,t.range)&&e.allDay===t.allDay&&lm(e,t)}function lm(e,t){for(let n in t)if(n!==`range`&&n!==`allDay`&&e[n]!==t[n])return!1;for(let n in e)if(!(n in t))return!1;return!0}function um(e,t){return Object.assign(Object.assign({},fm(e.range,t,e.allDay)),{allDay:e.allDay})}function dm(e,t,n){return Object.assign(Object.assign({},fm(e,t,n)),{timeZone:t.timeZone})}function fm(e,t,n){return{start:t.toDate(e.start),end:t.toDate(e.end),startStr:t.formatIso(e.start,{omitTime:n}),endStr:t.formatIso(e.end,{omitTime:n})}}function pm(e,t,n){let r=Jf({editable:!1},n),i=Xf(r.refined,r.extra,``,e.allDay,!0,n);return{def:i,ui:Jp(i,t),instance:Bf(i.defId,e.range),range:e.range,isStart:!0,isEnd:!0}}function mm(e,t,n){let r=!1,i=function(e){r||(r=!0,t(e))},a=function(e){r||(r=!0,n(e))},o=e(i,a);o&&typeof o.then==`function`&&o.then(i,a)}var hm=class extends Error{constructor(e,t){super(e),this.response=t}};function gm(e,t,n){e=e.toUpperCase();let r={method:e};return e===`GET`?t+=(t.indexOf(`?`)===-1?`?`:`&`)+new URLSearchParams(n):(r.body=new URLSearchParams(n),r.headers={"Content-Type":`application/x-www-form-urlencoded`}),fetch(t,r).then(e=>{if(e.ok)return e.json().then(t=>[t,e],()=>{throw new hm(`Failure parsing JSON`,e)});throw new hm(`Request failed`,e)})}var _m;function vm(){return _m??=ym(),_m}function ym(){if(typeof document>`u`)return!0;let e=document.createElement(`div`);e.style.position=`absolute`,e.style.top=`0px`,e.style.left=`0px`,e.innerHTML=`
    `,e.querySelector(`table`).style.height=`100px`,e.querySelector(`div`).style.height=`100%`,document.body.appendChild(e);let t=e.querySelector(`div`).offsetHeight>0;return document.body.removeChild(e),t}var bm=class extends Q{constructor(){super(...arguments),this.state={forPrint:!1},this.handleBeforePrint=()=>{sf(()=>{this.setState({forPrint:!0})})},this.handleAfterPrint=()=>{sf(()=>{this.setState({forPrint:!1})})}}render(){let{props:e}=this,{options:t}=e,{forPrint:n}=this.state,r=n||t.height===`auto`||t.contentHeight===`auto`,i=!r&&t.height!=null?t.height:``,a=[`fc`,n?`fc-media-print`:`fc-media-screen`,`fc-direction-${t.direction}`,e.theme.getClass(`root`)];return vm()||a.push(`fc-liquid-hack`),e.children(a,i,r,n)}componentDidMount(){let{emitter:e}=this.props;e.on(`_beforeprint`,this.handleBeforePrint),e.on(`_afterprint`,this.handleAfterPrint)}componentWillUnmount(){let{emitter:e}=this.props;e.off(`_beforeprint`,this.handleBeforePrint),e.off(`_afterprint`,this.handleAfterPrint)}},xm=class{constructor(e){this.component=e.component,this.isHitComboAllowed=e.isHitComboAllowed||null}destroy(){}};function Sm(e,t){return{component:e,el:t.el,useEventCenter:t.useEventCenter==null||t.useEventCenter,isHitComboAllowed:t.isHitComboAllowed||null}}function Cm(e){return{[e.component.uid]:e}}var wm={},Tm=class extends wc{constructor(e,t){super(e,t),this.handleRefresh=()=>{let e=this.computeTiming();e.state.nowDate.valueOf()!==this.state.nowDate.valueOf()&&this.setState(e.state),this.clearTimeout(),this.setTimeout(e.waitMs)},this.handleVisibilityChange=()=>{document.hidden||this.handleRefresh()},this.state=this.computeTiming().state}render(){let{props:e,state:t}=this;return e.children(t.nowDate,t.todayRange)}componentDidMount(){this.setTimeout(),this.context.nowManager.addResetListener(this.handleRefresh),document.addEventListener(`visibilitychange`,this.handleVisibilityChange)}componentDidUpdate(e){e.unit!==this.props.unit&&(this.clearTimeout(),this.setTimeout())}componentWillUnmount(){this.clearTimeout(),this.context.nowManager.removeResetListener(this.handleRefresh),document.removeEventListener(`visibilitychange`,this.handleVisibilityChange)}computeTiming(){let{props:e,context:t}=this,n=t.nowManager.getDateMarker(),{nowIndicatorSnap:r}=t.options;r===`auto`&&(r=/year|month|week|day/.test(e.unit)||(e.unitValue||1)===1);let i,a;return r?(i=t.dateEnv.startOf(n,e.unit),a=t.dateEnv.add(i,J(1,e.unit)).valueOf()-n.valueOf()):(i=n,a=6e4),a=Math.min(864e5,a),{state:{nowDate:i,todayRange:Em(i)},waitMs:a}}setTimeout(e=this.computeTiming().waitMs){this.timeoutId=setTimeout(()=>{let e=this.computeTiming();this.setState(e.state,()=>{this.setTimeout(e.waitMs)})},e)}clearTimeout(){this.timeoutId&&clearTimeout(this.timeoutId)}};Tm.contextType=df;function Em(e){let t=Y(e);return{start:t,end:Fu(t,1)}}var Dm=class{getCurrentData(){return this.currentDataManager.getCurrentData()}dispatch(e){this.currentDataManager.dispatch(e)}get view(){return this.getCurrentData().viewApi}batchRendering(e){e()}updateSize(){this.trigger(`_resize`,!0)}setOption(e,t){this.dispatch({type:`SET_OPTION`,optionName:e,rawOptionValue:t})}getOption(e){return this.currentDataManager.currentCalendarOptionsInput[e]}getAvailableLocaleCodes(){return Object.keys(this.getCurrentData().availableRawLocales)}on(e,t){let{currentDataManager:n}=this;n.currentCalendarOptionsRefiners[e]?n.emitter.on(e,t):console.warn(`Unknown listener name '${e}'`)}off(e,t){this.currentDataManager.emitter.off(e,t)}trigger(e,...t){this.currentDataManager.emitter.trigger(e,...t)}changeView(e,t){this.batchRendering(()=>{if(this.unselect(),t){if(t.start&&t.end)this.dispatch({type:`CHANGE_VIEW_TYPE`,viewType:e}),this.dispatch({type:`SET_OPTION`,optionName:`visibleRange`,rawOptionValue:t});else{let{dateEnv:n}=this.getCurrentData();this.dispatch({type:`CHANGE_VIEW_TYPE`,viewType:e,dateMarker:n.createMarker(t)})}}else this.dispatch({type:`CHANGE_VIEW_TYPE`,viewType:e})})}zoomTo(e,t){let n=this.getCurrentData(),r;t||=`day`,r=n.viewSpecs[t]||this.getUnitViewSpec(t),this.unselect(),r?this.dispatch({type:`CHANGE_VIEW_TYPE`,viewType:r.type,dateMarker:e}):this.dispatch({type:`CHANGE_DATE`,dateMarker:e})}getUnitViewSpec(e){let{viewSpecs:t,toolbarConfig:n}=this.getCurrentData(),r=[].concat(n.header?n.header.viewsWithButtons:[],n.footer?n.footer.viewsWithButtons:[]),i,a;for(let e in t)r.push(e);for(i=0;i{this.dispatch({type:`REMOVE_EVENTS`,eventStore:Hp(e)})}})}getEventById(e){let t=this.getCurrentData(),{defs:n,instances:r}=t.eventStore;e=String(e);for(let i in n){let a=n[i];if(a.publicId===e){if(a.recurringDef)return new $(t,a,null);for(let e in r){let n=r[e];if(n.defId===a.defId)return new $(t,a,n)}}}return null}getEvents(){let e=this.getCurrentData();return Up(e.eventStore,e)}removeAllEvents(){this.dispatch({type:`REMOVE_ALL_EVENTS`})}getEventSources(){let e=this.getCurrentData(),t=e.eventSources,n=[];for(let r in t)n.push(new Vp(e,t[r]));return n}getEventSourceById(e){let t=this.getCurrentData(),n=t.eventSources;e=String(e);for(let r in n)if(n[r].publicId===e)return new Vp(t,n[r]);return null}addEventSource(e){let t=this.getCurrentData();if(e instanceof Vp)return t.eventSources[e.internalEventSource.sourceId]||this.dispatch({type:`ADD_EVENT_SOURCES`,sources:[e.internalEventSource]}),e;let n=hp(e,t);return n?(this.dispatch({type:`ADD_EVENT_SOURCES`,sources:[n]}),new Vp(t,n)):null}removeAllEventSources(){this.dispatch({type:`REMOVE_ALL_EVENT_SOURCES`})}refetchEvents(){this.dispatch({type:`FETCH_EVENT_SOURCES`,isRefetch:!0})}scrollToTime(e){let t=J(e);t&&this.trigger(`_scrollRequest`,{time:t})}};function Om(e,t){return e.left>=t.left&&e.left=t.top&&e.topn:t&&e>=t.end)}}function Pm(e,t){let n=[`fc-day`,`fc-day-${Nu[e.dow]}`];return e.isDisabled?n.push(`fc-day-disabled`):(e.isToday&&(n.push(`fc-day-today`),n.push(t.getClass(`today`))),e.isPast&&n.push(`fc-day-past`),e.isFuture&&n.push(`fc-day-future`),e.isOther&&n.push(`fc-day-other`)),n}var Fm=kd({year:`numeric`,month:`long`,day:`numeric`}),Im=kd({week:`long`});function Lm(e,t,n=`day`,r=!0){let{dateEnv:i,options:a,calendarApi:o}=e,s=i.format(t,n===`week`?Im:Fm);if(a.navLinks){let e=i.toDate(t),c=e=>{let r=n===`day`?a.navLinkDayClick:n===`week`?a.navLinkWeekClick:null;typeof r==`function`?r.call(o,i.toDate(t),e):(typeof r==`string`&&(n=r),o.zoomTo(t,n))};return Object.assign({title:vu(a.navLinkHint,[s,e],s),"data-navlink":``},r?ru(c):{onClick:c})}return{"aria-label":s}}var Rm=null;function zm(){return Rm===null&&(Rm=Bm()),Rm}function Bm(){let e=document.createElement(`div`);Kl(e,{position:`absolute`,top:-1e3,left:0,border:0,padding:0,overflow:`scroll`,direction:`rtl`}),e.innerHTML=`
    `,document.body.appendChild(e);let t=e.firstChild.getBoundingClientRect().left>e.getBoundingClientRect().left;return Vl(e),t}var Vm;function Hm(){return Vm||=Um(),Vm}function Um(){let e=document.createElement(`div`);e.style.overflow=`scroll`,e.style.position=`absolute`,e.style.top=`-9999px`,e.style.left=`-9999px`,document.body.appendChild(e);let t=Wm(e);return document.body.removeChild(e),t}function Wm(e){return{x:e.offsetHeight-e.clientHeight,y:e.offsetWidth-e.clientWidth}}function Gm(e,t=!1){let n=window.getComputedStyle(e),r=parseInt(n.borderLeftWidth,10)||0,i=parseInt(n.borderRightWidth,10)||0,a=parseInt(n.borderTopWidth,10)||0,o=parseInt(n.borderBottomWidth,10)||0,s=Wm(e),c=s.y-r-i,l={borderLeft:r,borderRight:i,borderTop:a,borderBottom:o,scrollbarBottom:s.x-a-o,scrollbarLeft:0,scrollbarRight:0};return zm()&&n.direction===`rtl`?l.scrollbarLeft=c:l.scrollbarRight=c,t&&(l.paddingLeft=parseInt(n.paddingLeft,10)||0,l.paddingRight=parseInt(n.paddingRight,10)||0,l.paddingTop=parseInt(n.paddingTop,10)||0,l.paddingBottom=parseInt(n.paddingBottom,10)||0),l}function Km(e,t=!1,n){let r=n?e.getBoundingClientRect():qm(e),i=Gm(e,t),a={left:r.left+i.borderLeft+i.scrollbarLeft,right:r.right-i.borderRight-i.scrollbarRight,top:r.top+i.borderTop,bottom:r.bottom-i.borderBottom-i.scrollbarBottom};return t&&(a.left+=i.paddingLeft,a.right-=i.paddingRight,a.top+=i.paddingTop,a.bottom-=i.paddingBottom),a}function qm(e){let t=e.getBoundingClientRect();return{left:t.left+window.scrollX,top:t.top+window.scrollY,right:t.right+window.scrollX,bottom:t.bottom+window.scrollY}}function Jm(e){let t=Ym(e),n=e.getBoundingClientRect();for(let e of t){let t=km(n,e.getBoundingClientRect());if(t)n=t;else return null}return n}function Ym(e){let t=[];for(;e instanceof HTMLElement;){let n=window.getComputedStyle(e);if(n.position===`fixed`)break;/(auto|scroll)/.test(n.overflow+n.overflowY+n.overflowX)&&t.push(e),e=e.parentNode}return t}var Xm=class{constructor(e,t,n,r){this.els=t;let i=this.originClientRect=e.getBoundingClientRect();n&&this.buildElHorizontals(i.left),r&&this.buildElVerticals(i.top)}buildElHorizontals(e){let t=[],n=[];for(let r of this.els){let i=r.getBoundingClientRect();t.push(i.left-e),n.push(i.right-e)}this.lefts=t,this.rights=n}buildElVerticals(e){let t=[],n=[];for(let r of this.els){let i=r.getBoundingClientRect();t.push(i.top-e),n.push(i.bottom-e)}this.tops=t,this.bottoms=n}leftToIndex(e){let{lefts:t,rights:n}=this,r=t.length,i=0;for(;i=t[i]&&e=t[i]&&e0}canScrollHorizontally(){return this.getMaxScrollLeft()>0}canScrollUp(){return this.getScrollTop()>0}canScrollDown(){return this.getScrollTop()0}canScrollRight(){return this.getScrollLeft()e.thickness||1){this.getEntryThickness=e,this.strictOrder=!1,this.allowReslicing=!1,this.maxCoord=-1,this.maxStackCnt=-1,this.levelCoords=[],this.entriesByLevel=[],this.stackCnts={}}addSegs(e){let t=[];for(let n of e)this.insertEntry(n,t);return t}insertEntry(e,t){let n=this.findInsertion(e);this.isInsertionValid(n,e)?this.insertEntryAt(e,n):this.handleInvalidInsertion(n,e,t)}isInsertionValid(e,t){return(this.maxCoord===-1||e.levelCoord+this.getEntryThickness(t)<=this.maxCoord)&&(this.maxStackCnt===-1||e.stackCnti.end&&this.insertEntry({index:e.index,thickness:e.thickness,span:{start:i.end,end:r.end}},n)}insertEntryAt(e,t){let{entriesByLevel:n,levelCoords:r}=this;t.lateral===-1?(oh(r,t.level,t.levelCoord),oh(n,t.level,[e])):oh(n[t.level],t.lateral,e),this.stackCnts[ih(e)]=t.stackCnt}findInsertion(e){let{levelCoords:t,entriesByLevel:n,strictOrder:r,stackCnts:i}=this,a=t.length,o=0,s=-1,c=-1,l=null,u=0;for(let d=0;d=o+this.getEntryThickness(e))break;let f=n[d],p,m=sh(f,e.span.start,rh),h=m[0]+m[1];for(;(p=f[h])&&p.span.starto&&(o=e,l=p,s=d,c=h),e===o&&(u=Math.max(u,i[ih(p)]+1)),h+=1}}let d=0;if(l)for(d=s+1;dn(e[i-1]))return[i,0];for(;ro)r=a+1;else return[a,1]}return[r,0]}var ch=class{constructor(e,t){this.emitter=new Op}destroy(){}setMirrorIsVisible(e){}setMirrorNeedsRevert(e){}setAutoScrollEnabled(e){}},lh={};function uh(e,t){return kd(!e||t>10?{weekday:`short`}:t>1?{weekday:`short`,month:`numeric`,day:`numeric`,omitCommas:!0}:{weekday:`long`})}var dh=`fc-col-header-cell`;function fh(e){return e.text}var ph=class extends Q{render(){let{dateEnv:e,options:t,theme:n,viewApi:r}=this.context,{props:i}=this,{date:a,dateProfile:o}=i,s=Nm(a,i.todayRange,null,o),c=[dh].concat(Pm(s,n)),l=e.format(a,i.dayHeaderFormat),u=!s.isDisabled&&i.colCnt>1?Lm(this.context,a):{},d=e.toDate(a);e.namedTimeZoneImpl&&(d=Iu(d,36e5));let f=Object.assign(Object.assign(Object.assign({date:d,view:r},i.extraRenderProps),{text:l}),s);return K(Sf,{elTag:`th`,elClasses:c,elAttrs:Object.assign({role:`columnheader`,colSpan:i.colSpan,"data-date":s.isDisabled?void 0:id(a)},i.extraDataAttrs),renderProps:f,generatorName:`dayHeaderContent`,customGenerator:t.dayHeaderContent,defaultGenerator:fh,classNameGenerator:t.dayHeaderClassNames,didMount:t.dayHeaderDidMount,willUnmount:t.dayHeaderWillUnmount},e=>K(`div`,{className:`fc-scrollgrid-sync-inner`},!s.isDisabled&&K(e,{elTag:`a`,elAttrs:u,elClasses:[`fc-col-header-cell-cushion`,i.isSticky&&`fc-sticky`]})))}},mh=kd({weekday:`long`}),hh=class extends Q{render(){let{props:e}=this,{dateEnv:t,theme:n,viewApi:r,options:i}=this.context,a=Fu(new Date(2592e5),e.dow),o={dow:e.dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},s=t.format(a,e.dayHeaderFormat),c=Object.assign(Object.assign(Object.assign(Object.assign({date:a},o),{view:r}),e.extraRenderProps),{text:s});return K(Sf,{elTag:`th`,elClasses:[dh,...Pm(o,n),...e.extraClassNames||[]],elAttrs:Object.assign({role:`columnheader`,colSpan:e.colSpan},e.extraDataAttrs),renderProps:c,generatorName:`dayHeaderContent`,customGenerator:i.dayHeaderContent,defaultGenerator:fh,classNameGenerator:i.dayHeaderClassNames,didMount:i.dayHeaderDidMount,willUnmount:i.dayHeaderWillUnmount},n=>K(`div`,{className:`fc-scrollgrid-sync-inner`},K(n,{elTag:`a`,elClasses:[`fc-col-header-cell-cushion`,e.isSticky&&`fc-sticky`],elAttrs:{"aria-label":t.format(a,mh)}})))}},gh=class extends Q{constructor(){super(...arguments),this.createDayHeaderFormatter=X(_h)}render(){let{context:e}=this,{dates:t,dateProfile:n,datesRepDistinctDays:r,renderIntro:i}=this.props,a=this.createDayHeaderFormatter(e.options.dayHeaderFormat,r,t.length);return K(Tm,{unit:`day`},(e,o)=>K(`tr`,{role:`row`},i&&i(`day`),t.map(e=>r?K(ph,{key:e.toISOString(),date:e,dateProfile:n,todayRange:o,colCnt:t.length,dayHeaderFormat:a}):K(hh,{key:e.getUTCDay(),dow:e.getUTCDay(),dayHeaderFormat:a}))))}};function _h(e,t,n){return e||uh(t,n)}var vh=class{constructor(e,t){let n=e.start,{end:r}=e,i=[],a=[],o=-1;for(;n=t.length?t[t.length-1]+1:t[n]}},yh=class{constructor(e,t){let{dates:n}=e,r,i,a;if(t){for(i=n[0].getUTCDay(),r=1;rt.groupId===e)):typeof e==`object`&&e?Ah(Hf(e,t,i)):[]}function Ah(e){let{instances:t}=e,n=[];for(let e in t)n.push(t[e].range);return n}function jh(e,t){for(let n of e)if(Nf(n,t))return!0;return!1}var Mh=/^(visible|hidden)$/,Nh=class extends Q{constructor(){super(...arguments),this.handleEl=e=>{this.el=e,gf(this.props.elRef,e)}}render(){let{props:e}=this,{liquid:t,liquidIsAbsolute:n}=e,r=t&&n,i=[`fc-scroller`];return t&&(n?i.push(`fc-scroller-liquid-absolute`):i.push(`fc-scroller-liquid`)),K(`div`,{ref:this.handleEl,className:i.join(` `),style:{overflowX:e.overflowX,overflowY:e.overflowY,left:r&&-(e.overcomeLeft||0)||``,right:r&&-(e.overcomeRight||0)||``,bottom:r&&-(e.overcomeBottom||0)||``,marginLeft:!r&&-(e.overcomeLeft||0)||``,marginRight:!r&&-(e.overcomeRight||0)||``,marginBottom:!r&&-(e.overcomeBottom||0)||``,maxHeight:e.maxHeight||``}},e.children)}needsXScrolling(){if(Mh.test(this.props.overflowX))return!1;let{el:e}=this,t=this.el.getBoundingClientRect().width-this.getYScrollbarWidth(),{children:n}=e;for(let e=0;et)return!0;return!1}needsYScrolling(){if(Mh.test(this.props.overflowY))return!1;let{el:e}=this,t=this.el.getBoundingClientRect().height-this.getXScrollbarWidth(),{children:n}=e;for(let e=0;et)return!0;return!1}getXScrollbarWidth(){return Mh.test(this.props.overflowX)?0:this.el.offsetHeight-this.el.clientHeight}getYScrollbarWidth(){return Mh.test(this.props.overflowY)?0:this.el.offsetWidth-this.el.clientWidth}},Ph=class{constructor(e){this.masterCallback=e,this.currentMap={},this.depths={},this.callbackMap={},this.handleValue=(e,t)=>{let{depths:n,currentMap:r}=this,i=!1,a=!1;e===null?(--n[t],n[t]||(delete r[t],delete this.callbackMap[t],i=!0)):(i=t in r,r[t]=e,n[t]=(n[t]||0)+1,a=!0),this.masterCallback&&(i&&this.masterCallback(null,String(t)),a&&this.masterCallback(e,String(t)))}}createRef(e){let t=this.callbackMap[e];return t||=this.callbackMap[e]=t=>{this.handleValue(t,String(e))},t}collect(e,t,n){return Qd(this.currentMap,e,t,n)}getAll(){return Gd(this.currentMap)}};function Fh(e){let t=Wl(e,`.fc-scrollgrid-shrink`),n=0;for(let e of t)n=Math.max(n,xu(e));return Math.ceil(n)}function Ih(e,t){return e.liquid&&t.liquid}function Lh(e,t){return t.maxHeight!=null||Ih(e,t)}function Rh(e,t,n,r){let{expandRows:i}=n;return typeof t.content==`function`?t.content(n):K(`table`,{role:`presentation`,className:[t.tableClassName,e.syncRowHeights?`fc-scrollgrid-sync-table`:``].join(` `),style:{minWidth:n.tableMinWidth,width:n.clientWidth,height:i?n.clientHeight:``}},n.tableColGroupNode,K(r?`thead`:`tbody`,{role:`presentation`},typeof t.rowContent==`function`?t.rowContent(n):t.rowContent))}function zh(e,t){return Mu(e,t,Kd)}function Bh(e,t){let n=[];for(let r of e){let e=r.span||1;for(let i=0;ie,zh),this.renderMicroColGroup=X(Bh),this.scrollerRefs=new Ph,this.scrollerElRefs=new Ph(this._handleScrollerEl.bind(this)),this.state={shrinkWidth:null,forceYScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{}},this.handleSizing=()=>{this.safeSetState(Object.assign({shrinkWidth:this.computeShrinkWidth()},this.computeScrollerDims()))}}render(){let{props:e,state:t,context:n}=this,r=e.sections||[],i=this.processCols(e.cols),a=this.renderMicroColGroup(i,t.shrinkWidth),o=Uh(e.liquid,n);e.collapsibleWidth&&o.push(`fc-scrollgrid-collapsible`);let s=r.length,c=0,l,u=[],d=[],f=[];for(;c{}},r);return K(r?`th`:`td`,{ref:n.elRef,role:`presentation`},K(`div`,{className:`fc-scroller-harness${l?` fc-scroller-harness-liquid`:``}`},K(Nh,{ref:this.scrollerRefs.createRef(d),elRef:this.scrollerElRefs.createRef(d),overflowY:u,overflowX:i.liquid?`hidden`:`visible`,maxHeight:e.maxHeight,liquid:l,liquidIsAbsolute:!0},f)))}_handleScrollerEl(e,t){let n=Yh(this.props.sections,t);n&&gf(n.chunk.scrollerElRef,e)}componentDidMount(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)}componentDidUpdate(){this.handleSizing()}componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing)}computeShrinkWidth(){return Hh(this.props.cols)?Fh(this.scrollerElRefs.getAll()):0}computeScrollerDims(){let e=Hm(),{scrollerRefs:t,scrollerElRefs:n}=this,r=!1,i={},a={};for(let e in t.currentMap){let n=t.currentMap[e];if(n&&n.needsYScrolling()){r=!0;break}}for(let t of this.props.sections){let o=t.key,s=n.currentMap[o];if(s){let t=s.parentNode;i[o]=Math.floor(t.getBoundingClientRect().width-(r?e.y:0)),a[o]=Math.floor(t.getBoundingClientRect().height)}}return{forceYScrollbars:r,scrollerClientWidths:i,scrollerClientHeights:a}}};Jh.addStateEquality({scrollerClientWidths:Kd,scrollerClientHeights:Kd});function Yh(e,t){for(let n of e)if(n.key===t)return n;return null}var Xh=class extends Q{constructor(){super(...arguments),this.buildPublicEvent=X((e,t,n)=>new $(e,t,n)),this.handleEl=e=>{this.el=e,gf(this.props.elRef,e),e&&Gp(e,this.props.seg)}}render(){let{props:e,context:t}=this,{options:n}=t,{seg:r}=e,{eventRange:i}=r,{ui:a}=i,o={event:this.buildPublicEvent(t,i.def,i.instance),view:t.viewApi,timeText:e.timeText,textColor:a.textColor,backgroundColor:a.backgroundColor,borderColor:a.borderColor,isDraggable:!e.disableDragging&&Zp(r,t),isStartResizable:!e.disableResizing&&Qp(r,t),isEndResizable:!e.disableResizing&&$p(r),isMirror:!!(e.isDragging||e.isResizing||e.isDateSelecting),isStart:!!r.isStart,isEnd:!!r.isEnd,isPast:!!e.isPast,isFuture:!!e.isFuture,isToday:!!e.isToday,isSelected:!!e.isSelected,isDragging:!!e.isDragging,isResizing:!!e.isResizing};return K(Sf,{elRef:this.handleEl,elTag:e.elTag,elAttrs:e.elAttrs,elClasses:[...nm(o),...r.eventRange.ui.classNames,...e.elClasses||[]],elStyle:e.elStyle,renderProps:o,generatorName:`eventContent`,customGenerator:n.eventContent,defaultGenerator:e.defaultGenerator,classNameGenerator:n.eventClassNames,didMount:n.eventDidMount,willUnmount:n.eventWillUnmount},e.children)}componentDidUpdate(e){this.el&&this.props.seg!==e.seg&&Gp(this.el,this.props.seg)}},Zh=class extends Q{render(){let{props:e,context:t}=this,{options:n}=t,{seg:r}=e,{ui:i}=r.eventRange,a=em(r,n.eventTimeFormat||e.defaultTimeFormat,t,e.defaultDisplayEventTime,e.defaultDisplayEventEnd);return K(Xh,Object.assign({},e,{elTag:`a`,elStyle:{borderColor:i.borderColor,backgroundColor:i.backgroundColor},elAttrs:im(r,t),defaultGenerator:Qh,timeText:a}),(e,t)=>K(q,null,K(e,{elTag:`div`,elClasses:[`fc-event-main`],elStyle:{color:t.textColor}}),!!t.isStartResizable&&K(`div`,{className:`fc-event-resizer fc-event-resizer-start`}),!!t.isEndResizable&&K(`div`,{className:`fc-event-resizer fc-event-resizer-end`})))}};Zh.addPropsEquality({seg:Kd});function Qh(e){return K(`div`,{className:`fc-event-main-frame`},e.timeText&&K(`div`,{className:`fc-event-time`},e.timeText),K(`div`,{className:`fc-event-title-container`},K(`div`,{className:`fc-event-title fc-sticky`},e.event.title||K(q,null,`\xA0`))))}var $h=kd({day:`numeric`}),eg=class extends Q{constructor(){super(...arguments),this.refineRenderProps=sd(ng)}render(){let{props:e,context:t}=this,{options:n}=t,r=this.refineRenderProps({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,isMonthStart:e.isMonthStart||!1,showDayNumber:e.showDayNumber,extraRenderProps:e.extraRenderProps,viewApi:t.viewApi,dateEnv:t.dateEnv,monthStartFormat:n.monthStartFormat});return K(Sf,{elRef:e.elRef,elTag:e.elTag,elAttrs:Object.assign(Object.assign({},e.elAttrs),r.isDisabled?{}:{"data-date":id(e.date)}),elClasses:[...Pm(r,t.theme),...e.elClasses||[]],elStyle:e.elStyle,renderProps:r,generatorName:`dayCellContent`,customGenerator:n.dayCellContent,defaultGenerator:e.defaultGenerator,classNameGenerator:r.isDisabled?void 0:n.dayCellClassNames,didMount:n.dayCellDidMount,willUnmount:n.dayCellWillUnmount},e.children)}};function tg(e){return!!(e.dayCellContent||vf(`dayCellContent`,e))}function ng(e){let{date:t,dateEnv:n,dateProfile:r,isMonthStart:i}=e,a=Nm(t,e.todayRange,null,r),o=e.showDayNumber?n.format(t,i?e.monthStartFormat:$h):``;return Object.assign(Object.assign(Object.assign({date:n.toDate(t),view:e.viewApi},a),{isMonthStart:i,dayNumberText:o}),e.extraRenderProps)}var rg=class extends Q{render(){let{props:e}=this,{seg:t}=e;return K(Xh,{elTag:`div`,elClasses:[`fc-bg-event`],elStyle:{backgroundColor:t.eventRange.ui.backgroundColor},defaultGenerator:ig,seg:t,timeText:``,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday,disableDragging:!0,disableResizing:!0})}};function ig(e){let{title:t}=e.event;return t&&K(`div`,{className:`fc-event-title`},e.event.title)}function ag(e){return K(`div`,{className:`fc-${e}`})}var og=e=>K(df.Consumer,null,t=>{let{dateEnv:n,options:r}=t,{date:i}=e,a=r.weekNumberFormat||e.defaultFormat,o={num:n.computeWeekNumber(i),text:n.format(i,a),date:i};return K(Sf,{elRef:e.elRef,elTag:e.elTag,elAttrs:e.elAttrs,elClasses:e.elClasses,elStyle:e.elStyle,renderProps:o,generatorName:`weekNumberContent`,customGenerator:r.weekNumberContent,defaultGenerator:sg,classNameGenerator:r.weekNumberClassNames,didMount:r.weekNumberDidMount,willUnmount:r.weekNumberWillUnmount},e.children)});function sg(e){return e.text}var cg=10,lg=class extends Q{constructor(){super(...arguments),this.state={titleId:Xl()},this.handleRootEl=e=>{this.rootEl=e,this.props.elRef&&gf(this.props.elRef,e)},this.handleDocumentMouseDown=e=>{let t=Jl(e);this.rootEl.contains(t)||this.handleCloseClick()},this.handleDocumentKeyDown=e=>{e.key===`Escape`&&this.handleCloseClick()},this.handleCloseClick=()=>{let{onClose:e}=this.props;e&&e()}}render(){let{theme:e,options:t}=this.context,{props:n,state:r}=this,i=[`fc-popover`,e.getClass(`popover`)].concat(n.extraClassNames||[]);return vl(K(`div`,Object.assign({},n.extraAttrs,{id:n.id,className:i.join(` `),"aria-labelledby":r.titleId,ref:this.handleRootEl}),K(`div`,{className:`fc-popover-header `+e.getClass(`popoverHeader`)},K(`span`,{className:`fc-popover-title`,id:r.titleId},n.title),K(`span`,{className:`fc-popover-close `+e.getIconClass(`close`),title:t.closeHint,onClick:this.handleCloseClick})),K(`div`,{className:`fc-popover-body `+e.getClass(`popoverContent`)},n.children)),n.parentEl)}componentDidMount(){document.addEventListener(`mousedown`,this.handleDocumentMouseDown),document.addEventListener(`keydown`,this.handleDocumentKeyDown),this.updateSize()}componentWillUnmount(){document.removeEventListener(`mousedown`,this.handleDocumentMouseDown),document.removeEventListener(`keydown`,this.handleDocumentKeyDown)}updateSize(){let{isRtl:e}=this.context,{alignmentEl:t,alignGridTop:n}=this.props,{rootEl:r}=this,i=Jm(t);if(i){let a=r.getBoundingClientRect(),o=n?Hl(t,`.fc-scrollgrid`).getBoundingClientRect().top:i.top,s=e?i.right-a.width:i.left;o=Math.max(o,cg),s=Math.min(s,document.documentElement.clientWidth-cg-a.width),s=Math.max(s,cg);let c=r.offsetParent.getBoundingClientRect();Kl(r,{top:o-c.top,left:s-c.left})}}},ug=class extends th{constructor(){super(...arguments),this.handleRootEl=e=>{this.rootEl=e,e?this.context.registerInteractiveComponent(this,{el:e,useEventCenter:!1}):this.context.unregisterInteractiveComponent(this)}}render(){let{options:e,dateEnv:t}=this.context,{props:n}=this,{startDate:r,todayRange:i,dateProfile:a}=n,o=t.format(r,e.dayPopoverFormat);return K(eg,{elRef:this.handleRootEl,date:r,dateProfile:a,todayRange:i},(t,r,i)=>K(lg,{elRef:i.ref,id:n.id,title:o,extraClassNames:[`fc-more-popover`].concat(i.className||[]),extraAttrs:i,parentEl:n.parentEl,alignmentEl:n.alignmentEl,alignGridTop:n.alignGridTop,onClose:n.onClose},tg(e)&&K(t,{elTag:`div`,elClasses:[`fc-more-popover-misc`]}),n.children))}queryHit(e,t,n,r){let{rootEl:i,props:a}=this;return e>=0&&e=0&&t{this.linkEl=e,this.props.elRef&&gf(this.props.elRef,e)},this.handleClick=e=>{let{props:t,context:n}=this,{moreLinkClick:r}=n.options,i=pg(t).start;function a(e){let{def:t,instance:r,range:i}=e.eventRange;return{event:new $(n,t,r),start:n.dateEnv.toDate(i.start),end:n.dateEnv.toDate(i.end),isStart:e.isStart,isEnd:e.isEnd}}typeof r==`function`&&(r=r({date:i,allDay:!!t.allDayDate,allSegs:t.allSegs.map(a),hiddenSegs:t.hiddenSegs.map(a),jsEvent:e,view:n.viewApi})),!r||r===`popover`?this.setState({isPopoverOpen:!0}):typeof r==`string`&&n.calendarApi.zoomTo(i,r)},this.handlePopoverClose=()=>{this.setState({isPopoverOpen:!1})}}render(){let{props:e,state:t}=this;return K(df.Consumer,null,n=>{let{viewApi:r,options:i,calendarApi:a}=n,{moreLinkText:o}=i,{moreCnt:s}=e,c=pg(e),l=typeof o==`function`?o.call(a,s):`+${s} ${o}`,u=vu(i.moreLinkHint,[s],l),d={num:s,shortText:`+${s}`,text:l,view:r};return K(q,null,!!e.moreCnt&&K(Sf,{elTag:e.elTag||`a`,elRef:this.handleLinkEl,elClasses:[...e.elClasses||[],`fc-more-link`],elStyle:e.elStyle,elAttrs:Object.assign(Object.assign(Object.assign({},e.elAttrs),ru(this.handleClick)),{title:u,"aria-expanded":t.isPopoverOpen,"aria-controls":t.isPopoverOpen?t.popoverId:``}),renderProps:d,generatorName:`moreLinkContent`,customGenerator:i.moreLinkContent,defaultGenerator:e.defaultGenerator||fg,classNameGenerator:i.moreLinkClassNames,didMount:i.moreLinkDidMount,willUnmount:i.moreLinkWillUnmount},e.children),t.isPopoverOpen&&K(ug,{id:t.popoverId,startDate:c.start,endDate:c.end,dateProfile:e.dateProfile,todayRange:e.todayRange,extraDateSpan:e.extraDateSpan,parentEl:this.parentEl,alignmentEl:e.alignmentElRef?e.alignmentElRef.current:this.linkEl,alignGridTop:e.alignGridTop,forceTimed:e.forceTimed,onClose:this.handlePopoverClose},e.popoverContent()))})}componentDidMount(){this.updateParentEl()}componentDidUpdate(){this.updateParentEl()}updateParentEl(){this.linkEl&&(this.parentEl=Hl(this.linkEl,`.fc-view-harness`))}};function fg(e){return e.text}function pg(e){if(e.allDayDate)return{start:e.allDayDate,end:Fu(e.allDayDate,1)};let{hiddenSegs:t}=e;return{start:mg(t),end:gg(t)}}function mg(e){return e.reduce(hg).eventRange.range.start}function hg(e,t){return e.eventRange.range.startt.eventRange.range.end?e:t}var vg=class{constructor(){this.handlers=[]}set(e){this.currentValue=e;for(let t of this.handlers)t(e)}subscribe(e){this.handlers.push(e),this.currentValue!==void 0&&e(this.currentValue)}},yg=class extends vg{constructor(){super(...arguments),this.map=new Map}handle(e){let{map:t}=this,n=!1;e.isActive?(t.set(e.id,e),n=!0):t.has(e.id)&&(t.delete(e.id),n=!0),n&&this.set(t)}},bg=[],xg={code:`en`,week:{dow:0,doy:4},direction:`ltr`,buttonText:{prev:`prev`,next:`next`,prevYear:`prev year`,nextYear:`next year`,year:`year`,today:`today`,month:`month`,week:`week`,day:`day`,list:`list`},weekText:`W`,weekTextLong:`Week`,closeHint:`Close`,timeHint:`Time`,eventHint:`Event`,allDayText:`all-day`,moreLinkText:`more`,noEventsText:`No events to display`},Sg=Object.assign(Object.assign({},xg),{buttonHints:{prev:`Previous $0`,next:`Next $0`,today(e,t){return t===`day`?`Today`:`This ${e}`}},viewHint:`$0 view`,navLinkHint:`Go to $0`,moreLinkHint(e){return`Show ${e} more event${e===1?``:`s`}`}});function Cg(e){let t=e.length>0?e[0].code:`en`,n=bg.concat(e),r={en:Sg};for(let e of n)r[e.code]=e;return{map:r,defaultCode:t}}function wg(e,t){return typeof e==`object`&&!Array.isArray(e)?Dg(e.code,[e.code],e):Tg(e,t)}function Tg(e,t){let n=[].concat(e||[]);return Dg(e,n,Eg(n,t)||Sg)}function Eg(e,t){for(let n=0;n0;--e){let n=r.slice(0,e).join(`-`);if(t[n])return t[n]}}return null}function Dg(e,t,n){let r=Vd([xg,n],[`buttonText`]);delete r.code;let{week:i}=r;return delete r.week,{codeArg:e,codes:t,week:i,simpleNumberFormat:new Intl.NumberFormat(e),options:r}}function Og(e){return{id:ou(),name:e.name,premiumReleaseDate:e.premiumReleaseDate?new Date(e.premiumReleaseDate):void 0,deps:e.deps||[],reducers:e.reducers||[],isLoadingFuncs:e.isLoadingFuncs||[],contextInit:[].concat(e.contextInit||[]),eventRefiners:e.eventRefiners||{},eventDefMemberAdders:e.eventDefMemberAdders||[],eventSourceRefiners:e.eventSourceRefiners||{},isDraggableTransformers:e.isDraggableTransformers||[],eventDragMutationMassagers:e.eventDragMutationMassagers||[],eventDefMutationAppliers:e.eventDefMutationAppliers||[],dateSelectionTransformers:e.dateSelectionTransformers||[],datePointTransforms:e.datePointTransforms||[],dateSpanTransforms:e.dateSpanTransforms||[],views:e.views||{},viewPropsTransformers:e.viewPropsTransformers||[],isPropsValid:e.isPropsValid||null,externalDefTransforms:e.externalDefTransforms||[],viewContainerAppends:e.viewContainerAppends||[],eventDropTransformers:e.eventDropTransformers||[],componentInteractions:e.componentInteractions||[],calendarInteractions:e.calendarInteractions||[],themeClasses:e.themeClasses||{},eventSourceDefs:e.eventSourceDefs||[],cmdFormatter:e.cmdFormatter,recurringTypes:e.recurringTypes||[],namedTimeZonedImpl:e.namedTimeZonedImpl,initialView:e.initialView||``,elementDraggingImpl:e.elementDraggingImpl,optionChangeHandlers:e.optionChangeHandlers||{},scrollGridImpl:e.scrollGridImpl||null,listenerRefiners:e.listenerRefiners||{},optionRefiners:e.optionRefiners||{},propSetHandlers:e.propSetHandlers||{}}}function kg(e,t){let n={},r={premiumReleaseDate:void 0,reducers:[],isLoadingFuncs:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],themeClasses:{},eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],namedTimeZonedImpl:null,initialView:``,elementDraggingImpl:null,optionChangeHandlers:{},scrollGridImpl:null,listenerRefiners:{},optionRefiners:{},propSetHandlers:{}};function i(e){for(let t of e){let e=t.name,a=n[e];a===void 0?(n[e]=t.id,i(t.deps),r=jg(r,t)):a!==t.id&&console.warn(`Duplicate plugin '${e}'`)}}return e&&i(e),i(t),r}function Ag(){let e=[],t=[],n;return(r,i)=>((!n||!Mu(r,e)||!Mu(i,t))&&(n=kg(r,i)),e=r,t=i,n)}function jg(e,t){return{premiumReleaseDate:Mg(e.premiumReleaseDate,t.premiumReleaseDate),reducers:e.reducers.concat(t.reducers),isLoadingFuncs:e.isLoadingFuncs.concat(t.isLoadingFuncs),contextInit:e.contextInit.concat(t.contextInit),eventRefiners:Object.assign(Object.assign({},e.eventRefiners),t.eventRefiners),eventDefMemberAdders:e.eventDefMemberAdders.concat(t.eventDefMemberAdders),eventSourceRefiners:Object.assign(Object.assign({},e.eventSourceRefiners),t.eventSourceRefiners),isDraggableTransformers:e.isDraggableTransformers.concat(t.isDraggableTransformers),eventDragMutationMassagers:e.eventDragMutationMassagers.concat(t.eventDragMutationMassagers),eventDefMutationAppliers:e.eventDefMutationAppliers.concat(t.eventDefMutationAppliers),dateSelectionTransformers:e.dateSelectionTransformers.concat(t.dateSelectionTransformers),datePointTransforms:e.datePointTransforms.concat(t.datePointTransforms),dateSpanTransforms:e.dateSpanTransforms.concat(t.dateSpanTransforms),views:Object.assign(Object.assign({},e.views),t.views),viewPropsTransformers:e.viewPropsTransformers.concat(t.viewPropsTransformers),isPropsValid:t.isPropsValid||e.isPropsValid,externalDefTransforms:e.externalDefTransforms.concat(t.externalDefTransforms),viewContainerAppends:e.viewContainerAppends.concat(t.viewContainerAppends),eventDropTransformers:e.eventDropTransformers.concat(t.eventDropTransformers),calendarInteractions:e.calendarInteractions.concat(t.calendarInteractions),componentInteractions:e.componentInteractions.concat(t.componentInteractions),themeClasses:Object.assign(Object.assign({},e.themeClasses),t.themeClasses),eventSourceDefs:e.eventSourceDefs.concat(t.eventSourceDefs),cmdFormatter:t.cmdFormatter||e.cmdFormatter,recurringTypes:e.recurringTypes.concat(t.recurringTypes),namedTimeZonedImpl:t.namedTimeZonedImpl||e.namedTimeZonedImpl,initialView:e.initialView||t.initialView,elementDraggingImpl:e.elementDraggingImpl||t.elementDraggingImpl,optionChangeHandlers:Object.assign(Object.assign({},e.optionChangeHandlers),t.optionChangeHandlers),scrollGridImpl:t.scrollGridImpl||e.scrollGridImpl,listenerRefiners:Object.assign(Object.assign({},e.listenerRefiners),t.listenerRefiners),optionRefiners:Object.assign(Object.assign({},e.optionRefiners),t.optionRefiners),propSetHandlers:Object.assign(Object.assign({},e.propSetHandlers),t.propSetHandlers)}}function Mg(e,t){return e===void 0?t:t===void 0?e:new Date(Math.max(e.valueOf(),t.valueOf()))}var Ng=class extends of{};Ng.prototype.classes={root:`fc-theme-standard`,tableCellShaded:`fc-cell-shaded`,buttonGroup:`fc-button-group`,button:`fc-button fc-button-primary`,buttonActive:`fc-button-active`},Ng.prototype.baseIconClass=`fc-icon`,Ng.prototype.iconClasses={close:`fc-icon-x`,prev:`fc-icon-chevron-left`,next:`fc-icon-chevron-right`,prevYear:`fc-icon-chevrons-left`,nextYear:`fc-icon-chevrons-right`},Ng.prototype.rtlIconClasses={prev:`fc-icon-chevron-right`,next:`fc-icon-chevron-left`,prevYear:`fc-icon-chevrons-right`,nextYear:`fc-icon-chevrons-left`},Ng.prototype.iconOverrideOption=`buttonIcons`,Ng.prototype.iconOverrideCustomButtonOption=`icon`,Ng.prototype.iconOverridePrefix=`fc-icon-`;function Pg(e,t){let n={},r;for(r in e)Fg(r,n,e,t);for(r in t)Fg(r,n,e,t);return n}function Fg(e,t,n,r){if(t[e])return t[e];let i=Ig(e,t,n,r);return i&&(t[e]=i),i}function Ig(e,t,n,r){let i=n[e],a=r[e],o=e=>i&&i[e]!==null?i[e]:a&&a[e]!==null?a[e]:null,s=o(`component`),c=o(`superType`),l=null;if(c){if(c===e)throw Error(`Can't have a custom view type that references itself`);l=Fg(c,t,n,r)}return!s&&l&&(s=l.component),s?{type:e,component:s,defaults:Object.assign(Object.assign({},l?l.defaults:{}),i?i.rawOptions:{}),overrides:Object.assign(Object.assign({},l?l.overrides:{}),a?a.rawOptions:{})}:null}function Lg(e){return Ud(e,Rg)}function Rg(e){let t=typeof e==`function`?{component:e}:e,{component:n}=t;return t.content?n=zg(t):n&&!(n.prototype instanceof Q)&&(n=zg(Object.assign(Object.assign({},t),{content:n}))),{superType:t.type,component:n,rawOptions:t}}function zg(e){return t=>K(df.Consumer,null,n=>K(Sf,{elTag:`div`,elClasses:Ef(n.viewSpec),renderProps:Object.assign(Object.assign({},t),{nextDayThreshold:n.options.nextDayThreshold}),generatorName:void 0,customGenerator:e.content,classNameGenerator:e.classNames,didMount:e.didMount,willUnmount:e.willUnmount}))}function Bg(e,t,n,r){let i=Lg(e),a=Lg(t.views);return Ud(Pg(i,a),e=>Vg(e,a,t,n,r))}function Vg(e,t,n,r,i){let a=e.overrides.duration||e.defaults.duration||r.duration||n.duration,o=null,s=``,c=``,l={};if(a&&(o=Ug(a),o)){let e=ju(o);s=e.unit,e.value===1&&(c=s,l=t[s]?t[s].rawOptions:{})}let u=t=>{let n=t.buttonText||{},r=e.defaults.buttonTextKey;return r!=null&&n[r]!=null?n[r]:n[e.type]==null?n[c]==null?null:n[c]:n[e.type]},d=t=>{let n=t.buttonHints||{},r=e.defaults.buttonTextKey;return r!=null&&n[r]!=null?n[r]:n[e.type]==null?n[c]==null?null:n[c]:n[e.type]};return{type:e.type,component:e.component,duration:o,durationUnit:s,singleUnit:c,optionDefaults:e.defaults,optionOverrides:Object.assign(Object.assign({},l),e.overrides),buttonTextOverride:u(r)||u(n)||e.overrides.buttonText,buttonTextDefault:u(i)||e.defaults.buttonText||u(jd)||e.type,buttonTitleOverride:d(r)||d(n)||e.overrides.buttonHint,buttonTitleDefault:d(i)||e.defaults.buttonHint||d(jd)}}var Hg={};function Ug(e){let t=JSON.stringify(e),n=Hg[t];return n===void 0&&(n=J(e),Hg[t]=n),n}function Wg(e,t){return t.type===`CHANGE_VIEW_TYPE`&&(e=t.viewType),e}function Gg(e,t){switch(t.type){case`CHANGE_DATE`:return t.dateMarker;default:return e}}function Kg(e,t,n){let r=e.initialDate;return r==null?n.getDateMarker():t.createMarker(r)}function qg(e,t){switch(t.type){case`SET_OPTION`:return Object.assign(Object.assign({},e),{[t.optionName]:t.rawOptionValue});default:return e}}function Jg(e,t,n,r){let i;switch(t.type){case`CHANGE_VIEW_TYPE`:return r.build(t.dateMarker||n);case`CHANGE_DATE`:return r.build(t.dateMarker);case`PREV`:if(i=r.buildPrev(e,n),i.isValid)return i;break;case`NEXT`:if(i=r.buildNext(e,n),i.isValid)return i}return e}function Yg(e,t,n){let r=t?t.activeRange:null;return $g({},s_(e,n),r,n)}function Xg(e,t,n,r){let i=n?n.activeRange:null;switch(t.type){case`ADD_EVENT_SOURCES`:return $g(e,t.sources,i,r);case`REMOVE_EVENT_SOURCE`:return e_(e,t.sourceId);case`PREV`:case`NEXT`:case`CHANGE_DATE`:case`CHANGE_VIEW_TYPE`:return n?t_(e,i,r):e;case`FETCH_EVENT_SOURCES`:return r_(e,t.sourceIds?Wd(t.sourceIds):o_(e,r),i,t.isRefetch||!1,r);case`RECEIVE_EVENTS`:case`RECEIVE_EVENT_ERROR`:return a_(e,t.sourceId,t.fetchId,t.fetchRange);case`REMOVE_ALL_EVENT_SOURCES`:return{};default:return e}}function Zg(e,t,n){let r=t?t.activeRange:null;return r_(e,o_(e,n),r,!0,n)}function Qg(e){for(let t in e)if(e[t].isFetching)return!0;return!1}function $g(e,t,n,r){let i={};for(let e of t)i[e.sourceId]=e;return n&&(i=t_(i,n,r)),Object.assign(Object.assign({},e),i)}function e_(e,t){return Hd(e,e=>e.sourceId!==t)}function t_(e,t,n){return r_(e,Hd(e,e=>n_(e,t,n)),t,!1,n)}function n_(e,t,n){return c_(e,n)?!n.options.lazyFetching||!e.fetchRange||e.isFetching||t.starte.fetchRange.end:!e.latestFetchId}function r_(e,t,n,r,i){let a={};for(let o in e){let s=e[o];a[o]=t[o]?i_(s,n,r,i):s}return a}function i_(e,t,n,r){let{options:i,calendarApi:a}=r,o=r.pluginHooks.eventSourceDefs[e.sourceDefId],s=ou();return o.fetch({eventSource:e,range:t,isRefetch:n,context:r},n=>{let{rawEvents:o}=n;i.eventSourceSuccess&&(o=i.eventSourceSuccess.call(a,o,n.response)||o),e.success&&(o=e.success.call(a,o,n.response)||o),r.dispatch({type:`RECEIVE_EVENTS`,sourceId:e.sourceId,fetchId:s,fetchRange:t,rawEvents:o})},n=>{let o=!1;i.eventSourceFailure&&(i.eventSourceFailure.call(a,n),o=!0),e.failure&&(e.failure(n),o=!0),o||console.warn(n.message,n),r.dispatch({type:`RECEIVE_EVENT_ERROR`,sourceId:e.sourceId,fetchId:s,fetchRange:t,error:n})}),Object.assign(Object.assign({},e),{isFetching:!0,latestFetchId:s})}function a_(e,t,n,r){let i=e[t];return i&&n===i.latestFetchId?Object.assign(Object.assign({},e),{[t]:Object.assign(Object.assign({},i),{isFetching:!1,fetchRange:r})}):e}function o_(e,t){return Hd(e,e=>c_(e,t))}function s_(e,t){let n=gp(t),r=[].concat(e.eventSources||[]),i=[];e.initialEvents&&r.unshift(e.initialEvents),e.events&&r.unshift(e.events);for(let e of r){let r=hp(e,t,n);r&&i.push(r)}return i}function c_(e,t){return!t.pluginHooks.eventSourceDefs[e.sourceDefId].ignoreRange}function l_(e,t){switch(t.type){case`UNSELECT_DATES`:return null;case`SELECT_DATES`:return t.selection;default:return e}}function u_(e,t){switch(t.type){case`UNSELECT_EVENT`:return``;case`SELECT_EVENT`:return t.eventInstanceId;default:return e}}function d_(e,t){let n;switch(t.type){case`UNSET_EVENT_DRAG`:return null;case`SET_EVENT_DRAG`:return n=t.state,{affectedEvents:n.affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function f_(e,t){let n;switch(t.type){case`UNSET_EVENT_RESIZE`:return null;case`SET_EVENT_RESIZE`:return n=t.state,{affectedEvents:n.affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function p_(e,t,n,r,i){return{header:e.headerToolbar?m_(e.headerToolbar,e,t,n,r,i):null,footer:e.footerToolbar?m_(e.footerToolbar,e,t,n,r,i):null}}function m_(e,t,n,r,i,a){let o={},s=[],c=!1;for(let l in e){let u=e[l],d=h_(u,t,n,r,i,a);o[l]=d.widgets,s.push(...d.viewsWithButtons),c||=d.hasTitle}return{sectionWidgets:o,viewsWithButtons:s,hasTitle:c}}function h_(e,t,n,r,i,a){let o=t.direction===`rtl`,s=t.customButtons||{},c=n.buttonText||{},l=t.buttonText||{},u=n.buttonHints||{},d=t.buttonHints||{},f=e?e.split(` `):[],p=[],m=!1;return{widgets:f.map(e=>e.split(`,`).map(e=>{if(e===`title`)return m=!0,{buttonName:e};let n,f,h,g,_,v;if(n=s[e])h=e=>{n.click&&n.click.call(e.target,e,e.target)},(g=r.getCustomButtonIconClass(n))||(g=r.getIconClass(e,o))||(_=n.text),v=n.hint||n.text;else if(f=i[e]){p.push(e),h=()=>{a.changeView(e)},(_=f.buttonTextOverride)||(g=r.getIconClass(e,o))||(_=f.buttonTextDefault);let n=f.buttonTextOverride||f.buttonTextDefault;v=vu(f.buttonTitleOverride||f.buttonTitleDefault||t.viewHint,[n,e],n)}else if(a[e]){if(h=()=>{a[e]()},(_=c[e])||(g=r.getIconClass(e,o))||(_=l[e]),e===`prevYear`||e===`nextYear`){let t=e===`prevYear`?`prev`:`next`;v=vu(u[t]||d[t],[l.year||`year`,`year`],l[e])}else v=t=>vu(u[e]||d[e],[l[t]||t,t],l[e])}return{buttonName:e,buttonClick:h,buttonIcon:g,buttonText:_,buttonHint:v}})),viewsWithButtons:p,hasTitle:m}}var g_=class{constructor(e,t,n){this.type=e,this.getCurrentData=t,this.dateEnv=n}get calendar(){return this.getCurrentData().calendarApi}get title(){return this.getCurrentData().viewTitle}get activeStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)}get activeEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)}get currentStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)}get currentEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)}getOption(e){return this.getCurrentData().options[e]}},__=Og({name:`array-event-source`,eventSourceDefs:[{ignoreRange:!0,parseMeta(e){return Array.isArray(e.events)?e.events:null},fetch(e,t){t({rawEvents:e.eventSource.meta})}}]}),v_=Og({name:`func-event-source`,eventSourceDefs:[{parseMeta(e){return typeof e.events==`function`?e.events:null},fetch(e,t,n){let{dateEnv:r}=e.context,i=e.eventSource.meta;mm(i.bind(null,dm(e.range,r)),e=>t({rawEvents:e}),n)}}]}),y_=Og({name:`json-event-source`,eventSourceRefiners:{method:String,extraParams:Z,startParam:String,endParam:String,timeZoneParam:String},eventSourceDefs:[{parseMeta(e){return e.url&&(e.format===`json`||!e.format)?{url:e.url,format:`json`,method:(e.method||`GET`).toUpperCase(),extraParams:e.extraParams,startParam:e.startParam,endParam:e.endParam,timeZoneParam:e.timeZoneParam}:null},fetch(e,t,n){let{meta:r}=e.eventSource,i=b_(r,e.range,e.context);gm(r.method,r.url,i).then(([e,n])=>{t({rawEvents:e,response:n})},n)}}]});function b_(e,t,n){let{dateEnv:r,options:i}=n,a,o,s,c,l={};return a=e.startParam,a??=i.startParam,o=e.endParam,o??=i.endParam,s=e.timeZoneParam,s??=i.timeZoneParam,c=typeof e.extraParams==`function`?e.extraParams():e.extraParams||{},Object.assign(l,c),l[a]=r.formatIso(t.start),l[o]=r.formatIso(t.end),r.timeZone!==`local`&&(l[s]=r.timeZone),l}var x_=Og({name:`simple-recurring-event`,recurringTypes:[{parse(e,t){if(e.daysOfWeek||e.startTime||e.endTime||e.startRecur||e.endRecur){let n={daysOfWeek:e.daysOfWeek||null,startTime:e.startTime||null,endTime:e.endTime||null,startRecur:e.startRecur?t.createMarker(e.startRecur):null,endRecur:e.endRecur?t.createMarker(e.endRecur):null,dateEnv:t},r;return e.duration&&(r=e.duration),!r&&e.startTime&&e.endTime&&(r=Eu(e.endTime,e.startTime)),{allDayGuess:!e.startTime&&!e.endTime,duration:r,typeData:n}}return null},expand(e,t,n){let r=Af(t,{start:e.startRecur,end:e.endRecur});return r?S_(e.daysOfWeek,e.startTime,e.dateEnv,n,r):[]}}],eventRefiners:{daysOfWeek:Z,startTime:J,endTime:J,duration:J,startRecur:Z,endRecur:Z}});function S_(e,t,n,r,i){let a=e?Wd(e):null,o=Y(i.start),s=i.end,c=[];for(t&&(t.milliseconds<0?s=Fu(s,1):t.milliseconds>=864e5&&(o=Fu(o,-1)));oQg(e.eventSources)],propSetHandlers:{dateProfile:T_,eventStore:E_}})],O_=class{constructor(e,t){this.runTaskOption=e,this.drainedOption=t,this.queue=[],this.delayedRunner=new Bl(this.drain.bind(this))}request(e,t){this.queue.push(e),this.delayedRunner.request(t)}pause(e){this.delayedRunner.pause(e)}resume(e,t){this.delayedRunner.resume(e,t)}drain(){let{queue:e}=this;for(;e.length;){let t=[],n;for(;n=e.shift();)this.runTask(n),t.push(n);this.drained(t)}}runTask(e){this.runTaskOption&&this.runTaskOption(e)}drained(e){this.drainedOption&&this.drainedOption(e)}};function k_(e,t,n){let r;return r=/^(year|month)$/.test(e.currentRangeUnit)?e.currentRange:e.activeRange,n.formatRange(r.start,r.end,kd(t.titleFormat||A_(e)),{isEndExclusive:e.isRangeAllDay,defaultSeparator:t.titleRangeSeparator})}function A_(e){let{currentRangeUnit:t}=e;if(t===`year`)return{year:`numeric`};if(t===`month`)return{year:`numeric`,month:`long`};let n=Wu(e.currentRange.start,e.currentRange.end);return n!==null&&n>1?{year:`numeric`,month:`short`,day:`numeric`}:{year:`numeric`,month:`long`,day:`numeric`}}var j_=class{constructor(){this.resetListeners=new Set}handleInput(e,t){let n=this.dateEnv;if(e!==n&&(typeof t==`function`?this.nowFn=t:n||(this.nowAnchorDate=e.toDate(t?e.createMarker(t):e.createNowMarker()),this.nowAnchorQueried=Date.now()),this.dateEnv=e,n))for(let e of this.resetListeners.values())e()}getDateMarker(){return this.nowAnchorDate?this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf()+(Date.now()-this.nowAnchorQueried)):this.dateEnv.createMarker(this.nowFn())}addResetListener(e){this.resetListeners.add(e)}removeResetListener(e){this.resetListeners.delete(e)}},M_=class{constructor(e){this.computeCurrentViewData=X(this._computeCurrentViewData),this.organizeRawLocales=X(Cg),this.buildLocale=X(wg),this.buildPluginHooks=Ag(),this.buildDateEnv=X(N_),this.buildTheme=X(P_),this.parseToolbars=X(p_),this.buildViewSpecs=X(Bg),this.buildDateProfileGenerator=sd(F_),this.buildViewApi=X(I_),this.buildViewUiProps=sd(z_),this.buildEventUiBySource=X(L_,Kd),this.buildEventUiBases=X(R_),this.parseContextBusinessHours=sd(V_),this.buildTitle=X(k_),this.nowManager=new j_,this.emitter=new Op,this.actionRunner=new O_(this._handleAction.bind(this),this.updateData.bind(this)),this.currentCalendarOptionsInput={},this.currentCalendarOptionsRefined={},this.currentViewOptionsInput={},this.currentViewOptionsRefined={},this.currentCalendarOptionsRefiners={},this.optionsForRefining=[],this.optionsForHandling=[],this.getCurrentData=()=>this.data,this.dispatch=e=>{this.actionRunner.request(e)},this.props=e,this.actionRunner.pause(),this.nowManager=new j_;let t={},n=this.computeOptionsData(e.optionOverrides,t,e.calendarApi),r=n.calendarOptions.initialView||n.pluginHooks.initialView,i=this.computeCurrentViewData(r,n,e.optionOverrides,t);e.calendarApi.currentDataManager=this,this.emitter.setThisContext(e.calendarApi),this.emitter.setOptions(i.options);let a={nowManager:this.nowManager,dateEnv:n.dateEnv,options:n.calendarOptions,pluginHooks:n.pluginHooks,calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},o=Kg(n.calendarOptions,n.dateEnv,this.nowManager),s=i.dateProfileGenerator.build(o);Pf(s.activeRange,o)||(o=s.currentRange.start);for(let e of n.pluginHooks.contextInit)e(a);let c=Yg(n.calendarOptions,s,a),l={dynamicOptionOverrides:t,currentViewType:r,currentDate:o,dateProfile:s,businessHours:this.parseContextBusinessHours(a),eventSources:c,eventUiBases:{},eventStore:rp(),renderableEventStore:rp(),dateSelection:null,eventSelection:``,eventDrag:null,eventResize:null,selectionConfig:this.buildViewUiProps(a).selectionConfig},u=Object.assign(Object.assign({},a),l);for(let e of n.pluginHooks.reducers)Object.assign(l,e(null,null,u));B_(l,a)&&this.emitter.trigger(`loading`,!0),this.state=l,this.updateData(),this.actionRunner.resume()}resetOptions(e,t){let{props:n}=this;t===void 0?n.optionOverrides=e:(n.optionOverrides=Object.assign(Object.assign({},n.optionOverrides||{}),e),this.optionsForRefining.push(...t)),(t===void 0||t.length)&&this.actionRunner.request({type:`NOTHING`})}_handleAction(e){let{props:t,state:n,emitter:r}=this,i=qg(n.dynamicOptionOverrides,e),a=this.computeOptionsData(t.optionOverrides,i,t.calendarApi),o=Wg(n.currentViewType,e),s=this.computeCurrentViewData(o,a,t.optionOverrides,i);t.calendarApi.currentDataManager=this,r.setThisContext(t.calendarApi),r.setOptions(s.options);let c={nowManager:this.nowManager,dateEnv:a.dateEnv,options:a.calendarOptions,pluginHooks:a.pluginHooks,calendarApi:t.calendarApi,dispatch:this.dispatch,emitter:r,getCurrentData:this.getCurrentData},{currentDate:l,dateProfile:u}=n;this.data&&this.data.dateProfileGenerator!==s.dateProfileGenerator&&(u=s.dateProfileGenerator.build(l)),l=Gg(l,e),u=Jg(u,e,l,s.dateProfileGenerator),(e.type===`PREV`||e.type===`NEXT`||!Pf(u.currentRange,l))&&(l=u.currentRange.start);let d=Xg(n.eventSources,e,u,c),f=vp(n.eventStore,e,d,u,c),p=Qg(d)&&!s.options.progressiveEventRendering&&n.renderableEventStore||f,{eventUiSingleBase:m,selectionConfig:h}=this.buildViewUiProps(c),g=this.buildEventUiBySource(d),_=this.buildEventUiBases(p.defs,m,g),v={dynamicOptionOverrides:i,currentViewType:o,currentDate:l,dateProfile:u,eventSources:d,eventStore:f,renderableEventStore:p,selectionConfig:h,eventUiBases:_,businessHours:this.parseContextBusinessHours(c),dateSelection:l_(n.dateSelection,e),eventSelection:u_(n.eventSelection,e),eventDrag:d_(n.eventDrag,e),eventResize:f_(n.eventResize,e)},y=Object.assign(Object.assign({},c),v);for(let t of a.pluginHooks.reducers)Object.assign(v,t(n,e,y));let b=B_(n,c),x=B_(v,c);!b&&x?r.trigger(`loading`,!0):b&&!x&&r.trigger(`loading`,!1),this.state=v,t.onAction&&t.onAction(e)}updateData(){let{props:e,state:t}=this,n=this.data,r=this.computeOptionsData(e.optionOverrides,t.dynamicOptionOverrides,e.calendarApi),i=this.computeCurrentViewData(t.currentViewType,r,e.optionOverrides,t.dynamicOptionOverrides),a=this.data=Object.assign(Object.assign(Object.assign({nowManager:this.nowManager,viewTitle:this.buildTitle(t.dateProfile,i.options,r.dateEnv),calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},r),i),t),o=r.pluginHooks.optionChangeHandlers,s=n&&n.calendarOptions,c=r.calendarOptions;if(s&&s!==c){s.timeZone!==c.timeZone&&(t.eventSources=a.eventSources=Zg(a.eventSources,t.dateProfile,a),t.eventStore=a.eventStore=wp(a.eventStore,n.dateEnv,a.dateEnv),t.renderableEventStore=a.renderableEventStore=wp(a.renderableEventStore,n.dateEnv,a.dateEnv));for(let e in o)(this.optionsForHandling.indexOf(e)!==-1||s[e]!==c[e])&&o[e](c[e],a)}this.optionsForHandling=[],e.onData&&e.onData(a)}computeOptionsData(e,t,n){if(!this.optionsForRefining.length&&e===this.stableOptionOverrides&&t===this.stableDynamicOptionOverrides)return this.stableCalendarOptionsData;let{refinedOptions:r,pluginHooks:i,localeDefaults:a,availableLocaleData:o,extra:s}=this.processRawCalendarOptions(e,t);H_(s);let c=this.buildDateEnv(r.timeZone,r.locale,r.weekNumberCalculation,r.firstDay,r.weekText,i,o,r.defaultRangeSeparator),l=this.buildViewSpecs(i.views,this.stableOptionOverrides,this.stableDynamicOptionOverrides,a),u=this.buildTheme(r,i),d=this.parseToolbars(r,this.stableOptionOverrides,u,l,n);return this.stableCalendarOptionsData={calendarOptions:r,pluginHooks:i,dateEnv:c,viewSpecs:l,theme:u,toolbarConfig:d,localeDefaults:a,availableRawLocales:o.map}}processRawCalendarOptions(e,t){let{locales:n,locale:r}=Rd([jd,e,t]),i=this.organizeRawLocales(n),a=i.map,o=this.buildLocale(r||i.defaultCode,a).options,s=this.buildPluginHooks(e.plugins||[],D_),c=this.currentCalendarOptionsRefiners=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Ad),Md),Nd),s.listenerRefiners),s.optionRefiners),l={},u=Rd([jd,o,e,t]),d={},f=this.currentCalendarOptionsInput,p=this.currentCalendarOptionsRefined,m=!1;for(let e in u)this.optionsForRefining.indexOf(e)===-1&&(u[e]===f[e]||Pd[e]&&e in f&&Pd[e](f[e],u[e]))?d[e]=p[e]:c[e]?(d[e]=c[e](u[e]),m=!0):l[e]=f[e];return m&&(this.currentCalendarOptionsInput=u,this.currentCalendarOptionsRefined=d,this.stableOptionOverrides=e,this.stableDynamicOptionOverrides=t),this.optionsForHandling.push(...this.optionsForRefining),this.optionsForRefining=[],{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks:s,availableLocaleData:i,localeDefaults:o,extra:l}}_computeCurrentViewData(e,t,n,r){let i=t.viewSpecs[e];if(!i)throw Error(`viewType "${e}" is not available. Please make sure you've loaded all neccessary plugins`);let{refinedOptions:a,extra:o}=this.processRawViewOptions(i,t.pluginHooks,t.localeDefaults,n,r);return H_(o),this.nowManager.handleInput(t.dateEnv,a.now),{viewSpec:i,options:a,dateProfileGenerator:this.buildDateProfileGenerator({dateProfileGeneratorClass:i.optionDefaults.dateProfileGeneratorClass,nowManager:this.nowManager,duration:i.duration,durationUnit:i.durationUnit,usesMinMaxTime:i.optionDefaults.usesMinMaxTime,dateEnv:t.dateEnv,calendarApi:this.props.calendarApi,slotMinTime:a.slotMinTime,slotMaxTime:a.slotMaxTime,showNonCurrentDates:a.showNonCurrentDates,dayCount:a.dayCount,dateAlignment:a.dateAlignment,dateIncrement:a.dateIncrement,hiddenDays:a.hiddenDays,weekends:a.weekends,validRangeInput:a.validRange,visibleRangeInput:a.visibleRange,fixedWeekCount:a.fixedWeekCount}),viewApi:this.buildViewApi(e,this.getCurrentData,t.dateEnv)}}processRawViewOptions(e,t,n,r,i){let a=Rd([jd,e.optionDefaults,n,r,e.optionOverrides,i]),o=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Ad),Md),Nd),Ld),t.listenerRefiners),t.optionRefiners),s={},c=this.currentViewOptionsInput,l=this.currentViewOptionsRefined,u=!1,d={};for(let e in a)a[e]===c[e]||Pd[e]&&Pd[e](a[e],c[e])?s[e]=l[e]:(a[e]===this.currentCalendarOptionsInput[e]||Pd[e]&&Pd[e](a[e],this.currentCalendarOptionsInput[e])?e in this.currentCalendarOptionsRefined&&(s[e]=this.currentCalendarOptionsRefined[e]):o[e]?s[e]=o[e](a[e]):d[e]=a[e],u=!0);return u&&(this.currentViewOptionsInput=a,this.currentViewOptionsRefined=s),{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined,extra:d}}};function N_(e,t,n,r,i,a,o,s){let c=wg(t||o.defaultCode,o.map);return new af({calendarSystem:`gregory`,timeZone:e,namedTimeZoneImpl:a.namedTimeZonedImpl,locale:c,weekNumberCalculation:n,firstDay:r,weekText:i,cmdFormatter:a.cmdFormatter,defaultSeparator:s})}function P_(e,t){return new(t.themeClasses[e.themeSystem]||Ng)(e)}function F_(e){return new(e.dateProfileGeneratorClass||zf)(e)}function I_(e,t,n){return new g_(e,t,n)}function L_(e){return Ud(e,e=>e.ui)}function R_(e,t,n){let r={"":t};for(let t in e){let i=e[t];i.sourceId&&n[i.sourceId]&&(r[t]=n[i.sourceId])}return r}function z_(e){let{options:t}=e;return{eventUiSingleBase:dp({display:t.eventDisplay,editable:t.editable,startEditable:t.eventStartEditable,durationEditable:t.eventDurationEditable,constraint:t.eventConstraint,overlap:typeof t.eventOverlap==`boolean`?t.eventOverlap:void 0,allow:t.eventAllow,backgroundColor:t.eventBackgroundColor,borderColor:t.eventBorderColor,textColor:t.eventTextColor,color:t.eventColor},e),selectionConfig:dp({constraint:t.selectConstraint,overlap:typeof t.selectOverlap==`boolean`?t.selectOverlap:void 0,allow:t.selectAllow},e)}}function B_(e,t){for(let n of t.pluginHooks.isLoadingFuncs)if(n(e))return!0;return!1}function V_(e){return Mp(e.options.businessHours,e)}function H_(e,t){for(let n in e)console.warn(`Unknown option '${n}'`+(t?` for view '${t}'`:``))}var U_=class extends Q{render(){return K(`div`,{className:`fc-toolbar-chunk`},...this.props.widgetGroups.map(e=>this.renderWidgetGroup(e)))}renderWidgetGroup(e){let{props:t}=this,{theme:n}=this.context,r=[],i=!0;for(let a of e){let{buttonName:e,buttonClick:o,buttonText:s,buttonIcon:c,buttonHint:l}=a;if(e===`title`)i=!1,r.push(K(`h2`,{className:`fc-toolbar-title`,id:t.titleId},t.title));else{let i=e===t.activeButton,a=!t.isTodayEnabled&&e===`today`||!t.isPrevEnabled&&e===`prev`||!t.isNextEnabled&&e===`next`,u=[`fc-${e}-button`,n.getClass(`button`)];i&&u.push(n.getClass(`buttonActive`)),r.push(K(`button`,{type:`button`,title:typeof l==`function`?l(t.navUnit):l,disabled:a,"aria-pressed":i,className:u.join(` `),onClick:o},s||(c?K(`span`,{className:c,role:`img`}):``)))}}return r.length>1?K(`div`,{className:i&&n.getClass(`buttonGroup`)||``},...r):r[0]}},W_=class extends Q{render(){let{model:e,extraClassName:t}=this.props,n=!1,r,i,a=e.sectionWidgets,o=a.center;return a.left?(n=!0,r=a.left):r=a.start,a.right?(n=!0,i=a.right):i=a.end,K(`div`,{className:[t||``,`fc-toolbar`,n?`fc-toolbar-ltr`:``].join(` `)},this.renderSection(`start`,r||[]),this.renderSection(`center`,o||[]),this.renderSection(`end`,i||[]))}renderSection(e,t){let{props:n}=this;return K(U_,{key:e,widgetGroups:t,title:n.title,navUnit:n.navUnit,activeButton:n.activeButton,isTodayEnabled:n.isTodayEnabled,isPrevEnabled:n.isPrevEnabled,isNextEnabled:n.isNextEnabled,titleId:n.titleId})}},G_=class extends Q{constructor(){super(...arguments),this.state={availableWidth:null},this.handleEl=e=>{this.el=e,gf(this.props.elRef,e),this.updateAvailableWidth()},this.handleResize=()=>{this.updateAvailableWidth()}}render(){let{props:e,state:t}=this,{aspectRatio:n}=e,r=[`fc-view-harness`,n||e.liquid||e.height?`fc-view-harness-active`:`fc-view-harness-passive`],i=``,a=``;return n?t.availableWidth===null?a=`${1/n*100}%`:i=t.availableWidth/n:i=e.height||``,K(`div`,{"aria-labelledby":e.labeledById,ref:this.handleEl,className:r.join(` `),style:{height:i,paddingBottom:a}},e.children)}componentDidMount(){this.context.addResizeHandler(this.handleResize)}componentWillUnmount(){this.context.removeResizeHandler(this.handleResize)}updateAvailableWidth(){this.el&&this.props.aspectRatio&&this.setState({availableWidth:this.el.offsetWidth})}},K_=class extends xm{constructor(e){super(e),this.handleSegClick=(e,t)=>{let{component:n}=this,{context:r}=n,i=Kp(t);if(i&&n.isValidSegDownEl(e.target)){let a=Hl(e.target,`.fc-event-forced-url`),o=a?a.querySelector(`a[href]`).href:``;r.emitter.trigger(`eventClick`,{el:t,event:new $(n.context,i.eventRange.def,i.eventRange.instance),jsEvent:e,view:r.viewApi}),o&&!e.defaultPrevented&&(window.location.href=o)}},this.destroy=$l(e.el,`click`,`.fc-event`,this.handleSegClick)}},q_=class extends xm{constructor(e){super(e),this.handleEventElRemove=e=>{e===this.currentSegEl&&this.handleSegLeave(null,this.currentSegEl)},this.handleSegEnter=(e,t)=>{Kp(t)&&(this.currentSegEl=t,this.triggerEvent(`eventMouseEnter`,e,t))},this.handleSegLeave=(e,t)=>{this.currentSegEl&&(this.currentSegEl=null,this.triggerEvent(`eventMouseLeave`,e,t))},this.removeHoverListeners=eu(e.el,`.fc-event`,this.handleSegEnter,this.handleSegLeave)}destroy(){this.removeHoverListeners()}triggerEvent(e,t,n){let{component:r}=this,{context:i}=r,a=Kp(n);(!t||r.isValidSegDownEl(t.target))&&i.emitter.trigger(e,{el:n,event:new $(i,a.eventRange.def,a.eventRange.instance),jsEvent:t,view:i.viewApi})}},J_=class extends pf{constructor(){super(...arguments),this.buildViewContext=X(ff),this.buildViewPropTransformers=X(X_),this.buildToolbarProps=X(Y_),this.headerRef=vc(),this.footerRef=vc(),this.interactionsStore={},this.state={viewLabelId:Xl()},this.registerInteractiveComponent=(e,t)=>{let n=Sm(e,t),r=[K_,q_].concat(this.props.pluginHooks.componentInteractions).map(e=>new e(n));this.interactionsStore[e.uid]=r,wm[e.uid]=n},this.unregisterInteractiveComponent=e=>{let t=this.interactionsStore[e.uid];if(t){for(let e of t)e.destroy();delete this.interactionsStore[e.uid]}delete wm[e.uid]},this.resizeRunner=new Bl(()=>{this.props.emitter.trigger(`_resize`,!0),this.props.emitter.trigger(`windowResize`,{view:this.props.viewApi})}),this.handleWindowResize=e=>{let{options:t}=this.props;t.handleWindowResize&&e.target===window&&this.resizeRunner.request(t.windowResizeDelay)}}render(){let{props:e}=this,{toolbarConfig:t,options:n}=e,r=!1,i=``,a;e.isHeightAuto||e.forPrint?i=``:n.height==null?n.contentHeight==null?a=Math.max(n.aspectRatio,.5):i=n.contentHeight:r=!0;let o=this.buildViewContext(e.viewSpec,e.viewApi,e.options,e.dateProfileGenerator,e.dateEnv,e.nowManager,e.theme,e.pluginHooks,e.dispatch,e.getCurrentData,e.emitter,e.calendarApi,this.registerInteractiveComponent,this.unregisterInteractiveComponent),s=t.header&&t.header.hasTitle?this.state.viewLabelId:void 0;return K(df.Provider,{value:o},K(Tm,{unit:`day`},n=>{let o=this.buildToolbarProps(e.viewSpec,e.dateProfile,e.dateProfileGenerator,e.currentDate,n,e.viewTitle);return K(q,null,t.header&&K(W_,Object.assign({ref:this.headerRef,extraClassName:`fc-header-toolbar`,model:t.header,titleId:s},o)),K(G_,{liquid:r,height:i,aspectRatio:a,labeledById:s},this.renderView(e),this.buildAppendContent()),t.footer&&K(W_,Object.assign({ref:this.footerRef,extraClassName:`fc-footer-toolbar`,model:t.footer,titleId:``},o)))}))}componentDidMount(){let{props:e}=this;this.calendarInteractions=e.pluginHooks.calendarInteractions.map(t=>new t(e)),window.addEventListener(`resize`,this.handleWindowResize);let{propSetHandlers:t}=e.pluginHooks;for(let n in t)t[n](e[n],e)}componentDidUpdate(e){let{props:t}=this,{propSetHandlers:n}=t.pluginHooks;for(let r in n)t[r]!==e[r]&&n[r](t[r],t)}componentWillUnmount(){window.removeEventListener(`resize`,this.handleWindowResize),this.resizeRunner.clear();for(let e of this.calendarInteractions)e.destroy();this.props.emitter.trigger(`_unmount`)}buildAppendContent(){let{props:e}=this;return K(q,{},...e.pluginHooks.viewContainerAppends.map(t=>t(e)))}renderView(e){let{pluginHooks:t}=e,{viewSpec:n}=e,r={dateProfile:e.dateProfile,businessHours:e.businessHours,eventStore:e.renderableEventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,isHeightAuto:e.isHeightAuto,forPrint:e.forPrint},i=this.buildViewPropTransformers(t.viewPropsTransformers);for(let t of i)Object.assign(r,t.transform(r,e));let a=n.component;return K(a,Object.assign({},r))}};function Y_(e,t,n,r,i,a){let o=n.build(i,void 0,!1),s=n.buildPrev(t,r,!1),c=n.buildNext(t,r,!1);return{title:a,activeButton:e.type,navUnit:e.singleUnit,isTodayEnabled:o.isValid&&!Pf(t.currentRange,i),isPrevEnabled:s.isValid,isNextEnabled:c.isValid}}function X_(e){return e.map(e=>new e)}var Z_=class extends Dm{constructor(e,t={}){super(),this.isRendering=!1,this.isRendered=!1,this.currentClassNames=[],this.customContentRenderId=0,this.handleAction=e=>{switch(e.type){case`SET_EVENT_DRAG`:case`SET_EVENT_RESIZE`:this.renderRunner.tryDrain()}},this.handleData=e=>{this.currentData=e,this.renderRunner.request(e.calendarOptions.rerenderDelay)},this.handleRenderRequest=()=>{if(this.isRendering){this.isRendered=!0;let{currentData:e}=this;sf(()=>{Vc(K(bm,{options:e.calendarOptions,theme:e.theme,emitter:e.emitter},(t,n,r,i)=>(this.setClassNames(t),this.setHeight(n),K(xf.Provider,{value:this.customContentRenderId},K(J_,Object.assign({isHeightAuto:r,forPrint:i},e))))),this.el)})}else this.isRendered&&(this.isRendered=!1,Vc(null,this.el),this.setClassNames([]),this.setHeight(``))},Nl(e),this.el=e,this.renderRunner=new Bl(this.handleRenderRequest),new M_({optionOverrides:t,calendarApi:this,onAction:this.handleAction,onData:this.handleData})}render(){let e=this.isRendering;e?this.customContentRenderId+=1:this.isRendering=!0,this.renderRunner.request(),e&&this.updateSize()}destroy(){this.isRendering&&(this.isRendering=!1,this.renderRunner.request())}updateSize(){sf(()=>{super.updateSize()})}batchRendering(e){this.renderRunner.pause(`batchRendering`),e(),this.renderRunner.resume(`batchRendering`)}pauseRendering(){this.renderRunner.pause(`pauseRendering`)}resumeRendering(){this.renderRunner.resume(`pauseRendering`,!0)}resetOptions(e,t){this.currentDataManager.resetOptions(e,t)}setClassNames(e){if(!Mu(e,this.currentClassNames)){let{classList:t}=this.el;for(let e of this.currentClassNames)t.remove(e);for(let n of e)t.add(n);this.currentClassNames=e}}setHeight(e){ql(this.el,`height`,e)}},Q_={headerToolbar:!0,footerToolbar:!0,events:!0,eventSources:!0,resources:!0},$_=hr({props:{options:Object},data(){return{renderId:0,customRenderingMap:new Map}},methods:{getApi(){return tv(this).calendar},buildOptions(e){return{...e,customRenderingMetaMap:rv(this.$slots),handleCustomRendering:tv(this).handleCustomRendering}}},render(){let e=[];for(let t of this.customRenderingMap.values())e.push(Ha(ev,{key:t.id,customRendering:t}));return Ha(`div`,{attrs:{"data-fc-render-id":this.renderId}},Ha(L,e))},mounted(){let e=new yg;tv(this).handleCustomRendering=e.handle.bind(e);let t=this.buildOptions(this.options),n=new Z_(this.$el,t);tv(this).calendar=n,n.render(),e.subscribe(e=>{this.customRenderingMap=e,this.renderId++,tv(this).needCustomRenderingResize=!0})},beforeUpdate(){this.getApi().resumeRendering()},updated(){tv(this).needCustomRenderingResize&&(tv(this).needCustomRenderingResize=!1,this.getApi().updateSize())},beforeUnmount(){this.getApi().destroy()},watch:nv()}),ev=hr({props:{customRendering:Object},render(){let e=this.customRendering,t=typeof e.generatorMeta==`function`?e.generatorMeta(e.renderProps):e.generatorMeta;return Ha(Zn,{to:e.containerEl},t)}});function tv(e){return e}function nv(){let e={options:{deep:!0,handler(e){let t=this.getApi();t.pauseRendering();let n=this.buildOptions(e);t.resetOptions(n),this.renderId++}}};for(let t in Q_)e[`options.${t}`]={deep:!0,handler(e){if(e!==void 0){let n=this.getApi();n.pauseRendering(),n.resetOptions({[t]:e},[t]),this.renderId++}}};return e}function rv(e){let t={};for(let n in e)t[iv(n)]=e[n];return t}function iv(e){return e.split(`-`).map((e,t)=>t?av(e):e).join(``)}function av(e){return e.charAt(0).toUpperCase()+e.slice(1)}var ov=$_,sv=class extends th{constructor(){super(...arguments),this.headerElRef=vc()}renderSimpleLayout(e,t){let{props:n,context:r}=this,i=[],a=Kh(r.options);return e&&i.push({type:`header`,key:`header`,isSticky:a,chunk:{elRef:this.headerElRef,tableClassName:`fc-col-header`,rowContent:e}}),i.push({type:`body`,key:`body`,liquid:!0,chunk:{content:t}}),K(Tf,{elClasses:[`fc-daygrid`],viewSpec:r.viewSpec},K(Jh,{liquid:!n.isHeightAuto&&!n.forPrint,collapsibleWidth:n.forPrint,cols:[],sections:i}))}renderHScrollLayout(e,t,n,r){let i=this.context.pluginHooks.scrollGridImpl;if(!i)throw Error(`No ScrollGrid implementation`);let{props:a,context:o}=this,s=!a.forPrint&&Kh(o.options),c=!a.forPrint&&qh(o.options),l=[];return e&&l.push({type:`header`,key:`header`,isSticky:s,chunks:[{key:`main`,elRef:this.headerElRef,tableClassName:`fc-col-header`,rowContent:e}]}),l.push({type:`body`,key:`body`,liquid:!0,chunks:[{key:`main`,content:t}]}),c&&l.push({type:`footer`,key:`footer`,isSticky:!0,chunks:[{key:`main`,content:Gh}]}),K(Tf,{elClasses:[`fc-daygrid`],viewSpec:o.viewSpec},K(i,{liquid:!a.isHeightAuto&&!a.forPrint,forPrint:a.forPrint,collapsibleWidth:a.forPrint,colGroups:[{cols:[{span:n,minWidth:r}]}],sections:l}))}};function cv(e,t){let n=[];for(let e=0;e{let n=(e.eventDrag?e.eventDrag.affectedInstances:null)||(e.eventResize?e.eventResize.affectedInstances:null)||{};return K(q,null,t.map(t=>{let r=t.eventRange.instance.instanceId;return K(`div`,{className:`fc-daygrid-event-harness`,key:r,style:{visibility:n[r]?`hidden`:``}},fv(t)?K(mv,Object.assign({seg:t,isDragging:!1,isSelected:r===e.eventSelection,defaultDisplayEventEnd:!1},tm(t,e.todayRange))):K(pv,Object.assign({seg:t,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:r===e.eventSelection,defaultDisplayEventEnd:!1},tm(t,e.todayRange))))}))}})}};function _v(e){let t=[],n=[];for(let r of e)t.push(r.seg),r.isVisible||n.push(r.seg);return{allSegs:t,invisibleSegs:n}}var vv=kd({week:`narrow`}),yv=class extends th{constructor(){super(...arguments),this.rootElRef=vc(),this.state={dayNumberId:Xl()},this.handleRootEl=e=>{gf(this.rootElRef,e),gf(this.props.elRef,e)}}render(){let{context:e,props:t,state:n,rootElRef:r}=this,{options:i,dateEnv:a}=e,{date:o,dateProfile:s}=t,c=t.showDayNumber&&xv(o,s.currentRange,a);return K(eg,{elTag:`td`,elRef:this.handleRootEl,elClasses:[`fc-daygrid-day`,...t.extraClassNames||[]],elAttrs:Object.assign(Object.assign(Object.assign({},t.extraDataAttrs),t.showDayNumber?{"aria-labelledby":n.dayNumberId}:{}),{role:`gridcell`}),defaultGenerator:bv,date:o,dateProfile:s,todayRange:t.todayRange,showDayNumber:t.showDayNumber,isMonthStart:c,extraRenderProps:t.extraRenderProps},(a,s)=>K(`div`,{ref:t.innerElRef,className:`fc-daygrid-day-frame fc-scrollgrid-sync-inner`,style:{minHeight:t.minHeight}},t.showWeekNumber&&K(og,{elTag:`a`,elClasses:[`fc-daygrid-week-number`],elAttrs:Lm(e,o,`week`),date:o,defaultFormat:vv}),!s.isDisabled&&(t.showDayNumber||tg(i)||t.forceDayTop)?K(`div`,{className:`fc-daygrid-day-top`},K(a,{elTag:`a`,elClasses:[`fc-daygrid-day-number`,c&&`fc-daygrid-month-start`],elAttrs:Object.assign(Object.assign({},Lm(e,o)),{id:n.dayNumberId})})):t.showDayNumber?K(`div`,{className:`fc-daygrid-day-top`,style:{visibility:`hidden`}},K(`a`,{className:`fc-daygrid-day-number`},`\xA0`)):void 0,K(`div`,{className:`fc-daygrid-day-events`,ref:t.fgContentElRef},t.fgContent,K(`div`,{className:`fc-daygrid-day-bottom`,style:{marginTop:t.moreMarginTop}},K(gv,{allDayDate:o,singlePlacements:t.singlePlacements,moreCnt:t.moreCnt,alignmentElRef:r,alignGridTop:!t.showDayNumber,extraDateSpan:t.extraDateSpan,dateProfile:t.dateProfile,eventSelection:t.eventSelection,eventDrag:t.eventDrag,eventResize:t.eventResize,todayRange:t.todayRange}))),K(`div`,{className:`fc-daygrid-day-bg`},t.bgContent)))}};function bv(e){return e.dayNumberText||K(q,null,`\xA0`)}function xv(e,t,n){let{start:r,end:i}=t,a=Iu(i,-1),o=n.getYear(r),s=n.getMonth(r),c=n.getYear(a),l=n.getMonth(a);return(o!==c||s!==l)&&(e.valueOf()===r.valueOf()||n.getDay(e)===1&&e.valueOf()i[e[t.index].eventRange.instance.instanceId+`:`+t.span.start+`:`+(t.span.end-1)]||1);s.allowReslicing=!0,s.strictOrder=r,t===!0||n===!0?(s.maxCoord=a,s.hiddenConsumes=!0):typeof t==`number`?s.maxStackCnt=t:typeof n==`number`&&(s.maxStackCnt=n,s.hiddenConsumes=!0);let c=[],l=[];for(let t=0;t1,o=r.span.start===e;u+=r.levelCoord-l,l=r.levelCoord+r.thickness,a?(u+=r.thickness,o&&d.push({seg:Dv(i,r.span.start,r.span.end,n),isVisible:!0,isAbsolute:!0,absoluteTop:r.levelCoord,marginTop:0})):o&&(d.push({seg:Dv(i,r.span.start,r.span.end,n),isVisible:!0,isAbsolute:!1,absoluteTop:r.levelCoord,marginTop:u}),u=0)}i.push(c),a.push(d),o.push(u)}return{singleColPlacements:i,multiColPlacements:a,leftoverMargins:o}}function Ev(e,t){let n=[];for(let e=0;e!this.forceHidden[ih(e)];for(let e=0;e{e&&this.updateSizing(!0)}}render(){let{props:e,state:t,context:n}=this,{options:r}=n,i=e.cells.length,a=lv(e.businessHourSegs,i),o=lv(e.bgEventSegs,i),s=lv(this.getHighlightSegs(),i),c=lv(this.getMirrorSegs(),i),{singleColPlacements:l,multiColPlacements:u,moreCnts:d,moreMarginTops:f}=wv(Yp(e.fgEventSegs,r.eventOrder),e.dayMaxEvents,e.dayMaxEventRows,r.eventOrderStrict,t.segHeights,t.maxContentHeight,e.cells),p=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{};return K(`tr`,{ref:this.rootElRef,role:`row`},e.renderIntro&&e.renderIntro(),e.cells.map((t,n)=>{let r=this.renderFgSegs(n,e.forPrint?l[n]:u[n],e.todayRange,p),i=this.renderFgSegs(n,Av(c[n],u),e.todayRange,{},!!e.eventDrag,!!e.eventResize,!1);return K(yv,{key:t.key,elRef:this.cellElRefs.createRef(t.key),innerElRef:this.frameElRefs.createRef(t.key),dateProfile:e.dateProfile,date:t.date,showDayNumber:e.showDayNumbers,showWeekNumber:e.showWeekNumbers&&n===0,forceDayTop:e.showWeekNumbers,todayRange:e.todayRange,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,extraRenderProps:t.extraRenderProps,extraDataAttrs:t.extraDataAttrs,extraClassNames:t.extraClassNames,extraDateSpan:t.extraDateSpan,moreCnt:d[n],moreMarginTop:f[n],singlePlacements:l[n],fgContentElRef:this.fgElRefs.createRef(t.key),fgContent:K(q,null,K(q,null,r),K(q,null,i)),bgContent:K(q,null,this.renderFillSegs(s[n],`highlight`),this.renderFillSegs(a[n],`non-business`),this.renderFillSegs(o[n],`bg-event`)),minHeight:e.cellMinHeight})}))}componentDidMount(){this.updateSizing(!0),this.context.addResizeHandler(this.handleResize)}componentDidUpdate(e,t){let n=this.props;this.updateSizing(!Kd(e,n))}componentWillUnmount(){this.context.removeResizeHandler(this.handleResize)}getHighlightSegs(){let{props:e}=this;return e.eventDrag&&e.eventDrag.segs.length?e.eventDrag.segs:e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:e.dateSelectionSegs}getMirrorSegs(){let{props:e}=this;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]}renderFgSegs(e,t,n,r,i,a,o){let{context:s}=this,{eventSelection:c}=this.props,{framePositions:l}=this.state,u=this.props.cells.length===1,d=i||a||o,f=[];if(l)for(let e of t){let{seg:t}=e,{instanceId:p}=t.eventRange.instance,m=e.isVisible&&!r[p],h=e.isAbsolute,g=``,_=``;h&&(s.isRtl?(_=0,g=l.lefts[t.lastCol]-l.lefts[t.firstCol]):(g=0,_=l.rights[t.firstCol]-l.rights[t.lastCol])),f.push(K(`div`,{className:`fc-daygrid-event-harness`+(h?` fc-daygrid-event-harness-abs`:``),key:Sv(t),ref:d?null:this.segHarnessRefs.createRef(Cv(t)),style:{visibility:m?``:`hidden`,marginTop:h?``:e.marginTop,top:h?e.absoluteTop:``,left:g,right:_}},fv(t)?K(mv,Object.assign({seg:t,isDragging:i,isSelected:p===c,defaultDisplayEventEnd:u},tm(t,n))):K(pv,Object.assign({seg:t,isDragging:i,isResizing:a,isDateSelecting:o,isSelected:p===c,defaultDisplayEventEnd:u},tm(t,n)))))}return f}renderFillSegs(e,t){let{isRtl:n}=this.context,{todayRange:r}=this.props,{framePositions:i}=this.state,a=[];if(i)for(let o of e){let e=n?{right:0,left:i.lefts[o.lastCol]-i.lefts[o.firstCol]}:{left:0,right:i.rights[o.firstCol]-i.rights[o.lastCol]};a.push(K(`div`,{key:rm(o.eventRange),className:`fc-daygrid-bg-harness`,style:e},t===`bg-event`?K(rg,Object.assign({seg:o},tm(o,r))):ag(t)))}return K(q,{},...a)}updateSizing(e){let{props:t,state:n,frameElRefs:r}=this;if(!t.forPrint&&t.clientWidth!==null){if(e){let e=t.cells.map(e=>r.currentMap[e.key]);if(e.length){let t=this.rootElRef.current,r=new Xm(t,e,!0,!1);(!n.framePositions||!n.framePositions.similarTo(r))&&this.setState({framePositions:new Xm(t,e,!0,!1)})}}let i=this.state.segHeights,a=this.querySegHeights(),o=t.dayMaxEvents===!0||t.dayMaxEventRows===!0;this.safeSetState({segHeights:Object.assign(Object.assign({},i),a),maxContentHeight:o?this.computeMaxContentHeight():null})}}querySegHeights(){let e=this.segHarnessRefs.currentMap,t={};for(let n in e){let r=Math.round(e[n].getBoundingClientRect().height);t[n]=Math.max(t[n]||0,r)}return t}computeMaxContentHeight(){let e=this.props.cells[0].key,t=this.cellElRefs.currentMap[e],n=this.fgElRefs.currentMap[e];return t.getBoundingClientRect().bottom-n.getBoundingClientRect().top}getCellEls(){let e=this.cellElRefs.currentMap;return this.props.cells.map(t=>e[t.key])}};kv.addStateEquality({segHeights:Kd});function Av(e,t){if(!e.length)return[];let n=jv(t);return e.map(e=>({seg:e,isVisible:!0,isAbsolute:!0,absoluteTop:n[e.eventRange.instance.instanceId],marginTop:0}))}function jv(e){let t={};for(let n of e)for(let e of n)t[e.seg.eventRange.instance.instanceId]=e.absoluteTop;return t}var Mv=class extends th{constructor(){super(...arguments),this.splitBusinessHourSegs=X(cv),this.splitBgEventSegs=X(Nv),this.splitFgEventSegs=X(cv),this.splitDateSelectionSegs=X(cv),this.splitEventDrag=X(uv),this.splitEventResize=X(uv),this.rowRefs=new Ph}render(){let{props:e,context:t}=this,n=e.cells.length,r=this.splitBusinessHourSegs(e.businessHourSegs,n),i=this.splitBgEventSegs(e.bgEventSegs,n),a=this.splitFgEventSegs(e.fgEventSegs,n),o=this.splitDateSelectionSegs(e.dateSelectionSegs,n),s=this.splitEventDrag(e.eventDrag,n),c=this.splitEventResize(e.eventResize,n),l=n>=7&&e.clientWidth?e.clientWidth/t.options.aspectRatio/6:null;return K(Tm,{unit:`day`},(t,u)=>K(q,null,e.cells.map((t,d)=>K(kv,{ref:this.rowRefs.createRef(d),key:t.length?t[0].date.toISOString():d,showDayNumbers:n>1,showWeekNumbers:e.showWeekNumbers,todayRange:u,dateProfile:e.dateProfile,cells:t,renderIntro:e.renderRowIntro,businessHourSegs:r[d],eventSelection:e.eventSelection,bgEventSegs:i[d],fgEventSegs:a[d],dateSelectionSegs:o[d],eventDrag:s[d],eventResize:c[d],dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,clientWidth:e.clientWidth,clientHeight:e.clientHeight,cellMinHeight:l,forPrint:e.forPrint}))))}componentDidMount(){this.registerInteractiveComponent()}componentDidUpdate(){this.registerInteractiveComponent()}registerInteractiveComponent(){if(!this.rootEl){let e=this.rowRefs.currentMap[0].getCellEls()[0],t=e?e.closest(`.fc-daygrid-body`):null;t&&(this.rootEl=t,this.context.registerInteractiveComponent(this,{el:t,isHitComboAllowed:this.props.isHitComboAllowed}))}}componentWillUnmount(){this.rootEl&&=(this.context.unregisterInteractiveComponent(this),null)}prepareHits(){this.rowPositions=new Xm(this.rootEl,this.rowRefs.collect().map(e=>e.getCellEls()[0]),!1,!0),this.colPositions=new Xm(this.rootEl,this.rowRefs.currentMap[0].getCellEls(),!0,!1)}queryHit(e,t){let{colPositions:n,rowPositions:r}=this,i=n.leftToIndex(e),a=r.topToIndex(t);if(a!=null&&i!=null){let e=this.props.cells[a][i];return{dateProfile:this.props.dateProfile,dateSpan:Object.assign({range:this.getCellRange(a,i),allDay:!0},e.extraDateSpan),dayEl:this.getCellEl(a,i),rect:{left:n.lefts[i],right:n.rights[i],top:r.tops[a],bottom:r.bottoms[a]},layer:0}}return null}getCellEl(e,t){return this.rowRefs.currentMap[e].getCellEls()[t]}getCellRange(e,t){let n=this.props.cells[e][t].date;return{start:n,end:Fu(n,1)}}};function Nv(e,t){return cv(e.filter(Pv),t)}function Pv(e){return e.eventRange.def.allDay}var Fv=class extends th{constructor(){super(...arguments),this.elRef=vc(),this.needsScrollReset=!1}render(){let{props:e}=this,{dayMaxEventRows:t,dayMaxEvents:n,expandRows:r}=e,i=n===!0||t===!0;i&&!r&&(i=!1,t=null,n=null);let a=[`fc-daygrid-body`,i?`fc-daygrid-body-balanced`:`fc-daygrid-body-unbalanced`,r?``:`fc-daygrid-body-natural`];return K(`div`,{ref:this.elRef,className:a.join(` `),style:{width:e.clientWidth,minWidth:e.tableMinWidth}},K(`table`,{role:`presentation`,className:`fc-scrollgrid-sync-table`,style:{width:e.clientWidth,minWidth:e.tableMinWidth,height:r?e.clientHeight:``}},e.colGroupNode,K(`tbody`,{role:`presentation`},K(Mv,{dateProfile:e.dateProfile,cells:e.cells,renderRowIntro:e.renderRowIntro,showWeekNumbers:e.showWeekNumbers,clientWidth:e.clientWidth,clientHeight:e.clientHeight,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,dayMaxEvents:n,dayMaxEventRows:t,forPrint:e.forPrint,isHitComboAllowed:e.isHitComboAllowed}))))}componentDidMount(){this.requestScrollReset()}componentDidUpdate(e){e.dateProfile===this.props.dateProfile?this.flushScrollReset():this.requestScrollReset()}requestScrollReset(){this.needsScrollReset=!0,this.flushScrollReset()}flushScrollReset(){if(this.needsScrollReset&&this.props.clientWidth){let e=Iv(this.elRef.current,this.props.dateProfile);if(e){let t=e.closest(`.fc-daygrid-body`),n=t.closest(`.fc-scroller`),r=e.getBoundingClientRect().top-t.getBoundingClientRect().top;n.scrollTop=r?r+1:0}this.needsScrollReset=!1}}};function Iv(e,t){let n;return t.currentRangeUnit.match(/year|month/)&&(n=e.querySelector(`[data-date="${ad(t.currentDate)}-01"]`)),n||=e.querySelector(`[data-date="${id(t.currentDate)}"]`),n}var Lv=class extends bh{constructor(){super(...arguments),this.forceDayIfListItem=!0}sliceRange(e,t){return t.sliceRange(e)}},Rv=class extends th{constructor(){super(...arguments),this.slicer=new Lv,this.tableRef=vc()}render(){let{props:e,context:t}=this;return K(Fv,Object.assign({ref:this.tableRef},this.slicer.sliceProps(e,e.dateProfile,e.nextDayThreshold,t,e.dayTableModel),{dateProfile:e.dateProfile,cells:e.dayTableModel.cells,colGroupNode:e.colGroupNode,tableMinWidth:e.tableMinWidth,renderRowIntro:e.renderRowIntro,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.showWeekNumbers,expandRows:e.expandRows,headerAlignElRef:e.headerAlignElRef,clientWidth:e.clientWidth,clientHeight:e.clientHeight,forPrint:e.forPrint}))}},zv=class extends sv{constructor(){super(...arguments),this.buildDayTableModel=X(Bv),this.headerRef=vc(),this.tableRef=vc()}render(){let{options:e,dateProfileGenerator:t}=this.context,{props:n}=this,r=this.buildDayTableModel(n.dateProfile,t),i=e.dayHeaders&&K(gh,{ref:this.headerRef,dateProfile:n.dateProfile,dates:r.headerDates,datesRepDistinctDays:r.rowCnt===1}),a=t=>K(Rv,{ref:this.tableRef,dateProfile:n.dateProfile,dayTableModel:r,businessHours:n.businessHours,dateSelection:n.dateSelection,eventStore:n.eventStore,eventUiBases:n.eventUiBases,eventSelection:n.eventSelection,eventDrag:n.eventDrag,eventResize:n.eventResize,nextDayThreshold:e.nextDayThreshold,colGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.weekNumbers,expandRows:!n.isHeightAuto,headerAlignElRef:this.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:n.forPrint});return e.dayMinWidth?this.renderHScrollLayout(i,a,r.colCnt,e.dayMinWidth):this.renderSimpleLayout(i,a)}};function Bv(e,t){return new yh(new vh(e.renderRange,t),/year|month|week/.test(e.currentRangeUnit))}var Vv=class extends zf{buildRenderRange(e,t,n){let r=super.buildRenderRange(e,t,n),{props:i}=this;return Hv({currentRange:r,snapToWeek:/^(year|month)$/.test(t),fixedWeekCount:i.fixedWeekCount,dateEnv:i.dateEnv})}};function Hv(e){let{dateEnv:t,currentRange:n}=e,{start:r,end:i}=n,a;if(e.snapToWeek&&(r=t.startOfWeek(r),a=t.startOfWeek(i),a.valueOf()!==i.valueOf()&&(i=Pu(a,1))),e.fixedWeekCount){let e=t.startOfWeek(t.startOfMonth(Fu(n.end,-1))),r=Math.ceil(Lu(e,i));i=Pu(i,6-r)}return{start:r,end:i}}Ml(`:root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:"";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:"";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}`);var Uv=Og({name:`@fullcalendar/daygrid`,initialView:`dayGridMonth`,views:{dayGrid:{component:zv,dateProfileGeneratorClass:Vv},dayGridDay:{type:`dayGrid`,duration:{days:1}},dayGridWeek:{type:`dayGrid`,duration:{weeks:1}},dayGridMonth:{type:`dayGrid`,duration:{months:1},fixedWeekCount:!0},dayGridYear:{type:`dayGrid`,duration:{years:1}}}});lh.touchMouseIgnoreWait=500;var Wv=0,Gv=0,Kv=!1,qv=class{constructor(e){this.subjectEl=null,this.selector=``,this.handleSelector=``,this.shouldIgnoreMove=!1,this.shouldWatchScroll=!0,this.isDragging=!1,this.isTouchDragging=!1,this.wasTouchScroll=!1,this.handleMouseDown=e=>{if(!this.shouldIgnoreMouse()&&Jv(e)&&this.tryStart(e)){let t=this.createEventFromMouse(e,!0);this.emitter.trigger(`pointerdown`,t),this.initScrollWatch(t),this.shouldIgnoreMove||document.addEventListener(`mousemove`,this.handleMouseMove),document.addEventListener(`mouseup`,this.handleMouseUp)}},this.handleMouseMove=e=>{let t=this.createEventFromMouse(e);this.recordCoords(t),this.emitter.trigger(`pointermove`,t)},this.handleMouseUp=e=>{document.removeEventListener(`mousemove`,this.handleMouseMove),document.removeEventListener(`mouseup`,this.handleMouseUp),this.emitter.trigger(`pointerup`,this.createEventFromMouse(e)),this.cleanup()},this.handleTouchStart=e=>{if(this.tryStart(e)){this.isTouchDragging=!0;let t=this.createEventFromTouch(e,!0);this.emitter.trigger(`pointerdown`,t),this.initScrollWatch(t);let n=e.target;this.shouldIgnoreMove||n.addEventListener(`touchmove`,this.handleTouchMove),n.addEventListener(`touchend`,this.handleTouchEnd),n.addEventListener(`touchcancel`,this.handleTouchEnd),window.addEventListener(`scroll`,this.handleTouchScroll,!0)}},this.handleTouchMove=e=>{let t=this.createEventFromTouch(e);this.recordCoords(t),this.emitter.trigger(`pointermove`,t)},this.handleTouchEnd=e=>{if(this.isDragging){let t=e.target;t.removeEventListener(`touchmove`,this.handleTouchMove),t.removeEventListener(`touchend`,this.handleTouchEnd),t.removeEventListener(`touchcancel`,this.handleTouchEnd),window.removeEventListener(`scroll`,this.handleTouchScroll,!0),this.emitter.trigger(`pointerup`,this.createEventFromTouch(e)),this.cleanup(),this.isTouchDragging=!1,Yv()}},this.handleTouchScroll=()=>{this.wasTouchScroll=!0},this.handleScroll=e=>{if(!this.shouldIgnoreMove){let t=window.scrollX-this.prevScrollX+this.prevPageX,n=window.scrollY-this.prevScrollY+this.prevPageY;this.emitter.trigger(`pointermove`,{origEvent:e,isTouch:this.isTouchDragging,subjectEl:this.subjectEl,pageX:t,pageY:n,deltaX:t-this.origPageX,deltaY:n-this.origPageY})}},this.containerEl=e,this.emitter=new Op,e.addEventListener(`mousedown`,this.handleMouseDown),e.addEventListener(`touchstart`,this.handleTouchStart,{passive:!0}),Xv()}destroy(){this.containerEl.removeEventListener(`mousedown`,this.handleMouseDown),this.containerEl.removeEventListener(`touchstart`,this.handleTouchStart,{passive:!0}),Zv()}tryStart(e){let t=this.querySubjectEl(e),n=e.target;return t&&(!this.handleSelector||Hl(n,this.handleSelector))?(this.subjectEl=t,this.isDragging=!0,this.wasTouchScroll=!1,!0):!1}cleanup(){Kv=!1,this.isDragging=!1,this.subjectEl=null,this.destroyScrollWatch()}querySubjectEl(e){return this.selector?Hl(e.target,this.selector):this.containerEl}shouldIgnoreMouse(){return Wv||this.isTouchDragging}cancelTouchScroll(){this.isDragging&&(Kv=!0)}initScrollWatch(e){this.shouldWatchScroll&&(this.recordCoords(e),window.addEventListener(`scroll`,this.handleScroll,!0))}recordCoords(e){this.shouldWatchScroll&&(this.prevPageX=e.pageX,this.prevPageY=e.pageY,this.prevScrollX=window.scrollX,this.prevScrollY=window.scrollY)}destroyScrollWatch(){this.shouldWatchScroll&&window.removeEventListener(`scroll`,this.handleScroll,!0)}createEventFromMouse(e,t){let n=0,r=0;return t?(this.origPageX=e.pageX,this.origPageY=e.pageY):(n=e.pageX-this.origPageX,r=e.pageY-this.origPageY),{origEvent:e,isTouch:!1,subjectEl:this.subjectEl,pageX:e.pageX,pageY:e.pageY,deltaX:n,deltaY:r}}createEventFromTouch(e,t){let n=e.touches,r,i,a=0,o=0;return n&&n.length?(r=n[0].pageX,i=n[0].pageY):(r=e.pageX,i=e.pageY),t?(this.origPageX=r,this.origPageY=i):(a=r-this.origPageX,o=i-this.origPageY),{origEvent:e,isTouch:!0,subjectEl:this.subjectEl,pageX:r,pageY:i,deltaX:a,deltaY:o}}};function Jv(e){return e.button===0&&!e.ctrlKey}function Yv(){Wv+=1,setTimeout(()=>{--Wv},lh.touchMouseIgnoreWait)}function Xv(){Gv+=1,Gv===1&&window.addEventListener(`touchmove`,Qv,{passive:!1})}function Zv(){--Gv,Gv||window.removeEventListener(`touchmove`,Qv,{passive:!1})}function Qv(e){Kv&&e.preventDefault()}var $v=class{constructor(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0}start(e,t,n){this.sourceEl=e,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=t-window.scrollX,this.origScreenY=n-window.scrollY,this.deltaX=0,this.deltaY=0,this.updateElPosition()}handleMove(e,t){this.deltaX=e-window.scrollX-this.origScreenX,this.deltaY=t-window.scrollY-this.origScreenY,this.updateElPosition()}setIsVisible(e){e?this.isVisible||(this.mirrorEl&&(this.mirrorEl.style.display=``),this.isVisible=e,this.updateElPosition()):this.isVisible&&=(this.mirrorEl&&(this.mirrorEl.style.display=`none`),e)}stop(e,t){let n=()=>{this.cleanup(),t()};e&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(n,this.revertDuration):setTimeout(n,0)}doRevertAnimation(e,t){let n=this.mirrorEl,r=this.sourceEl.getBoundingClientRect();n.style.transition=`top `+t+`ms,left `+t+`ms`,Kl(n,{left:r.left,top:r.top}),nu(n,()=>{n.style.transition=``,e()})}cleanup(){this.mirrorEl&&=(Vl(this.mirrorEl),null),this.sourceEl=null}updateElPosition(){this.sourceEl&&this.isVisible&&Kl(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})}getMirrorEl(){let e=this.sourceElRect,t=this.mirrorEl;return t||(t=this.mirrorEl=this.sourceEl.cloneNode(!0),t.style.userSelect=`none`,t.style.webkitUserSelect=`none`,t.style.pointerEvents=`none`,t.classList.add(`fc-event-dragging`),Kl(t,{position:`fixed`,zIndex:this.zIndex,visibility:``,boxSizing:`border-box`,width:e.right-e.left,height:e.bottom-e.top,right:`auto`,bottom:`auto`,margin:0}),this.parentNode.appendChild(t)),t}},ey=class extends Qm{constructor(e,t){super(),this.handleScroll=()=>{this.scrollTop=this.scrollController.getScrollTop(),this.scrollLeft=this.scrollController.getScrollLeft(),this.handleScrollChange()},this.scrollController=e,this.doesListening=t,this.scrollTop=this.origScrollTop=e.getScrollTop(),this.scrollLeft=this.origScrollLeft=e.getScrollLeft(),this.scrollWidth=e.getScrollWidth(),this.scrollHeight=e.getScrollHeight(),this.clientWidth=e.getClientWidth(),this.clientHeight=e.getClientHeight(),this.clientRect=this.computeClientRect(),this.doesListening&&this.getEventTarget().addEventListener(`scroll`,this.handleScroll)}destroy(){this.doesListening&&this.getEventTarget().removeEventListener(`scroll`,this.handleScroll)}getScrollTop(){return this.scrollTop}getScrollLeft(){return this.scrollLeft}setScrollTop(e){this.scrollController.setScrollTop(e),this.doesListening||(this.scrollTop=Math.max(Math.min(e,this.getMaxScrollTop()),0),this.handleScrollChange())}setScrollLeft(e){this.scrollController.setScrollLeft(e),this.doesListening||(this.scrollLeft=Math.max(Math.min(e,this.getMaxScrollLeft()),0),this.handleScrollChange())}getClientWidth(){return this.clientWidth}getClientHeight(){return this.clientHeight}getScrollWidth(){return this.scrollWidth}getScrollHeight(){return this.scrollHeight}handleScrollChange(){}},ty=class extends ey{constructor(e,t){super(new $m(e),t)}getEventTarget(){return this.scrollController.el}computeClientRect(){return Km(this.scrollController.el)}},ny=class extends ey{constructor(e){super(new eh,e)}getEventTarget(){return window}computeClientRect(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}}handleScrollChange(){this.clientRect=this.computeClientRect()}},ry=typeof performance==`function`?performance.now:Date.now,iy=class{constructor(){this.isEnabled=!0,this.scrollQuery=[window,`.fc-scroller`],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=()=>{if(this.isAnimating){let e=this.computeBestEdge(this.pointerScreenX+window.scrollX,this.pointerScreenY+window.scrollY);if(e){let t=ry();this.handleSide(e,(t-this.msSinceRequest)/1e3),this.requestAnimation(t)}else this.isAnimating=!1}}}start(e,t,n){this.isEnabled&&(this.scrollCaches=this.buildCaches(n),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(e,t))}handleMove(e,t){if(this.isEnabled){let n=e-window.scrollX,r=t-window.scrollY,i=this.pointerScreenY===null?0:r-this.pointerScreenY,a=this.pointerScreenX===null?0:n-this.pointerScreenX;i<0?this.everMovedUp=!0:i>0&&(this.everMovedDown=!0),a<0?this.everMovedLeft=!0:a>0&&(this.everMovedRight=!0),this.pointerScreenX=n,this.pointerScreenY=r,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(ry()))}}stop(){if(this.isEnabled){this.isAnimating=!1;for(let e of this.scrollCaches)e.destroy();this.scrollCaches=null}}requestAnimation(e){this.msSinceRequest=e,requestAnimationFrame(this.animate)}handleSide(e,t){let{scrollCache:n}=e,{edgeThreshold:r}=this,i=r-e.distance,a=i*i/(r*r)*this.maxVelocity*t,o=1;switch(e.name){case`left`:o=-1;case`right`:n.setScrollLeft(n.getScrollLeft()+a*o);break;case`top`:o=-1;case`bottom`:n.setScrollTop(n.getScrollTop()+a*o)}}computeBestEdge(e,t){let{edgeThreshold:n}=this,r=null,i=this.scrollCaches||[];for(let a of i){let i=a.clientRect,o=e-i.left,s=i.right-e,c=t-i.top,l=i.bottom-t;o>=0&&s>=0&&c>=0&&l>=0&&(c<=n&&this.everMovedUp&&a.canScrollUp()&&(!r||r.distance>c)&&(r={scrollCache:a,name:`top`,distance:c}),l<=n&&this.everMovedDown&&a.canScrollDown()&&(!r||r.distance>l)&&(r={scrollCache:a,name:`bottom`,distance:l}),o<=n&&this.everMovedLeft&&a.canScrollLeft()&&(!r||r.distance>o)&&(r={scrollCache:a,name:`left`,distance:o}),s<=n&&this.everMovedRight&&a.canScrollRight()&&(!r||r.distance>s)&&(r={scrollCache:a,name:`right`,distance:s}))}return r}buildCaches(e){return this.queryScrollEls(e).map(e=>e===window?new ny(!1):new ty(e,!1))}queryScrollEls(e){let t=[];for(let n of this.scrollQuery)typeof n==`object`?t.push(n):t.push(...Array.prototype.slice.call(e.getRootNode().querySelectorAll(n)));return t}},ay=class extends ch{constructor(e,t){super(e),this.containerEl=e,this.delay=null,this.minDistance=0,this.touchScrollAllowed=!0,this.mirrorNeedsRevert=!1,this.isInteracting=!1,this.isDragging=!1,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.delayTimeoutId=null,this.onPointerDown=e=>{this.isDragging||(this.isInteracting=!0,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,lu(document.body),du(document.body),e.isTouch||e.origEvent.preventDefault(),this.emitter.trigger(`pointerdown`,e),this.isInteracting&&!this.pointer.shouldIgnoreMove&&(this.mirror.setIsVisible(!1),this.mirror.start(e.subjectEl,e.pageX,e.pageY),this.startDelay(e),this.minDistance||this.handleDistanceSurpassed(e)))},this.onPointerMove=e=>{if(this.isInteracting){if(this.emitter.trigger(`pointermove`,e),!this.isDistanceSurpassed){let t=this.minDistance,n,{deltaX:r,deltaY:i}=e;n=r*r+i*i,n>=t*t&&this.handleDistanceSurpassed(e)}this.isDragging&&(e.origEvent.type!==`scroll`&&(this.mirror.handleMove(e.pageX,e.pageY),this.autoScroller.handleMove(e.pageX,e.pageY)),this.emitter.trigger(`dragmove`,e))}},this.onPointerUp=e=>{this.isInteracting&&(this.isInteracting=!1,uu(document.body),fu(document.body),this.emitter.trigger(`pointerup`,e),this.isDragging&&(this.autoScroller.stop(),this.tryStopDrag(e)),this.delayTimeoutId&&=(clearTimeout(this.delayTimeoutId),null))};let n=this.pointer=new qv(e);n.emitter.on(`pointerdown`,this.onPointerDown),n.emitter.on(`pointermove`,this.onPointerMove),n.emitter.on(`pointerup`,this.onPointerUp),t&&(n.selector=t),this.mirror=new $v,this.autoScroller=new iy}destroy(){this.pointer.destroy(),this.onPointerUp({})}startDelay(e){typeof this.delay==`number`?this.delayTimeoutId=setTimeout(()=>{this.delayTimeoutId=null,this.handleDelayEnd(e)},this.delay):this.handleDelayEnd(e)}handleDelayEnd(e){this.isDelayEnded=!0,this.tryStartDrag(e)}handleDistanceSurpassed(e){this.isDistanceSurpassed=!0,this.tryStartDrag(e)}tryStartDrag(e){this.isDelayEnded&&this.isDistanceSurpassed&&(!this.pointer.wasTouchScroll||this.touchScrollAllowed)&&(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(e.pageX,e.pageY,this.containerEl),this.emitter.trigger(`dragstart`,e),this.touchScrollAllowed===!1&&this.pointer.cancelTouchScroll())}tryStopDrag(e){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,e))}stopDrag(e){this.isDragging=!1,this.emitter.trigger(`dragend`,e)}setIgnoreMove(e){this.pointer.shouldIgnoreMove=e}setMirrorIsVisible(e){this.mirror.setIsVisible(e)}setMirrorNeedsRevert(e){this.mirrorNeedsRevert=e}setAutoScrollEnabled(e){this.autoScroller.isEnabled=e}},oy=class{constructor(e){this.el=e,this.origRect=qm(e),this.scrollCaches=Ym(e).map(e=>new ty(e,!0))}destroy(){for(let e of this.scrollCaches)e.destroy()}computeLeft(){let e=this.origRect.left;for(let t of this.scrollCaches)e+=t.origScrollLeft-t.getScrollLeft();return e}computeTop(){let e=this.origRect.top;for(let t of this.scrollCaches)e+=t.origScrollTop-t.getScrollTop();return e}isWithinClipping(e,t){let n={left:e,top:t};for(let e of this.scrollCaches)if(!sy(e.getEventTarget())&&!Om(n,e.clientRect))return!1;return!0}};function sy(e){let t=e.tagName;return t===`HTML`||t===`BODY`}var cy=class{constructor(e,t){this.useSubjectCenter=!1,this.requireInitial=!0,this.disablePointCheck=!1,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=e=>{let{dragging:t}=this;this.initialHit=null,this.movingHit=null,this.finalHit=null,this.prepareHits(),this.processFirstCoord(e),this.initialHit||!this.requireInitial?(t.setIgnoreMove(!1),this.emitter.trigger(`pointerdown`,e)):t.setIgnoreMove(!0)},this.handleDragStart=e=>{this.emitter.trigger(`dragstart`,e),this.handleMove(e,!0)},this.handleDragMove=e=>{this.emitter.trigger(`dragmove`,e),this.handleMove(e)},this.handlePointerUp=e=>{this.releaseHits(),this.emitter.trigger(`pointerup`,e)},this.handleDragEnd=e=>{this.movingHit&&this.emitter.trigger(`hitupdate`,null,!0,e),this.finalHit=this.movingHit,this.movingHit=null,this.emitter.trigger(`dragend`,e)},this.droppableStore=t,e.emitter.on(`pointerdown`,this.handlePointerDown),e.emitter.on(`dragstart`,this.handleDragStart),e.emitter.on(`dragmove`,this.handleDragMove),e.emitter.on(`pointerup`,this.handlePointerUp),e.emitter.on(`dragend`,this.handleDragEnd),this.dragging=e,this.emitter=new Op}processFirstCoord(e){let t={left:e.pageX,top:e.pageY},n=t,r=e.subjectEl,i;r instanceof HTMLElement&&(i=qm(r),n=Am(n,i));let a=this.initialHit=this.queryHitForOffset(n.left,n.top);if(a){if(this.useSubjectCenter&&i){let e=km(i,a.rect);e&&(n=jm(e))}this.coordAdjust=Mm(n,t)}else this.coordAdjust={left:0,top:0}}handleMove(e,t){let n=this.queryHitForOffset(e.pageX+this.coordAdjust.left,e.pageY+this.coordAdjust.top);(t||!ly(this.movingHit,n))&&(this.movingHit=n,this.emitter.trigger(`hitupdate`,n,!1,e))}prepareHits(){this.offsetTrackers=Ud(this.droppableStore,e=>(e.component.prepareHits(),new oy(e.el)))}releaseHits(){let{offsetTrackers:e}=this;for(let t in e)e[t].destroy();this.offsetTrackers={}}queryHitForOffset(e,t){let{droppableStore:n,offsetTrackers:r}=this,i=null;for(let a in n){let o=n[a].component,s=r[a];if(s&&s.isWithinClipping(e,t)){let n=s.computeLeft(),r=s.computeTop(),c=e-n,l=t-r,{origRect:u}=s,d=u.right-u.left,f=u.bottom-u.top;if(c>=0&&c=0&&li.layer)&&(e.componentId=a,e.context=o.context,e.rect.left+=n,e.rect.right+=n,e.rect.top+=r,e.rect.bottom+=r,i=e)}}}return i}};function ly(e,t){return!e&&!t||!!e==!!t&&cm(e.dateSpan,t.dateSpan)}function uy(e,t){let n={};for(let r of t.pluginHooks.datePointTransforms)Object.assign(n,r(e,t));return Object.assign(n,dy(e,t.dateEnv)),n}function dy(e,t){return{date:t.toDate(e.range.start),dateStr:t.formatIso(e.range.start,{omitTime:e.allDay}),allDay:e.allDay}}var fy=class extends xm{constructor(e){super(e),this.handlePointerDown=e=>{let{dragging:t}=this,n=e.origEvent.target;t.setIgnoreMove(!this.component.isValidDateDownEl(n))},this.handleDragEnd=e=>{let{component:t}=this,{pointer:n}=this.dragging;if(!n.wasTouchScroll){let{initialHit:n,finalHit:r}=this.hitDragging;if(n&&r&&ly(n,r)){let{context:r}=t,i=Object.assign(Object.assign({},uy(n.dateSpan,r)),{dayEl:n.dayEl,jsEvent:e.origEvent,view:r.viewApi||r.calendarApi.view});r.emitter.trigger(`dateClick`,i)}}},this.dragging=new ay(e.el),this.dragging.autoScroller.isEnabled=!1;let t=this.hitDragging=new cy(this.dragging,Cm(e));t.emitter.on(`pointerdown`,this.handlePointerDown),t.emitter.on(`dragend`,this.handleDragEnd)}destroy(){this.dragging.destroy()}},py=class extends xm{constructor(e){super(e),this.dragSelection=null,this.handlePointerDown=e=>{let{component:t,dragging:n}=this,{options:r}=t.context,i=r.selectable&&t.isValidDateDownEl(e.origEvent.target);n.setIgnoreMove(!i),n.delay=e.isTouch?my(t):null},this.handleDragStart=e=>{this.component.context.calendarApi.unselect(e)},this.handleHitUpdate=(e,t)=>{let{context:n}=this.component,r=null,i=!1;if(e){let t=this.hitDragging.initialHit;(e.componentId!==t.componentId||!this.isHitComboAllowed||this.isHitComboAllowed(t,e))&&(r=hy(t,e,n.pluginHooks.dateSelectionTransformers)),(!r||!Ch(r,e.dateProfile,n))&&(i=!0,r=null)}r?n.dispatch({type:`SELECT_DATES`,selection:r}):t||n.dispatch({type:`UNSELECT_DATES`}),i?su():cu(),t||(this.dragSelection=r)},this.handlePointerUp=e=>{this.dragSelection&&=(Pp(this.dragSelection,e,this.component.context),null)};let{component:t}=e,{options:n}=t.context,r=this.dragging=new ay(e.el);r.touchScrollAllowed=!1,r.minDistance=n.selectMinDistance||0,r.autoScroller.isEnabled=n.dragScroll;let i=this.hitDragging=new cy(this.dragging,Cm(e));i.emitter.on(`pointerdown`,this.handlePointerDown),i.emitter.on(`dragstart`,this.handleDragStart),i.emitter.on(`hitupdate`,this.handleHitUpdate),i.emitter.on(`pointerup`,this.handlePointerUp)}destroy(){this.dragging.destroy()}};function my(e){let{options:t}=e.context,n=t.selectLongPressDelay;return n??=t.longPressDelay,n}function hy(e,t,n){let r=e.dateSpan,i=t.dateSpan,a=[r.range.start,r.range.end,i.range.start,i.range.end];a.sort(yu);let o={};for(let r of n){let n=r(e,t);if(n===!1)return null;n&&Object.assign(o,n)}return o.range={start:a[0],end:a[3]},o.allDay=r.allDay,o}var gy=class e extends xm{constructor(t){super(t),this.subjectEl=null,this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null,this.handlePointerDown=e=>{let t=e.origEvent.target,{component:n,dragging:r}=this,{mirror:i}=r,{options:a}=n.context,o=n.context;this.subjectEl=e.subjectEl;let s=this.subjectSeg=Kp(e.subjectEl),c=(this.eventRange=s.eventRange).instance.instanceId;this.relevantEvents=tp(o.getCurrentData().eventStore,c),r.minDistance=e.isTouch?0:a.eventDragMinDistance,r.delay=e.isTouch&&c!==n.props.eventSelection?vy(n):null,i.parentNode=a.fixedMirrorParent?a.fixedMirrorParent:Hl(t,`.fc`),i.revertDuration=a.dragRevertDuration;let l=n.isValidSegDownEl(t)&&!Hl(t,`.fc-event-resizer`);r.setIgnoreMove(!l),this.isDragging=l&&e.subjectEl.classList.contains(`fc-event-draggable`)},this.handleDragStart=e=>{let t=this.component.context,n=this.eventRange,r=n.instance.instanceId;e.isTouch?r!==this.component.props.eventSelection&&t.dispatch({type:`SELECT_EVENT`,eventInstanceId:r}):t.dispatch({type:`UNSELECT_EVENT`}),this.isDragging&&(t.calendarApi.unselect(e),t.emitter.trigger(`eventDragStart`,{el:this.subjectEl,event:new $(t,n.def,n.instance),jsEvent:e.origEvent,view:t.viewApi}))},this.handleHitUpdate=(e,t)=>{if(!this.isDragging)return;let n=this.relevantEvents,r=this.hitDragging.initialHit,i=this.component.context,a=null,o=null,s=null,c=!1,l={affectedEvents:n,mutatedEvents:rp(),isEvent:!0};if(e){a=e.context;let t=a.options;i===a||t.editable&&t.droppable?(o=_y(r,e,this.eventRange.instance.range.start,a.getCurrentData().pluginHooks.eventDragMutationMassagers),o&&(s=Rp(n,a.getCurrentData().eventUiBases,o,a),l.mutatedEvents=s,Sh(l,e.dateProfile,a)||(c=!0,o=null,s=null,l.mutatedEvents=rp()))):a=null}this.displayDrag(a,l),c?su():cu(),t||(i===a&&ly(r,e)&&(o=null),this.dragging.setMirrorNeedsRevert(!o),this.dragging.setMirrorIsVisible(!e||!this.subjectEl.getRootNode().querySelector(`.fc-event-mirror`)),this.receivingContext=a,this.validMutation=o,this.mutatedRelevantEvents=s)},this.handlePointerUp=()=>{this.isDragging||this.cleanup()},this.handleDragEnd=e=>{if(this.isDragging){let t=this.component.context,n=t.viewApi,{receivingContext:r,validMutation:i}=this,a=this.eventRange.def,o=this.eventRange.instance,s=new $(t,a,o),c=this.relevantEvents,l=this.mutatedRelevantEvents,{finalHit:u}=this.hitDragging;if(this.clearDrag(),t.emitter.trigger(`eventDragStop`,{el:this.subjectEl,event:s,jsEvent:e.origEvent,view:n}),i){if(r===t){let r=new $(t,l.defs[a.defId],o?l.instances[o.instanceId]:null);t.dispatch({type:`MERGE_EVENTS`,eventStore:l});let u={oldEvent:s,event:r,relatedEvents:Up(l,t,o),revert(){t.dispatch({type:`MERGE_EVENTS`,eventStore:c})}},d={};for(let e of t.getCurrentData().pluginHooks.eventDropTransformers)Object.assign(d,e(i,t));t.emitter.trigger(`eventDrop`,Object.assign(Object.assign(Object.assign({},u),d),{el:e.subjectEl,delta:i.datesDelta,jsEvent:e.origEvent,view:n})),t.emitter.trigger(`eventChange`,u)}else if(r){let i={event:s,relatedEvents:Up(c,t,o),revert(){t.dispatch({type:`MERGE_EVENTS`,eventStore:c})}};t.emitter.trigger(`eventLeave`,Object.assign(Object.assign({},i),{draggedEl:e.subjectEl,view:n})),t.dispatch({type:`REMOVE_EVENTS`,eventStore:c}),t.emitter.trigger(`eventRemove`,i);let d=l.defs[a.defId],f=l.instances[o.instanceId],p=new $(r,d,f);r.dispatch({type:`MERGE_EVENTS`,eventStore:l});let m={event:p,relatedEvents:Up(l,r,f),revert(){r.dispatch({type:`REMOVE_EVENTS`,eventStore:l})}};r.emitter.trigger(`eventAdd`,m),e.isTouch&&r.dispatch({type:`SELECT_EVENT`,eventInstanceId:o.instanceId}),r.emitter.trigger(`drop`,Object.assign(Object.assign({},uy(u.dateSpan,r)),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:u.context.viewApi})),r.emitter.trigger(`eventReceive`,Object.assign(Object.assign({},m),{draggedEl:e.subjectEl,view:u.context.viewApi}))}}else t.emitter.trigger(`_noEventDrop`)}this.cleanup()};let{component:n}=this,{options:r}=n.context,i=this.dragging=new ay(t.el);i.pointer.selector=e.SELECTOR,i.touchScrollAllowed=!1,i.autoScroller.isEnabled=r.dragScroll;let a=this.hitDragging=new cy(this.dragging,wm);a.useSubjectCenter=t.useEventCenter,a.emitter.on(`pointerdown`,this.handlePointerDown),a.emitter.on(`dragstart`,this.handleDragStart),a.emitter.on(`hitupdate`,this.handleHitUpdate),a.emitter.on(`pointerup`,this.handlePointerUp),a.emitter.on(`dragend`,this.handleDragEnd)}destroy(){this.dragging.destroy()}displayDrag(e,t){let n=this.component.context,r=this.receivingContext;r&&r!==e&&(r===n?r.dispatch({type:`SET_EVENT_DRAG`,state:{affectedEvents:t.affectedEvents,mutatedEvents:rp(),isEvent:!0}}):r.dispatch({type:`UNSET_EVENT_DRAG`})),e&&e.dispatch({type:`SET_EVENT_DRAG`,state:t})}clearDrag(){let e=this.component.context,{receivingContext:t}=this;t&&t.dispatch({type:`UNSET_EVENT_DRAG`}),e!==t&&e.dispatch({type:`UNSET_EVENT_DRAG`})}cleanup(){this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null}};gy.SELECTOR=`.fc-event-draggable, .fc-event-resizable`;function _y(e,t,n,r){let i=e.dateSpan,a=t.dateSpan,o=i.range.start,s=a.range.start,c={};i.allDay!==a.allDay&&(c.allDay=a.allDay,c.hasEnd=t.context.options.allDayMaintainDuration,o=a.allDay?Y(n):n);let l=Rf(o,s,e.context.dateEnv,e.componentId===t.componentId?e.largeUnit:null);l.milliseconds&&(c.allDay=!1);let u={datesDelta:l,standardProps:c};for(let n of r)n(u,e,t);return u}function vy(e){let{options:t}=e.context,n=t.eventLongPressDelay;return n??=t.longPressDelay,n}var yy=class extends xm{constructor(e){super(e),this.draggingSegEl=null,this.draggingSeg=null,this.eventRange=null,this.relevantEvents=null,this.validMutation=null,this.mutatedRelevantEvents=null,this.handlePointerDown=e=>{let{component:t}=this,n=Kp(this.querySegEl(e)),r=this.eventRange=n.eventRange;this.dragging.minDistance=t.context.options.eventDragMinDistance,this.dragging.setIgnoreMove(!this.component.isValidSegDownEl(e.origEvent.target)||e.isTouch&&this.component.props.eventSelection!==r.instance.instanceId)},this.handleDragStart=e=>{let{context:t}=this.component,n=this.eventRange;this.relevantEvents=tp(t.getCurrentData().eventStore,this.eventRange.instance.instanceId);let r=this.querySegEl(e);this.draggingSegEl=r,this.draggingSeg=Kp(r),t.calendarApi.unselect(),t.emitter.trigger(`eventResizeStart`,{el:r,event:new $(t,n.def,n.instance),jsEvent:e.origEvent,view:t.viewApi})},this.handleHitUpdate=(e,t,n)=>{let{context:r}=this.component,i=this.relevantEvents,a=this.hitDragging.initialHit,o=this.eventRange.instance,s=null,c=null,l=!1,u={affectedEvents:i,mutatedEvents:rp(),isEvent:!0};e&&(e.componentId!==a.componentId||!this.isHitComboAllowed||this.isHitComboAllowed(a,e))&&(s=by(a,e,n.subjectEl.classList.contains(`fc-event-resizer-start`),o.range)),s&&(c=Rp(i,r.getCurrentData().eventUiBases,s,r),u.mutatedEvents=c,Sh(u,e.dateProfile,r)||(l=!0,s=null,c=null,u.mutatedEvents=null)),c?r.dispatch({type:`SET_EVENT_RESIZE`,state:u}):r.dispatch({type:`UNSET_EVENT_RESIZE`}),l?su():cu(),t||(s&&ly(a,e)&&(s=null),this.validMutation=s,this.mutatedRelevantEvents=c)},this.handleDragEnd=e=>{let{context:t}=this.component,n=this.eventRange.def,r=this.eventRange.instance,i=new $(t,n,r),a=this.relevantEvents,o=this.mutatedRelevantEvents;if(t.emitter.trigger(`eventResizeStop`,{el:this.draggingSegEl,event:i,jsEvent:e.origEvent,view:t.viewApi}),this.validMutation){let s=new $(t,o.defs[n.defId],r?o.instances[r.instanceId]:null);t.dispatch({type:`MERGE_EVENTS`,eventStore:o});let c={oldEvent:i,event:s,relatedEvents:Up(o,t,r),revert(){t.dispatch({type:`MERGE_EVENTS`,eventStore:a})}};t.emitter.trigger(`eventResize`,Object.assign(Object.assign({},c),{el:this.draggingSegEl,startDelta:this.validMutation.startDelta||J(0),endDelta:this.validMutation.endDelta||J(0),jsEvent:e.origEvent,view:t.viewApi})),t.emitter.trigger(`eventChange`,c)}else t.emitter.trigger(`_noEventResize`);this.draggingSeg=null,this.relevantEvents=null,this.validMutation=null};let{component:t}=e,n=this.dragging=new ay(e.el);n.pointer.selector=`.fc-event-resizer`,n.touchScrollAllowed=!1,n.autoScroller.isEnabled=t.context.options.dragScroll;let r=this.hitDragging=new cy(this.dragging,Cm(e));r.emitter.on(`pointerdown`,this.handlePointerDown),r.emitter.on(`dragstart`,this.handleDragStart),r.emitter.on(`hitupdate`,this.handleHitUpdate),r.emitter.on(`dragend`,this.handleDragEnd)}destroy(){this.dragging.destroy()}querySegEl(e){return Hl(e.subjectEl,`.fc-event`)}};function by(e,t,n,r){let i=e.context.dateEnv,a=e.dateSpan.range.start,o=t.dateSpan.range.start,s=Rf(a,o,i,e.largeUnit);if(n){if(i.add(r.start,s)r.start)return{endDelta:s};return null}var xy=class{constructor(e){this.context=e,this.isRecentPointerDateSelect=!1,this.matchesCancel=!1,this.matchesEvent=!1,this.onSelect=e=>{e.jsEvent&&(this.isRecentPointerDateSelect=!0)},this.onDocumentPointerDown=e=>{let t=this.context.options.unselectCancel,n=Jl(e.origEvent);this.matchesCancel=!!Hl(n,t),this.matchesEvent=!!Hl(n,gy.SELECTOR)},this.onDocumentPointerUp=e=>{let{context:t}=this,{documentPointer:n}=this,r=t.getCurrentData();if(!n.wasTouchScroll){if(r.dateSelection&&!this.isRecentPointerDateSelect){let n=t.options.unselectAuto;n&&(!n||!this.matchesCancel)&&t.calendarApi.unselect(e)}r.eventSelection&&!this.matchesEvent&&t.dispatch({type:`UNSELECT_EVENT`})}this.isRecentPointerDateSelect=!1};let t=this.documentPointer=new qv(document);t.shouldIgnoreMove=!0,t.shouldWatchScroll=!1,t.emitter.on(`pointerdown`,this.onDocumentPointerDown),t.emitter.on(`pointerup`,this.onDocumentPointerUp),e.emitter.on(`select`,this.onSelect)}destroy(){this.context.emitter.off(`select`,this.onSelect),this.documentPointer.destroy()}},Sy={fixedMirrorParent:Z},Cy={dateClick:Z,eventDragStart:Z,eventDragStop:Z,eventDrop:Z,eventResizeStart:Z,eventResizeStop:Z,eventResize:Z,drop:Z,eventReceive:Z,eventLeave:Z};lh.dataAttrPrefix=``;var wy=Og({name:`@fullcalendar/interaction`,componentInteractions:[fy,py,gy,yy],calendarInteractions:[xy],elementDraggingImpl:ay,optionRefiners:Sy,listenerRefiners:Cy});function Ty(e){return`${e.getFullYear()}-${`${e.getMonth()+1}`.padStart(2,`0`)}-${`${e.getDate()}`.padStart(2,`0`)}`}function Ey(e,t){let n=e?new Date(e):null,r=n&&!Number.isNaN(n.valueOf())?n.getHours():9,i=n&&!Number.isNaN(n.valueOf())?n.getMinutes():0,a=new Date(`${t}T00:00:00`);a.setHours(r,i,0,0);let o=a.getTimezoneOffset()*6e4;return new Date(a.getTime()-o).toISOString()}function Dy(e=new Date){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate());return t.setDate(t.getDate()-(t.getDay()+6)%7),Array.from({length:7},(e,n)=>{let r=new Date(t);return r.setDate(t.getDate()+n),r})}function Oy(e){return Array.isArray(e)?{items:e,nextCursor:null}:{items:e.items??[],nextCursor:e.next_cursor??null}}var ky={key:0,class:`inline-error`},Ay={class:`view-intro`},jy={class:`calendar-card`},My={class:`view-intro`},Ny={class:`habit-list`},Py={class:`habit-title`},Fy={key:0},Iy=[`onClick`],Ly={class:`week-grid`},Ry=[`onClick`],zy=[`value`,`placeholder`,`onChange`],By={key:0,class:`empty-panel`},Vy={class:`settings-grid`},Hy={class:`tool-card`},Uy={class:`file-button`},Wy={class:`tool-card`},Gy={class:`file-button`},Ky=[`disabled`],qy={key:0},Jy={class:`tool-card wide`},Yy=[`onClick`],Xy={key:0},Zy={key:0,class:`tool-card wide`},Qy=hr({__name:`MvpPanel`,props:{view:{},tasks:{}},emits:[`changed`,`notice`],setup(e,{emit:t}){let n=e,r=t,i=F([]),a=F([]),o=F([]),s=F(!1),c=F(``),l=F(``),u=F(`boolean`),d=F(1),f=F(null),p=F(null),m=F(null),h=Va(()=>Dy());async function g(e,t={}){let n={...t.headers||{}};t.body&&!(t.body instanceof FormData)&&(n[`Content-Type`]=`application/json`);let r=await fetch(`/api/v1`+e,{credentials:`include`,...t,headers:n});if(!r.ok)throw Error((await r.json().catch(()=>({}))).detail||`请求失败 (${r.status})`);let i=r.headers.get(`content-type`)||``;return r.status===204?null:i.includes(`json`)?r.json():r.blob()}async function _(e){s.value=!0,c.value=``;try{await e()}catch(e){c.value=e instanceof Error?e.message:`请求失败`}finally{s.value=!1}}async function v(){await _(async()=>{let e=Oy(await g(`/habits`));i.value=e.items,await Promise.all(i.value.map(async e=>{try{let[t,n]=await Promise.all([g(`/habits/${e.id}/logs?from=${Ty(h.value[0])}&to=${Ty(h.value[6])}`),g(`/habits/${e.id}/stats`)]);e.logs=Oy(t).items,e.stats=n}catch{}}))})}async function y(){l.value.trim()&&await _(async()=>{await g(`/habits`,{method:`POST`,body:JSON.stringify({name:l.value.trim(),type:u.value,target:d.value})}),l.value=``,await v(),r(`notice`,`习惯已创建`)})}function b(e,t){return e.logs?.find(e=>e.date===t)}async function x(e,t,n){await _(async()=>{await g(`/habits/${e.id}/logs`,{method:`POST`,body:JSON.stringify({date:t,value:e.type===`numeric`?n??e.target??1:!b(e,t)?.value})}),await v(),r(`notice`,`打卡已记录`)})}async function S(e){confirm(`删除习惯“${e.name}”?`)&&await _(async()=>{await g(`/habits/${e.id}`,{method:`DELETE`}),await v()})}async function C(e){let t=n.tasks.find(t=>t.id===e.event.id);if(!t)return;let i=t.due_at;try{if(await g(`/tasks/${t.id}`,{method:`PATCH`,body:JSON.stringify({due_at:Ey(i,e.event.startStr.slice(0,10)),version:t.version})}),r(`changed`),confirm(`日期已更新。要撤销吗?`)){let e=n.tasks.find(e=>e.id===t.id)||t;await g(`/tasks/${t.id}`,{method:`PATCH`,body:JSON.stringify({due_at:i,version:e.version})}),r(`changed`)}}catch(t){e.revert(),c.value=t instanceof Error?t.message:`移动失败`}}let w=Va(()=>({plugins:[Uv,wy],initialView:`dayGridMonth`,locale:`zh-cn`,firstDay:1,height:`auto`,editable:!0,dayMaxEvents:4,headerToolbar:{left:`prev,next today`,center:`title`,right:``},events:n.tasks.filter(e=>e.due_at).map(e=>({id:e.id,title:e.title,start:e.due_at})),eventDrop:C}));async function ee(){await _(async()=>{let[e,t]=await Promise.all([g(`/sessions`).catch(()=>[]),g(`/audit-logs?limit=20`).catch(()=>[])]);a.value=Oy(e).items,o.value=Oy(t).items})}async function te(e){await _(async()=>{await g(`/sessions/${e}`,{method:`DELETE`}),await ee(),r(`notice`,`会话已撤销`)})}function ne(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}async function T(){await _(async()=>ne(await g(`/export`),`dodo-export.json`))}async function re(){f.value&&await _(async()=>{let e=new FormData;e.append(`file`,f.value),p.value=await g(`/import/ticktick/preview`,{method:`POST`,body:e})})}async function ie(){await _(async()=>{let e=new FormData;e.append(`file`,f.value);let t=await g(`/import/ticktick`,{method:`POST`,body:e});p.value=null,r(`changed`),r(`notice`,`导入完成:新增 ${t?.imported??0},跳过 ${t?.skipped??0}`)})}async function E(){m.value&&confirm(`恢复为合并模式,将导入 JSON 中的清单与任务。继续吗?`)&&await _(async()=>{await g(`/restore?mode=merge`,{method:`POST`,body:await m.value.text()}),r(`changed`),r(`notice`,`数据已恢复`)})}return Ar(()=>n.view===`habits`?v():n.view===`settings`?ee():void 0),(t,n)=>(R(),z(`section`,{class:A([`mvp-view`,{loading:s.value}])},[c.value?(R(),z(`p`,ky,j(c.value),1)):U(``,!0),e.view===`calendar`?(R(),z(L,{key:1},[B(`header`,Ay,[n[5]||=B(`div`,null,[B(`small`,null,`拖动任务即可改期`),B(`h2`,null,`月历`)],-1),B(`span`,null,j(e.tasks.filter(e=>e.due_at).length)+` 个已排期任务`,1)]),B(`div`,jy,[V(I(ov),{options:w.value},null,8,[`options`])])],64)):e.view===`habits`?(R(),z(L,{key:2},[B(`header`,My,[n[7]||=B(`div`,null,[B(`small`,null,`今天做一点,明天更轻松`),B(`h2`,null,`习惯`)],-1),B(`button`,{class:`soft-button`,onClick:v},[V(I(Ws)),n[6]||=H(`刷新`,-1)])]),B(`form`,{class:`habit-create`,onSubmit:ps(y,[`prevent`])},[An(B(`input`,{"onUpdate:modelValue":n[0]||=e=>l.value=e,placeholder:`新习惯名称`},null,512),[[rs,l.value]]),An(B(`select`,{"onUpdate:modelValue":n[1]||=e=>u.value=e},[...n[8]||=[B(`option`,{value:`boolean`},`完成 / 未完成`,-1),B(`option`,{value:`numeric`},`数值`,-1)]],512),[[os,u.value]]),u.value===`numeric`?An((R(),z(`input`,{key:0,"onUpdate:modelValue":n[2]||=e=>d.value=e,type:`number`,min:`0`,step:`any`,"aria-label":`目标值`},null,512)),[[rs,d.value,void 0,{number:!0}]]):U(``,!0),B(`button`,null,[V(I(Us)),n[9]||=H(`添加`,-1)])],32),B(`div`,Ny,[(R(!0),z(L,null,Br(i.value,e=>(R(),z(`article`,{key:e.id,class:`habit-card`},[B(`div`,Py,[B(`div`,null,[B(`h3`,null,j(e.name),1),e.stats?(R(),z(`small`,Fy,`连续 `+j(e.stats.current_streak??0)+` 天 · 完成率 `+j(Math.round((e.stats.completion_rate??0)*100))+`%`,1)):U(``,!0)]),B(`button`,{class:`icon ghost`,"aria-label":`删除习惯`,onClick:t=>S(e)},[V(I(Js))],8,Iy)]),B(`div`,Ly,[(R(!0),z(L,null,Br(h.value,t=>(R(),z(`div`,{key:I(Ty)(t)},[B(`small`,null,[H(j([`一`,`二`,`三`,`四`,`五`,`六`,`日`][(t.getDay()+6)%7]),1),n[10]||=B(`br`,null,null,-1),H(j(t.getDate()),1)]),e.type===`numeric`?(R(),z(`input`,{key:1,type:`number`,value:b(e,I(Ty)(t))?.value??``,placeholder:String(e.target??1),onChange:n=>x(e,I(Ty)(t),Number(n.target.value))},null,40,zy)):(R(),z(`button`,{key:0,class:A([`habit-check`,{done:b(e,I(Ty)(t))?.value}]),onClick:n=>x(e,I(Ty)(t))},j(b(e,I(Ty)(t))?.value?`✓`:`·`),11,Ry))]))),128))])]))),128)),!i.value.length&&!s.value?(R(),z(`div`,By,`还没有习惯,从一件容易坚持的小事开始。`)):U(``,!0)])],64)):(R(),z(L,{key:3},[n[20]||=B(`header`,{class:`view-intro`},[B(`div`,null,[B(`small`,null,`备份、迁移与安全`),B(`h2`,null,`设置与数据`)])],-1),B(`div`,Vy,[B(`article`,Hy,[V(I(Ps)),n[13]||=B(`h3`,null,`数据导出与恢复`,-1),n[14]||=B(`p`,null,`下载完整 JSON 备份,或从备份恢复。`,-1),B(`button`,{class:`soft-button`,onClick:T},[V(I(Ns)),n[11]||=H(`导出 JSON`,-1)]),B(`label`,Uy,[V(I(Es)),n[12]||=H(`选择备份`,-1),B(`input`,{type:`file`,accept:`application/json`,onChange:n[3]||=e=>m.value=e.target.files?.[0]||null},null,32)]),m.value?(R(),z(`button`,{key:0,class:`danger-button`,onClick:E},`确认恢复`)):U(``,!0)]),B(`article`,Wy,[V(I(Ys)),n[16]||=B(`h3`,null,`导入`,-1),n[17]||=B(`p`,null,`先预览变化,确认后才写入。`,-1),B(`label`,Gy,[n[15]||=H(`选择文件`,-1),B(`input`,{type:`file`,accept:`.json,.csv`,onChange:n[4]||=e=>f.value=e.target.files?.[0]||null},null,32)]),B(`button`,{disabled:!f.value,class:`soft-button`,onClick:re},`生成预览`,8,Ky),p.value?(R(),z(`pre`,qy,j(JSON.stringify(p.value,null,2)),1)):U(``,!0),p.value?(R(),z(`button`,{key:1,class:`primary-small`,onClick:ie},`确认导入`)):U(``,!0)]),B(`article`,Jy,[V(I(Bs)),n[18]||=B(`h3`,null,`登录会话`,-1),(R(!0),z(L,null,Br(a.value,e=>(R(),z(`div`,{key:e.id,class:`session-row`},[B(`span`,null,[B(`b`,null,j(e.current?`当前设备`:`其他设备`),1),B(`small`,null,j(e.user_agent||`未知设备`)+` · `+j(e.last_seen_at||e.created_at),1)]),e.current?U(``,!0):(R(),z(`button`,{key:0,class:`danger-text`,onClick:t=>te(e.id)},`撤销`,8,Yy))]))),128)),a.value.length?U(``,!0):(R(),z(`p`,Xy,`没有可显示的会话。`))]),o.value.length?(R(),z(`article`,Zy,[V(I(Ts)),n[19]||=B(`h3`,null,`最近活动`,-1),(R(!0),z(L,null,Br(o.value,(e,t)=>(R(),z(`div`,{key:e.id||t,class:`audit-row`},[B(`span`,null,j(e.action||e.event||`变更`),1),B(`small`,null,j(e.created_at||e.timestamp),1)]))),128))])):U(``,!0)])],64))],2))}}),$y={key:0,class:`center`},eb={key:1,class:`auth-shell`},tb={class:`auth-card`},nb={key:0,role:`alert`},rb={key:2,class:`shell`},ib={class:`brand-row`},ab={class:`primary-nav`},ob={class:`section-title`},sb={class:`folders`},cb={class:`folder-row`},lb=[`onClick`],ub={class:`row-actions`},db=[`onClick`],fb=[`onClick`],pb=[`onClick`],mb=[`onClick`],hb={class:`row-actions`},gb=[`onClick`],_b=[`onClick`],vb=[`onClick`],yb={class:`row-actions`},bb=[`onClick`],xb=[`onClick`],Sb={class:`topbar`},Cb={class:`search`},wb={class:`list-toolbar`},Tb={key:0},Eb={key:1,class:`batch-bar`},Db=[`onClick`],Ob=[`onClick`],kb=[`onClick`],Ab={class:`meta`},jb={key:0},Mb={key:1},Nb=[`title`],Pb=[`onClick`],Fb=[`onClick`],Ib=[`onClick`],Lb=[`onClick`],Rb=[`onClick`],zb={key:0,class:`empty`},Bb={class:`detail-head`},Vb={key:0,class:`detail-form`},Hb={class:`detail-title`},Ub=[`value`],Wb=[`value`],Gb={key:0},Kb={class:`field`},qb={class:`field-label`},Jb={class:`tag-picker`},Yb=[`onClick`],Xb={key:0,class:`hint`},Zb={class:`field markdown`},Qb={class:`field-label`},$b=[`innerHTML`],ex={class:`subtasks`},tx={class:`field-label`},nx=[`onClick`],rx={class:`check`},ix={key:0,class:`hint`},ax={class:`detail-actions`},ox={key:1,class:`paper`},sx={class:`bottom`},cx={key:0,class:`toast`,role:`status`},lx={key:2,class:`error-toast`,role:`alert`};ys(hr({__name:`App`,setup(e){let t=F(null),n=F(!1),r=F(``),i=F(``),a=F([]),o=F([]),s=F([]),c=F([]),l=F([]),u=F(``),d=F(`tasks`),f=F(null),p=F(new Set),m=F(``),h=F(``),g=F(``),_=F(``),v=F(!1),y=F(!1),b=F(!1),x=F(!1),S=F(!0),C=F(new Set),w=Va(()=>d.value===`trash`?`回收站`:d.value===`today`?`今天`:d.value===`upcoming`?`最近 7 天`:d.value===`calendar`?`月历`:d.value===`habits`?`习惯`:d.value===`settings`?`设置与数据`:o.value.find(e=>e.id===u.value)?.name||`收集箱`),ee=Va(()=>d.value===`trash`?l.value:c.value),te=Va(()=>{let e=new Date,t=new Date(e);t.setDate(t.getDate()+7);let n=ee.value;return h.value.trim()?n:(d.value===`tasks`&&(n=n.filter(e=>e.list_id===u.value)),[`calendar`,`habits`,`settings`].includes(d.value)?[]:(d.value===`today`&&(n=n.filter(t=>t.due_at&&new Date(t.due_at).toDateString()===e.toDateString())),d.value===`upcoming`&&(n=n.filter(n=>n.due_at&&new Date(n.due_at)>=e&&new Date(n.due_at)<=t)),!S.value&&d.value!==`trash`&&(n=n.filter(e=>!e.completed)),n))}),ne=Va(()=>tc(ec(te.value,h.value))),T=Va(()=>ne.value),re=Va(()=>p.value.size),ie;In(h,()=>{ie&&window.clearTimeout(ie),d.value!==`trash`&&(ie=window.setTimeout(()=>ce(),250))});async function E(e,t={}){let n=await fetch(`/api/v1`+e,{credentials:`include`,headers:{"Content-Type":`application/json`,...t.headers||{}},...t});if(!n.ok){let e=`请求失败`;try{let t=await n.json();e=typeof t.detail==`string`?t.detail:e}catch{}throw Error(e)}return n.status===204?null:n.json()}function D(e){_.value=e,window.setTimeout(()=>{_.value===e&&(_.value=``)},2400)}function O(e){g.value=e instanceof Error?e.message:`请求失败`}async function ae(){try{let e=await E(`/setup/status`);t.value=e.initialized,e.initialized&&(await E(`/me`),n.value=!0,await ce())}catch{n.value=!1,t.value??=!0}}async function oe(){g.value=``;try{await E(t.value?`/auth/login`:`/setup/initialize`,{method:`POST`,body:JSON.stringify({username:r.value,password:i.value})}),t.value=!0,n.value=!0,await ce()}catch(e){O(e)}}async function se(e){let t=[],n=null;do{let r=e.includes(`?`)?`&`:`?`,i=await E(n?`${e}${r}cursor=${encodeURIComponent(n)}`:e);t.push(...i.items??i),n=i.next_cursor??null}while(n);return t}async function ce(){v.value=!0,g.value=``;try{let e=h.value?`/tasks?q=${encodeURIComponent(h.value)}`:`/tasks`,[t,n,r,i]=await Promise.all([E(`/folders`),E(`/lists`),E(`/tags`).catch(()=>[]),se(e)]);a.value=t,o.value=n,s.value=r,c.value=i,u.value||=o.value.find(e=>e.is_inbox)?.id||o.value[0]?.id||``,C.value=new Set(a.value.map(e=>e.id))}catch(e){O(e)}finally{v.value=!1}}async function le(){try{l.value=await se(`/trash`)}catch(e){O(e)}}async function k(e,t){d.value=e,t&&(u.value=t),f.value=null,p.value=new Set,y.value=!1,b.value=!1,e===`trash`&&await le()}async function de(){if(m.value.trim()&&u.value)try{let e=await E(`/tasks`,{method:`POST`,body:JSON.stringify({title:m.value.trim(),list_id:u.value})});c.value.push(e),m.value=``,ye(e),D(`任务已添加`)}catch(e){O(e)}}async function fe(e,t){let n=await E(`/tasks/${e.id}`,{method:`PATCH`,body:JSON.stringify({...t,version:e.version})}),r=c.value.findIndex(t=>t.id===e.id);return r>=0&&(c.value[r]={...c.value[r],...n}),f.value?.id===e.id&&(f.value={...f.value,...n}),n}async function pe(e){try{await fe(e,{completed:!e.completed}),D(e.completed?`已重新打开`:`完成啦`)}catch(e){O(e)}}async function me(){if(f.value?.title.trim())try{let e=f.value;await fe(e,{title:e.title.trim(),description:e.description,priority:Number(e.priority),due_at:rc(nc(e.due_at)),list_id:e.list_id,recurrence_rule:e.recurrence_rule||null,recurrence_end_at:e.recurrence_end_at||null,tag_ids:(e.tags??[]).map(e=>e.id)}),D(`已保存`)}catch(e){O(e)}}async function he(e){if(window.confirm(`把“${e.title}”移到回收站?`))try{await E(`/tasks/${e.id}`,{method:`DELETE`}),c.value=c.value.filter(t=>t.id!==e.id&&t.parent_id!==e.id),f.value=null,b.value=!1,D(`已移到回收站`)}catch(e){O(e)}}async function ge(e){try{await E(`/tasks/${e.id}/restore`,{method:`POST`}),l.value=l.value.filter(t=>t.id!==e.id),D(`任务已恢复`)}catch(e){O(e)}}async function _e(e){if(window.confirm(`永久删除“${e.title}”?这个操作不能撤销。`))try{await E(`/trash/${e.id}`,{method:`DELETE`}),l.value=l.value.filter(t=>t.id!==e.id),D(`已永久删除`)}catch(e){O(e)}}async function ve(){if(!f.value)return;let e=window.prompt(`子任务名称`)?.trim();if(e)try{let t=await E(`/tasks`,{method:`POST`,body:JSON.stringify({title:e,list_id:f.value.list_id,parent_id:f.value.id})});c.value.push(t),D(`子任务已添加`)}catch(e){O(e)}}function ye(e){f.value={...e,tags:e.tags?[...e.tags]:[]},x.value=!1,b.value=!0}function be(e){let t=new Set(p.value);t.has(e)?t.delete(e):t.add(e),p.value=t}async function xe(e){if(!p.value.size)return;let t={task_ids:[...p.value]};if(e===`complete`&&(t.completed=!0),e===`move`){let e=window.prompt(`输入目标清单 ID`,u.value)?.trim();if(!e)return;t.list_id=e}try{e===`delete`&&(t.soft_delete=!0),await E(`/tasks/batch`,{method:`POST`,body:JSON.stringify(t)}),p.value=new Set,await ce(),D(e===`delete`?`已批量移到回收站`:`批量操作完成`)}catch(e){O(e)}}async function Se(){let e=window.prompt(`文件夹名称`)?.trim();if(e)try{a.value.push(await E(`/folders`,{method:`POST`,body:JSON.stringify({name:e})})),D(`文件夹已创建`)}catch(e){O(e)}}async function Ce(e=null){let t=window.prompt(`清单名称`)?.trim();if(t)try{let n=await E(`/lists`,{method:`POST`,body:JSON.stringify({name:t,folder_id:e})});o.value.push(n),await k(`tasks`,n.id),D(`清单已创建`)}catch(e){O(e)}}async function we(e,t){let n=window.prompt(`新名称`,t.name)?.trim();if(n&&n!==t.name)try{let r=await E(`/${e}/${t.id}`,{method:`PATCH`,body:JSON.stringify({name:n})});Object.assign(t,r),D(`已重命名`)}catch(e){O(e)}}async function M(e,t){if(window.confirm(`删除“${t.name}”?`))try{await E(`/${e}/${t.id}`,{method:`DELETE`}),await ce(),D(`已删除`)}catch(e){O(e)}}async function Te(){let e=window.prompt(`标签名称`)?.trim();if(!e)return;let t=window.prompt(`标签颜色`,`#F15A29`)||`#F15A29`;try{s.value.push(await E(`/tags`,{method:`POST`,body:JSON.stringify({name:e,color:t})})),D(`标签已创建`)}catch(e){O(e)}}function Ee(e){return!!f.value?.tags?.some(t=>t.id===e.id)}function N(e){f.value&&(f.value.tags=Ee(e)?(f.value.tags??[]).filter(t=>t.id!==e.id):[...f.value.tags??[],e])}function De(e){let t=new Set(C.value);t.has(e)?t.delete(e):t.add(e),C.value=t}function Oe(e){return e?new Intl.DateTimeFormat(`zh-CN`,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(new Date(e)):``}function ke(){_n(()=>document.querySelector(`.quick-input`)?.focus())}return Ar(ae),(e,l)=>t.value===null?(R(),z(`div`,$y,[...l[39]||=[B(`span`,{class:`loader`},null,-1),H(`正在打开 dodo…`,-1)]])):n.value?(R(),z(`div`,rb,[y.value||b.value?(R(),z(`div`,{key:0,class:`scrim`,onClick:l[2]||=e=>{y.value=!1,b.value=!1}})):U(``,!0),B(`aside`,{class:A([`sidebar`,{open:y.value}])},[B(`div`,ib,[l[43]||=B(`div`,{class:`brand small`},[H(`do`),B(`span`,null,`do`)],-1),B(`button`,{class:`icon mobile-only`,"aria-label":`关闭菜单`,onClick:l[3]||=e=>y.value=!1},[V(I(Xs))])]),B(`nav`,ab,[B(`button`,{class:A({active:d.value===`tasks`&&o.value.find(e=>e.id===u.value)?.is_inbox}),onClick:l[4]||=e=>k(`tasks`,o.value.find(e=>e.is_inbox)?.id)},[V(I(Ls)),l[44]||=H(`收集箱`,-1)],2),B(`button`,{class:A({active:d.value===`today`}),onClick:l[5]||=e=>k(`today`)},[V(I(zs)),l[45]||=H(`今天`,-1)],2),B(`button`,{class:A({active:d.value===`upcoming`}),onClick:l[6]||=e=>k(`upcoming`)},[V(I(Ds)),l[46]||=H(`最近 7 天`,-1)],2),B(`button`,{class:A({active:d.value===`calendar`}),onClick:l[7]||=e=>k(`calendar`)},[V(I(Os)),l[47]||=H(`月历`,-1)],2),B(`button`,{class:A({active:d.value===`habits`}),onClick:l[8]||=e=>k(`habits`)},[V(I(Gs)),l[48]||=H(`习惯`,-1)],2),B(`button`,{class:A({active:d.value===`trash`}),onClick:l[9]||=e=>k(`trash`)},[V(I(Js)),l[49]||=H(`回收站`,-1)],2)]),B(`div`,ob,[l[50]||=B(`span`,null,`我的清单`,-1),B(`span`,null,[B(`button`,{class:`mini-icon`,"aria-label":`新建文件夹`,onClick:Se},[V(I(Fs))]),B(`button`,{class:`mini-icon`,"aria-label":`新建清单`,onClick:l[10]||=e=>Ce(null)},[V(I(Us))])])]),B(`div`,sb,[(R(!0),z(L,null,Br(a.value,e=>(R(),z(`div`,{key:e.id,class:`folder-block`},[B(`div`,cb,[B(`button`,{onClick:t=>De(e.id)},[C.value.has(e.id)?(R(),la(I(As),{key:0})):(R(),la(I(js),{key:1})),V(I(Fs)),H(j(e.name),1)],8,lb),B(`span`,ub,[B(`button`,{"aria-label":`重命名文件夹`,onClick:t=>we(`folders`,e)},[V(I(Hs))],8,db),B(`button`,{"aria-label":`删除文件夹`,onClick:t=>M(`folders`,e)},[V(I(Js))],8,fb),B(`button`,{"aria-label":`在文件夹中新建清单`,onClick:t=>Ce(e.id)},[V(I(Us))],8,pb)])]),(R(!0),z(L,null,Br(o.value.filter(t=>t.folder_id===e.id&&!t.is_inbox),t=>An((R(),z(`button`,{key:t.id,class:A([`list-row`,{active:d.value===`tasks`&&u.value===t.id}]),onClick:e=>k(`tasks`,t.id)},[l[51]||=B(`i`,null,null,-1),B(`span`,null,j(t.name),1),B(`span`,hb,[B(`button`,{"aria-label":`重命名清单`,onClick:ps(e=>we(`lists`,t),[`stop`])},[V(I(Hs))],8,gb),B(`button`,{"aria-label":`删除清单`,onClick:ps(e=>M(`lists`,t),[`stop`])},[V(I(Js))],8,_b)])],10,mb)),[[So,C.value.has(e.id)]])),128))]))),128)),(R(!0),z(L,null,Br(o.value.filter(e=>!e.folder_id&&!e.is_inbox),e=>(R(),z(`button`,{key:e.id,class:A([`list-row`,{active:d.value===`tasks`&&u.value===e.id}]),onClick:t=>k(`tasks`,e.id)},[l[52]||=B(`i`,null,null,-1),B(`span`,null,j(e.name),1),B(`span`,yb,[B(`button`,{"aria-label":`重命名清单`,onClick:ps(t=>we(`lists`,e),[`stop`])},[V(I(Hs))],8,bb),B(`button`,{"aria-label":`删除清单`,onClick:ps(t=>M(`lists`,e),[`stop`])},[V(I(Js))],8,xb)])],10,vb))),128))]),B(`button`,{class:A([`settings`,{active:d.value===`settings`}]),onClick:l[11]||=e=>k(`settings`)},[V(I(qs)),l[53]||=H(`设置`,-1)],2)],2),B(`main`,null,[B(`header`,Sb,[B(`button`,{class:`icon mobile-only`,"aria-label":`打开菜单`,onClick:l[12]||=e=>y.value=!0},[V(I(Vs))]),B(`div`,null,[l[54]||=B(`p`,null,`今天也慢慢来`,-1),B(`h1`,null,j(w.value),1)]),B(`label`,Cb,[V(I(Ks)),An(B(`input`,{"onUpdate:modelValue":l[13]||=e=>h.value=e,placeholder:`搜索任务…`,"aria-label":`搜索任务`},null,512),[[rs,h.value]]),l[55]||=B(`kbd`,null,`⌘ K`,-1)])]),[`calendar`,`habits`,`settings`].includes(d.value)?(R(),la(Qy,{key:d.value,view:d.value,tasks:c.value,onChanged:ce,onNotice:D},null,8,[`view`,`tasks`])):(R(),z(L,{key:1},[d.value===`trash`?U(``,!0):(R(),z(`form`,{key:0,class:`quick`,onSubmit:ps(de,[`prevent`])},[V(I(Ms)),An(B(`input`,{"onUpdate:modelValue":l[14]||=e=>m.value=e,class:`quick-input`,placeholder:`添加任务,按回车保存`},null,512),[[rs,m.value]]),l[56]||=B(`button`,null,`添加`,-1)],32)),B(`div`,wb,[d.value===`trash`?U(``,!0):(R(),z(`label`,Tb,[An(B(`input`,{"onUpdate:modelValue":l[15]||=e=>S.value=e,type:`checkbox`},null,512),[[is,S.value]]),l[57]||=H(` 显示已完成`,-1)])),B(`span`,null,j(te.value.length)+` 项`,1),h.value?(R(),z(`button`,{key:1,class:`link`,onClick:l[16]||=e=>h.value=``},`清除搜索`)):U(``,!0)]),re.value?(R(),z(`div`,Eb,[B(`b`,null,`已选 `+j(re.value)+` 项`,1),B(`button`,{onClick:l[17]||=e=>xe(`complete`)},[V(I(ks)),l[58]||=H(`完成`,-1)]),B(`button`,{onClick:l[18]||=e=>xe(`move`)},[V(I(Fs)),l[59]||=H(`移动`,-1)]),B(`button`,{class:`danger`,onClick:l[19]||=e=>xe(`delete`)},[V(I(Js)),l[60]||=H(`删除`,-1)]),B(`button`,{class:`icon`,"aria-label":`取消选择`,onClick:l[20]||=e=>p.value=new Set},[V(I(Xs))])])):U(``,!0),B(`section`,{class:A([`task-list`,{loading:v.value}])},[(R(!0),z(L,null,Br(T.value,e=>(R(),z(L,{key:e.task.id},[B(`article`,{class:A([`task-row`,{done:e.task.completed,selected:f.value?.id===e.task.id}])},[d.value===`trash`?U(``,!0):(R(),z(`button`,{key:0,class:A([`select-box`,{checked:p.value.has(e.task.id)}]),"aria-label":`选择任务`,onClick:ps(t=>be(e.task.id),[`stop`])},[p.value.has(e.task.id)?(R(),la(I(ks),{key:0})):U(``,!0)],10,Db)),d.value===`trash`?U(``,!0):(R(),z(`button`,{key:1,class:A([`check`,`p${e.task.priority}`]),"aria-label":`切换完成状态`,onClick:ps(t=>pe(e.task),[`stop`])},[e.task.completed?(R(),la(I(ks),{key:0})):U(``,!0)],10,Ob)),B(`button`,{class:`task-main`,onClick:t=>d.value===`trash`?void 0:ye(e.task)},[B(`strong`,null,j(e.task.title),1),B(`span`,Ab,[e.task.due_at?(R(),z(`span`,jb,[V(I(Ds)),H(j(Oe(e.task.due_at)),1)])):U(``,!0),e.subtasks.length?(R(),z(`span`,Mb,[V(I(Rs)),H(j(e.subtasks.filter(e=>e.completed).length)+`/`+j(e.subtasks.length),1)])):U(``,!0),(R(!0),z(L,null,Br(e.task.tags,e=>(R(),z(`i`,{key:e.id,class:`tag-dot`,style:ue({background:e.color}),title:e.name},null,12,Nb))),128))])],8,kb),e.task.priority?(R(),z(`span`,{key:2,class:A([`priority`,`p${e.task.priority}`])},j([``,`低`,`中`,`高`][e.task.priority]),3)):U(``,!0),d.value===`trash`?(R(),z(`button`,{key:3,class:`restore`,onClick:t=>ge(e.task)},[V(I(Es)),l[61]||=H(`恢复`,-1)],8,Pb)):(R(),z(`button`,{key:4,class:`icon ghost`,"aria-label":`删除任务`,onClick:ps(t=>he(e.task),[`stop`])},[V(I(Js))],8,Fb)),d.value===`trash`?(R(),z(`button`,{key:5,class:`icon danger ghost`,"aria-label":`永久删除`,onClick:ps(t=>_e(e.task),[`stop`])},[V(I(Xs))],8,Ib)):U(``,!0)],2),(R(!0),z(L,null,Br(e.subtasks,e=>(R(),z(`article`,{key:e.id,class:A([`task-row subtask`,{done:e.completed}])},[V(I(Is)),B(`button`,{class:`check`,onClick:t=>pe(e)},[e.completed?(R(),la(I(ks),{key:0})):U(``,!0)],8,Lb),B(`button`,{class:`task-main`,onClick:t=>ye(e)},[B(`strong`,null,j(e.title),1)],8,Rb)],2))),128))],64))),128)),!te.value.length&&!v.value?(R(),z(`div`,zb,[V(I(zs)),B(`b`,null,j(h.value?`没有匹配的任务`:`这里还很安静`),1),B(`span`,null,j(h.value?`换个关键词试试`:`写下第一件想完成的小事吧`),1)])):U(``,!0)],2)],64))]),B(`aside`,{class:A([`detail`,{open:b.value}])},[B(`div`,Bb,[l[62]||=B(`span`,null,`任务详情`,-1),B(`button`,{class:`icon mobile-only`,"aria-label":`关闭详情`,onClick:l[21]||=e=>b.value=!1},[V(I(Xs))])]),f.value?(R(),z(`div`,Vb,[B(`div`,Hb,[B(`button`,{class:A([`check large`,`p${f.value.priority}`]),onClick:l[22]||=e=>pe(f.value)},[f.value.completed?(R(),la(I(ks),{key:0})):U(``,!0)],2),An(B(`textarea`,{"onUpdate:modelValue":l[23]||=e=>f.value.title=e,rows:`2`,"aria-label":`任务标题`,onBlur:me},null,544),[[rs,f.value.title]])]),B(`label`,null,[l[63]||=H(`清单`,-1),An(B(`select`,{"onUpdate:modelValue":l[24]||=e=>f.value.list_id=e,onChange:me},[(R(!0),z(L,null,Br(o.value,e=>(R(),z(`option`,{key:e.id,value:e.id},j(e.name),9,Ub))),128))],544),[[os,f.value.list_id]])]),B(`label`,null,[l[64]||=H(`截止时间`,-1),B(`input`,{value:I(nc)(f.value.due_at),type:`datetime-local`,onChange:l[25]||=e=>{f.value.due_at=e.target.value,me()}},null,40,Wb)]),B(`label`,null,[l[66]||=H(`优先级`,-1),An(B(`select`,{"onUpdate:modelValue":l[26]||=e=>f.value.priority=e,onChange:me},[...l[65]||=[B(`option`,{value:0},`无`,-1),B(`option`,{value:1},`低`,-1),B(`option`,{value:2},`中`,-1),B(`option`,{value:3},`高`,-1)]],544),[[os,f.value.priority,void 0,{number:!0}]])]),B(`label`,null,[l[68]||=H(`重复`,-1),An(B(`select`,{"onUpdate:modelValue":l[27]||=e=>f.value.recurrence_rule=e,onChange:me},[...l[67]||=[B(`option`,{value:``},`不重复`,-1),B(`option`,{value:`FREQ=DAILY`},`每天`,-1),B(`option`,{value:`FREQ=WEEKLY`},`每周`,-1),B(`option`,{value:`FREQ=MONTHLY`},`每月`,-1)]],544),[[os,f.value.recurrence_rule]])]),f.value.recurrence_rule?(R(),z(`label`,Gb,[l[69]||=H(`重复截止`,-1),An(B(`input`,{"onUpdate:modelValue":l[28]||=e=>f.value.recurrence_end_at=e,type:`date`,onChange:me},null,544),[[rs,f.value.recurrence_end_at]])])):U(``,!0),B(`div`,Kb,[B(`div`,qb,[l[71]||=B(`span`,null,`标签`,-1),B(`button`,{class:`link`,onClick:Te},[V(I(Us)),l[70]||=H(`新建`,-1)])]),B(`div`,Jb,[(R(!0),z(L,null,Br(s.value,e=>(R(),z(`button`,{key:e.id,class:A({chosen:Ee(e)}),onClick:t=>{N(e),me()}},[B(`i`,{style:ue({background:e.color})},null,4),H(j(e.name),1)],10,Yb))),128)),s.value.length?U(``,!0):(R(),z(`span`,Xb,`还没有标签`))])]),B(`div`,Zb,[B(`div`,Qb,[l[72]||=B(`span`,null,`备注`,-1),B(`span`,null,[B(`button`,{class:A({active:!x.value}),onClick:l[29]||=e=>x.value=!1},`编辑`,2),B(`button`,{class:A({active:x.value}),onClick:l[30]||=e=>x.value=!0},`预览`,2)])]),x.value?(R(),z(`div`,{key:0,class:`markdown-preview`,innerHTML:I($s)(f.value.description)},null,8,$b)):An((R(),z(`textarea`,{key:1,"onUpdate:modelValue":l[31]||=e=>f.value.description=e,rows:`9`,placeholder:`支持 Markdown…`,onBlur:me},null,544)),[[rs,f.value.description]])]),B(`div`,ex,[B(`div`,tx,[l[74]||=B(`span`,null,`子任务`,-1),B(`button`,{class:`link`,onClick:ve},[V(I(Us)),l[73]||=H(`添加`,-1)])]),(R(!0),z(L,null,Br(c.value.filter(e=>e.parent_id===f.value?.id),e=>(R(),z(`button`,{key:e.id,class:`subtask-detail`,onClick:t=>pe(e)},[B(`span`,rx,[e.completed?(R(),la(I(ks),{key:0})):U(``,!0)]),B(`span`,{class:A({strike:e.completed})},j(e.title),3)],8,nx))),128)),c.value.some(e=>e.parent_id===f.value?.id)?U(``,!0):(R(),z(`span`,ix,`把这件事拆成更小的步骤`))]),B(`div`,ax,[B(`button`,{class:`secondary`,onClick:me},`保存更改`),B(`button`,{class:`danger-text`,onClick:l[32]||=e=>he(f.value)},[V(I(Js)),l[75]||=H(`移到回收站`,-1)])])])):(R(),z(`div`,ox,[V(I(Rs)),l[76]||=B(`b`,null,`选中一个任务`,-1),l[77]||=B(`p`,null,`日期、优先级、标签、子任务和 Markdown 备注会出现在这里。`,-1)]))],2),B(`nav`,sx,[B(`button`,{class:A({active:d.value===`today`}),onClick:l[33]||=e=>k(`today`)},[V(I(zs)),l[78]||=B(`span`,null,`今天`,-1)],2),B(`button`,{class:A({active:d.value===`tasks`}),onClick:l[34]||=e=>k(`tasks`,u.value)},[V(I(Ls)),l[79]||=B(`span`,null,`任务`,-1)],2),B(`button`,{class:A({active:d.value===`calendar`}),onClick:l[35]||=e=>k(`calendar`)},[V(I(Os)),l[80]||=B(`span`,null,`月历`,-1)],2),B(`button`,{class:A({active:d.value===`habits`}),onClick:l[36]||=e=>k(`habits`)},[V(I(Gs)),l[81]||=B(`span`,null,`习惯`,-1)],2),B(`button`,{class:A({active:d.value===`settings`}),onClick:l[37]||=e=>k(`settings`)},[V(I(qs)),l[82]||=B(`span`,null,`设置`,-1)],2)]),[`tasks`,`today`,`upcoming`].includes(d.value)?(R(),z(`button`,{key:1,class:`fab`,"aria-label":`添加任务`,onClick:ke},[V(I(Ms))])):U(``,!0),V(ro,{name:`toast`},{default:kn(()=>[_.value?(R(),z(`div`,cx,j(_.value),1)):U(``,!0)]),_:1}),g.value?(R(),z(`div`,lx,[H(j(g.value),1),B(`button`,{onClick:l[38]||=e=>g.value=``},[V(I(Xs))])])):U(``,!0)])):(R(),z(`div`,eb,[B(`section`,tb,[l[42]||=B(`div`,{class:`brand`},[H(`do`),B(`span`,null,`do`)],-1),B(`p`,null,j(t.value?`欢迎回来,继续把生活理顺。`:`创建你的 dodo`),1),B(`label`,null,[l[40]||=H(`用户名`,-1),An(B(`input`,{"onUpdate:modelValue":l[0]||=e=>r.value=e,autocomplete:`username`,placeholder:`你的用户名`},null,512),[[rs,r.value]])]),B(`label`,null,[l[41]||=H(`密码`,-1),An(B(`input`,{"onUpdate:modelValue":l[1]||=e=>i.value=e,type:`password`,autocomplete:`current-password`,placeholder:`至少 12 位`,onKeyup:hs(oe,[`enter`])},null,544),[[rs,i.value]])]),B(`button`,{class:`primary`,onClick:oe},j(t.value?`登录`:`开始使用`),1),g.value?(R(),z(`small`,nb,j(g.value),1)):U(``,!0)])]))}})).mount(`#app`),`serviceWorker`in navigator&&navigator.serviceWorker.register(`/sw.js`); \ No newline at end of file diff --git a/backend/static/assets/index-nhCaMkMR.css b/backend/static/assets/index-nhCaMkMR.css new file mode 100644 index 0000000..5f6fb58 --- /dev/null +++ b/backend/static/assets/index-nhCaMkMR.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ +@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components,utilities;:root{color:#2d2924;--accent:#f15a29;--accent-soft:#fbe6dc;--paper:#fffdf8;--sidebar:#f6f0e4;--line:#e7ddcc;--muted:#8b8275;--danger:#bd3827;--shadow:0 12px 36px #4e3a221a;background:#f8f3e8;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Noto Sans CJK SC,sans-serif}*{box-sizing:border-box}body{background:#f8f3e8;margin:0}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}svg{stroke-width:1.8px;width:18px;height:18px}.center,.auth-shell{place-items:center;min-height:100vh;display:grid}.center{color:var(--muted);align-content:center;gap:12px}.loader{border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-shell{background:radial-gradient(circle at 20% 10%,#ffe3d5 0,#0000 28%),linear-gradient(135deg,#f8f3e8,#fffaf0)}.auth-card{background:var(--paper);border:1px solid var(--line);width:min(390px,90vw);box-shadow:var(--shadow);border-radius:14px;gap:16px;padding:38px;display:grid}.brand{letter-spacing:-3px;font-size:40px;font-weight:850}.brand span{color:var(--accent)}.brand.small{font-size:29px}.auth-card p{color:var(--muted);margin:0 0 8px}.auth-card label,.detail-form>label{color:#756d61;gap:7px;font-size:12px;font-weight:650;display:grid}.auth-card input,.detail-form input,.detail-form select{border:1px solid var(--line);background:#fff;border-radius:9px;outline:none;width:100%;padding:11px}.auth-card input:focus,.detail-form input:focus,.detail-form select:focus,.detail-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #f15a291a}.primary{background:var(--accent);color:#fff;border:0;border-radius:9px;padding:12px;font-weight:700;box-shadow:0 5px 12px #f15a2933}.auth-card small{color:var(--danger)}.shell{background:var(--paper);grid-template-columns:238px minmax(430px,1fr) 350px;height:100vh;display:grid;overflow:hidden}.sidebar{border-right:1px solid var(--line);background:var(--sidebar);flex-direction:column;min-height:0;display:flex}.brand-row{justify-content:space-between;align-items:center;height:76px;padding:0 20px;display:flex}.primary-nav{gap:3px;padding:4px 12px 12px;display:grid}.primary-nav button,.settings{color:#665e52;text-align:left;background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;padding:10px 12px;display:flex}.primary-nav button:hover,.list-row:hover,.folder-row>button:hover{background:#ffffff85}.primary-nav button.active,.list-row.active{background:var(--accent-soft);color:#b7421e;font-weight:700}.section-title{color:#958b7d;text-transform:uppercase;letter-spacing:.08em;justify-content:space-between;align-items:center;padding:17px 17px 7px 22px;font-size:11px;font-weight:750;display:flex}.section-title>span:last-child{display:flex}.mini-icon,.row-actions button{color:#8e8477;background:0 0;border:0;padding:4px}.mini-icon svg,.row-actions svg{width:14px;height:14px}.folders{padding:0 10px;overflow:auto}.folder-row{align-items:center;display:flex}.folder-row>button{color:#6d6559;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:7px;min-width:0;padding:8px;display:flex}.folder-row>button svg{width:14px}.row-actions{opacity:0;transition:opacity .15s;display:flex}.folder-row:hover .row-actions,.list-row:hover .row-actions{opacity:1}.list-row{text-align:left;color:#665f55;background:0 0;border:0;border-radius:8px;align-items:center;gap:9px;width:100%;padding:8px 7px 8px 31px;display:flex}.list-row>span:nth-child(2){white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.list-row i{background:#d89b62;border-radius:3px;width:8px;height:8px}.settings{margin:auto 12px 14px}.mobile-only,.bottom,.fab{display:none}main{background:linear-gradient(#fffdf8eb,#fffdf8eb),repeating-linear-gradient(0deg,#0000,#0000 31px,#eee3d2 32px);min-width:0;padding:27px 34px 50px;overflow:auto}.topbar{align-items:center;gap:14px;display:flex}.topbar>div{flex:1}.topbar p{color:var(--muted);margin:0;font-size:12px}.topbar h1{letter-spacing:-.03em;margin:3px 0 21px;font-size:27px}.search{border:1px solid var(--line);width:min(260px,36%);color:var(--muted);background:#faf7f0;border-radius:9px;align-items:center;gap:8px;margin-bottom:18px;padding:8px 10px;display:flex}.search input{background:0 0;border:0;outline:0;width:100%;min-width:0}.search kbd{white-space:nowrap;border:1px solid var(--line);border-radius:4px;padding:2px 4px;font-size:10px}.quick{border:1px solid var(--line);background:#fff;border-radius:11px;align-items:center;gap:10px;padding:7px 7px 7px 13px;transition:all .18s;display:flex;box-shadow:0 2px 10px #513d260d}.quick:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #f15a2917}.quick>svg{color:var(--accent)}.quick input{background:0 0;border:0;outline:0;flex:1;min-width:0}.quick button{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:8px 15px;font-weight:650}.list-toolbar{height:42px;color:var(--muted);align-items:center;gap:14px;font-size:12px;display:flex}.list-toolbar label{margin-right:auto}.link{color:var(--accent);background:0 0;border:0;align-items:center;gap:3px;padding:3px;display:inline-flex}.link svg{width:14px}.task-list{transition:opacity .2s}.task-list.loading{opacity:.45}.task-row{border-bottom:1px solid var(--line);align-items:center;gap:10px;min-height:53px;padding:4px 8px;transition:background .15s,transform .15s;display:flex}.task-row:hover,.task-row.selected{background:#faf0e5bf}.task-row:hover{transform:translate(2px)}.check{background:#fff;border:1.6px solid #c6baa8;border-radius:5px;flex:0 0 19px;place-items:center;width:19px;height:19px;padding:0;display:grid}.check svg{width:13px}.check.p1{border-color:#4b93d1}.check.p2{border-color:#d79b25}.check.p3{border-color:#dc4b30}.done .check{color:#fff;background:#afa595}.task-main{text-align:left;background:0 0;border:0;flex:1;min-width:0;padding:8px 0}.task-main strong{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:590;display:block;overflow:hidden}.done .task-main strong{color:#9b9388;text-decoration:line-through}.meta{color:#9b9286;align-items:center;gap:9px;margin-top:3px;font-size:11px;display:flex}.meta span{align-items:center;gap:3px;display:flex}.meta svg{width:12px}.tag-dot{border-radius:50%;width:7px;height:7px}.priority{border-radius:5px;padding:3px 6px;font-size:10px;font-weight:750}.priority.p1{color:#3f80ba;background:#e5f2fc}.priority.p2{color:#a56b05;background:#fff1cb}.priority.p3{color:#bd3827;background:#fde2dc}.icon,.ghost{background:0 0;border:0;border-radius:6px;place-items:center;padding:5px;display:grid}.ghost{opacity:0;color:#9d9387}.task-row:hover .ghost{opacity:1}.ghost:hover{color:var(--danger);background:#fce7e2}.restore{border:1px solid var(--line);background:#fff;border-radius:7px;align-items:center;gap:5px;padding:6px 8px;font-size:12px;display:flex}.restore svg{width:14px}.subtask{color:#6d655b;min-height:42px;padding-left:53px}.subtask>svg{color:#bbb0a2;width:13px}.empty{color:#aaa094;text-align:center;align-content:center;place-items:center;gap:8px;min-height:300px;display:grid}.empty>svg{color:#d8cabb;width:38px;height:38px}.empty b{color:#6f675c}.empty span{font-size:13px}.detail{border-left:1px solid var(--line);background:#faf7f0;min-width:0;overflow:auto}.detail-head{border-bottom:1px solid var(--line);color:#80766a;text-transform:uppercase;letter-spacing:.08em;justify-content:space-between;align-items:center;height:57px;padding:0 21px;font-size:12px;font-weight:700;display:flex}.paper{border:1px solid var(--line);text-align:center;color:#8f8578;background:#fff;border-radius:11px;align-content:center;place-items:center;min-height:180px;margin:22px;padding:28px 20px;display:grid;box-shadow:0 4px 18px #4c39220d}.paper svg{color:#ceb8a4;width:32px;height:32px;margin-bottom:12px}.paper b{color:#625b50}.paper p{font-size:13px;line-height:1.6}.detail-form{gap:15px;padding:19px;display:grid}.detail-title{align-items:flex-start;gap:10px;display:flex}.check.large{flex-basis:22px;width:22px;height:22px;margin-top:8px}.detail-title textarea{resize:none;background:0 0;border:0;outline:none;flex:1;font-size:19px;font-weight:700;line-height:1.4}.detail-form>label{grid-template-columns:80px 1fr;align-items:center}.detail-form>label input,.detail-form>label select{padding:8px}.field{gap:7px;display:grid}.field-label{color:#756d61;justify-content:space-between;align-items:center;font-size:12px;font-weight:700;display:flex}.tag-picker{flex-wrap:wrap;gap:6px;display:flex}.tag-picker button{border:1px solid var(--line);background:#fff;border-radius:999px;align-items:center;gap:5px;padding:5px 8px;font-size:11px;display:flex}.tag-picker button.chosen{background:#fff1e9;border-color:#c89077}.tag-picker i{border-radius:50%;width:8px;height:8px}.hint{color:#a49a8d;font-size:12px}.markdown .field-label>span:last-child{background:#eee7dc;border-radius:6px;padding:2px;display:flex}.markdown .field-label button{background:0 0;border:0;border-radius:5px;padding:4px 8px;font-size:11px}.markdown .field-label button.active{color:var(--accent);background:#fff}.markdown textarea{border:1px solid var(--line);resize:vertical;background:#fff;border-radius:9px;outline:none;padding:11px;font:13px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace}.markdown-preview{border:1px solid var(--line);overflow-wrap:anywhere;background:#fff;border-radius:9px;min-height:160px;padding:10px 12px;font-size:13px;line-height:1.65}.markdown-preview h1{font-size:20px}.markdown-preview h2{font-size:16px}.markdown-preview p{margin:8px 0}.markdown-preview code{background:#f2ece2;border-radius:4px;padding:2px 4px}.markdown-preview a{color:var(--accent)}.subtasks{gap:5px;display:grid}.subtask-detail{text-align:left;background:#fff;border:0;border-radius:7px;align-items:center;gap:8px;padding:8px;display:flex}.subtask-detail .check{pointer-events:none}.strike{color:var(--muted);text-decoration:line-through}.detail-actions{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding-top:10px;display:flex}.secondary{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 11px;font-weight:650}.danger-text{color:var(--danger);background:0 0;border:0;align-items:center;gap:5px;font-size:12px;display:flex}.danger-text svg{width:14px}.toast,.error-toast{z-index:50;color:#fff;box-shadow:var(--shadow);background:#322d28;border-radius:9px;padding:10px 15px;font-size:13px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.error-toast{background:var(--danger);align-items:center;gap:10px;display:flex}.error-toast button{color:#fff;background:0 0;border:0;padding:0}.toast-enter-active,.toast-leave-active{transition:all .2s}.toast-enter-from,.toast-leave-to{opacity:0;transform:translate(-50%,8px)}@media (width<=1050px){.shell{grid-template-columns:220px minmax(400px,1fr) 310px}main{padding-inline:24px}}@media (width<=800px){.shell{height:100dvh;display:block;overflow:auto}.sidebar,.detail{z-index:30;box-shadow:var(--shadow);transition:transform .22s;display:flex;position:fixed;top:0;bottom:0}.sidebar{width:min(300px,86vw);left:0;transform:translate(-105%)}.sidebar.open{transform:none}.detail{width:min(430px,94vw);right:0;transform:translate(105%)}.detail.open{transform:none}.scrim{z-index:20;background:#2d261f42;position:fixed;inset:0}.mobile-only{display:grid}main{min-height:100dvh;padding:20px 17px 112px}.topbar h1{margin-bottom:17px;font-size:24px}.search{width:auto;margin-bottom:13px;padding:8px}.search input{width:90px}.search kbd,.quick button{display:none}.row-actions{opacity:1}.bottom{z-index:15;border-top:1px solid var(--line);padding:8px 5px max(8px,env(safe-area-inset-bottom));background:#fffdf8f5;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -5px 18px #4f3b220f}.bottom button{color:#81786d;background:0 0;border:0;place-items:center;gap:2px;min-width:60px;font-size:10px;display:grid}.bottom button.active{color:var(--accent);font-weight:700}.bottom svg{width:20px}.fab{z-index:16;background:var(--accent);color:#fff;border:0;border-radius:50%;place-items:center;width:52px;height:52px;transition:transform .15s;display:grid;position:fixed;bottom:76px;right:18px;box-shadow:0 7px 20px #f15a2961}.fab:active{transform:scale(.94)}.toast,.error-toast{bottom:142px}.task-row{padding-inline:2px}.subtask{padding-left:35px}.ghost{opacity:.45}}.mvp-view{gap:16px;padding-bottom:36px;display:grid}.view-intro{border-bottom:1px dashed var(--line);justify-content:space-between;align-items:end;padding-bottom:12px;display:flex}.view-intro h2{margin:2px 0 0;font-size:22px}.view-intro small,.view-intro>span{color:var(--muted);font-size:12px}.tool-card,.empty-panel{border:1px solid var(--line);background:#fff;border-radius:12px;padding:16px;box-shadow:0 3px 14px #513d260d}.soft-button,.primary-small,.danger-button,.file-button{border:1px solid var(--line);background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px 11px;font-size:12px;display:inline-flex}.soft-button svg,.file-button svg{width:15px}.primary-small{background:var(--accent);border-color:var(--accent);color:#fff}.danger-button{color:var(--danger);border-color:#e5b7ad}.habit-create{grid-template-columns:1fr 150px 90px auto;gap:8px;display:grid}.habit-create input,.habit-create select{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:0;padding:9px}.habit-create button{background:var(--accent);color:#fff;border:0;border-radius:8px;align-items:center;gap:5px;padding:8px 13px;display:flex}.habit-list{gap:10px;display:grid}.tool-card h3{margin:0 0 4px}.habit-row{border:1px solid var(--line);background:#fff;border-radius:14px;align-items:center;gap:8px;padding:5px 5px 5px 12px;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 3px 14px #513d260d}.habit-row.done{border-color:var(--accent)}.habit-main{text-align:left;background:0 0;border:0;border-radius:10px;flex:1;justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:13px 4px;display:flex}.habit-name{color:#3c372f;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;overflow:hidden}.habit-main>span:first-child{gap:3px;display:grid}.habit-main small{color:var(--muted);font-size:11px}.habit-row.done .habit-name{color:var(--accent)}.habit-check-button{color:#fff;background:#fff;border:1.5px solid #cfc3b3;border-radius:50%;flex:0 0 44px;place-items:center;width:44px;height:44px;padding:0;display:grid}.habit-check-button.done{background:var(--accent);border-color:var(--accent)}.habit-check-button svg{stroke-width:2.6px;width:19px;height:19px}.habit-row .icon.ghost{color:#b3a795;margin-left:4px}.habit-row .icon.ghost:hover{color:var(--danger)}.numeric-habit>span:first-child{gap:3px;display:grid}.numeric-habit small{color:var(--muted);font-size:11px}.numeric-action{align-items:center;gap:6px;display:flex}.numeric-action input{border:1px solid var(--line);background:#fff;border-radius:8px;width:74px;padding:7px}.numeric-action .soft-button{min-height:44px;padding:9px 12px}.habit-row>.icon.ghost{flex:0 0 44px;width:44px;height:44px}.empty-panel{text-align:center;color:var(--muted)}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.tool-card{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.tool-card>svg{color:var(--accent);width:25px;height:25px}.tool-card p{color:var(--muted);margin:0;font-size:13px}.tool-card.wide{grid-column:1/-1}.file-button input{display:none}.tool-card pre{background:#f8f3e8;border-radius:8px;width:100%;max-height:180px;padding:10px;font-size:10px;overflow:auto}.session-row,.audit-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;width:100%;padding:9px 0;display:flex}.session-row span{display:grid}.session-row small,.audit-row small{color:var(--muted);font-size:11px}.inline-error{color:var(--danger);background:#fff0ed;border-radius:8px;padding:9px}.settings.active{background:var(--accent-soft);color:#b7421e;font-weight:700}@media (width<=800px){.habit-create{grid-template-columns:1fr 1fr}.habit-create button{justify-content:center}.settings-grid{grid-template-columns:1fr}.tool-card.wide{grid-column:auto}.habit-row{padding:5px 4px 5px 8px}.habit-main{padding:10px 2px}.numeric-action input{width:62px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.pager{justify-content:flex-end;align-items:center;gap:10px;margin:0 0 14px;display:flex}.pager button:disabled{opacity:.4;cursor:not-allowed}.pager span{color:var(--muted);font-size:13px} diff --git a/backend/static/index.html b/backend/static/index.html index 7a0a9b3..ffa85b3 100644 --- a/backend/static/index.html +++ b/backend/static/index.html @@ -1,3 +1,3 @@ -dodo - +dodo +
    \ No newline at end of file diff --git a/backend/static/sw.js b/backend/static/sw.js index 7b0d4da..30549ce 100644 --- a/backend/static/sw.js +++ b/backend/static/sw.js @@ -1,5 +1,5 @@ -const CACHE = 'dodo-shell-v2' -const SHELL = ['/', '/manifest.json', '/icon-192.png', '/icon-512.png', '/apple-touch-icon.png'] +const CACHE = 'dodo-shell-v3' +const SHELL = ['/manifest.json', '/icon-192.png', '/icon-512.png', '/apple-touch-icon.png'] self.addEventListener('install', (event) => { self.skipWaiting() event.waitUntil(caches.open(CACHE).then((cache) => cache.addAll(SHELL))) @@ -11,11 +11,16 @@ self.addEventListener('fetch', (event) => { const url = new URL(event.request.url) if (url.pathname.startsWith('/api/')) return if (event.request.method !== 'GET') return + const isNavigation = event.request.mode === 'navigate' + if (isNavigation) { + event.respondWith(fetch(event.request).catch(() => caches.match('/offline.html'))) + return + } event.respondWith( caches.match(event.request).then((cached) => cached || fetch(event.request).then((response) => { const copy = response.clone() caches.open(CACHE).then((cache) => cache.put(event.request, copy)) return response - }).catch(() => caches.match('/'))), + })), ) }) diff --git a/frontend/package.json b/frontend/package.json index d3e0f01..81ab0f2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1 +1 @@ -{"name":"dodo-frontend","private":true,"version":"0.1.0","type":"module","packageManager":"pnpm@9.15.9","scripts":{"dev":"vite --host 0.0.0.0","build":"vue-tsc -b && vite build","test":"vitest run"},"dependencies":{"@fullcalendar/core":"^6.1.21","@fullcalendar/daygrid":"^6.1.21","@fullcalendar/interaction":"^6.1.21","@fullcalendar/vue3":"^6.1.21","@vitejs/plugin-vue":"latest","class-variance-authority":"latest","clsx":"latest","lucide-vue-next":"^0.468.0","reka-ui":"latest","tailwind-merge":"latest","vue":"latest","vue-router":"latest"},"devDependencies":{"@tailwindcss/vite":"latest","@types/node":"latest","jsdom":"^30.0.1","tailwindcss":"latest","typescript":"^5.7.2","vite":"latest","vitest":"latest","vue-tsc":"latest"},"pnpm":{"onlyBuiltDependencies":["vue-demi"]}} \ No newline at end of file +{"name":"dodo-frontend","private":true,"version":"0.1.0","type":"module","packageManager":"pnpm@9.15.9","scripts":{"dev":"vite --host 0.0.0.0","build":"vue-tsc -b && vite build","test":"vitest run"},"dependencies":{"@vitejs/plugin-vue":"latest","class-variance-authority":"latest","clsx":"latest","lucide-vue-next":"^0.468.0","reka-ui":"latest","tailwind-merge":"latest","vue":"latest","vue-router":"latest"},"devDependencies":{"@tailwindcss/vite":"latest","@types/node":"latest","jsdom":"^30.0.1","tailwindcss":"latest","typescript":"^5.7.2","vite":"latest","vitest":"latest","vue-tsc":"latest"},"pnpm":{"onlyBuiltDependencies":["vue-demi"]}} \ No newline at end of file diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 311fa78..78861a2 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -8,18 +8,6 @@ importers: .: dependencies: - '@fullcalendar/core': - specifier: ^6.1.21 - version: 6.1.21 - '@fullcalendar/daygrid': - specifier: ^6.1.21 - version: 6.1.21(@fullcalendar/core@6.1.21) - '@fullcalendar/interaction': - specifier: ^6.1.21 - version: 6.1.21(@fullcalendar/core@6.1.21) - '@fullcalendar/vue3': - specifier: ^6.1.21 - version: 6.1.21(@fullcalendar/core@6.1.21)(vue@3.5.42(typescript@5.9.3)) '@vitejs/plugin-vue': specifier: latest version: 6.0.8(vite@8.2.2(@types/node@26.4.1)(jiti@2.7.0))(vue@3.5.42(typescript@5.9.3)) @@ -158,25 +146,6 @@ packages: '@floating-ui/vue@1.1.11': resolution: {integrity: sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw==} - '@fullcalendar/core@6.1.21': - resolution: {integrity: sha512-t3u/+sqh3Iq7TWtUnVLcGDUE6OWZh0UD3c04bI/l7lSLAgAKr3kngBmhHiQD1QXpwC8ZN5iNqG7a7gOVixhSKQ==} - - '@fullcalendar/daygrid@6.1.21': - resolution: {integrity: sha512-QYb1y40RGYLlOxKpYWg8O+7njEnKnFG8Tt7qjnubJGR35s1phQg67E+81y2TyAbbm59p2JFOCXGDk9t6KDujIA==} - peerDependencies: - '@fullcalendar/core': ~6.1.21 - - '@fullcalendar/interaction@6.1.21': - resolution: {integrity: sha512-WPYpqtljDWmU0Xm2cOtFrLlocgxv7cgkOppj34Q6OUUat8a6Cnd6kYo2JR+irP223PE5lBYHFNp1qh7SIpJc0w==} - peerDependencies: - '@fullcalendar/core': ~6.1.21 - - '@fullcalendar/vue3@6.1.21': - resolution: {integrity: sha512-OGt6WSC+/zz/ej6a0KfIBNl7BYuGchpZU49SsedYyv3WZWbghAE+D8YD6nhH1ia/I4p5Gcsv/nEXgEkT/I8aYQ==} - peerDependencies: - '@fullcalendar/core': ~6.1.21 - vue: ^3.0.11 - '@internationalized/date@3.12.4': resolution: {integrity: sha512-M1dEn4c1U1HsSlaVR8upZtSqvXrTkHDfv18H01uCSJyjVLDxnBR38v/fMxecmlwXKR4i9HeZcmgQAPE6A+aGJQ==} @@ -879,9 +848,6 @@ packages: resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==} engines: {node: ^10 || ^12 || >=14} - preact@10.12.1: - resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -1267,23 +1233,6 @@ snapshots: - '@vue/composition-api' - vue - '@fullcalendar/core@6.1.21': - dependencies: - preact: 10.12.1 - - '@fullcalendar/daygrid@6.1.21(@fullcalendar/core@6.1.21)': - dependencies: - '@fullcalendar/core': 6.1.21 - - '@fullcalendar/interaction@6.1.21(@fullcalendar/core@6.1.21)': - dependencies: - '@fullcalendar/core': 6.1.21 - - '@fullcalendar/vue3@6.1.21(@fullcalendar/core@6.1.21)(vue@3.5.42(typescript@5.9.3))': - dependencies: - '@fullcalendar/core': 6.1.21 - vue: 3.5.42(typescript@5.9.3) - '@internationalized/date@3.12.4': dependencies: '@swc/helpers': 0.5.23 @@ -1889,8 +1838,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - preact@10.12.1: {} - punycode@2.3.1: {} quansync@0.2.11: {} diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 98b1d61..c970991 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -3,7 +3,7 @@ import { computed, nextTick, onMounted, ref, watch } from 'vue' import { ArchiveRestore, CalendarDays, Check, ChevronDown, ChevronRight, CirclePlus, Folder, GripVertical, Inbox, ListChecks, ListTodo, Menu, Pencil, Plus, Search, - Settings, Trash2, X, CalendarRange, Repeat2, + Settings, Trash2, X, Repeat2, } from 'lucide-vue-next' import { filterTasks, fromDateTimeLocal, groupTaskTree, renderMarkdown, toDateTimeLocal } from './lib/task-utils' import { isTaskView } from './lib/mvp-utils' @@ -14,7 +14,7 @@ type FolderItem = { id: string; name: string } type TaskList = { id: string; folder_id: string | null; name: string; is_inbox: boolean } type Tag = { id: string; name: string; color: string } type Task = { id: string; list_id: string; parent_id: string | null; title: string; description: string; priority: number; completed: boolean; version: number; due_at: string | null; recurrence_rule?: string | null; recurrence_end_at?: string | null; tags?: Tag[]; subtasks?: Task[] } -type View = 'tasks' | 'today' | 'upcoming' | 'trash' | 'calendar' | 'habits' | 'settings' +type View = 'tasks' | 'today' | 'upcoming' | 'trash' | 'habits' | 'settings' const initialized = ref(null) const authenticated = ref(false) @@ -48,7 +48,6 @@ const activeName = computed(() => { if (activeView.value === 'trash') return '回收站' if (activeView.value === 'today') return '今天' if (activeView.value === 'upcoming') return '最近 7 天' - if (activeView.value === 'calendar') return '月历' if (activeView.value === 'habits') return '习惯' if (activeView.value === 'settings') return '设置与数据' return lists.value.find((item) => item.id === activeList.value)?.name || '收集箱' @@ -58,7 +57,7 @@ const visibleTasks = computed(() => { const now = new Date() const end = new Date(now); end.setDate(end.getDate() + 7) let result = sourceTasks.value - if (['calendar','habits','settings'].includes(activeView.value)) return [] + if (['habits','settings'].includes(activeView.value)) return [] if (activeView.value === 'today') result = result.filter((task) => task.due_at && new Date(task.due_at).toDateString() === now.toDateString()) if (activeView.value === 'upcoming') result = result.filter((task) => task.due_at && new Date(task.due_at) >= now && new Date(task.due_at) <= end) return query.value.trim() ? filterTasks(result, query.value) : result @@ -202,7 +201,6 @@ async function switchView(view: View, listId?: string) { page.value = 1 selectedTask.value = null; mobileSidebar.value = false; mobileDetail.value = false if (view === 'trash') await loadTrash() - else if (view === 'calendar') return else if (!isTaskView(view)) tasks.value = [] else await loadAll() } @@ -314,7 +312,6 @@ onMounted(bootstrap) - @@ -335,8 +332,8 @@ onMounted(bootstrap)

    今天也慢慢来

    {{ activeName }}

    -