repr-cli 0.2.16__py3-none-any.whl → 0.2.18__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- repr/__init__.py +1 -1
- repr/api.py +363 -62
- repr/auth.py +47 -38
- repr/change_synthesis.py +478 -0
- repr/cli.py +4306 -364
- repr/config.py +119 -11
- repr/configure.py +889 -0
- repr/cron.py +419 -0
- repr/dashboard/__init__.py +9 -0
- repr/dashboard/build.py +126 -0
- repr/dashboard/dist/assets/index-B-aCjaCw.js +384 -0
- repr/dashboard/dist/assets/index-BYFVbEev.css +1 -0
- repr/dashboard/dist/assets/index-BrrhyJFO.css +1 -0
- repr/dashboard/dist/assets/index-C7Gzxc4f.js +384 -0
- repr/dashboard/dist/assets/index-CQdMXo6g.js +391 -0
- repr/dashboard/dist/assets/index-CcEg74ts.js +270 -0
- repr/dashboard/dist/assets/index-Cerc-iA_.js +377 -0
- repr/dashboard/dist/assets/index-CjVcBW2L.css +1 -0
- repr/dashboard/dist/assets/index-Cs8ofFGd.js +384 -0
- repr/dashboard/dist/assets/index-Dfl3mR5E.js +377 -0
- repr/dashboard/dist/assets/index-DwN0SeMc.css +1 -0
- repr/dashboard/dist/assets/index-YFch_e0S.js +384 -0
- repr/dashboard/dist/favicon.svg +4 -0
- repr/dashboard/dist/index.html +14 -0
- repr/dashboard/manager.py +234 -0
- repr/dashboard/server.py +1489 -0
- repr/db.py +980 -0
- repr/hooks.py +3 -2
- repr/loaders/__init__.py +22 -0
- repr/loaders/base.py +156 -0
- repr/loaders/claude_code.py +287 -0
- repr/loaders/clawdbot.py +313 -0
- repr/loaders/gemini_antigravity.py +381 -0
- repr/mcp_server.py +1196 -0
- repr/models.py +503 -0
- repr/openai_analysis.py +25 -0
- repr/session_extractor.py +481 -0
- repr/storage.py +328 -0
- repr/story_synthesis.py +1296 -0
- repr/templates.py +68 -4
- repr/timeline.py +710 -0
- repr/tools.py +17 -8
- {repr_cli-0.2.16.dist-info → repr_cli-0.2.18.dist-info}/METADATA +48 -10
- repr_cli-0.2.18.dist-info/RECORD +58 -0
- {repr_cli-0.2.16.dist-info → repr_cli-0.2.18.dist-info}/WHEEL +1 -1
- {repr_cli-0.2.16.dist-info → repr_cli-0.2.18.dist-info}/entry_points.txt +1 -0
- repr_cli-0.2.16.dist-info/RECORD +0 -26
- {repr_cli-0.2.16.dist-info → repr_cli-0.2.18.dist-info}/licenses/LICENSE +0 -0
- {repr_cli-0.2.16.dist-info → repr_cli-0.2.18.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&n(l)}).observe(document,{childList:!0,subtree:!0});function s(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=s(i);fetch(i.href,o)}})();/**
|
|
2
|
+
* @vue/shared v3.5.27
|
|
3
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
|
+
* @license MIT
|
|
5
|
+
**/function zs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const q={},lt=[],Be=()=>{},ri=()=>!1,ns=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Js=e=>e.startsWith("onUpdate:"),oe=Object.assign,Gs=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Bo=Object.prototype.hasOwnProperty,U=(e,t)=>Bo.call(e,t),j=Array.isArray,xt=e=>is(e)==="[object Map]",Po=e=>is(e)==="[object Set]",L=e=>typeof e=="function",se=e=>typeof e=="string",pt=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",li=e=>(Z(e)||L(e))&&L(e.then)&&L(e.catch),Ao=Object.prototype.toString,is=e=>Ao.call(e),Mo=e=>is(e).slice(8,-1),Fo=e=>is(e)==="[object Object]",qs=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=zs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),os=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Ro=/-\w/g,ze=os(e=>e.replace(Ro,t=>t.slice(1).toUpperCase())),Oo=/\B([A-Z])/g,tt=os(e=>e.replace(Oo,"-$1").toLowerCase()),ai=os(e=>e.charAt(0).toUpperCase()+e.slice(1)),xs=os(e=>e?`on${ai(e)}`:""),We=(e,t)=>!Object.is(e,t),_s=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},ci=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Do=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Cn;const rs=()=>Cn||(Cn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ys(e){if(j(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],i=se(n)?No(n):Ys(n);if(i)for(const o in i)t[o]=i[o]}return t}else if(se(e)||Z(e))return e}const Lo=/;(?![^(]*\))/g,jo=/:([^]+)/,Ho=/\/\*[^]*?\*\//g;function No(e){const t={};return e.replace(Ho,"").split(Lo).forEach(s=>{if(s){const n=s.split(jo);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Qs(e){let t="";if(se(e))t=e;else if(j(e))for(let s=0;s<e.length;s++){const n=Qs(e[s]);n&&(t+=n+" ")}else if(Z(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const Vo="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Uo=zs(Vo);function di(e){return!!e||e===""}/**
|
|
6
|
+
* @vue/reactivity v3.5.27
|
|
7
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
8
|
+
* @license MIT
|
|
9
|
+
**/let pe;class ui{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=pe,!t&&pe&&(this.index=(pe.scopes||(pe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=pe;try{return pe=this,t()}finally{pe=s}}}on(){++this._on===1&&(this.prevScope=pe,pe=this)}off(){this._on>0&&--this._on===0&&(pe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const i=this.parent.scopes.pop();i&&i!==this&&(this.parent.scopes[this.index]=i,i.index=this.index)}this.parent=void 0}}}function Ko(e){return new ui(e)}function Wo(){return pe}let G;const Ss=new WeakSet;class fi{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,pe&&pe.active&&pe.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ss.has(this)&&(Ss.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||hi(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,En(this),gi(this);const t=G,s=be;G=this,be=!0;try{return this.fn()}finally{mi(this),G=t,be=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)en(t);this.deps=this.depsTail=void 0,En(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ss.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Ms(this)&&this.run()}get dirty(){return Ms(this)}}let pi=0,St,kt;function hi(e,t=!1){if(e.flags|=8,t){e.next=kt,kt=e;return}e.next=St,St=e}function Xs(){pi++}function Zs(){if(--pi>0)return;if(kt){let t=kt;for(kt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;St;){let t=St;for(St=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function gi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function mi(e){let t,s=e.depsTail,n=s;for(;n;){const i=n.prevDep;n.version===-1?(n===s&&(s=i),en(n),zo(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}e.deps=t,e.depsTail=s}function Ms(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(vi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function vi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Pt)||(e.globalVersion=Pt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ms(e))))return;e.flags|=2;const t=e.dep,s=G,n=be;G=e,be=!0;try{gi(e);const i=e.fn(e._value);(t.version===0||We(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{G=s,be=n,mi(e),e.flags&=-3}}function en(e,t=!1){const{dep:s,prevSub:n,nextSub:i}=e;if(n&&(n.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let o=s.computed.deps;o;o=o.nextDep)en(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function zo(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let be=!0;const yi=[];function Oe(){yi.push(be),be=!1}function De(){const e=yi.pop();be=e===void 0?!0:e}function En(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=G;G=void 0;try{t()}finally{G=s}}}let Pt=0;class Jo{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class tn{constructor(t){this.computed=t,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(t){if(!G||!be||G===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==G)s=this.activeLink=new Jo(G,this),G.deps?(s.prevDep=G.depsTail,G.depsTail.nextDep=s,G.depsTail=s):G.deps=G.depsTail=s,bi(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=G.depsTail,s.nextDep=void 0,G.depsTail.nextDep=s,G.depsTail=s,G.deps===s&&(G.deps=n)}return s}trigger(t){this.version++,Pt++,this.notify(t)}notify(t){Xs();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Zs()}}}function bi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)bi(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Fs=new WeakMap,Ze=Symbol(""),Rs=Symbol(""),At=Symbol("");function ne(e,t,s){if(be&&G){let n=Fs.get(e);n||Fs.set(e,n=new Map);let i=n.get(s);i||(n.set(s,i=new tn),i.map=n,i.key=s),i.track()}}function Re(e,t,s,n,i,o){const l=Fs.get(e);if(!l){Pt++;return}const a=d=>{d&&d.trigger()};if(Xs(),t==="clear")l.forEach(a);else{const d=j(e),p=d&&qs(s);if(d&&s==="length"){const f=Number(n);l.forEach((w,T)=>{(T==="length"||T===At||!pt(T)&&T>=f)&&a(w)})}else switch((s!==void 0||l.has(void 0))&&a(l.get(s)),p&&a(l.get(At)),t){case"add":d?p&&a(l.get("length")):(a(l.get(Ze)),xt(e)&&a(l.get(Rs)));break;case"delete":d||(a(l.get(Ze)),xt(e)&&a(l.get(Rs)));break;case"set":xt(e)&&a(l.get(Ze));break}}Zs()}function it(e){const t=V(e);return t===e?t:(ne(t,"iterate",At),we(e)?t:t.map(Le))}function sn(e){return ne(e=V(e),"iterate",At),e}function Ne(e,t){return Je(e)?Mt(at(e)?Le(t):t):Le(t)}const Go={__proto__:null,[Symbol.iterator](){return ks(this,Symbol.iterator,e=>Ne(this,e))},concat(...e){return it(this).concat(...e.map(t=>j(t)?it(t):t))},entries(){return ks(this,"entries",e=>(e[1]=Ne(this,e[1]),e))},every(e,t){return Me(this,"every",e,t,void 0,arguments)},filter(e,t){return Me(this,"filter",e,t,s=>s.map(n=>Ne(this,n)),arguments)},find(e,t){return Me(this,"find",e,t,s=>Ne(this,s),arguments)},findIndex(e,t){return Me(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Me(this,"findLast",e,t,s=>Ne(this,s),arguments)},findLastIndex(e,t){return Me(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Me(this,"forEach",e,t,void 0,arguments)},includes(...e){return Cs(this,"includes",e)},indexOf(...e){return Cs(this,"indexOf",e)},join(e){return it(this).join(e)},lastIndexOf(...e){return Cs(this,"lastIndexOf",e)},map(e,t){return Me(this,"map",e,t,void 0,arguments)},pop(){return yt(this,"pop")},push(...e){return yt(this,"push",e)},reduce(e,...t){return Tn(this,"reduce",e,t)},reduceRight(e,...t){return Tn(this,"reduceRight",e,t)},shift(){return yt(this,"shift")},some(e,t){return Me(this,"some",e,t,void 0,arguments)},splice(...e){return yt(this,"splice",e)},toReversed(){return it(this).toReversed()},toSorted(e){return it(this).toSorted(e)},toSpliced(...e){return it(this).toSpliced(...e)},unshift(...e){return yt(this,"unshift",e)},values(){return ks(this,"values",e=>Ne(this,e))}};function ks(e,t,s){const n=sn(e),i=n[t]();return n!==e&&!we(e)&&(i._next=i.next,i.next=()=>{const o=i._next();return o.done||(o.value=s(o.value)),o}),i}const qo=Array.prototype;function Me(e,t,s,n,i,o){const l=sn(e),a=l!==e&&!we(e),d=l[t];if(d!==qo[t]){const w=d.apply(e,o);return a?Le(w):w}let p=s;l!==e&&(a?p=function(w,T){return s.call(this,Ne(e,w),T,e)}:s.length>2&&(p=function(w,T){return s.call(this,w,T,e)}));const f=d.call(l,p,n);return a&&i?i(f):f}function Tn(e,t,s,n){const i=sn(e);let o=s;return i!==e&&(we(e)?s.length>3&&(o=function(l,a,d){return s.call(this,l,a,d,e)}):o=function(l,a,d){return s.call(this,l,Ne(e,a),d,e)}),i[t](o,...n)}function Cs(e,t,s){const n=V(e);ne(n,"iterate",At);const i=n[t](...s);return(i===-1||i===!1)&&ln(s[0])?(s[0]=V(s[0]),n[t](...s)):i}function yt(e,t,s=[]){Oe(),Xs();const n=V(e)[t].apply(e,s);return Zs(),De(),n}const Yo=zs("__proto__,__v_isRef,__isVue"),wi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(pt));function Qo(e){pt(e)||(e=String(e));const t=V(this);return ne(t,"has",e),t.hasOwnProperty(e)}class xi{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const i=this._isReadonly,o=this._isShallow;if(s==="__v_isReactive")return!i;if(s==="__v_isReadonly")return i;if(s==="__v_isShallow")return o;if(s==="__v_raw")return n===(i?o?lr:Ci:o?ki:Si).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const l=j(t);if(!i){let d;if(l&&(d=Go[s]))return d;if(s==="hasOwnProperty")return Qo}const a=Reflect.get(t,s,ie(t)?t:n);if((pt(s)?wi.has(s):Yo(s))||(i||ne(t,"get",s),o))return a;if(ie(a)){const d=l&&qs(s)?a:a.value;return i&&Z(d)?Ds(d):d}return Z(a)?i?Ds(a):on(a):a}}class _i extends xi{constructor(t=!1){super(!1,t)}set(t,s,n,i){let o=t[s];const l=j(t)&&qs(s);if(!this._isShallow){const p=Je(o);if(!we(n)&&!Je(n)&&(o=V(o),n=V(n)),!l&&ie(o)&&!ie(n))return p||(o.value=n),!0}const a=l?Number(s)<t.length:U(t,s),d=Reflect.set(t,s,n,ie(t)?t:i);return t===V(i)&&(a?We(n,o)&&Re(t,"set",s,n):Re(t,"add",s,n)),d}deleteProperty(t,s){const n=U(t,s);t[s];const i=Reflect.deleteProperty(t,s);return i&&n&&Re(t,"delete",s,void 0),i}has(t,s){const n=Reflect.has(t,s);return(!pt(s)||!wi.has(s))&&ne(t,"has",s),n}ownKeys(t){return ne(t,"iterate",j(t)?"length":Ze),Reflect.ownKeys(t)}}class Xo extends xi{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const Zo=new _i,er=new Xo,tr=new _i(!0);const Os=e=>e,Vt=e=>Reflect.getPrototypeOf(e);function sr(e,t,s){return function(...n){const i=this.__v_raw,o=V(i),l=xt(o),a=e==="entries"||e===Symbol.iterator&&l,d=e==="keys"&&l,p=i[e](...n),f=s?Os:t?Mt:Le;return!t&&ne(o,"iterate",d?Rs:Ze),oe(Object.create(p),{next(){const{value:w,done:T}=p.next();return T?{value:w,done:T}:{value:a?[f(w[0]),f(w[1])]:f(w),done:T}}})}}function Ut(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function nr(e,t){const s={get(i){const o=this.__v_raw,l=V(o),a=V(i);e||(We(i,a)&&ne(l,"get",i),ne(l,"get",a));const{has:d}=Vt(l),p=t?Os:e?Mt:Le;if(d.call(l,i))return p(o.get(i));if(d.call(l,a))return p(o.get(a));o!==l&&o.get(i)},get size(){const i=this.__v_raw;return!e&&ne(V(i),"iterate",Ze),i.size},has(i){const o=this.__v_raw,l=V(o),a=V(i);return e||(We(i,a)&&ne(l,"has",i),ne(l,"has",a)),i===a?o.has(i):o.has(i)||o.has(a)},forEach(i,o){const l=this,a=l.__v_raw,d=V(a),p=t?Os:e?Mt:Le;return!e&&ne(d,"iterate",Ze),a.forEach((f,w)=>i.call(o,p(f),p(w),l))}};return oe(s,e?{add:Ut("add"),set:Ut("set"),delete:Ut("delete"),clear:Ut("clear")}:{add(i){!t&&!we(i)&&!Je(i)&&(i=V(i));const o=V(this);return Vt(o).has.call(o,i)||(o.add(i),Re(o,"add",i,i)),this},set(i,o){!t&&!we(o)&&!Je(o)&&(o=V(o));const l=V(this),{has:a,get:d}=Vt(l);let p=a.call(l,i);p||(i=V(i),p=a.call(l,i));const f=d.call(l,i);return l.set(i,o),p?We(o,f)&&Re(l,"set",i,o):Re(l,"add",i,o),this},delete(i){const o=V(this),{has:l,get:a}=Vt(o);let d=l.call(o,i);d||(i=V(i),d=l.call(o,i)),a&&a.call(o,i);const p=o.delete(i);return d&&Re(o,"delete",i,void 0),p},clear(){const i=V(this),o=i.size!==0,l=i.clear();return o&&Re(i,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(i=>{s[i]=sr(i,e,t)}),s}function nn(e,t){const s=nr(e,t);return(n,i,o)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get(U(s,i)&&i in n?s:n,i,o)}const ir={get:nn(!1,!1)},or={get:nn(!1,!0)},rr={get:nn(!0,!1)};const Si=new WeakMap,ki=new WeakMap,Ci=new WeakMap,lr=new WeakMap;function ar(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function cr(e){return e.__v_skip||!Object.isExtensible(e)?0:ar(Mo(e))}function on(e){return Je(e)?e:rn(e,!1,Zo,ir,Si)}function dr(e){return rn(e,!1,tr,or,ki)}function Ds(e){return rn(e,!0,er,rr,Ci)}function rn(e,t,s,n,i){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=cr(e);if(o===0)return e;const l=i.get(e);if(l)return l;const a=new Proxy(e,o===2?n:s);return i.set(e,a),a}function at(e){return Je(e)?at(e.__v_raw):!!(e&&e.__v_isReactive)}function Je(e){return!!(e&&e.__v_isReadonly)}function we(e){return!!(e&&e.__v_isShallow)}function ln(e){return e?!!e.__v_raw:!1}function V(e){const t=e&&e.__v_raw;return t?V(t):e}function Ei(e){return!U(e,"__v_skip")&&Object.isExtensible(e)&&ci(e,"__v_skip",!0),e}const Le=e=>Z(e)?on(e):e,Mt=e=>Z(e)?Ds(e):e;function ie(e){return e?e.__v_isRef===!0:!1}function ur(e){return fr(e,!1)}function fr(e,t){return ie(e)?e:new pr(e,t)}class pr{constructor(t,s){this.dep=new tn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:V(t),this._value=s?t:Le(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||we(t)||Je(t);t=n?t:V(t),We(t,s)&&(this._rawValue=t,this._value=n?t:Le(t),this.dep.trigger())}}function hr(e){return ie(e)?e.value:e}const gr={get:(e,t,s)=>t==="__v_raw"?e:hr(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const i=e[t];return ie(i)&&!ie(s)?(i.value=s,!0):Reflect.set(e,t,s,n)}};function Ti(e){return at(e)?e:new Proxy(e,gr)}class mr{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new tn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Pt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&G!==this)return hi(this,!0),!0}get value(){const t=this.dep.track();return vi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function vr(e,t,s=!1){let n,i;return L(e)?n=e:(n=e.get,i=e.set),new mr(n,i,s)}const Kt={},Yt=new WeakMap;let Xe;function yr(e,t=!1,s=Xe){if(s){let n=Yt.get(s);n||Yt.set(s,n=[]),n.push(e)}}function br(e,t,s=q){const{immediate:n,deep:i,once:o,scheduler:l,augmentJob:a,call:d}=s,p=E=>i?E:we(E)||i===!1||i===0?Ke(E,1):Ke(E);let f,w,T,m,h=!1,g=!1;if(ie(e)?(w=()=>e.value,h=we(e)):at(e)?(w=()=>p(e),h=!0):j(e)?(g=!0,h=e.some(E=>at(E)||we(E)),w=()=>e.map(E=>{if(ie(E))return E.value;if(at(E))return p(E);if(L(E))return d?d(E,2):E()})):L(e)?t?w=d?()=>d(e,2):e:w=()=>{if(T){Oe();try{T()}finally{De()}}const E=Xe;Xe=f;try{return d?d(e,3,[m]):e(m)}finally{Xe=E}}:w=Be,t&&i){const E=w,O=i===!0?1/0:i;w=()=>Ke(E(),O)}const x=Wo(),y=()=>{f.stop(),x&&x.active&&Gs(x.effects,f)};if(o&&t){const E=t;t=(...O)=>{E(...O),y()}}let v=g?new Array(e.length).fill(Kt):Kt;const A=E=>{if(!(!(f.flags&1)||!f.dirty&&!E))if(t){const O=f.run();if(i||h||(g?O.some((Y,D)=>We(Y,v[D])):We(O,v))){T&&T();const Y=Xe;Xe=f;try{const D=[O,v===Kt?void 0:g&&v[0]===Kt?[]:v,m];v=O,d?d(t,3,D):t(...D)}finally{Xe=Y}}}else f.run()};return a&&a(A),f=new fi(w),f.scheduler=l?()=>l(A,!1):A,m=E=>yr(E,!1,f),T=f.onStop=()=>{const E=Yt.get(f);if(E){if(d)d(E,4);else for(const O of E)O();Yt.delete(f)}},t?n?A(!0):v=f.run():l?l(A.bind(null,!0),!0):f.run(),y.pause=f.pause.bind(f),y.resume=f.resume.bind(f),y.stop=y,y}function Ke(e,t=1/0,s){if(t<=0||!Z(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,ie(e))Ke(e.value,t,s);else if(j(e))for(let n=0;n<e.length;n++)Ke(e[n],t,s);else if(Po(e)||xt(e))e.forEach(n=>{Ke(n,t,s)});else if(Fo(e)){for(const n in e)Ke(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Ke(e[n],t,s)}return e}/**
|
|
10
|
+
* @vue/runtime-core v3.5.27
|
|
11
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
12
|
+
* @license MIT
|
|
13
|
+
**/function Dt(e,t,s,n){try{return n?e(...n):e()}catch(i){ls(i,t,s)}}function Pe(e,t,s,n){if(L(e)){const i=Dt(e,t,s,n);return i&&li(i)&&i.catch(o=>{ls(o,t,s)}),i}if(j(e)){const i=[];for(let o=0;o<e.length;o++)i.push(Pe(e[o],t,s,n));return i}}function ls(e,t,s,n=!0){const i=t?t.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||q;if(t){let a=t.parent;const d=t.proxy,p=`https://vuejs.org/error-reference/#runtime-${s}`;for(;a;){const f=a.ec;if(f){for(let w=0;w<f.length;w++)if(f[w](e,d,p)===!1)return}a=a.parent}if(o){Oe(),Dt(o,null,10,[e,d,p]),De();return}}wr(e,s,i,n,l)}function wr(e,t,s,n=!0,i=!1){if(i)throw e;console.error(e)}const ce=[];let Te=-1;const ct=[];let Ve=null,ot=0;const Ii=Promise.resolve();let Qt=null;function xr(e){const t=Qt||Ii;return e?t.then(this?e.bind(this):e):t}function _r(e){let t=Te+1,s=ce.length;for(;t<s;){const n=t+s>>>1,i=ce[n],o=Ft(i);o<e||o===e&&i.flags&2?t=n+1:s=n}return t}function an(e){if(!(e.flags&1)){const t=Ft(e),s=ce[ce.length-1];!s||!(e.flags&2)&&t>=Ft(s)?ce.push(e):ce.splice(_r(t),0,e),e.flags|=1,$i()}}function $i(){Qt||(Qt=Ii.then(Pi))}function Sr(e){j(e)?ct.push(...e):Ve&&e.id===-1?Ve.splice(ot+1,0,e):e.flags&1||(ct.push(e),e.flags|=1),$i()}function In(e,t,s=Te+1){for(;s<ce.length;s++){const n=ce[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;ce.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function Bi(e){if(ct.length){const t=[...new Set(ct)].sort((s,n)=>Ft(s)-Ft(n));if(ct.length=0,Ve){Ve.push(...t);return}for(Ve=t,ot=0;ot<Ve.length;ot++){const s=Ve[ot];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}Ve=null,ot=0}}const Ft=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Pi(e){try{for(Te=0;Te<ce.length;Te++){const t=ce[Te];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Dt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Te<ce.length;Te++){const t=ce[Te];t&&(t.flags&=-2)}Te=-1,ce.length=0,Bi(),Qt=null,(ce.length||ct.length)&&Pi()}}let $e=null,Ai=null;function Xt(e){const t=$e;return $e=e,Ai=e&&e.type.__scopeId||null,t}function kr(e,t=$e,s){if(!t||e._n)return e;const n=(...i)=>{n._d&&Ln(-1);const o=Xt(t);let l;try{l=e(...i)}finally{Xt(o),n._d&&Ln(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function Ye(e,t,s,n){const i=e.dirs,o=t&&t.dirs;for(let l=0;l<i.length;l++){const a=i[l];o&&(a.oldValue=o[l].value);let d=a.dir[n];d&&(Oe(),Pe(d,s,8,[e.el,a,e,t]),De())}}function Cr(e,t){if(de){let s=de.provides;const n=de.parent&&de.parent.provides;n===s&&(s=de.provides=Object.create(n)),s[e]=t}}function Wt(e,t,s=!1){const n=El();if(n||dt){let i=dt?dt._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(i&&e in i)return i[e];if(arguments.length>1)return s&&L(t)?t.call(n&&n.proxy):t}}const Er=Symbol.for("v-scx"),Tr=()=>Wt(Er);function Es(e,t,s){return Mi(e,t,s)}function Mi(e,t,s=q){const{immediate:n,deep:i,flush:o,once:l}=s,a=oe({},s),d=t&&n||!t&&o!=="post";let p;if(Ot){if(o==="sync"){const m=Tr();p=m.__watcherHandles||(m.__watcherHandles=[])}else if(!d){const m=()=>{};return m.stop=Be,m.resume=Be,m.pause=Be,m}}const f=de;a.call=(m,h,g)=>Pe(m,f,h,g);let w=!1;o==="post"?a.scheduler=m=>{ge(m,f&&f.suspense)}:o!=="sync"&&(w=!0,a.scheduler=(m,h)=>{h?m():an(m)}),a.augmentJob=m=>{t&&(m.flags|=4),w&&(m.flags|=2,f&&(m.id=f.uid,m.i=f))};const T=br(e,t,a);return Ot&&(p?p.push(T):d&&T()),T}function Ir(e,t,s){const n=this.proxy,i=se(e)?e.includes(".")?Fi(n,e):()=>n[e]:e.bind(n,n);let o;L(t)?o=t:(o=t.handler,s=t);const l=Lt(this),a=Mi(i,o.bind(n),s);return l(),a}function Fi(e,t){const s=t.split(".");return()=>{let n=e;for(let i=0;i<s.length&&n;i++)n=n[s[i]];return n}}const $r=Symbol("_vte"),Br=e=>e.__isTeleport,Pr=Symbol("_leaveCb");function cn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,cn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ri(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Zt=new WeakMap;function Ct(e,t,s,n,i=!1){if(j(e)){e.forEach((h,g)=>Ct(h,t&&(j(t)?t[g]:t),s,n,i));return}if(Et(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Ct(e,t,s,n.component.subTree);return}const o=n.shapeFlag&4?pn(n.component):n.el,l=i?null:o,{i:a,r:d}=e,p=t&&t.r,f=a.refs===q?a.refs={}:a.refs,w=a.setupState,T=V(w),m=w===q?ri:h=>U(T,h);if(p!=null&&p!==d){if($n(t),se(p))f[p]=null,m(p)&&(w[p]=null);else if(ie(p)){p.value=null;const h=t;h.k&&(f[h.k]=null)}}if(L(d))Dt(d,a,12,[l,f]);else{const h=se(d),g=ie(d);if(h||g){const x=()=>{if(e.f){const y=h?m(d)?w[d]:f[d]:d.value;if(i)j(y)&&Gs(y,o);else if(j(y))y.includes(o)||y.push(o);else if(h)f[d]=[o],m(d)&&(w[d]=f[d]);else{const v=[o];d.value=v,e.k&&(f[e.k]=v)}}else h?(f[d]=l,m(d)&&(w[d]=l)):g&&(d.value=l,e.k&&(f[e.k]=l))};if(l){const y=()=>{x(),Zt.delete(e)};y.id=-1,Zt.set(e,y),ge(y,s)}else $n(e),x()}}}function $n(e){const t=Zt.get(e);t&&(t.flags|=8,Zt.delete(e))}rs().requestIdleCallback;rs().cancelIdleCallback;const Et=e=>!!e.type.__asyncLoader,Oi=e=>e.type.__isKeepAlive;function Ar(e,t){Di(e,"a",t)}function Mr(e,t){Di(e,"da",t)}function Di(e,t,s=de){const n=e.__wdc||(e.__wdc=()=>{let i=s;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(as(t,n,s),s){let i=s.parent;for(;i&&i.parent;)Oi(i.parent.vnode)&&Fr(n,t,s,i),i=i.parent}}function Fr(e,t,s,n){const i=as(t,e,n,!0);ji(()=>{Gs(n[t],i)},s)}function as(e,t,s=de,n=!1){if(s){const i=s[e]||(s[e]=[]),o=t.__weh||(t.__weh=(...l)=>{Oe();const a=Lt(s),d=Pe(t,s,e,l);return a(),De(),d});return n?i.unshift(o):i.push(o),o}}const je=e=>(t,s=de)=>{(!Ot||e==="sp")&&as(e,(...n)=>t(...n),s)},Rr=je("bm"),Li=je("m"),Or=je("bu"),Dr=je("u"),Lr=je("bum"),ji=je("um"),jr=je("sp"),Hr=je("rtg"),Nr=je("rtc");function Vr(e,t=de){as("ec",e,t)}const Ur=Symbol.for("v-ndc"),Ls=e=>e?io(e)?pn(e):Ls(e.parent):null,Tt=oe(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=>Ls(e.parent),$root:e=>Ls(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ni(e),$forceUpdate:e=>e.f||(e.f=()=>{an(e.update)}),$nextTick:e=>e.n||(e.n=xr.bind(e.proxy)),$watch:e=>Ir.bind(e)}),Ts=(e,t)=>e!==q&&!e.__isScriptSetup&&U(e,t),Kr={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:i,props:o,accessCache:l,type:a,appContext:d}=e;if(t[0]!=="$"){const T=l[t];if(T!==void 0)switch(T){case 1:return n[t];case 2:return i[t];case 4:return s[t];case 3:return o[t]}else{if(Ts(n,t))return l[t]=1,n[t];if(i!==q&&U(i,t))return l[t]=2,i[t];if(U(o,t))return l[t]=3,o[t];if(s!==q&&U(s,t))return l[t]=4,s[t];js&&(l[t]=0)}}const p=Tt[t];let f,w;if(p)return t==="$attrs"&&ne(e.attrs,"get",""),p(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(s!==q&&U(s,t))return l[t]=4,s[t];if(w=d.config.globalProperties,U(w,t))return w[t]},set({_:e},t,s){const{data:n,setupState:i,ctx:o}=e;return Ts(i,t)?(i[t]=s,!0):n!==q&&U(n,t)?(n[t]=s,!0):U(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:i,props:o,type:l}},a){let d;return!!(s[a]||e!==q&&a[0]!=="$"&&U(e,a)||Ts(t,a)||U(o,a)||U(n,a)||U(Tt,a)||U(i.config.globalProperties,a)||(d=l.__cssModules)&&d[a])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:U(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Bn(e){return j(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let js=!0;function Wr(e){const t=Ni(e),s=e.proxy,n=e.ctx;js=!1,t.beforeCreate&&Pn(t.beforeCreate,e,"bc");const{data:i,computed:o,methods:l,watch:a,provide:d,inject:p,created:f,beforeMount:w,mounted:T,beforeUpdate:m,updated:h,activated:g,deactivated:x,beforeDestroy:y,beforeUnmount:v,destroyed:A,unmounted:E,render:O,renderTracked:Y,renderTriggered:D,errorCaptured:X,serverPrefetch:st,expose:xe,inheritAttrs:He,components:Ae,directives:nt,filters:bs}=t;if(p&&zr(p,n,null),l)for(const Q in l){const z=l[Q];L(z)&&(n[Q]=z.bind(s))}if(i){const Q=i.call(s,s);Z(Q)&&(e.data=on(Q))}if(js=!0,o)for(const Q in o){const z=o[Q],Ge=L(z)?z.bind(s,s):L(z.get)?z.get.bind(s,s):Be,Ht=!L(z)&&L(z.set)?z.set.bind(s):Be,qe=Al({get:Ge,set:Ht});Object.defineProperty(n,Q,{enumerable:!0,configurable:!0,get:()=>qe.value,set:_e=>qe.value=_e})}if(a)for(const Q in a)Hi(a[Q],n,s,Q);if(d){const Q=L(d)?d.call(s):d;Reflect.ownKeys(Q).forEach(z=>{Cr(z,Q[z])})}f&&Pn(f,e,"c");function re(Q,z){j(z)?z.forEach(Ge=>Q(Ge.bind(s))):z&&Q(z.bind(s))}if(re(Rr,w),re(Li,T),re(Or,m),re(Dr,h),re(Ar,g),re(Mr,x),re(Vr,X),re(Nr,Y),re(Hr,D),re(Lr,v),re(ji,E),re(jr,st),j(xe))if(xe.length){const Q=e.exposed||(e.exposed={});xe.forEach(z=>{Object.defineProperty(Q,z,{get:()=>s[z],set:Ge=>s[z]=Ge,enumerable:!0})})}else e.exposed||(e.exposed={});O&&e.render===Be&&(e.render=O),He!=null&&(e.inheritAttrs=He),Ae&&(e.components=Ae),nt&&(e.directives=nt),st&&Ri(e)}function zr(e,t,s=Be){j(e)&&(e=Hs(e));for(const n in e){const i=e[n];let o;Z(i)?"default"in i?o=Wt(i.from||n,i.default,!0):o=Wt(i.from||n):o=Wt(i),ie(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[n]=o}}function Pn(e,t,s){Pe(j(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function Hi(e,t,s,n){let i=n.includes(".")?Fi(s,n):()=>s[n];if(se(e)){const o=t[e];L(o)&&Es(i,o)}else if(L(e))Es(i,e.bind(s));else if(Z(e))if(j(e))e.forEach(o=>Hi(o,t,s,n));else{const o=L(e.handler)?e.handler.bind(s):t[e.handler];L(o)&&Es(i,o,e)}}function Ni(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:i,optionsCache:o,config:{optionMergeStrategies:l}}=e.appContext,a=o.get(t);let d;return a?d=a:!i.length&&!s&&!n?d=t:(d={},i.length&&i.forEach(p=>es(d,p,l,!0)),es(d,t,l)),Z(t)&&o.set(t,d),d}function es(e,t,s,n=!1){const{mixins:i,extends:o}=t;o&&es(e,o,s,!0),i&&i.forEach(l=>es(e,l,s,!0));for(const l in t)if(!(n&&l==="expose")){const a=Jr[l]||s&&s[l];e[l]=a?a(e[l],t[l]):t[l]}return e}const Jr={data:An,props:Mn,emits:Mn,methods:wt,computed:wt,beforeCreate:le,created:le,beforeMount:le,mounted:le,beforeUpdate:le,updated:le,beforeDestroy:le,beforeUnmount:le,destroyed:le,unmounted:le,activated:le,deactivated:le,errorCaptured:le,serverPrefetch:le,components:wt,directives:wt,watch:qr,provide:An,inject:Gr};function An(e,t){return t?e?function(){return oe(L(e)?e.call(this,this):e,L(t)?t.call(this,this):t)}:t:e}function Gr(e,t){return wt(Hs(e),Hs(t))}function Hs(e){if(j(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function le(e,t){return e?[...new Set([].concat(e,t))]:t}function wt(e,t){return e?oe(Object.create(null),e,t):t}function Mn(e,t){return e?j(e)&&j(t)?[...new Set([...e,...t])]:oe(Object.create(null),Bn(e),Bn(t??{})):t}function qr(e,t){if(!e)return t;if(!t)return e;const s=oe(Object.create(null),e);for(const n in t)s[n]=le(e[n],t[n]);return s}function Vi(){return{app:null,config:{isNativeTag:ri,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Yr=0;function Qr(e,t){return function(n,i=null){L(n)||(n=oe({},n)),i!=null&&!Z(i)&&(i=null);const o=Vi(),l=new WeakSet,a=[];let d=!1;const p=o.app={_uid:Yr++,_component:n,_props:i,_container:null,_context:o,_instance:null,version:Ml,get config(){return o.config},set config(f){},use(f,...w){return l.has(f)||(f&&L(f.install)?(l.add(f),f.install(p,...w)):L(f)&&(l.add(f),f(p,...w))),p},mixin(f){return o.mixins.includes(f)||o.mixins.push(f),p},component(f,w){return w?(o.components[f]=w,p):o.components[f]},directive(f,w){return w?(o.directives[f]=w,p):o.directives[f]},mount(f,w,T){if(!d){const m=p._ceVNode||et(n,i);return m.appContext=o,T===!0?T="svg":T===!1&&(T=void 0),e(m,f,T),d=!0,p._container=f,f.__vue_app__=p,pn(m.component)}},onUnmount(f){a.push(f)},unmount(){d&&(Pe(a,p._instance,16),e(null,p._container),delete p._container.__vue_app__)},provide(f,w){return o.provides[f]=w,p},runWithContext(f){const w=dt;dt=p;try{return f()}finally{dt=w}}};return p}}let dt=null;const Xr=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ze(t)}Modifiers`]||e[`${tt(t)}Modifiers`];function Zr(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||q;let i=s;const o=t.startsWith("update:"),l=o&&Xr(n,t.slice(7));l&&(l.trim&&(i=s.map(f=>se(f)?f.trim():f)),l.number&&(i=s.map(Do)));let a,d=n[a=xs(t)]||n[a=xs(ze(t))];!d&&o&&(d=n[a=xs(tt(t))]),d&&Pe(d,e,6,i);const p=n[a+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Pe(p,e,6,i)}}const el=new WeakMap;function Ui(e,t,s=!1){const n=s?el:t.emitsCache,i=n.get(e);if(i!==void 0)return i;const o=e.emits;let l={},a=!1;if(!L(e)){const d=p=>{const f=Ui(p,t,!0);f&&(a=!0,oe(l,f))};!s&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!o&&!a?(Z(e)&&n.set(e,null),null):(j(o)?o.forEach(d=>l[d]=null):oe(l,o),Z(e)&&n.set(e,l),l)}function cs(e,t){return!e||!ns(t)?!1:(t=t.slice(2).replace(/Once$/,""),U(e,t[0].toLowerCase()+t.slice(1))||U(e,tt(t))||U(e,t))}function Fn(e){const{type:t,vnode:s,proxy:n,withProxy:i,propsOptions:[o],slots:l,attrs:a,emit:d,render:p,renderCache:f,props:w,data:T,setupState:m,ctx:h,inheritAttrs:g}=e,x=Xt(e);let y,v;try{if(s.shapeFlag&4){const E=i||n,O=E;y=Ie(p.call(O,E,f,w,m,T,h)),v=a}else{const E=t;y=Ie(E.length>1?E(w,{attrs:a,slots:l,emit:d}):E(w,null)),v=t.props?a:tl(a)}}catch(E){It.length=0,ls(E,e,1),y=et(ut)}let A=y;if(v&&g!==!1){const E=Object.keys(v),{shapeFlag:O}=A;E.length&&O&7&&(o&&E.some(Js)&&(v=sl(v,o)),A=ft(A,v,!1,!0))}return s.dirs&&(A=ft(A,null,!1,!0),A.dirs=A.dirs?A.dirs.concat(s.dirs):s.dirs),s.transition&&cn(A,s.transition),y=A,Xt(x),y}const tl=e=>{let t;for(const s in e)(s==="class"||s==="style"||ns(s))&&((t||(t={}))[s]=e[s]);return t},sl=(e,t)=>{const s={};for(const n in e)(!Js(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function nl(e,t,s){const{props:n,children:i,component:o}=e,{props:l,children:a,patchFlag:d}=t,p=o.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&d>=0){if(d&1024)return!0;if(d&16)return n?Rn(n,l,p):!!l;if(d&8){const f=t.dynamicProps;for(let w=0;w<f.length;w++){const T=f[w];if(l[T]!==n[T]&&!cs(p,T))return!0}}}else return(i||a)&&(!a||!a.$stable)?!0:n===l?!1:n?l?Rn(n,l,p):!0:!!l;return!1}function Rn(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let i=0;i<n.length;i++){const o=n[i];if(t[o]!==e[o]&&!cs(s,o))return!0}return!1}function il({vnode:e,parent:t},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=s,t=t.parent;else break}}const Ki={},Wi=()=>Object.create(Ki),zi=e=>Object.getPrototypeOf(e)===Ki;function ol(e,t,s,n=!1){const i={},o=Wi();e.propsDefaults=Object.create(null),Ji(e,t,i,o);for(const l in e.propsOptions[0])l in i||(i[l]=void 0);s?e.props=n?i:dr(i):e.type.props?e.props=i:e.props=o,e.attrs=o}function rl(e,t,s,n){const{props:i,attrs:o,vnode:{patchFlag:l}}=e,a=V(i),[d]=e.propsOptions;let p=!1;if((n||l>0)&&!(l&16)){if(l&8){const f=e.vnode.dynamicProps;for(let w=0;w<f.length;w++){let T=f[w];if(cs(e.emitsOptions,T))continue;const m=t[T];if(d)if(U(o,T))m!==o[T]&&(o[T]=m,p=!0);else{const h=ze(T);i[h]=Ns(d,a,h,m,e,!1)}else m!==o[T]&&(o[T]=m,p=!0)}}}else{Ji(e,t,i,o)&&(p=!0);let f;for(const w in a)(!t||!U(t,w)&&((f=tt(w))===w||!U(t,f)))&&(d?s&&(s[w]!==void 0||s[f]!==void 0)&&(i[w]=Ns(d,a,w,void 0,e,!0)):delete i[w]);if(o!==a)for(const w in o)(!t||!U(t,w))&&(delete o[w],p=!0)}p&&Re(e.attrs,"set","")}function Ji(e,t,s,n){const[i,o]=e.propsOptions;let l=!1,a;if(t)for(let d in t){if(_t(d))continue;const p=t[d];let f;i&&U(i,f=ze(d))?!o||!o.includes(f)?s[f]=p:(a||(a={}))[f]=p:cs(e.emitsOptions,d)||(!(d in n)||p!==n[d])&&(n[d]=p,l=!0)}if(o){const d=V(s),p=a||q;for(let f=0;f<o.length;f++){const w=o[f];s[w]=Ns(i,d,w,p[w],e,!U(p,w))}}return l}function Ns(e,t,s,n,i,o){const l=e[s];if(l!=null){const a=U(l,"default");if(a&&n===void 0){const d=l.default;if(l.type!==Function&&!l.skipFactory&&L(d)){const{propsDefaults:p}=i;if(s in p)n=p[s];else{const f=Lt(i);n=p[s]=d.call(null,t),f()}}else n=d;i.ce&&i.ce._setProp(s,n)}l[0]&&(o&&!a?n=!1:l[1]&&(n===""||n===tt(s))&&(n=!0))}return n}const ll=new WeakMap;function Gi(e,t,s=!1){const n=s?ll:t.propsCache,i=n.get(e);if(i)return i;const o=e.props,l={},a=[];let d=!1;if(!L(e)){const f=w=>{d=!0;const[T,m]=Gi(w,t,!0);oe(l,T),m&&a.push(...m)};!s&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!d)return Z(e)&&n.set(e,lt),lt;if(j(o))for(let f=0;f<o.length;f++){const w=ze(o[f]);On(w)&&(l[w]=q)}else if(o)for(const f in o){const w=ze(f);if(On(w)){const T=o[f],m=l[w]=j(T)||L(T)?{type:T}:oe({},T),h=m.type;let g=!1,x=!0;if(j(h))for(let y=0;y<h.length;++y){const v=h[y],A=L(v)&&v.name;if(A==="Boolean"){g=!0;break}else A==="String"&&(x=!1)}else g=L(h)&&h.name==="Boolean";m[0]=g,m[1]=x,(g||U(m,"default"))&&a.push(w)}}const p=[l,a];return Z(e)&&n.set(e,p),p}function On(e){return e[0]!=="$"&&!_t(e)}const dn=e=>e==="_"||e==="_ctx"||e==="$stable",un=e=>j(e)?e.map(Ie):[Ie(e)],al=(e,t,s)=>{if(t._n)return t;const n=kr((...i)=>un(t(...i)),s);return n._c=!1,n},qi=(e,t,s)=>{const n=e._ctx;for(const i in e){if(dn(i))continue;const o=e[i];if(L(o))t[i]=al(i,o,n);else if(o!=null){const l=un(o);t[i]=()=>l}}},Yi=(e,t)=>{const s=un(t);e.slots.default=()=>s},Qi=(e,t,s)=>{for(const n in t)(s||!dn(n))&&(e[n]=t[n])},cl=(e,t,s)=>{const n=e.slots=Wi();if(e.vnode.shapeFlag&32){const i=t._;i?(Qi(n,t,s),s&&ci(n,"_",i,!0)):qi(t,n)}else t&&Yi(e,t)},dl=(e,t,s)=>{const{vnode:n,slots:i}=e;let o=!0,l=q;if(n.shapeFlag&32){const a=t._;a?s&&a===1?o=!1:Qi(i,t,s):(o=!t.$stable,qi(t,i)),l=t}else t&&(Yi(e,t),l={default:1});if(o)for(const a in i)!dn(a)&&l[a]==null&&delete i[a]},ge=gl;function ul(e){return fl(e)}function fl(e,t){const s=rs();s.__VUE__=!0;const{insert:n,remove:i,patchProp:o,createElement:l,createText:a,createComment:d,setText:p,setElementText:f,parentNode:w,nextSibling:T,setScopeId:m=Be,insertStaticContent:h}=e,g=(c,u,b,C=null,_=null,S=null,B=void 0,$=null,I=!!u.dynamicChildren)=>{if(c===u)return;c&&!bt(c,u)&&(C=Nt(c),_e(c,_,S,!0),c=null),u.patchFlag===-2&&(I=!1,u.dynamicChildren=null);const{type:k,ref:F,shapeFlag:P}=u;switch(k){case ds:x(c,u,b,C);break;case ut:y(c,u,b,C);break;case $s:c==null&&v(u,b,C,B);break;case ye:Ae(c,u,b,C,_,S,B,$,I);break;default:P&1?O(c,u,b,C,_,S,B,$,I):P&6?nt(c,u,b,C,_,S,B,$,I):(P&64||P&128)&&k.process(c,u,b,C,_,S,B,$,I,mt)}F!=null&&_?Ct(F,c&&c.ref,S,u||c,!u):F==null&&c&&c.ref!=null&&Ct(c.ref,null,S,c,!0)},x=(c,u,b,C)=>{if(c==null)n(u.el=a(u.children),b,C);else{const _=u.el=c.el;u.children!==c.children&&p(_,u.children)}},y=(c,u,b,C)=>{c==null?n(u.el=d(u.children||""),b,C):u.el=c.el},v=(c,u,b,C)=>{[c.el,c.anchor]=h(c.children,u,b,C,c.el,c.anchor)},A=({el:c,anchor:u},b,C)=>{let _;for(;c&&c!==u;)_=T(c),n(c,b,C),c=_;n(u,b,C)},E=({el:c,anchor:u})=>{let b;for(;c&&c!==u;)b=T(c),i(c),c=b;i(u)},O=(c,u,b,C,_,S,B,$,I)=>{if(u.type==="svg"?B="svg":u.type==="math"&&(B="mathml"),c==null)Y(u,b,C,_,S,B,$,I);else{const k=c.el&&c.el._isVueCE?c.el:null;try{k&&k._beginPatch(),st(c,u,_,S,B,$,I)}finally{k&&k._endPatch()}}},Y=(c,u,b,C,_,S,B,$)=>{let I,k;const{props:F,shapeFlag:P,transition:M,dirs:R}=c;if(I=c.el=l(c.type,S,F&&F.is,F),P&8?f(I,c.children):P&16&&X(c.children,I,null,C,_,Is(c,S),B,$),R&&Ye(c,null,C,"created"),D(I,c,c.scopeId,B,C),F){for(const J in F)J!=="value"&&!_t(J)&&o(I,J,null,F[J],S,C);"value"in F&&o(I,"value",null,F.value,S),(k=F.onVnodeBeforeMount)&&Ee(k,C,c)}R&&Ye(c,null,C,"beforeMount");const H=pl(_,M);H&&M.beforeEnter(I),n(I,u,b),((k=F&&F.onVnodeMounted)||H||R)&&ge(()=>{k&&Ee(k,C,c),H&&M.enter(I),R&&Ye(c,null,C,"mounted")},_)},D=(c,u,b,C,_)=>{if(b&&m(c,b),C)for(let S=0;S<C.length;S++)m(c,C[S]);if(_){let S=_.subTree;if(u===S||to(S.type)&&(S.ssContent===u||S.ssFallback===u)){const B=_.vnode;D(c,B,B.scopeId,B.slotScopeIds,_.parent)}}},X=(c,u,b,C,_,S,B,$,I=0)=>{for(let k=I;k<c.length;k++){const F=c[k]=$?Ue(c[k]):Ie(c[k]);g(null,F,u,b,C,_,S,B,$)}},st=(c,u,b,C,_,S,B)=>{const $=u.el=c.el;let{patchFlag:I,dynamicChildren:k,dirs:F}=u;I|=c.patchFlag&16;const P=c.props||q,M=u.props||q;let R;if(b&&Qe(b,!1),(R=M.onVnodeBeforeUpdate)&&Ee(R,b,u,c),F&&Ye(u,c,b,"beforeUpdate"),b&&Qe(b,!0),(P.innerHTML&&M.innerHTML==null||P.textContent&&M.textContent==null)&&f($,""),k?xe(c.dynamicChildren,k,$,b,C,Is(u,_),S):B||z(c,u,$,null,b,C,Is(u,_),S,!1),I>0){if(I&16)He($,P,M,b,_);else if(I&2&&P.class!==M.class&&o($,"class",null,M.class,_),I&4&&o($,"style",P.style,M.style,_),I&8){const H=u.dynamicProps;for(let J=0;J<H.length;J++){const K=H[J],ue=P[K],fe=M[K];(fe!==ue||K==="value")&&o($,K,ue,fe,_,b)}}I&1&&c.children!==u.children&&f($,u.children)}else!B&&k==null&&He($,P,M,b,_);((R=M.onVnodeUpdated)||F)&&ge(()=>{R&&Ee(R,b,u,c),F&&Ye(u,c,b,"updated")},C)},xe=(c,u,b,C,_,S,B)=>{for(let $=0;$<u.length;$++){const I=c[$],k=u[$],F=I.el&&(I.type===ye||!bt(I,k)||I.shapeFlag&198)?w(I.el):b;g(I,k,F,null,C,_,S,B,!0)}},He=(c,u,b,C,_)=>{if(u!==b){if(u!==q)for(const S in u)!_t(S)&&!(S in b)&&o(c,S,u[S],null,_,C);for(const S in b){if(_t(S))continue;const B=b[S],$=u[S];B!==$&&S!=="value"&&o(c,S,$,B,_,C)}"value"in b&&o(c,"value",u.value,b.value,_)}},Ae=(c,u,b,C,_,S,B,$,I)=>{const k=u.el=c?c.el:a(""),F=u.anchor=c?c.anchor:a("");let{patchFlag:P,dynamicChildren:M,slotScopeIds:R}=u;R&&($=$?$.concat(R):R),c==null?(n(k,b,C),n(F,b,C),X(u.children||[],b,F,_,S,B,$,I)):P>0&&P&64&&M&&c.dynamicChildren&&c.dynamicChildren.length===M.length?(xe(c.dynamicChildren,M,b,_,S,B,$),(u.key!=null||_&&u===_.subTree)&&Xi(c,u,!0)):z(c,u,b,F,_,S,B,$,I)},nt=(c,u,b,C,_,S,B,$,I)=>{u.slotScopeIds=$,c==null?u.shapeFlag&512?_.ctx.activate(u,b,C,B,I):bs(u,b,C,_,S,B,I):bn(c,u,I)},bs=(c,u,b,C,_,S,B)=>{const $=c.component=Cl(c,C,_);if(Oi(c)&&($.ctx.renderer=mt),Tl($,!1,B),$.asyncDep){if(_&&_.registerDep($,re,B),!c.el){const I=$.subTree=et(ut);y(null,I,u,b),c.placeholder=I.el}}else re($,c,u,b,_,S,B)},bn=(c,u,b)=>{const C=u.component=c.component;if(nl(c,u,b))if(C.asyncDep&&!C.asyncResolved){Q(C,u,b);return}else C.next=u,C.update();else u.el=c.el,C.vnode=u},re=(c,u,b,C,_,S,B)=>{const $=()=>{if(c.isMounted){let{next:P,bu:M,u:R,parent:H,vnode:J}=c;{const ke=Zi(c);if(ke){P&&(P.el=J.el,Q(c,P,B)),ke.asyncDep.then(()=>{c.isUnmounted||$()});return}}let K=P,ue;Qe(c,!1),P?(P.el=J.el,Q(c,P,B)):P=J,M&&_s(M),(ue=P.props&&P.props.onVnodeBeforeUpdate)&&Ee(ue,H,P,J),Qe(c,!0);const fe=Fn(c),Se=c.subTree;c.subTree=fe,g(Se,fe,w(Se.el),Nt(Se),c,_,S),P.el=fe.el,K===null&&il(c,fe.el),R&&ge(R,_),(ue=P.props&&P.props.onVnodeUpdated)&&ge(()=>Ee(ue,H,P,J),_)}else{let P;const{el:M,props:R}=u,{bm:H,m:J,parent:K,root:ue,type:fe}=c,Se=Et(u);Qe(c,!1),H&&_s(H),!Se&&(P=R&&R.onVnodeBeforeMount)&&Ee(P,K,u),Qe(c,!0);{ue.ce&&ue.ce._def.shadowRoot!==!1&&ue.ce._injectChildStyle(fe);const ke=c.subTree=Fn(c);g(null,ke,b,C,c,_,S),u.el=ke.el}if(J&&ge(J,_),!Se&&(P=R&&R.onVnodeMounted)){const ke=u;ge(()=>Ee(P,K,ke),_)}(u.shapeFlag&256||K&&Et(K.vnode)&&K.vnode.shapeFlag&256)&&c.a&&ge(c.a,_),c.isMounted=!0,u=b=C=null}};c.scope.on();const I=c.effect=new fi($);c.scope.off();const k=c.update=I.run.bind(I),F=c.job=I.runIfDirty.bind(I);F.i=c,F.id=c.uid,I.scheduler=()=>an(F),Qe(c,!0),k()},Q=(c,u,b)=>{u.component=c;const C=c.vnode.props;c.vnode=u,c.next=null,rl(c,u.props,C,b),dl(c,u.children,b),Oe(),In(c),De()},z=(c,u,b,C,_,S,B,$,I=!1)=>{const k=c&&c.children,F=c?c.shapeFlag:0,P=u.children,{patchFlag:M,shapeFlag:R}=u;if(M>0){if(M&128){Ht(k,P,b,C,_,S,B,$,I);return}else if(M&256){Ge(k,P,b,C,_,S,B,$,I);return}}R&8?(F&16&>(k,_,S),P!==k&&f(b,P)):F&16?R&16?Ht(k,P,b,C,_,S,B,$,I):gt(k,_,S,!0):(F&8&&f(b,""),R&16&&X(P,b,C,_,S,B,$,I))},Ge=(c,u,b,C,_,S,B,$,I)=>{c=c||lt,u=u||lt;const k=c.length,F=u.length,P=Math.min(k,F);let M;for(M=0;M<P;M++){const R=u[M]=I?Ue(u[M]):Ie(u[M]);g(c[M],R,b,null,_,S,B,$,I)}k>F?gt(c,_,S,!0,!1,P):X(u,b,C,_,S,B,$,I,P)},Ht=(c,u,b,C,_,S,B,$,I)=>{let k=0;const F=u.length;let P=c.length-1,M=F-1;for(;k<=P&&k<=M;){const R=c[k],H=u[k]=I?Ue(u[k]):Ie(u[k]);if(bt(R,H))g(R,H,b,null,_,S,B,$,I);else break;k++}for(;k<=P&&k<=M;){const R=c[P],H=u[M]=I?Ue(u[M]):Ie(u[M]);if(bt(R,H))g(R,H,b,null,_,S,B,$,I);else break;P--,M--}if(k>P){if(k<=M){const R=M+1,H=R<F?u[R].el:C;for(;k<=M;)g(null,u[k]=I?Ue(u[k]):Ie(u[k]),b,H,_,S,B,$,I),k++}}else if(k>M)for(;k<=P;)_e(c[k],_,S,!0),k++;else{const R=k,H=k,J=new Map;for(k=H;k<=M;k++){const he=u[k]=I?Ue(u[k]):Ie(u[k]);he.key!=null&&J.set(he.key,k)}let K,ue=0;const fe=M-H+1;let Se=!1,ke=0;const vt=new Array(fe);for(k=0;k<fe;k++)vt[k]=0;for(k=R;k<=P;k++){const he=c[k];if(ue>=fe){_e(he,_,S,!0);continue}let Ce;if(he.key!=null)Ce=J.get(he.key);else for(K=H;K<=M;K++)if(vt[K-H]===0&&bt(he,u[K])){Ce=K;break}Ce===void 0?_e(he,_,S,!0):(vt[Ce-H]=k+1,Ce>=ke?ke=Ce:Se=!0,g(he,u[Ce],b,null,_,S,B,$,I),ue++)}const _n=Se?hl(vt):lt;for(K=_n.length-1,k=fe-1;k>=0;k--){const he=H+k,Ce=u[he],Sn=u[he+1],kn=he+1<F?Sn.el||eo(Sn):C;vt[k]===0?g(null,Ce,b,kn,_,S,B,$,I):Se&&(K<0||k!==_n[K]?qe(Ce,b,kn,2):K--)}}},qe=(c,u,b,C,_=null)=>{const{el:S,type:B,transition:$,children:I,shapeFlag:k}=c;if(k&6){qe(c.component.subTree,u,b,C);return}if(k&128){c.suspense.move(u,b,C);return}if(k&64){B.move(c,u,b,mt);return}if(B===ye){n(S,u,b);for(let P=0;P<I.length;P++)qe(I[P],u,b,C);n(c.anchor,u,b);return}if(B===$s){A(c,u,b);return}if(C!==2&&k&1&&$)if(C===0)$.beforeEnter(S),n(S,u,b),ge(()=>$.enter(S),_);else{const{leave:P,delayLeave:M,afterLeave:R}=$,H=()=>{c.ctx.isUnmounted?i(S):n(S,u,b)},J=()=>{S._isLeaving&&S[Pr](!0),P(S,()=>{H(),R&&R()})};M?M(S,H,J):J()}else n(S,u,b)},_e=(c,u,b,C=!1,_=!1)=>{const{type:S,props:B,ref:$,children:I,dynamicChildren:k,shapeFlag:F,patchFlag:P,dirs:M,cacheIndex:R}=c;if(P===-2&&(_=!1),$!=null&&(Oe(),Ct($,null,b,c,!0),De()),R!=null&&(u.renderCache[R]=void 0),F&256){u.ctx.deactivate(c);return}const H=F&1&&M,J=!Et(c);let K;if(J&&(K=B&&B.onVnodeBeforeUnmount)&&Ee(K,u,c),F&6)$o(c.component,b,C);else{if(F&128){c.suspense.unmount(b,C);return}H&&Ye(c,null,u,"beforeUnmount"),F&64?c.type.remove(c,u,b,mt,C):k&&!k.hasOnce&&(S!==ye||P>0&&P&64)?gt(k,u,b,!1,!0):(S===ye&&P&384||!_&&F&16)&>(I,u,b),C&&wn(c)}(J&&(K=B&&B.onVnodeUnmounted)||H)&&ge(()=>{K&&Ee(K,u,c),H&&Ye(c,null,u,"unmounted")},b)},wn=c=>{const{type:u,el:b,anchor:C,transition:_}=c;if(u===ye){Io(b,C);return}if(u===$s){E(c);return}const S=()=>{i(b),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(c.shapeFlag&1&&_&&!_.persisted){const{leave:B,delayLeave:$}=_,I=()=>B(b,S);$?$(c.el,S,I):I()}else S()},Io=(c,u)=>{let b;for(;c!==u;)b=T(c),i(c),c=b;i(u)},$o=(c,u,b)=>{const{bum:C,scope:_,job:S,subTree:B,um:$,m:I,a:k}=c;Dn(I),Dn(k),C&&_s(C),_.stop(),S&&(S.flags|=8,_e(B,c,u,b)),$&&ge($,u),ge(()=>{c.isUnmounted=!0},u)},gt=(c,u,b,C=!1,_=!1,S=0)=>{for(let B=S;B<c.length;B++)_e(c[B],u,b,C,_)},Nt=c=>{if(c.shapeFlag&6)return Nt(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const u=T(c.anchor||c.el),b=u&&u[$r];return b?T(b):u};let ws=!1;const xn=(c,u,b)=>{let C;c==null?u._vnode&&(_e(u._vnode,null,null,!0),C=u._vnode.component):g(u._vnode||null,c,u,null,null,null,b),u._vnode=c,ws||(ws=!0,In(C),Bi(),ws=!1)},mt={p:g,um:_e,m:qe,r:wn,mt:bs,mc:X,pc:z,pbc:xe,n:Nt,o:e};return{render:xn,hydrate:void 0,createApp:Qr(xn)}}function Is({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Qe({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function pl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Xi(e,t,s=!1){const n=e.children,i=t.children;if(j(n)&&j(i))for(let o=0;o<n.length;o++){const l=n[o];let a=i[o];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=i[o]=Ue(i[o]),a.el=l.el),!s&&a.patchFlag!==-2&&Xi(l,a)),a.type===ds&&(a.patchFlag!==-1?a.el=l.el:a.__elIndex=o+(e.type===ye?1:0)),a.type===ut&&!a.el&&(a.el=l.el)}}function hl(e){const t=e.slice(),s=[0];let n,i,o,l,a;const d=e.length;for(n=0;n<d;n++){const p=e[n];if(p!==0){if(i=s[s.length-1],e[i]<p){t[n]=i,s.push(n);continue}for(o=0,l=s.length-1;o<l;)a=o+l>>1,e[s[a]]<p?o=a+1:l=a;p<e[s[o]]&&(o>0&&(t[n]=s[o-1]),s[o]=n)}}for(o=s.length,l=s[o-1];o-- >0;)s[o]=l,l=t[l];return s}function Zi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Zi(t)}function Dn(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function eo(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?eo(t.subTree):null}const to=e=>e.__isSuspense;function gl(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):Sr(e)}const ye=Symbol.for("v-fgt"),ds=Symbol.for("v-txt"),ut=Symbol.for("v-cmt"),$s=Symbol.for("v-stc"),It=[];let me=null;function ml(e=!1){It.push(me=e?null:[])}function vl(){It.pop(),me=It[It.length-1]||null}let Rt=1;function Ln(e,t=!1){Rt+=e,e<0&&me&&t&&(me.hasOnce=!0)}function yl(e){return e.dynamicChildren=Rt>0?me||lt:null,vl(),Rt>0&&me&&me.push(e),e}function bl(e,t,s,n,i,o){return yl(r(e,t,s,n,i,o,!0))}function so(e){return e?e.__v_isVNode===!0:!1}function bt(e,t){return e.type===t.type&&e.key===t.key}const no=({key:e})=>e??null,zt=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||ie(e)||L(e)?{i:$e,r:e,k:t,f:!!s}:e:null);function r(e,t=null,s=null,n=0,i=null,o=e===ye?0:1,l=!1,a=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&no(t),ref:t&&zt(t),scopeId:Ai,slotScopeIds:null,children:s,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:o,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:$e};return a?(fn(d,s),o&128&&e.normalize(d)):s&&(d.shapeFlag|=se(s)?8:16),Rt>0&&!l&&me&&(d.patchFlag>0||o&6)&&d.patchFlag!==32&&me.push(d),d}const et=wl;function wl(e,t=null,s=null,n=0,i=null,o=!1){if((!e||e===Ur)&&(e=ut),so(e)){const a=ft(e,t,!0);return s&&fn(a,s),Rt>0&&!o&&me&&(a.shapeFlag&6?me[me.indexOf(e)]=a:me.push(a)),a.patchFlag=-2,a}if(Pl(e)&&(e=e.__vccOpts),t){t=xl(t);let{class:a,style:d}=t;a&&!se(a)&&(t.class=Qs(a)),Z(d)&&(ln(d)&&!j(d)&&(d=oe({},d)),t.style=Ys(d))}const l=se(e)?1:to(e)?128:Br(e)?64:Z(e)?4:L(e)?2:0;return r(e,t,s,n,i,l,o,!0)}function xl(e){return e?ln(e)||zi(e)?oe({},e):e:null}function ft(e,t,s=!1,n=!1){const{props:i,ref:o,patchFlag:l,children:a,transition:d}=e,p=t?_l(i||{},t):i,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:p,key:p&&no(p),ref:t&&t.ref?s&&o?j(o)?o.concat(zt(t)):[o,zt(t)]:zt(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:d,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ft(e.ssContent),ssFallback:e.ssFallback&&ft(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return d&&n&&cn(f,d.clone(f)),f}function ae(e=" ",t=0){return et(ds,null,e,t)}function Ie(e){return e==null||typeof e=="boolean"?et(ut):j(e)?et(ye,null,e.slice()):so(e)?Ue(e):et(ds,null,String(e))}function Ue(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ft(e)}function fn(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(j(t))s=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),fn(e,i()),i._c&&(i._d=!0));return}else{s=32;const i=t._;!i&&!zi(t)?t._ctx=$e:i===3&&$e&&($e.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else L(t)?(t={default:t,_ctx:$e},s=32):(t=String(t),n&64?(s=16,t=[ae(t)]):s=8);e.children=t,e.shapeFlag|=s}function _l(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const i in n)if(i==="class")t.class!==n.class&&(t.class=Qs([t.class,n.class]));else if(i==="style")t.style=Ys([t.style,n.style]);else if(ns(i)){const o=t[i],l=n[i];l&&o!==l&&!(j(o)&&o.includes(l))&&(t[i]=o?[].concat(o,l):l)}else i!==""&&(t[i]=n[i])}return t}function Ee(e,t,s,n=null){Pe(e,t,7,[s,n])}const Sl=Vi();let kl=0;function Cl(e,t,s){const n=e.type,i=(t?t.appContext:e.appContext)||Sl,o={uid:kl++,vnode:e,type:n,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ui(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Gi(n,i),emitsOptions:Ui(n,i),emit:null,emitted:null,propsDefaults:q,inheritAttrs:n.inheritAttrs,ctx:q,data:q,props:q,attrs:q,slots:q,refs:q,setupState:q,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=Zr.bind(null,o),e.ce&&e.ce(o),o}let de=null;const El=()=>de||$e;let ts,Vs;{const e=rs(),t=(s,n)=>{let i;return(i=e[s])||(i=e[s]=[]),i.push(n),o=>{i.length>1?i.forEach(l=>l(o)):i[0](o)}};ts=t("__VUE_INSTANCE_SETTERS__",s=>de=s),Vs=t("__VUE_SSR_SETTERS__",s=>Ot=s)}const Lt=e=>{const t=de;return ts(e),e.scope.on(),()=>{e.scope.off(),ts(t)}},jn=()=>{de&&de.scope.off(),ts(null)};function io(e){return e.vnode.shapeFlag&4}let Ot=!1;function Tl(e,t=!1,s=!1){t&&Vs(t);const{props:n,children:i}=e.vnode,o=io(e);ol(e,n,o,t),cl(e,i,s||t);const l=o?Il(e,t):void 0;return t&&Vs(!1),l}function Il(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Kr);const{setup:n}=s;if(n){Oe();const i=e.setupContext=n.length>1?Bl(e):null,o=Lt(e),l=Dt(n,e,0,[e.props,i]),a=li(l);if(De(),o(),(a||e.sp)&&!Et(e)&&Ri(e),a){if(l.then(jn,jn),t)return l.then(d=>{Hn(e,d)}).catch(d=>{ls(d,e,0)});e.asyncDep=l}else Hn(e,l)}else oo(e)}function Hn(e,t,s){L(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=Ti(t)),oo(e)}function oo(e,t,s){const n=e.type;e.render||(e.render=n.render||Be);{const i=Lt(e);Oe();try{Wr(e)}finally{De(),i()}}}const $l={get(e,t){return ne(e,"get",""),e[t]}};function Bl(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,$l),slots:e.slots,emit:e.emit,expose:t}}function pn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ti(Ei(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Tt)return Tt[s](e)},has(t,s){return s in t||s in Tt}})):e.proxy}function Pl(e){return L(e)&&"__vccOpts"in e}const Al=(e,t)=>vr(e,t,Ot),Ml="3.5.27";/**
|
|
14
|
+
* @vue/runtime-dom v3.5.27
|
|
15
|
+
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
16
|
+
* @license MIT
|
|
17
|
+
**/let Us;const Nn=typeof window<"u"&&window.trustedTypes;if(Nn)try{Us=Nn.createPolicy("vue",{createHTML:e=>e})}catch{}const ro=Us?e=>Us.createHTML(e):e=>e,Fl="http://www.w3.org/2000/svg",Rl="http://www.w3.org/1998/Math/MathML",Fe=typeof document<"u"?document:null,Vn=Fe&&Fe.createElement("template"),Ol={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?Fe.createElementNS(Fl,e):t==="mathml"?Fe.createElementNS(Rl,e):s?Fe.createElement(e,{is:s}):Fe.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Fe.createTextNode(e),createComment:e=>Fe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Fe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,o){const l=s?s.previousSibling:t.lastChild;if(i&&(i===o||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===o||!(i=i.nextSibling)););else{Vn.innerHTML=ro(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const a=Vn.content;if(n==="svg"||n==="mathml"){const d=a.firstChild;for(;d.firstChild;)a.appendChild(d.firstChild);a.removeChild(d)}t.insertBefore(a,s)}return[l?l.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Dl=Symbol("_vtc");function Ll(e,t,s){const n=e[Dl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Un=Symbol("_vod"),jl=Symbol("_vsh"),Hl=Symbol(""),Nl=/(?:^|;)\s*display\s*:/;function Vl(e,t,s){const n=e.style,i=se(s);let o=!1;if(s&&!i){if(t)if(se(t))for(const l of t.split(";")){const a=l.slice(0,l.indexOf(":")).trim();s[a]==null&&Jt(n,a,"")}else for(const l in t)s[l]==null&&Jt(n,l,"");for(const l in s)l==="display"&&(o=!0),Jt(n,l,s[l])}else if(i){if(t!==s){const l=n[Hl];l&&(s+=";"+l),n.cssText=s,o=Nl.test(s)}}else t&&e.removeAttribute("style");Un in e&&(e[Un]=o?n.display:"",e[jl]&&(n.display="none"))}const Kn=/\s*!important$/;function Jt(e,t,s){if(j(s))s.forEach(n=>Jt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=Ul(e,t);Kn.test(s)?e.setProperty(tt(n),s.replace(Kn,""),"important"):e[n]=s}}const Wn=["Webkit","Moz","ms"],Bs={};function Ul(e,t){const s=Bs[t];if(s)return s;let n=ze(t);if(n!=="filter"&&n in e)return Bs[t]=n;n=ai(n);for(let i=0;i<Wn.length;i++){const o=Wn[i]+n;if(o in e)return Bs[t]=o}return t}const zn="http://www.w3.org/1999/xlink";function Jn(e,t,s,n,i,o=Uo(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(zn,t.slice(6,t.length)):e.setAttributeNS(zn,t,s):s==null||o&&!di(s)?e.removeAttribute(t):e.setAttribute(t,o?"":pt(s)?String(s):s)}function Gn(e,t,s,n,i){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?ro(s):s);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const a=o==="OPTION"?e.getAttribute("value")||"":e.value,d=s==null?e.type==="checkbox"?"on":"":String(s);(a!==d||!("_value"in e))&&(e.value=d),s==null&&e.removeAttribute(t),e._value=s;return}let l=!1;if(s===""||s==null){const a=typeof e[t];a==="boolean"?s=di(s):s==null&&a==="string"?(s="",l=!0):a==="number"&&(s=0,l=!0)}try{e[t]=s}catch{}l&&e.removeAttribute(i||t)}function Kl(e,t,s,n){e.addEventListener(t,s,n)}function Wl(e,t,s,n){e.removeEventListener(t,s,n)}const qn=Symbol("_vei");function zl(e,t,s,n,i=null){const o=e[qn]||(e[qn]={}),l=o[t];if(n&&l)l.value=n;else{const[a,d]=Jl(t);if(n){const p=o[t]=Yl(n,i);Kl(e,a,p,d)}else l&&(Wl(e,a,l,d),o[t]=void 0)}}const Yn=/(?:Once|Passive|Capture)$/;function Jl(e){let t;if(Yn.test(e)){t={};let n;for(;n=e.match(Yn);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):tt(e.slice(2)),t]}let Ps=0;const Gl=Promise.resolve(),ql=()=>Ps||(Gl.then(()=>Ps=0),Ps=Date.now());function Yl(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;Pe(Ql(n,s.value),t,5,[n])};return s.value=e,s.attached=ql(),s}function Ql(e,t){if(j(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const Qn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Xl=(e,t,s,n,i,o)=>{const l=i==="svg";t==="class"?Ll(e,n,l):t==="style"?Vl(e,s,n):ns(t)?Js(t)||zl(e,t,s,n,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Zl(e,t,n,l))?(Gn(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Jn(e,t,n,l,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!se(n))?Gn(e,ze(t),n,o,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Jn(e,t,n,l))};function Zl(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Qn(t)&&L(s));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"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Qn(t)&&se(s)?!1:t in e}const ea=oe({patchProp:Xl},Ol);let Xn;function ta(){return Xn||(Xn=ul(ea))}const sa=(...e)=>{const t=ta().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=ia(n);if(!i)return;const o=t._component;!L(o)&&!o.render&&!o.template&&(o.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const l=s(i,!1,na(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),l},t};function na(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ia(e){return se(e)?document.querySelector(e):e}/*!
|
|
18
|
+
* pinia v2.3.1
|
|
19
|
+
* (c) 2025 Eduardo San Martin Morote
|
|
20
|
+
* @license MIT
|
|
21
|
+
*/const oa=Symbol();var Zn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Zn||(Zn={}));function ra(){const e=Ko(!0),t=e.run(()=>ur({}));let s=[],n=[];const i=Ei({install(o){i._a=o,o.provide(oa,i),o.config.globalProperties.$pinia=i,n.forEach(l=>s.push(l)),n=[]},use(o){return this._a?s.push(o):n.push(o),this},_p:s,_a:null,_e:e,_s:new Map,state:t});return i}function la(e){let t=0;for(let n=0;n<e.length;n++)t=e.charCodeAt(n)+((t<<5)-t);return`hsl(${Math.abs(t)%360}, 70%, 45%)`}function aa(e){if(!e)return"";let t=e.replace(/^(feat|chore|docs|fix|refactor|style|test|perf|ci|build)(\(.*\))?!?:?\s*/i,"");return t.charAt(0).toUpperCase()+t.slice(1)}function Ks(e){if(!e)return"";const t=document.createElement("div");return t.textContent=e,t.innerHTML}function ca(e,t){if(!t||!e)return Ks(e);const s=Ks(e);try{const n=new RegExp(`(${t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return s.replace(n,'<span class="highlight">$1</span>')}catch{return s}}function da(e){const t=Math.floor((new Date-e)/1e3);if(t<60)return"Just now";const s=Math.floor(t/60);if(s<60)return s+"m";const n=Math.floor(s/60);return n<24?n+"h":Math.floor(n/24)+"d"}function ua(e,t="success"){const s=document.querySelector(".toast");s&&s.remove();const n=document.createElement("div");n.className=`toast ${t}`,n.textContent=e,document.body.appendChild(n),setTimeout(()=>n.remove(),3e3)}function fa(){const e=document.querySelector(".sidebar"),t=document.querySelector(".sidebar-overlay");e.classList.toggle("open"),t.classList.toggle("open")}function pa(){"Notification"in window&&Notification.permission==="default"&&Notification.requestPermission()}function ha(e,t={}){"Notification"in window&&Notification.permission==="granted"&&new Notification(e,t)}window.toggleSidebar=fa;function ga(e){const t=document.getElementById(e);t&&(t.classList.add("open"),document.body.style.overflow="hidden")}function ma(e){const t=document.getElementById(e);t&&(t.classList.remove("open"),document.body.style.overflow="")}window.openModal=ga;window.closeModal=ma;Object.assign(window,{stringToColor:la,cleanTitle:aa,escapeHtml:Ks,highlightText:ca,timeSince:da,showToast:ua,requestNotificationPermission:pa,notify:ha});const ee="";function hn(){const e=window.location.hostname;return e==="localhost"||e==="127.0.0.1"?"http://localhost:8003/api/cli":"https://api.repr.dev/api/cli"}async function te(e,t={},s=2){for(let n=0;n<=s;n++)try{const i=await fetch(e,t);if(!i.ok&&n<s){await new Promise(o=>setTimeout(o,1e3*(n+1)));continue}return i}catch(i){if(n===s)throw i;await new Promise(o=>setTimeout(o,1e3*(n+1)))}}async function va(){try{return await(await te(`${ee}/api/status`)).json()}catch(e){throw console.error("Failed to fetch status:",e),e}}async function ya(){try{return await(await te(`${ee}/api/stories`)).json()}catch(e){throw console.error("Failed to fetch stories:",e),e}}async function ba(){try{return await(await te(`${ee}/api/config`)).json()}catch(e){throw console.error("Failed to fetch config:",e),e}}async function wa(e){try{const t=await te(`${ee}/api/config`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error("Failed to save config");return await t.json()}catch(t){throw console.error("Failed to update config:",t),t}}async function xa(){try{return await(await te(`${ee}/api/repos`)).json()}catch(e){throw console.error("Failed to fetch repos:",e),e}}async function _a(e){try{return await(await te(`${ee}/api/repos/add`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})).json()}catch(t){throw console.error("Failed to add repo:",t),t}}async function Sa(e){try{return await(await te(`${ee}/api/repos/remove`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})).json()}catch(t){throw console.error("Failed to remove repo:",t),t}}async function ka(e){try{return await(await te(`${ee}/api/repos/pause`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})).json()}catch(t){throw console.error("Failed to pause repo:",t),t}}async function Ca(e){try{return await(await te(`${ee}/api/repos/resume`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})).json()}catch(t){throw console.error("Failed to resume repo:",t),t}}async function Ea(e,t){try{return await(await te(`${ee}/api/repos/rename`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e,name:t})})).json()}catch(s){throw console.error("Failed to rename repo:",s),s}}async function Ta(){try{return await(await te(`${ee}/api/cron`)).json()}catch(e){throw console.error("Failed to fetch cron status:",e),e}}async function Ia(){try{return await(await te(`${ee}/api/generate`,{method:"POST"})).json()}catch(e){throw console.error("Failed to trigger generation:",e),e}}async function $a(){try{return await(await te(`${ee}/api/auth`)).json()}catch(e){throw console.error("Failed to fetch auth status:",e),e}}async function Ba(){try{const e=await fetch(`${hn()}/device-code`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:"repr-cli"})});if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);const t=await e.json();return{status:"pending",device_code:t.device_code,user_code:t.user_code,verification_url:t.verification_url,expires_in:t.expires_in,interval:t.interval||5}}catch(e){throw console.error("Failed to start login:",e),e}}async function Pa(e){var t;try{const s=await fetch(`${hn()}/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:e,client_id:"repr-cli",device_id:lo(),device_name:ao()})});if(s.status===200){const n=await s.json();return{status:"completed",access_token:n.access_token,user:n.user,litellm_api_key:n.litellm_api_key}}if(s.status===400){const n=await s.json(),i=n.error||((t=n.detail)==null?void 0:t.error)||"unknown";return i==="authorization_pending"?{status:"pending",message:"Waiting for authorization"}:i==="slow_down"?{status:"pending",message:"Slow down"}:i==="expired_token"?{status:"expired",message:"Device code expired"}:i==="access_denied"?{status:"denied",message:"Authorization denied"}:{status:"error",message:`Authorization failed: ${i}`}}return{status:"error",message:`Unexpected status: ${s.status}`}}catch(s){return console.error("Failed to poll login status:",s),{status:"error",message:s.message}}}async function Aa(e){try{return await(await te(`${ee}/api/auth/save`,{method:"POST",body:JSON.stringify(e)})).json()}catch(t){throw console.error("Failed to save auth token:",t),t}}async function Ma(){return{success:!0}}async function Fa(){try{return await(await te(`${ee}/api/auth/logout`,{method:"POST"})).json()}catch(e){throw console.error("Failed to logout:",e),e}}function lo(){let e=localStorage.getItem("repr_device_id");return e||(e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const s=Math.random()*16|0;return(t==="x"?s:s&3|8).toString(16)}),localStorage.setItem("repr_device_id",e)),e}function ao(){return`Dashboard (${navigator.platform||"Web"})`}async function Ra(){try{return await(await te(`${ee}/api/username`)).json()}catch(e){throw console.error("Failed to fetch username info:",e),e}}async function Oa(e){try{return await(await te(`${ee}/api/username/claim`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e})})).json()}catch(t){throw console.error("Failed to claim username:",t),t}}async function Da(e={}){try{const t=new URLSearchParams;return e.scope&&t.append("scope",e.scope),e.repo_name&&t.append("repo_name",e.repo_name),e.story_id&&t.append("story_id",e.story_id),e.include_pushed&&t.append("include_pushed","true"),await(await te(`${ee}/api/publish/preview?${t.toString()}`)).json()}catch(t){throw console.error("Failed to get publish preview:",t),t}}async function co(e={}){try{return await(await te(`${ee}/api/publish`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).json()}catch(t){return console.error("Failed to publish stories:",t),{success:!1,error:t.message}}}async function La(e,t=null){return co({scope:"story",story_id:e,visibility:t})}Object.assign(window,{API_BASE:ee,getReprApiBase:hn,fetchWithRetry:te,getStatus:va,getStories:ya,getConfig:ba,updateConfig:wa,getRepos:xa,addRepo:_a,removeRepo:Sa,pauseRepo:ka,resumeRepo:Ca,renameRepo:Ea,getCronStatus:Ta,triggerGeneration:Ia,getAuthStatus:$a,startLogin:Ba,pollLoginStatus:Pa,saveAuthToken:Aa,cancelLogin:Ma,logout:Fa,getUsernameInfo:Ra,claimUsername:Oa,getDeviceId:lo,getDeviceName:ao,getPublishPreview:Da,publishStories:co,publishSingleStory:La});class uo{constructor(){this.state={stories:[],repos:[],config:null,cronStatus:null,currentRepo:"all",searchQuery:"",currentMainView:"stories",currentSettingsTab:"form",configDirty:!1,previousView:"view-main"},this.subscribers=[]}get(t){return t?this.state[t]:this.state}update(t,s){const n=this.state[t];this.state[t]=s,this.subscribers.forEach(i=>i(t,s,n))}batchUpdate(t){Object.entries(t).forEach(([s,n])=>{this.state[s]=n}),this.subscribers.forEach(s=>s("batch",t,null))}subscribe(t){return this.subscribers.push(t),()=>{const s=this.subscribers.indexOf(t);s>-1&&this.subscribers.splice(s,1)}}reset(){this.state={stories:[],repos:[],config:null,cronStatus:null,currentRepo:"all",searchQuery:"",currentMainView:"stories",currentSettingsTab:"form",configDirty:!1,previousView:"view-main"},this.subscribers.forEach(t=>t("reset",this.state,null))}}const $t=new uo;$t.initRouter=function(){window.addEventListener("popstate",e=>{const t=e.state;if(!t){$t.update("currentMainView","stories"),switchMainView("stories",!1),ei();return}t.view==="detail"&&t.storyId?$t.get("stories").find(i=>i.id===t.storyId)&&openStory(null,t.storyId,!1):t.view==="profile"&&t.repoName?openProfile(null,t.repoName,!1):t.view==="user"&&t.authorName?openUser(null,t.authorName,t.authorEmail||"",!1):t.view==="main"&&(ei(),t.mainView&&switchMainView(t.mainView,!1))})};$t.pushHistory=function(e,t,s){history.pushState(e,t,s)};function ei(){document.getElementById("view-main").style.display=""}window.store=$t;window.State=uo;const Ws="repr-dashboard-theme";function ja(){const e=localStorage.getItem(Ws);if(e)Bt(e);else{const t=window.matchMedia("(prefers-color-scheme: dark)").matches;Bt(t?"dark":"light")}window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",t=>{localStorage.getItem(Ws)||Bt(t.matches?"dark":"light")})}function Bt(e){document.documentElement.setAttribute("data-theme",e),fo(e)}function Ha(){const t=document.documentElement.getAttribute("data-theme")==="dark"?"light":"dark";Bt(t),localStorage.setItem(Ws,t),showToast(`${t==="dark"?"Dark":"Light"} mode enabled`,"success")}function Na(){return document.documentElement.getAttribute("data-theme")||"light"}function fo(e){const t=document.getElementById("theme-toggle");if(t){const s=t.querySelector(".theme-toggle-icon");s&&(s.textContent=e==="dark"?"☀":"☾")}}window.toggleTheme=Ha;Object.assign(window,{initTheme:ja,setTheme:Bt,getTheme:Na,updateThemeToggleIcon:fo});let ve=-1,ss=!1;function Va(){document.addEventListener("keydown",Ua)}function Ua(e){if((e.metaKey||e.ctrlKey)&&e.key==="k"){e.preventDefault(),ti();return}if(e.target.tagName==="INPUT"||e.target.tagName==="TEXTAREA"){if(e.key==="Escape"){e.target.blur();return}return}if(ss){(e.key==="Escape"||e.key==="?")&&(ho(),e.preventDefault());return}switch(e.key){case"/":e.preventDefault(),ti();break;case"j":e.preventDefault(),Ka();break;case"k":e.preventDefault(),Wa();break;case"Enter":ve>=0&&(e.preventDefault(),za());break;case"Escape":e.preventDefault(),Ja();break;case"r":case"R":e.preventDefault(),refreshStories();break;case"?":e.preventDefault(),Ga();break}}function ti(){const e=document.getElementById("search-input");e&&(e.focus(),showToast("Search focused (type to filter, Esc to clear)","success"))}function Ka(){const e=us();e.length&&(ve=Math.min(ve+1,e.length-1),po(e))}function Wa(){const e=us();e.length&&(ve=Math.max(ve-1,0),po(e))}function us(){return Array.from(document.querySelectorAll(".post-card"))}function po(e){e.forEach((t,s)=>{t.classList.toggle("selected",s===ve),s===ve&&t.scrollIntoView({behavior:"smooth",block:"center"})})}function za(){const e=us();if(ve>=0&&ve<e.length){const s=e[ve].id.replace("post-","");s&&openStory({stopPropagation:()=>{}},s)}}function Ja(){const e=document.getElementById("view-detail"),t=document.getElementById("view-profile");if((e==null?void 0:e.style.display)!=="none"||(t==null?void 0:t.style.display)!=="none"){goBack();return}const s=document.getElementById("search-input");if(s&&s.value){s.value="",store.update("searchQuery",""),filterAndRenderStories();return}ve>=0&&(ve=-1,us().forEach(i=>i.classList.remove("selected")))}function Ga(){if(ss)return;ss=!0;const e=document.createElement("div");e.id="keyboard-shortcuts-modal",e.className="keyboard-modal",e.innerHTML=`
|
|
22
|
+
<div class="keyboard-modal-backdrop" onclick="hideKeyboardShortcuts()"></div>
|
|
23
|
+
<div class="keyboard-modal-content">
|
|
24
|
+
<div class="keyboard-modal-header">
|
|
25
|
+
<h3>Keyboard Shortcuts</h3>
|
|
26
|
+
<button class="keyboard-modal-close" onclick="hideKeyboardShortcuts()">×</button>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="keyboard-shortcuts-list">
|
|
29
|
+
<div class="shortcut-row">
|
|
30
|
+
<kbd>/</kbd>
|
|
31
|
+
<span>Focus search</span>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="shortcut-row">
|
|
34
|
+
<kbd>j</kbd>
|
|
35
|
+
<span>Next story</span>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="shortcut-row">
|
|
38
|
+
<kbd>k</kbd>
|
|
39
|
+
<span>Previous story</span>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="shortcut-row">
|
|
42
|
+
<kbd>Enter</kbd>
|
|
43
|
+
<span>Open selected story</span>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="shortcut-row">
|
|
46
|
+
<kbd>Esc</kbd>
|
|
47
|
+
<span>Close / Clear search / Reset</span>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="shortcut-row">
|
|
50
|
+
<kbd>r</kbd>
|
|
51
|
+
<span>Refresh stories</span>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="shortcut-row">
|
|
54
|
+
<kbd>?</kbd>
|
|
55
|
+
<span>Show this help</span>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
`,document.body.appendChild(e)}function ho(){const e=document.getElementById("keyboard-shortcuts-modal");e&&(e.remove(),ss=!1)}Object.assign(window,{initKeyboard:Va,hideKeyboardShortcuts:ho});const As=[{id:"mock-new-1",repo_name:"repr",author_name:"Mendrika Ramarlina",handle:"pumpfun-trader",verified:!0,signature_status:"all_verified",signed_count:5,total_commits:5,category:"feature",title:"Integrate real-time monitoring system with 6-stage pipeline",problem:"The system lacked real-time market tracking and structured lifecycle management for tokens beyond the initial screening phase.",approach:`Before:
|
|
60
|
+
[Screening]
|
|
61
|
+
|
|
62
|
+
After:
|
|
63
|
+
[Helius WS] --> [Bonding Stream]
|
|
64
|
+
|
|
|
65
|
+
v
|
|
66
|
+
[SQLite DB] <--- [Monitor Service]
|
|
67
|
+
|
|
|
68
|
+
v
|
|
69
|
+
[Dashboard] <--- [Socket.io]`,created_at:new Date(Date.now()-1e3*60*60*24).toISOString(),technologies:["websockets","socket.io","sqlite"],diagram:"const STAGES = ['screening', 'monitoring', 'post-graduation', 'entry-watch', 'holding', 'dropped'];",files:["src/monitor.ts","src/pipeline.ts"]},{id:"mock-new-2",repo_name:"repr-dashboard",author_name:"Mendrika Ramarlina",handle:"pumpfun-trader",verified:!0,category:"feature",title:"SSE-powered screening dashboard",problem:"The long-running screening process was opaque, and there was no interface to view enriched data.",created_at:new Date(Date.now()-1e3*60*60*25).toISOString(),technologies:["server-sent-events(sse)","express.js","rest-api"],files:["dashboard/server.js"]},{id:"mock-1",repo_name:"cli",author_name:"mendrika",verified:!0,signature_status:"all_verified",signed_count:3,total_commits:3,category:"feature",title:"Restore dashboard diff functionality and improve branch suggestions",problem:"The dashboard lacked diff visualization, and internal models required refactoring to support better branch suggestions.",approach:"Executed a refactor of core data models and synthesis logic to improve code representation, then restored the diff view in the dashboard.",created_at:new Date(Date.now()-1e3*60*60*2).toISOString(),technologies:["Python","SQLite","Jinja2"],lessons:["Separating the 'Synthesis' logic from the 'Presentation' logic made the diff rendering 3x faster."],files:["src/dashboard.py","templates/index.html"],implementation_details:["Refactored `DiffGenerator` class to handle binary files gracefully.","Updated Jinja2 templates to loop through file deltas.","Added caching layer for diffs larger than 1MB."],key_snippets:[{file_path:"src/dashboard.py",line_count:15,content:`def get_diff(self, file_path):
|
|
70
|
+
# Check cache first
|
|
71
|
+
if file_path in self.cache:
|
|
72
|
+
return self.cache[file_path]
|
|
73
|
+
|
|
74
|
+
# Generate diff
|
|
75
|
+
diff = git.diff(file_path)
|
|
76
|
+
return diff`}]},{id:"mock-2",repo_name:"repr",author_name:"johndoe",verified:!1,signature_status:"unsigned",signed_count:0,total_commits:2,category:"chore",title:"docs: update CLI usage messages for clarity",problem:"The previous usage messages were too generic and lacked context for specific arguments.",approach:"Updated help strings in Typer/Click definitions to include examples.",created_at:new Date(Date.now()-1e3*60*60*5).toISOString(),technologies:["Python","Typer"],files:["cli/main.py"]},{id:"mock-3",repo_name:"agent-core",author_name:"alice",verified:!1,signature_status:"partially_signed",signed_count:2,total_commits:4,category:"bugfix",title:"Fix memory leak in background worker",problem:"The worker process was consuming increasing RAM over long execution periods.",approach:"Identified a circular reference in the Task object. Implemented weak references for parent links.",created_at:new Date(Date.now()-1e3*60*60*24).toISOString(),technologies:["Rust","Tokio"],diagram:`Task -> (strong) -> Context -> (strong) -> Task [LEAK]
|
|
77
|
+
|
|
78
|
+
Fix:
|
|
79
|
+
Task -> (strong) -> Context -> (weak) -> Task`}];async function go(){ic();try{const[o,l]=await Promise.all([getStatus(),getStories(),window.loadRepos?window.loadRepos():Promise.resolve()]);document.getElementById("status-text").innerText=`${o.count} stories · ${o.repos} repos`,store.update("stories",l.stories),si(l.stories,o.repos)}catch(o){console.warn("Using mock data:",o),store.update("stories",As),document.getElementById("status-text").innerText=`${As.length} stories · Demo Mode`,si(As,3)}Qa(),qa(),fs(),store.initRouter&&store.initRouter();const e=new URLSearchParams(window.location.search),t=e.get("view"),s=e.get("profile"),n=e.get("user"),i=e.get("story");i?mo(null,i,!1):s?vo(null,s,!1):n?yo(null,decodeURIComponent(n),"",!1):t&&["stories","settings","llm","privacy","repos","cron"].includes(t)&&switchMainView(t,!1)}function si(e,t){const s=document.getElementById("stat-total-stories"),n=document.getElementById("stat-total-repos");s&&(s.textContent=e.length),n&&(n.textContent=t)}function qa(){const e=document.getElementById("recommended-repos");if(!e)return;const t=store.get("repos")||[],s=document.getElementById("show-more-repos-btn");if(t.length===0){e.innerHTML='<div class="loading-text">No repositories tracked</div>',s&&(s.style.display="none");return}const n=[...t].sort((i,o)=>{var d,p;const l=((d=i.project)==null?void 0:d.name)||i.path.split("/").pop(),a=((p=o.project)==null?void 0:p.name)||o.path.split("/").pop();return l.localeCompare(a)});s&&(s.style.display=n.length>3?"block":"none",e.classList.remove("expanded"),s.textContent="Show more"),e.innerHTML=n.map(i=>{var f;const o=((f=i.project)==null?void 0:f.name)||i.origin_name||i.path.split("/").pop(),l=stringToColor(o),a=o.substring(0,1).toUpperCase(),p=(store.get("stories")||[]).filter(w=>w.repo_name===o).length;return`
|
|
80
|
+
<div class="widget-item" onclick="openProfile(event, '${escapeHtml(o)}')">
|
|
81
|
+
<div class="widget-item-avatar" style="background: ${l}">${a}</div>
|
|
82
|
+
<div class="widget-item-info">
|
|
83
|
+
<div class="widget-item-name">${escapeHtml(o)}</div>
|
|
84
|
+
<div class="widget-item-subtitle">${p} stories</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
`}).join("")}function Ya(){const e=document.getElementById("recommended-repos"),t=document.getElementById("show-more-repos-btn");!e||!t||(e.classList.toggle("expanded"),e.classList.contains("expanded")?t.textContent="Show less":t.textContent="Show more")}function Qa(){const e=document.getElementById("repo-tabs");if(!e)return;store.get("stories");const t={};let s='<div class="repo-tab active" data-repo="all">All</div>';Object.entries(t).sort((n,i)=>i[1]-n[1]).forEach(([n,i])=>{s+=`<div class="repo-tab" data-repo="${n}">${n}</div>`}),e.innerHTML=s,e.querySelectorAll(".repo-tab").forEach(n=>{n.onclick=()=>{e.querySelectorAll(".repo-tab").forEach(i=>i.classList.remove("active")),n.classList.add("active"),store.update("currentRepo",n.dataset.repo),fs()}})}function fs(){const e=store.get("stories"),t=store.get("currentRepo"),s=store.get("searchQuery");let n=e;t!=="all"&&(n=n.filter(i=>i.repo_name===t)),s&&(n=n.filter(i=>[i.title,i.repo_name,i.category,i.post_body,i.problem,i.approach,...i.technologies||[],...i.files||[]].join(" ").toLowerCase().includes(s))),ps(n)}function Xa(e){const t=new Date,s=new Date(e),n=new Date(t.getFullYear(),t.getMonth(),t.getDate()),i=new Date(s.getFullYear(),s.getMonth(),s.getDate()),o=Math.floor((n-i)/(1e3*60*60*24));if(o===0)return"Today";if(o===1)return"Yesterday";if(o<7)return"This Week";const l={month:"short",day:"numeric"};return s.getFullYear()!==t.getFullYear()&&(l.year="numeric"),s.toLocaleDateString("en-US",l)}function Za(e){const t={};e.forEach(i=>{const o=i.started_at||i.created_at,l=Xa(o);t[l]||(t[l]=[]),t[l].push(i)});const s=["Today","Yesterday","This Week"],n=Object.keys(t).sort((i,o)=>{const l=s.indexOf(i),a=s.indexOf(o);return l!==-1&&a!==-1?l-a:l!==-1?-1:a!==-1?1:new Date(t[o][0].started_at||t[o][0].created_at)-new Date(t[i][0].started_at||t[i][0].created_at)});return{groups:t,labels:n}}function ps(e,t="feed",s={}){const n=document.getElementById(t),i=store.get("searchQuery");if(!e||!e.length){i?n.innerHTML=`
|
|
88
|
+
<div class="empty-state">
|
|
89
|
+
<div class="empty-state-title">No matches found</div>
|
|
90
|
+
<div style="font-size: 14px;">Try adjusting your search query or filters</div>
|
|
91
|
+
<button class="btn btn-secondary" onclick="document.getElementById('search-input').value=''; store.update('searchQuery', ''); filterAndRenderStories();" style="margin-top: 16px;">Clear Search</button>
|
|
92
|
+
</div>`:n.innerHTML=`
|
|
93
|
+
<div class="empty-state">
|
|
94
|
+
<div class="empty-state-title">Your timeline is empty</div>
|
|
95
|
+
<div style="font-size: 14px;">Run your first generation to see your development story</div>
|
|
96
|
+
<button class="btn btn-primary" onclick="triggerGenerationClick()" style="margin-top: 16px;">Generate Now</button>
|
|
97
|
+
</div>`;return}if(i){n.innerHTML=e.map(d=>ni(d,i,s)).join("");return}const{groups:o,labels:l}=Za(e);let a="";l.forEach(d=>{const p=o[d];a+=`
|
|
98
|
+
<div class="date-header">
|
|
99
|
+
<span class="date-header-label">${d}</span>
|
|
100
|
+
</div>
|
|
101
|
+
${p.map(f=>ni(f,i,s)).join("")}
|
|
102
|
+
`}),n.innerHTML=a}function ni(e,t,s={}){const n=timeSince(new Date(e.started_at||e.created_at)),i=e.category||"chore",o=e.repo_name||"cli";let l=e.author_name||e.username||"unknown";const a=e.verified||!1;highlightText(cleanTitle(e.title),t),e.post_body&&highlightText(e.post_body,t);const d=e.problem?highlightText(e.problem,t):"",p=e.approach?highlightText(e.approach,t):"";let f=stringToColor(l),w=l.substring(0,1).toUpperCase(),T=highlightText(l,t),m=e.handle?`/r/${e.handle}`:`/r/${o}`;const h=a?'<span class="verified-badge" title="GPG signed commits">✓</span>':"",g=e.author_email||"",x=g?gn(g,80):null,y=x?`<img src="${x}" alt="${escapeHtml(l)}" style="width:100%;height:100%;border-radius:50%;object-fit:cover;">`:w,v=[];e.technologies&&e.technologies.length&&e.technologies.slice(0,3).forEach(Y=>v.push(Y.toLowerCase().replace(/\s+/g,"")));const A=v.length?v.map(Y=>`<span class="hashtag" onclick="filterByTag(event, '${Y}')">#${highlightText(Y,t)}</span>`).join(" "):"",E=p||d;let O="";return e.diagram&&(O+=`<div class="post-media"><pre class="post-diagram">${escapeHtml(e.diagram)}</pre></div>`),e.show&&(O+=`<div class="post-media"><pre class="post-output">${escapeHtml(e.show)}</pre></div>`),`
|
|
103
|
+
<article class="post-card" id="post-${e.id}" onclick="openStory(event, '${e.id}')">
|
|
104
|
+
<div class="post-card-header">
|
|
105
|
+
<div class="post-avatar" style="background:${x?"transparent":f}; cursor: pointer;" onclick="openUser(event, '${escapeHtml(e.author_name||l)}', '${escapeHtml(g)}')">${y}</div>
|
|
106
|
+
<div class="post-header-info">
|
|
107
|
+
<div class="post-header-author">
|
|
108
|
+
<span class="post-author" onclick="openUser(event, '${escapeHtml(e.author_name||l)}', '${escapeHtml(e.author_email||"")}')">${T}${h}</span>
|
|
109
|
+
<span class="post-meta-sep">·</span>
|
|
110
|
+
<span class="post-handle" onclick="openProfile(event, '${o}')">${m}</span>
|
|
111
|
+
<span class="post-meta-sep">·</span>
|
|
112
|
+
<span class="category-meta ${i}">${i}</span>
|
|
113
|
+
<span class="post-meta-sep">·</span>
|
|
114
|
+
<span class="post-time">${n}</span>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
<div class="post-content-full">
|
|
120
|
+
<div class="post-text">${E?`${E}`:""}</div>
|
|
121
|
+
${O}
|
|
122
|
+
${A?`<div class="post-tags">${A}</div>`:""}
|
|
123
|
+
<div class="post-actions">
|
|
124
|
+
<div class="post-action" title="Comment">
|
|
125
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
126
|
+
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
|
|
127
|
+
</svg>
|
|
128
|
+
<span></span>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="post-action" title="Repost">
|
|
131
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
132
|
+
<polyline points="17 1 21 5 17 9"></polyline>
|
|
133
|
+
<path d="M3 11V9a4 4 0 0 1 4-4h14"></path>
|
|
134
|
+
<polyline points="7 23 3 19 7 15"></polyline>
|
|
135
|
+
<path d="M21 13v2a4 4 0 0 1-4 4H3"></path>
|
|
136
|
+
</svg>
|
|
137
|
+
</div>
|
|
138
|
+
<div class="post-action" title="Like">
|
|
139
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
140
|
+
<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>
|
|
141
|
+
</svg>
|
|
142
|
+
</div>
|
|
143
|
+
<div class="post-action post-action-publish" title="Publish to cloud" onclick="publishSingleStoryClick(event, '${e.id}')">
|
|
144
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
145
|
+
<path d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"></path>
|
|
146
|
+
</svg>
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
</article >
|
|
151
|
+
`}function mo(e,t,s=!0){const i=store.get("stories").find(D=>D.id===t);if(!i)return;s&&(window.lastScrollY=window.scrollY,document.getElementById("view-profile").style.display==="block"?store.update("previousView","view-profile"):document.getElementById("view-user").style.display==="block"?store.update("previousView","view-user"):store.update("previousView","view-main"),store.pushHistory({view:"detail",storyId:t},`Repr - ${cleanTitle(i.title)} `,` ? story = ${t} `)),["stories","settings","llm","privacy","repos","cron","profile","user"].forEach(D=>{const X=document.getElementById("view-"+D);X&&(X.style.display="none")}),document.getElementById("view-detail").style.display="block",window.scrollTo(0,0);const o=document.getElementById("detail-content"),l=timeSince(new Date(i.started_at||i.created_at)),a=i.category||"update",d=i.repo_name||"cli",p=i.author_name||i.username||"unknown",f=i.verified||!1,w=cleanTitle(i.title),T=f?'<span class="verified-badge" title="GPG signed commits">✓</span>':"";i.signature_status&&(f||i.signature_status,i.signed_count!==void 0&&`${i.signed_count}${i.total_commits}`),i.technologies&&i.technologies.length&&`${i.technologies.map(D=>`<span class="skill-tag">${escapeHtml(D)}</span>`).join("")}`;const m=i.show?`<div class="snippet-block" style="margin-top:16px"><div class="snippet-header">Output</div><div class="snippet-code"><pre>${escapeHtml(i.show)}</pre></div></div>`:"",h=i.diagram?`<div class="diagram-block"><pre>${escapeHtml(i.diagram)}</pre></div>`:"",g=i.files&&i.files.length?`<div class="section-subtitle">Files Touched</div>
|
|
152
|
+
<div class="files-row">
|
|
153
|
+
${i.files.map(D=>`<span class="file-tag">${escapeHtml(D.split("/").pop())}</span>`).join("")}
|
|
154
|
+
</div>`:"",x=i.key_snippets&&i.key_snippets.length?`<div class="section-subtitle">Key Snippets</div>
|
|
155
|
+
${i.key_snippets.map(D=>`
|
|
156
|
+
<div class="snippet-block">
|
|
157
|
+
<div class="snippet-header">${escapeHtml(D.file_path)}</div>
|
|
158
|
+
<div class="snippet-code"><pre>${escapeHtml(D.content)}</pre></div>
|
|
159
|
+
</div>
|
|
160
|
+
`).join("")} `:"",y=i.file_changes&&i.file_changes.length?`<div class="section-subtitle">File Changes</div>
|
|
161
|
+
<ul style="padding-left:16px; color:var(--text-secondary); font-size:15px; margin-bottom: 24px; list-style: none;">
|
|
162
|
+
${i.file_changes.map(D=>{const X=D.file_path||D.path||"unknown",st=D.change_type||"modified",xe=D.insertions||0,He=D.deletions||0,Ae=[];xe>0&&Ae.push(`<span style="color: var(--green);">+${xe}</span>`),He>0&&Ae.push(`<span style="color: var(--red);">-${He}</span>`);const nt=Ae.length>0?Ae.join("/"):"0 changes";return`<li style="margin-bottom: 4px; font-family: var(--font-mono); font-size: 13px;">
|
|
163
|
+
<span style="color: var(--text-muted);">[${st}]</span> ${escapeHtml(X.split("/").pop())}
|
|
164
|
+
<span style="margin-left: 8px; font-size: 12px;">${nt}</span>
|
|
165
|
+
</li>`}).join("")}
|
|
166
|
+
</ul>`:"",v=stringToColor(p),A=p.substring(0,2).toUpperCase(),E=i.author_email||"",O=gn(E,96),Y=O?`<img src="${O}" alt="${escapeHtml(p)}" style="width:100%;height:100%;border-radius:50%;object-fit:cover;">`:A;o.innerHTML=`
|
|
167
|
+
<div class="post-detail" >
|
|
168
|
+
<div class="post-detail-header">
|
|
169
|
+
<div class="post-avatar" style="background:${O?"transparent":v}; width: 48px; height: 48px; font-size: 18px;" onclick="openUser(event, '${escapeHtml(p)}', '${escapeHtml(E)}')">${Y}</div>
|
|
170
|
+
<div class="post-detail-author-info">
|
|
171
|
+
<div class="post-author" onclick="openUser(event, '${escapeHtml(p)}', '${escapeHtml(E)}')" style="font-size: 16px;">${escapeHtml(p)}${T}</div>
|
|
172
|
+
<div class="post-handle" onclick="openProfile(event, '${d}')" style="font-size: 15px;">@${d} · ${l}</div>
|
|
173
|
+
</div>
|
|
174
|
+
<div class="post-detail-category">
|
|
175
|
+
<span class="category ${a}">${a}</span>
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
|
|
179
|
+
<div class="post-detail-body">
|
|
180
|
+
<h1 class="post-detail-title">${escapeHtml(w)}</h1>
|
|
181
|
+
${i.what?`<div class="section-subtitle">What</div><div class="post-detail-text" style="font-size: 16px; margin-bottom: 24px;">${escapeHtml(i.what)}</div>`:""}
|
|
182
|
+
${i.value?`<div class="section-subtitle">Value</div><div class="post-detail-text" style="font-size: 16px; margin-bottom: 24px;">${escapeHtml(i.value)}</div>`:""}
|
|
183
|
+
|
|
184
|
+
${i.decisions&&i.decisions.length?`
|
|
185
|
+
<div class="section-subtitle">Decisions</div>
|
|
186
|
+
<ul class="detail-list" style="margin-bottom: 24px;">
|
|
187
|
+
${i.decisions.map(D=>`<li>${escapeHtml(D)}</li>`).join("")}
|
|
188
|
+
</ul>
|
|
189
|
+
`:""}
|
|
190
|
+
|
|
191
|
+
${i.problem?`<div class="post-detail-text" style="font-size: 16px; color: var(--text-primary); margin-bottom: 24px;">${escapeHtml(i.problem)}</div>`:""}
|
|
192
|
+
${i.post_body?`<div class="post-detail-text" style="font-size: 16px; color: var(--text-primary); margin-bottom: 24px; line-height: 1.6;">${escapeHtml(i.post_body)}</div>`:""}
|
|
193
|
+
|
|
194
|
+
${i.insight?`
|
|
195
|
+
<div class="insight-box" style="margin-top: 24px;">
|
|
196
|
+
<div class="insight-label">Insight</div>
|
|
197
|
+
<div class="insight-text">${escapeHtml(i.insight)}</div>
|
|
198
|
+
</div>
|
|
199
|
+
`:""}
|
|
200
|
+
|
|
201
|
+
${m}
|
|
202
|
+
${h}
|
|
203
|
+
|
|
204
|
+
${i.lessons&&i.lessons.length?`
|
|
205
|
+
<div class="insight-box" style="margin-top: 32px;">
|
|
206
|
+
<div class="insight-label">Key Insight</div>
|
|
207
|
+
${i.lessons.map(D=>`<div class="insight-text">${escapeHtml(D)}</div>`).join("")}
|
|
208
|
+
</div>
|
|
209
|
+
`:""}
|
|
210
|
+
|
|
211
|
+
${i.implementation_details&&i.implementation_details.length?`
|
|
212
|
+
<div class="section-subtitle">Implementation</div>
|
|
213
|
+
<ul class="detail-list">
|
|
214
|
+
${i.implementation_details.map(D=>`<li>${escapeHtml(D)}</li>`).join("")}
|
|
215
|
+
</ul>
|
|
216
|
+
`:""}
|
|
217
|
+
|
|
218
|
+
${g}
|
|
219
|
+
${x}
|
|
220
|
+
${y}
|
|
221
|
+
</div>
|
|
222
|
+
|
|
223
|
+
<div class="post-detail-footer">
|
|
224
|
+
<div class="post-actions" style="max-width: none; border-top: 1px solid var(--border); padding-top: 12px; margin-top: 32px;">
|
|
225
|
+
<!-- Same actions as card -->
|
|
226
|
+
<div class="post-action">
|
|
227
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"/></svg>
|
|
228
|
+
<span>${i.total_commits||""}</span>
|
|
229
|
+
</div>
|
|
230
|
+
<div class="post-action"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="17 1 21 5 17 9"></polyline><path d="M3 11V9a4 4 0 0 1 4-4h14"></path><polyline points="7 23 3 19 7 15"></polyline><path d="M21 13v2a4 4 0 0 1-4 4H3"></path></svg></div>
|
|
231
|
+
<div class="post-action"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path></svg></div>
|
|
232
|
+
<div class="post-action"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"></path><polyline points="16 6 12 2 8 6"></polyline><line x1="12" y1="2" x2="12" y2="15"></line></svg></div>
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
`}function vo(e,t,s=!0){e&&e.stopPropagation(),s&&(window.lastScrollY=window.scrollY,store.update("previousView","view-profile"),store.pushHistory({view:"profile",repoName:t},`Repr - @${t} `,` ? profile = ${t} `)),["stories","settings","llm","privacy","repos","cron","detail","user"].forEach(h=>{const g=document.getElementById("view-"+h);g&&(g.style.display="none")}),document.getElementById("view-profile").style.display="block",window.scrollTo(0,0);const n=stringToColor(t),i=t.substring(0,1).toUpperCase(),o=document.getElementById("profile-view-avatar");o.style.background=n,o.textContent=i,document.getElementById("profile-view-name").textContent=t,document.getElementById("profile-nav-name").textContent=t,document.getElementById("profile-view-handle").textContent="@"+t;const l=Math.abs(stringToColor(t+"1").hashCode()||0)%360,a=Math.abs(stringToColor(t+"2").hashCode()||0)%360;document.getElementById("profile-cover").style.background=`linear - gradient(135deg, hsl(${l}, 70 %, 80 %) 0 %, hsl(${a}, 70 %, 85 %) 100 %)`;const p=store.get("stories").filter(h=>h.repo_name===t),f=p.reduce((h,g)=>h+(g.total_commits||0),0),w=new Set(p.map(h=>h.author_name)).size;document.getElementById("profile-stories-count").textContent=p.length,document.getElementById("profile-commits-count").textContent=f,document.getElementById("profile-contributors-count").textContent=w,document.getElementById("profile-stats-count").textContent=`+ ${w} contributors`;const T=p[0],m=T?timeSince(new Date(T.started_at||T.created_at)):"a while ago";document.getElementById("profile-view-bio").textContent=`Repository tracked by Repr.Active ${m}. Contains ${p.length} stories.`,ps(p,"profile-feed",{})}function ec(e){function t(v,A){return v<<A|v>>>32-A}function s(v,A){const E=(v&65535)+(A&65535);return(v>>16)+(A>>16)+(E>>16)<<16|E&65535}function n(v,A,E){return v&A|~v&E}function i(v,A,E){return v&E|A&~E}function o(v,A,E){return v^A^E}function l(v,A,E){return A^(v|~E)}function a(v,A,E,O,Y,D,X){return s(t(s(s(v,n(A,E,O)),s(Y,X)),D),A)}function d(v,A,E,O,Y,D,X){return s(t(s(s(v,i(A,E,O)),s(Y,X)),D),A)}function p(v,A,E,O,Y,D,X){return s(t(s(s(v,o(A,E,O)),s(Y,X)),D),A)}function f(v,A,E,O,Y,D,X){return s(t(s(s(v,l(A,E,O)),s(Y,X)),D),A)}function w(v){const A=(v.length+8>>6)+1,E=Array(A*16).fill(0);for(let O=0;O<v.length;O++)E[O>>2]|=v.charCodeAt(O)<<O%4*8;return E[v.length>>2]|=128<<v.length%4*8,E[A*16-2]=v.length*8,E}function T(v){let A="";for(let E=0;E<4;E++)A+=(v>>E*8&255).toString(16).padStart(2,"0");return A}const m=w(e);let h=1732584193,g=4023233417,x=2562383102,y=271733878;for(let v=0;v<m.length;v+=16){const A=h,E=g,O=x,Y=y;h=a(h,g,x,y,m[v],7,3614090360),y=a(y,h,g,x,m[v+1],12,3905402710),x=a(x,y,h,g,m[v+2],17,606105819),g=a(g,x,y,h,m[v+3],22,3250441966),h=a(h,g,x,y,m[v+4],7,4118548399),y=a(y,h,g,x,m[v+5],12,1200080426),x=a(x,y,h,g,m[v+6],17,2821735955),g=a(g,x,y,h,m[v+7],22,4249261313),h=a(h,g,x,y,m[v+8],7,1770035416),y=a(y,h,g,x,m[v+9],12,2336552879),x=a(x,y,h,g,m[v+10],17,4294925233),g=a(g,x,y,h,m[v+11],22,2304563134),h=a(h,g,x,y,m[v+12],7,1804603682),y=a(y,h,g,x,m[v+13],12,4254626195),x=a(x,y,h,g,m[v+14],17,2792965006),g=a(g,x,y,h,m[v+15],22,1236535329),h=d(h,g,x,y,m[v+1],5,4129170786),y=d(y,h,g,x,m[v+6],9,3225465664),x=d(x,y,h,g,m[v+11],14,643717713),g=d(g,x,y,h,m[v],20,3921069994),h=d(h,g,x,y,m[v+5],5,3593408605),y=d(y,h,g,x,m[v+10],9,38016083),x=d(x,y,h,g,m[v+15],14,3634488961),g=d(g,x,y,h,m[v+4],20,3889429448),h=d(h,g,x,y,m[v+9],5,568446438),y=d(y,h,g,x,m[v+14],9,3275163606),x=d(x,y,h,g,m[v+3],14,4107603335),g=d(g,x,y,h,m[v+8],20,1163531501),h=d(h,g,x,y,m[v+13],5,2850285829),y=d(y,h,g,x,m[v+2],9,4243563512),x=d(x,y,h,g,m[v+7],14,1735328473),g=d(g,x,y,h,m[v+12],20,2368359562),h=p(h,g,x,y,m[v+5],4,4294588738),y=p(y,h,g,x,m[v+8],11,2272392833),x=p(x,y,h,g,m[v+11],16,1839030562),g=p(g,x,y,h,m[v+14],23,4259657740),h=p(h,g,x,y,m[v+1],4,2763975236),y=p(y,h,g,x,m[v+4],11,1272893353),x=p(x,y,h,g,m[v+7],16,4139469664),g=p(g,x,y,h,m[v+10],23,3200236656),h=p(h,g,x,y,m[v+13],4,681279174),y=p(y,h,g,x,m[v],11,3936430074),x=p(x,y,h,g,m[v+3],16,3572445317),g=p(g,x,y,h,m[v+6],23,76029189),h=p(h,g,x,y,m[v+9],4,3654602809),y=p(y,h,g,x,m[v+12],11,3873151461),x=p(x,y,h,g,m[v+15],16,530742520),g=p(g,x,y,h,m[v+2],23,3299628645),h=f(h,g,x,y,m[v],6,4096336452),y=f(y,h,g,x,m[v+7],10,1126891415),x=f(x,y,h,g,m[v+14],15,2878612391),g=f(g,x,y,h,m[v+5],21,4237533241),h=f(h,g,x,y,m[v+12],6,1700485571),y=f(y,h,g,x,m[v+3],10,2399980690),x=f(x,y,h,g,m[v+10],15,4293915773),g=f(g,x,y,h,m[v+1],21,2240044497),h=f(h,g,x,y,m[v+8],6,1873313359),y=f(y,h,g,x,m[v+15],10,4264355552),x=f(x,y,h,g,m[v+6],15,2734768916),g=f(g,x,y,h,m[v+13],21,1309151649),h=f(h,g,x,y,m[v+4],6,4149444226),y=f(y,h,g,x,m[v+11],10,3174756917),x=f(x,y,h,g,m[v+2],15,718787259),g=f(g,x,y,h,m[v+9],21,3951481745),h=s(h,A),g=s(g,E),x=s(x,O),y=s(y,Y)}return T(h)+T(g)+T(x)+T(y)}function gn(e,t=134){return e?`https://www.gravatar.com/avatar/${ec(e.trim().toLowerCase())}?s=${t}&d=identicon`:null}function yo(e,t,s,n=!0){e&&e.stopPropagation(),n&&(window.lastScrollY=window.scrollY,store.update("previousView","view-user"),store.pushHistory({view:"user",authorName:t},`Repr - ${t}`,`?user=${encodeURIComponent(t)}`)),["stories","settings","llm","privacy","repos","cron","detail","profile"].forEach(x=>{const y=document.getElementById("view-"+x);y&&(y.style.display="none")}),document.getElementById("view-user").style.display="block",window.scrollTo(0,0);const i=stringToColor(t),o=t.substring(0,1).toUpperCase(),l=document.getElementById("user-view-avatar"),a=gn(s);a?(l.innerHTML=`<img src="${a}" alt="${escapeHtml(t)}" style="width:100%;height:100%;border-radius:50%;object-fit:cover;">`,l.style.background="transparent"):(l.innerHTML=o,l.style.background=i),document.getElementById("user-view-name").textContent=t,document.getElementById("user-nav-name").textContent=t,document.getElementById("user-view-handle").textContent="@"+t.toLowerCase().replace(/\s+/g,"");const d=Math.abs((t+"1").hashCode()||0)%360,p=Math.abs((t+"2").hashCode()||0)%360;document.getElementById("user-cover").style.background=`linear-gradient(135deg, hsl(${d}, 60%, 75%) 0%, hsl(${p}, 60%, 80%) 100%)`;const w=store.get("stories").filter(x=>x.author_name===t),T=w.reduce((x,y)=>x+(y.total_commits||0),0),m=new Set(w.map(x=>x.repo_name)).size;document.getElementById("user-stories-count").textContent=w.length,document.getElementById("user-commits-count").textContent=T,document.getElementById("user-contributors-count").textContent=m,document.getElementById("user-stats-count").textContent=`+${m} repos`;const h=w[0],g=h?timeSince(new Date(h.started_at||h.created_at)):"a while ago";document.getElementById("user-view-bio").textContent=`Developer tracked by Repr. Active ${g}. ${w.length} stories across ${m} repositories.`,ps(w,"user-feed",{})}String.prototype.hashCode=function(){let e=0,t,s;if(this.length===0)return e;for(t=0;t<this.length;t++)s=this.charCodeAt(t),e=(e<<5)-e+s,e|=0;return e};function tc(){const e=document.getElementById("view-profile"),t=document.getElementById("view-user"),s=document.getElementById("view-detail");e&&(e.style.display="none"),t&&(t.style.display="none"),s&&(s.style.display="none"),document.getElementById("view-stories").style.display="block",history.replaceState({view:"main",mainView:"stories"},"Repr",window.location.pathname),window.lastScrollY&&window.scrollTo(0,window.lastScrollY)}async function sc(){showToast("Refreshing...","success"),await go()}async function nc(){if(confirm("Start generating stories now? This will run in the background."))try{(await triggerGeneration()).success?showToast("Generation started","success"):showToast("Failed to start generation","error")}catch{showToast("Error triggering generation","error")}}function ic(e="feed",t=3){const s=document.getElementById(e);if(!s)return;let n="";for(let i=0;i<t;i++)n+=`
|
|
237
|
+
<div class="skeleton-card">
|
|
238
|
+
<div class="skeleton-avatar skeleton"></div>
|
|
239
|
+
<div class="skeleton-body">
|
|
240
|
+
<div class="skeleton-header skeleton"></div>
|
|
241
|
+
<div class="skeleton-title skeleton"></div>
|
|
242
|
+
<div class="skeleton-text skeleton"></div>
|
|
243
|
+
<div class="skeleton-text skeleton" style="width: 60%"></div>
|
|
244
|
+
</div>
|
|
245
|
+
</div>
|
|
246
|
+
`;s.innerHTML=n}function oc(e,t){e&&e.stopPropagation();const s=document.getElementById("search-input");s.value=t,store.update("searchQuery",t.toLowerCase()),fs(),switchMainView("stories",!1)}window.openStory=mo;window.openProfile=vo;window.openUser=yo;window.filterByTag=oc;window.triggerGenerationClick=nc;window.goBack=tc;window.refreshStories=sc;window.toggleSubscribedRepos=Ya;Object.assign(window,{initStories:go,renderStories:ps,filterAndRenderStories:fs});function rc(e,t=!0){store.update("currentMainView",e),t&&store.pushHistory({view:"main",mainView:e},`Repr - ${e.charAt(0).toUpperCase()+e.slice(1)}`,`?view=${e}`),document.querySelectorAll(".sidebar-item").forEach(i=>{i.classList.toggle("active",i.dataset.view===e)}),document.querySelectorAll(".mobile-nav-item").forEach(i=>{const o=i.querySelector("span:last-child").textContent.toLowerCase();i.classList.toggle("active",e.startsWith(o))}),document.querySelector(".sidebar").classList.contains("open")&&toggleSidebar(),["stories","settings","llm","privacy","repos","cron","detail","profile"].forEach(i=>{const o=document.getElementById("view-"+i);o&&(o.style.display="none")});const n=document.getElementById("view-"+e);n&&(n.style.display="block"),["settings","llm","privacy","cron"].includes(e)&&!store.get("config")&&bo(),e==="privacy"&&xo(),e==="repos"&&loadRepos(),e==="cron"&&fc()}function lc(e){if(store.update("currentSettingsTab",e),document.querySelectorAll(".settings-nav-item").forEach(t=>{t.classList.toggle("active",t.dataset.tab===e)}),document.getElementById("settings-form").style.display=e==="form"?"block":"none",document.getElementById("settings-json").style.display=e==="json"?"block":"none",e==="json"){const t=store.get("config");t&&(document.getElementById("json-editor").value=JSON.stringify(t,null,2))}}async function bo(){try{const e=await getConfig();store.batchUpdate({config:e,configDirty:!1}),wo(e),document.getElementById("json-editor").value=JSON.stringify(e,null,2),gs()}catch{showToast("Failed to load config","error")}}function wo(e){var t,s,n,i,o,l,a,d,p,f,w,T,m,h,g,x,y,v;document.getElementById("llm-default").value=((t=e.llm)==null?void 0:t.default)||"local",document.getElementById("llm-local-provider").value=((s=e.llm)==null?void 0:s.local_provider)||"",document.getElementById("llm-local-model").value=((n=e.llm)==null?void 0:n.local_model)||"",document.getElementById("llm-local-url").value=((i=e.llm)==null?void 0:i.local_api_url)||"",document.getElementById("gen-batch-size").value=((o=e.generation)==null?void 0:o.batch_size)||5,document.getElementById("gen-max-commits").value=((l=e.generation)==null?void 0:l.max_commits_per_batch)||50,document.getElementById("gen-template").value=((a=e.generation)==null?void 0:a.default_template)||"resume",document.getElementById("gen-auto-hook").checked=((d=e.generation)==null?void 0:d.auto_generate_on_hook)||!1,document.getElementById("privacy-local-only").checked=((p=e.privacy)==null?void 0:p.lock_local_only)||!1,document.getElementById("privacy-redact-paths").checked=((f=e.llm)==null?void 0:f.cloud_redact_paths)!==!1,document.getElementById("privacy-redact-emails").checked=((w=e.llm)==null?void 0:w.cloud_redact_emails)||!1,document.getElementById("privacy-send-diffs").checked=((T=e.llm)==null?void 0:T.cloud_send_diffs)||!1,document.getElementById("cron-interval").value=((m=e.cron)==null?void 0:m.interval_hours)||4,document.getElementById("cron-min-commits").value=((h=e.cron)==null?void 0:h.min_commits)||3,document.getElementById("cron-installed").checked=((g=e.cron)==null?void 0:g.installed)||!1,document.getElementById("cron-paused").checked=((x=e.cron)==null?void 0:x.paused)||!1,ii("default-paths-container",((y=e.settings)==null?void 0:y.default_paths)||["~/code"],"path"),ii("skip-patterns-container",((v=e.settings)==null?void 0:v.skip_patterns)||[],"pattern")}function ac(){const e=JSON.parse(JSON.stringify(store.get("config")));return e.llm=e.llm||{},e.llm.default=document.getElementById("llm-default").value,e.llm.local_provider=document.getElementById("llm-local-provider").value||null,e.llm.local_model=document.getElementById("llm-local-model").value||null,e.llm.local_api_url=document.getElementById("llm-local-url").value||null,e.generation=e.generation||{},e.generation.batch_size=parseInt(document.getElementById("gen-batch-size").value)||5,e.generation.max_commits_per_batch=parseInt(document.getElementById("gen-max-commits").value)||50,e.generation.default_template=document.getElementById("gen-template").value,e.generation.auto_generate_on_hook=document.getElementById("gen-auto-hook").checked,e.privacy=e.privacy||{},e.privacy.lock_local_only=document.getElementById("privacy-local-only").checked,e.llm.cloud_redact_paths=document.getElementById("privacy-redact-paths").checked,e.llm.cloud_redact_emails=document.getElementById("privacy-redact-emails").checked,e.llm.cloud_send_diffs=document.getElementById("privacy-send-diffs").checked,e.cron=e.cron||{},e.cron.interval_hours=parseInt(document.getElementById("cron-interval").value)||4,e.cron.min_commits=parseInt(document.getElementById("cron-min-commits").value)||3,e.cron.installed=document.getElementById("cron-installed").checked,e.cron.paused=document.getElementById("cron-paused").checked,e.settings=e.settings||{},e.settings.default_paths=oi("default-paths-container"),e.settings.skip_patterns=oi("skip-patterns-container"),e}async function cc(){try{const e=ac();await updateConfig(e),store.batchUpdate({config:e,configDirty:!1}),gs(),showToast("Configuration saved","success")}catch{showToast("Failed to save config","error")}}async function dc(){try{const e=document.getElementById("json-editor").value,t=JSON.parse(e);await updateConfig(t),store.batchUpdate({config:t,configDirty:!1}),wo(t),gs(),showToast("Configuration saved","success")}catch(e){e instanceof SyntaxError?showToast("Invalid JSON syntax","error"):showToast("Failed to save config","error")}}function uc(){try{const e=document.getElementById("json-editor"),t=JSON.parse(e.value);e.value=JSON.stringify(t,null,2)}catch{showToast("Invalid JSON - cannot format","error")}}function hs(){store.update("configDirty",!0),gs()}function gs(){const e=store.get("configDirty");["save-btn","save-json-btn","save-llm-btn","save-privacy-btn","save-cron-btn"].forEach(s=>{const n=document.getElementById(s);n&&(n.disabled=!e)})}async function fc(){try{const e=await getCronStatus();store.update("cronStatus",e),pc(e)}catch{document.getElementById("cron-status").innerHTML='<div class="loading-text">Failed to load cron status</div>'}}function pc(e){const t=document.getElementById("cron-status");let s="Not installed",n="inactive";e.installed&&(e.paused?(s="Paused",n="paused"):(s="Active",n="active")),t.innerHTML=`
|
|
247
|
+
<div class="cron-status-row">
|
|
248
|
+
<span class="cron-status-label">Status</span>
|
|
249
|
+
<span class="cron-status-value ${n}">${s}</span>
|
|
250
|
+
</div>
|
|
251
|
+
<div class="cron-status-row">
|
|
252
|
+
<span class="cron-status-label">Interval</span>
|
|
253
|
+
<span class="cron-status-value">${e.interval_hours?e.interval_hours+" hours":"Not set"}</span>
|
|
254
|
+
</div>
|
|
255
|
+
<div class="cron-status-row">
|
|
256
|
+
<span class="cron-status-label">Min Commits</span>
|
|
257
|
+
<span class="cron-status-value">${e.min_commits||"Not set"}</span>
|
|
258
|
+
</div>
|
|
259
|
+
`}function ii(e,t,s){const n=document.getElementById(e),i=n.querySelector("input");n.querySelectorAll(".tag-item").forEach(o=>o.remove()),t.forEach(o=>{const l=document.createElement("span");l.className="tag-item",l.innerHTML=`${escapeHtml(o)}<span class="tag-remove" onclick="removeTag(this, '${s}')">×</span>`,n.insertBefore(l,i)})}function oi(e){const t=document.getElementById(e);return Array.from(t.querySelectorAll(".tag-item")).map(s=>s.textContent.slice(0,-1))}function hc(e,t){e.parentElement.remove(),hs()}function gc(e){if(e.key==="Enter"){e.preventDefault();const t=e.target,s=t.value.trim();if(s){const n=t.parentElement,i=document.createElement("span");i.className="tag-item",i.innerHTML=`${escapeHtml(s)}<span class="tag-remove" onclick="removeTag(this, 'path')">×</span>`,n.insertBefore(i,t),t.value="",hs()}}}function mc(e){if(e.key==="Enter"){e.preventDefault();const t=e.target,s=t.value.trim();if(s){const n=t.parentElement,i=document.createElement("span");i.className="tag-item",i.innerHTML=`${escapeHtml(s)}<span class="tag-remove" onclick="removeTag(this, 'pattern')">×</span>`,n.insertBefore(i,t),t.value="",hs()}}}window.switchMainView=rc;window.loadConfig=bo;window.saveConfig=cc;window.saveJsonConfig=dc;window.formatJson=uc;window.switchSettingsTab=lc;let ms=!1;async function xo(){try{const e=await fetch(`${window.API_BASE}/api/visibility`);if(e.ok){const t=await e.json();document.getElementById("visibility-profile").value=t.profile||"private",document.getElementById("visibility-repos").value=t.repos_default||"private",document.getElementById("visibility-stories").value=t.stories_default||"private",ms=!1,mn()}}catch(e){console.error("Failed to load visibility settings:",e),document.getElementById("visibility-profile").value="private",document.getElementById("visibility-repos").value="private",document.getElementById("visibility-stories").value="private"}}async function vc(){const e={profile:document.getElementById("visibility-profile").value,repos_default:document.getElementById("visibility-repos").value,stories_default:document.getElementById("visibility-stories").value};try{const t=await fetch(`${window.API_BASE}/api/visibility`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});ms=!1,mn(),t.ok?(await t.json()).backend_synced?showToast("Visibility saved (local + cloud)","success"):showToast("Visibility saved locally","success"):showToast("Failed to save visibility settings","error")}catch(t){console.error("Failed to save visibility settings:",t),showToast("Failed to save visibility settings","error")}}function yc(){ms=!0,mn()}function mn(){const e=document.getElementById("save-visibility-btn");e&&(e.disabled=!ms)}Object.assign(window,{handlePathInput:gc,handlePatternInput:mc,removeTag:hc,markConfigDirty:hs,loadVisibilitySettings:xo,saveVisibilitySettings:vc,markVisibilityDirty:yc});async function ht(){try{const e=await getRepos();store.update("repos",e.repos||[]),bc()}catch{document.getElementById("repos-list").innerHTML='<div class="loading-text">Failed to load repositories</div>'}}function bc(){const e=store.get("repos"),t=document.getElementById("repos-list");if(!e.length){t.innerHTML=`
|
|
260
|
+
<div class="empty-state">
|
|
261
|
+
<div class="empty-state-title">No repositories tracked</div>
|
|
262
|
+
<div>Add a repository path above to start tracking</div>
|
|
263
|
+
</div>`;return}t.innerHTML=e.map(s=>{var w;const i=((w=s.project)==null?void 0:w.name)||""||s.origin_name||s.path.split("/").pop(),o=s.paused,l=!s.exists,a=s.hook_installed;let d="active";l?d="missing":o&&(d="paused");const p=s.origin?kc(s.origin):null,f=escapeHtml(s.path).replace(/'/g,"\\'");return`
|
|
264
|
+
<div class="repo-item ${o?"paused":""} ${l?"missing":""}">
|
|
265
|
+
<div class="repo-info">
|
|
266
|
+
<div class="repo-name-row">
|
|
267
|
+
<span class="repo-name" id="repo-name-${f}" onclick="editRepoName('${f}')">${escapeHtml(i)}</span>
|
|
268
|
+
<button class="repo-edit-btn" onclick="editRepoName('${f}')" title="Edit name">✎</button>
|
|
269
|
+
${p?`<a href="${escapeHtml(p)}" target="_blank" rel="noopener noreferrer" class="repo-link" title="Open repository"><span class="repo-link-icon">↗</span></a>`:""}
|
|
270
|
+
</div>
|
|
271
|
+
<div class="repo-path">${escapeHtml(s.path)}</div>
|
|
272
|
+
<div class="repo-status">
|
|
273
|
+
<span class="repo-badge ${d}">${l?"Missing":o?"Paused":"Active"}</span>
|
|
274
|
+
${a?'<span class="repo-badge hook">Hook</span>':""}
|
|
275
|
+
${s.last_sync?`<span style="font-size: 11px; color: var(--text-muted);">Last sync: ${new Date(s.last_sync).toLocaleDateString()}</span>`:""}
|
|
276
|
+
</div>
|
|
277
|
+
</div>
|
|
278
|
+
<div class="repo-actions">
|
|
279
|
+
${o?`<button class="repo-action-btn" onclick="resumeRepoClick('${f}')">Resume</button>`:`<button class="repo-action-btn" onclick="pauseRepoClick('${f}')">Pause</button>`}
|
|
280
|
+
<button class="repo-action-btn danger" onclick="removeRepoClick('${f}')">Remove</button>
|
|
281
|
+
</div>
|
|
282
|
+
</div>
|
|
283
|
+
`}).join("")}async function wc(){const e=document.getElementById("add-repo-path"),t=e.value.trim();if(!t){showToast("Please enter a repository path","error");return}try{const s=await addRepo(t);s.success?(e.value="",showToast("Repository added","success"),ht()):showToast(s.error||"Failed to add repository","error")}catch{showToast("Failed to add repository","error")}}async function xc(e){if(confirm("Remove this repository from tracking?"))try{(await removeRepo(e)).success?(showToast("Repository removed","success"),ht()):showToast("Failed to remove repository","error")}catch{showToast("Failed to remove repository","error")}}async function _c(e){try{(await pauseRepo(e)).success?(showToast("Repository paused","success"),ht()):showToast("Failed to pause repository","error")}catch{showToast("Failed to pause repository","error")}}async function Sc(e){try{(await resumeRepo(e)).success?(showToast("Repository resumed","success"),ht()):showToast("Failed to resume repository","error")}catch{showToast("Failed to resume repository","error")}}function kc(e){if(!e)return null;if(e.startsWith("http://")||e.startsWith("https://"))return e;const t=e.match(/^git@([^:]+):(.+?)(\.git)?$/);if(t){const n=t[1],i=t[2];return`https://${n}/${i}`}const s=e.match(/^git:\/\/(.+?)(\.git)?$/);return s?`https://${s[1]}`:e}function Cc(e){var l;const s=store.get("repos").find(a=>a.path===e);if(!s)return;const n=((l=s.project)==null?void 0:l.name)||s.origin_name||s.path.split("/").pop();document.getElementById("edit-repo-modal");const i=document.getElementById("edit-repo-name-input"),o=document.getElementById("edit-repo-path-input");i.value=n,o.value=e,openModal("edit-repo-modal"),setTimeout(()=>{i.focus(),i.select()},100)}async function Ec(){const e=document.getElementById("edit-repo-name-input"),t=document.getElementById("edit-repo-path-input"),s=e.value.trim(),n=t.value;if(s===""){showToast("Name cannot be empty","error");return}const i=document.getElementById("save-repo-btn"),o=i.textContent;i.disabled=!0,i.textContent="Saving...";try{const l=await renameRepo(n,s);l.success?(showToast("Project renamed","success"),closeModal("edit-repo-modal"),ht()):showToast(l.error||"Failed to rename project","error")}catch{showToast("Failed to rename project","error")}finally{i.disabled=!1,i.textContent=o}}window.addRepoClick=wc;window.editRepoName=Cc;window.saveRepoEdit=Ec;Object.assign(window,{loadRepos:ht,removeRepoClick:xc,pauseRepoClick:_c,resumeRepoClick:Sc});let N={authenticated:!1,user:null,loginFlow:null,usernameInfo:null,polling:!1,modalOpen:!1},Gt=null;async function Tc(){if(!document.getElementById("auth-modal")){const e=document.createElement("div");e.id="auth-modal",e.className="auth-modal",e.addEventListener("click",t=>{t.stopPropagation()}),document.body.appendChild(e)}await vn(),jt(),ys()}async function vn(){try{const e=await window.getAuthStatus();if(N.authenticated=e.authenticated,N.user=e.user,e.authenticated){const t=await window.getUsernameInfo();N.usernameInfo=t}}catch(e){console.error("Failed to fetch auth status:",e)}}function jt(){var t;const e=document.getElementById("auth-section");if(e)if(N.authenticated&&N.user){const s=(t=N.usernameInfo)!=null&&t.claimed?`@${N.usernameInfo.remote_username}`:N.user.email;e.innerHTML=`
|
|
284
|
+
<div class="auth-connected">
|
|
285
|
+
<div class="auth-user">
|
|
286
|
+
<span class="auth-icon">
|
|
287
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
288
|
+
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
|
|
289
|
+
<circle cx="12" cy="7" r="4"></circle>
|
|
290
|
+
</svg>
|
|
291
|
+
</span>
|
|
292
|
+
<span class="auth-name" title="${N.user.email}">${s}</span>
|
|
293
|
+
</div>
|
|
294
|
+
<button class="auth-logout-btn" onclick="handleLogout()" title="Disconnect">
|
|
295
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
296
|
+
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path>
|
|
297
|
+
<polyline points="16 17 21 12 16 7"></polyline>
|
|
298
|
+
<line x1="21" y1="12" x2="9" y2="12"></line>
|
|
299
|
+
</svg>
|
|
300
|
+
</button>
|
|
301
|
+
</div>
|
|
302
|
+
`}else e.innerHTML=`
|
|
303
|
+
<button class="auth-connect-btn" onclick="handleStartLogin()">
|
|
304
|
+
<span class="auth-icon">
|
|
305
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
306
|
+
<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path>
|
|
307
|
+
<polyline points="10 17 15 12 10 7"></polyline>
|
|
308
|
+
<line x1="15" y1="12" x2="3" y2="12"></line>
|
|
309
|
+
</svg>
|
|
310
|
+
</span>
|
|
311
|
+
Connect to repr.dev
|
|
312
|
+
</button>
|
|
313
|
+
`}function _o(){const e=document.getElementById("auth-modal");e&&(N.modalOpen=!0,e.classList.add("open"),document.body.style.overflow="hidden",yn())}function vs(){console.log("closeAuthModal called",new Error().stack);const e=document.getElementById("auth-modal");e&&(N.modalOpen=!1,rt=!1,e.classList.remove("open"),document.body.style.overflow="")}function yn(){const e=document.getElementById("auth-modal");if(e)if(N.loginFlow&&N.loginFlow.showError){const t=N.loginFlow.message||"An error occurred";e.innerHTML=`
|
|
314
|
+
<div class="auth-modal-content" onclick="event.stopPropagation()">
|
|
315
|
+
<button class="auth-modal-close" onclick="handleCancelLogin()">
|
|
316
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
317
|
+
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
318
|
+
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
319
|
+
</svg>
|
|
320
|
+
</button>
|
|
321
|
+
<div class="auth-modal-header">
|
|
322
|
+
<div class="auth-modal-icon auth-modal-icon-error">
|
|
323
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
324
|
+
<circle cx="12" cy="12" r="10"></circle>
|
|
325
|
+
<line x1="15" y1="9" x2="9" y2="15"></line>
|
|
326
|
+
<line x1="9" y1="9" x2="15" y2="15"></line>
|
|
327
|
+
</svg>
|
|
328
|
+
</div>
|
|
329
|
+
<h2>Connection Failed</h2>
|
|
330
|
+
<p>${t}</p>
|
|
331
|
+
</div>
|
|
332
|
+
<div class="auth-modal-footer">
|
|
333
|
+
<button class="auth-cancel-btn" onclick="handleCancelLogin()">Close</button>
|
|
334
|
+
<button class="auth-retry-btn" onclick="handleRetryLogin()">Try Again</button>
|
|
335
|
+
</div>
|
|
336
|
+
</div>
|
|
337
|
+
`}else N.loginFlow&&N.loginFlow.status==="pending"&&(e.innerHTML=`
|
|
338
|
+
<div class="auth-modal-content" onclick="event.stopPropagation()">
|
|
339
|
+
<button class="auth-modal-close" onclick="handleCancelLogin()">
|
|
340
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
341
|
+
<line x1="18" y1="6" x2="6" y2="18"></line>
|
|
342
|
+
<line x1="6" y1="6" x2="18" y2="18"></line>
|
|
343
|
+
</svg>
|
|
344
|
+
</button>
|
|
345
|
+
<div class="auth-modal-header">
|
|
346
|
+
<div class="auth-modal-icon">
|
|
347
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
348
|
+
<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path>
|
|
349
|
+
<polyline points="10 17 15 12 10 7"></polyline>
|
|
350
|
+
<line x1="15" y1="12" x2="3" y2="12"></line>
|
|
351
|
+
</svg>
|
|
352
|
+
</div>
|
|
353
|
+
<h2>Connect to repr.dev</h2>
|
|
354
|
+
<p>Enter the code below at the verification page</p>
|
|
355
|
+
</div>
|
|
356
|
+
<div class="auth-modal-body">
|
|
357
|
+
<div class="auth-code">${N.loginFlow.user_code}</div>
|
|
358
|
+
<a href="${N.loginFlow.verification_url}" target="_blank" class="auth-verify-btn">
|
|
359
|
+
Open Verification Page
|
|
360
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
361
|
+
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path>
|
|
362
|
+
<polyline points="15 3 21 3 21 9"></polyline>
|
|
363
|
+
<line x1="10" y1="14" x2="21" y2="3"></line>
|
|
364
|
+
</svg>
|
|
365
|
+
</a>
|
|
366
|
+
<div class="auth-modal-status">
|
|
367
|
+
<span class="auth-spinner"></span>
|
|
368
|
+
Waiting for authorization...
|
|
369
|
+
</div>
|
|
370
|
+
</div>
|
|
371
|
+
<div class="auth-modal-footer">
|
|
372
|
+
<button class="auth-cancel-btn" onclick="handleCancelLogin()">Cancel</button>
|
|
373
|
+
</div>
|
|
374
|
+
</div>
|
|
375
|
+
`)}let rt=!1;async function So(){if(rt||N.modalOpen){console.log("Login already in progress, ignoring");return}rt=!0;try{console.log("Starting login flow...");const e=await window.startLogin();console.log("Login flow response:",e),N.loginFlow=e,e.status==="pending"?(_o(),Ic()):(console.warn("Unexpected flow status:",e.status),rt=!1)}catch(e){console.error("Failed to start login:",e),alert("Failed to start login: "+e.message),rt=!1}}function Ic(){var t;if(N.polling)return;N.polling=!0;const e=(t=N.loginFlow)==null?void 0:t.device_code;if(!e){console.error("No device code available for polling");return}Gt=setInterval(async()=>{try{console.log("Polling login status...");const s=await window.pollLoginStatus(e);if(console.log("Poll response:",s),s.status==="completed"){qt();try{await window.saveAuthToken({access_token:s.access_token,user:s.user,litellm_api_key:s.litellm_api_key})}catch(n){console.error("Failed to save token:",n)}vs(),await vn(),jt(),ys()}else(s.status==="error"||s.status==="expired"||s.status==="denied")&&(console.log("Error status:",s.status,s.message),qt(),N.loginFlow={...N.loginFlow,...s,showError:!0},yn())}catch(s){console.error("Polling error:",s),qt()}},5e3)}function qt(){N.polling=!1,Gt&&(clearInterval(Gt),Gt=null)}async function $c(){qt(),vs();try{await window.cancelLogin()}catch{}N.loginFlow=null,jt()}async function Bc(){try{await window.cancelLogin()}catch{}N.loginFlow=null,rt=!1,vs(),await So()}async function Pc(){try{await window.logout(),N.authenticated=!1,N.user=null,N.usernameInfo=null,jt(),ys()}catch(e){console.error("Failed to logout:",e)}}let W={scope:"all",repoName:null,storyId:null,includePushed:!1,previewCount:0,previewStories:[],publishing:!1};function ys(){const e=document.getElementById("publish-btn");e&&(e.style.display=N.authenticated?"flex":"none"),N.authenticated?document.body.classList.add("authenticated"):document.body.classList.remove("authenticated")}async function Ac(e="all",t=null,s=null){W.scope=e,W.repoName=t,W.storyId=s,W.includePushed=!1,W.publishing=!1;const n=document.getElementById("publish-include-pushed");n&&(n.checked=!1);const i=document.getElementById("publish-visibility");i&&(i.value="");const o=document.getElementById("publish-result");o&&(o.style.display="none");const l=document.getElementById("publish-modal");l&&(l.style.display="flex"),await ko()}async function ko(){var t;const e=((t=document.getElementById("publish-include-pushed"))==null?void 0:t.checked)||!1;W.includePushed=e;try{const s=await window.getPublishPreview({scope:W.scope,repo_name:W.repoName,story_id:W.storyId,include_pushed:e});W.previewCount=s.count,W.previewStories=s.stories||[];const n=document.getElementById("publish-count");n&&(n.textContent=`${s.count} stories`);const i=document.getElementById("publish-preview-info");if(i){const a=W.scope==="repo"?`Publishing stories from "${W.repoName}"`:W.scope==="story"?"Publishing single story":"Publishing all stories";i.querySelector("p").textContent=a}const o=document.getElementById("publish-preview-list");o&&(W.previewStories.length===0?o.innerHTML='<div style="padding: 16px; color: var(--text-muted); text-align: center;">No stories to publish</div>':o.innerHTML=W.previewStories.slice(0,10).map(a=>`
|
|
376
|
+
<div style="padding: 10px 12px; border-bottom: 1px solid var(--border);">
|
|
377
|
+
<div style="font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">${Co(a.title)}</div>
|
|
378
|
+
<div style="font-size: 12px; color: var(--text-muted);">${a.visibility||"private"}</div>
|
|
379
|
+
</div>
|
|
380
|
+
`).join("")+(W.previewCount>10?`
|
|
381
|
+
<div style="padding: 10px 12px; color: var(--text-muted); font-size: 13px;">
|
|
382
|
+
... and ${W.previewCount-10} more
|
|
383
|
+
</div>
|
|
384
|
+
`:""));const l=document.getElementById("publish-btn-text");l&&(l.textContent=`Publish ${s.count} stories`)}catch(s){console.error("Failed to get publish preview:",s)}}async function Mc(){var n;if(W.publishing||W.previewCount===0)return;W.publishing=!0;const e=document.getElementById("do-publish-btn"),t=document.getElementById("publish-btn-text");e&&(e.disabled=!0),t&&(t.textContent="Publishing...");const s=document.getElementById("publish-result");try{const i=((n=document.getElementById("publish-visibility"))==null?void 0:n.value)||null,o=await window.publishStories({scope:W.scope,repo_name:W.repoName,story_id:W.storyId,visibility:i||void 0,include_pushed:W.includePushed});o.success?(s&&(s.style.display="block",s.style.background="var(--green-bg, #d1fae5)",s.style.color="var(--green-text, #065f46)",s.innerHTML=`Published ${o.published_count} stories${o.failed_count?` (${o.failed_count} failed)`:""}`),setTimeout(()=>{Eo("publish-modal")},2e3)):s&&(s.style.display="block",s.style.background="var(--red-bg, #fee2e2)",s.style.color="var(--red-text, #991b1b)",s.innerHTML=o.error||"Publish failed")}catch(i){console.error("Publish failed:",i),s&&(s.style.display="block",s.style.background="var(--red-bg, #fee2e2)",s.style.color="var(--red-text, #991b1b)",s.innerHTML=i.message||"Publish failed")}finally{W.publishing=!1,e&&(e.disabled=!1),t&&(t.textContent=`Publish ${W.previewCount} stories`)}}async function Fc(e,t){e.stopPropagation(),e.preventDefault();const s=e.currentTarget;if(!s.classList.contains("publishing")){s.classList.add("publishing");try{const n=await window.publishSingleStory(t);s.classList.remove("publishing"),n.success?(s.classList.add("success"),setTimeout(()=>{s.classList.remove("success")},2e3)):(s.classList.add("error"),setTimeout(()=>{s.classList.remove("error")},2e3))}catch(n){console.error("Single story publish failed:",n),s.classList.remove("publishing"),s.classList.add("error"),setTimeout(()=>{s.classList.remove("error")},2e3)}}}function Co(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function Eo(e){const t=document.getElementById(e);t&&(t.style.display="none")}Object.assign(window,{initAuth:Tc,refreshAuthStatus:vn,renderAuthSection:jt,openAuthModal:_o,closeAuthModal:vs,renderAuthModal:yn,handleStartLogin:So,handleCancelLogin:$c,handleRetryLogin:Bc,handleLogout:Pc,updatePublishButton:ys,openPublishModal:Ac,refreshPublishPreview:ko,doPublish:Mc,publishSingleStoryClick:Fc,closeModal:Eo,escapeHtml:Co});const Rc={__name:"App",setup(e){return Li(()=>{/(Mac|iPhone|iPad|iPod)/i.test(navigator.platform)||document.body.classList.add("is-windows"),window.initTheme&&window.initTheme(),window.initKeyboard&&window.initKeyboard();const t=document.getElementById("search-input");t&&t.addEventListener("input",s=>{window.store&&(window.store.update("searchQuery",s.target.value.trim().toLowerCase()),window.filterAndRenderStories&&window.filterAndRenderStories())}),window.initStories&&window.initStories(),window.initAuth&&window.initAuth()}),(t,s)=>(ml(),bl(ye,null,[s[0]||(s[0]=r("div",{class:"dashboard",id:"view-main"},[r("div",{class:"sidebar-overlay",onclick:"toggleSidebar()"}),r("aside",{class:"sidebar"},[r("div",{class:"sidebar-header"},[r("div",{class:"sidebar-logo"},[r("div",{class:"sidebar-avatar"},"R"),r("div",null,[r("div",{class:"sidebar-title"},"Repr"),r("div",{class:"sidebar-subtitle"},"Dashboard")])])]),r("nav",{class:"sidebar-nav"},[r("div",{class:"sidebar-section"},[r("div",{class:"sidebar-section-title"},"Overview"),r("div",{class:"sidebar-item active","data-view":"stories",onclick:"switchMainView('stories')",role:"button","aria-label":"View Stories"},[r("span",{class:"sidebar-icon","aria-hidden":"true"},[r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[r("path",{d:"M4 19.5A2.5 2.5 0 0 1 6.5 17H20"}),r("path",{d:"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"})])]),ae(" Stories ")]),r("div",{class:"sidebar-item","data-view":"repos",onclick:"switchMainView('repos')",role:"button","aria-label":"View Repositories"},[r("span",{class:"sidebar-icon","aria-hidden":"true"},[r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[r("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})])]),ae(" Repositories ")])]),r("div",{class:"sidebar-section"},[r("div",{class:"sidebar-section-title"},"Configuration"),r("div",{class:"sidebar-item","data-view":"settings",onclick:"switchMainView('settings')",role:"button","aria-label":"Settings"},[r("span",{class:"sidebar-icon","aria-hidden":"true"},[r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[r("circle",{cx:"12",cy:"12",r:"3"}),r("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"})])]),ae(" Settings ")]),r("div",{class:"sidebar-item","data-view":"llm",onclick:"switchMainView('llm')",role:"button","aria-label":"LLM Configuration"},[r("span",{class:"sidebar-icon","aria-hidden":"true"},[r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[r("path",{d:"M12 2a10 10 0 0 1 10 10 10 10 0 0 1-10 10 10 10 0 0 1-10-10 10 10 0 0 1 10-10z"}),r("path",{d:"M8 14s1.5 2 4 2 4-2 4-2"}),r("line",{x1:"9",y1:"9",x2:"9.01",y2:"9"}),r("line",{x1:"15",y1:"9",x2:"15.01",y2:"9"})])]),ae(" LLM ")]),r("div",{class:"sidebar-item","data-view":"privacy",onclick:"switchMainView('privacy')",role:"button","aria-label":"Privacy Settings"},[r("span",{class:"sidebar-icon","aria-hidden":"true"},[r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[r("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),r("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})])]),ae(" Privacy ")]),r("div",{class:"sidebar-item","data-view":"cron",onclick:"switchMainView('cron')",role:"button","aria-label":"Cron Settings"},[r("span",{class:"sidebar-icon","aria-hidden":"true"},[r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[r("circle",{cx:"12",cy:"12",r:"10"}),r("polyline",{points:"12 6 12 12 16 14"})])]),ae(" Cron ")])])]),r("div",{id:"auth-section",class:"auth-section"}),r("div",{class:"sidebar-footer"},[r("div",{class:"sidebar-status"},[r("span",{class:"status-dot"}),r("span",{id:"status-text"},"Loading...")]),r("div",{class:"sidebar-item theme-toggle-compact",id:"theme-toggle",onclick:"toggleTheme()"},[r("span",{class:"sidebar-icon theme-toggle-icon"},[r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[r("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})])]),ae(" Toggle Theme ")])])]),r("main",{class:"main-content"},[r("div",{class:"main-layout"},[r("div",{class:"feed-column"},[r("div",{id:"view-stories"},[r("div",{class:"tabs-bar"},[r("div",{class:"mobile-menu-toggle",onclick:"toggleSidebar()"},[r("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[r("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),r("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),r("line",{x1:"3",y1:"18",x2:"21",y2:"18"})])]),r("div",{class:"search-container"},[r("div",{class:"search-icon"},[r("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[r("circle",{cx:"11",cy:"11",r:"8"}),r("path",{d:"m21 21-4.35-4.35"})])]),r("input",{type:"text",id:"search-input",class:"search-input",placeholder:"Search stories..."}),r("kbd",{class:"search-shortcut"},[r("span",{class:"search-shortcut-mod"}),ae("K")])]),r("button",{id:"publish-btn",class:"publish-btn",onclick:"openPublishModal()",style:{display:"none"},title:"Publish to Cloud"},[r("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[r("path",{d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})]),r("span",null,"Publish")])]),r("div",{class:"feed-wrapper"},[r("div",{class:"feed",id:"feed"})])]),r("div",{id:"view-detail",style:{display:"none"}},[r("div",{class:"tabs-bar"},[r("div",{class:"back-button",onclick:"goBack()"},[r("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[r("line",{x1:"19",y1:"12",x2:"5",y2:"12"}),r("polyline",{points:"12 19 5 12 12 5"})])]),r("div",{class:"view-title"},"Post")]),r("div",{id:"detail-content"})]),r("div",{id:"view-profile",style:{display:"none"}},[r("div",{class:"profile-container"},[r("div",{class:"profile-header-nav"},[r("div",{class:"back-button",onclick:"goBack()"},[r("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[r("line",{x1:"19",y1:"12",x2:"5",y2:"12"}),r("polyline",{points:"12 19 5 12 12 5"})])]),r("div",{class:"profile-nav-title",id:"profile-nav-name"},"Profile")]),r("div",{class:"profile-cover",id:"profile-cover"}),r("div",{class:"profile-content"},[r("div",{class:"profile-top-section"},[r("div",{class:"profile-avatar-wrapper"},[r("div",{class:"profile-avatar-large",id:"profile-view-avatar"},"R")]),r("div",{class:"profile-actions"})]),r("div",{class:"profile-details"},[r("div",{class:"profile-name-row"},[r("h1",{id:"profile-view-name"},"Repo Name"),r("span",{class:"verified-badge-large",id:"profile-verified-badge",style:{display:"none"}},[r("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[r("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})])])]),r("div",{class:"profile-handle",id:"profile-view-handle"},"@repo"),r("div",{class:"profile-bio",id:"profile-view-bio"}," Repository timeline and activity. "),r("div",{class:"profile-metadata-row"},[r("div",{class:"profile-pill"},[r("span",{class:"pill-icon"},"📦"),r("span",{id:"profile-repo-link"},"Repository")]),r("div",{class:"profile-pill"},[r("span",{class:"pill-icon"},"🔗"),r("span",{id:"profile-web-link"},"Website")]),r("div",{class:"profile-pill-count",id:"profile-stats-count"},"+2")]),r("div",{class:"profile-stats-row"},[r("span",{class:"stat-item"},[r("strong",{id:"profile-stories-count"},"0"),ae(),r("span",{class:"stat-label"},"Stories")]),r("span",{class:"stat-item"},[r("strong",{id:"profile-commits-count"},"0"),ae(),r("span",{class:"stat-label"},"Commits")]),r("span",{class:"stat-item"},[r("strong",{id:"profile-contributors-count"},"0"),ae(),r("span",{class:"stat-label"},"Contributors")])])]),r("div",{class:"feed-container",style:{"padding-top":"0"}},[r("div",{class:"feed",id:"profile-feed"})])])])]),r("div",{id:"view-user",style:{display:"none"}},[r("div",{class:"profile-container"},[r("div",{class:"profile-header-nav"},[r("div",{class:"back-button",onclick:"goBack()"},[r("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[r("line",{x1:"19",y1:"12",x2:"5",y2:"12"}),r("polyline",{points:"12 19 5 12 12 5"})])]),r("div",{class:"profile-nav-title",id:"user-nav-name"},"User Profile")]),r("div",{class:"profile-cover",id:"user-cover"}),r("div",{class:"profile-content"},[r("div",{class:"profile-top-section"},[r("div",{class:"profile-avatar-wrapper"},[r("div",{class:"profile-avatar-large",id:"user-view-avatar"},"U")]),r("div",{class:"profile-actions"})]),r("div",{class:"profile-details"},[r("div",{class:"profile-name-row"},[r("h1",{id:"user-view-name"},"User Name"),r("span",{class:"verified-badge-large",id:"user-verified-badge",style:{display:"none"}},[r("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[r("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})])])]),r("div",{class:"profile-handle",id:"user-view-handle"},"@user"),r("div",{class:"profile-bio",id:"user-view-bio"}," User activity. "),r("div",{class:"profile-metadata-row"},[r("div",{class:"profile-pill"},[r("span",{class:"pill-icon"},"📦"),r("span",{id:"user-repo-link"},"Github")]),r("div",{class:"profile-pill"},[r("span",{class:"pill-icon"},"🔗"),r("span",{id:"user-web-link"},"Website")]),r("div",{class:"profile-pill-count",id:"user-stats-count"},"+2")]),r("div",{class:"profile-stats-row"},[r("span",{class:"stat-item"},[r("strong",{id:"user-stories-count"},"0"),ae(),r("span",{class:"stat-label"},"Stories")]),r("span",{class:"stat-item"},[r("strong",{id:"user-commits-count"},"0"),ae(),r("span",{class:"stat-label"},"Commits")]),r("span",{class:"stat-item"},[r("strong",{id:"user-contributors-count"},"0"),ae(),r("span",{class:"stat-label"},"Repos")])])]),r("div",{class:"feed-container",style:{"padding-top":"0"}},[r("div",{class:"feed",id:"user-feed"})])])])]),r("div",{id:"view-settings",style:{display:"none"}},[r("div",{class:"tabs-bar"},[r("div",{class:"view-title"},"Settings")]),r("div",{class:"content-body"},[r("div",{class:"settings-container"},[r("nav",{class:"settings-nav"},[r("div",{class:"settings-nav-item active","data-tab":"form",onclick:"switchSettingsTab('form')"},"Form"),r("div",{class:"settings-nav-item","data-tab":"json",onclick:"switchSettingsTab('json')"},"JSON")]),r("div",{id:"settings-form",class:"settings-content"},[r("div",{class:"settings-section"},[r("h3",{class:"settings-section-title"},"Generation"),r("div",{class:"settings-row"},[r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Commits per Story"),r("input",{type:"number",class:"settings-input",id:"gen-batch-size",min:"1",max:"50",oninput:"markConfigDirty()"}),r("div",{class:"settings-hint"},"How many commits to group into a single story")]),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Max Commits per Batch"),r("input",{type:"number",class:"settings-input",id:"gen-max-commits",min:"1",max:"200",oninput:"markConfigDirty()"})])]),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Default Template"),r("select",{class:"settings-select",id:"gen-template",onchange:"markConfigDirty()"},[r("option",{value:"resume"},"Resume"),r("option",{value:"technical"},"Technical"),r("option",{value:"narrative"},"Narrative")])]),r("div",{class:"settings-checkbox-row"},[r("input",{type:"checkbox",class:"settings-checkbox",id:"gen-auto-hook",onchange:"markConfigDirty()"}),r("label",{class:"settings-checkbox-label",for:"gen-auto-hook"},"Auto-generate on git hook")])]),r("div",{class:"settings-section"},[r("h3",{class:"settings-section-title"},"Paths"),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Default Scan Paths"),r("div",{class:"tags-input",id:"default-paths-container"},[r("input",{type:"text",placeholder:"Add path and press Enter",onkeydown:"handlePathInput(event)"})]),r("div",{class:"settings-hint"},"Directories to scan for git repositories")]),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Skip Patterns"),r("div",{class:"tags-input",id:"skip-patterns-container"},[r("input",{type:"text",placeholder:"Add pattern and press Enter",onkeydown:"handlePatternInput(event)"})]),r("div",{class:"settings-hint"},"Directory names to skip when scanning")])]),r("div",{class:"btn-row"},[r("button",{class:"btn btn-primary",onclick:"saveConfig()",id:"save-btn",disabled:""},"Save Changes"),r("button",{class:"btn btn-secondary",onclick:"loadConfig()"},"Reset")])]),r("div",{id:"settings-json",class:"settings-content",style:{display:"none"}},[r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Raw Configuration (JSON)"),r("textarea",{class:"json-editor",id:"json-editor",oninput:"markConfigDirty()"}),r("div",{class:"settings-hint"},"Edit the raw JSON configuration. Be careful with syntax.")]),r("div",{class:"btn-row"},[r("button",{class:"btn btn-primary",onclick:"saveJsonConfig()",id:"save-json-btn",disabled:""},"Save JSON"),r("button",{class:"btn btn-secondary",onclick:"loadConfig()"},"Reset"),r("button",{class:"btn btn-secondary",onclick:"formatJson()"},"Format")])])])])]),r("div",{id:"view-llm",style:{display:"none"}},[r("div",{class:"tabs-bar"},[r("div",{class:"view-title"},"LLM Configuration")]),r("div",{class:"content-body"},[r("div",{class:"settings-container"},[r("div",{class:"settings-content"},[r("div",{class:"settings-section"},[r("h3",{class:"settings-section-title"},"Mode"),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Default Mode"),r("select",{class:"settings-select",id:"llm-default",onchange:"markConfigDirty()"},[r("option",{value:"local"},"Local (Ollama/LM Studio)"),r("option",{value:"cloud"},"Cloud (repr.dev)"),r("option",{value:"byok:openai"},"BYOK: OpenAI"),r("option",{value:"byok:anthropic"},"BYOK: Anthropic"),r("option",{value:"byok:groq"},"BYOK: Groq"),r("option",{value:"byok:together"},"BYOK: Together AI")])])]),r("div",{class:"settings-section"},[r("h3",{class:"settings-section-title"},"Local Provider"),r("div",{class:"settings-row"},[r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Provider"),r("select",{class:"settings-select",id:"llm-local-provider",onchange:"markConfigDirty()"},[r("option",{value:""},"Not configured"),r("option",{value:"ollama"},"Ollama"),r("option",{value:"lmstudio"},"LM Studio"),r("option",{value:"custom"},"Custom")])]),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Model"),r("input",{type:"text",class:"settings-input",id:"llm-local-model",placeholder:"e.g., llama3.2",oninput:"markConfigDirty()"})])]),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"API URL"),r("input",{type:"text",class:"settings-input",id:"llm-local-url",placeholder:"http://localhost:11434/v1",oninput:"markConfigDirty()"})])]),r("div",{class:"btn-row"},[r("button",{class:"btn btn-primary",onclick:"saveConfig()",id:"save-llm-btn",disabled:""},"Save Changes"),r("button",{class:"btn btn-secondary",onclick:"loadConfig()"},"Reset")])])])])]),r("div",{id:"view-privacy",style:{display:"none"}},[r("div",{class:"tabs-bar"},[r("div",{class:"view-title"},"Privacy")]),r("div",{class:"content-body"},[r("div",{class:"settings-container"},[r("div",{class:"settings-content"},[r("div",{class:"settings-section"},[r("h3",{class:"settings-section-title"},"Data Sharing"),r("div",{class:"settings-checkbox-row"},[r("input",{type:"checkbox",class:"settings-checkbox",id:"privacy-local-only",onchange:"markConfigDirty()"}),r("label",{class:"settings-checkbox-label",for:"privacy-local-only"},"Lock to local-only mode")]),r("div",{class:"settings-checkbox-row"},[r("input",{type:"checkbox",class:"settings-checkbox",id:"privacy-send-diffs",onchange:"markConfigDirty()"}),r("label",{class:"settings-checkbox-label",for:"privacy-send-diffs"},"Send diffs to cloud")])]),r("div",{class:"btn-row"},[r("button",{class:"btn btn-primary",onclick:"saveConfig()",id:"save-privacy-btn",disabled:""},"Save Changes"),r("button",{class:"btn btn-secondary",onclick:"loadConfig()"},"Reset")])]),r("div",{class:"settings-content",style:{"margin-top":"24px"}},[r("div",{class:"settings-section"},[r("h3",{class:"settings-section-title"},"Visibility Settings"),r("p",{class:"settings-hint"},"Control who can see your profile, repos, and stories"),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Profile Visibility"),r("select",{class:"settings-select",id:"visibility-profile",onchange:"markVisibilityDirty()"},[r("option",{value:"private",selected:""},"Private - Only you"),r("option",{value:"connections"},"Connections - Only friends"),r("option",{value:"public"},"Public - Anyone can see")])]),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Default Repo Visibility"),r("select",{class:"settings-select",id:"visibility-repos",onchange:"markVisibilityDirty()"},[r("option",{value:"private",selected:""},"Private - Only you"),r("option",{value:"connections"},"Connections - Only friends"),r("option",{value:"public"},"Public - Anyone can see")])]),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Default Story Visibility"),r("select",{class:"settings-select",id:"visibility-stories",onchange:"markVisibilityDirty()"},[r("option",{value:"private",selected:""},"Private - Only you"),r("option",{value:"connections"},"Connections - Only friends"),r("option",{value:"public"},"Public - Anyone can see")])]),r("div",{class:"btn-row"},[r("button",{class:"btn btn-primary",onclick:"saveVisibilitySettings()",id:"save-visibility-btn",disabled:""},"Save Visibility")])])])])])]),r("div",{id:"view-repos",style:{display:"none"}},[r("div",{class:"tabs-bar"},[r("div",{class:"view-title"},"Explore")]),r("div",{class:"content-body"},[r("div",{class:"settings-container"},[r("div",{class:"settings-content"},[r("div",{class:"settings-section"},[r("h3",{class:"settings-section-title"},"Add Repository"),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Repository Path"),r("div",{style:{display:"flex",gap:"12px"}},[r("input",{type:"text",class:"settings-input",id:"add-repo-path",placeholder:"~/code/my-project",style:{flex:"1"}}),r("button",{class:"btn btn-primary",onclick:"addRepoClick()"},"Add")])])]),r("div",{class:"settings-section"},[r("h3",{class:"settings-section-title"},"Tracked Repositories"),r("div",{id:"repos-list",class:"repos-list"},[r("div",{class:"loading-text"},"Loading repositories...")])])])])])]),r("div",{id:"view-cron",style:{display:"none"}},[r("div",{class:"tabs-bar"},[r("div",{class:"view-title"},"Activity")]),r("div",{class:"content-body"},[r("div",{class:"settings-container"},[r("div",{class:"settings-content"},[r("div",{class:"settings-section"},[r("h3",{class:"settings-section-title"},"Status"),r("div",{id:"cron-status",class:"cron-status-box"},[r("div",{class:"loading-text"},"Loading cron status...")])])])])])])]),r("aside",{class:"right-sidebar"},[r("div",{class:"widget"},[r("h3",{class:"widget-title"},"Subscribed Repositories"),r("div",{id:"recommended-repos",class:"widget-list"},[r("div",{class:"loading-text"},"Loading repos...")]),r("button",{class:"btn-text",id:"show-more-repos-btn",onclick:"toggleSubscribedRepos()"},"Show more")]),r("div",{class:"widget"},[r("h3",{class:"widget-title"},"Statistics"),r("div",{class:"stats-grid"},[r("div",{class:"stat-box"},[r("div",{class:"stat-label"},"Total Stories"),r("div",{class:"stat-value",id:"stat-total-stories"},"0")]),r("div",{class:"stat-box"},[r("div",{class:"stat-label"},"Active Repos"),r("div",{class:"stat-value",id:"stat-total-repos"},"0")])])]),r("footer",{class:"right-sidebar-footer"},[r("nav",null,[r("a",{href:"#"},"Terms"),r("a",{href:"#"},"Privacy"),r("a",{href:"#"},"Cookies"),r("span",null,"© 2026 Repr")])])])])])],-1)),s[1]||(s[1]=r("div",{class:"modal-overlay",id:"edit-repo-modal",onclick:"if(event.target === this) closeModal('edit-repo-modal')"},[r("div",{class:"modal-container"},[r("div",{class:"modal-header"},[r("h3",{class:"modal-title"},"Edit Repository"),r("button",{class:"modal-close",onclick:"closeModal('edit-repo-modal')"},"×")]),r("div",{class:"modal-body"},[r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Project Name"),r("div",{class:"editable-field-container"},[r("input",{type:"text",class:"settings-input",id:"edit-repo-name-input",placeholder:"Project Name",onkeydown:"if(event.key === 'Enter') saveRepoEdit()"}),r("span",{class:"editable-field-icon"},"✎")]),r("div",{class:"settings-hint"},"This name will be used in the timeline and stories")]),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Path"),r("input",{type:"text",class:"settings-input",id:"edit-repo-path-input",readonly:"",style:{background:"var(--surface-hover)",color:"var(--text-muted)",cursor:"not-allowed"}})])]),r("div",{class:"modal-footer"},[r("button",{class:"btn btn-secondary",onclick:"closeModal('edit-repo-modal')"},"Cancel"),r("button",{class:"btn btn-primary",id:"save-repo-btn",onclick:"saveRepoEdit()"},"Save Changes")])])],-1)),s[2]||(s[2]=r("div",{class:"modal-overlay",id:"publish-modal",onclick:"if(event.target === this) closeModal('publish-modal')"},[r("div",{class:"modal-container",style:{"max-width":"480px"}},[r("div",{class:"modal-header"},[r("h3",{class:"modal-title"},"Publish Stories"),r("button",{class:"modal-close",onclick:"closeModal('publish-modal')"},"×")]),r("div",{class:"modal-body"},[r("div",{id:"publish-preview-info",style:{"margin-bottom":"16px"}},[r("p",{style:{color:"var(--text-muted)","margin-bottom":"8px"}},"Publishing all stories"),r("p",{style:{"font-size":"24px","font-weight":"600"},id:"publish-count"},"0 stories")]),r("div",{id:"publish-preview-list",style:{"max-height":"160px","overflow-y":"auto",border:"1px solid var(--border)","border-radius":"8px","margin-bottom":"16px"}}),r("div",{class:"settings-group",style:{"margin-bottom":"16px"}},[r("label",{style:{display:"flex","align-items":"center",gap:"8px",cursor:"pointer"}},[r("input",{type:"checkbox",id:"publish-include-pushed",onchange:"refreshPublishPreview()"}),r("span",{style:{"font-size":"14px"}},"Include already-published stories")])]),r("div",{class:"settings-group"},[r("label",{class:"settings-label"},"Visibility override (optional)"),r("select",{class:"settings-select",id:"publish-visibility"},[r("option",{value:""},"Keep current visibility"),r("option",{value:"public"},"Public"),r("option",{value:"connections"},"Connections only"),r("option",{value:"private"},"Private")])]),r("div",{id:"publish-result",style:{display:"none",padding:"12px","border-radius":"8px","margin-top":"16px"}})]),r("div",{class:"modal-footer"},[r("button",{class:"btn btn-secondary",onclick:"closeModal('publish-modal')"},"Cancel"),r("button",{class:"btn btn-primary",id:"do-publish-btn",onclick:"doPublish()"},[r("span",{id:"publish-btn-text"},"Publish")])])])],-1))],64))}},To=sa(Rc);To.use(ra());To.mount("#app");
|