From 4df83cd361b3030441fc8173cddbd7be14b6f7c3 Mon Sep 17 00:00:00 2001
From: mirivlad
Date: Sun, 7 Jun 2026 19:19:44 +0800
Subject: [PATCH] =?UTF-8?q?security:=20=D1=81=D1=82=D0=B0=D0=B1=D0=B8?=
=?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D1=8B?=
=?UTF-8?q?=D0=B9=20=D0=B0=D1=83=D0=B4=D0=B8=D1=82=20Lua=20plugin=20system?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Исправления:
- Install: идемпотентность (no duplicates in InstalledPlugins)
- ReloadPlugins: StopSchedulers + CallShutdownHooks перед CloseRuntimes
- StopSchedulers: обнуление scheduler=nil после остановки
- Scheduler.Stop: обнуление tasks после wg.Wait
- Lua sandbox: блокировка package.loadlib/seeall/preload/loaders/loaded/path/cpath/config/searchpath
- Lua sandbox: блокировка load (глобальная функция)
- CallPluginFunction: валидация funcName (regex [a-zA-Z_][a-zA-Z0-9_]*, max 3 segments)
- CallPluginFunction: убрана строковая сборка Lua-кодa, вызов через PCall напрямую
- PluginPage.svelte: проверка e.source === iframeEl.contentWindow
- PluginPage.svelte: type checking для msg.source, msg.action
Тесты:
- security_test.go: 18 новых тестов (sandbox, lifecycle, validation)
- Все существующие тесты проходят
Документация:
- docs/plugins-security.md: модель безопасности, sandbox, протокол, lifecycle
---
cmd/verstak-gui/bindings_plugins.go | 149 ++-
.../{main-BOc2ygMG.js => main-9sLWbwBV.js} | 2 +-
cmd/verstak-gui/frontend-dist/index.html | 2 +-
docs/plugins-security.md | 203 ++++
frontend/src/lib/PluginPage.svelte | 9 +-
internal/core/plugins/manager.go | 14 +-
internal/core/plugins/runtime.go | 11 +-
internal/core/plugins/scheduler.go | 3 +
internal/core/plugins/security_test.go | 966 ++++++++++++++++++
9 files changed, 1305 insertions(+), 54 deletions(-)
rename cmd/verstak-gui/frontend-dist/assets/{main-BOc2ygMG.js => main-9sLWbwBV.js} (57%)
create mode 100644 docs/plugins-security.md
create mode 100644 internal/core/plugins/security_test.go
diff --git a/cmd/verstak-gui/bindings_plugins.go b/cmd/verstak-gui/bindings_plugins.go
index 268248d..318cef7 100644
--- a/cmd/verstak-gui/bindings_plugins.go
+++ b/cmd/verstak-gui/bindings_plugins.go
@@ -6,9 +6,11 @@ import (
"log"
"os"
"path/filepath"
+ "regexp"
"strings"
"verstak/internal/core/config"
+ "verstak/internal/core/plugins"
lua "github.com/yuin/gopher-lua"
)
@@ -204,13 +206,32 @@ func (a *App) ListSystemViewsWithPlugins() []SystemViewDTO {
return base
}
+// validLuaIdent matches a safe Lua identifier segment: [a-zA-Z_][a-zA-Z0-9_]*
+var validLuaIdent = regexp.MustCompile(`^[a-zA-Z_][a-zA-Z0-9_]*$`)
+
// CallPluginFunction calls a global Lua function on an active plugin.
// The funcName can use dots: "calendar.create_event" → _G.calendar.create_event
+// Only alphanumeric identifiers with underscores are allowed (no Lua injection).
// Returns JSON string or error.
func (a *App) CallPluginFunction(pluginName, funcName string, paramsJSON string) (string, error) {
if a.plugins == nil {
return "", fmt.Errorf("plugin manager not ready")
}
+
+ // Validate funcName: only [a-zA-Z0-9_.]+ allowed, each segment must be valid ident
+ if funcName == "" {
+ return "", fmt.Errorf("funcName is empty")
+ }
+ segments := strings.Split(funcName, ".")
+ if len(segments) > 3 {
+ return "", fmt.Errorf("funcName %q too deep (max 2 dots)", funcName)
+ }
+ for _, seg := range segments {
+ if !validLuaIdent.MatchString(seg) {
+ return "", fmt.Errorf("funcName %q contains invalid segment %q", funcName, seg)
+ }
+ }
+
for _, p := range a.plugins.Plugins() {
if p.Meta.Name != pluginName || !p.Active {
continue
@@ -219,73 +240,107 @@ func (a *App) CallPluginFunction(pluginName, funcName string, paramsJSON string)
if vm == nil {
continue
}
- // Resolve dotted path: "calendar.create_event" → _G.calendar.create_event
- parts := strings.SplitN(funcName, ".", 2)
- var luaFn string
- if len(parts) == 2 {
- luaFn = fmt.Sprintf("_G.%s['%s']", parts[0], parts[1])
+
+ // Resolve the function via _G to avoid string-based code generation
+ var fn lua.LValue
+ if len(segments) == 1 {
+ fn = vm.LState().GetGlobal(segments[0])
} else {
- luaFn = fmt.Sprintf("_G['%s']", funcName)
- }
-
- // Parse params
- var params interface{}
- if paramsJSON != "" && paramsJSON != "{}" {
- if err := json.Unmarshal([]byte(paramsJSON), ¶ms); err != nil {
- params = paramsJSON
- }
- }
-
- // Convert params to Lua value
- var luaArg lua.LValue
- switch v := params.(type) {
- case nil:
- luaArg = lua.LNil
- case string:
- luaArg = lua.LString(v)
- case float64:
- luaArg = lua.LNumber(v)
- case bool:
- luaArg = lua.LBool(v)
- case map[string]interface{}:
- tbl := vm.LState().NewTable()
- for key, val := range v {
- switch sv := val.(type) {
- case string:
- tbl.RawSetString(key, lua.LString(sv))
- case float64:
- tbl.RawSetString(key, lua.LNumber(sv))
- case bool:
- tbl.RawSetString(key, lua.LBool(sv))
+ // Walk the dotted path: _G[seg1][seg2]...
+ tbl := vm.LState().GetGlobal(segments[0])
+ for i := 1; i < len(segments); i++ {
+ if t, ok := tbl.(*lua.LTable); ok {
+ tbl = t.RawGetString(segments[i])
+ } else {
+ tbl = lua.LNil
+ break
}
}
- luaArg = tbl
- default:
- luaArg = lua.LString(paramsJSON)
+ fn = tbl
}
- var script string
- if luaArg == lua.LNil {
- script = fmt.Sprintf("return %s()", luaFn)
- } else {
- script = fmt.Sprintf("return %s(%s)", luaFn, luaArg.String())
+ if fn == lua.LNil {
+ return "", fmt.Errorf("function %q not found in plugin %q", funcName, pluginName)
+ }
+ if _, ok := fn.(*lua.LFunction); !ok {
+ return "", fmt.Errorf("%q is not a function in plugin %q", funcName, pluginName)
}
- result, err := vm.DoString(script)
+ // Parse params into Lua value
+ luaArg, err := parseParamsToLua(vm, paramsJSON)
if err != nil {
+ return "", fmt.Errorf("parse params: %w", err)
+ }
+
+ // Call the function directly via PCall (no string-based code generation)
+ vm.LState().Push(fn)
+ if luaArg != nil {
+ vm.LState().Push(luaArg)
+ }
+ nargs := 0
+ if luaArg != nil {
+ nargs = 1
+ }
+ if err := vm.LState().PCall(nargs, 1, nil); err != nil {
return "", fmt.Errorf("call %s: %w", funcName, err)
}
- return result, nil
+ ret := vm.LState().Get(-1)
+ vm.LState().Pop(1)
+ return ret.String(), nil
}
return "", fmt.Errorf("plugin %q not active or not found", pluginName)
}
+// parseParamsToLua converts a JSON params string to a lua.LValue.
+// Empty or "{}" → nil (no argument).
+func parseParamsToLua(vm *plugins.LuaVM, paramsJSON string) (lua.LValue, error) {
+ if paramsJSON == "" || paramsJSON == "{}" {
+ return nil, nil
+ }
+ var params interface{}
+ if err := json.Unmarshal([]byte(paramsJSON), ¶ms); err != nil {
+ return nil, fmt.Errorf("invalid JSON params: %w", err)
+ }
+ return goToLua(vm.LState(), params), nil
+}
+
+// goToLua converts a Go interface{} to a lua.LValue.
+func goToLua(L *lua.LState, v interface{}) lua.LValue {
+ switch val := v.(type) {
+ case nil:
+ return lua.LNil
+ case string:
+ return lua.LString(val)
+ case float64:
+ return lua.LNumber(val)
+ case bool:
+ return lua.LBool(val)
+ case map[string]interface{}:
+ tbl := L.NewTable()
+ for k, v := range val {
+ tbl.RawSetString(k, goToLua(L, v))
+ }
+ return tbl
+ case []interface{}:
+ tbl := L.NewTable()
+ for i, v := range val {
+ tbl.RawSetInt(i+1, goToLua(L, v))
+ }
+ return tbl
+ default:
+ return lua.LString(fmt.Sprintf("%v", v))
+ }
+}
+
// ReloadPlugins re-scans the plugins directory and re-initializes runtimes.
func (a *App) ReloadPlugins() error {
if a.plugins == nil {
return fmt.Errorf("plugin manager not ready")
}
log.Print("[plugins] reload requested")
+ // Fully stop runtimes: schedulers first (they depend on VMs), then VMs
+ a.plugins.StopSchedulers()
+ a.plugins.CallShutdownHooks()
a.plugins.CloseRuntimes()
a.plugins.Discover()
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-BOc2ygMG.js b/cmd/verstak-gui/frontend-dist/assets/main-9sLWbwBV.js
similarity index 57%
rename from cmd/verstak-gui/frontend-dist/assets/main-BOc2ygMG.js
rename to cmd/verstak-gui/frontend-dist/assets/main-9sLWbwBV.js
index b67c33c..18fecdb 100644
--- a/cmd/verstak-gui/frontend-dist/assets/main-BOc2ygMG.js
+++ b/cmd/verstak-gui/frontend-dist/assets/main-9sLWbwBV.js
@@ -1,5 +1,5 @@
var up=Object.defineProperty;var fp=(l,e,t)=>e in l?up(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var Vt=(l,e,t)=>fp(l,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.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 r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&n(r)}).observe(document,{childList:!0,subtree:!0});function t(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=t(i);fetch(i.href,o)}})();function te(){}function dp(l,e){for(const t in e)l[t]=e[t];return l}function Nc(l){return l()}function Ns(){return Object.create(null)}function ge(l){l.forEach(Nc)}function Pt(l){return typeof l=="function"}function Xe(l,e){return l!=l?e==e:l!==e||l&&typeof l=="object"||typeof l=="function"}let pn;function El(l,e){return l===e?!0:(pn||(pn=document.createElement("a")),pn.href=e,l===pn.href)}function pp(l){return Object.keys(l).length===0}function mp(l,e,t,n){if(l){const i=Ac(l,e,t,n);return l[0](i)}}function Ac(l,e,t,n){return l[1]&&n?dp(t.ctx.slice(),l[1](n(e))):t.ctx}function gp(l,e,t,n){if(l[2]&&n){const i=l[2](n(t));if(e.dirty===void 0)return i;if(typeof i=="object"){const o=[],r=Math.max(e.dirty.length,i.length);for(let c=0;c32){const e=[],t=l.ctx.length/32;for(let n=0;nl.removeEventListener(e,t,n)}function Sn(l){return function(e){return e.preventDefault(),l.call(this,e)}}function Ie(l){return function(e){return e.stopPropagation(),l.call(this,e)}}function Ct(l){return function(e){e.target===this&&l.call(this,e)}}function s(l,e,t){t==null?l.removeAttribute(e):l.getAttribute(e)!==t&&l.setAttribute(e,t)}function Dl(l){return l===""?null:+l}function hp(l){return Array.from(l.childNodes)}function K(l,e){e=""+e,l.data!==e&&(l.data=e)}function be(l,e){l.value=e??""}function kt(l,e,t,n){t==null?l.style.removeProperty(e):l.style.setProperty(e,t,"")}function Ut(l,e,t){for(let n=0;n{const i=l.$$.callbacks[e];if(i){const o=kp(e,t,{cancelable:n});return i.slice().forEach(r=>{r.call(l,o)}),!o.defaultPrevented}return!0}}function Mc(l,e){const t=l.$$.callbacks[e.type];t&&t.slice().forEach(n=>n.call(this,e))}const Sl=[],bn=[];let Tl=[];const Ms=[],jc=Promise.resolve();let fi=!1;function Lc(){fi||(fi=!0,jc.then(Pc))}function bp(){return Lc(),jc}function sl(l){Tl.push(l)}const ii=new Set;let wl=0;function Pc(){if(wl!==0)return;const l=Vl;do{try{for(;wll.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),Tl=e}const hn=new Set;let il;function at(){il={r:0,c:[],p:il}}function ct(){il.r||ge(il.c),il=il.p}function fe(l,e){l&&l.i&&(hn.delete(l),l.i(e))}function me(l,e,t,n){if(l&&l.o){if(hn.has(l))return;hn.add(l),il.c.push(()=>{hn.delete(l),n&&(t&&l.d(1),n())}),l.o(e)}else n&&n()}function de(l){return(l==null?void 0:l.length)!==void 0?l:Array.from(l)}function Fc(l,e){me(l,1,1,()=>{e.delete(l.key)})}function zc(l,e,t,n,i,o,r,c,f,p,_,m){let g=l.length,h=o.length,b=g;const w={};for(;b--;)w[l[b].key]=b;const C=[],T=new Map,E=new Map,D=[];for(b=h;b--;){const I=m(i,o,b),M=t(I);let z=r.get(M);z?D.push(()=>z.p(I,e)):(z=p(M,I),z.c()),T.set(M,C[b]=z),M in w&&E.set(M,Math.abs(b-w[M]))}const N=new Set,A=new Set;function P(I){fe(I,1),I.m(c,_),r.set(I.key,I),_=I.first,h--}for(;g&&h;){const I=C[h-1],M=l[g-1],z=I.key,B=M.key;I===M?(_=I.first,g--,h--):T.has(B)?!r.has(z)||N.has(z)?P(I):A.has(B)?g--:E.get(z)>E.get(B)?(A.add(z),P(I)):(N.add(B),g--):(f(M,r),g--)}for(;g--;){const I=l[g];T.has(I.key)||f(I,r)}for(;h;)P(C[h-1]);return ge(D),C}function Ve(l){l&&l.c()}function He(l,e,t){const{fragment:n,after_update:i}=l.$$;n&&n.m(e,t),sl(()=>{const o=l.$$.on_mount.map(Nc).filter(Pt);l.$$.on_destroy?l.$$.on_destroy.push(...o):ge(o),l.$$.on_mount=[]}),i.forEach(sl)}function We(l,e){const t=l.$$;t.fragment!==null&&(yp(t.after_update),ge(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Cp(l,e){l.$$.dirty[0]===-1&&(Sl.push(l),Lc(),l.$$.dirty.fill(0)),l.$$.dirty[e/31|0]|=1<{const b=h.length?h[0]:g;return p.ctx&&i(p.ctx[m],p.ctx[m]=b)&&(!p.skip_bound&&p.bound[m]&&p.bound[m](b),_&&Cp(l,m)),g}):[],p.update(),_=!0,ge(p.before_update),p.fragment=n?n(p.ctx):!1,e.target){if(e.hydrate){const m=hp(e.target);p.fragment&&p.fragment.l(m),m.forEach(y)}else p.fragment&&p.fragment.c();e.intro&&fe(l.$$.fragment),He(l,e.target,e.anchor),Pc()}Wl(f)}class xe{constructor(){Vt(this,"$$");Vt(this,"$$set")}$destroy(){We(this,1),this.$destroy=te}$on(e,t){if(!Pt(t))return te;const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const i=n.indexOf(t);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!pp(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Sp="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Sp);function Tp(l){let e,t;return{c(){e=ie("path"),t=ie("polyline"),s(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),s(t,"points","14 2 14 8 20 8")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function Ep(l){let e,t,n,i,o;return{c(){e=ie("path"),t=ie("polyline"),n=ie("line"),i=ie("line"),o=ie("polyline"),s(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),s(t,"points","14 2 14 8 20 8"),s(n,"x1","16"),s(n,"y1","13"),s(n,"x2","8"),s(n,"y2","13"),s(i,"x1","16"),s(i,"y1","17"),s(i,"x2","8"),s(i,"y2","17"),s(o,"points","10 9 9 9 8 9")},m(r,c){S(r,e,c),S(r,t,c),S(r,n,c),S(r,i,c),S(r,o,c)},d(r){r&&(y(e),y(t),y(n),y(i),y(o))}}}function Dp(l){let e,t;return{c(){e=ie("polyline"),t=ie("polyline"),s(e,"points","16 18 22 12 16 6"),s(t,"points","8 6 2 12 8 18")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function Ip(l){let e,t,n,i;return{c(){e=ie("path"),t=ie("polyline"),n=ie("line"),i=ie("rect"),s(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),s(t,"points","7 3 12 8 17 3"),s(n,"x1","3"),s(n,"y1","8"),s(n,"x2","21"),s(n,"y2","8"),s(i,"x","10"),s(i,"y","12"),s(i,"width","4"),s(i,"height","4"),s(i,"rx","1")},m(o,r){S(o,e,r),S(o,t,r),S(o,n,r),S(o,i,r)},d(o){o&&(y(e),y(t),y(n),y(i))}}}function Np(l){let e,t,n,i,o;return{c(){e=ie("path"),t=ie("polyline"),n=ie("line"),i=ie("line"),o=ie("line"),s(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),s(t,"points","14 2 14 8 20 8"),s(n,"x1","9"),s(n,"y1","12"),s(n,"x2","15"),s(n,"y2","12"),s(i,"x1","9"),s(i,"y1","15"),s(i,"x2","13"),s(i,"y2","15"),s(o,"x1","12"),s(o,"y1","15"),s(o,"x2","12"),s(o,"y2","18")},m(r,c){S(r,e,c),S(r,t,c),S(r,n,c),S(r,i,c),S(r,o,c)},d(r){r&&(y(e),y(t),y(n),y(i),y(o))}}}function Ap(l){let e,t,n,i,o,r;return{c(){e=ie("path"),t=ie("polyline"),n=ie("line"),i=ie("line"),o=ie("line"),r=ie("line"),s(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),s(t,"points","14 2 14 8 20 8"),s(n,"x1","8"),s(n,"y1","12"),s(n,"x2","16"),s(n,"y2","12"),s(i,"x1","8"),s(i,"y1","16"),s(i,"x2","16"),s(i,"y2","16"),s(o,"x1","8"),s(o,"y1","14"),s(o,"x2","12"),s(o,"y2","14"),s(r,"x1","12"),s(r,"y1","12"),s(r,"x2","12"),s(r,"y2","18")},m(c,f){S(c,e,f),S(c,t,f),S(c,n,f),S(c,i,f),S(c,o,f),S(c,r,f)},d(c){c&&(y(e),y(t),y(n),y(i),y(o),y(r))}}}function Mp(l){let e,t,n,i;return{c(){e=ie("path"),t=ie("polyline"),n=ie("line"),i=ie("line"),s(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),s(t,"points","14 2 14 8 20 8"),s(n,"x1","16"),s(n,"y1","13"),s(n,"x2","8"),s(n,"y2","13"),s(i,"x1","16"),s(i,"y1","17"),s(i,"x2","8"),s(i,"y2","17")},m(o,r){S(o,e,r),S(o,t,r),S(o,n,r),S(o,i,r)},d(o){o&&(y(e),y(t),y(n),y(i))}}}function jp(l){let e,t,n,i,o;return{c(){e=ie("path"),t=ie("polyline"),n=ie("line"),i=ie("line"),o=ie("line"),s(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),s(t,"points","14 2 14 8 20 8"),s(n,"x1","8"),s(n,"y1","12"),s(n,"x2","16"),s(n,"y2","12"),s(i,"x1","8"),s(i,"y1","16"),s(i,"x2","16"),s(i,"y2","16"),s(o,"x1","8"),s(o,"y1","14"),s(o,"x2","12"),s(o,"y2","14")},m(r,c){S(r,e,c),S(r,t,c),S(r,n,c),S(r,i,c),S(r,o,c)},d(r){r&&(y(e),y(t),y(n),y(i),y(o))}}}function Lp(l){let e,t,n;return{c(){e=ie("path"),t=ie("circle"),n=ie("circle"),s(e,"d","M9 18V5l12-2v13"),s(t,"cx","6"),s(t,"cy","18"),s(t,"r","3"),s(n,"cx","18"),s(n,"cy","16"),s(n,"r","3")},m(i,o){S(i,e,o),S(i,t,o),S(i,n,o)},d(i){i&&(y(e),y(t),y(n))}}}function Pp(l){let e,t;return{c(){e=ie("rect"),t=ie("polyline"),s(e,"x","2"),s(e,"y","4"),s(e,"width","20"),s(e,"height","16"),s(e,"rx","2"),s(t,"points","10 9 16 12 10 15 10 9")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function Fp(l){let e,t,n;return{c(){e=ie("rect"),t=ie("circle"),n=ie("polyline"),s(e,"x","3"),s(e,"y","3"),s(e,"width","18"),s(e,"height","18"),s(e,"rx","2"),s(e,"ry","2"),s(t,"cx","8.5"),s(t,"cy","8.5"),s(t,"r","1.5"),s(n,"points","21 15 16 10 5 21")},m(i,o){S(i,e,o),S(i,t,o),S(i,n,o)},d(i){i&&(y(e),y(t),y(n))}}}function zp(l){let e;return{c(){e=ie("path"),s(e,"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")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function Rp(l){let e;function t(o,r){return o[0]==="folder"?zp:o[0]==="image"?Fp:o[0]==="video"?Pp:o[0]==="audio"?Lp:o[0]==="pdf"?jp:o[0]==="document"?Mp:o[0]==="spreadsheet"?Ap:o[0]==="presentation"?Np:o[0]==="archive"?Ip:o[0]==="code"?Dp:o[0]==="text"?Ep:Tp}let n=t(l),i=n(l);return{c(){e=ie("svg"),i.c(),s(e,"width",l[1]),s(e,"height",l[1]),s(e,"viewBox","0 0 24 24"),s(e,"fill","none"),s(e,"stroke","currentColor"),s(e,"stroke-width","1.5"),s(e,"stroke-linecap","round"),s(e,"stroke-linejoin","round"),s(e,"xmlns","http://www.w3.org/2000/svg")},m(o,r){S(o,e,r),i.m(e,null)},p(o,[r]){n!==(n=t(o))&&(i.d(1),i=n(o),i&&(i.c(),i.m(e,null))),r&2&&s(e,"width",o[1]),r&2&&s(e,"height",o[1])},i:te,o:te,d(o){o&&y(e),i.d()}}}function Op(l,e,t){let{kind:n="generic"}=e,{size:i=20}=e;return l.$$set=o=>{"kind"in o&&t(0,n=o.kind),"size"in o&&t(1,i=o.size)},[n,i]}class Rc extends xe{constructor(e){super(),Ze(this,e,Op,Rp,Xe,{kind:0,size:1})}}const Bp={"nav.today":"Сегодня","nav.inbox":"Неразобранное","nav.trash":"Корзина","nav.activity":"Активность","nav.journal":"Журнал","nav.clients":"Клиенты","nav.projects":"Проекты","nav.recipes":"Рецепты","nav.documents":"Документы","nav.archive":"Архив","nav.sections":"Разделы","nav.cases":"Дела","nav.noCases":"Нет дел","nav.sync":"Синхронизация","nav.syncSettings":"Настройки синхронизации","nav.syncNow":"Синхронизировать","nav.selectPrompt":"Выберите раздел или дело","nav.brand":"Верстак","nav.system":"Системное","nav.workspace":"Рабочее пространство","nav.noNodes":"Нет узлов","nav.openFolder":"Открыть папку","nav.createInside":"Создать внутри","nav.createNode":"Создать элемент","nav.moveToRoot":"Переместить в корень","inbox.subtitle":"Захваченные материалы, которые нужно разложить по делам","inbox.sortByDate":"по дате","inbox.sortByName":"по имени","inbox.sortByType":"по типу","inbox.sortAsc":"по возрастанию","inbox.sortDesc":"по убыванию","inbox.groupByContext":"Группировать по месту захвата","inbox.noContext":"Без места захвата","inbox.empty":"Неразобранных элементов нет","inbox.pasteClipboard":"Вставить из буфера","inbox.captured":"Добавлено","inbox.clipboardEmpty":"Буфер обмена пуст","inbox.clipboardUnavailable":"Буфер обмена недоступен","inbox.assign":"Разложить","inbox.keepHere":"Прикрепить в захваченном месте","inbox.localEmpty":"Для этого дела неразобранных материалов нет","inbox.capturedIn":"Захвачено в","inbox.suggestedTarget":"Цель","inbox.assignTitle":"Разложить материал","inbox.assignTarget":"Дело","inbox.assignSearchPlaceholder":"Найти дело","inbox.assignSearchHint":"Начните набирать название Дела","inbox.deleteTitle":"Удалить материал","inbox.deleteConfirm":"Удалить «{title}» из неразобранного?","capture.kind.text":"Текст","capture.kind.url":"Ссылка","capture.kind.file":"Файл","capture.kind.folder":"Папка","capture.kind.image":"Изображение","capture.source.clipboard":"Буфер обмена","capture.source.clipboard_button":"Кнопка буфера","capture.source.drop":"Перетаскивание","capture.source.paste":"Вставка","capture.source.browser":"Браузер","capture.source.manual":"Вручную","capture.dropOverlayNode":"Будет добавлено в Неразобранное для: {title}","capture.dropOverlayGlobal":"Будет добавлено в глобальное Неразобранное","trash.openFolder":"Открыть папку корзины","trash.empty":"Корзина пуста","trash.emptyTrash":"Очистить корзину","trash.restore":"Восстановить","trash.deletedNodes":"Удаленные элементы","tab.overview":"Обзор","tab.notes":"Заметки","tab.files":"Файлы","tab.inbox":"Неразобранное","tab.links":"Ссылки","tab.actions":"Действия","tab.worklog":"Журнал","tab.activity":"Активность","common.save":"Сохранить","common.cancel":"Отмена","common.delete":"Удалить","common.rename":"Переименовать","common.close":"Закрыть","common.create":"Создать","common.confirm":"Подтверждение","common.back":"← Назад","common.backLabel":"Назад","common.loading":"Загрузка...","common.error":"Ошибка:","common.yes":"Да","common.ok":"OK","common.copy":"Копировать","common.cut":"Вырезать","common.paste":"Вставить","common.duplicate":"Дублировать","common.run":"Запустить","common.test":"Test","common.all":"Все","common.open":"Открыть","common.no":"Нет","common.date":"Дата","common.search":"Найти","common.testAgain":"Проверить","common.connect":"Подключиться","common.disconnect":"Отключиться","common.settings":"Настройки","common.name":"Название","common.type":"Тип","common.section":"Раздел","common.created":"Создано","common.empty":"Нет","common.newName":"Новое имя","search.placeholder":"Поиск по Верстаку...","search.noResults":"Ничего не найдено","welcome.title":"Верстак","welcome.selectSection":"Выберите раздел в боковой панели.","welcome.createCase":"Или создайте новое дело кнопкой «+».","welcome.addCase":"Добавить дело","event.noteCreated":"Заметка создана","event.noteUpdated":"Заметка изменена","event.fileAdded":"Файл добавлен","event.fileDeleted":"Файл удалён","event.fileRenamed":"Файл переименован","event.fileCopied":"Файл скопирован","event.fileMoved":"Файл перемещён","event.folderAdded":"Папка добавлена","event.folderDeleted":"Папка удалена","event.folderRenamed":"Папка переименована","event.caseCreated":"Дело создано","event.caseUpdated":"Дело изменено","event.noteDeleted":"Заметка удалена","event.folderMoved":"Папка перемещена","event.nodeDeleted":"Узел удалён","event.actionCreated":"Действие создано","event.actionDone":"Действие выполнено","event.worklogAdded":"Запись времени добавлена","kind.project":"Проект","kind.client":"Клиент","kind.document":"Документ","kind.recipe":"Рецепт","kind.folder":"Папка","kind.note":"Заметка","kind.file":"Файл","kind.archive":"Архив","kind.case":"Дело","kind.link":"Ссылка","kind.action":"Действие","links.empty":"Ссылок пока нет","links.editTitle":"Редактировать ссылку","links.note":"Заметка","links.copyUrl":"Копировать URL","links.copied":"URL скопирован","links.copyUnavailable":"Не удалось скопировать URL","links.deleteTitle":"Удалить ссылку","links.deleteConfirm":"Удалить ссылку «{title}»?","action.openUrl":"Открыть URL","action.openFile":"Открыть файл","action.openFolder":"Открыть папку","action.runCommand":"Запустить команду","action.runScript":"Запустить скрипт","action.openTerminal":"Открыть терминал","action.launchApp":"Запустить приложение","action.addAction":"+ Добавить действие","action.newAction":"Новое действие","action.noActions":"Действий пока нет","action.run":"Запустить","action.dataUrl":"URL","action.dataPath":"Путь","action.dataCommand":"Команда","action.urlPlaceholder":"https://example.com","action.pathPlaceholder":"/path/to/file","action.commandPlaceholder":"команда","action.namePlaceholder":"Например: Открыть сайт","note.add":"+ Добавить заметку","note.new":"Новая заметка","note.title":"Название заметки","note.noNotes":"Нет заметок","note.createFirst":"Создайте первую заметку для этого дела.","note.placeholder":"Начните писать...","note.unsavedTitle":"Несохранённые изменения","note.unsavedMessage":"Закрыть редактор? Все несохранённые изменения будут потеряны.","note.unsavedClose":"Закрыть","file.addFile":"+ Добавить файл","file.addFolder":"+ Добавить папку","file.newFile":"+ Новый файл","file.addFileSimple":"Добавить файл","file.addFolderSimple":"Добавить папку","file.noFiles":"В этой папке пока нет файлов","file.noFilesCase":"В этом проекте пока нет файлов","file.hint":"Добавьте файл или папку, чтобы сохранить материалы проекта.","file.root":"Файлы","file.preview":"Предпросмотр","file.openExternal":"Открыть во внешней программе","file.openFolder":"Открыть папку","file.showInExplorer":"Показать в проводнике","file.more":"Ещё","file.delete":"Удалить","file.ariaFolder":"Папка","file.ariaFile":"Файл","file.scanning":"Сканирование...","file.pickSingle":"Выберите файл","file.pickMultiple":"Выберите файлы","file.pickDirectory":"Выберите папку","file.importTitle":"Добавить в","file.importFiles":"Файлов:","file.importFolders":"Папок:","file.importSize":"Размер:","file.importCopy":"Скопировать","file.importLink":"Привязать","file.selectCaseFirst":"Сначала выберите дело для добавления файлов","worklog.title":"Журнал","worklog.whatDone":"Что сделано","worklog.minutes":"Мин","worklog.min":"мин","worklog.log":"Записать","worklog.addEntry":"Добавить запись","worklog.acceptSuggestion":"Принять предложение","worklog.editEntry":"Редактировать запись","worklog.deleteEntry":"Удалить запись","worklog.deleteConfirm":"Удалить эту запись работы? Связанные события останутся в активности, но связь с записью будет удалена.","worklog.date":"Дата","worklog.empty":"Записей работы пока нет","worklog.details":"Детали","worklog.source":"Источник","worklog.sourceSuggestion":"Из предложения","worklog.sourceSuggestionNoEvents":"Из предложения, но связанные события отсутствуют","worklog.sourceManual":"Ручная запись","worklog.sourceUnknown":"Источник неизвестен","worklog.suggestions":"Предложения на сегодня","worklog.apply":"Применить","sync.title":"Синхронизация","sync.settings":"Настройки синхронизации","sync.status":"Статус","sync.server":"Сервер","sync.device":"Устройство","sync.deviceId":"ID устройства","sync.unpushed":"Неотправлено","sync.lastSync":"Последняя синх.","sync.revoked":"Отозвано","sync.connected":"Подключено","sync.notConnected":"Не подключено","sync.disabled":"Отключена","sync.serverUrl":"URL сервера","sync.serverUrlPlaceholder":"https://example.com:47732","sync.username":"Логин","sync.usernamePlaceholder":"username","sync.password":"Пароль","sync.passwordPlaceholder":"password","sync.interval":"Автосинхронизация (мин)","sync.saveInterval":"Сохранить интервал","sync.syncNow":"Синхронизировать","sync.disconnect":"Отключиться","sync.connect":"Подключиться","sync.test":"Проверить","sync.settingsSaved":"интервал сохранён","today.title":"Сегодня","today.changedCases":"Изменён сегодня","today.timeline":"Лента за сегодня","today.empty":"Сегодня пока тихо","today.emptyHint":"Здесь появятся дела, заметки, файлы и действия, с которыми вы работали сегодня.","today.plural.case_one":"дело","today.plural.case_few":"дела","today.plural.case_many":"дел","today.plural.note_one":"заметка","today.plural.note_few":"заметки","today.plural.note_many":"заметок","today.plural.file_one":"файл","today.plural.file_few":"файла","today.plural.file_many":"файлов","today.plural.event_one":"событие","today.plural.event_few":"события","today.plural.event_many":"событий","today.feed":"Лента","today.suggestionsTab":"Предложения","today.inProgress":"В работе","today.captured":"Захвачено","today.feedEmpty":"Сегодня событий нет","today.inProgressEmpty":"Сегодня ничего не изменяли","today.capturedEmpty":"Сегодня ничего не захвачено","today.feedHint":"События за сегодня: изменения файлов, заметок, действий и другие события.","today.sortByTime":"по времени","today.sortByName":"по имени","today.sortByType":"по типу","today.sortAsc":"по возрастанию","today.sortDesc":"по убыванию","journal.title":"Журнал работы","journal.worklogTab":"Журнал работы","journal.empty":"Нет записей за выбранный период","journal.dateFrom":"От","journal.dateTo":"До","journal.filter":"Фильтр","journal.total":"Всего","journal.exportCSV":"CSV","journal.exportMarkdown":"Markdown","journal.billable":"К оплате","journal.billableYes":"К оплате","journal.billableNo":"Не к оплате","journal.billableHint":"К оплате — можно включать в счёт клиенту","journal.approx":"Тип времени","journal.approxExact":"Точное","journal.approxEstimated":"Оценочное","journal.approxHint":"Оценочное — время предложено системой или введено как примерное","journal.includeChildrenDisabledHint":"Работает только при выбранном деле/клиенте/проекте","journal.node":"Дело","journal.path":"Путь","journal.byDay":"По дням","journal.byNode":"По делам","journal.includeChildren":"Учитывать вложенные дела","journal.nodeSearch":"Поиск дела...","journal.relatedEvents":"Связанные события","journal.filterHeading":"Фильтры","journal.exportHeading":"Экспорт отчёта","journal.reset":"Сбросить","suggest.title":"Предложения на сегодня","suggest.apply":"Записать","suggest.dismiss":"Скрыть","suggest.open":"Открыть","suggest.confidence.low":"Низкая уверенность","suggest.confidence.medium":"Средняя уверенность","suggest.confidence.high":"Высокая уверенность","suggest.minutes":"мин","suggest.edit":"Изменить","suggest.noSuggestions":"Нет предложений для журнала","suggest.detectedEvents":"Что обнаружено","activity.title":"Активность","activity.empty":"Активность пока не зафиксирована","activity.perCaseEmpty":"Активность пока не зафиксирована","overview.type":"Тип","overview.section":"Раздел","overview.created":"Создано","overview.newNote":"Новая заметка","overview.addFile":"Добавить файл","overview.addAction":"Добавить действие","overview.logTime":"Записать время","overview.recentNotes":"Последние заметки","overview.recentEntries":"Последние записи","rename.title":"Переименовать","rename.emptyError":"Имя не может быть пустым","rename.invalidError":"Недопустимое имя","delete.confirmTitle":"Удаление","delete.confirmMessage":"Удалить","delete.folder":"папку","delete.file":"файл","template.optionNone":"Пустое дело","template.optional":"Шаблон (опционально)","template.none.desc":"Без шаблона, простой узел-контейнер","template.folder":"Папка","template.folder.desc":"Папка для группировки элементов внутри рабочего пространства","template.project":"Проект","template.project.desc":"Отдельный проект или задача с файлами, заметками и журналом","template.client":"Клиент","template.client.desc":"Организация или человек, для которых ведутся работы","template.document":"Документ","template.document.desc":"Документ с описанием, заметками и файлами","template.recipe":"Рецепт","template.recipe.desc":"Повторяемая процедура или инструкция","template.note":"Заметка","template.file":"Файл","template.select":"Выберите тип","mime.jpeg":"Изображение JPEG","mime.png":"Изображение PNG","mime.gif":"Изображение GIF","mime.webp":"Изображение WebP","mime.svg":"Изображение SVG","mime.bmp":"Изображение BMP","mime.tiff":"Изображение TIFF","mime.avif":"Изображение AVIF","mime.pdf":"PDF документ","mime.word":"Документ Word","mime.excel":"Таблица Excel","mime.ppt":"Презентация PowerPoint","mime.zip":"ZIP архив","mime.gzip":"GZIP архив","mime.tar":"TAR архив","mime.sevenz":"7z архив","mime.rar":"RAR архив","mime.text":"Текстовый файл","mime.html":"HTML файл","mime.css":"CSS файл","mime.js":"JavaScript файл","mime.json":"JSON файл","mime.xml":"XML файл","mime.yaml":"YAML файл","mime.binary":"Бинарный файл","mime.executable":"Исполняемый файл","mime.folder":"Папка","mime.unknown":"Неизвестно","mime.file":"Файл","error.nameEmpty":"Имя не может быть пустым","error.nameInvalid":"Недопустимое имя","error.selectCaseFirst":"Сначала выберите дело","error.vaultNotOpen":"Хранилище не открыто","delete.files":"файлов ({count})","file.namePrompt":"Введите имя файла:","file.pdfUnavailable":"Предпросмотр PDF недоступен.","file.previewUnavailable":"Предпросмотр недоступен для этого типа файлов.","case.new":"Новое дело","case.namePlaceholder":"Название дела","settings.title":"Настройки","settings.general":"Общие","settings.generalDesc":"Основные настройки интерфейса.","settings.workspace":"Рабочее пространство","settings.workspaceDesc":"Управление хранилищем данных.","settings.appearance":"Внешний вид","settings.localization":"Локализация","settings.templates":"Шаблоны","settings.plugins":"Плагины","settings.files":"Файлы","settings.activity":"Активность","settings.sync":"Синхронизация","settings.backup":"Резервные копии","settings.close":"Закрыть настройки","settings.noPlugins":"Плагины пока не установлены.","settings.openPluginsDir":"Открыть папку plugins","settings.activityStub":"Здесь будут настройки отслеживания активности.","settings.backupStub":"Здесь будут настройки резервного копирования.","settings.theme":"Тема интерфейса","settings.themeSystem":"Системная","settings.themeLight":"Светлая","settings.themeDark":"Тёмная","settings.language":"Язык интерфейса","settings.langRu":"Русский","settings.langEn":"Английский","settings.langSoon":"будет доступно позже","settings.save":"Сохранить настройки","settings.saved":"Настройки сохранены","settings.vaultPath":"Путь к рабочему пространству","settings.noVaultInfo":"Нет информации о хранилище.","settings.vaultInfo":"Информация о рабочем пространстве","settings.openVault":"Открыть папку vault","settings.changeVault":"Изменить путь","settings.checkIntegrity":"Проверить целостность","settings.templatesDesc":"Включите или выключите шаблоны создания элементов.","settings.templateEnabled":"Включён","settings.templateDisabled":"Выключен","settings.filesStub":"Здесь будут настройки файлового хранилища.","settings.syncEnabled":"Синхронизация включена","settings.syncDisabled":"Синхронизация отключена","settings.syncDesc":"Настройте подключение к серверу синхронизации.","settings.serverUrl":"URL сервера","settings.deviceName":"Имя устройства","settings.deviceId":"ID устройства","settings.lastSync":"Последняя синхронизация","settings.lastError":"Последняя ошибка","settings.pendingChanges":"Ожидающие изменения","settings.checkConnection":"Проверить подключение","settings.syncNow":"Синхронизировать сейчас","settings.reconnect":"Переподключить","settings.disconnect":"Отключить устройство","settings.resetKey":"Сбросить ключ","settings.confirmDisconnect":"Вы уверены, что хотите отключить устройство?","settings.confirmDisconnectDesc":"Синхронизация будет остановлена. Для повторного подключения потребуется логин и пароль.","settings.confirmResetKey":"Сбросить ключ синхронизации?","settings.confirmResetKeyDesc":"Текущий ключ устройства будет удалён. Потребуется переподключение.","settings.connected":"Подключено","settings.disconnected":"Не подключено","settings.notConfigured":"Не настроено","settings.error":"Ошибка","settings.revoked":"Отозвано","settings.status":"Статус","firstrun.title":"Добро пожаловать в Верстак","firstrun.desc":"Верстак хранит данные в локальном рабочем пространстве — vault.","firstrun.pathLabel":"Путь к vault","firstrun.defaultPath":"Путь по умолчанию","firstrun.browse":"Выбрать папку","firstrun.create":"Создать рабочее пространство","firstrun.quit":"Выйти","firstrun.pathExists":"Папка существует. Будет создан новый vault.","firstrun.pathHasVault":"Найден существующий vault. Будет подключён.","firstrun.pathNew":"Путь не существует. Будет создан новый vault.","firstrun.errorNoWrite":"Нет прав на запись в выбранную папку.","firstrun.creating":"Создание рабочего пространства...","firstrun.created":"Рабочее пространство создано!","recovery.title":"Рабочее пространство не найдено","recovery.expected":"Ожидался путь","recovery.choose":"Выбрать другой vault","recovery.create":"Создать новый vault","recovery.settings":"Открыть настройки","recovery.quit":"Выйти","recovery.createConfirm":"Будет создано новое пустое рабочее пространство. Старый путь в настройках будет заменён.","recovery.createConfirmTitle":"Создать новое рабочее пространство?","sync.status.connected":"Синхронизация доступна","sync.status.disconnected":"Сервер недоступен","sync.status.disabled":"Синхронизация не настроена","sync.status.syncing":"Синхронизация...","sync.status.error":"Ошибка синхронизации","sync.changes":"изменений","sync.details":"Подробнее","sync.configure":"Настроить","sync.retry":"Повторить","sync.run":"Синхронизировать","sync.running":"Синхронизация...","sync.conflictsCount":"Конфликты: {count}","sync.applyErrorsCount":"Ошибки применения: {count}","sync.pushedPulled":"Отправлено: {pushed}, получено: {pulled}","error.generic":"Произошла ошибка","error.invalidCredentials":"Неверный логин или пароль","error.accountBlocked":"Аккаунт заблокирован","error.emailNotConfirmed":"Email не подтверждён","error.tokenInvalid":"Неверный или просроченный токен","error.tokenExpired":"Срок действия токена истёк"},Hp={"nav.today":"Today","nav.inbox":"Inbox","nav.trash":"Trash","nav.activity":"Activity","nav.journal":"Journal","nav.clients":"Clients","nav.projects":"Projects","nav.recipes":"Recipes","nav.documents":"Documents","nav.archive":"Archive","nav.sections":"Sections","nav.cases":"Cases","nav.noCases":"No cases","nav.sync":"Sync","nav.syncSettings":"Sync settings","nav.syncNow":"Sync now","nav.selectPrompt":"Select a section or case","nav.brand":"Verstak","nav.system":"System","nav.workspace":"Workspace","nav.noNodes":"No nodes","nav.openFolder":"Open folder","nav.createInside":"Create inside","nav.createNode":"Create element","nav.moveToRoot":"Move to root","inbox.subtitle":"Captured materials that still need to be assigned to cases","inbox.sortByDate":"by date","inbox.sortByName":"by name","inbox.sortByType":"by type","inbox.sortAsc":"ascending","inbox.sortDesc":"descending","inbox.groupByContext":"Group by capture location","inbox.noContext":"No capture location","inbox.empty":"No unprocessed items","inbox.pasteClipboard":"Paste from clipboard","inbox.captured":"Added","inbox.clipboardEmpty":"Clipboard is empty","inbox.clipboardUnavailable":"Clipboard is unavailable","inbox.assign":"Assign","inbox.keepHere":"Attach at captured location","inbox.localEmpty":"No unprocessed materials for this case","inbox.capturedIn":"Captured in","inbox.suggestedTarget":"Target","inbox.assignTitle":"Assign material","inbox.assignTarget":"Case","inbox.assignSearchPlaceholder":"Find case","inbox.assignSearchHint":"Start typing a Case name","inbox.deleteTitle":"Delete material","inbox.deleteConfirm":'Delete "{title}" from inbox?',"capture.kind.text":"Text","capture.kind.url":"Link","capture.kind.file":"File","capture.kind.folder":"Folder","capture.kind.image":"Image","capture.source.clipboard":"Clipboard","capture.source.clipboard_button":"Clipboard button","capture.source.drop":"Drop","capture.source.paste":"Paste","capture.source.browser":"Browser","capture.source.manual":"Manual","capture.dropOverlayNode":"Will be added to Inbox for: {title}","capture.dropOverlayGlobal":"Will be added to global Inbox","trash.openFolder":"Open trash folder","trash.empty":"Trash is empty","trash.emptyTrash":"Empty trash","trash.restore":"Restore","trash.deletedNodes":"Deleted items","tab.overview":"Overview","tab.notes":"Notes","tab.files":"Files","tab.inbox":"Inbox","tab.links":"Links","tab.actions":"Actions","tab.worklog":"Work Log","tab.activity":"Activity","common.save":"Save","common.cancel":"Cancel","common.delete":"Delete","common.rename":"Rename","common.close":"Close","common.create":"Create","common.confirm":"Confirm","common.back":"← Back","common.backLabel":"Back","common.loading":"Loading...","common.error":"Error:","common.yes":"Yes","common.ok":"OK","common.copy":"Copy","common.cut":"Cut","common.paste":"Paste","common.duplicate":"Duplicate","common.run":"Run","common.test":"Test","common.all":"All","common.open":"Open","common.no":"No","common.date":"Date","common.search":"Search","common.testAgain":"Check","common.connect":"Connect","common.disconnect":"Disconnect","common.settings":"Settings","common.name":"Name","common.type":"Type","common.section":"Section","common.created":"Created","common.empty":"None","common.newName":"New name","search.placeholder":"Search Verstak...","search.noResults":"No results found","welcome.title":"Verstak","welcome.selectSection":"Select a section in the sidebar.","welcome.createCase":"Or create a new case with the + button.","welcome.addCase":"Add case","event.noteCreated":"Note created","event.noteUpdated":"Note updated","event.fileAdded":"File added","event.fileDeleted":"File deleted","event.fileRenamed":"File renamed","event.fileCopied":"File copied","event.fileMoved":"File moved","event.folderAdded":"Folder added","event.folderDeleted":"Folder deleted","event.folderRenamed":"Folder renamed","event.caseCreated":"Case created","event.caseUpdated":"Case updated","event.noteDeleted":"Note deleted","event.folderMoved":"Folder moved","event.nodeDeleted":"Node deleted","event.actionCreated":"Action created","event.actionDone":"Action completed","event.worklogAdded":"Time entry added","kind.project":"Project","kind.client":"Client","kind.document":"Document","kind.recipe":"Recipe","kind.folder":"Folder","kind.note":"Note","kind.file":"File","kind.archive":"Archive","kind.case":"Case","kind.link":"Link","kind.action":"Action","links.empty":"No links yet","links.editTitle":"Edit link","links.note":"Note","links.copyUrl":"Copy URL","links.copied":"URL copied","links.copyUnavailable":"Could not copy URL","links.deleteTitle":"Delete link","links.deleteConfirm":'Delete link "{title}"?',"action.openUrl":"Open URL","action.openFile":"Open file","action.openFolder":"Open folder","action.runCommand":"Run command","action.runScript":"Run script","action.openTerminal":"Open terminal","action.launchApp":"Launch app","action.addAction":"+ Add action","action.newAction":"New action","action.noActions":"No actions yet","action.run":"Run","action.dataUrl":"URL","action.dataPath":"Path","action.dataCommand":"Command","action.urlPlaceholder":"https://example.com","action.pathPlaceholder":"/path/to/file","action.commandPlaceholder":"command","action.namePlaceholder":"Example: Open website","note.add":"+ Add note","note.new":"New note","note.title":"Note title","note.noNotes":"No notes","note.createFirst":"Create the first note for this case.","note.placeholder":"Start writing...","note.unsavedTitle":"Unsaved changes","note.unsavedMessage":"Close the editor? All unsaved changes will be lost.","note.unsavedClose":"Close","file.addFile":"+ Add file","file.addFolder":"+ Add folder","file.newFile":"+ New file","file.addFileSimple":"Add file","file.addFolderSimple":"Add folder","file.noFiles":"No files in this folder yet","file.noFilesCase":"No files in this project yet","file.hint":"Add a file or folder to store project materials.","file.root":"Files","file.preview":"Preview","file.openExternal":"Open in external program","file.openFolder":"Open folder","file.showInExplorer":"Show in explorer","file.more":"More","file.delete":"Delete","file.ariaFolder":"Folder","file.ariaFile":"File","file.scanning":"Scanning...","file.pickSingle":"Select file","file.pickMultiple":"Select files","file.pickDirectory":"Select folder","file.importTitle":"Add to","file.importFiles":"Files:","file.importFolders":"Folders:","file.importSize":"Size:","file.importCopy":"Copy","file.importLink":"Link","file.selectCaseFirst":"Select a case before adding files","worklog.title":"Work Log","worklog.whatDone":"What was done","worklog.minutes":"Min","worklog.min":"min","worklog.log":"Log","worklog.addEntry":"Add entry","worklog.acceptSuggestion":"Accept suggestion","worklog.editEntry":"Edit entry","worklog.deleteEntry":"Delete entry","worklog.deleteConfirm":"Delete this work entry? Related events stay in activity, but their link to this entry will be removed.","worklog.date":"Date","worklog.empty":"No work logged yet","worklog.details":"Details","worklog.source":"Source","worklog.sourceSuggestion":"From suggestion","worklog.sourceSuggestionNoEvents":"From suggestion, but related events missing","worklog.sourceManual":"Manual entry","worklog.sourceUnknown":"Unknown source","worklog.suggestions":"Suggestions for today","worklog.apply":"Apply","sync.title":"Sync","sync.settings":"Sync settings","sync.status":"Status","sync.server":"Server","sync.device":"Device","sync.deviceId":"Device ID","sync.unpushed":"Unpushed","sync.lastSync":"Last sync","sync.revoked":"Revoked","sync.connected":"Connected","sync.notConnected":"Not connected","sync.disabled":"Disabled","sync.serverUrl":"Server URL","sync.serverUrlPlaceholder":"https://example.com:47732","sync.username":"Username","sync.usernamePlaceholder":"username","sync.password":"Password","sync.passwordPlaceholder":"password","sync.interval":"Auto sync (min)","sync.saveInterval":"Save interval","sync.syncNow":"Sync now","sync.disconnect":"Disconnect","sync.connect":"Connect","sync.test":"Check","sync.settingsSaved":"interval saved","today.title":"Today","today.changedCases":"Changed today","today.timeline":"Timeline for today","today.empty":"Nothing happened today yet","today.emptyHint":"Cases, notes, files, and actions you worked with today will appear here.","today.plural.case_one":"case","today.plural.case_few":"cases","today.plural.case_many":"cases","today.plural.note_one":"note","today.plural.note_few":"notes","today.plural.note_many":"notes","today.plural.file_one":"file","today.plural.file_few":"files","today.plural.file_many":"files","today.plural.event_one":"event","today.plural.event_few":"events","today.plural.event_many":"events","today.feed":"Feed","today.suggestionsTab":"Suggestions","today.inProgress":"In Progress","today.captured":"Captured","today.feedEmpty":"No events today","today.inProgressEmpty":"Nothing modified today","today.capturedEmpty":"Nothing captured today","today.feedHint":"Today's events: file changes, notes, actions and other events.","today.sortByTime":"by time","today.sortByName":"by name","today.sortByType":"by type","today.sortAsc":"ascending","today.sortDesc":"descending","journal.title":"Work Log","journal.worklogTab":"Work Log","journal.empty":"No entries for the selected period","journal.dateFrom":"From","journal.dateTo":"To","journal.filter":"Filter","journal.total":"Total","journal.exportCSV":"CSV","journal.exportMarkdown":"Markdown","journal.billable":"Billable","journal.billableYes":"Billable","journal.billableNo":"Not billable","journal.billableHint":"Billable — can be included in client invoice","journal.approx":"Time type","journal.approxExact":"Exact","journal.approxEstimated":"Estimated","journal.approxHint":"Estimated — time suggested by the system or entered as approximate","journal.includeChildrenDisabledHint":"Only works when a case/client/project is selected","journal.node":"Case","journal.path":"Path","journal.byDay":"By day","journal.byNode":"By case","journal.includeChildren":"Include subtasks","journal.nodeSearch":"Search case...","journal.relatedEvents":"Related events","journal.filterHeading":"Filters","journal.exportHeading":"Export Report","journal.reset":"Reset","suggest.title":"Suggestions","suggest.apply":"Log","suggest.dismiss":"Dismiss","suggest.open":"Open","suggest.confidence.low":"Low confidence","suggest.confidence.medium":"Medium confidence","suggest.confidence.high":"High confidence","suggest.minutes":"min","suggest.edit":"Edit","suggest.noSuggestions":"No suggestions","suggest.detectedEvents":"What was detected","activity.title":"Activity","activity.empty":"No activity recorded yet","activity.perCaseEmpty":"No activity recorded yet","overview.type":"Type","overview.section":"Section","overview.created":"Created","overview.newNote":"New note","overview.addFile":"Add file","overview.addAction":"Add action","overview.logTime":"Log time","overview.recentNotes":"Recent notes","overview.recentEntries":"Recent entries","rename.title":"Rename","rename.emptyError":"Name cannot be empty","rename.invalidError":"Invalid name","delete.confirmTitle":"Delete","delete.confirmMessage":"Delete","delete.folder":"folder","delete.file":"file","template.optionNone":"Empty case","template.optional":"Template (optional)","template.none.desc":"No template, simple container node","template.folder":"Folder","template.folder.desc":"A folder to group items inside a workspace","template.project":"Project","template.project.desc":"A distinct project or task with files, notes and work log","template.client":"Client","template.client.desc":"An organization or person for whom work is performed","template.document":"Document","template.document.desc":"A document with description, notes and files","template.recipe":"Recipe","template.recipe.desc":"A repeatable procedure or instruction","template.note":"Note","template.file":"File","template.select":"Select type","mime.jpeg":"JPEG image","mime.png":"PNG image","mime.gif":"GIF image","mime.webp":"WebP image","mime.svg":"SVG image","mime.bmp":"BMP image","mime.tiff":"TIFF image","mime.avif":"AVIF image","mime.pdf":"PDF document","mime.word":"Word document","mime.excel":"Excel spreadsheet","mime.ppt":"PowerPoint presentation","mime.zip":"ZIP archive","mime.gzip":"GZIP archive","mime.tar":"TAR archive","mime.sevenz":"7z archive","mime.rar":"RAR archive","mime.text":"Text file","mime.html":"HTML file","mime.css":"CSS file","mime.js":"JavaScript file","mime.json":"JSON file","mime.xml":"XML file","mime.yaml":"YAML file","mime.binary":"Binary file","mime.executable":"Executable file","mime.folder":"Folder","mime.unknown":"Unknown","mime.file":"File","error.nameEmpty":"Name cannot be empty","error.nameInvalid":"Invalid name","error.selectCaseFirst":"Select a case first","error.vaultNotOpen":"Vault not open","delete.files":"files ({count})","file.namePrompt":"Enter file name:","file.pdfUnavailable":"PDF preview is unavailable.","file.previewUnavailable":"Preview is unavailable for this file type.","case.new":"New case","case.namePlaceholder":"Case name","settings.title":"Settings","settings.general":"General","settings.generalDesc":"Basic interface settings.","settings.workspace":"Workspace","settings.workspaceDesc":"Manage data storage.","settings.appearance":"Appearance","settings.localization":"Localization","settings.templates":"Templates","settings.plugins":"Plugins","settings.files":"Files","settings.activity":"Activity","settings.sync":"Sync","settings.backup":"Backups","settings.close":"Close settings","settings.noPlugins":"No plugins installed yet.","settings.openPluginsDir":"Open plugins folder","settings.activityStub":"Activity tracking settings will be here.","settings.backupStub":"Backup settings will be here.","settings.theme":"Interface theme","settings.themeSystem":"System","settings.themeLight":"Light","settings.themeDark":"Dark","settings.language":"Interface language","settings.langRu":"Russian","settings.langEn":"English","settings.langSoon":"coming soon","settings.save":"Save settings","settings.saved":"Settings saved","settings.vaultPath":"Workspace path","settings.noVaultInfo":"No workspace information.","settings.vaultInfo":"Workspace information","settings.openVault":"Open vault folder","settings.changeVault":"Change path","settings.checkIntegrity":"Check integrity","settings.templatesDesc":"Enable or disable templates for creating items.","settings.templateEnabled":"Enabled","settings.templateDisabled":"Disabled","settings.filesStub":"File storage settings will be here.","settings.syncEnabled":"Sync enabled","settings.syncDisabled":"Sync disabled","settings.syncDesc":"Configure connection to the sync server.","settings.serverUrl":"Server URL","settings.deviceName":"Device name","settings.deviceId":"Device ID","settings.lastSync":"Last sync","settings.lastError":"Last error","settings.pendingChanges":"Pending changes","settings.checkConnection":"Check connection","settings.syncNow":"Sync now","settings.reconnect":"Reconnect","settings.disconnect":"Disconnect device","settings.resetKey":"Reset key","settings.confirmDisconnect":"Are you sure you want to disconnect this device?","settings.confirmDisconnectDesc":"Sync will stop. Reconnecting will require username and password.","settings.confirmResetKey":"Reset sync key?","settings.confirmResetKeyDesc":"The current device key will be removed. Reconnection will be required.","settings.connected":"Connected","settings.disconnected":"Disconnected","settings.notConfigured":"Not configured","settings.error":"Error","settings.revoked":"Revoked","settings.status":"Status","firstrun.title":"Welcome to Verstak","firstrun.desc":"Verstak stores data in a local workspace called a vault.","firstrun.pathLabel":"Vault path","firstrun.defaultPath":"Default path","firstrun.browse":"Choose folder","firstrun.create":"Create workspace","firstrun.quit":"Quit","firstrun.pathExists":"The folder exists. A new vault will be created.","firstrun.pathHasVault":"Existing vault found. It will be connected.","firstrun.pathNew":"The path does not exist. A new vault will be created.","firstrun.errorNoWrite":"No write permission for the selected folder.","firstrun.creating":"Creating workspace...","firstrun.created":"Workspace created!","recovery.title":"Workspace not found","recovery.expected":"Expected path","recovery.choose":"Choose another vault","recovery.create":"Create new vault","recovery.settings":"Open settings","recovery.quit":"Quit","recovery.createConfirm":"A new empty workspace will be created. The old path in settings will be replaced.","recovery.createConfirmTitle":"Create a new workspace?","sync.status.connected":"Sync available","sync.status.disconnected":"Server unavailable","sync.status.disabled":"Sync is not configured","sync.status.syncing":"Syncing...","sync.status.error":"Sync error","sync.changes":"changes","sync.details":"Details","sync.configure":"Configure","sync.retry":"Retry","sync.run":"Sync","sync.running":"Syncing...","sync.conflictsCount":"Conflicts: {count}","sync.applyErrorsCount":"Apply errors: {count}","sync.pushedPulled":"Pushed: {pushed}, pulled: {pulled}","error.generic":"An error occurred","error.invalidCredentials":"Invalid username or password","error.accountBlocked":"Account blocked","error.emailNotConfirmed":"Email not confirmed","error.tokenInvalid":"Invalid or expired token","error.tokenExpired":"Token expired"},js={ru:Bp,en:Hp};let Ls="ru";function v(l,e){var i;const t=js[Ls];let n=t==null?void 0:t[l];if(n==null&&Ls!=="ru"&&(n=(i=js.ru)==null?void 0:i[l]),n==null&&(n=l),e!=null)for(const[o,r]of Object.entries(e))n=n.replace(`{${o}}`,String(r));return n}function wn(l){if(l==null||l<0)return"—";if(l===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(l)/Math.log(1024)),e.length-1),n=l/Math.pow(1024,t);return(t===0?n.toFixed(0):n.toFixed(1))+" "+e[t]}const di={"image/jpeg":v("mime.jpeg"),"image/png":v("mime.png"),"image/gif":v("mime.gif"),"image/webp":v("mime.webp"),"image/svg+xml":v("mime.svg"),"image/bmp":v("mime.bmp"),"image/tiff":v("mime.tiff"),"image/avif":v("mime.avif"),"application/pdf":v("mime.pdf"),"application/msword":v("mime.word"),"application/vnd.openxmlformats-officedocument.wordprocessingml.document":v("mime.word"),"application/vnd.ms-excel":v("mime.excel"),"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":v("mime.excel"),"application/vnd.ms-powerpoint":v("mime.ppt"),"application/vnd.openxmlformats-officedocument.presentationml.presentation":v("mime.ppt"),"application/zip":v("mime.zip"),"application/gzip":v("mime.gzip"),"application/x-tar":v("mime.tar"),"application/x-7z-compressed":v("mime.sevenz"),"application/x-rar-compressed":v("mime.rar"),"text/plain":v("mime.text"),"text/html":v("mime.html"),"text/css":v("mime.css"),"text/javascript":v("mime.js"),"application/json":v("mime.json"),"application/xml":v("mime.xml"),"application/x-yaml":v("mime.yaml"),"application/octet-stream":v("mime.binary"),"application/x-msdos-program":v("mime.executable"),"inode/directory":v("mime.folder")};function Ps(l){return l?di[l]||l:v("mime.unknown")}function Wp(l){if(l.type==="folder")return v("mime.folder");const e=(l.mime||"").toLowerCase();if(di[e])return di[e];const n=(l.name||"").toLowerCase().split(".").pop();return n?n.toUpperCase():v("mime.file")}function Oc(l){if(l.type==="folder")return"folder";const e=(l.mime||"").toLowerCase();if(e.startsWith("image/"))return"image";if(e.startsWith("video/"))return"video";if(e.startsWith("audio/"))return"audio";if(e.startsWith("text/"))return"text";if(e.includes("pdf"))return"pdf";if(e.includes("word")||e.includes("document"))return"document";if(e.includes("spreadsheet")||e.includes("excel"))return"spreadsheet";if(e.includes("presentation")||e.includes("powerpoint"))return"presentation";if(e.includes("zip")||e.includes("tar")||e.includes("gzip")||e.includes("rar")||e.includes("7z")||e.includes("compress"))return"archive";if(e.includes("json")||e.includes("xml")||e.includes("yaml")||e.includes("javascript")||e.includes("css")||e.includes("html"))return"code";const n=(l.name||"").toLowerCase().split(".").pop();return["js","ts","jsx","tsx","vue","svelte","py","rs","go","c","cpp","h","hpp","java","kt","swift","rb","php","pl","sh","bash","zsh","fish","yml","yaml","json","xml","toml","ini","cfg","conf","md","markdown","css","scss","less","sass","sql","graphql","proto","gradle","cmake","makefile","dockerfile","env","gitignore"].includes(n)?"code":"generic"}const Bc=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],Hc=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],Wc=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],Vc=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function si(l){if(l.type==="folder")return!1;const e=(l.mime||"").toLowerCase(),n=(l.name||"").toLowerCase().split(".").pop();return!!(Bc.includes(e)||Vc.includes(n)||e.includes("pdf")||Hc.includes(e)||Wc.includes(n))}function Uc(l){const e=(l.mime||"").toLowerCase(),n=(l.name||"").toLowerCase().split(".").pop();return Bc.includes(e)||Vc.includes(n)}function Kc(l){const e=(l.mime||"").toLowerCase(),n=(l.name||"").toLowerCase().split(".").pop();return Hc.includes(e)||Wc.includes(n)&&n!=="md"&&n!=="markdown"}function Gc(l){return(l.mime||"").toLowerCase().includes("pdf")}function Jc(l){const e=(l.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function Vp(l){return Uc(l)||Gc(l)}function Up(l){return Kc(l)||Jc(l)}const{window:Kp}=mi;function Gp(l){let e,t,n,i=wn(l[0].size)+"",o;return{c(){e=u("span"),e.textContent="·",t=k(),n=u("span"),o=F(i),s(e,"class","meta-sep svelte-1skuef2")},m(r,c){S(r,e,c),S(r,t,c),S(r,n,c),a(n,o)},p(r,c){c[0]&1&&i!==(i=wn(r[0].size)+"")&&K(o,i)},d(r){r&&(y(e),y(t),y(n))}}}function Jp(l){let e,t,n,i,o;return{c(){e=u("button"),e.innerHTML='',t=k(),n=u("button"),n.innerHTML='',s(e,"class","action-btn svelte-1skuef2"),s(e,"title",v("file.openFolder")),s(e,"aria-label",v("file.openFolder")),s(n,"class","action-btn svelte-1skuef2"),s(n,"title",v("file.showInExplorer")),s(n,"aria-label",v("file.showInExplorer"))},m(r,c){S(r,e,c),S(r,t,c),S(r,n,c),i||(o=[L(e,"click",Ie(l[30])),L(n,"click",Ie(l[11]))],i=!0)},p:te,d(r){r&&(y(e),y(t),y(n)),i=!1,ge(o)}}}function qp(l){let e,t,n,i,o,r,c;return{c(){e=u("button"),e.innerHTML='',t=k(),n=u("button"),n.innerHTML='',i=k(),o=u("button"),o.innerHTML='',s(e,"class","action-btn svelte-1skuef2"),s(e,"title",v("file.preview")),s(e,"aria-label",v("file.preview")),s(n,"class","action-btn svelte-1skuef2"),s(n,"title",v("file.openExternal")),s(n,"aria-label",v("file.openExternal")),s(o,"class","action-btn svelte-1skuef2"),s(o,"title",v("file.showInExplorer")),s(o,"aria-label",v("file.showInExplorer"))},m(f,p){S(f,e,p),S(f,t,p),S(f,n,p),S(f,i,p),S(f,o,p),r||(c=[L(e,"click",Ie(l[29])),L(n,"click",Ie(l[10])),L(o,"click",Ie(l[11]))],r=!0)},p:te,d(f){f&&(y(e),y(t),y(n),y(i),y(o)),r=!1,ge(c)}}}function Fs(l){let e,t,n,i,o,r,c,f,p=v("common.open")+"",_,m,g,h,b,w,C,T,E=v("file.openExternal")+"",D,N,A,P,I,M,z=v("file.showInExplorer")+"",B,W,H,U,q,Y,Q,O,V,R=v("common.rename")+"",X,J,G,x,ee,le,ce,pe=v("common.duplicate")+"",Ee,ze,_e,$,se,Ce,De,we,Le,Qe=v("common.cut")+"",Ae,$e,Re,Pe,Ne,Ge,Se,je=v("common.copy")+"",Me,ft,Z,ye,ve,ke,Je,qe,Ue,tt=v("common.delete")+"",Ye,Oe,et;return{c(){e=u("div"),t=k(),n=u("div"),i=u("button"),o=ie("svg"),r=ie("path"),c=ie("circle"),f=k(),_=F(p),m=k(),g=u("button"),h=ie("svg"),b=ie("path"),w=ie("polyline"),C=ie("line"),T=k(),D=F(E),N=k(),A=u("button"),P=ie("svg"),I=ie("path"),M=k(),B=F(z),W=k(),H=u("div"),U=k(),q=u("button"),Y=ie("svg"),Q=ie("path"),O=ie("path"),V=k(),X=F(R),J=k(),G=u("button"),x=ie("svg"),ee=ie("rect"),le=ie("path"),ce=k(),Ee=F(pe),ze=k(),_e=u("button"),$=ie("svg"),se=ie("circle"),Ce=ie("circle"),De=ie("line"),we=ie("line"),Le=k(),Ae=F(Qe),$e=k(),Re=u("button"),Pe=ie("svg"),Ne=ie("rect"),Ge=ie("path"),Se=k(),Me=F(je),ft=k(),Z=u("div"),ye=k(),ve=u("button"),ke=ie("svg"),Je=ie("polyline"),qe=ie("path"),Ue=k(),Ye=F(tt),s(e,"class","menu-backdrop svelte-1skuef2"),s(e,"role","presentation"),s(r,"d","M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"),s(c,"cx","12"),s(c,"cy","12"),s(c,"r","3"),s(o,"width","14"),s(o,"height","14"),s(o,"viewBox","0 0 24 24"),s(o,"fill","none"),s(o,"stroke","currentColor"),s(o,"stroke-width","2"),s(o,"stroke-linecap","round"),s(o,"stroke-linejoin","round"),s(i,"class","menu-item svelte-1skuef2"),s(i,"role","menuitem"),s(b,"d","M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"),s(w,"points","15 3 21 3 21 9"),s(C,"x1","10"),s(C,"y1","14"),s(C,"x2","21"),s(C,"y2","3"),s(h,"width","14"),s(h,"height","14"),s(h,"viewBox","0 0 24 24"),s(h,"fill","none"),s(h,"stroke","currentColor"),s(h,"stroke-width","2"),s(h,"stroke-linecap","round"),s(h,"stroke-linejoin","round"),s(g,"class","menu-item svelte-1skuef2"),s(g,"role","menuitem"),s(I,"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"),s(P,"width","14"),s(P,"height","14"),s(P,"viewBox","0 0 24 24"),s(P,"fill","none"),s(P,"stroke","currentColor"),s(P,"stroke-width","2"),s(P,"stroke-linecap","round"),s(P,"stroke-linejoin","round"),s(A,"class","menu-item svelte-1skuef2"),s(A,"role","menuitem"),s(H,"class","menu-sep svelte-1skuef2"),s(Q,"d","M12 20h9"),s(O,"d","M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"),s(Y,"width","14"),s(Y,"height","14"),s(Y,"viewBox","0 0 24 24"),s(Y,"fill","none"),s(Y,"stroke","currentColor"),s(Y,"stroke-width","2"),s(Y,"stroke-linecap","round"),s(Y,"stroke-linejoin","round"),s(q,"class","menu-item svelte-1skuef2"),s(q,"role","menuitem"),s(ee,"x","9"),s(ee,"y","9"),s(ee,"width","13"),s(ee,"height","13"),s(ee,"rx","2"),s(ee,"ry","2"),s(le,"d","M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"),s(x,"width","14"),s(x,"height","14"),s(x,"viewBox","0 0 24 24"),s(x,"fill","none"),s(x,"stroke","currentColor"),s(x,"stroke-width","2"),s(x,"stroke-linecap","round"),s(x,"stroke-linejoin","round"),s(G,"class","menu-item svelte-1skuef2"),s(G,"role","menuitem"),s(se,"cx","6"),s(se,"cy","6"),s(se,"r","3"),s(Ce,"cx","6"),s(Ce,"cy","18"),s(Ce,"r","3"),s(De,"x1","20"),s(De,"y1","4"),s(De,"x2","8.12"),s(De,"y2","15.88"),s(we,"x1","8.12"),s(we,"y1","8.12"),s(we,"x2","20"),s(we,"y2","20"),s($,"width","14"),s($,"height","14"),s($,"viewBox","0 0 24 24"),s($,"fill","none"),s($,"stroke","currentColor"),s($,"stroke-width","2"),s($,"stroke-linecap","round"),s($,"stroke-linejoin","round"),s(_e,"class","menu-item svelte-1skuef2"),s(_e,"role","menuitem"),s(Ne,"x","9"),s(Ne,"y","9"),s(Ne,"width","13"),s(Ne,"height","13"),s(Ne,"rx","2"),s(Ne,"ry","2"),s(Ge,"d","M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"),s(Pe,"width","14"),s(Pe,"height","14"),s(Pe,"viewBox","0 0 24 24"),s(Pe,"fill","none"),s(Pe,"stroke","currentColor"),s(Pe,"stroke-width","2"),s(Pe,"stroke-linecap","round"),s(Pe,"stroke-linejoin","round"),s(Re,"class","menu-item svelte-1skuef2"),s(Re,"role","menuitem"),s(Z,"class","menu-sep svelte-1skuef2"),s(Je,"points","3 6 5 6 21 6"),s(qe,"d","M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"),s(ke,"width","14"),s(ke,"height","14"),s(ke,"viewBox","0 0 24 24"),s(ke,"fill","none"),s(ke,"stroke","currentColor"),s(ke,"stroke-width","2"),s(ke,"stroke-linecap","round"),s(ke,"stroke-linejoin","round"),s(ve,"class","menu-item menu-item-danger svelte-1skuef2"),s(ve,"role","menuitem"),s(n,"class","menu svelte-1skuef2"),kt(n,"left",l[3]+"px"),kt(n,"top",l[4]+"px"),kt(n,"position","fixed"),s(n,"role","menu"),s(n,"tabindex","-1")},m(re,he){S(re,e,he),S(re,t,he),S(re,n,he),a(n,i),a(i,o),a(o,r),a(o,c),a(i,f),a(i,_),a(n,m),a(n,g),a(g,h),a(h,b),a(h,w),a(h,C),a(g,T),a(g,D),a(n,N),a(n,A),a(A,P),a(P,I),a(A,M),a(A,B),a(n,W),a(n,H),a(n,U),a(n,q),a(q,Y),a(Y,Q),a(Y,O),a(q,V),a(q,X),a(n,J),a(n,G),a(G,x),a(x,ee),a(x,le),a(G,ce),a(G,Ee),a(n,ze),a(n,_e),a(_e,$),a($,se),a($,Ce),a($,De),a($,we),a(_e,Le),a(_e,Ae),a(n,$e),a(n,Re),a(Re,Pe),a(Pe,Ne),a(Pe,Ge),a(Re,Se),a(Re,Me),a(n,ft),a(n,Z),a(n,ye),a(n,ve),a(ve,ke),a(ke,Je),a(ke,qe),a(ve,Ue),a(ve,Ye),Oe||(et=[L(e,"click",Ie(l[19])),L(i,"click",l[17]),L(g,"click",l[10]),L(A,"click",l[11]),L(q,"click",l[13]),L(G,"click",l[14]),L(_e,"click",l[15]),L(Re,"click",l[16]),L(ve,"click",l[12]),L(n,"click",Ie(l[28])),L(n,"keydown",l[31])],Oe=!0)},p(re,he){he[0]&8&&kt(n,"left",re[3]+"px"),he[0]&16&&kt(n,"top",re[4]+"px")},d(re){re&&(y(e),y(t),y(n)),Oe=!1,ge(et)}}}function Yp(l){let e,t,n,i,o,r,c=l[0].name+"",f,p,_,m,g,h,b,w,C,T,E,D,N,A,P,I,M,z,B,W,H,U;n=new Rc({props:{kind:l[6],size:22}});let q=!l[7]&&Gp(l);function Y(R,X){return R[7]?Jp:qp}let O=Y(l)(l),V=l[2]&&Fs(l);return{c(){e=u("div"),t=u("div"),Ve(n.$$.fragment),i=k(),o=u("div"),r=u("div"),f=F(c),_=k(),m=u("div"),g=u("span"),g.textContent=`${l[8]}`,h=k(),q&&q.c(),b=k(),w=u("div"),O.c(),C=k(),T=u("button"),E=ie("svg"),D=ie("circle"),N=ie("circle"),A=ie("circle"),P=k(),I=u("button"),I.innerHTML='',z=k(),V&&V.c(),B=ot(),s(t,"class","file-row-icon svelte-1skuef2"),s(r,"class","file-row-name svelte-1skuef2"),s(r,"title",p=l[0].name),s(m,"class","file-row-meta svelte-1skuef2"),s(o,"class","file-row-body svelte-1skuef2"),s(D,"cx","12"),s(D,"cy","5"),s(D,"r","2"),s(N,"cx","12"),s(N,"cy","12"),s(N,"r","2"),s(A,"cx","12"),s(A,"cy","19"),s(A,"r","2"),s(E,"width","16"),s(E,"height","16"),s(E,"viewBox","0 0 24 24"),s(E,"fill","currentColor"),s(T,"class","action-btn svelte-1skuef2"),s(T,"title",v("file.more")),s(T,"aria-label",v("file.more")),s(T,"aria-expanded",l[2]),s(I,"class","action-btn action-btn-danger svelte-1skuef2"),s(I,"title",v("common.delete")),s(I,"aria-label",v("common.delete")),s(w,"class","file-row-actions svelte-1skuef2"),s(e,"class","file-row svelte-1skuef2"),s(e,"role","button"),s(e,"tabindex","0"),s(e,"draggable","true"),s(e,"aria-label",M=l[7]?v("file.ariaFolder")+" "+l[0].name:v("file.ariaFile")+" "+l[0].name),ae(e,"file-row--selected",l[1])},m(R,X){S(R,e,X),a(e,t),He(n,t,null),a(e,i),a(e,o),a(o,r),a(r,f),a(o,_),a(o,m),a(m,g),a(m,h),q&&q.m(m,null),a(e,b),a(e,w),O.m(w,null),a(w,C),a(w,T),a(T,E),a(E,D),a(E,N),a(E,A),a(w,P),a(w,I),S(R,z,X),V&&V.m(R,X),S(R,B,X),W=!0,H||(U=[L(Kp,"click",l[19]),L(T,"click",Ie(l[18])),L(I,"click",Ie(l[12])),L(e,"click",l[9]),L(e,"keydown",l[24]),L(e,"contextmenu",l[23]),L(e,"dragstart",l[20]),L(e,"dragover",l[21]),L(e,"drop",l[22])],H=!0)},p(R,X){(!W||X[0]&1)&&c!==(c=R[0].name+"")&&K(f,c),(!W||X[0]&1&&p!==(p=R[0].name))&&s(r,"title",p),R[7]||q.p(R,X),O.p(R,X),(!W||X[0]&4)&&s(T,"aria-expanded",R[2]),(!W||X[0]&1&&M!==(M=R[7]?v("file.ariaFolder")+" "+R[0].name:v("file.ariaFile")+" "+R[0].name))&&s(e,"aria-label",M),(!W||X[0]&2)&&ae(e,"file-row--selected",R[1]),R[2]?V?V.p(R,X):(V=Fs(R),V.c(),V.m(B.parentNode,B)):V&&(V.d(1),V=null)},i(R){W||(fe(n.$$.fragment,R),W=!0)},o(R){me(n.$$.fragment,R),W=!1},d(R){R&&(y(e),y(z),y(B)),We(n),q&&q.d(),O.d(),V&&V.d(R),H=!1,ge(U)}}}function Qp(l,e,t){let{item:n}=e,{selected:i=!1}=e,{onDragStart:o}=e,{onDragOver:r}=e,{onDrop:c}=e;const f=Jl(),p=Oc(n),_=n.type==="folder",m=Wp(n);let g=!1,h=0,b=0,w=null;function C(X){X.ctrlKey||X.metaKey?f("toggleSelect",n.id):X.shiftKey?f("rangeSelect",n.id):w?(clearTimeout(w),w=null,_?f("navigate",n.id):f("preview",n)):w=setTimeout(()=>{w=null,f("selectOne",n.id)},250)}function T(){f("openExternal",n.fileId)}function E(){t(2,g=!1),f("showInFolder",n.nodeId||n.id)}function D(){t(2,g=!1),f("delete",{id:n.id,type:n.type})}function N(){t(2,g=!1),f("rename",{id:n.id,name:n.name})}function A(){t(2,g=!1),f("duplicate",n.id)}function P(){t(2,g=!1),f("cut",n.id)}function I(){t(2,g=!1),f("copy",n.id)}function M(){t(2,g=!1),_?f("navigate",n.id):f("preview",n)}function z(){t(2,g=!g)}function B(){t(2,g=!1)}function W(X){o&&o(X,n.id)}function H(X){r&&_&&r(X,n.id)}function U(X){c&&_&&c(X,n.id)}function q(X){X.preventDefault(),t(3,h=Math.min(X.clientX,window.innerWidth-240)),t(4,b=Math.min(X.clientY,window.innerHeight-320)),t(2,g=!0)}function Y(X){(X.key==="Enter"||X.key===" ")&&(X.preventDefault(),C(X))}function Q(X){Mc.call(this,l,X)}const O=()=>f("preview",n),V=()=>f("navigate",n.id),R=X=>{X.key==="Escape"&&(X.stopPropagation(),B())};return l.$$set=X=>{"item"in X&&t(0,n=X.item),"selected"in X&&t(1,i=X.selected),"onDragStart"in X&&t(25,o=X.onDragStart),"onDragOver"in X&&t(26,r=X.onDragOver),"onDrop"in X&&t(27,c=X.onDrop)},[n,i,g,h,b,f,p,_,m,C,T,E,D,N,A,P,I,M,z,B,W,H,U,q,Y,o,r,c,Q,O,V,R]}class Xp extends xe{constructor(e){super(),Ze(this,e,Qp,Yp,Xe,{item:0,selected:1,onDragStart:25,onDragOver:26,onDrop:27},null,[-1,-1])}}function zs(l,e,t){const n=l.slice();return n[4]=e[t],n[6]=t,n}function Zp(l){let e;return{c(){e=u("span"),e.textContent="/",s(e,"class","sep svelte-csi2lb")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function xp(l){let e,t=l[4].name+"",n,i,o;function r(){return l[2](l[6])}return{c(){e=u("button"),n=F(t),s(e,"class","crumb crumb--link svelte-csi2lb")},m(c,f){S(c,e,f),a(e,n),i||(o=L(e,"click",r),i=!0)},p(c,f){l=c,f&1&&t!==(t=l[4].name+"")&&K(n,t)},d(c){c&&y(e),i=!1,o()}}}function $p(l){let e,t=l[4].name+"",n;return{c(){e=u("span"),n=F(t),s(e,"class","crumb crumb--current svelte-csi2lb")},m(i,o){S(i,e,o),a(e,n)},p(i,o){o&1&&t!==(t=i[4].name+"")&&K(n,t)},d(i){i&&y(e)}}}function Rs(l){let e,t,n=l[6]>0&&Zp();function i(c,f){return c[6]===c[0].length-1?$p:xp}let o=i(l),r=o(l);return{c(){n&&n.c(),e=k(),r.c(),t=ot()},m(c,f){n&&n.m(c,f),S(c,e,f),r.m(c,f),S(c,t,f)},p(c,f){o===(o=i(c))&&r?r.p(c,f):(r.d(1),r=o(c),r&&(r.c(),r.m(t.parentNode,t)))},d(c){c&&(y(e),y(t)),n&&n.d(c),r.d(c)}}}function em(l){let e,t=de(l[0]),n=[];for(let i=0;io(c);return l.$$set=c=>{"crumbs"in c&&t(0,n=c.crumbs)},[n,o,r]}class qc extends xe{constructor(e){super(),Ze(this,e,tm,em,Xe,{crumbs:0})}}function lm(l){let e,t,n,i,o,r;return{c(){e=u("div"),t=u("p"),t.textContent=`${v("file.previewUnavailable")}`,n=k(),i=u("button"),i.textContent=`${v("file.openExternal")}`,s(i,"class","btn btn-sm svelte-1cw3u0m"),s(e,"class","preview-status svelte-1cw3u0m")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),o||(r=L(i,"click",l[9]),o=!0)},p:te,d(c){c&&y(e),o=!1,r()}}}function nm(l){let e,t;function n(r,c){return c&2&&(e=null),e==null&&(e=!!(r[1]&&r[1].startsWith("data:"))),e?cm:am}let i=n(l,-1),o=i(l);return{c(){o.c(),t=ot()},m(r,c){o.m(r,c),S(r,t,c)},p(r,c){i===(i=n(r,c))&&o?o.p(r,c):(o.d(1),o=i(r),o&&(o.c(),o.m(t.parentNode,t)))},d(r){r&&y(t),o.d(r)}}}function im(l){let e,t,n;return{c(){e=u("pre"),t=u("code"),n=F(l[1]),s(e,"class","preview-text svelte-1cw3u0m")},m(i,o){S(i,e,o),a(e,t),a(t,n)},p(i,o){o&2&&K(n,i[1])},d(i){i&&y(e)}}}function sm(l){let e,t,n,i;return{c(){e=u("div"),t=u("img"),El(t.src,n=l[1])||s(t,"src",n),s(t,"alt",i=l[0].name),s(t,"class","preview-image svelte-1cw3u0m"),s(e,"class","preview-image-container svelte-1cw3u0m")},m(o,r){S(o,e,r),a(e,t)},p(o,r){r&2&&!El(t.src,n=o[1])&&s(t,"src",n),r&1&&i!==(i=o[0].name)&&s(t,"alt",i)},d(o){o&&y(e)}}}function om(l){let e,t,n,i,o,r,c;return{c(){e=u("div"),t=u("p"),n=F(l[3]),i=k(),o=u("button"),o.textContent=`${v("file.openExternal")}`,s(o,"class","btn btn-sm svelte-1cw3u0m"),s(e,"class","preview-status svelte-1cw3u0m")},m(f,p){S(f,e,p),a(e,t),a(t,n),a(e,i),a(e,o),r||(c=L(o,"click",l[9]),r=!0)},p(f,p){p&8&&K(n,f[3])},d(f){f&&y(e),r=!1,c()}}}function rm(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${v("common.loading")}`,s(e,"class","preview-status svelte-1cw3u0m")},m(n,i){S(n,e,i),a(e,t)},p:te,d(n){n&&y(e)}}}function am(l){let e,t,n,i,o,r;return{c(){e=u("div"),t=u("p"),t.textContent=`${v("file.pdfUnavailable")}`,n=k(),i=u("button"),i.textContent=`${v("file.openExternal")}`,s(i,"class","btn btn-sm svelte-1cw3u0m"),s(e,"class","preview-status svelte-1cw3u0m")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),o||(r=L(i,"click",l[9]),o=!0)},p:te,d(c){c&&y(e),o=!1,r()}}}function cm(l){let e,t,n;return{c(){e=u("div"),t=u("embed"),El(t.src,n=l[1])||s(t,"src",n),s(t,"type","application/pdf"),s(t,"class","preview-pdf svelte-1cw3u0m"),s(e,"class","preview-pdf-container svelte-1cw3u0m")},m(i,o){S(i,e,o),a(e,t)},p(i,o){o&2&&!El(t.src,n=i[1])&&s(t,"src",n)},d(i){i&&y(e)}}}function um(l){let e,t,n,i,o,r,c,f=l[0].name+"",p,_,m,g,h=wn(l[0].size)+"",b,w,C=Ps(l[0].mime)+"",T,E,D,N,A,P,I,M,z,B,W;o=new Rc({props:{kind:l[8],size:18}});function H(Y,Q){return Y[2]?rm:Y[3]?om:Y[6]&&Y[1]?sm:Y[5]&&Y[1]?im:Y[4]?nm:lm}let U=H(l),q=U(l);return{c(){e=u("div"),t=u("div"),n=u("header"),i=u("div"),Ve(o.$$.fragment),r=k(),c=u("span"),p=F(f),m=k(),g=u("div"),b=F(h),w=F(" · "),T=F(C),E=k(),D=u("div"),N=u("button"),N.innerHTML='',A=k(),P=u("button"),P.innerHTML='',I=k(),M=u("div"),q.c(),s(c,"class","preview-name svelte-1cw3u0m"),s(c,"title",_=l[0].name),s(i,"class","preview-title svelte-1cw3u0m"),s(g,"class","preview-meta svelte-1cw3u0m"),s(N,"class","action-btn svelte-1cw3u0m"),s(N,"title",v("file.openExternal")),s(N,"aria-label",v("file.openExternal")),s(P,"class","action-btn action-btn-close svelte-1cw3u0m"),s(P,"title","Close"),s(P,"aria-label","Close preview"),s(D,"class","preview-actions svelte-1cw3u0m"),s(n,"class","preview-header svelte-1cw3u0m"),s(M,"class","preview-body svelte-1cw3u0m"),s(t,"class","modal svelte-1cw3u0m"),s(e,"class","overlay svelte-1cw3u0m"),s(e,"role","presentation")},m(Y,Q){S(Y,e,Q),a(e,t),a(t,n),a(n,i),He(o,i,null),a(i,r),a(i,c),a(c,p),a(n,m),a(n,g),a(g,b),a(g,w),a(g,T),a(n,E),a(n,D),a(D,N),a(D,A),a(D,P),a(t,I),a(t,M),q.m(M,null),z=!0,B||(W=[L(N,"click",l[9]),L(P,"click",l[10]),L(e,"click",Ct(l[11])),L(e,"keydown",l[12])],B=!0)},p(Y,[Q]){(!z||Q&1)&&f!==(f=Y[0].name+"")&&K(p,f),(!z||Q&1&&_!==(_=Y[0].name))&&s(c,"title",_),(!z||Q&1)&&h!==(h=wn(Y[0].size)+"")&&K(b,h),(!z||Q&1)&&C!==(C=Ps(Y[0].mime)+"")&&K(T,C),U===(U=H(Y))&&q?q.p(Y,Q):(q.d(1),q=U(Y),q&&(q.c(),q.m(M,null)))},i(Y){z||(fe(o.$$.fragment,Y),z=!0)},o(Y){me(o.$$.fragment,Y),z=!1},d(Y){Y&&y(e),We(o),q.d(),B=!1,ge(W)}}}function fm(l,e,t){let n,i,o,{item:r}=e,{content:c=""}=e,{loading:f=!1}=e,{error:p=""}=e;const _=Jl(),m=Oc(r);function g(T){T.key==="Escape"&&_("close")}function h(){_("openExternal",r.fileId)}Kl(()=>{window.addEventListener("keydown",g)}),Gl(()=>{window.removeEventListener("keydown",g)});const b=()=>_("close"),w=()=>_("close"),C=T=>{T.key==="Escape"&&(T.preventDefault(),_("close"))};return l.$$set=T=>{"item"in T&&t(0,r=T.item),"content"in T&&t(1,c=T.content),"loading"in T&&t(2,f=T.loading),"error"in T&&t(3,p=T.error)},l.$$.update=()=>{l.$$.dirty&3&&t(6,n=Uc(r)&&c&&c.startsWith("data:")),l.$$.dirty&1&&t(5,i=Kc(r)||Jc(r)),l.$$.dirty&1&&t(4,o=Gc(r))},[r,c,f,p,o,i,n,_,m,h,b,w,C]}class dm extends xe{constructor(e){super(),Ze(this,e,fm,um,Xe,{item:0,content:1,loading:2,error:3})}}function pm(l){let e,t,n,i,o,r,c,f,p,_,m,g,h,b,w,C,T;return{c(){e=u("div"),t=u("div"),n=u("h3"),i=F(l[0]),o=k(),r=u("p"),c=F(l[1]),f=k(),p=u("div"),_=u("button"),m=F(l[2]),h=k(),b=u("button"),w=F(l[3]),s(n,"class","svelte-1fv6yyk"),s(r,"class","message svelte-1fv6yyk"),s(_,"class",g="btn "+(l[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk"),s(b,"class","btn svelte-1fv6yyk"),s(p,"class","actions svelte-1fv6yyk"),s(t,"class","modal svelte-1fv6yyk"),s(e,"class","overlay svelte-1fv6yyk"),s(e,"role","presentation")},m(E,D){S(E,e,D),a(e,t),a(t,n),a(n,i),a(t,o),a(t,r),a(r,c),a(t,f),a(t,p),a(p,_),a(_,m),a(p,h),a(p,b),a(b,w),C||(T=[L(_,"click",l[6]),L(b,"click",l[7]),L(e,"click",Ct(l[8])),L(e,"keydown",l[9])],C=!0)},p(E,[D]){D&1&&K(i,E[0]),D&2&&K(c,E[1]),D&4&&K(m,E[2]),D&16&&g!==(g="btn "+(E[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk")&&s(_,"class",g),D&8&&K(w,E[3])},i:te,o:te,d(E){E&&y(e),C=!1,ge(T)}}}function mm(l,e,t){let{title:n=v("common.confirm")}=e,{message:i=""}=e,{confirmText:o=v("common.delete")}=e,{cancelText:r=v("common.cancel")}=e,{danger:c=!1}=e;const f=Jl(),p=()=>f("confirm"),_=()=>f("cancel"),m=()=>f("cancel"),g=h=>{h.key==="Escape"&&(h.preventDefault(),f("cancel"))};return l.$$set=h=>{"title"in h&&t(0,n=h.title),"message"in h&&t(1,i=h.message),"confirmText"in h&&t(2,o=h.confirmText),"cancelText"in h&&t(3,r=h.cancelText),"danger"in h&&t(4,c=h.danger)},[n,i,o,r,c,f,p,_,m,g]}class gm extends xe{constructor(e){super(),Ze(this,e,mm,pm,Xe,{title:0,message:1,confirmText:2,cancelText:3,danger:4})}}function _m(l){let e,t,n;return{c(){e=ie("circle"),t=ie("line"),n=ie("line"),s(e,"cx","12"),s(e,"cy","12"),s(e,"r","10"),s(t,"x1","12"),s(t,"y1","16"),s(t,"x2","12"),s(t,"y2","12"),s(n,"x1","12"),s(n,"y1","8"),s(n,"x2","12.01"),s(n,"y2","8")},m(i,o){S(i,e,o),S(i,t,o),S(i,n,o)},d(i){i&&(y(e),y(t),y(n))}}}function vm(l){let e,t,n,i;return{c(){e=ie("rect"),t=ie("polyline"),n=ie("line"),i=ie("line"),s(e,"x","3"),s(e,"y","5"),s(e,"width","18"),s(e,"height","14"),s(e,"rx","2"),s(t,"points","3 10 21 10"),s(n,"x1","8"),s(n,"y1","5"),s(n,"x2","8"),s(n,"y2","19"),s(i,"x1","16"),s(i,"y1","5"),s(i,"x2","16"),s(i,"y2","19")},m(o,r){S(o,e,r),S(o,t,r),S(o,n,r),S(o,i,r)},d(o){o&&(y(e),y(t),y(n),y(i))}}}function hm(l){let e,t;return{c(){e=ie("path"),t=ie("polyline"),s(e,"d","M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"),s(t,"points","13 2 13 9 20 9")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function km(l){let e,t;return{c(){e=ie("path"),t=ie("path"),s(e,"d","M12 20h9"),s(t,"d","M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function bm(l){let e,t,n,i,o;return{c(){e=ie("path"),t=ie("path"),n=ie("line"),i=ie("line"),o=ie("line"),s(e,"d","M4 19.5A2.5 2.5 0 0 1 6.5 17H20"),s(t,"d","M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"),s(n,"x1","8"),s(n,"y1","7"),s(n,"x2","16"),s(n,"y2","7"),s(i,"x1","8"),s(i,"y1","11"),s(i,"x2","14"),s(i,"y2","11"),s(o,"x1","8"),s(o,"y1","15"),s(o,"x2","12"),s(o,"y2","15")},m(r,c){S(r,e,c),S(r,t,c),S(r,n,c),S(r,i,c),S(r,o,c)},d(r){r&&(y(e),y(t),y(n),y(i),y(o))}}}function wm(l){let e,t,n,i;return{c(){e=ie("path"),t=ie("polyline"),n=ie("line"),i=ie("line"),s(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),s(t,"points","14 2 14 8 20 8"),s(n,"x1","16"),s(n,"y1","13"),s(n,"x2","8"),s(n,"y2","13"),s(i,"x1","16"),s(i,"y1","17"),s(i,"x2","8"),s(i,"y2","17")},m(o,r){S(o,e,r),S(o,t,r),S(o,n,r),S(o,i,r)},d(o){o&&(y(e),y(t),y(n),y(i))}}}function ym(l){let e,t;return{c(){e=ie("path"),t=ie("circle"),s(e,"d","M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"),s(t,"cx","12"),s(t,"cy","7"),s(t,"r","4")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function Cm(l){let e,t,n,i;return{c(){e=ie("rect"),t=ie("rect"),n=ie("rect"),i=ie("rect"),s(e,"x","3"),s(e,"y","3"),s(e,"width","7"),s(e,"height","7"),s(e,"rx","1"),s(t,"x","14"),s(t,"y","3"),s(t,"width","7"),s(t,"height","4"),s(t,"rx","1"),s(n,"x","14"),s(n,"y","10"),s(n,"width","7"),s(n,"height","11"),s(n,"rx","1"),s(i,"x","3"),s(i,"y","14"),s(i,"width","7"),s(i,"height","7"),s(i,"rx","1")},m(o,r){S(o,e,r),S(o,t,r),S(o,n,r),S(o,i,r)},d(o){o&&(y(e),y(t),y(n),y(i))}}}function Sm(l){let e;return{c(){e=ie("path"),s(e,"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")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function Tm(l){let e;function t(o,r){return o[0]==="folder"?Sm:o[0]==="project"?Cm:o[0]==="client"?ym:o[0]==="document"?wm:o[0]==="recipe"?bm:o[0]==="note"?km:o[0]==="file"?hm:o[0]==="case"?vm:_m}let n=t(l),i=n(l);return{c(){e=ie("svg"),i.c(),s(e,"width",l[1]),s(e,"height",l[1]),s(e,"viewBox","0 0 24 24"),s(e,"fill","none"),s(e,"stroke","currentColor"),s(e,"stroke-width","1.5"),s(e,"stroke-linecap","round"),s(e,"stroke-linejoin","round"),s(e,"xmlns","http://www.w3.org/2000/svg")},m(o,r){S(o,e,r),i.m(e,null)},p(o,[r]){n!==(n=t(o))&&(i.d(1),i=n(o),i&&(i.c(),i.m(e,null))),r&2&&s(e,"width",o[1]),r&2&&s(e,"height",o[1])},i:te,o:te,d(o){o&&y(e),i.d()}}}function Em(l,e,t){let{kind:n="generic"}=e,{size:i=18}=e;return l.$$set=o=>{"kind"in o&&t(0,n=o.kind),"size"in o&&t(1,i=o.size)},[n,i]}class Tn extends xe{constructor(e){super(),Ze(this,e,Em,Tm,Xe,{kind:0,size:1})}}function Os(l,e,t){const n=l.slice();return n[44]=e[t],n}function Dm(l){let e;return{c(){e=u("span"),s(e,"class","tree-toggle-placeholder svelte-zj71cl")},m(t,n){S(t,e,n)},p:te,d(t){t&&y(e)}}}function Im(l){let e,t,n=l[1][l[44].id]?"▾":"▸",i,o,r;function c(){return l[25](l[44])}return{c(){e=u("button"),t=u("span"),i=F(n),s(t,"class","tree-arrow"),s(e,"class","tree-toggle svelte-zj71cl")},m(f,p){S(f,e,p),a(e,t),a(t,i),o||(r=L(e,"click",Ie(c)),o=!0)},p(f,p){l=f,p[0]&3&&n!==(n=l[1][l[44].id]?"▾":"▸")&&K(i,n)},d(f){f&&y(e),o=!1,r()}}}function Bs(l){let e,t;return e=new Yc({props:{nodes:l[44].children||[],expanded:l[1],selectedNodeId:l[2],level:l[3]+1,onSelect:l[4],onToggle:l[5],onContextMenu:l[6],onDrop:l[7]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p(n,i){const o={};i[0]&1&&(o.nodes=n[44].children||[]),i[0]&2&&(o.expanded=n[1]),i[0]&4&&(o.selectedNodeId=n[2]),i[0]&8&&(o.level=n[3]+1),i[0]&16&&(o.onSelect=n[4]),i[0]&32&&(o.onToggle=n[5]),i[0]&64&&(o.onContextMenu=n[6]),i[0]&128&&(o.onDrop=n[7]),e.$set(o)},i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Hs(l,e){let t,n,i,o,r,c,f,p=e[44].title+"",_,m,g=e[1][e[44].id]&&pi(e[44]),h,b,w,C;function T(O,V){return V[0]&1&&(n=null),n==null&&(n=!!Bl(O[44])),n?Im:Dm}let E=T(e,[-1,-1]),D=E(e);r=new Tn({props:{kind:Ws(e[44]),size:16}});function N(...O){return e[26](e[44],...O)}function A(...O){return e[27](e[44],...O)}function P(){return e[28](e[44])}function I(...O){return e[29](e[44],...O)}function M(...O){return e[30](e[44],...O)}function z(...O){return e[31](e[44],...O)}function B(...O){return e[32](e[44],...O)}function W(...O){return e[33](e[44],...O)}function H(...O){return e[34](e[44],...O)}function U(...O){return e[35](e[44],...O)}function q(...O){return e[36](e[44],...O)}function Y(...O){return e[37](e[44],...O)}let Q=g&&Bs(e);return{key:l,first:null,c(){t=u("div"),D.c(),i=k(),o=u("span"),Ve(r.$$.fragment),c=k(),f=u("span"),_=F(p),m=k(),Q&&Q.c(),h=ot(),s(o,"class","tree-icon svelte-zj71cl"),s(o,"role","button"),s(o,"tabindex","-1"),s(f,"class","tree-label svelte-zj71cl"),s(f,"role","button"),s(f,"tabindex","-1"),s(t,"class","tree-item svelte-zj71cl"),kt(t,"padding-left",e[3]*16+4+"px"),s(t,"draggable","true"),s(t,"role","button"),s(t,"tabindex","0"),ae(t,"selected",e[2]===e[44].id),ae(t,"drop-valid",e[8]===e[44].id&&e[9][e[44].id]),ae(t,"drop-invalid",e[8]===e[44].id&&!e[9][e[44].id]),this.first=t},m(O,V){S(O,t,V),D.m(t,null),a(t,i),a(t,o),He(r,o,null),a(t,c),a(t,f),a(f,_),S(O,m,V),Q&&Q.m(O,V),S(O,h,V),b=!0,w||(C=[L(o,"click",N),L(o,"keydown",A),L(o,"dblclick",Ie(e[24])),L(f,"click",Ie(P)),L(f,"keydown",I),L(t,"dragstart",M),L(t,"dragover",z),L(t,"dragleave",B),L(t,"drop",W),L(t,"click",H),L(t,"keydown",U),L(t,"dblclick",q),L(t,"contextmenu",Sn(Y))],w=!0)},p(O,V){e=O,E===(E=T(e,V))&&D?D.p(e,V):(D.d(1),D=E(e),D&&(D.c(),D.m(t,i)));const R={};V[0]&1&&(R.kind=Ws(e[44])),r.$set(R),(!b||V[0]&1)&&p!==(p=e[44].title+"")&&K(_,p),(!b||V[0]&8)&&kt(t,"padding-left",e[3]*16+4+"px"),(!b||V[0]&5)&&ae(t,"selected",e[2]===e[44].id),(!b||V[0]&769)&&ae(t,"drop-valid",e[8]===e[44].id&&e[9][e[44].id]),(!b||V[0]&769)&&ae(t,"drop-invalid",e[8]===e[44].id&&!e[9][e[44].id]),V[0]&3&&(g=e[1][e[44].id]&&pi(e[44])),g?Q?(Q.p(e,V),V[0]&3&&fe(Q,1)):(Q=Bs(e),Q.c(),fe(Q,1),Q.m(h.parentNode,h)):Q&&(at(),me(Q,1,1,()=>{Q=null}),ct())},i(O){b||(fe(r.$$.fragment,O),fe(Q),b=!0)},o(O){me(r.$$.fragment,O),me(Q),b=!1},d(O){O&&(y(t),y(m),y(h)),D.d(),We(r),Q&&Q.d(O),w=!1,ge(C)}}}function Nm(l){let e=[],t=new Map,n,i,o,r,c=de(l[0]);const f=p=>p[44].id;for(let p=0;p0:l.has_children===!0}function Vs(l){const e={};function t(n,i){for(const o of n)e[o.id]=i,o.children&&t(o.children,o.id)}return t(l,""),e}function Us(l){const e=[];function t(n){for(const i of n)e.push(i),i.children&&t(i.children)}return t(l),e}function Am(l){try{return l.dataTransfer.getData("text/plain")}catch{return""}}function Mm(l,e,t){let n,i,o,{nodes:r=[]}=e,{expanded:c={}}=e,{selectedNodeId:f=""}=e,{level:p=0}=e,{onSelect:_=void 0}=e,{onToggle:m=void 0}=e,{onContextMenu:g=void 0}=e,{onDrop:h=void 0}=e,b={},w=null,C="",T="";const E=["folder","project","client","document","recipe","case"];Gl(()=>{for(const $ of Object.keys(b))clearTimeout(b[$]);w&&clearInterval(w)});function D($){return E.includes($.type)}function N($,se,Ce){if(!$||!se||se===$.id||!D($))return!1;let De=$.id;for(;De;){if(De===se)return!1;De=Ce[De]||""}return!0}function A($,se){$.stopPropagation(),$.dataTransfer.effectAllowed="move",$.dataTransfer.setData("text/plain",se.id),t(21,C=se.id)}function P($,se){$.preventDefault(),$.stopPropagation(),$.dataTransfer.dropEffect="move",T!==se.id&&t(8,T=se.id),Bl(se)&&!c[se.id]&&!b[se.id]&&(b[se.id]=setTimeout(()=>{m&&m(se.id),delete b[se.id]},600));const Ce=$.currentTarget.closest(".workspace-tree-area");if(Ce){const De=Ce.getBoundingClientRect(),we=30;$.clientY-De.top{Ce.scrollTop-=10},50)):De.bottom-$.clientY{Ce.scrollTop+=10},50)):w&&(clearInterval(w),w=null)}}function I($,se){const Ce=$.relatedTarget;Ce&&$.currentTarget.contains(Ce)||(T===se.id&&t(8,T=""),b[se.id]&&(clearTimeout(b[se.id]),delete b[se.id]),w&&(clearInterval(w),w=null))}function M($,se){$.preventDefault(),$.stopPropagation(),b[se.id]&&(clearTimeout(b[se.id]),delete b[se.id]),w&&(clearInterval(w),w=null);const Ce=Us(r),De=Vs(Ce),we=Am($);if(!N(se,we,De)){t(8,T=""),t(21,C="");return}h&&h(we,se.id),t(8,T=""),t(21,C="")}function z(){t(8,T=""),t(21,C="");for(const $ of Object.keys(b))clearTimeout(b[$]),delete b[$];w&&(clearInterval(w),w=null)}function B($,se){$.target.closest(".tree-toggle")||$.target.closest(".tree-icon")||_&&_(se)}function W($,se){Bl(se)&&m&&m(se.id)}function H($,se){($.key==="Enter"||$.key===" ")&&($.preventDefault(),_&&_(se))}function U($,se){$.stopPropagation(),Bl(se)&&m&&m(se.id)}function q($,se){($.key==="Enter"||$.key===" ")&&($.preventDefault(),$.stopPropagation(),Bl(se)&&m&&m(se.id))}function Y($,se){($.key==="Enter"||$.key===" ")&&($.preventDefault(),_&&_(se))}function Q($,se,Ce){const De={};function we(Le){for(const Qe of Le)De[Qe.id]=N(Qe,se,Ce),Qe.children&&we(Qe.children)}return we($),De}function O($){Mc.call(this,l,$)}const V=$=>m&&m($.id),R=($,se)=>U(se,$),X=($,se)=>q(se,$),J=$=>_&&_($),G=($,se)=>Y(se,$),x=($,se)=>A(se,$),ee=($,se)=>P(se,$),le=($,se)=>I(se,$),ce=($,se)=>M(se,$),pe=($,se)=>B(se,$),Ee=($,se)=>H(se,$),ze=($,se)=>W(se,$),_e=($,se)=>g&&g(se,$);return l.$$set=$=>{"nodes"in $&&t(0,r=$.nodes),"expanded"in $&&t(1,c=$.expanded),"selectedNodeId"in $&&t(2,f=$.selectedNodeId),"level"in $&&t(3,p=$.level),"onSelect"in $&&t(4,_=$.onSelect),"onToggle"in $&&t(5,m=$.onToggle),"onContextMenu"in $&&t(6,g=$.onContextMenu),"onDrop"in $&&t(7,h=$.onDrop)},l.$$.update=()=>{l.$$.dirty[0]&1&&t(23,n=Us(r)),l.$$.dirty[0]&8388608&&t(22,i=Vs(n)),l.$$.dirty[0]&14680064&&t(9,o=Q(n,C,i))},[r,c,f,p,_,m,g,h,T,o,A,P,I,M,z,B,W,H,U,q,Y,C,i,n,O,V,R,X,J,G,x,ee,le,ce,pe,Ee,ze,_e]}class Yc extends xe{constructor(e){super(),Ze(this,e,Mm,Nm,Xe,{nodes:0,expanded:1,selectedNodeId:2,level:3,onSelect:4,onToggle:5,onContextMenu:6,onDrop:7},null,[-1,-1])}}function Ks(l){let e,t;return{c(){e=u("div"),t=F(l[4]),s(e,"class","path-info svelte-a9f1pd")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&16&&K(t,n[4])},d(n){n&&y(e)}}}function Gs(l){let e,t;return{c(){e=u("div"),t=F(l[3]),s(e,"class","error-msg svelte-a9f1pd")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&8&&K(t,n[3])},d(n){n&&y(e)}}}function jm(l){let e,t,n,i,o,r,c,f,p,_,m,g,h,b,w,C,T,E=v("firstrun.browse")+"",D,N,A,P,I,M,z=(l[2]?v("firstrun.creating"):v("firstrun.create"))+"",B,W,H,U,q,Y,Q=l[4]&&Ks(l),O=l[3]&&Gs(l);return{c(){e=u("div"),t=u("div"),n=u("img"),o=k(),r=u("h1"),r.textContent=`${v("firstrun.title")}`,c=k(),f=u("p"),f.textContent=`${v("firstrun.desc")}`,p=k(),_=u("div"),m=u("label"),m.textContent=`${v("firstrun.pathLabel")}`,g=k(),h=u("div"),b=u("input"),C=k(),T=u("button"),D=F(E),N=k(),Q&&Q.c(),A=k(),O&&O.c(),P=k(),I=u("div"),M=u("button"),B=F(z),H=k(),U=u("button"),U.textContent=`${v("firstrun.quit")}`,s(n,"class","first-run-logo svelte-a9f1pd"),El(n.src,i="/assets/app-icons/icon_64x64.png")||s(n,"src",i),s(n,"width","64"),s(n,"height","64"),s(n,"alt",""),s(r,"class","svelte-a9f1pd"),s(f,"class","first-run-desc svelte-a9f1pd"),s(m,"class","form-label svelte-a9f1pd"),s(m,"for","vault-path"),s(b,"id","vault-path"),s(b,"type","text"),s(b,"placeholder",w=l[1]||v("firstrun.defaultPath")),b.disabled=l[2],s(b,"class","svelte-a9f1pd"),s(T,"class","btn"),T.disabled=l[2],s(h,"class","input-row svelte-a9f1pd"),s(_,"class","form-group svelte-a9f1pd"),s(M,"class","btn btn-primary btn-lg svelte-a9f1pd"),M.disabled=W=!l[0].trim()||l[2],s(U,"class","btn btn-lg svelte-a9f1pd"),s(I,"class","first-run-actions svelte-a9f1pd"),s(t,"class","first-run-card svelte-a9f1pd"),s(e,"class","first-run-screen svelte-a9f1pd")},m(V,R){S(V,e,R),a(e,t),a(t,n),a(t,o),a(t,r),a(t,c),a(t,f),a(t,p),a(t,_),a(_,m),a(_,g),a(_,h),a(h,b),be(b,l[0]),a(h,C),a(h,T),a(T,D),a(t,N),Q&&Q.m(t,null),a(t,A),O&&O.m(t,null),a(t,P),a(t,I),a(I,M),a(M,B),a(I,H),a(I,U),q||(Y=[L(b,"input",l[12]),L(b,"input",l[6]),L(b,"keydown",l[9]),L(T,"click",l[5]),L(M,"click",l[7]),L(U,"click",l[8])],q=!0)},p(V,[R]){R&2&&w!==(w=V[1]||v("firstrun.defaultPath"))&&s(b,"placeholder",w),R&4&&(b.disabled=V[2]),R&1&&b.value!==V[0]&&be(b,V[0]),R&4&&(T.disabled=V[2]),V[4]?Q?Q.p(V,R):(Q=Ks(V),Q.c(),Q.m(t,A)):Q&&(Q.d(1),Q=null),V[3]?O?O.p(V,R):(O=Gs(V),O.c(),O.m(t,P)):O&&(O.d(1),O=null),R&4&&z!==(z=(V[2]?v("firstrun.creating"):v("firstrun.create"))+"")&&K(B,z),R&5&&W!==(W=!V[0].trim()||V[2])&&(M.disabled=W)},i:te,o:te,d(V){V&&y(e),Q&&Q.d(),O&&O.d(),q=!1,ge(Y)}}}function mn(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function Lm(l,e,t){let{onComplete:n=null}=e,{onQuit:i=null}=e,o="",r="",c=!1,f="",p="",_=null;async function m(){try{const E=await mn("GetDefaultVaultPath");t(1,r=E||""),t(0,o=r||""),o&&await h()}catch{t(1,r="")}}m();async function g(){try{const E=await mn("PickDirectory");E&&(t(0,o=E),await h())}catch(E){t(3,f=String(E))}}async function h(){if(!o||!o.trim()){t(4,p=""),_=null;return}try{_=await mn("CheckVaultPath",o.trim()),_&&t(4,p=_.description)}catch{t(4,p=""),_=null}}async function b(){if(!(!o||!o.trim())){if(t(2,c=!0),t(3,f=""),_&&!_.writable){t(3,f=v("firstrun.errorNoWrite")),t(2,c=!1);return}try{const E=await mn("CreateVault",o.trim());E&&E.status==="ready"&&n&&n(E)}catch(E){t(3,f=String(E))}t(2,c=!1)}}function w(){i&&i()}function C(E){E.key==="Enter"&&!c&&o.trim()&&b()}function T(){o=this.value,t(0,o)}return l.$$set=E=>{"onComplete"in E&&t(10,n=E.onComplete),"onQuit"in E&&t(11,i=E.onQuit)},[o,r,c,f,p,g,h,b,w,C,n,i,T]}class Pm extends xe{constructor(e){super(),Ze(this,e,Lm,jm,Xe,{onComplete:10,onQuit:11})}}function Js(l){let e,t;return{c(){e=u("div"),t=F(l[2]),s(e,"class","error-msg svelte-s3o8c3")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&4&&K(t,n[2])},d(n){n&&y(e)}}}function qs(l){let e,t,n,i,o,r,c,f,p=v("common.yes")+"",_,m,g,h,b;return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${v("recovery.createConfirmTitle")}`,i=k(),o=u("p"),o.textContent=`${v("recovery.createConfirm")}`,r=k(),c=u("div"),f=u("button"),_=F(p),m=k(),g=u("button"),g.textContent=`${v("common.cancel")}`,s(n,"class","svelte-s3o8c3"),s(o,"class","modal-desc svelte-s3o8c3"),s(f,"class","btn btn-primary"),f.disabled=l[1],s(g,"class","btn"),s(c,"class","modal-actions svelte-s3o8c3"),s(t,"class","modal svelte-s3o8c3"),s(e,"class","modal-overlay svelte-s3o8c3"),s(e,"role","button"),s(e,"tabindex","0")},m(w,C){S(w,e,C),a(e,t),a(t,n),a(t,i),a(t,o),a(t,r),a(t,c),a(c,f),a(f,_),a(c,m),a(c,g),h||(b=[L(f,"click",l[6]),L(g,"click",l[7]),L(e,"click",Ct(l[7])),L(e,"keydown",l[11])],h=!0)},p(w,C){C&2&&(f.disabled=w[1])},d(w){w&&y(e),h=!1,ge(b)}}}function Fm(l){let e,t,n,i,o,r,c,f,p,_=(l[0]||"—")+"",m,g,h,b,w,C=v("recovery.choose")+"",T,E,D,N=v("recovery.create")+"",A,P,I,M,z,B,W,H=l[2]&&Js(l),U=l[3]&&qs(l);return{c(){e=u("div"),t=u("div"),n=u("div"),n.textContent="⚠",i=k(),o=u("h1"),o.textContent=`${v("recovery.title")}`,r=k(),c=u("p"),c.textContent=`${v("recovery.expected")}:`,f=k(),p=u("code"),m=F(_),g=k(),H&&H.c(),h=k(),b=u("div"),w=u("button"),T=F(C),E=k(),D=u("button"),A=F(N),P=k(),I=u("button"),I.textContent=`${v("recovery.quit")}`,M=k(),U&&U.c(),z=ot(),s(n,"class","recovery-icon svelte-s3o8c3"),s(o,"class","svelte-s3o8c3"),s(c,"class","recovery-desc svelte-s3o8c3"),s(p,"class","recovery-path svelte-s3o8c3"),s(w,"class","btn btn-primary btn-lg svelte-s3o8c3"),w.disabled=l[1],s(D,"class","btn btn-lg svelte-s3o8c3"),D.disabled=l[1],s(I,"class","btn btn-lg svelte-s3o8c3"),s(b,"class","recovery-actions svelte-s3o8c3"),s(t,"class","recovery-card svelte-s3o8c3"),s(e,"class","recovery-screen svelte-s3o8c3")},m(q,Y){S(q,e,Y),a(e,t),a(t,n),a(t,i),a(t,o),a(t,r),a(t,c),a(t,f),a(t,p),a(p,m),a(t,g),H&&H.m(t,null),a(t,h),a(t,b),a(b,w),a(w,T),a(b,E),a(b,D),a(D,A),a(b,P),a(b,I),S(q,M,Y),U&&U.m(q,Y),S(q,z,Y),B||(W=[L(w,"click",l[4]),L(D,"click",l[5]),L(I,"click",l[8])],B=!0)},p(q,[Y]){Y&1&&_!==(_=(q[0]||"—")+"")&&K(m,_),q[2]?H?H.p(q,Y):(H=Js(q),H.c(),H.m(t,h)):H&&(H.d(1),H=null),Y&2&&(w.disabled=q[1]),Y&2&&(D.disabled=q[1]),q[3]?U?U.p(q,Y):(U=qs(q),U.c(),U.m(z.parentNode,z)):U&&(U.d(1),U=null)},i:te,o:te,d(q){q&&(y(e),y(M),y(z)),H&&H.d(),U&&U.d(q),B=!1,ge(W)}}}function oi(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function zm(l,e,t){let{vaultPath:n=""}=e,{onComplete:i=null}=e,{onQuit:o=null}=e,r=!1,c="",f=!1;async function p(){try{const w=await oi("PickDirectory");if(!w)return;t(1,r=!0),t(2,c="");const C=await oi("OpenVault",w);C&&C.status==="ready"&&i&&i(C)}catch(w){t(2,c=String(w))}t(1,r=!1)}function _(){t(3,f=!0)}async function m(){t(3,f=!1),t(1,r=!0),t(2,c="");try{const w=await oi("CreateVault",n);w&&w.status==="ready"&&i&&i(w)}catch(w){t(2,c=String(w))}t(1,r=!1)}function g(){t(3,f=!1)}function h(){o&&o()}const b=w=>w.key==="Enter"&&g();return l.$$set=w=>{"vaultPath"in w&&t(0,n=w.vaultPath),"onComplete"in w&&t(9,i=w.onComplete),"onQuit"in w&&t(10,o=w.onQuit)},[n,r,c,f,p,_,m,g,h,i,o,b]}class Rm extends xe{constructor(e){super(),Ze(this,e,zm,Fm,Xe,{vaultPath:0,onComplete:9,onQuit:10})}}function Ys(l,e,t){const n=l.slice();return n[5]=e[t],n}function Om(l){let e,t;return{c(){e=ie("circle"),t=ie("path"),s(e,"cx","12"),s(e,"cy","12"),s(e,"r","3"),s(t,"d","M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function Bm(l){let e,t,n;return{c(){e=ie("path"),t=ie("path"),n=ie("path"),s(e,"d","M5 4h12l2 2v14H5z"),s(t,"d","M8 4v6h8V4"),s(n,"d","M8 20v-6h8v6")},m(i,o){S(i,e,o),S(i,t,o),S(i,n,o)},d(i){i&&(y(e),y(t),y(n))}}}function Hm(l){let e,t,n,i;return{c(){e=ie("path"),t=ie("path"),n=ie("path"),i=ie("path"),s(e,"d","M20 11a8 8 0 0 0-14-4l-2 2"),s(t,"d","M4 5v4h4"),s(n,"d","M4 13a8 8 0 0 0 14 4l2-2"),s(i,"d","M20 19v-4h-4")},m(o,r){S(o,e,r),S(o,t,r),S(o,n,r),S(o,i,r)},d(o){o&&(y(e),y(t),y(n),y(i))}}}function Wm(l){let e;return{c(){e=ie("path"),s(e,"d","M4 19V9M10 19V5M16 19v-7M22 19H2")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function Vm(l){let e;return{c(){e=ie("path"),s(e,"d","M3 6h6l2 2h10v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6z")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function Um(l){let e,t;return{c(){e=ie("path"),t=ie("path"),s(e,"d","M9 3v5M15 3v5M7 8h10v3a5 5 0 0 1-10 0V8z"),s(t,"d","M12 16v5")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function Km(l){let e,t;return{c(){e=ie("rect"),t=ie("path"),s(e,"x","4"),s(e,"y","3"),s(e,"width","16"),s(e,"height","18"),s(e,"rx","2"),s(t,"d","M8 7h8M8 11h8M8 15h5")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function Gm(l){let e,t,n;return{c(){e=ie("path"),t=ie("path"),n=ie("path"),s(e,"d","M3 10.5 12 3l9 7.5"),s(t,"d","M5 9.5V21h14V9.5"),s(n,"d","M10 21v-6h4v6")},m(i,o){S(i,e,o),S(i,t,o),S(i,n,o)},d(i){i&&(y(e),y(t),y(n))}}}function Jm(l){let e,t;return{c(){e=ie("circle"),t=ie("path"),s(e,"cx","12"),s(e,"cy","12"),s(e,"r","3"),s(t,"d","M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V22h-4v-.2a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H2v-4h.2a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V2h4v.2a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1h.2v4h-.2a1.7 1.7 0 0 0-1.4 1z")},m(n,i){S(n,e,i),S(n,t,i)},d(n){n&&(y(e),y(t))}}}function Qs(l){let e,t,n,i,o,r,c,f;function p(h,b){if(h[5].id==="general")return Jm;if(h[5].id==="workspace")return Gm;if(h[5].id==="templates")return Km;if(h[5].id==="plugins")return Um;if(h[5].id==="files")return Vm;if(h[5].id==="activity")return Wm;if(h[5].id==="sync")return Hm;if(h[5].id==="backup")return Bm;if(h[5].id==="browserBridge")return Om}let _=p(l),m=_&&_(l);function g(){return l[4](l[5])}return{c(){e=u("button"),t=u("span"),n=ie("svg"),m&&m.c(),i=k(),o=u("span"),o.textContent=`${l[5].label}`,r=k(),s(n,"width","16"),s(n,"height","16"),s(n,"viewBox","0 0 24 24"),s(n,"fill","none"),s(n,"stroke","currentColor"),s(n,"stroke-width","1.8"),s(n,"stroke-linecap","round"),s(n,"stroke-linejoin","round"),s(n,"aria-hidden","true"),s(t,"class","settings-nav-icon svelte-1uolm3f"),s(o,"class","settings-nav-label svelte-1uolm3f"),s(e,"class","settings-nav-item svelte-1uolm3f"),ae(e,"active",l[0]===l[5].id),ae(e,"disabled",l[5].id==="plugins"||l[5].id==="files"||l[5].id==="activity"||l[5].id==="backup")},m(h,b){S(h,e,b),a(e,t),a(t,n),m&&m.m(n,null),a(e,i),a(e,o),a(e,r),c||(f=L(e,"click",g),c=!0)},p(h,b){l=h,b&3&&ae(e,"active",l[0]===l[5].id)},d(h){h&&y(e),m&&m.d(),c=!1,f()}}}function qm(l){let e,t=de(l[1]),n=[];for(let i=0;ir(f.id);return l.$$set=f=>{"activeSection"in f&&t(0,n=f.activeSection),"onSelect"in f&&t(3,i=f.onSelect)},[n,o,r,i,c]}class Qm extends xe{constructor(e){super(),Ze(this,e,Ym,qm,Xe,{activeSection:0,onSelect:3})}}function Xs(l){let e;return{c(){e=u("div"),e.textContent=`${v("settings.saved")}`,s(e,"class","save-notice svelte-1e2uhdh")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function Xm(l){let e,t,n,i,o,r,c,f,p,_,m,g,h,b,w,C,T,E,D,N,A,P,I,M,z,B,W,H,U,q,Y,Q,O,V=l[1]&&Xs();return{c(){e=u("div"),t=u("h2"),t.textContent=`${v("settings.general")}`,n=k(),i=u("p"),i.textContent=`${v("settings.generalDesc")}`,o=k(),r=u("div"),c=u("h3"),c.textContent=`${v("settings.appearance")}`,f=k(),p=u("div"),_=u("label"),m=u("span"),m.textContent=`${v("settings.theme")}`,g=k(),h=u("select"),b=u("option"),b.textContent=`${v("settings.themeSystem")}`,w=u("option"),w.textContent=`${v("settings.themeLight")} (${v("settings.langSoon")})`,C=u("option"),C.textContent=`${v("settings.themeDark")} (${v("settings.langSoon")})`,T=k(),E=u("div"),D=u("h3"),D.textContent=`${v("settings.localization")}`,N=k(),A=u("div"),P=u("label"),I=u("span"),I.textContent=`${v("settings.language")}`,M=k(),z=u("select"),B=u("option"),B.textContent=`${v("settings.langRu")}`,W=u("option"),W.textContent=`${v("settings.langEn")} (${v("settings.langSoon")})`,H=k(),U=u("div"),V&&V.c(),q=k(),Y=u("button"),Y.textContent=`${v("settings.save")}`,s(t,"class","svelte-1e2uhdh"),s(i,"class","section-desc svelte-1e2uhdh"),s(c,"class","card-title svelte-1e2uhdh"),s(m,"class","label-text svelte-1e2uhdh"),b.__value="system",be(b,b.__value),w.__value="light",be(w,w.__value),w.disabled=!0,C.__value="dark",be(C,C.__value),C.disabled=!0,l[0]===void 0&&sl(()=>l[5].call(h)),s(p,"class","form-group svelte-1e2uhdh"),s(r,"class","settings-card svelte-1e2uhdh"),s(D,"class","card-title svelte-1e2uhdh"),s(I,"class","label-text svelte-1e2uhdh"),B.__value="ru",be(B,B.__value),W.__value="en",be(W,W.__value),z.disabled=!0,s(A,"class","form-group svelte-1e2uhdh"),s(E,"class","settings-card svelte-1e2uhdh"),s(Y,"class","btn btn-primary"),s(U,"class","settings-actions svelte-1e2uhdh"),s(e,"class","settings-section svelte-1e2uhdh")},m(R,X){S(R,e,X),a(e,t),a(e,n),a(e,i),a(e,o),a(e,r),a(r,c),a(r,f),a(r,p),a(p,_),a(_,m),a(_,g),a(_,h),a(h,b),a(h,w),a(h,C),Ut(h,l[0],!0),a(e,T),a(e,E),a(E,D),a(E,N),a(E,A),a(A,P),a(P,I),a(P,M),a(P,z),a(z,B),a(z,W),a(e,H),a(e,U),V&&V.m(U,null),a(U,q),a(U,Y),Q||(O=[L(h,"change",l[5]),L(Y,"click",l[2])],Q=!0)},p(R,[X]){X&1&&Ut(h,R[0]),R[1]?V||(V=Xs(),V.c(),V.m(U,q)):V&&(V.d(1),V=null)},i:te,o:te,d(R){R&&y(e),V&&V.d(),Q=!1,ge(O)}}}function Zm(l,e,t){let{appConfig:n=null}=e,{onSave:i=null}=e,o="system",r=!1;function c(){n&&t(0,o=n.theme||"system")}async function f(){n&&(t(3,n.theme=o,n),i&&await i(n),t(1,r=!0),setTimeout(()=>t(1,r=!1),2e3))}function p(){o=vn(this),t(0,o)}return l.$$set=_=>{"appConfig"in _&&t(3,n=_.appConfig),"onSave"in _&&t(4,i=_.onSave)},l.$$.update=()=>{l.$$.dirty&8&&n&&c()},[o,r,f,n,i,p]}class xm extends xe{constructor(e){super(),Ze(this,e,Zm,Xm,Xe,{appConfig:3,onSave:4})}}function Zs(l){let e,t;return{c(){e=u("div"),t=F(l[1]),s(e,"class","notice svelte-1zbky3")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&2&&K(t,n[1])},d(n){n&&y(e)}}}function $m(l){let e;return{c(){e=u("p"),e.textContent=`${v("settings.noVaultInfo")}`,s(e,"class","no-data svelte-1zbky3")},m(t,n){S(t,e,n)},p:te,d(t){t&&y(e)}}}function eg(l){let e,t,n,i,o,r=l[0].path+"",c,f,p,_,m,g,h=l[0].dbPath+"",b,w,C,T=l[0].nodeCount!==void 0&&xs(l),E=l[0].fileCount!==void 0&&$s(l);return{c(){e=u("div"),t=u("div"),n=u("span"),n.textContent=`${v("settings.vaultPath")}`,i=k(),o=u("span"),c=F(r),f=k(),p=u("div"),_=u("span"),_.textContent="DB",m=k(),g=u("span"),b=F(h),w=k(),T&&T.c(),C=k(),E&&E.c(),s(n,"class","info-label svelte-1zbky3"),s(o,"class","info-value mono svelte-1zbky3"),s(t,"class","info-row svelte-1zbky3"),s(_,"class","info-label svelte-1zbky3"),s(g,"class","info-value mono small svelte-1zbky3"),s(p,"class","info-row svelte-1zbky3"),s(e,"class","vault-info svelte-1zbky3")},m(D,N){S(D,e,N),a(e,t),a(t,n),a(t,i),a(t,o),a(o,c),a(e,f),a(e,p),a(p,_),a(p,m),a(p,g),a(g,b),a(e,w),T&&T.m(e,null),a(e,C),E&&E.m(e,null)},p(D,N){N&1&&r!==(r=D[0].path+"")&&K(c,r),N&1&&h!==(h=D[0].dbPath+"")&&K(b,h),D[0].nodeCount!==void 0?T?T.p(D,N):(T=xs(D),T.c(),T.m(e,C)):T&&(T.d(1),T=null),D[0].fileCount!==void 0?E?E.p(D,N):(E=$s(D),E.c(),E.m(e,null)):E&&(E.d(1),E=null)},d(D){D&&y(e),T&&T.d(),E&&E.d()}}}function xs(l){let e,t,n,i,o=l[0].nodeCount+"",r;return{c(){e=u("div"),t=u("span"),t.textContent="Nodes",n=k(),i=u("span"),r=F(o),s(t,"class","info-label svelte-1zbky3"),s(i,"class","info-value svelte-1zbky3"),s(e,"class","info-row svelte-1zbky3")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f&1&&o!==(o=c[0].nodeCount+"")&&K(r,o)},d(c){c&&y(e)}}}function $s(l){let e,t,n,i,o=l[0].fileCount+"",r;return{c(){e=u("div"),t=u("span"),t.textContent="Files",n=k(),i=u("span"),r=F(o),s(t,"class","info-label svelte-1zbky3"),s(i,"class","info-value svelte-1zbky3"),s(e,"class","info-row svelte-1zbky3")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f&1&&o!==(o=c[0].fileCount+"")&&K(r,o)},d(c){c&&y(e)}}}function tg(l){let e,t,n,i,o,r,c,f,p,_,m,g,h,b,w,C,T=l[1]&&Zs(l);function E(A,P){return A[0]?eg:$m}let D=E(l),N=D(l);return{c(){e=u("div"),t=u("h2"),t.textContent=`${v("settings.workspace")}`,n=k(),i=u("p"),i.textContent=`${v("settings.workspaceDesc")}`,o=k(),T&&T.c(),r=k(),c=u("div"),N.c(),f=k(),p=u("div"),_=u("button"),_.textContent=`${v("settings.openVault")}`,m=k(),g=u("button"),g.textContent=`${v("settings.changeVault")}`,h=k(),b=u("button"),b.textContent=`${v("settings.checkIntegrity")}`,s(t,"class","svelte-1zbky3"),s(i,"class","section-desc svelte-1zbky3"),s(c,"class","settings-card svelte-1zbky3"),s(_,"class","btn svelte-1zbky3"),s(g,"class","btn svelte-1zbky3"),s(b,"class","btn svelte-1zbky3"),s(p,"class","workspace-actions svelte-1zbky3"),s(e,"class","settings-section svelte-1zbky3")},m(A,P){S(A,e,P),a(e,t),a(e,n),a(e,i),a(e,o),T&&T.m(e,null),a(e,r),a(e,c),N.m(c,null),a(e,f),a(e,p),a(p,_),a(p,m),a(p,g),a(p,h),a(p,b),w||(C=[L(_,"click",l[2]),L(g,"click",l[4]),L(b,"click",l[3])],w=!0)},p(A,[P]){A[1]?T?T.p(A,P):(T=Zs(A),T.c(),T.m(e,r)):T&&(T.d(1),T=null),D===(D=E(A))&&N?N.p(A,P):(N.d(1),N=D(A),N&&(N.c(),N.m(c,null)))},i:te,o:te,d(A){A&&y(e),T&&T.d(),N.d(),w=!1,ge(C)}}}function yl(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function lg(l,e,t){let{onRefresh:n=null}=e,i=null,o="";async function r(){try{t(0,i=await yl("GetVaultInfo"))}catch{t(0,i=null)}}r();async function c(){try{await yl("OpenVaultFolder")}catch(_){t(1,o=String(_))}}async function f(){try{const _=await yl("VaultCheck");_.healthy?t(1,o="Vault healthy"):t(1,o="Issues found: "+(_.errors||[]).join("; "))}catch(_){t(1,o=String(_))}}async function p(){try{const _=await yl("PickDirectory");if(!_)return;const m=await yl("OpenVault",_);m&&m.status==="ready"&&(t(0,i=await yl("GetVaultInfo")),n&&n())}catch(_){t(1,o=String(_))}}return l.$$set=_=>{"onRefresh"in _&&t(5,n=_.onRefresh)},[i,o,c,f,p,n]}class ng extends xe{constructor(e){super(),Ze(this,e,lg,tg,Xe,{onRefresh:5})}}function eo(l,e,t){const n=l.slice();return n[6]=e[t],n}function ig(l){let e,t=de(l[0]),n=[];for(let i=0;ic(p);return l.$$set=p=>{"onRefresh"in p&&t(3,n=p.onRefresh)},[i,o,c,n,f]}class cg extends xe{constructor(e){super(),Ze(this,e,ag,rg,Xe,{onRefresh:3})}}function no(l,e,t){const n=l.slice();return n[11]=e[t],n}function ug(l){let e,t=de(l[0]),n=[];for(let i=0;iНет установленных плагинов.
Создайте папку .verstak/plugins/ в хранилище и добавьте туда плагины.
',s(e,"class","empty-state svelte-i9gngw")},m(t,n){S(t,e,n)},p:te,d(t){t&&y(e)}}}function dg(l){let e,t;return{c(){e=u("p"),t=F(l[2]),s(e,"class","error svelte-i9gngw")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&4&&K(t,n[2])},d(n){n&&y(e)}}}function pg(l){let e;return{c(){e=u("p"),e.textContent=`${v("common.loading")}`,s(e,"class","loading svelte-i9gngw")},m(t,n){S(t,e,n)},p:te,d(t){t&&y(e)}}}function io(l){let e,t,n=l[11].version+"",i;return{c(){e=u("span"),t=F("v"),i=F(n),s(e,"class","plugin-version svelte-i9gngw")},m(o,r){S(o,e,r),a(e,t),a(e,i)},p(o,r){r&1&&n!==(n=o[11].version+"")&&K(i,n)},d(o){o&&y(e)}}}function so(l){let e,t=l[11].description+"",n;return{c(){e=u("div"),n=F(t),s(e,"class","plugin-desc svelte-i9gngw")},m(i,o){S(i,e,o),a(e,n)},p(i,o){o&1&&t!==(t=i[11].description+"")&&K(n,t)},d(i){i&&y(e)}}}function oo(l){let e,t=(v("settings.author")||"Автор")+"",n,i,o=l[11].author+"",r;return{c(){e=u("span"),n=F(t),i=F(": "),r=F(o)},m(c,f){S(c,e,f),a(e,n),a(e,i),a(e,r)},p(c,f){f&1&&o!==(o=c[11].author+"")&&K(r,o)},d(c){c&&y(e)}}}function ro(l){let e,t=l[11].uiContribs.sidebarItems.length+"",n,i;return{c(){e=u("span"),n=F(t),i=F(" пункт(а) в сайдбаре")},m(o,r){S(o,e,r),a(e,n),a(e,i)},p(o,r){r&1&&t!==(t=o[11].uiContribs.sidebarItems.length+"")&&K(n,t)},d(o){o&&y(e)}}}function ao(l){let e,t=l[11].uiContribs.nodeTabs.length+"",n,i;return{c(){e=u("span"),n=F(t),i=F(" вкладок(и) в карточке дела")},m(o,r){S(o,e,r),a(e,n),a(e,i)},p(o,r){r&1&&t!==(t=o[11].uiContribs.nodeTabs.length+"")&&K(n,t)},d(o){o&&y(e)}}}function co(l){let e;return{c(){e=u("span"),e.textContent="🗖 HTML-панель"},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function mg(l){let e,t,n,i,o,r,c,f;function p(){return l[7](l[11])}function _(){return l[8](l[11])}return{c(){e=u("div"),t=u("button"),n=u("span"),o=k(),r=u("button"),r.textContent="🗑",s(n,"class","toggle-knob svelte-i9gngw"),s(t,"class","toggle-btn svelte-i9gngw"),s(t,"role","switch"),s(t,"aria-checked",i=l[11].active),ae(t,"active",l[11].active),s(r,"class","uninstall-btn btn-sm svelte-i9gngw"),s(r,"title","Удалить плагин (очистить данные)"),s(e,"class","toggle-group svelte-i9gngw")},m(m,g){S(m,e,g),a(e,t),a(t,n),a(e,o),a(e,r),c||(f=[L(t,"click",p),L(r,"click",_)],c=!0)},p(m,g){l=m,g&1&&i!==(i=l[11].active)&&s(t,"aria-checked",i),g&1&&ae(t,"active",l[11].active)},d(m){m&&y(e),c=!1,ge(f)}}}function gg(l){let e,t,n;function i(){return l[6](l[11])}return{c(){e=u("button"),e.textContent="📦 Установить",s(e,"class","install-btn svelte-i9gngw")},m(o,r){S(o,e,r),t||(n=L(e,"click",i),t=!0)},p(o,r){l=o},d(o){o&&y(e),t=!1,n()}}}function uo(l){var z,B,W,H;let e,t,n,i=l[11].name+"",o,r,c,f,p,_,m,g,h,b,w,C=l[11].version&&io(l),T=l[11].description&&so(l),E=l[11].author&&oo(l),D=((B=(z=l[11].uiContribs)==null?void 0:z.sidebarItems)==null?void 0:B.length)&&ro(l),N=((H=(W=l[11].uiContribs)==null?void 0:W.nodeTabs)==null?void 0:H.length)&&ao(l),A=l[11].hasPanel&&co();function P(U,q){return U[11].installed?mg:gg}let I=P(l),M=I(l);return{c(){e=u("div"),t=u("div"),n=u("div"),o=F(i),r=k(),C&&C.c(),c=k(),T&&T.c(),f=k(),p=u("div"),E&&E.c(),_=k(),D&&D.c(),m=k(),N&&N.c(),g=k(),A&&A.c(),h=k(),b=u("div"),M.c(),w=k(),s(n,"class","plugin-name svelte-i9gngw"),s(p,"class","plugin-meta svelte-i9gngw"),s(t,"class","plugin-info svelte-i9gngw"),s(b,"class","plugin-toggle svelte-i9gngw"),s(e,"class","plugin-card svelte-i9gngw")},m(U,q){S(U,e,q),a(e,t),a(t,n),a(n,o),a(n,r),C&&C.m(n,null),a(t,c),T&&T.m(t,null),a(t,f),a(t,p),E&&E.m(p,null),a(p,_),D&&D.m(p,null),a(p,m),N&&N.m(p,null),a(p,g),A&&A.m(p,null),a(e,h),a(e,b),M.m(b,null),a(e,w)},p(U,q){var Y,Q,O,V;q&1&&i!==(i=U[11].name+"")&&K(o,i),U[11].version?C?C.p(U,q):(C=io(U),C.c(),C.m(n,null)):C&&(C.d(1),C=null),U[11].description?T?T.p(U,q):(T=so(U),T.c(),T.m(t,f)):T&&(T.d(1),T=null),U[11].author?E?E.p(U,q):(E=oo(U),E.c(),E.m(p,_)):E&&(E.d(1),E=null),(Q=(Y=U[11].uiContribs)==null?void 0:Y.sidebarItems)!=null&&Q.length?D?D.p(U,q):(D=ro(U),D.c(),D.m(p,m)):D&&(D.d(1),D=null),(V=(O=U[11].uiContribs)==null?void 0:O.nodeTabs)!=null&&V.length?N?N.p(U,q):(N=ao(U),N.c(),N.m(p,g)):N&&(N.d(1),N=null),U[11].hasPanel?A||(A=co(),A.c(),A.m(p,null)):A&&(A.d(1),A=null),I===(I=P(U))&&M?M.p(U,q):(M.d(1),M=I(U),M&&(M.c(),M.m(b,null)))},d(U){U&&y(e),C&&C.d(),T&&T.d(),E&&E.d(),D&&D.d(),N&&N.d(),A&&A.d(),M.d()}}}function _g(l){let e,t,n,i,o;function r(p,_){return p[1]?pg:p[2]?dg:p[0].length===0?fg:ug}let c=r(l),f=c(l);return{c(){e=u("div"),t=u("h3"),t.textContent=`${v("settings.plugins")||"Плагины"}`,n=k(),i=u("p"),i.textContent="Включение и отключение плагинов. Изменения применяются сразу.",o=k(),f.c(),s(t,"class","svelte-i9gngw"),s(i,"class","hint svelte-i9gngw"),s(e,"class","settings-plugins svelte-i9gngw")},m(p,_){S(p,e,_),a(e,t),a(e,n),a(e,i),a(e,o),f.m(e,null)},p(p,[_]){c===(c=r(p))&&f?f.p(p,_):(f.d(1),f=c(p),f&&(f.c(),f.m(e,null)))},i:te,o:te,d(p){p&&y(e),f.d()}}}function Cl(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function vg(l,e,t){let n=[],i=!0,o="";Kl(async()=>{try{t(0,n=await Cl("ListPlugins")||[])}catch(g){t(2,o=String(g))}t(1,i=!1)});async function r(g){const h=!g.active;try{await Cl("SetPluginEnabled",g.name,h),g.active=h}catch(b){t(2,o=String(b))}}async function c(g){t(2,o="");try{await Cl("InstallPlugin",g.name),g.installed=!0,t(0,n=await Cl("ListPlugins")||[])}catch(h){t(2,o=String(h))}}async function f(g){if(confirm(`Удалить плагин «${g.name}»? Все данные плагина будут очищены. Файлы плагина сохранятся.`)){t(2,o="");try{await Cl("UninstallPlugin",g.name),g.installed=!1,g.active=!1,t(0,n=await Cl("ListPlugins")||[])}catch(h){t(2,o=String(h))}}}const p=g=>c(g),_=g=>r(g),m=g=>f(g);return l.$$.update=()=>{l.$$.dirty&1&&n.reduce((g,h)=>{var b,w;return g+(((w=(b=h.uiContribs)==null?void 0:b.sidebarItems)==null?void 0:w.length)||0)},0),l.$$.dirty&1&&n.reduce((g,h)=>{var b,w;return g+(((w=(b=h.uiContribs)==null?void 0:b.nodeTabs)==null?void 0:w.length)||0)},0)},[n,i,o,r,c,f,p,_,m]}class hg extends xe{constructor(e){super(),Ze(this,e,vg,_g,Xe,{})}}function kg(l){let e,t,n,i;return{c(){e=u("div"),t=u("h2"),t.textContent=`${v("settings.files")}`,n=k(),i=u("p"),i.textContent=`${v("settings.filesStub")}`,s(t,"class","svelte-19bo7bn"),s(i,"class","section-desc svelte-19bo7bn"),s(e,"class","settings-section svelte-19bo7bn")},m(o,r){S(o,e,r),a(e,t),a(e,n),a(e,i)},p:te,i:te,o:te,d(o){o&&y(e)}}}class bg extends xe{constructor(e){super(),Ze(this,e,null,kg,Xe,{})}}function wg(l){let e,t,n,i;return{c(){e=u("div"),t=u("h2"),t.textContent=`${v("settings.activity")}`,n=k(),i=u("p"),i.textContent=`${v("settings.activityStub")}`,s(t,"class","svelte-19bo7bn"),s(i,"class","section-desc svelte-19bo7bn"),s(e,"class","settings-section svelte-19bo7bn")},m(o,r){S(o,e,r),a(e,t),a(e,n),a(e,i)},p:te,i:te,o:te,d(o){o&&y(e)}}}class yg extends xe{constructor(e){super(),Ze(this,e,null,wg,Xe,{})}}function fo(l){let e,t;return{c(){e=u("div"),t=F(l[2]),s(e,"class","error-msg svelte-1fx1e1e")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i[0]&4&&K(t,n[2])},d(n){n&&y(e)}}}function po(l){let e,t;return{c(){e=u("div"),t=F(l[3]),s(e,"class","result-msg svelte-1fx1e1e"),ae(e,"warning",l[4]==="warning")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i[0]&8&&K(t,n[3]),i[0]&16&&ae(e,"warning",n[4]==="warning")},d(n){n&&y(e)}}}function Cg(l){let e,t,n,i,o,r,c,f,p,_,m,g,h,b,w,C,T,E,D,N,A,P,I=v("settings.checkConnection")+"",M,z,B,W,H=v("common.connect")+"",U,q,Y,Q,O,V=l[11]!==null&&mo(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("label"),o=u("span"),o.textContent=`${v("settings.serverUrl")}`,r=k(),c=u("input"),f=k(),p=u("div"),_=u("label"),m=u("span"),m.textContent=`${v("sync.username")}`,g=k(),h=u("input"),b=k(),w=u("div"),C=u("label"),T=u("span"),T.textContent=`${v("sync.password")}`,E=k(),D=u("input"),N=k(),A=u("div"),P=u("button"),M=F(I),B=k(),W=u("button"),U=F(H),Y=k(),V&&V.c(),s(o,"class","label-text"),s(c,"type","text"),s(c,"placeholder","https://example.com"),s(n,"class","form-group svelte-1fx1e1e"),s(m,"class","label-text"),s(h,"type","text"),s(p,"class","form-group svelte-1fx1e1e"),s(T,"class","label-text"),s(D,"type","password"),s(w,"class","form-group svelte-1fx1e1e"),s(P,"class","btn"),P.disabled=z=l[1]||!l[5],s(W,"class","btn btn-primary"),W.disabled=q=l[1]||!l[5]||!l[6]||!l[7],s(A,"class","sync-setup-actions svelte-1fx1e1e"),s(t,"class","sync-setup svelte-1fx1e1e"),s(e,"class","settings-card svelte-1fx1e1e")},m(R,X){S(R,e,X),a(e,t),a(t,n),a(n,i),a(i,o),a(i,r),a(i,c),be(c,l[5]),a(t,f),a(t,p),a(p,_),a(_,m),a(_,g),a(_,h),be(h,l[6]),a(t,b),a(t,w),a(w,C),a(C,T),a(C,E),a(C,D),be(D,l[7]),a(t,N),a(t,A),a(A,P),a(P,M),a(A,B),a(A,W),a(W,U),a(t,Y),V&&V.m(t,null),Q||(O=[L(c,"input",l[23]),L(h,"input",l[24]),L(D,"input",l[25]),L(P,"click",l[12]),L(W,"click",l[13])],Q=!0)},p(R,X){X[0]&32&&c.value!==R[5]&&be(c,R[5]),X[0]&64&&h.value!==R[6]&&be(h,R[6]),X[0]&128&&D.value!==R[7]&&be(D,R[7]),X[0]&34&&z!==(z=R[1]||!R[5])&&(P.disabled=z),X[0]&226&&q!==(q=R[1]||!R[5]||!R[6]||!R[7])&&(W.disabled=q),R[11]!==null?V?V.p(R,X):(V=mo(R),V.c(),V.m(t,null)):V&&(V.d(1),V=null)},d(R){R&&y(e),V&&V.d(),Q=!1,ge(O)}}}function Sg(l){let e,t,n,i,o,r,c=l[20](l[0].lastStatus)+"",f,p,_,m,g,h,b,w,C,T=v("settings.syncNow")+"",E,D,N,A=v("settings.disconnect")+"",P,I,M,z=v("settings.resetKey")+"",B,W,H,U,q,Y,Q,O,V,R,X,J,G=l[0].serverUrl&&go(l),x=l[0].deviceName&&_o(l),ee=l[0].deviceId&&vo(l),le=l[0].lastSyncAt&&ho(l),ce=l[0].lastError&&ko(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("span"),i.textContent=`${v("settings.status")}`,o=k(),r=u("span"),f=F(c),p=k(),G&&G.c(),_=k(),x&&x.c(),m=k(),ee&&ee.c(),g=k(),le&&le.c(),h=k(),ce&&ce.c(),b=k(),w=u("div"),C=u("button"),E=F(T),D=k(),N=u("button"),P=F(A),I=k(),M=u("button"),B=F(z),W=k(),H=u("div"),U=u("label"),q=u("span"),q.textContent=`${v("sync.interval")}`,Y=k(),Q=u("div"),O=u("input"),V=k(),R=u("button"),R.textContent=`${v("common.save")}`,s(i,"class","info-label svelte-1fx1e1e"),s(r,"class","info-value svelte-1fx1e1e"),ae(r,"status-ok",l[0].lastStatus==="connected"),ae(r,"status-err",l[0].lastStatus==="error"||l[0].lastStatus==="revoked"),s(n,"class","info-row svelte-1fx1e1e"),s(t,"class","sync-info svelte-1fx1e1e"),s(e,"class","settings-card svelte-1fx1e1e"),s(C,"class","btn btn-primary"),C.disabled=l[1],s(N,"class","btn"),N.disabled=l[1],s(M,"class","btn"),M.disabled=l[1],s(w,"class","sync-actions svelte-1fx1e1e"),s(q,"class","label-text"),s(O,"type","number"),s(O,"min","0"),s(O,"placeholder","0"),s(O,"class","svelte-1fx1e1e"),s(R,"class","btn btn-sm"),s(Q,"class","interval-row svelte-1fx1e1e"),s(H,"class","sync-interval svelte-1fx1e1e")},m(pe,Ee){S(pe,e,Ee),a(e,t),a(t,n),a(n,i),a(n,o),a(n,r),a(r,f),a(t,p),G&&G.m(t,null),a(t,_),x&&x.m(t,null),a(t,m),ee&&ee.m(t,null),a(t,g),le&&le.m(t,null),a(t,h),ce&&ce.m(t,null),S(pe,b,Ee),S(pe,w,Ee),a(w,C),a(C,E),a(w,D),a(w,N),a(N,P),a(w,I),a(w,M),a(M,B),S(pe,W,Ee),S(pe,H,Ee),a(H,U),a(U,q),a(U,Y),a(U,Q),a(Q,O),be(O,l[8]),a(Q,V),a(Q,R),X||(J=[L(C,"click",l[14]),L(N,"click",l[16]),L(M,"click",l[18]),L(O,"input",l[22]),L(R,"click",l[15])],X=!0)},p(pe,Ee){Ee[0]&1&&c!==(c=pe[20](pe[0].lastStatus)+"")&&K(f,c),Ee[0]&1&&ae(r,"status-ok",pe[0].lastStatus==="connected"),Ee[0]&1&&ae(r,"status-err",pe[0].lastStatus==="error"||pe[0].lastStatus==="revoked"),pe[0].serverUrl?G?G.p(pe,Ee):(G=go(pe),G.c(),G.m(t,_)):G&&(G.d(1),G=null),pe[0].deviceName?x?x.p(pe,Ee):(x=_o(pe),x.c(),x.m(t,m)):x&&(x.d(1),x=null),pe[0].deviceId?ee?ee.p(pe,Ee):(ee=vo(pe),ee.c(),ee.m(t,g)):ee&&(ee.d(1),ee=null),pe[0].lastSyncAt?le?le.p(pe,Ee):(le=ho(pe),le.c(),le.m(t,h)):le&&(le.d(1),le=null),pe[0].lastError?ce?ce.p(pe,Ee):(ce=ko(pe),ce.c(),ce.m(t,null)):ce&&(ce.d(1),ce=null),Ee[0]&2&&(C.disabled=pe[1]),Ee[0]&2&&(N.disabled=pe[1]),Ee[0]&2&&(M.disabled=pe[1]),Ee[0]&256&&Dl(O.value)!==pe[8]&&be(O,pe[8])},d(pe){pe&&(y(e),y(b),y(w),y(W),y(H)),G&&G.d(),x&&x.d(),ee&&ee.d(),le&&le.d(),ce&&ce.d(),X=!1,ge(J)}}}function mo(l){let e,t=(l[11]?v("common.test")+" OK":v("error.generic"))+"",n;return{c(){e=u("div"),n=F(t),s(e,"class","connection-result svelte-1fx1e1e"),ae(e,"ok",l[11]),ae(e,"fail",!l[11])},m(i,o){S(i,e,o),a(e,n)},p(i,o){o[0]&2048&&t!==(t=(i[11]?v("common.test")+" OK":v("error.generic"))+"")&&K(n,t),o[0]&2048&&ae(e,"ok",i[11]),o[0]&2048&&ae(e,"fail",!i[11])},d(i){i&&y(e)}}}function go(l){let e,t,n,i,o=l[0].serverUrl+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${v("settings.serverUrl")}`,n=k(),i=u("span"),r=F(o),s(t,"class","info-label svelte-1fx1e1e"),s(i,"class","info-value mono svelte-1fx1e1e"),s(e,"class","info-row svelte-1fx1e1e")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f[0]&1&&o!==(o=c[0].serverUrl+"")&&K(r,o)},d(c){c&&y(e)}}}function _o(l){let e,t,n,i,o=l[0].deviceName+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${v("settings.deviceName")}`,n=k(),i=u("span"),r=F(o),s(t,"class","info-label svelte-1fx1e1e"),s(i,"class","info-value svelte-1fx1e1e"),s(e,"class","info-row svelte-1fx1e1e")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f[0]&1&&o!==(o=c[0].deviceName+"")&&K(r,o)},d(c){c&&y(e)}}}function vo(l){let e,t,n,i,o=l[0].deviceId+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${v("settings.deviceId")}`,n=k(),i=u("span"),r=F(o),s(t,"class","info-label svelte-1fx1e1e"),s(i,"class","info-value mono svelte-1fx1e1e"),s(e,"class","info-row svelte-1fx1e1e")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f[0]&1&&o!==(o=c[0].deviceId+"")&&K(r,o)},d(c){c&&y(e)}}}function ho(l){let e,t,n,i,o=l[0].lastSyncAt+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${v("settings.lastSync")}`,n=k(),i=u("span"),r=F(o),s(t,"class","info-label svelte-1fx1e1e"),s(i,"class","info-value svelte-1fx1e1e"),s(e,"class","info-row svelte-1fx1e1e")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f[0]&1&&o!==(o=c[0].lastSyncAt+"")&&K(r,o)},d(c){c&&y(e)}}}function ko(l){let e,t,n,i,o=l[0].lastError+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${v("settings.lastError")}`,n=k(),i=u("span"),r=F(o),s(t,"class","info-label svelte-1fx1e1e"),s(i,"class","info-value error svelte-1fx1e1e"),s(e,"class","info-row svelte-1fx1e1e")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f[0]&1&&o!==(o=c[0].lastError+"")&&K(r,o)},d(c){c&&y(e)}}}function bo(l){let e,t,n,i,o,r,c,f,p,_,m,g;return{c(){e=u("button"),t=u("div"),n=u("h3"),n.textContent=`${v("settings.confirmDisconnect")}`,i=k(),o=u("p"),o.textContent=`${v("settings.confirmDisconnectDesc")}`,r=k(),c=u("div"),f=u("button"),f.textContent=`${v("common.disconnect")}`,p=k(),_=u("button"),_.textContent=`${v("common.cancel")}`,s(n,"class","svelte-1fx1e1e"),s(o,"class","modal-desc svelte-1fx1e1e"),s(f,"class","btn btn-danger"),s(_,"class","btn"),s(c,"class","modal-actions svelte-1fx1e1e"),s(t,"class","modal svelte-1fx1e1e"),s(e,"class","modal-overlay svelte-1fx1e1e")},m(h,b){S(h,e,b),a(e,t),a(t,n),a(t,i),a(t,o),a(t,r),a(t,c),a(c,f),a(c,p),a(c,_),m||(g=[L(f,"click",l[17]),L(_,"click",l[26]),L(e,"click",l[27])],m=!0)},p:te,d(h){h&&y(e),m=!1,ge(g)}}}function wo(l){let e,t,n,i,o,r,c,f,p,_,m,g;return{c(){e=u("button"),t=u("div"),n=u("h3"),n.textContent=`${v("settings.confirmResetKey")}`,i=k(),o=u("p"),o.textContent=`${v("settings.confirmResetKeyDesc")}`,r=k(),c=u("div"),f=u("button"),f.textContent=`${v("settings.resetKey")}`,p=k(),_=u("button"),_.textContent=`${v("common.cancel")}`,s(n,"class","svelte-1fx1e1e"),s(o,"class","modal-desc svelte-1fx1e1e"),s(f,"class","btn btn-danger"),s(_,"class","btn"),s(c,"class","modal-actions svelte-1fx1e1e"),s(t,"class","modal svelte-1fx1e1e"),s(e,"class","modal-overlay svelte-1fx1e1e")},m(h,b){S(h,e,b),a(e,t),a(t,n),a(t,i),a(t,o),a(t,r),a(t,c),a(c,f),a(c,p),a(c,_),m||(g=[L(f,"click",l[19]),L(_,"click",l[28]),L(e,"click",l[29])],m=!0)},p:te,d(h){h&&y(e),m=!1,ge(g)}}}function Tg(l){let e,t,n,i,o,r,c,f,p,_,m=l[2]&&fo(l),g=l[3]&&!l[2]&&po(l);function h(E,D){return E[0]&&E[0].enabled?Sg:Cg}let b=h(l),w=b(l),C=l[9]&&bo(l),T=l[10]&&wo(l);return{c(){e=u("div"),t=u("h2"),t.textContent=`${v("settings.sync")}`,n=k(),i=u("p"),i.textContent=`${v("settings.syncDesc")}`,o=k(),m&&m.c(),r=k(),g&&g.c(),c=k(),w.c(),f=k(),C&&C.c(),p=k(),T&&T.c(),_=ot(),s(t,"class","svelte-1fx1e1e"),s(i,"class","section-desc svelte-1fx1e1e"),s(e,"class","settings-section svelte-1fx1e1e")},m(E,D){S(E,e,D),a(e,t),a(e,n),a(e,i),a(e,o),m&&m.m(e,null),a(e,r),g&&g.m(e,null),a(e,c),w.m(e,null),S(E,f,D),C&&C.m(E,D),S(E,p,D),T&&T.m(E,D),S(E,_,D)},p(E,D){E[2]?m?m.p(E,D):(m=fo(E),m.c(),m.m(e,r)):m&&(m.d(1),m=null),E[3]&&!E[2]?g?g.p(E,D):(g=po(E),g.c(),g.m(e,c)):g&&(g.d(1),g=null),b===(b=h(E))&&w?w.p(E,D):(w.d(1),w=b(E),w&&(w.c(),w.m(e,null))),E[9]?C?C.p(E,D):(C=bo(E),C.c(),C.m(p.parentNode,p)):C&&(C.d(1),C=null),E[10]?T?T.p(E,D):(T=wo(E),T.c(),T.m(_.parentNode,_)):T&&(T.d(1),T=null)},i:te,o:te,d(E){E&&(y(e),y(f),y(p),y(_)),m&&m.d(),g&&g.d(),w.d(),C&&C.d(E),T&&T.d(E)}}}function ll(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function Eg(l,e,t){let{onRefresh:n=null}=e,i=null,o=!1,r="",c="",f="",p="",_="",m="",g=0,h=!1,b=!1,w=null;async function C(){try{t(0,i=await ll("GetSyncSettings")),i&&(t(5,p=i.serverUrl||""),t(8,g=i.syncInterval||0))}catch{t(0,i=null)}}C();async function T(){t(1,o=!0),t(2,r=""),t(4,f=""),t(11,w=null);try{await ll("SyncTestConnection",p,_,m),t(11,w=!0),t(3,c="connection ok")}catch(R){t(11,w=!1),t(3,c="connection failed: "+String(R))}t(1,o=!1)}async function E(){t(1,o=!0),t(2,r=""),t(4,f="");try{await ll("SyncConfigure",p,_,m),t(3,c="configured"),t(6,_=""),t(7,m=""),await C(),n&&n()}catch(R){t(2,r=String(R))}t(1,o=!1)}function D(R){const X=Array.isArray(R==null?void 0:R.conflicts)?R.conflicts:[],J=Array.isArray(R==null?void 0:R.applyErrors)?R.applyErrors:[],G=[];return X.length>0&&G.push(v("sync.conflictsCount",{count:X.length})),J.length>0&&G.push(v("sync.applyErrorsCount",{count:J.length})),G.join(" · ")}async function N(){t(1,o=!0),t(2,r=""),t(4,f="");try{const R=await ll("SyncNow"),X=v("sync.pushedPulled",{pushed:(R==null?void 0:R.pushed)||0,pulled:(R==null?void 0:R.pulled)||0}),J=D(R);t(3,c=J?X+" · "+J:X),t(4,f=J?"warning":""),await C(),n&&n()}catch(R){t(2,r=String(R))}t(1,o=!1)}async function A(){try{await ll("SyncSetInterval",g),t(3,c=v("sync.settingsSaved")),t(4,f="")}catch(R){t(2,r=String(R))}}function P(){t(9,h=!0)}async function I(){t(9,h=!1),t(1,o=!0),t(4,f="");try{await ll("SyncDisconnect"),t(3,c="disconnected"),await C(),n&&n()}catch(R){t(2,r=String(R))}t(1,o=!1)}function M(){t(10,b=!0)}async function z(){t(10,b=!1),t(1,o=!0),t(4,f="");try{await ll("ResetSyncKey"),t(3,c="key reset"),await C(),n&&n()}catch(R){t(2,r=String(R))}t(1,o=!1)}function B(R){return R?{connected:v("settings.connected"),disconnected:v("settings.disconnected"),disabled:v("settings.notConfigured"),error:v("settings.error"),revoked:v("settings.revoked")}[R]||R:v("settings.notConfigured")}function W(){g=Dl(this.value),t(8,g)}function H(){p=this.value,t(5,p)}function U(){_=this.value,t(6,_)}function q(){m=this.value,t(7,m)}const Y=()=>t(9,h=!1),Q=()=>t(9,h=!1),O=()=>t(10,b=!1),V=()=>t(10,b=!1);return l.$$set=R=>{"onRefresh"in R&&t(21,n=R.onRefresh)},[i,o,r,c,f,p,_,m,g,h,b,w,T,E,N,A,P,I,M,z,B,n,W,H,U,q,Y,Q,O,V]}class Dg extends xe{constructor(e){super(),Ze(this,e,Eg,Tg,Xe,{onRefresh:21},null,[-1,-1])}}function Ig(l){let e,t,n,i;return{c(){e=u("div"),t=u("h2"),t.textContent=`${v("settings.backup")}`,n=k(),i=u("p"),i.textContent=`${v("settings.backupStub")}`,s(t,"class","svelte-19bo7bn"),s(i,"class","section-desc svelte-19bo7bn"),s(e,"class","settings-section svelte-19bo7bn")},m(o,r){S(o,e,r),a(e,t),a(e,n),a(e,i)},p:te,i:te,o:te,d(o){o&&y(e)}}}class Ng extends xe{constructor(e){super(),Ze(this,e,null,Ig,Xe,{})}}function yo(l){let e,t;return{c(){e=u("div"),t=F(l[5]),s(e,"class","status-msg svelte-13i6m7m"),ae(e,"ok",l[6]==="ok"),ae(e,"error",l[6]==="error")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&32&&K(t,n[5]),i&64&&ae(e,"ok",n[6]==="ok"),i&64&&ae(e,"error",n[6]==="error")},d(n){n&&y(e)}}}function Co(l){let e,t,n,i,o,r;return{c(){e=u("div"),t=u("span"),t.textContent="Активный порт",n=k(),i=u("span"),o=F("127.0.0.1:"),r=F(l[3]),s(t,"class","info-label svelte-13i6m7m"),s(i,"class","info-value mono svelte-13i6m7m"),s(e,"class","info-row svelte-13i6m7m")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,o),a(i,r)},p(c,f){f&8&&K(r,c[3])},d(c){c&&y(e)}}}function So(l){let e,t,n,i;return{c(){e=u("button"),t=F("Перезапустить сервер"),s(e,"class","btn"),e.disabled=l[4]},m(o,r){S(o,e,r),a(e,t),n||(i=L(e,"click",l[8]),n=!0)},p(o,r){r&16&&(e.disabled=o[4])},d(o){o&&y(e),n=!1,i()}}}function Ag(l){let e,t,n,i,o,r,c,f,p,_,m,g,h,b,w,C,T,E,D,N,A,P,I,M,z,B,W,H=l[2]?"Запущен":"Остановлен",U,q,Y,Q,O,V,R,X,J,G=l[5]&&yo(l),x=l[2]&&l[3]&&Co(l),ee=l[0]&&So(l);return{c(){e=u("div"),t=u("h2"),t.textContent="Browser Bridge",n=k(),i=u("p"),i.textContent=`Локальный HTTP-сервер для приёма событий от браузерного расширения Verstak Bridge.
Работает только на 127.0.0.1.`,o=k(),G&&G.c(),r=k(),c=u("div"),f=u("div"),p=u("label"),_=u("input"),m=k(),g=u("span"),g.textContent="Включить Browser Bridge",h=k(),b=u("div"),w=u("label"),C=u("span"),C.textContent="Порт",T=k(),E=u("input"),N=k(),A=u("p"),A.textContent="По умолчанию: 9786. Требуется перезапуск сервера при изменении.",P=k(),I=u("div"),M=u("div"),z=u("span"),z.textContent="Статус",B=k(),W=u("span"),U=F(H),q=k(),x&&x.c(),Y=k(),Q=u("div"),O=u("button"),V=F("Сохранить"),R=k(),ee&&ee.c(),s(t,"class","svelte-13i6m7m"),s(i,"class","section-desc svelte-13i6m7m"),s(_,"type","checkbox"),s(g,"class","toggle-text svelte-13i6m7m"),s(p,"class","toggle-label svelte-13i6m7m"),s(f,"class","form-group svelte-13i6m7m"),s(C,"class","label-text svelte-13i6m7m"),s(E,"type","number"),s(E,"min","1024"),s(E,"max","65535"),E.disabled=D=!l[0],s(E,"class","svelte-13i6m7m"),s(A,"class","field-hint svelte-13i6m7m"),s(b,"class","form-group svelte-13i6m7m"),s(z,"class","info-label svelte-13i6m7m"),s(W,"class","info-value svelte-13i6m7m"),ae(W,"status-ok",l[2]),ae(W,"status-off",!l[2]),s(M,"class","info-row svelte-13i6m7m"),s(I,"class","bridge-status svelte-13i6m7m"),s(c,"class","settings-card svelte-13i6m7m"),s(O,"class","btn btn-primary"),O.disabled=l[4],s(Q,"class","actions svelte-13i6m7m"),s(e,"class","settings-section svelte-13i6m7m")},m(le,ce){S(le,e,ce),a(e,t),a(e,n),a(e,i),a(e,o),G&&G.m(e,null),a(e,r),a(e,c),a(c,f),a(f,p),a(p,_),_.checked=l[0],a(p,m),a(p,g),a(c,h),a(c,b),a(b,w),a(w,C),a(w,T),a(w,E),be(E,l[1]),a(b,N),a(b,A),a(c,P),a(c,I),a(I,M),a(M,z),a(M,B),a(M,W),a(W,U),a(I,q),x&&x.m(I,null),a(e,Y),a(e,Q),a(Q,O),a(O,V),a(Q,R),ee&&ee.m(Q,null),X||(J=[L(_,"change",l[10]),L(E,"input",l[11]),L(O,"click",l[7])],X=!0)},p(le,[ce]){le[5]?G?G.p(le,ce):(G=yo(le),G.c(),G.m(e,r)):G&&(G.d(1),G=null),ce&1&&(_.checked=le[0]),ce&1&&D!==(D=!le[0])&&(E.disabled=D),ce&2&&Dl(E.value)!==le[1]&&be(E,le[1]),ce&4&&H!==(H=le[2]?"Запущен":"Остановлен")&&K(U,H),ce&4&&ae(W,"status-ok",le[2]),ce&4&&ae(W,"status-off",!le[2]),le[2]&&le[3]?x?x.p(le,ce):(x=Co(le),x.c(),x.m(I,null)):x&&(x.d(1),x=null),ce&16&&(O.disabled=le[4]),le[0]?ee?ee.p(le,ce):(ee=So(le),ee.c(),ee.m(Q,null)):ee&&(ee.d(1),ee=null)},i:te,o:te,d(le){le&&y(e),G&&G.d(),x&&x.d(),ee&&ee.d(),X=!1,ge(J)}}}function Mg(l,e,t){let{appConfig:n=null}=e,i=!1,o=9786,r=!1,c=0,f=!1,p="",_="";function m(){if(n&&n.vault&&n.vault.bridge){const T=n.vault.bridge;t(0,i=T.enabled!==!1),t(1,o=T.port||9786)}}async function g(){try{if(window.go&&window.go.main&&window.go.main.App){const T=await window.go.main.App.BridgeInfo();t(2,r=T.running||!1),t(3,c=T.port||0)}}catch{t(2,r=!1),t(3,c=0)}}m(),g();async function h(){t(4,f=!0),t(5,p=""),t(6,_="");try{n||t(9,n={}),n.vault||t(9,n.vault={},n),n.vault.bridge||t(9,n.vault.bridge={},n),t(9,n.vault.bridge.enabled=i,n),t(9,n.vault.bridge.port=o,n),window.go&&window.go.main&&window.go.main.App&&await window.go.main.App.SaveAppConfig(n),t(5,p="saved"),t(6,_="ok"),await g()}catch(T){t(5,p=String(T)),t(6,_="error")}t(4,f=!1)}async function b(){t(4,f=!0),t(5,p=""),t(6,_="");try{window.go&&window.go.main&&window.go.main.App&&await window.go.main.App.RestartBridge(),t(5,p="bridge restarted"),t(6,_="ok"),await g()}catch(T){t(5,p=String(T)),t(6,_="error")}t(4,f=!1)}function w(){i=this.checked,t(0,i)}function C(){o=Dl(this.value),t(1,o)}return l.$$set=T=>{"appConfig"in T&&t(9,n=T.appConfig)},[i,o,r,c,f,p,_,h,b,n,w,C]}class jg extends xe{constructor(e){super(),Ze(this,e,Mg,Ag,Xe,{appConfig:9})}}const{window:Lg}=mi;function Pg(l){let e,t;return e=new jg({props:{appConfig:l[1]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p(n,i){const o={};i&2&&(o.appConfig=n[1]),e.$set(o)},i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Fg(l){let e,t;return e=new Ng({}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function zg(l){let e,t;return e=new Dg({props:{onRefresh:l[6]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Rg(l){let e,t;return e=new yg({}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Og(l){let e,t;return e=new bg({}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Bg(l){let e,t;return e=new hg({}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Hg(l){let e,t;return e=new cg({props:{onRefresh:l[2]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Wg(l){let e,t;return e=new ng({props:{onRefresh:l[2]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Vg(l){let e,t;return e=new xm({props:{appConfig:l[1],onSave:l[5]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p(n,i){const o={};i&2&&(o.appConfig=n[1]),e.$set(o)},i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Ug(l){let e,t,n,i,o,r,c,f,p,_,m,g,h,b,w,C;p=new Qm({props:{activeSection:l[0],onSelect:l[3]}});const T=[Vg,Wg,Hg,Bg,Og,Rg,zg,Fg,Pg],E=[];function D(N,A){return N[0]==="general"?0:N[0]==="workspace"?1:N[0]==="templates"?2:N[0]==="plugins"?3:N[0]==="files"?4:N[0]==="activity"?5:N[0]==="sync"?6:N[0]==="backup"?7:N[0]==="browserBridge"?8:-1}return~(g=D(l))&&(h=E[g]=T[g](l)),{c(){e=u("button"),t=u("div"),n=u("div"),i=u("h2"),i.textContent=`${v("settings.title")}`,o=k(),r=u("button"),r.innerHTML='',c=k(),f=u("div"),Ve(p.$$.fragment),_=k(),m=u("div"),h&&h.c(),s(i,"class","svelte-zf2zsc"),s(r,"class","close-btn svelte-zf2zsc"),s(r,"title",v("settings.close")),s(n,"class","settings-header svelte-zf2zsc"),s(m,"class","settings-content svelte-zf2zsc"),s(f,"class","settings-body svelte-zf2zsc"),s(t,"class","settings-window svelte-zf2zsc"),s(e,"class","settings-overlay svelte-zf2zsc")},m(N,A){S(N,e,A),a(e,t),a(t,n),a(n,i),a(n,o),a(n,r),a(t,c),a(t,f),He(p,f,null),a(f,_),a(f,m),~g&&E[g].m(m,null),b=!0,w||(C=[L(Lg,"keydown",l[7]),L(r,"click",l[4]),L(e,"click",Ct(l[4]))],w=!0)},p(N,[A]){const P={};A&1&&(P.activeSection=N[0]),p.$set(P);let I=g;g=D(N),g===I?~g&&E[g].p(N,A):(h&&(at(),me(E[I],1,1,()=>{E[I]=null}),ct()),~g?(h=E[g],h?h.p(N,A):(h=E[g]=T[g](N),h.c()),fe(h,1),h.m(m,null)):h=null)},i(N){b||(fe(p.$$.fragment,N),fe(h),b=!0)},o(N){me(p.$$.fragment,N),me(h),b=!1},d(N){N&&y(e),We(p),~g&&E[g].d(),w=!1,ge(C)}}}function To(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function Kg(l,e,t){let{onClose:n=null}=e,{onSyncRefresh:i=null}=e,{initialSection:o="general"}=e,r=o,c=null;async function f(){try{t(1,c=await To("GetAppConfig"))}catch{t(1,c=null)}}f();function p(b){t(0,r=b)}function _(){n&&n()}async function m(b){try{await To("SaveAppConfig",b),t(1,c=b)}catch(w){console.error(w)}}function g(){i&&i()}function h(b){b.key==="Escape"&&_()}return l.$$set=b=>{"onClose"in b&&t(8,n=b.onClose),"onSyncRefresh"in b&&t(9,i=b.onSyncRefresh),"initialSection"in b&&t(10,o=b.initialSection)},[r,c,f,p,_,m,g,h,n,i,o]}class Gg extends xe{constructor(e){super(),Ze(this,e,Kg,Ug,Xe,{onClose:8,onSyncRefresh:9,initialSection:10})}}function Jg(l){let e,t,n,i,o,r,c,f;return{c(){e=u("div"),t=u("span"),n=k(),i=u("span"),i.textContent=`${v("sync.status.disabled")}`,o=k(),r=u("button"),r.textContent=`${v("sync.configure")}`,s(t,"class","sync-dot dot-disabled svelte-1rxbx0"),s(i,"class","sync-label svelte-1rxbx0"),s(r,"class","btn btn-xs svelte-1rxbx0"),s(e,"class","sync-status-row svelte-1rxbx0")},m(p,_){S(p,e,_),a(e,t),a(e,n),a(e,i),a(e,o),a(e,r),c||(f=L(r,"click",function(){Pt(l[5])&&l[5].apply(this,arguments)}),c=!0)},p(p,_){l=p},d(p){p&&y(e),c=!1,f()}}}function qg(l){let e,t,n,i,o,r=l[7](l[0])+"",c,f,p,_,m,g=(l[1]?v("sync.running"):v("sync.run"))+"",h,b,w,C,T,E,D,N=l[0].unpushedOps>0&&Eo(l),A=l[2]&&Do(l);return{c(){e=u("div"),t=u("span"),i=k(),o=u("span"),c=F(r),f=k(),N&&N.c(),p=k(),_=u("div"),m=u("button"),h=F(g),b=k(),w=u("button"),w.textContent=`${v("sync.details")}`,C=k(),A&&A.c(),T=ot(),s(t,"class",n="sync-dot "+l[6](l[0])+" svelte-1rxbx0"),s(o,"class","sync-label svelte-1rxbx0"),s(m,"class","btn btn-xs svelte-1rxbx0"),m.disabled=l[1],s(w,"class","btn btn-xs btn-link svelte-1rxbx0"),s(_,"class","sync-actions-row svelte-1rxbx0"),s(e,"class","sync-status-row svelte-1rxbx0")},m(P,I){S(P,e,I),a(e,t),a(e,i),a(e,o),a(o,c),a(e,f),N&&N.m(e,null),a(e,p),a(e,_),a(_,m),a(m,h),a(_,b),a(_,w),S(P,C,I),A&&A.m(P,I),S(P,T,I),E||(D=[L(m,"click",function(){Pt(l[4])&&l[4].apply(this,arguments)}),L(w,"click",function(){Pt(l[5])&&l[5].apply(this,arguments)})],E=!0)},p(P,I){l=P,I&1&&n!==(n="sync-dot "+l[6](l[0])+" svelte-1rxbx0")&&s(t,"class",n),I&1&&r!==(r=l[7](l[0])+"")&&K(c,r),l[0].unpushedOps>0?N?N.p(l,I):(N=Eo(l),N.c(),N.m(e,p)):N&&(N.d(1),N=null),I&2&&g!==(g=(l[1]?v("sync.running"):v("sync.run"))+"")&&K(h,g),I&2&&(m.disabled=l[1]),l[2]?A?A.p(l,I):(A=Do(l),A.c(),A.m(T.parentNode,T)):A&&(A.d(1),A=null)},d(P){P&&(y(e),y(C),y(T)),N&&N.d(),A&&A.d(P),E=!1,ge(D)}}}function Eo(l){let e,t=l[0].unpushedOps+"",n,i,o=v("sync.changes")+"",r;return{c(){e=u("span"),n=F(t),i=k(),r=F(o),s(e,"class","sync-count svelte-1rxbx0")},m(c,f){S(c,e,f),a(e,n),a(e,i),a(e,r)},p(c,f){f&1&&t!==(t=c[0].unpushedOps+"")&&K(n,t)},d(c){c&&y(e)}}}function Do(l){let e,t,n;return{c(){e=u("div"),t=F(l[2]),s(e,"class",n=As(l[3]==="warning"?"sync-message sync-message-warning":"sync-message")+" svelte-1rxbx0")},m(i,o){S(i,e,o),a(e,t)},p(i,o){o&4&&K(t,i[2]),o&8&&n!==(n=As(i[3]==="warning"?"sync-message sync-message-warning":"sync-message")+" svelte-1rxbx0")&&s(e,"class",n)},d(i){i&&y(e)}}}function Yg(l){let e;function t(o,r){var c;return(c=o[0])!=null&&c.configured?qg:Jg}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","sync-status-widget svelte-1rxbx0")},m(o,r){S(o,e,r),i.m(e,null)},p(o,[r]){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e,null)))},i:te,o:te,d(o){o&&y(e),i.d()}}}function Qg(l,e,t){let{syncStatus:n=null}=e,{syncLoading:i=!1}=e,{syncMessage:o=""}=e,{syncMessageKind:r=""}=e,{onSync:c=null}=e,{onOpenSettings:f=null}=e;function p(m){return!m||!m.configured?"dot-disabled":i?"dot-syncing":m.revoked?"dot-disabled":m.connected?"dot-connected":m.configured?"dot-warning":"dot-disabled"}function _(m){return!m||!m.configured?v("sync.status.disabled"):i?v("sync.status.syncing"):m.revoked?v("sync.status.error"):m.connected?v("sync.status.connected"):v("sync.status.disconnected")}return l.$$set=m=>{"syncStatus"in m&&t(0,n=m.syncStatus),"syncLoading"in m&&t(1,i=m.syncLoading),"syncMessage"in m&&t(2,o=m.syncMessage),"syncMessageKind"in m&&t(3,r=m.syncMessageKind),"onSync"in m&&t(4,c=m.onSync),"onOpenSettings"in m&&t(5,f=m.onOpenSettings)},[n,i,o,r,c,f,p,_]}class Xg extends xe{constructor(e){super(),Ze(this,e,Qg,Yg,Xe,{syncStatus:0,syncLoading:1,syncMessage:2,syncMessageKind:3,onSync:4,onOpenSettings:5})}}function Io(l,e,t){const n=l.slice();return n[10]=e[t],n}function Zg(l){let e,t=de(l[0]),n=[];for(let i=0;i0&&No(l),I=l[10].ts_start&&Ao(l),M=l[10].status!=="pending"&&Mo(l),z=l[10].selected_text&&jo(l),B=l[10].status==="pending"&&Lo(l);return{c(){e=u("div"),t=u("div"),i=F(n),o=k(),r=u("div"),c=u("div"),p=F(f),_=k(),m=u("div"),h=F(g),w=k(),C=u("div"),P&&P.c(),T=k(),I&&I.c(),E=k(),M&&M.c(),D=k(),z&&z.c(),N=k(),B&&B.c(),A=k(),s(t,"class","event-icon svelte-slao4o"),s(c,"class","event-domain svelte-slao4o"),s(m,"class","event-title svelte-slao4o"),s(m,"title",b=l[10].title),s(C,"class","event-meta svelte-slao4o"),s(r,"class","event-body svelte-slao4o"),s(e,"class","event-item svelte-slao4o"),ae(e,"pending",l[10].status==="pending")},m(W,H){S(W,e,H),a(e,t),a(t,i),a(e,o),a(e,r),a(r,c),a(c,p),a(r,_),a(r,m),a(m,h),a(r,w),a(r,C),P&&P.m(C,null),a(C,T),I&&I.m(C,null),a(C,E),M&&M.m(C,null),a(r,D),z&&z.m(r,null),a(e,N),B&&B.m(e,null),a(e,A)},p(W,H){H&1&&n!==(n=Fo(W[10].type)+"")&&K(i,n),H&1&&f!==(f=(W[10].domain||"?")+"")&&K(p,f),H&1&&g!==(g=yn(W[10].title||W[10].url,80)+"")&&K(h,g),H&1&&b!==(b=W[10].title)&&s(m,"title",b),W[10].active_seconds>0?P?P.p(W,H):(P=No(W),P.c(),P.m(C,T)):P&&(P.d(1),P=null),W[10].ts_start?I?I.p(W,H):(I=Ao(W),I.c(),I.m(C,E)):I&&(I.d(1),I=null),W[10].status!=="pending"?M?M.p(W,H):(M=Mo(W),M.c(),M.m(C,null)):M&&(M.d(1),M=null),W[10].selected_text?z?z.p(W,H):(z=jo(W),z.c(),z.m(r,null)):z&&(z.d(1),z=null),W[10].status==="pending"?B?B.p(W,H):(B=Lo(W),B.c(),B.m(e,A)):B&&(B.d(1),B=null),H&1&&ae(e,"pending",W[10].status==="pending")},d(W){W&&y(e),P&&P.d(),I&&I.d(),M&&M.d(),z&&z.d(),B&&B.d()}}}function $g(l){let e;return{c(){e=u("p"),e.textContent=`${v("noBrowserEvents","Нет событий браузера")}`,s(e,"class","empty-text svelte-slao4o")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function e_(l){let e;return{c(){e=u("p"),e.textContent=`${v("loading","Загрузка...")}`,s(e,"class","loading svelte-slao4o")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function t_(l){let e,t,n,i,o,r=l[1]?"⏳":"🔄",c,f,p,_;function m(b,w){return b[0].length===0?xg:Zg}let g=m(l),h=g(l);return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${v("browserEvents","События браузера")}`,i=k(),o=u("button"),c=F(r),f=k(),h.c(),s(n,"class","svelte-slao4o"),s(o,"class","refresh-btn svelte-slao4o"),o.disabled=l[1],s(t,"class","browser-header svelte-slao4o"),s(e,"class","browser-events svelte-slao4o")},m(b,w){S(b,e,w),a(e,t),a(t,n),a(t,i),a(t,o),a(o,c),a(e,f),h.m(e,null),p||(_=L(o,"click",function(){Pt(l[5])&&l[5].apply(this,arguments)}),p=!0)},p(b,[w]){l=b,w&2&&r!==(r=l[1]?"⏳":"🔄")&&K(c,r),w&2&&(o.disabled=l[1]),g===(g=m(l))&&h?h.p(l,w):(h.d(1),h=g(l),h&&(h.c(),h.m(e,null)))},i:te,o:te,d(b){b&&y(e),h.d(),p=!1,_()}}}function Fo(l){return l==="page_visit"?"🌐":l==="note_capture"?"📝":l==="screenshot"?"📸":"•"}function yn(l,e){return l?l.length>e?l.substring(0,e)+"...":l:""}function l_(l,e,t){let{events:n=[]}=e,{loading:i=!1}=e,{onAccept:o=h=>{}}=e,{onDismiss:r=h=>{}}=e,{onAttach:c=h=>{}}=e,{onRefresh:f=()=>{}}=e,{formatTime:p=h=>""}=e;const _=h=>o(h),m=h=>c(h),g=h=>r(h);return l.$$set=h=>{"events"in h&&t(0,n=h.events),"loading"in h&&t(1,i=h.loading),"onAccept"in h&&t(2,o=h.onAccept),"onDismiss"in h&&t(3,r=h.onDismiss),"onAttach"in h&&t(4,c=h.onAttach),"onRefresh"in h&&t(5,f=h.onRefresh),"formatTime"in h&&t(6,p=h.formatTime)},[n,i,o,r,c,f,p,_,m,g]}class n_ extends xe{constructor(e){super(),Ze(this,e,l_,t_,Xe,{events:0,loading:1,onAccept:2,onDismiss:3,onAttach:4,onRefresh:5,formatTime:6})}}function zo(l,e,t){const n=l.slice();return n[69]=e[t],n}function Ro(l,e,t){const n=l.slice();return n[69]=e[t],n}function Oo(l,e,t){const n=l.slice();return n[64]=e[t],n[65]=e,n[66]=t,n}function Bo(l,e,t){const n=l.slice();return n[61]=e[t],n}function Ho(l,e,t){const n=l.slice();return n[61]=e[t],n}function Wo(l){let e,t;return{c(){e=u("span"),t=F(l[4]),s(e,"class","tab-badge svelte-ii7vwz")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i[0]&16&&K(t,n[4])},d(n){n&&y(e)}}}function Vo(l){let e,t=l[3].length+"",n;return{c(){e=u("span"),n=F(t),s(e,"class","tab-badge svelte-ii7vwz")},m(i,o){S(i,e,o),a(e,n)},p(i,o){o[0]&8&&t!==(t=i[3].length+"")&&K(n,t)},d(i){i&&y(e)}}}function Uo(l){let e,t=l[15].length+"",n;return{c(){e=u("span"),n=F(t),s(e,"class","tab-badge svelte-ii7vwz")},m(i,o){S(i,e,o),a(e,n)},p(i,o){o[0]&32768&&t!==(t=i[15].length+"")&&K(n,t)},d(i){i&&y(e)}}}function i_(l){let e,t,n;return t=new n_({props:{events:l[15],loading:l[16],formatTime:l[5],onAccept:l[17],onDismiss:l[18],onAttach:l[19],onRefresh:l[20]}}),{c(){e=u("div"),Ve(t.$$.fragment),s(e,"class","today-tab-content svelte-ii7vwz")},m(i,o){S(i,e,o),He(t,e,null),n=!0},p(i,o){const r={};o[0]&32768&&(r.events=i[15]),o[0]&65536&&(r.loading=i[16]),o[0]&32&&(r.formatTime=i[5]),o[0]&131072&&(r.onAccept=i[17]),o[0]&262144&&(r.onDismiss=i[18]),o[0]&524288&&(r.onAttach=i[19]),o[0]&1048576&&(r.onRefresh=i[20]),t.$set(r)},i(i){n||(fe(t.$$.fragment,i),n=!0)},o(i){me(t.$$.fragment,i),n=!1},d(i){i&&y(e),We(t)}}}function s_(l){let e,t,n,i,o,r,c,f,p,_,m=l[25]==="asc"?"↑":"↓",g,h,b,w;function C(D,N){return D[3].length===0?u_:c_}let T=C(l),E=T(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("button"),i.textContent=`${v("today.sortByTime")}`,o=k(),r=u("button"),r.textContent=`${v("today.sortByName")}`,c=k(),f=u("button"),f.textContent=`${v("today.sortByType")}`,p=k(),_=u("span"),g=F(m),h=k(),E.c(),s(i,"class","sort-btn svelte-ii7vwz"),ae(i,"active",l[24]==="time"),s(r,"class","sort-btn svelte-ii7vwz"),ae(r,"active",l[24]==="name"),s(f,"class","sort-btn svelte-ii7vwz"),ae(f,"active",l[24]==="type"),s(_,"class","sort-dir svelte-ii7vwz"),s(n,"class","sort-controls svelte-ii7vwz"),s(t,"class","tab-controls svelte-ii7vwz"),s(e,"class","today-tab-content svelte-ii7vwz")},m(D,N){S(D,e,N),a(e,t),a(t,n),a(n,i),a(n,o),a(n,r),a(n,c),a(n,f),a(n,p),a(n,_),a(_,g),a(e,h),E.m(e,null),b||(w=[L(i,"click",l[56]),L(r,"click",l[57]),L(f,"click",l[58])],b=!0)},p(D,N){N[0]&16777216&&ae(i,"active",D[24]==="time"),N[0]&16777216&&ae(r,"active",D[24]==="name"),N[0]&16777216&&ae(f,"active",D[24]==="type"),N[0]&33554432&&m!==(m=D[25]==="asc"?"↑":"↓")&&K(g,m),T===(T=C(D))&&E?E.p(D,N):(E.d(1),E=T(D),E&&(E.c(),E.m(e,null)))},i:te,o:te,d(D){D&&y(e),E.d(),b=!1,ge(w)}}}function o_(l){let e,t,n,i,o,r,c,f,p,_,m=l[23]==="asc"?"↑":"↓",g,h,b,w;function C(D,N){return D[2].length===0?d_:f_}let T=C(l),E=T(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("button"),i.textContent=`${v("today.sortByTime")}`,o=k(),r=u("button"),r.textContent=`${v("today.sortByName")}`,c=k(),f=u("button"),f.textContent=`${v("today.sortByType")}`,p=k(),_=u("span"),g=F(m),h=k(),E.c(),s(i,"class","sort-btn svelte-ii7vwz"),ae(i,"active",l[22]==="time"),s(r,"class","sort-btn svelte-ii7vwz"),ae(r,"active",l[22]==="name"),s(f,"class","sort-btn svelte-ii7vwz"),ae(f,"active",l[22]==="type"),s(_,"class","sort-dir svelte-ii7vwz"),s(n,"class","sort-controls svelte-ii7vwz"),s(t,"class","tab-controls svelte-ii7vwz"),s(e,"class","today-tab-content svelte-ii7vwz")},m(D,N){S(D,e,N),a(e,t),a(t,n),a(n,i),a(n,o),a(n,r),a(n,c),a(n,f),a(n,p),a(n,_),a(_,g),a(e,h),E.m(e,null),b||(w=[L(i,"click",l[51]),L(r,"click",l[52]),L(f,"click",l[53])],b=!0)},p(D,N){N[0]&4194304&&ae(i,"active",D[22]==="time"),N[0]&4194304&&ae(r,"active",D[22]==="name"),N[0]&4194304&&ae(f,"active",D[22]==="type"),N[0]&8388608&&m!==(m=D[23]==="asc"?"↑":"↓")&&K(g,m),T===(T=C(D))&&E?E.p(D,N):(E.d(1),E=T(D),E&&(E.c(),E.m(e,null)))},i:te,o:te,d(D){D&&y(e),E.d(),b=!1,ge(w)}}}function r_(l){let e;function t(o,r){return o[0].length===0?m_:p_}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","today-tab-content svelte-ii7vwz")},m(o,r){S(o,e,r),i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e,null)))},i:te,o:te,d(o){o&&y(e),i.d()}}}function a_(l){let e;function t(o,r){return!o[1]||!o[1].events||o[1].events.length===0?__:g_}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","today-tab-content svelte-ii7vwz")},m(o,r){S(o,e,r),i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e,null)))},i:te,o:te,d(o){o&&y(e),i.d()}}}function c_(l){let e,t=de(lr(l[3],l[24],l[25])),n=[];for(let i=0;i0&&qo(l);function ee(...$){return l[43](l[64],l[65],l[66],...$)}function le(){return l[44](l[64])}function ce(){return l[45](l[64])}function pe(){return l[46](l[64])}function Ee(){return l[47](l[64],l[65],l[66])}function ze(...$){return l[48](l[64],l[65],l[66],...$)}let _e=l[64]._expanded&&l[64].events&&l[64].events.length>0&&Yo(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("button"),r=F(o),c=k(),f=u("span"),_=F(p),m=k(),g=u("span"),b=F(h),w=k(),T=F(C),x&&x.c(),E=k(),D=u("div"),N=u("span"),I=k(),M=u("input"),B=k(),W=u("span"),W.textContent=`${v("suggest.minutes")}`,H=k(),U=u("button"),U.textContent=`${v("suggest.edit")}`,q=k(),Y=u("button"),Y.textContent=`${v("suggest.apply")}`,Q=k(),O=u("button"),O.textContent=`${v("common.delete")}`,V=k(),_e&&_e.c(),R=k(),s(i,"class","suggestion-node link-btn svelte-ii7vwz"),s(f,"class","suggestion-summary svelte-ii7vwz"),s(g,"class","suggestion-meta svelte-ii7vwz"),s(n,"class","suggestion-info svelte-ii7vwz"),s(N,"class","suggestion-confidence-dot svelte-ii7vwz"),s(N,"title",A=v("suggest.confidence."+l[64].confidence)),s(N,"aria-label",P=v("suggest.confidence."+l[64].confidence)),ae(N,"low",l[64].confidence==="low"),ae(N,"medium",l[64].confidence==="medium"),ae(N,"high",l[64].confidence==="high"),s(M,"type","number"),s(M,"class","suggestion-min-input svelte-ii7vwz"),M.value=z=l[64].suggestedMin,s(M,"min","1"),s(M,"max","480"),s(W,"class","suggestion-min-label svelte-ii7vwz"),s(U,"class","btn btn-sm svelte-ii7vwz"),s(Y,"class","btn btn-sm btn-primary svelte-ii7vwz"),s(O,"class","btn btn-sm btn-danger svelte-ii7vwz"),s(D,"class","suggestion-actions svelte-ii7vwz"),s(t,"class","suggestion-main svelte-ii7vwz"),s(t,"role","button"),s(t,"tabindex","0"),s(e,"class","suggestion-card svelte-ii7vwz"),ae(e,"expanded",l[64]._expanded)},m($,se){S($,e,se),a(e,t),a(t,n),a(n,i),a(i,r),a(n,c),a(n,f),a(f,_),a(n,m),a(n,g),a(g,b),a(g,w),a(g,T),x&&x.m(g,null),a(t,E),a(t,D),a(D,N),a(D,I),a(D,M),a(D,B),a(D,W),a(D,H),a(D,U),a(D,q),a(D,Y),a(D,Q),a(D,O),a(e,V),_e&&_e.m(e,null),a(e,R),X||(J=[L(i,"click",Ie(G)),L(M,"change",Ie(ee)),L(U,"click",Ie(le)),L(Y,"click",Ie(ce)),L(O,"click",Ie(pe)),L(t,"click",Ee),L(t,"keydown",ze)],X=!0)},p($,se){l=$,se[0]&1&&o!==(o=l[64].nodeTitle+"")&&K(r,o),se[0]&1&&p!==(p=l[64].summary+"")&&K(_,p),se[0]&1&&h!==(h=l[64].suggestedMin+"")&&K(b,h),l[64].events&&l[64].events.length>0?x?x.p(l,se):(x=qo(l),x.c(),x.m(g,null)):x&&(x.d(1),x=null),se[0]&1&&A!==(A=v("suggest.confidence."+l[64].confidence))&&s(N,"title",A),se[0]&1&&P!==(P=v("suggest.confidence."+l[64].confidence))&&s(N,"aria-label",P),se[0]&1&&ae(N,"low",l[64].confidence==="low"),se[0]&1&&ae(N,"medium",l[64].confidence==="medium"),se[0]&1&&ae(N,"high",l[64].confidence==="high"),se[0]&1&&z!==(z=l[64].suggestedMin)&&M.value!==z&&(M.value=z),l[64]._expanded&&l[64].events&&l[64].events.length>0?_e?_e.p(l,se):(_e=Yo(l),_e.c(),_e.m(e,R)):_e&&(_e.d(1),_e=null),se[0]&1&&ae(e,"expanded",l[64]._expanded)},d($){$&&y(e),x&&x.d(),_e&&_e.d(),X=!1,ge(J)}}}function g_(l){let e,t=de(l[1].events),n=[];for(let i=0;i',q=k(),s(t,"class","feed-icon svelte-ii7vwz"),s(f,"class","feed-type svelte-ii7vwz"),s(g,"class","feed-colon svelte-ii7vwz"),s(b,"class","feed-title link-btn svelte-ii7vwz"),s(c,"class","feed-title-line svelte-ii7vwz"),s(A,"class","feed-event-type svelte-ii7vwz"),s(z,"class","feed-time svelte-ii7vwz"),s(E,"class","feed-meta-line svelte-ii7vwz"),s(r,"class","feed-body svelte-ii7vwz"),s(U,"class","feed-nav-btn svelte-ii7vwz"),s(U,"title",v("common.open")),s(e,"class","feed-item svelte-ii7vwz"),s(e,"role","button"),s(e,"tabindex","0")},m(J,G){S(J,e,G),a(e,t),a(t,i),a(e,o),a(e,r),a(r,c),a(c,f),a(f,_),a(c,m),a(c,g),a(c,h),a(c,b),a(b,C),a(r,T),a(r,E),O&&O.m(E,null),a(E,N),a(E,A),a(A,I),a(E,M),a(E,z),a(z,W),a(e,H),a(e,U),a(e,q),Y||(Q=[L(U,"click",Ie(V)),L(e,"click",R),L(e,"keydown",X)],Y=!0)},p(J,G){l=J,G[0]&2&&n!==(n=tr(l[61].eventType)+"")&&K(i,n),G[0]&2&&p!==(p=l[28](l[61])+"")&&K(_,p),G[0]&2&&w!==(w=(l[61].title||"")+"")&&K(C,w),G[0]&2&&(D=Cn(l[61])),D?O?O.p(l,G):(O=$o(l),O.c(),O.m(E,N)):O&&(O.d(1),O=null),G[0]&66&&P!==(P=l[6](l[61].eventType)+"")&&K(I,P),G[0]&34&&B!==(B=l[5](l[61].createdAt)+"")&&K(W,B)},d(J){J&&y(e),O&&O.d(),Y=!1,ge(Q)}}}function v_(l){var X;let e,t,n,i=(((X=l[1])==null?void 0:X.date)||"")+"",o,r,c,f,p,_,m=v("today.suggestionsTab")+"",g,h,b,w,C,T,E=v("today.captured")+"",D,N,A,P,I,M,z,B,W,H,U,q=l[4]>0&&Wo(l),Y=l[3].length>0&&Vo(l),Q=l[15].length>0&&Uo(l);const O=[a_,r_,o_,s_,i_],V=[];function R(J,G){return J[21]==="feed"?0:J[21]==="suggestions"?1:J[21]==="inprogress"?2:J[21]==="captured"?3:J[21]==="browser"?4:-1}return~(z=R(l))&&(B=V[z]=O[z](l)),{c(){e=u("div"),t=u("div"),n=u("span"),o=F(i),r=k(),c=u("div"),f=u("button"),f.textContent=`${v("today.feed")}`,p=k(),_=u("button"),g=F(m),h=k(),q&&q.c(),b=k(),w=u("button"),w.textContent=`${v("today.inProgress")}`,C=k(),T=u("button"),D=F(E),N=k(),Y&&Y.c(),A=k(),P=u("button"),I=F(`Браузер
- `),Q&&Q.c(),M=k(),B&&B.c(),s(n,"class","today-date svelte-ii7vwz"),s(t,"class","today-header svelte-ii7vwz"),s(f,"class","today-tab svelte-ii7vwz"),ae(f,"active",l[21]==="feed"),s(_,"class","today-tab svelte-ii7vwz"),ae(_,"active",l[21]==="suggestions"),s(w,"class","today-tab svelte-ii7vwz"),ae(w,"active",l[21]==="inprogress"),s(T,"class","today-tab svelte-ii7vwz"),ae(T,"active",l[21]==="captured"),s(P,"class","today-tab svelte-ii7vwz"),ae(P,"active",l[21]==="browser"),s(c,"class","today-tabs svelte-ii7vwz"),s(e,"class","today-screen svelte-ii7vwz")},m(J,G){S(J,e,G),a(e,t),a(t,n),a(n,o),a(e,r),a(e,c),a(c,f),a(c,p),a(c,_),a(_,g),a(_,h),q&&q.m(_,null),a(c,b),a(c,w),a(c,C),a(c,T),a(T,D),a(T,N),Y&&Y.m(T,null),a(c,A),a(c,P),a(P,I),Q&&Q.m(P,null),a(e,M),~z&&V[z].m(e,null),W=!0,H||(U=[L(f,"click",l[34]),L(_,"click",l[35]),L(w,"click",l[36]),L(T,"click",l[37]),L(P,"click",l[38])],H=!0)},p(J,G){var ee;(!W||G[0]&2)&&i!==(i=(((ee=J[1])==null?void 0:ee.date)||"")+"")&&K(o,i),(!W||G[0]&2097152)&&ae(f,"active",J[21]==="feed"),J[4]>0?q?q.p(J,G):(q=Wo(J),q.c(),q.m(_,null)):q&&(q.d(1),q=null),(!W||G[0]&2097152)&&ae(_,"active",J[21]==="suggestions"),(!W||G[0]&2097152)&&ae(w,"active",J[21]==="inprogress"),J[3].length>0?Y?Y.p(J,G):(Y=Vo(J),Y.c(),Y.m(T,null)):Y&&(Y.d(1),Y=null),(!W||G[0]&2097152)&&ae(T,"active",J[21]==="captured"),J[15].length>0?Q?Q.p(J,G):(Q=Uo(J),Q.c(),Q.m(P,null)):Q&&(Q.d(1),Q=null),(!W||G[0]&2097152)&&ae(P,"active",J[21]==="browser");let x=z;z=R(J),z===x?~z&&V[z].p(J,G):(B&&(at(),me(V[x],1,1,()=>{V[x]=null}),ct()),~z?(B=V[z],B?B.p(J,G):(B=V[z]=O[z](J),B.c()),fe(B,1),B.m(e,null)):B=null)},i(J){W||(fe(B),W=!0)},o(J){me(B),W=!1},d(J){J&&y(e),q&&q.d(),Y&&Y.d(),Q&&Q.d(),~z&&V[z].d(),H=!1,ge(U)}}}function tr(l){return l==="note_created"||l==="file_added"||l==="folder_added"||l==="node_created"?"+":l==="file_deleted"||l==="folder_deleted"?"×":l==="file_renamed"||l==="folder_renamed"||l==="node_updated"?"~":l==="file_copied"?"⧉":l==="file_moved"||l==="folder_moved"?"→":l==="note_updated"?"✎":l==="action_created"?"▶":l==="action_done"?"✓":l==="worklog_added"?"⏱":"•"}function Cn(l){const e=[];return l.nodePath&&e.push(l.nodePath),e.length>0?e.join(" → "):""}function lr(l,e,t){const n=[...l];return n.sort((i,o)=>{let r=0;if(e==="name")r=(i.title||"").localeCompare(o.title||"");else if(e==="type"){const c=i.captureKind||i.sourceKind||"",f=o.captureKind||o.sourceKind||"";r=c.localeCompare(f)}else r=(i.capturedAt||i.createdAt||"").localeCompare(o.capturedAt||o.createdAt||"");return t==="asc"?r:-r}),n}function nr(l){return{text:"📝",url:"🔗",file:"📄",image:"🖼",folder:"📁"}[l]||"📦"}function h_(l,e,t){let{todayDashboard:n=null}=e,{suggestions:i=[]}=e,{inProgressItems:o=[]}=e,{todayCaptures:r=[]}=e,{suggestionCount:c=0}=e,{formatTime:f=Z=>""}=e,{eventLabel:p=Z=>Z}=e,{eventIcon:_=Z=>""}=e,{inboxMetaText:m=Z=>""}=e,{onOpenNodeById:g=Z=>{}}=e,{onOpenActivityEvent:h=Z=>{}}=e,{onOpenActivityTarget:b=Z=>{}}=e,{onOpenSuggestionWorklog:w=Z=>{}}=e,{onAcceptSuggestion:C=Z=>{}}=e,{onDeleteSuggestion:T=Z=>{}}=e,{onOpenNodeFolder:E=Z=>{}}=e,{onOpenInboxArtifact:D=Z=>{}}=e,{onOpenTrashNode:N=Z=>{}}=e,{browserEvents:A=[]}=e,{browserLoading:P=!1}=e,{onBrowserAccept:I=Z=>{}}=e,{onBrowserDismiss:M=Z=>{}}=e,{onBrowserAttach:z=Z=>{}}=e,{onBrowserRefresh:B=()=>{}}=e,W="feed";function H(Z){C(Z)}function U(Z){T(Z)}function q(Z){return!Z||!Z.eventType?"":p(Z.eventType)}function Y(Z){if(!(!Z||!Z.eventType)){if(Z.eventType==="folder_deleted"){Z.targetId&&N(Z.targetId);return}if(["file_added","file_deleted","file_renamed","file_copied","file_moved","folder_added","folder_renamed","folder_moved"].includes(Z.eventType)){Z.targetId?b(Z):Z.nodeId&&g(Z.nodeId);return}if(["note_created","note_updated","note_deleted"].includes(Z.eventType)){Z.targetType==="note"&&Z.targetId?b(Z):Z.nodeId&&g(Z.nodeId);return}if(Z.eventType==="worklog_added"){Z.nodeId&&g(Z.nodeId);return}if(["action_created","action_done"].includes(Z.eventType)){Z.nodeId&&g(Z.nodeId);return}(Z.id||Z.nodeId)&&h(Z)}}function Q(Z,ye,ve){const ke=[...Z];return ke.sort((Je,qe)=>{let Ue=0;return ye==="name"?Ue=(Je.title||"").localeCompare(qe.title||""):ye==="type"?Ue=(p(Je.eventType)||"").localeCompare(p(qe.eventType)||""):Ue=(Je.createdAt||"").localeCompare(qe.createdAt||""),ve==="asc"?Ue:-Ue}),ke}let O="time",V="desc",R="time",X="desc";const J=()=>t(21,W="feed"),G=()=>t(21,W="suggestions"),x=()=>t(21,W="inprogress"),ee=()=>t(21,W="captured"),le=()=>t(21,W="browser"),ce=Z=>Y(Z),pe=Z=>Y(Z),Ee=(Z,ye)=>ye.key==="Enter"&&Y(Z),ze=Z=>g(Z.nodeId),_e=(Z,ye,ve,ke)=>t(0,ye[ve].suggestedMin=parseInt(ke.target.value),i),$=Z=>w(Z),se=Z=>H(Z),Ce=Z=>U(Z),De=(Z,ye,ve)=>t(0,ye[ve]._expanded=!Z._expanded,i),we=(Z,ye,ve,ke)=>ke.key==="Enter"&&t(0,ye[ve]._expanded=!Z._expanded,i),Le=Z=>b(Z),Qe=Z=>E(Z.nodeId),Ae=()=>{t(22,O="time"),t(23,V=O==="time"&&V==="desc"?"asc":"desc")},$e=()=>{t(22,O="name"),t(23,V=O==="name"&&V==="desc"?"asc":"desc")},Re=()=>{t(22,O="type"),t(23,V=O==="type"&&V==="desc"?"asc":"desc")},Pe=Z=>h(Z),Ne=(Z,ye)=>ye.key==="Enter"&&h(Z),Ge=()=>{t(24,R="time"),t(25,X=R==="time"&&X==="desc"?"asc":"desc")},Se=()=>{t(24,R="name"),t(25,X=R==="name"&&X==="desc"?"asc":"desc")},je=()=>{t(24,R="type"),t(25,X=R==="type"&&X==="desc"?"asc":"desc")},Me=Z=>D(Z),ft=(Z,ye)=>ye.key==="Enter"&&D(Z);return l.$$set=Z=>{"todayDashboard"in Z&&t(1,n=Z.todayDashboard),"suggestions"in Z&&t(0,i=Z.suggestions),"inProgressItems"in Z&&t(2,o=Z.inProgressItems),"todayCaptures"in Z&&t(3,r=Z.todayCaptures),"suggestionCount"in Z&&t(4,c=Z.suggestionCount),"formatTime"in Z&&t(5,f=Z.formatTime),"eventLabel"in Z&&t(6,p=Z.eventLabel),"eventIcon"in Z&&t(7,_=Z.eventIcon),"inboxMetaText"in Z&&t(8,m=Z.inboxMetaText),"onOpenNodeById"in Z&&t(9,g=Z.onOpenNodeById),"onOpenActivityEvent"in Z&&t(10,h=Z.onOpenActivityEvent),"onOpenActivityTarget"in Z&&t(11,b=Z.onOpenActivityTarget),"onOpenSuggestionWorklog"in Z&&t(12,w=Z.onOpenSuggestionWorklog),"onAcceptSuggestion"in Z&&t(31,C=Z.onAcceptSuggestion),"onDeleteSuggestion"in Z&&t(32,T=Z.onDeleteSuggestion),"onOpenNodeFolder"in Z&&t(13,E=Z.onOpenNodeFolder),"onOpenInboxArtifact"in Z&&t(14,D=Z.onOpenInboxArtifact),"onOpenTrashNode"in Z&&t(33,N=Z.onOpenTrashNode),"browserEvents"in Z&&t(15,A=Z.browserEvents),"browserLoading"in Z&&t(16,P=Z.browserLoading),"onBrowserAccept"in Z&&t(17,I=Z.onBrowserAccept),"onBrowserDismiss"in Z&&t(18,M=Z.onBrowserDismiss),"onBrowserAttach"in Z&&t(19,z=Z.onBrowserAttach),"onBrowserRefresh"in Z&&t(20,B=Z.onBrowserRefresh)},[i,n,o,r,c,f,p,_,m,g,h,b,w,E,D,A,P,I,M,z,B,W,O,V,R,X,H,U,q,Y,Q,C,T,N,J,G,x,ee,le,ce,pe,Ee,ze,_e,$,se,Ce,De,we,Le,Qe,Ae,$e,Re,Pe,Ne,Ge,Se,je,Me,ft]}class k_ extends xe{constructor(e){super(),Ze(this,e,h_,v_,Xe,{todayDashboard:1,suggestions:0,inProgressItems:2,todayCaptures:3,suggestionCount:4,formatTime:5,eventLabel:6,eventIcon:7,inboxMetaText:8,onOpenNodeById:9,onOpenActivityEvent:10,onOpenActivityTarget:11,onOpenSuggestionWorklog:12,onAcceptSuggestion:31,onDeleteSuggestion:32,onOpenNodeFolder:13,onOpenInboxArtifact:14,onOpenTrashNode:33,browserEvents:15,browserLoading:16,onBrowserAccept:17,onBrowserDismiss:18,onBrowserAttach:19,onBrowserRefresh:20},null,[-1,-1,-1])}}function b_(l){let e,t,n,i,o,r,c;return{c(){e=u("div"),t=u("p"),n=F("Плагин «"),i=F(l[4]),o=F("» активен, но HTML-панель не настроена."),r=k(),c=u("p"),c.innerHTML='Для отображения контента добавьте поле panel в plugin.json.',s(c,"class","hint"),s(e,"class","empty-state svelte-42cgi7")},m(f,p){S(f,e,p),a(e,t),a(t,n),a(t,i),a(t,o),a(e,r),a(e,c)},p(f,p){p&16&&K(i,f[4])},d(f){f&&y(e)}}}function w_(l){let e,t;return{c(){e=u("iframe"),s(e,"class","plugin-frame svelte-42cgi7"),s(e,"srcdoc",l[0]),s(e,"sandbox","allow-scripts allow-same-origin"),s(e,"title",t=l[4]+" panel")},m(n,i){S(n,e,i),l[10](e)},p(n,i){i&1&&s(e,"srcdoc",n[0]),i&16&&t!==(t=n[4]+" panel")&&s(e,"title",t)},d(n){n&&y(e),l[10](null)}}}function y_(l){let e,t;return{c(){e=u("p"),t=F(l[2]),s(e,"class","error svelte-42cgi7")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&4&&K(t,n[2])},d(n){n&&y(e)}}}function C_(l){let e;return{c(){e=u("p"),e.textContent="Загрузка…",s(e,"class","loading svelte-42cgi7")},m(t,n){S(t,e,n)},p:te,d(t){t&&y(e)}}}function S_(l){let e,t,n,i,o,r,c;function f(m,g){return m[1]?C_:m[2]?y_:m[0]?w_:b_}let p=f(l),_=p(l);return{c(){e=u("div"),t=u("div"),n=u("h2"),i=F(l[4]),o=F(" — "),r=F(l[5]),c=k(),_.c(),s(n,"class","svelte-42cgi7"),s(t,"class","plugin-page-header svelte-42cgi7"),s(e,"class","plugin-page svelte-42cgi7")},m(m,g){S(m,e,g),a(e,t),a(t,n),a(n,i),a(n,o),a(n,r),a(e,c),_.m(e,null)},p(m,[g]){g&16&&K(i,m[4]),g&32&&K(r,m[5]),p===(p=f(m))&&_?_.p(m,g):(_.d(1),_=p(m),_&&(_.c(),_.m(e,null)))},i:te,o:te,d(m){m&&y(e),_.d()}}}function nl(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function T_(l,e,t){let n,i,o,r,{sectionId:c=""}=e,f="",p=!0,_="",m=null,g=[],h=!1;function b(I){m&&m.contentWindow&&h?m.contentWindow.postMessage(I,"*"):g.push(I)}function w(I){const M=I.data;if(!(!M||!M.source||M.source!=="calendar-plugin"))switch(M.action){case"ready":for(h=!0;g.length>0;)m.contentWindow.postMessage(g.shift(),"*");C();break;case"get-events":T(M.data);break;case"create-event":E(M.data);break;case"update-event":D(M.data);break;case"delete-event":N(M.data);break;default:console.log("[PluginPage] Unknown iframe action:",M.action)}}async function C(){try{const I=new Date,M=I.getFullYear(),z=I.getMonth(),B=new Date(M,z,1).toISOString().slice(0,10)+"T00:00:00",W=new Date(M,z+1,0).toISOString().slice(0,10)+"T23:59:59",[H,U]=await Promise.all([nl("CallPluginFunction",i,"calendar.get_events",JSON.stringify({start:B,end:W})),nl("CallPluginFunction",i,"calendar.get_categories","{}")]),q=H?JSON.parse(H):[],Y=U?JSON.parse(U):[];b({source:"verstak",type:"calendar-data",events:q,categories:Y})}catch(I){console.error("[PluginPage] loadCalendarData:",I)}}async function T(I){try{const M=JSON.stringify({start:I.start,end:I.end}),z=await nl("CallPluginFunction",i,"calendar.get_events",M),B=z?JSON.parse(z):[];b({source:"verstak",type:"calendar-data",events:B})}catch(M){console.error("[PluginPage] get-events:",M)}}async function E(I){try{const M=JSON.stringify(I),z=await nl("CallPluginFunction",i,"calendar.create_event",M),B=z?JSON.parse(z):{};b({source:"verstak",type:"event-created",event:B}),C()}catch(M){console.error("[PluginPage] create-event:",M),b({source:"verstak",type:"error",message:String(M)})}}async function D(I){try{const M=JSON.stringify(I);await nl("CallPluginFunction",i,"calendar.update_event",M),b({source:"verstak",type:"event-updated",event:I}),C()}catch(M){console.error("[PluginPage] update-event:",M)}}async function N(I){try{const M=JSON.stringify({id:I.id});await nl("CallPluginFunction",i,"calendar.delete_event",M),b({source:"verstak",type:"event-deleted",id:I.id}),C()}catch(M){console.error("[PluginPage] delete-event:",M)}}Kl(async()=>{try{t(0,f=await nl("GetPluginPanelHTML",i)||"")}catch(I){t(2,_=String(I))}t(1,p=!1),window.addEventListener("message",w)}),Gl(()=>{window.removeEventListener("message",w)});function A(I,M){b({source:"verstak",type:"drop",date:M,data:I})}function P(I){bn[I?"unshift":"push"](()=>{m=I,t(3,m)})}return l.$$set=I=>{"sectionId"in I&&t(6,c=I.sectionId)},l.$$.update=()=>{l.$$.dirty&64&&t(9,n=c.split(":")),l.$$.dirty&512&&t(4,i=n[1]||""),l.$$.dirty&512&&t(8,o=n[2]||"main"),l.$$.dirty&256&&t(5,r=o.charAt(0).toUpperCase()+o.slice(1))},[f,p,_,m,i,r,c,A,o,n,P]}class E_ extends xe{constructor(e){super(),Ze(this,e,T_,S_,Xe,{sectionId:6,handleDrop:7})}get handleDrop(){return this.$$.ctx[7]}}function ir(l,e,t){const n=l.slice();return n[25]=e[t],n[27]=t,n}function sr(l){let e;function t(o,r){return o[3]?N_:o[1].length===0?I_:D_}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","global-search-results svelte-1dlr37h")},m(o,r){S(o,e,r),i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e,null)))},d(o){o&&y(e),i.d()}}}function D_(l){let e,t=de(l[1]),n=[];for(let i=0;i[]}=e,{typeLabel:i=H=>H||""}=e;const o=Jl();let r="",c=[],f=!1,p=!1,_=0,m,g;function h(H){const U=[],q=i(H.type),Y=M_(H);return q&&U.push(q),Y&&U.push(Y),U.join(" · ")}async function b(){const H=Qc(r);if(H.length<2){t(1,c=[]),t(2,f=!1),t(3,p=!1);return}t(3,p=!0);try{t(1,c=await n("Search",H)||[]),t(4,_=0),t(2,f=!0)}catch{t(1,c=[]),t(2,f=!1)}finally{t(3,p=!1)}}function w(){clearTimeout(g),g=setTimeout(b,180)}function C(){t(2,f=!1),t(4,_=0)}function T(){t(0,r=""),t(1,c=[]),C()}function E(H){H&&(o("open",H),T(),m==null||m.blur())}function D(){w()}function N(H){if(H.key==="Escape"){H.preventDefault(),T(),m==null||m.blur();return}!f||c.length===0||(H.key==="ArrowDown"?(H.preventDefault(),t(4,_=Math.min(c.length-1,_+1))):H.key==="ArrowUp"?(H.preventDefault(),t(4,_=Math.max(0,_-1))):H.key==="Enter"&&(H.preventDefault(),E(c[_])))}async function A(){await bp(),m==null||m.focus(),m==null||m.select()}function P(H){if((H.ctrlKey||H.metaKey)&&H.key.toLowerCase()==="k"){H.preventDefault(),A();return}H.key==="/"&&!j_(H.target)&&(H.preventDefault(),A())}Kl(()=>{window.addEventListener("keydown",P)}),Gl(()=>{window.removeEventListener("keydown",P),clearTimeout(g)});function I(H){bn[H?"unshift":"push"](()=>{m=H,t(5,m)})}function M(){r=this.value,t(0,r)}const z=()=>{c.length>0&&t(2,f=!0)},B=()=>setTimeout(C,160),W=H=>E(H);return l.$$set=H=>{"wailsCall"in H&&t(11,n=H.wailsCall),"typeLabel"in H&&t(12,i=H.typeLabel)},[r,c,f,p,_,m,h,C,E,D,N,n,i,I,M,z,B,W]}class P_ extends xe{constructor(e){super(),Ze(this,e,L_,A_,Xe,{wailsCall:11,typeLabel:12})}}const F_=l=>({}),cr=l=>({});function ur(l){let e,t;return{c(){e=u("span"),t=F(l[1]),s(e,"class","header-subtitle svelte-7x8q9h")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&2&&K(t,n[1])},d(n){n&&y(e)}}}function z_(l){let e,t,n,i=(l[0]||"")+"",o,r,c,f,p,_,m,g=l[1]&&ur(l);p=new P_({props:{wailsCall:l[2],typeLabel:l[3]}}),p.$on("open",l[7]);const h=l[6].actions,b=mp(h,l,l[5],cr);return{c(){e=u("header"),t=u("div"),n=u("span"),o=F(i),r=k(),g&&g.c(),c=k(),f=u("div"),Ve(p.$$.fragment),_=k(),b&&b.c(),s(n,"class","header-title svelte-7x8q9h"),ae(n,"placeholder",!l[0]),s(t,"class","header-left svelte-7x8q9h"),s(f,"class","header-right svelte-7x8q9h"),s(e,"class","header svelte-7x8q9h")},m(w,C){S(w,e,C),a(e,t),a(t,n),a(n,o),a(t,r),g&&g.m(t,null),a(e,c),a(e,f),He(p,f,null),a(f,_),b&&b.m(f,null),m=!0},p(w,[C]){(!m||C&1)&&i!==(i=(w[0]||"")+"")&&K(o,i),(!m||C&1)&&ae(n,"placeholder",!w[0]),w[1]?g?g.p(w,C):(g=ur(w),g.c(),g.m(t,null)):g&&(g.d(1),g=null);const T={};C&4&&(T.wailsCall=w[2]),C&8&&(T.typeLabel=w[3]),p.$set(T),b&&b.p&&(!m||C&32)&&_p(b,h,w,w[5],m?gp(h,w[5],C,F_):vp(w[5]),cr)},i(w){m||(fe(p.$$.fragment,w),fe(b,w),m=!0)},o(w){me(p.$$.fragment,w),me(b,w),m=!1},d(w){w&&y(e),g&&g.d(),We(p),b&&b.d(w)}}}function R_(l,e,t){let{$$slots:n={},$$scope:i}=e,{title:o=""}=e,{subtitle:r=""}=e,{wailsCall:c=async()=>[]}=e,{typeLabel:f=m=>m||""}=e,{onOpenSearchResult:p=()=>{}}=e;const _=m=>p(m.detail);return l.$$set=m=>{"title"in m&&t(0,o=m.title),"subtitle"in m&&t(1,r=m.subtitle),"wailsCall"in m&&t(2,c=m.wailsCall),"typeLabel"in m&&t(3,f=m.typeLabel),"onOpenSearchResult"in m&&t(4,p=m.onOpenSearchResult),"$$scope"in m&&t(5,i=m.$$scope)},[o,r,c,f,p,i,n,_]}class O_ extends xe{constructor(e){super(),Ze(this,e,R_,z_,Xe,{title:0,subtitle:1,wailsCall:2,typeLabel:3,onOpenSearchResult:4})}}const B_={open:'',showInExplorer:'',delete:'',restore:'',purge:'',move:'',attach:'',back:'',emptyTrash:'',folder:''};function it(l,e=16){return``}const{Boolean:Xc}=mi;function fr(l,e,t){const n=l.slice();return n[482]=e[t],n}function dr(l,e,t){const n=l.slice();return n[485]=e[t],n}function pr(l,e,t){const n=l.slice();return n[488]=e[t],n}function mr(l,e,t){const n=l.slice();return n[488]=e[t],n}function gr(l,e,t){const n=l.slice();return n[514]=e[t],n}function _r(l,e,t){const n=l.slice();return n[541]=e[t],n}function vr(l,e,t){const n=l.slice();return n[514]=e[t],n}function hr(l,e,t){const n=l.slice();return n[541]=e[t],n}function kr(l,e,t){const n=l.slice();return n[548]=e[t],n}function br(l,e,t){const n=l.slice();return n[548]=e[t],n}function wr(l,e,t){const n=l.slice();return n[517]=e[t],n[537]=e,n[538]=t,n}function yr(l,e,t){const n=l.slice();return n[514]=e[t],n}function Cr(l,e,t){const n=l.slice();return n[534]=e[t],n}function Sr(l,e,t){const n=l.slice();return n[501]=e[t],n}function Tr(l,e,t){const n=l.slice();return n[527]=e[t],n}function Er(l,e,t){const n=l.slice();return n[501]=e[t],n}function Dr(l,e,t){const n=l.slice();return n[514]=e[t],n}function Ir(l,e,t){const n=l.slice();return n[493]=e[t],n}function Nr(l,e,t){const n=l.slice();return n[514]=e[t],n}function Ar(l,e,t){const n=l.slice();return n[517]=e[t],n[518]=e,n[519]=t,n}function Mr(l,e,t){const n=l.slice();return n[514]=e[t],n}function jr(l,e,t){const n=l.slice();return n[509]=e[t],n}function Lr(l,e,t){const n=l.slice();return n[506]=e[t],n}function Pr(l,e,t){const n=l.slice();return n[501]=e[t],n}function Fr(l,e,t){const n=l.slice();return n[501]=e[t],n}function zr(l,e,t){const n=l.slice();return n[496]=e[t],n}function Rr(l,e,t){const n=l.slice();return n[493]=e[t],n}function Or(l,e,t){const n=l.slice();return n[496]=e[t],n}function Br(l,e,t){const n=l.slice();return n[524]=e[t],n}function Hr(l,e,t){const n=l.slice();return n[555]=e[t],n}function H_(l){let e,t,n,i,o,r,c,f,p,_,m,g,h,b,w,C,T,E,D,N,A,P,I,M,z,B,W,H,U,q,Y,Q,O,V,R,X,J,G,x,ee,le,ce,pe,Ee,ze,_e,$,se,Ce,De,we,Le,Qe,Ae=l[97]&&Wr(l),$e=de(l[0]),Re=[];for(let re=0;re<$e.length;re+=1)Re[re]=Kr(Hr(l,$e,re));const Pe=[K_,U_],Ne=[];function Ge(re,he){return re[14].length>0?0:1}A=Ge(l),P=Ne[A]=Pe[A](l),z=new Xg({props:{syncStatus:l[112],syncLoading:l[113],syncMessage:l[114],syncMessageKind:l[115],onSync:l[239],onOpenSettings:l[245]}}),V=new O_({props:{title:l[119],subtitle:l[118],wailsCall:oe,typeLabel:l[208],onOpenSearchResult:l[235],$$slots:{actions:[q_]},$$scope:{ctx:l}}});let Se=l[34]&&qr(l);const je=[lv,tv,ev,$_,x_,Z_,X_,Q_,Y_],Me=[];function ft(re,he){return he[0]&2&&(J=null),re[37]?0:re[2]?1:re[1]==="inbox"?2:re[1]==="trash"?3:re[1]==="journal"?4:re[1]==="today"?5:re[1]==="activity"?6:(J==null&&(J=!!(re[1]&&re[1].startsWith("plugin:"))),J?7:8)}G=ft(l,[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]),x=Me[G]=je[G](l);let Z=l[69]&&oc(l),ye=l[73].visible&&cc(l),ve=l[40]&&pc(l),ke=l[76]&&mc(l),Je=l[83]&&l[82]&&_c(l),qe=l[104]&&hc(l),Ue=l[107]&&bc(l),tt=l[59]&&Sc(l),Ye=l[99]&&Ec(l),Oe=l[89]&&Dc(l),et=l[13]&&Ic(l);return{c(){e=u("div"),Ae&&Ae.c(),t=k(),n=u("aside"),i=u("div"),o=u("img"),c=k(),f=u("span"),f.textContent=`${v("nav.brand")}`,p=k(),_=u("nav"),m=u("div"),g=u("div"),g.textContent=`${v("nav.system")}`,h=k();for(let re=0;re',U=k(),q=u("span"),Y=F(l[33]),Q=k(),O=u("main"),Ve(V.$$.fragment),R=k(),Se&&Se.c(),X=k(),x.c(),ee=k(),Z&&Z.c(),le=k(),ye&&ye.c(),ce=k(),ve&&ve.c(),pe=k(),ke&&ke.c(),Ee=k(),Je&&Je.c(),ze=k(),qe&&qe.c(),_e=k(),Ue&&Ue.c(),$=k(),tt&&tt.c(),se=k(),Ye&&Ye.c(),Ce=k(),Oe&&Oe.c(),De=k(),et&&et.c(),s(o,"class","logo svelte-19ekrug"),El(o.src,r="/assets/app-icons/icon_32x32.png")||s(o,"src",r),s(o,"width","20"),s(o,"height","20"),s(o,"alt",""),s(f,"class","brand-name svelte-19ekrug"),s(i,"class","sidebar-brand svelte-19ekrug"),s(g,"class","nav-label svelte-19ekrug"),s(m,"class","nav-group svelte-19ekrug"),s(T,"class","svelte-19ekrug"),s(D,"class","nav-add-btn svelte-19ekrug"),s(D,"title",v("common.create")),s(C,"class","nav-label-row svelte-19ekrug"),s(w,"class","nav-group svelte-19ekrug"),s(_,"class","sidebar-nav svelte-19ekrug"),s(H,"class","sidebar-settings-btn svelte-19ekrug"),s(H,"title",v("common.settings")),s(q,"class","version svelte-19ekrug"),s(W,"class","sidebar-footer-row svelte-19ekrug"),s(M,"class","sidebar-footer svelte-19ekrug"),s(n,"class","sidebar svelte-19ekrug"),s(O,"class","main svelte-19ekrug"),s(e,"class","app svelte-19ekrug")},m(re,he){S(re,e,he),Ae&&Ae.m(e,null),a(e,t),a(e,n),a(n,i),a(i,o),a(i,c),a(i,f),a(n,p),a(n,_),a(_,m),a(m,g),a(m,h);for(let Ke=0;Ke{Ne[Ke]=null}),ct(),P=Ne[A],P?P.p(re,he):(P=Ne[A]=Pe[A](re),P.c()),fe(P,1),P.m(w,null));const Ft={};he[3]&524288&&(Ft.syncStatus=re[112]),he[3]&1048576&&(Ft.syncLoading=re[113]),he[3]&2097152&&(Ft.syncMessage=re[114]),he[3]&4194304&&(Ft.syncMessageKind=re[115]),z.$set(Ft),(!we||he[1]&4)&&K(Y,re[33]);const Kt={};he[3]&67108864&&(Kt.title=re[119]),he[3]&33554432&&(Kt.subtitle=re[118]),he[0]&2|he[1]&100663296|he[2]&8|he[18]&1&&(Kt.$$scope={dirty:he,ctx:re}),V.$set(Kt),re[34]?Se?Se.p(re,he):(Se=qr(re),Se.c(),Se.m(O,X)):Se&&(Se.d(1),Se=null);let ol=G;G=ft(re,he),G===ol?Me[G].p(re,he):(at(),me(Me[ol],1,1,()=>{Me[ol]=null}),ct(),x=Me[G],x?x.p(re,he):(x=Me[G]=je[G](re),x.c()),fe(x,1),x.m(O,ee)),re[69]?Z?(Z.p(re,he),he[2]&128&&fe(Z,1)):(Z=oc(re),Z.c(),fe(Z,1),Z.m(O,le)):Z&&(at(),me(Z,1,1,()=>{Z=null}),ct()),re[73].visible?ye?(ye.p(re,he),he[2]&2048&&fe(ye,1)):(ye=cc(re),ye.c(),fe(ye,1),ye.m(O,ce)):ye&&(at(),me(ye,1,1,()=>{ye=null}),ct()),re[40]?ve?ve.p(re,he):(ve=pc(re),ve.c(),ve.m(O,pe)):ve&&(ve.d(1),ve=null),re[76]?ke?ke.p(re,he):(ke=mc(re),ke.c(),ke.m(O,Ee)):ke&&(ke.d(1),ke=null),re[83]&&re[82]?Je?Je.p(re,he):(Je=_c(re),Je.c(),Je.m(O,ze)):Je&&(Je.d(1),Je=null),re[104]?qe?qe.p(re,he):(qe=hc(re),qe.c(),qe.m(O,_e)):qe&&(qe.d(1),qe=null),re[107]?Ue?Ue.p(re,he):(Ue=bc(re),Ue.c(),Ue.m(O,$)):Ue&&(Ue.d(1),Ue=null),re[59]?tt?tt.p(re,he):(tt=Sc(re),tt.c(),tt.m(O,se)):tt&&(tt.d(1),tt=null),re[99]?Ye?(Ye.p(re,he),he[3]&64&&fe(Ye,1)):(Ye=Ec(re),Ye.c(),fe(Ye,1),Ye.m(O,Ce)):Ye&&(at(),me(Ye,1,1,()=>{Ye=null}),ct()),re[89]?Oe?(Oe.p(re,he),he[2]&134217728&&fe(Oe,1)):(Oe=Dc(re),Oe.c(),fe(Oe,1),Oe.m(O,De)):Oe&&(at(),me(Oe,1,1,()=>{Oe=null}),ct()),re[13]?et?(et.p(re,he),he[0]&8192&&fe(et,1)):(et=Ic(re),et.c(),fe(et,1),et.m(O,null)):et&&(at(),me(et,1,1,()=>{et=null}),ct())},i(re){we||(fe(P),fe(z.$$.fragment,re),fe(V.$$.fragment,re),fe(x),fe(Z),fe(ye),fe(Ye),fe(Oe),fe(et),we=!0)},o(re){me(P),me(z.$$.fragment,re),me(V.$$.fragment,re),me(x),me(Z),me(ye),me(Ye),me(Oe),me(et),we=!1},d(re){re&&y(e),Ae&&Ae.d(),Fe(Re,re),Ne[A].d(),We(z),We(V),Se&&Se.d(),Me[G].d(),Z&&Z.d(),ye&&ye.d(),ve&&ve.d(),ke&&ke.d(),Je&&Je.d(),qe&&qe.d(),Ue&&Ue.d(),tt&&tt.d(),Ye&&Ye.d(),Oe&&Oe.d(),et&&et.d(),Le=!1,ge(Qe)}}}function W_(l){var n;let e,t;return e=new Rm({props:{vaultPath:((n=l[10])==null?void 0:n.vaultPath)||"",onComplete:l[241]}}),{c(){Ve(e.$$.fragment)},m(i,o){He(e,i,o),t=!0},p(i,o){var c;const r={};o[0]&1024&&(r.vaultPath=((c=i[10])==null?void 0:c.vaultPath)||""),e.$set(r)},i(i){t||(fe(e.$$.fragment,i),t=!0)},o(i){me(e.$$.fragment,i),t=!1},d(i){We(e,i)}}}function V_(l){let e,t;return e=new Pm({props:{onComplete:l[240]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Wr(l){let e,t,n;return{c(){e=u("div"),t=u("div"),n=F(l[98]),s(t,"class","capture-drop-box svelte-19ekrug"),s(e,"class","capture-drop-overlay svelte-19ekrug")},m(i,o){S(i,e,o),a(e,t),a(t,n)},p(i,o){o[3]&32&&K(n,i[98])},d(i){i&&y(e)}}}function Vr(l){let e,t;return{c(){e=u("span"),t=F(l[50]),s(e,"class","nav-badge svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i[1]&524288&&K(t,n[50])},d(n){n&&y(e)}}}function Ur(l){let e,t;return{c(){e=u("span"),t=F(l[64]),s(e,"class","nav-badge svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i[2]&4&&K(t,n[64])},d(n){n&&y(e)}}}function Kr(l){let e,t=l[555].label+"",n,i,o,r,c,f,p,_=l[555].id==="journal"&&l[50]>0&&Vr(l),m=l[555].id==="trash"&&l[64]>0&&Ur(l);function g(){return l[244](l[555])}return{c(){e=u("button"),n=F(t),i=k(),_&&_.c(),o=k(),m&&m.c(),r=k(),s(e,"class",c="nav-item "+(l[1]===l[555].id?"selected":"")+" svelte-19ekrug")},m(h,b){S(h,e,b),a(e,n),a(e,i),_&&_.m(e,null),a(e,o),m&&m.m(e,null),a(e,r),f||(p=L(e,"click",g),f=!0)},p(h,b){l=h,b[0]&1&&t!==(t=l[555].label+"")&&K(n,t),l[555].id==="journal"&&l[50]>0?_?_.p(l,b):(_=Vr(l),_.c(),_.m(e,o)):_&&(_.d(1),_=null),l[555].id==="trash"&&l[64]>0?m?m.p(l,b):(m=Ur(l),m.c(),m.m(e,r)):m&&(m.d(1),m=null),b[0]&3&&c!==(c="nav-item "+(l[1]===l[555].id?"selected":"")+" svelte-19ekrug")&&s(e,"class",c)},d(h){h&&y(e),_&&_.d(),m&&m.d(),f=!1,p()}}}function U_(l){let e;return{c(){e=u("div"),e.textContent=`${v("nav.noNodes")}`,s(e,"class","nav-empty svelte-19ekrug")},m(t,n){S(t,e,n)},p:te,i:te,o:te,d(t){t&&y(e)}}}function K_(l){var r;let e,t,n,i,o;return t=new Yc({props:{nodes:l[14],expanded:l[84],selectedNodeId:((r=l[2])==null?void 0:r.id)||"",onSelect:l[125],onToggle:l[155],onContextMenu:l[153],onDrop:l[156]}}),{c(){e=u("div"),Ve(t.$$.fragment),s(e,"class","workspace-tree-area svelte-19ekrug"),s(e,"role","region"),s(e,"aria-label",v("nav.workspace")),ae(e,"drop-valid",l[95])},m(c,f){S(c,e,f),He(t,e,null),n=!0,i||(o=[L(e,"dragover",Sn(l[158])),L(e,"dragleave",l[159]),L(e,"drop",l[157])],i=!0)},p(c,f){var _;const p={};f[0]&16384&&(p.nodes=c[14]),f[2]&4194304&&(p.expanded=c[84]),f[0]&4&&(p.selectedNodeId=((_=c[2])==null?void 0:_.id)||""),t.$set(p),(!n||f[3]&4)&&ae(e,"drop-valid",c[95])},i(c){n||(fe(t.$$.fragment,c),n=!0)},o(c){me(t.$$.fragment,c),n=!1},d(c){c&&y(e),We(t),i=!1,ge(o)}}}function G_(l){let e,t,n,i=it("emptyTrash",14)+"",o,r=v("trash.emptyTrash")+"",c,f,p,_,m,g=l[65].length>0&&Gr(l);return{c(){g&&g.c(),e=k(),t=u("button"),n=new ui(!1),o=k(),c=F(r),f=k(),p=u("button"),p.textContent=`${v("trash.openFolder")}`,n.a=o,s(t,"class","btn btn-sm btn-danger svelte-19ekrug"),s(p,"class","btn btn-sm svelte-19ekrug")},m(h,b){g&&g.m(h,b),S(h,e,b),S(h,t,b),n.m(i,t),a(t,o),a(t,c),S(h,f,b),S(h,p,b),_||(m=[L(t,"click",l[184]),L(p,"click",l[249])],_=!0)},p(h,b){h[65].length>0?g?g.p(h,b):(g=Gr(h),g.c(),g.m(e.parentNode,e)):g&&(g.d(1),g=null)},d(h){h&&(y(e),y(t),y(f),y(p)),g&&g.d(h),_=!1,ge(m)}}}function J_(l){let e,t=(l[56]?v("common.loading"):v("inbox.pasteClipboard"))+"",n,i,o,r,c,f=l[57]&&Jr(l);return{c(){e=u("button"),n=F(t),i=k(),f&&f.c(),o=ot(),s(e,"class","btn btn-primary svelte-19ekrug"),e.disabled=l[56]},m(p,_){S(p,e,_),a(e,n),S(p,i,_),f&&f.m(p,_),S(p,o,_),r||(c=L(e,"click",l[210]),r=!0)},p(p,_){_[1]&33554432&&t!==(t=(p[56]?v("common.loading"):v("inbox.pasteClipboard"))+"")&&K(n,t),_[1]&33554432&&(e.disabled=p[56]),p[57]?f?f.p(p,_):(f=Jr(p),f.c(),f.m(o.parentNode,o)):f&&(f.d(1),f=null)},d(p){p&&(y(e),y(i),y(o)),f&&f.d(p),r=!1,c()}}}function Gr(l){let e,t,n=it("restore",14)+"",i,o=v("trash.restore")+"",r,c,f=l[65].length+"",p,_,m,g,h,b=it("purge",14)+"",w,C=v("common.delete")+"",T,E,D=l[65].length+"",N,A,P,I;return{c(){e=u("button"),t=new ui(!1),i=k(),r=F(o),c=F(" ("),p=F(f),_=F(")"),m=k(),g=u("button"),h=new ui(!1),w=k(),T=F(C),E=F(" ("),N=F(D),A=F(")"),t.a=i,s(e,"class","btn btn-sm btn-primary svelte-19ekrug"),h.a=w,s(g,"class","btn btn-sm btn-danger svelte-19ekrug")},m(M,z){S(M,e,z),t.m(n,e),a(e,i),a(e,r),a(e,c),a(e,p),a(e,_),S(M,m,z),S(M,g,z),h.m(b,g),a(g,w),a(g,T),a(g,E),a(g,N),a(g,A),P||(I=[L(e,"click",l[247]),L(g,"click",l[248])],P=!0)},p(M,z){z[2]&8&&f!==(f=M[65].length+"")&&K(p,f),z[2]&8&&D!==(D=M[65].length+"")&&K(N,D)},d(M){M&&(y(e),y(m),y(g)),P=!1,ge(I)}}}function Jr(l){let e,t;return{c(){e=u("span"),t=F(l[57]),s(e,"class","inbox-capture-status svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i[1]&67108864&&K(t,n[57])},d(n){n&&y(e)}}}function q_(l){let e;function t(o,r){if(o[1]==="inbox")return J_;if(o[1]==="trash")return G_}let n=t(l),i=n&&n(l);return{c(){e=u("div"),i&&i.c(),s(e,"slot","actions"),s(e,"class","header-actions svelte-19ekrug")},m(o,r){S(o,e,r),i&&i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i&&i.d(1),i=n&&n(o),i&&(i.c(),i.m(e,null)))},d(o){o&&y(e),i&&i.d()}}}function qr(l){let e,t=l[120](l[34])+"",n,i,o,r,c;return{c(){e=u("div"),n=F(t),i=k(),o=u("button"),o.innerHTML='',s(o,"class","dismiss-btn svelte-19ekrug"),s(o,"aria-label","Dismiss"),s(e,"class","error-banner svelte-19ekrug"),s(e,"role","button"),s(e,"tabindex","0")},m(f,p){S(f,e,p),a(e,n),a(e,i),a(e,o),r||(c=[L(o,"click",Ie(l[250])),L(e,"click",l[251]),L(e,"keydown",function(){Pt(gt(l[252]))&>(l[252]).apply(this,arguments)})],r=!0)},p(f,p){l=f,p[1]&8&&t!==(t=l[120](l[34])+"")&&K(n,t)},d(f){f&&y(e),r=!1,ge(c)}}}function Y_(l){let e,t,n;function i(c,f){if(c[80])return sv;if(c[0].length>0)return iv;if(c[34])return nv}let o=i(l),r=o&&o(l);return{c(){e=u("div"),t=u("h2"),t.textContent=`${v("welcome.title")}`,n=k(),r&&r.c(),s(t,"class","svelte-19ekrug"),s(e,"class","welcome svelte-19ekrug")},m(c,f){S(c,e,f),a(e,t),a(e,n),r&&r.m(e,null)},p(c,f){o===(o=i(c))&&r?r.p(c,f):(r&&r.d(1),r=o&&o(c),r&&(r.c(),r.m(e,null)))},i:te,o:te,d(c){c&&y(e),r&&r.d()}}}function Q_(l){let e,t;return e=new E_({props:{sectionId:l[1]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p(n,i){const o={};i[0]&2&&(o.sectionId=n[1]),e.$set(o)},i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function X_(l){let e;function t(o,r){return o[17].length===0?rv:ov}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","activity-feed svelte-19ekrug")},m(o,r){S(o,e,r),i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e,null)))},i:te,o:te,d(o){o&&y(e),i.d()}}}function Z_(l){let e,t,n,i;const o=[cv,av],r=[];function c(f,p){return f[16]?0:1}return e=c(l),t=r[e]=o[e](l),{c(){t.c(),n=ot()},m(f,p){r[e].m(f,p),S(f,n,p),i=!0},p(f,p){let _=e;e=c(f),e===_?r[e].p(f,p):(at(),me(r[_],1,1,()=>{r[_]=null}),ct(),t=r[e],t?t.p(f,p):(t=r[e]=o[e](f),t.c()),fe(t,1),t.m(n.parentNode,n))},i(f){i||(fe(t),i=!0)},o(f){me(t),i=!1},d(f){f&&y(n),r[e].d(f)}}}function x_(l){let e,t,n,i=v("suggest.title")+"",o,r,c,f,p,_,m,g=l[50]>0&&Xr(l);function h(C,T){return C[28]==="suggestions"?fv:uv}let b=h(l),w=b(l);return{c(){e=u("div"),t=u("div"),n=u("button"),o=F(i),r=k(),g&&g.c(),c=k(),f=u("button"),f.textContent=`${v("journal.worklogTab")}`,p=k(),w.c(),s(n,"class","journal-tab svelte-19ekrug"),ae(n,"active",l[28]==="suggestions"),s(f,"class","journal-tab svelte-19ekrug"),ae(f,"active",l[28]==="worklog"),s(t,"class","journal-tabs svelte-19ekrug"),s(e,"class","journal-screen svelte-19ekrug")},m(C,T){S(C,e,T),a(e,t),a(t,n),a(n,o),a(n,r),g&&g.m(n,null),a(t,c),a(t,f),a(e,p),w.m(e,null),_||(m=[L(n,"click",l[332]),L(f,"click",l[333])],_=!0)},p(C,T){C[50]>0?g?g.p(C,T):(g=Xr(C),g.c(),g.m(n,null)):g&&(g.d(1),g=null),T[0]&268435456&&ae(n,"active",C[28]==="suggestions"),T[0]&268435456&&ae(f,"active",C[28]==="worklog"),b===(b=h(C))&&w?w.p(C,T):(w.d(1),w=b(C),w&&(w.c(),w.m(e,null)))},i:te,o:te,d(C){C&&y(e),g&&g.d(),w.d(),_=!1,ge(m)}}}function $_(l){let e,t,n,i,o,r;function c(_,m){return!_[7]||(_[7].nodes||[]).length===0?Tv:Sv}let f=c(l),p=f(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("p"),o=F(l[67]),r=k(),p.c(),s(i,"class","svelte-19ekrug"),s(n,"class","svelte-19ekrug"),s(t,"class","trash-header svelte-19ekrug"),s(e,"class","trash-screen svelte-19ekrug")},m(_,m){S(_,e,m),a(e,t),a(t,n),a(n,i),a(i,o),a(e,r),p.m(e,null)},p(_,m){m[2]&32&&K(o,_[67]),f===(f=c(_))&&p?p.p(_,m):(p.d(1),p=f(_),p&&(p.c(),p.m(e,null)))},i:te,o:te,d(_){_&&y(e),p.d()}}}function ev(l){let e,t,n,i,o,r,c,f,p=l[3].length>0&&wa(l);function _(h,b){return h[3].length===0?Av:h[117]?Nv:Iv}let m=_(l),g=m(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("p"),i.textContent=`${v("inbox.subtitle")}`,o=k(),p&&p.c(),r=k(),g.c(),s(i,"class","svelte-19ekrug"),s(n,"class","svelte-19ekrug"),s(t,"class","inbox-header svelte-19ekrug"),s(e,"class","inbox-screen svelte-19ekrug"),s(e,"role","region"),s(e,"aria-label",v("nav.inbox")),ae(e,"drop-valid",l[96])},m(h,b){S(h,e,b),a(e,t),a(t,n),a(n,i),a(e,o),p&&p.m(e,null),a(e,r),g.m(e,null),c||(f=[L(e,"dragover",l[211]),L(e,"dragleave",l[212]),L(e,"drop",l[213])],c=!0)},p(h,b){h[3].length>0?p?p.p(h,b):(p=wa(h),p.c(),p.m(e,r)):p&&(p.d(1),p=null),m===(m=_(h))&&g?g.p(h,b):(g.d(1),g=m(h),g&&(g.c(),g.m(e,null))),b[3]&8&&ae(e,"drop-valid",h[96])},i:te,o:te,d(h){h&&y(e),p&&p.d(),g.d(),c=!1,ge(f)}}}function tv(l){let e,t,n,i,o,r,c=de(l[122]),f=[];for(let g=0;g{_[b]=null}),ct()),~i?(o=_[i],o?o.p(g,h):(o=_[i]=p[i](g),o.c()),fe(o,1),o.m(n,null)):o=null)},i(g){r||(fe(o),r=!0)},o(g){me(o),r=!1},d(g){g&&(y(e),y(t),y(n)),Fe(f,g),~i&&_[i].d()}}}function lv(l){let e,t,n,i=l[37].title+"",o,r,c,f,p,_,m,g,h,b,w,C=l[37].dirty&&sc();return{c(){e=u("div"),t=u("div"),n=u("span"),o=F(i),r=k(),C&&C.c(),c=k(),f=u("div"),p=u("button"),p.textContent=`${v("common.save")}`,_=k(),m=u("button"),m.textContent=`${v("common.close")}`,g=k(),h=u("textarea"),s(n,"class","note-title svelte-19ekrug"),s(p,"class","btn btn-primary svelte-19ekrug"),s(m,"class","btn svelte-19ekrug"),s(f,"class","note-editor-actions svelte-19ekrug"),s(t,"class","note-editor-header svelte-19ekrug"),s(h,"class","note-textarea svelte-19ekrug"),s(h,"placeholder",v("note.placeholder")),s(e,"class","note-editor svelte-19ekrug")},m(T,E){S(T,e,E),a(e,t),a(t,n),a(n,o),a(t,r),C&&C.m(t,null),a(t,c),a(t,f),a(f,p),a(f,_),a(f,m),a(e,g),a(e,h),be(h,l[37].content),b||(w=[L(p,"click",l[171]),L(m,"click",l[169]),L(h,"input",l[253]),L(h,"input",l[170])],b=!0)},p(T,E){E[1]&64&&i!==(i=T[37].title+"")&&K(o,i),T[37].dirty?C||(C=sc(),C.c(),C.m(t,c)):C&&(C.d(1),C=null),E[1]&64&&be(h,T[37].content)},i:te,o:te,d(T){T&&y(e),C&&C.d(),b=!1,ge(w)}}}function nv(l){let e,t=v("common.error")+"",n,i,o;return{c(){e=u("p"),n=F(t),i=k(),o=F(l[34]),s(e,"class","error-text svelte-19ekrug")},m(r,c){S(r,e,c),a(e,n),a(e,i),a(e,o)},p(r,c){c[1]&8&&K(o,r[34])},d(r){r&&y(e)}}}function iv(l){let e,t,n;return{c(){e=u("p"),e.textContent=`${v("welcome.selectSection")}`,t=k(),n=u("p"),n.textContent=`${v("welcome.createCase")}`,s(e,"class","svelte-19ekrug"),s(n,"class","hint svelte-19ekrug")},m(i,o){S(i,e,o),S(i,t,o),S(i,n,o)},p:te,d(i){i&&(y(e),y(t),y(n))}}}function sv(l){let e;return{c(){e=u("p"),e.textContent=`${v("common.loading")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},p:te,d(t){t&&y(e)}}}function ov(l){let e,t=de(l[17]),n=[];for(let i=0;il[353].call(J)),s(V,"title",v("journal.billableHint")),s(V,"class","svelte-19ekrug"),s(pe,"class","label-text svelte-19ekrug"),_e.__value="all",be(_e,_e.__value),s(_e,"class","svelte-19ekrug"),$.__value="no",be($,$.__value),s($,"class","svelte-19ekrug"),se.__value="yes",be(se,se.__value),s(se,"class","svelte-19ekrug"),s(ze,"class","svelte-19ekrug"),l[25]===void 0&&sl(()=>l[354].call(ze)),s(ce,"title",v("journal.approxHint")),s(ce,"class","svelte-19ekrug"),s(De,"class","btn btn-sm svelte-19ekrug"),s(Le,"class","btn btn-sm svelte-19ekrug"),s(T,"class","journal-filters-row svelte-19ekrug"),s(b,"class","journal-filter-section svelte-19ekrug"),s(t,"class","journal-header svelte-19ekrug")},m(ve,ke){Pe&&Pe.m(ve,ke),S(ve,e,ke),S(ve,t,ke),a(t,n),a(n,i),a(n,o),a(n,r),a(r,c),a(r,f),a(r,p),a(r,_),a(r,m),a(r,g),Ne&&Ne.m(r,null),a(t,h),a(t,b),a(b,w),a(b,C),a(b,T),a(T,E),a(E,D),a(E,N),a(E,A),be(A,l[20]),a(T,P),a(T,I),a(I,M),a(I,z),a(I,B),be(B,l[21]),a(T,W),a(T,H),a(H,U),a(H,q),a(H,Y),je.m(Y,null),a(T,Q),Me&&Me.m(T,null),a(T,O),a(T,V),a(V,R),a(V,X),a(V,J),a(J,G),a(J,x),a(J,ee),Ut(J,l[24],!0),a(T,le),a(T,ce),a(ce,pe),a(ce,Ee),a(ce,ze),a(ze,_e),a(ze,$),a(ze,se),Ut(ze,l[25],!0),a(T,Ce),a(T,De),a(T,we),a(T,Le),S(ve,Qe,ke),ye.m(ve,ke),S(ve,Ae,ke),$e||(Re=[L(c,"click",l[343]),L(p,"click",l[344]),L(m,"click",l[345]),L(A,"input",l[346]),L(B,"input",l[347]),L(J,"change",l[353]),L(ze,"change",l[354]),L(De,"click",l[193]),L(Le,"click",l[200])],$e=!0)},p(ve,ke){ve[19]?Pe?Pe.p(ve,ke):(Pe=Zr(ve),Pe.c(),Pe.m(e.parentNode,e)):Pe&&(Pe.d(1),Pe=null),ve[27]?Ne?Ne.p(ve,ke):(Ne=la(ve),Ne.c(),Ne.m(r,null)):Ne&&(Ne.d(1),Ne=null),ke[0]&1048576&&be(A,ve[20]),ke[0]&2097152&&be(B,ve[21]),Se===(Se=Ge(ve))&&je?je.p(ve,ke):(je.d(1),je=Se(ve),je&&(je.c(),je.m(Y,null))),ve[23]?Me?Me.p(ve,ke):(Me=sa(ve),Me.c(),Me.m(T,O)):Me&&(Me.d(1),Me=null),ke[0]&16777216&&Ut(J,ve[24]),ke[0]&33554432&&Ut(ze,ve[25]),Z===(Z=ft(ve))&&ye?ye.p(ve,ke):(ye.d(1),ye=Z(ve),ye&&(ye.c(),ye.m(Ae.parentNode,Ae)))},d(ve){ve&&(y(e),y(t),y(Qe),y(Ae)),Pe&&Pe.d(ve),Ne&&Ne.d(),je.d(),Me&&Me.d(),ye.d(ve),$e=!1,ge(Re)}}}function fv(l){let e;function t(o,r){return o[49].length===0?Cv:yv}let n=t(l),i=n(l);return{c(){i.c(),e=ot()},m(o,r){i.m(o,r),S(o,e,r)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e.parentNode,e)))},d(o){o&&y(e),i.d(o)}}}function Zr(l){let e,t,n=v("journal.total")+"",i,o,r=Math.floor(l[19].totalMinutes/60)+"",c,f,p=l[19].totalMinutes%60+"",_,m,g=l[19].totalEntries+"",h,b,w=v("worklog.min")+"",C,T,E,D,N=l[19].byDay&&l[19].byDay.length>0&&xr(l),A=l[19].byNode&&l[19].byNode.length>0&&ea(l);return{c(){e=u("div"),t=u("div"),i=F(n),o=F(": "),c=F(r),f=F("ч "),_=F(p),m=F("м ("),h=F(g),b=k(),C=F(w),T=F(")"),E=k(),N&&N.c(),D=k(),A&&A.c(),s(t,"class","summary-total svelte-19ekrug"),s(e,"class","journal-summary svelte-19ekrug")},m(P,I){S(P,e,I),a(e,t),a(t,i),a(t,o),a(t,c),a(t,f),a(t,_),a(t,m),a(t,h),a(t,b),a(t,C),a(t,T),a(e,E),N&&N.m(e,null),a(e,D),A&&A.m(e,null)},p(P,I){I[0]&524288&&r!==(r=Math.floor(P[19].totalMinutes/60)+"")&&K(c,r),I[0]&524288&&p!==(p=P[19].totalMinutes%60+"")&&K(_,p),I[0]&524288&&g!==(g=P[19].totalEntries+"")&&K(h,g),P[19].byDay&&P[19].byDay.length>0?N?N.p(P,I):(N=xr(P),N.c(),N.m(e,D)):N&&(N.d(1),N=null),P[19].byNode&&P[19].byNode.length>0?A?A.p(P,I):(A=ea(P),A.c(),A.m(e,null)):A&&(A.d(1),A=null)},d(P){P&&y(e),N&&N.d(),A&&A.d()}}}function xr(l){let e,t,n,i=de(l[19].byDay),o=[];for(let r=0;r0?bv:M[541].source==="suggestion"?kv:M[541].source==="unknown"||M[541].source==="imported"?hv:M[541]._hasEvents?vv:_v}let A=N(l),P=A(l),I=l[541]._events&&ua(l);return{c(){e=u("tr"),t=u("td"),n=u("div"),i=u("div"),o=u("button"),o.textContent=`${v("worklog.editEntry")}`,r=k(),c=u("button"),c.textContent=`${v("worklog.deleteEntry")}`,f=k(),D&&D.c(),p=k(),_=u("div"),m=u("span"),m.textContent=`${v("worklog.source")}`,g=k(),P.c(),h=k(),I&&I.c(),b=k(),s(o,"class","btn btn-sm svelte-19ekrug"),s(c,"class","btn btn-sm btn-danger svelte-19ekrug"),s(i,"class","journal-detail-actions svelte-19ekrug"),s(m,"class","journal-detail-label svelte-19ekrug"),s(_,"class","journal-detail-section svelte-19ekrug"),s(n,"class","journal-detail-body svelte-19ekrug"),s(t,"colspan","8"),s(t,"class","svelte-19ekrug"),s(e,"class","journal-row-detail svelte-19ekrug")},m(M,z){S(M,e,z),a(e,t),a(t,n),a(n,i),a(i,o),a(i,r),a(i,c),a(n,f),D&&D.m(n,null),a(n,p),a(n,_),a(_,m),a(_,g),P.m(_,null),a(n,h),I&&I.m(n,null),a(e,b),w||(C=[L(o,"click",Ie(T)),L(c,"click",Ie(E))],w=!0)},p(M,z){l=M,l[541].details?D?D.p(l,z):(D=ca(l),D.c(),D.m(n,p)):D&&(D.d(1),D=null),A!==(A=N(l))&&(P.d(1),P=A(l),P&&(P.c(),P.m(_,null))),l[541]._events?I?I.p(l,z):(I=ua(l),I.c(),I.m(n,null)):I&&(I.d(1),I=null)},d(M){M&&y(e),D&&D.d(),P.d(),I&&I.d(),w=!1,ge(C)}}}function ca(l){let e,t,n,i,o=l[541].details+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${v("worklog.details")}`,n=k(),i=u("p"),r=F(o),s(t,"class","journal-detail-label svelte-19ekrug"),s(i,"class","svelte-19ekrug"),s(e,"class","journal-detail-section svelte-19ekrug")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f[0]&262144&&o!==(o=c[541].details+"")&&K(r,o)},d(c){c&&y(e)}}}function _v(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function vv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestion")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function hv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function kv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestionNoEvents")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function bv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestion")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function wv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceManual")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function ua(l){let e,t,n,i=de(l[541]._events),o=[];for(let r=0;r0&&pa(l);function ee(...$){return l[335](l[517],l[537],l[538],...$)}function le(){return l[336](l[517])}function ce(){return l[337](l[517])}function pe(){return l[338](l[517])}function Ee(){return l[339](l[517],l[537],l[538])}function ze(...$){return l[340](l[517],l[537],l[538],...$)}let _e=l[517]._expanded&&l[517].events&&l[517].events.length>0&&ma(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("button"),r=F(o),c=k(),f=u("span"),_=F(p),m=k(),g=u("span"),b=F(h),w=k(),T=F(C),x&&x.c(),E=k(),D=u("div"),N=u("span"),I=k(),M=u("input"),B=k(),W=u("span"),W.textContent=`${v("suggest.minutes")}`,H=k(),U=u("button"),U.textContent=`${v("suggest.edit")}`,q=k(),Y=u("button"),Y.textContent=`${v("suggest.apply")}`,Q=k(),O=u("button"),O.textContent=`${v("common.delete")}`,V=k(),_e&&_e.c(),R=k(),s(i,"class","suggestion-node link-btn svelte-19ekrug"),s(f,"class","suggestion-summary svelte-19ekrug"),s(g,"class","suggestion-meta svelte-19ekrug"),s(n,"class","suggestion-info svelte-19ekrug"),s(N,"class","suggestion-confidence-dot svelte-19ekrug"),s(N,"title",A=v("suggest.confidence."+l[517].confidence)),s(N,"aria-label",P=v("suggest.confidence."+l[517].confidence)),ae(N,"low",l[517].confidence==="low"),ae(N,"medium",l[517].confidence==="medium"),ae(N,"high",l[517].confidence==="high"),s(M,"type","number"),s(M,"class","suggestion-min-input svelte-19ekrug"),M.value=z=l[517].suggestedMin,s(M,"min","1"),s(M,"max","480"),s(W,"class","suggestion-min-label svelte-19ekrug"),s(U,"class","btn btn-sm svelte-19ekrug"),s(Y,"class","btn btn-sm btn-primary svelte-19ekrug"),s(O,"class","btn btn-sm btn-danger svelte-19ekrug"),s(D,"class","suggestion-actions svelte-19ekrug"),s(t,"class","suggestion-main svelte-19ekrug"),s(t,"role","button"),s(t,"tabindex","0"),s(e,"class","suggestion-card svelte-19ekrug"),ae(e,"expanded",l[517]._expanded)},m($,se){S($,e,se),a(e,t),a(t,n),a(n,i),a(i,r),a(n,c),a(n,f),a(f,_),a(n,m),a(n,g),a(g,b),a(g,w),a(g,T),x&&x.m(g,null),a(t,E),a(t,D),a(D,N),a(D,I),a(D,M),a(D,B),a(D,W),a(D,H),a(D,U),a(D,q),a(D,Y),a(D,Q),a(D,O),a(e,V),_e&&_e.m(e,null),a(e,R),X||(J=[L(i,"click",Ie(G)),L(M,"change",Ie(ee)),L(U,"click",Ie(le)),L(Y,"click",Ie(ce)),L(O,"click",Ie(pe)),L(t,"click",Ee),L(t,"keydown",ze)],X=!0)},p($,se){l=$,se[1]&262144&&o!==(o=l[517].nodeTitle+"")&&K(r,o),se[1]&262144&&p!==(p=l[517].summary+"")&&K(_,p),se[1]&262144&&h!==(h=l[517].suggestedMin+"")&&K(b,h),l[517].events&&l[517].events.length>0?x?x.p(l,se):(x=pa(l),x.c(),x.m(g,null)):x&&(x.d(1),x=null),se[1]&262144&&A!==(A=v("suggest.confidence."+l[517].confidence))&&s(N,"title",A),se[1]&262144&&P!==(P=v("suggest.confidence."+l[517].confidence))&&s(N,"aria-label",P),se[1]&262144&&ae(N,"low",l[517].confidence==="low"),se[1]&262144&&ae(N,"medium",l[517].confidence==="medium"),se[1]&262144&&ae(N,"high",l[517].confidence==="high"),se[1]&262144&&z!==(z=l[517].suggestedMin)&&M.value!==z&&(M.value=z),l[517]._expanded&&l[517].events&&l[517].events.length>0?_e?_e.p(l,se):(_e=ma(l),_e.c(),_e.m(e,R)):_e&&(_e.d(1),_e=null),se[1]&262144&&ae(e,"expanded",l[517]._expanded)},d($){$&&y(e),x&&x.d(),_e&&_e.d(),X=!1,ge(J)}}}function Sv(l){let e,t,n,i,o,r,c,f,p,_,m,g=l[8]&&ka(l);function h(C,T){return C[66].length===0?Dv:Ev}let b=h(l),w=b(l);return{c(){e=u("div"),t=u("section"),n=u("div"),g&&g.c(),i=k(),o=u("div"),r=u("h3"),c=F(l[68]),f=k(),p=u("p"),_=F(l[67]),m=k(),w.c(),s(r,"class","svelte-19ekrug"),s(p,"class","svelte-19ekrug"),s(o,"class","svelte-19ekrug"),s(n,"class","trash-section-head svelte-19ekrug"),s(t,"class","trash-section svelte-19ekrug"),s(e,"class","trash-browser svelte-19ekrug")},m(C,T){S(C,e,T),a(e,t),a(t,n),g&&g.m(n,null),a(n,i),a(n,o),a(o,r),a(r,c),a(o,f),a(o,p),a(p,_),a(t,m),w.m(t,null)},p(C,T){C[8]?g?g.p(C,T):(g=ka(C),g.c(),g.m(n,i)):g&&(g.d(1),g=null),T[2]&64&&K(c,C[68]),T[2]&32&&K(_,C[67]),b===(b=h(C))&&w?w.p(C,T):(w.d(1),w=b(C),w&&(w.c(),w.m(t,null)))},d(C){C&&y(e),g&&g.d(),w.d()}}}function Tv(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${v("trash.empty")}`,s(t,"class","svelte-19ekrug"),s(e,"class","empty-state svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p:te,d(n){n&&y(e)}}}function ka(l){let e,t=it("back")+"",n,i;return{c(){e=u("button"),s(e,"class","inbox-icon-btn svelte-19ekrug"),s(e,"title",v("common.backLabel")),s(e,"aria-label",v("common.backLabel"))},m(o,r){S(o,e,r),e.innerHTML=t,n||(i=L(e,"click",l[178]),n=!0)},p:te,d(o){o&&y(e),n=!1,i()}}}function Ev(l){let e,t=de(l[66]),n=[];for(let i=0;i0,r,c,f,p=o&&Na(l);function _(h,b){return h[39].length===0?Zv:Xv}let m=_(l),g=m(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`+ ${v("worklog.addEntry")}`,i=k(),p&&p.c(),r=k(),g.c(),s(n,"class","btn btn-primary btn-sm svelte-19ekrug"),s(t,"class","worklog-toolbar svelte-19ekrug"),s(e,"class","worklog-tab svelte-19ekrug")},m(h,b){S(h,e,b),a(e,t),a(t,n),a(e,i),p&&p.m(e,null),a(e,r),g.m(e,null),c||(f=L(n,"click",l[290]),c=!0)},p(h,b){b[0]&4|b[1]&262144&&(o=h[2]&&h[49].filter(h[243]).length>0),o?p?p.p(h,b):(p=Na(h),p.c(),p.m(e,r)):p&&(p.d(1),p=null),m===(m=_(h))&&g?g.p(h,b):(g.d(1),g=m(h),g&&(g.c(),g.m(e,null)))},i:te,o:te,d(h){h&&y(e),p&&p.d(),g.d(),c=!1,f()}}}function Vv(l){let e,t,n,i,o,r;function c(_,m){return _[38].length===0?ih:nh}let f=c(l),p=f(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`${v("action.addAction")}`,i=k(),p.c(),s(n,"class","btn btn-primary svelte-19ekrug"),s(t,"class","tab-toolbar svelte-19ekrug"),s(e,"class","actions-tab svelte-19ekrug")},m(_,m){S(_,e,m),a(e,t),a(t,n),a(e,i),p.m(e,null),o||(r=L(n,"click",l[227]),o=!0)},p(_,m){f===(f=c(_))&&p?p.p(_,m):(p.d(1),p=f(_),p&&(p.c(),p.m(e,null)))},i:te,o:te,d(_){_&&y(e),p.d(),o=!1,r()}}}function Uv(l){let e,t;function n(c,f){return c[58].length===0?oh:sh}let i=n(l),o=i(l),r=l[63]&&Ya(l);return{c(){e=u("div"),o.c(),t=k(),r&&r.c(),s(e,"class","links-tab svelte-19ekrug")},m(c,f){S(c,e,f),o.m(e,null),a(e,t),r&&r.m(e,null)},p(c,f){i===(i=n(c))&&o?o.p(c,f):(o.d(1),o=i(c),o&&(o.c(),o.m(e,t))),c[63]?r?r.p(c,f):(r=Ya(c),r.c(),r.m(e,null)):r&&(r.d(1),r=null)},i:te,o:te,d(c){c&&y(e),o.d(),r&&r.d()}}}function Kv(l){let e;function t(o,r){return o[55].length===0?ah:rh}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","inbox-tab svelte-19ekrug")},m(o,r){S(o,e,r),i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e,null)))},i:te,o:te,d(o){o&&y(e),i.d()}}}function Gv(l){let e,t,n,i=v("file.addFile")+"",o,r,c,f=v("file.addFolder")+"",p,_,m,g,h,b,w,C,T,E,D,N=l[93].items.length>0&&Xa(l);const A=[dh,fh],P=[];function I(z,B){return z[85]?0:1}b=I(l),w=P[b]=A[b](l);let M=l[81]&&!l[83]&&xa();return{c(){e=u("div"),t=u("div"),n=u("button"),o=F(i),r=k(),c=u("button"),p=F(f),_=k(),m=u("button"),m.textContent=`${v("file.newFile")}`,g=k(),N&&N.c(),h=k(),w.c(),C=k(),M&&M.c(),s(n,"class","btn btn-primary svelte-19ekrug"),n.disabled=l[81],s(c,"class","btn svelte-19ekrug"),c.disabled=l[81],s(m,"class","btn svelte-19ekrug"),s(t,"class","tab-toolbar svelte-19ekrug"),s(e,"class","files-tab svelte-19ekrug")},m(z,B){S(z,e,B),a(e,t),a(t,n),a(n,o),a(t,r),a(t,c),a(c,p),a(t,_),a(t,m),a(t,g),N&&N.m(t,null),a(e,h),P[b].m(e,null),a(e,C),M&&M.m(e,null),T=!0,E||(D=[L(n,"click",l[201]),L(c,"click",l[202]),L(m,"click",l[132])],E=!0)},p(z,B){(!T||B[2]&524288)&&(n.disabled=z[81]),(!T||B[2]&524288)&&(c.disabled=z[81]),z[93].items.length>0?N?N.p(z,B):(N=Xa(z),N.c(),N.m(t,null)):N&&(N.d(1),N=null);let W=b;b=I(z),b===W?P[b].p(z,B):(at(),me(P[W],1,1,()=>{P[W]=null}),ct(),w=P[b],w?w.p(z,B):(w=P[b]=A[b](z),w.c()),fe(w,1),w.m(e,C)),z[81]&&!z[83]?M||(M=xa(),M.c(),M.m(e,null)):M&&(M.d(1),M=null)},i(z){T||(fe(w),T=!0)},o(z){me(w),T=!1},d(z){z&&y(e),N&&N.d(),P[b].d(),M&&M.d(),E=!1,ge(D)}}}function Jv(l){let e,t,n,i,o,r,c,f=l[74]&&$a(l);function p(g,h){return g[36].length===0&&!g[74]?hh:vh}let _=p(l),m=_(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`${v("note.add")}`,i=k(),f&&f.c(),o=k(),m.c(),s(n,"class","btn btn-primary svelte-19ekrug"),s(t,"class","tab-toolbar svelte-19ekrug"),s(e,"class","notes-tab svelte-19ekrug")},m(g,h){S(g,e,h),a(e,t),a(t,n),a(e,i),f&&f.m(e,null),a(e,o),m.m(e,null),r||(c=L(n,"click",l[165]),r=!0)},p(g,h){g[74]?f?f.p(g,h):(f=$a(g),f.c(),f.m(e,o)):f&&(f.d(1),f=null),_===(_=p(g))&&m?m.p(g,h):(m.d(1),m=_(g),m&&(m.c(),m.m(e,null)))},i:te,o:te,d(g){g&&y(e),f&&f.d(),m.d(),r=!1,c()}}}function qv(l){let e,t,n=l[2].title+"",i,o,r,c,f,p,_=l[207](l[2].type)+"",m,g,h,b,w,C=(l[2].section||"—")+"",T,E,D,N,A,P=vt(l[2].createdAt)+"",I,M,z,B,W,H,U,q,Y=v("overview.newNote")+"",Q,O,V,R,X,J,G=v("overview.addFile")+"",x,ee,le,ce,pe,Ee,ze=v("overview.addAction")+"",_e,$,se,Ce,De,we,Le,Qe=v("overview.logTime")+"",Ae,$e,Re,Pe,Ne,Ge=l[36].length>0&&tc(l),Se=l[39].length>0&&nc(l);return{c(){e=u("div"),t=u("h2"),i=F(n),o=k(),r=u("div"),c=u("div"),f=u("span"),f.textContent=`${v("overview.type")}`,p=u("span"),m=F(_),g=k(),h=u("div"),b=u("span"),b.textContent=`${v("overview.section")}`,w=u("span"),T=F(C),E=k(),D=u("div"),N=u("span"),N.textContent=`${v("overview.created")}`,A=u("span"),I=F(P),M=k(),z=u("div"),B=u("button"),W=ie("svg"),H=ie("path"),U=ie("path"),q=k(),Q=F(Y),O=k(),V=u("button"),R=ie("svg"),X=ie("path"),J=k(),x=F(G),ee=k(),le=u("button"),ce=ie("svg"),pe=ie("polygon"),Ee=k(),_e=F(ze),$=k(),se=u("button"),Ce=ie("svg"),De=ie("circle"),we=ie("polyline"),Le=k(),Ae=F(Qe),$e=k(),Ge&&Ge.c(),Re=k(),Se&&Se.c(),s(t,"class","svelte-19ekrug"),s(f,"class","meta-label svelte-19ekrug"),s(p,"class","svelte-19ekrug"),s(c,"class","meta-item svelte-19ekrug"),s(b,"class","meta-label svelte-19ekrug"),s(w,"class","svelte-19ekrug"),s(h,"class","meta-item svelte-19ekrug"),s(N,"class","meta-label svelte-19ekrug"),s(A,"class","svelte-19ekrug"),s(D,"class","meta-item svelte-19ekrug"),s(r,"class","meta-grid svelte-19ekrug"),s(H,"d","M12 20h9"),s(H,"class","svelte-19ekrug"),s(U,"d","M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"),s(U,"class","svelte-19ekrug"),s(W,"width","16"),s(W,"height","16"),s(W,"viewBox","0 0 24 24"),s(W,"fill","none"),s(W,"stroke","currentColor"),s(W,"stroke-width","2"),s(W,"stroke-linecap","round"),s(W,"stroke-linejoin","round"),s(W,"class","svelte-19ekrug"),s(B,"class","qa-btn svelte-19ekrug"),s(X,"d","M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"),s(X,"class","svelte-19ekrug"),s(R,"width","16"),s(R,"height","16"),s(R,"viewBox","0 0 24 24"),s(R,"fill","none"),s(R,"stroke","currentColor"),s(R,"stroke-width","2"),s(R,"stroke-linecap","round"),s(R,"stroke-linejoin","round"),s(R,"class","svelte-19ekrug"),s(V,"class","qa-btn svelte-19ekrug"),s(pe,"points","13 2 3 14 12 14 11 22 21 10 12 10 13 2"),s(pe,"class","svelte-19ekrug"),s(ce,"width","16"),s(ce,"height","16"),s(ce,"viewBox","0 0 24 24"),s(ce,"fill","none"),s(ce,"stroke","currentColor"),s(ce,"stroke-width","2"),s(ce,"stroke-linecap","round"),s(ce,"stroke-linejoin","round"),s(ce,"class","svelte-19ekrug"),s(le,"class","qa-btn svelte-19ekrug"),s(De,"cx","12"),s(De,"cy","12"),s(De,"r","10"),s(De,"class","svelte-19ekrug"),s(we,"points","12 6 12 12 16 14"),s(we,"class","svelte-19ekrug"),s(Ce,"width","16"),s(Ce,"height","16"),s(Ce,"viewBox","0 0 24 24"),s(Ce,"fill","none"),s(Ce,"stroke","currentColor"),s(Ce,"stroke-width","2"),s(Ce,"stroke-linecap","round"),s(Ce,"stroke-linejoin","round"),s(Ce,"class","svelte-19ekrug"),s(se,"class","qa-btn svelte-19ekrug"),s(z,"class","quick-actions svelte-19ekrug"),s(e,"class","overview svelte-19ekrug")},m(je,Me){S(je,e,Me),a(e,t),a(t,i),a(e,o),a(e,r),a(r,c),a(c,f),a(c,p),a(p,m),a(r,g),a(r,h),a(h,b),a(h,w),a(w,T),a(r,E),a(r,D),a(D,N),a(D,A),a(A,I),a(e,M),a(e,z),a(z,B),a(B,W),a(W,H),a(W,U),a(B,q),a(B,Q),a(z,O),a(z,V),a(V,R),a(R,X),a(V,J),a(V,x),a(z,ee),a(z,le),a(le,ce),a(ce,pe),a(le,Ee),a(le,_e),a(z,$),a(z,se),a(se,Ce),a(Ce,De),a(Ce,we),a(se,Le),a(se,Ae),a(e,$e),Ge&&Ge.m(e,null),a(e,Re),Se&&Se.m(e,null),Pe||(Ne=[L(B,"click",l[255]),L(V,"click",l[256]),L(le,"click",l[227]),L(se,"click",l[257])],Pe=!0)},p(je,Me){Me[0]&4&&n!==(n=je[2].title+"")&&K(i,n),Me[0]&4&&_!==(_=je[207](je[2].type)+"")&&K(m,_),Me[0]&4&&C!==(C=(je[2].section||"—")+"")&&K(T,C),Me[0]&4&&P!==(P=vt(je[2].createdAt)+"")&&K(I,P),je[36].length>0?Ge?Ge.p(je,Me):(Ge=tc(je),Ge.c(),Ge.m(e,Re)):Ge&&(Ge.d(1),Ge=null),je[39].length>0?Se?Se.p(je,Me):(Se=nc(je),Se.c(),Se.m(e,null)):Se&&(Se.d(1),Se=null)},i:te,o:te,d(je){je&&y(e),Ge&&Ge.d(),Se&&Se.d(),Pe=!1,ge(Ne)}}}function Yv(l){let e,t=de(l[32]),n=[];for(let i=0;i0&&Aa(l);function q(){return l[292](l[517])}function Y(){return l[293](l[517])}function Q(){return l[294](l[517])}function O(){return l[295](l[517],l[518],l[519])}function V(...X){return l[296](l[517],l[518],l[519],...X)}let R=l[517]._expanded&&l[517].events&&l[517].events.length>0&&Ma(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("span"),r=F(o),c=k(),f=u("span"),_=F(p),m=k(),h=F(g),U&&U.c(),b=k(),w=u("div"),C=u("span"),D=k(),N=u("button"),N.textContent=`${v("suggest.edit")}`,A=k(),P=u("button"),P.textContent=`${v("worklog.apply")}`,I=k(),M=u("button"),M.textContent=`${v("common.delete")}`,z=k(),R&&R.c(),B=k(),s(i,"class","suggestion-summary svelte-19ekrug"),s(f,"class","suggestion-meta svelte-19ekrug"),s(n,"class","suggestion-info svelte-19ekrug"),s(C,"class","suggestion-confidence-dot svelte-19ekrug"),s(C,"title",T=v("suggest.confidence."+l[517].confidence)),s(C,"aria-label",E=v("suggest.confidence."+l[517].confidence)),ae(C,"low",l[517].confidence==="low"),ae(C,"medium",l[517].confidence==="medium"),ae(C,"high",l[517].confidence==="high"),s(N,"class","btn btn-sm svelte-19ekrug"),s(P,"class","btn btn-sm btn-primary svelte-19ekrug"),s(M,"class","btn btn-sm btn-danger svelte-19ekrug"),s(w,"class","suggestion-actions svelte-19ekrug"),s(t,"class","suggestion-main svelte-19ekrug"),s(t,"role","button"),s(t,"tabindex","0"),s(e,"class","suggestion-card svelte-19ekrug"),ae(e,"expanded",l[517]._expanded)},m(X,J){S(X,e,J),a(e,t),a(t,n),a(n,i),a(i,r),a(n,c),a(n,f),a(f,_),a(f,m),a(f,h),U&&U.m(f,null),a(t,b),a(t,w),a(w,C),a(w,D),a(w,N),a(w,A),a(w,P),a(w,I),a(w,M),a(e,z),R&&R.m(e,null),a(e,B),W||(H=[L(N,"click",Ie(q)),L(P,"click",Ie(Y)),L(M,"click",Ie(Q)),L(t,"click",O),L(t,"keydown",V)],W=!0)},p(X,J){l=X,J[0]&4|J[1]&262144&&o!==(o=l[517].summary+"")&&K(r,o),J[0]&4|J[1]&262144&&p!==(p=l[517].suggestedMin+"")&&K(_,p),l[517].events&&l[517].events.length>0?U?U.p(l,J):(U=Aa(l),U.c(),U.m(f,null)):U&&(U.d(1),U=null),J[0]&4|J[1]&262144&&T!==(T=v("suggest.confidence."+l[517].confidence))&&s(C,"title",T),J[0]&4|J[1]&262144&&E!==(E=v("suggest.confidence."+l[517].confidence))&&s(C,"aria-label",E),J[0]&4|J[1]&262144&&ae(C,"low",l[517].confidence==="low"),J[0]&4|J[1]&262144&&ae(C,"medium",l[517].confidence==="medium"),J[0]&4|J[1]&262144&&ae(C,"high",l[517].confidence==="high"),l[517]._expanded&&l[517].events&&l[517].events.length>0?R?R.p(l,J):(R=Ma(l),R.c(),R.m(e,B)):R&&(R.d(1),R=null),J[0]&4|J[1]&262144&&ae(e,"expanded",l[517]._expanded)},d(X){X&&y(e),U&&U.d(),R&&R.d(),W=!1,ge(H)}}}function Xv(l){let e,t=de(l[39]),n=[];for(let i=0;i0?th:A[493].source==="suggestion"?eh:A[493].source==="unknown"||A[493].source==="imported"?$v:xv}let E=T(l),D=E(l),N=l[493].source==="suggestion"&&l[493]._events&&l[493]._events.length>0&&Wa(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`${v("worklog.editEntry")}`,i=k(),o=u("button"),o.textContent=`${v("worklog.deleteEntry")}`,r=k(),C&&C.c(),c=k(),f=u("div"),p=u("span"),p.textContent=`${v("worklog.source")}`,_=k(),D.c(),m=k(),N&&N.c(),s(n,"class","btn btn-sm svelte-19ekrug"),s(o,"class","btn btn-sm btn-danger svelte-19ekrug"),s(t,"class","worklog-entry-actions svelte-19ekrug"),s(p,"class","wl-detail-label svelte-19ekrug"),s(f,"class","wl-detail-section svelte-19ekrug"),s(e,"class","worklog-entry-detail svelte-19ekrug")},m(A,P){S(A,e,P),a(e,t),a(t,n),a(t,i),a(t,o),a(e,r),C&&C.m(e,null),a(e,c),a(e,f),a(f,p),a(f,_),D.m(f,null),a(e,m),N&&N.m(e,null),g||(h=[L(n,"click",Ie(b)),L(o,"click",Ie(w))],g=!0)},p(A,P){l=A,l[493].details?C?C.p(l,P):(C=Ha(l),C.c(),C.m(e,c)):C&&(C.d(1),C=null),E!==(E=T(l))&&(D.d(1),D=E(l),D&&(D.c(),D.m(f,null))),l[493].source==="suggestion"&&l[493]._events&&l[493]._events.length>0?N?N.p(l,P):(N=Wa(l),N.c(),N.m(e,null)):N&&(N.d(1),N=null)},d(A){A&&y(e),C&&C.d(),D.d(),N&&N.d(),g=!1,ge(h)}}}function Ha(l){let e,t,n,i,o=l[493].details+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${v("worklog.details")}`,n=k(),i=u("p"),r=F(o),s(t,"class","wl-detail-label svelte-19ekrug"),s(i,"class","svelte-19ekrug"),s(e,"class","wl-detail-section svelte-19ekrug")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f[1]&256&&o!==(o=c[493].details+"")&&K(r,o)},d(c){c&&y(e)}}}function xv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function $v(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function eh(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestionNoEvents")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function th(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestion")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function lh(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceManual")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function Wa(l){let e,t,n,i=de(l[493]._events),o=[];for(let r=0;r',D=k(),s(n,"class","action-title svelte-19ekrug"),s(c,"class","action-type svelte-19ekrug"),s(m,"class","action-data svelte-19ekrug"),s(t,"class","action-info svelte-19ekrug"),s(C,"class","btn btn-sm svelte-19ekrug"),s(E,"class","btn btn-sm btn-danger svelte-19ekrug"),s(w,"class","action-btns svelte-19ekrug"),s(e,"class","action-card svelte-19ekrug")},m(M,z){S(M,e,z),a(e,t),a(t,n),a(n,o),a(t,r),a(t,c),a(c,p),a(t,_),a(t,m),a(m,h),a(e,b),a(e,w),a(w,C),a(w,T),a(w,E),a(e,D),N||(A=[L(C,"click",P),L(E,"click",I)],N=!0)},p(M,z){l=M,z[1]&128&&i!==(i=l[509].title+"")&&K(o,i),z[1]&128&&f!==(f=l[231](l[509].type)+"")&&K(p,f),z[1]&128&&g!==(g=l[509].data+"")&&K(h,g)},d(M){M&&y(e),N=!1,ge(A)}}}function sh(l){let e,t=de(l[58]),n=[];for(let i=0;i0?0:1}e=_(l),t=p[e]=f[e](l);const m=[_h,gh],g=[];function h(b,w){return b[88].length===0?0:1}return i=h(l),o=g[i]=m[i](l),{c(){t.c(),n=k(),o.c(),r=ot()},m(b,w){p[e].m(b,w),S(b,n,w),g[i].m(b,w),S(b,r,w),c=!0},p(b,w){let C=e;e=_(b),e===C?p[e].p(b,w):(at(),me(p[C],1,1,()=>{p[C]=null}),ct(),t=p[e],t?t.p(b,w):(t=p[e]=f[e](b),t.c()),fe(t,1),t.m(n.parentNode,n));let T=i;i=h(b),i===T?g[i].p(b,w):(at(),me(g[T],1,1,()=>{g[T]=null}),ct(),o=g[i],o?o.p(b,w):(o=g[i]=m[i](b),o.c()),fe(o,1),o.m(r.parentNode,r))},i(b){c||(fe(t),fe(o),c=!0)},o(b){me(t),me(o),c=!1},d(b){b&&(y(n),y(r)),p[e].d(b),g[i].d(b)}}}function dh(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${v("common.loading")}`,s(t,"class","svelte-19ekrug"),s(e,"class","empty-state svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p:te,i:te,o:te,d(n){n&&y(e)}}}function ph(l){let e,t;return e=new qc({props:{crumbs:[{name:v("file.root")}]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function mh(l){let e,t,n,i,o,r,c,f=v("common.backLabel")+"",p,_,m,g;return e=new qc({props:{crumbs:[{name:v("file.root")},...l[87]]}}),e.$on("navigate",l[264]),{c(){Ve(e.$$.fragment),t=k(),n=u("button"),i=ie("svg"),o=ie("line"),r=ie("polyline"),c=k(),p=F(f),s(o,"x1","19"),s(o,"y1","12"),s(o,"x2","5"),s(o,"y2","12"),s(o,"class","svelte-19ekrug"),s(r,"points","12 19 5 12 12 5"),s(r,"class","svelte-19ekrug"),s(i,"width","14"),s(i,"height","14"),s(i,"viewBox","0 0 24 24"),s(i,"fill","none"),s(i,"stroke","currentColor"),s(i,"stroke-width","2"),s(i,"stroke-linecap","round"),s(i,"stroke-linejoin","round"),s(i,"class","svelte-19ekrug"),s(n,"class","btn btn-sm back-btn svelte-19ekrug")},m(h,b){He(e,h,b),S(h,t,b),S(h,n,b),a(n,i),a(i,o),a(i,r),a(n,c),a(n,p),_=!0,m||(g=L(n,"click",l[128]),m=!0)},p(h,b){const w={};b[2]&33554432&&(w.crumbs=[{name:v("file.root")},...h[87]]),e.$set(w)},i(h){_||(fe(e.$$.fragment,h),_=!0)},o(h){me(e.$$.fragment,h),_=!1},d(h){h&&(y(t),y(n)),We(e,h),m=!1,g()}}}function gh(l){let e,t=[],n=new Map,i,o=de(l[88]);const r=c=>c[501].id;for(let c=0;c0?v("file.noFiles"):v("file.noFilesCase"))+"",r,c,f,p,_,m,g,h,b,w;return{c(){e=u("div"),t=u("div"),t.innerHTML='',n=k(),i=u("p"),r=F(o),c=k(),f=u("p"),f.textContent=`${v("file.hint")}`,p=k(),_=u("div"),m=u("button"),m.textContent=`${v("file.addFileSimple")}`,g=k(),h=u("button"),h.textContent=`${v("file.addFolderSimple")}`,s(t,"class","empty-icon svelte-19ekrug"),s(i,"class","svelte-19ekrug"),s(f,"class","hint svelte-19ekrug"),s(m,"class","btn btn-primary svelte-19ekrug"),s(h,"class","btn svelte-19ekrug"),s(_,"class","empty-actions svelte-19ekrug"),s(e,"class","empty-state svelte-19ekrug")},m(C,T){S(C,e,T),a(e,t),a(e,n),a(e,i),a(i,r),a(e,c),a(e,f),a(e,p),a(e,_),a(_,m),a(_,g),a(_,h),b||(w=[L(m,"click",l[201]),L(h,"click",l[202])],b=!0)},p(C,T){T[2]&33554432&&o!==(o=(C[87].length>0?v("file.noFiles"):v("file.noFilesCase"))+"")&&K(r,o)},i:te,o:te,d(C){C&&y(e),b=!1,ge(w)}}}function Za(l,e){let t,n,i;return n=new Xp({props:{item:e[501],selected:e[94].includes(e[501].id),onDragStart:e[141],onDragOver:e[142],onDrop:e[143]}}),n.$on("navigate",e[265]),n.$on("preview",e[266]),n.$on("openExternal",e[267]),n.$on("showInFolder",e[268]),n.$on("delete",e[269]),n.$on("rename",e[270]),n.$on("duplicate",e[271]),n.$on("cut",e[272]),n.$on("copy",e[273]),n.$on("selectOne",e[274]),n.$on("toggleSelect",e[275]),n.$on("rangeSelect",e[276]),{key:l,first:null,c(){t=ot(),Ve(n.$$.fragment),this.first=t},m(o,r){S(o,t,r),He(n,o,r),i=!0},p(o,r){e=o;const c={};r[2]&67108864&&(c.item=e[501]),r[2]&67108864|r[3]&2&&(c.selected=e[94].includes(e[501].id)),n.$set(c)},i(o){i||(fe(n.$$.fragment,o),i=!0)},o(o){me(n.$$.fragment,o),i=!1},d(o){o&&y(t),We(n,o)}}}function xa(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${v("file.scanning")}`,s(t,"class","svelte-19ekrug"),s(e,"class","empty-state svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},d(n){n&&y(e)}}}function $a(l){let e,t,n,i,o,r,c,f,p;return{c(){e=u("div"),t=u("input"),n=k(),i=u("div"),o=u("button"),o.textContent=`${v("common.create")}`,r=k(),c=u("button"),c.textContent=`${v("common.cancel")}`,s(t,"type","text"),s(t,"placeholder",v("note.title")),s(t,"class","svelte-19ekrug"),s(o,"class","btn btn-primary svelte-19ekrug"),s(c,"class","btn svelte-19ekrug"),s(i,"class","form-actions svelte-19ekrug"),s(e,"class","create-form svelte-19ekrug")},m(_,m){S(_,e,m),a(e,t),be(t,l[75]),a(e,n),a(e,i),a(i,o),a(i,r),a(i,c),f||(p=[L(t,"input",l[260]),L(t,"keydown",l[261]),L(o,"click",l[167]),L(c,"click",l[166])],f=!0)},p(_,m){m[2]&8192&&t.value!==_[75]&&be(t,_[75])},d(_){_&&y(e),f=!1,ge(p)}}}function vh(l){let e,t=de(l[36]),n=[];for(let i=0;ime(J[x],1,1,()=>{J[x]=null});return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${v("nav.createNode")}`,i=k(),R&&R.c(),o=k(),r=u("div"),c=u("span"),c.textContent=`${v("template.select")}`,f=k(),p=u("div"),_=u("button"),Ve(m.$$.fragment),g=k(),h=u("div"),b=u("span"),b.textContent=`${v("template.optionNone")}`,w=k(),C=u("span"),C.textContent=`${v("template.none.desc")}`,T=k();for(let x=0;x{b=null}),ct()),C[73].node&&C[73].node.parent_id?w?w.p(C,T):(w=dc(C),w.c(),w.m(t,o)):w&&(w.d(1),w=null),(!m||T[2]&2048)&&kt(t,"left",C[73].x+"px"),(!m||T[2]&2048)&&kt(t,"top",C[73].y+"px")},i(C){m||(fe(b),m=!0)},o(C){me(b),m=!1},d(C){C&&y(e),b&&b.d(),w&&w.d(),g=!1,ge(h)}}}function uc(l){let e,t,n,i,o,r=de(l[15].length>0?l[15]:[{id:"",title:"template.optionNone",icon:"folder"}]),c=[];for(let p=0;pme(c[p],1,1,()=>{c[p]=null});return{c(){e=u("div"),e.textContent=`${v("common.create")}`,t=k();for(let p=0;p0?p[15]:[{id:"",title:"template.optionNone",icon:"folder"}]);let m;for(m=0;ml[389].call(w)),s(g,"class","svelte-19ekrug"),s(m,"class","form-group svelte-19ekrug"),s(D,"class","label-text svelte-19ekrug"),s(I,"type","text"),s(I,"placeholder",M=l[78]==="open_url"?v("action.urlPlaceholder"):l[78]==="open_folder"||l[78]==="open_file"?v("action.pathPlaceholder"):v("action.commandPlaceholder")),s(I,"class","svelte-19ekrug"),s(E,"class","svelte-19ekrug"),s(T,"class","form-group svelte-19ekrug"),s(W,"class","btn btn-primary svelte-19ekrug"),s(U,"class","btn svelte-19ekrug"),s(B,"class","modal-actions svelte-19ekrug"),s(t,"class","modal svelte-19ekrug"),s(e,"class","modal-overlay svelte-19ekrug"),s(e,"role","button"),s(e,"tabindex","0")},m(V,R){S(V,e,R),a(e,t),a(t,n),a(t,i),a(t,o),a(o,r),a(r,c),a(r,f),a(r,p),be(p,l[77]),a(t,_),a(t,m),a(m,g),a(g,h),a(g,b),a(g,w);for(let X=0;X0&&wc(l),U=l[111]&&Cc();return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${v("inbox.assignTitle")}`,i=k(),o=u("div"),c=F(r),f=k(),p=u("div"),_=u("label"),m=u("span"),m.textContent=`${v("inbox.assignTarget")}`,g=k(),h=u("input"),b=k(),w=u("div"),w.textContent=`${v("inbox.assignSearchHint")}`,C=k(),H&&H.c(),T=k(),U&&U.c(),E=k(),D=u("div"),N=u("button"),P=F(A),M=k(),z=u("button"),z.textContent=`${v("common.cancel")}`,s(n,"class","svelte-19ekrug"),s(o,"class","create-context svelte-19ekrug"),s(m,"class","label-text svelte-19ekrug"),s(h,"type","text"),s(h,"placeholder",v("inbox.assignSearchPlaceholder")),s(h,"class","svelte-19ekrug"),s(w,"class","assign-hint svelte-19ekrug"),s(_,"class","svelte-19ekrug"),s(p,"class","form-group assign-search svelte-19ekrug"),s(N,"class","btn btn-primary svelte-19ekrug"),N.disabled=I=!l[110],s(z,"class","btn svelte-19ekrug"),s(D,"class","modal-actions svelte-19ekrug"),s(t,"class","modal svelte-19ekrug"),s(e,"class","modal-overlay svelte-19ekrug"),s(e,"role","button"),s(e,"tabindex","0")},m(q,Y){S(q,e,Y),a(e,t),a(t,n),a(t,i),a(t,o),a(o,c),a(t,f),a(t,p),a(p,_),a(_,m),a(_,g),a(_,h),be(h,l[108]),a(_,b),a(_,w),a(p,C),H&&H.m(p,null),a(t,T),U&&U.m(t,null),a(t,E),a(t,D),a(D,N),a(N,P),a(D,M),a(D,z),B||(W=[L(h,"input",l[395]),L(h,"input",l[216]),L(h,"keydown",l[396]),L(N,"click",l[218]),L(z,"click",l[215]),L(e,"click",Ct(l[215])),L(e,"keydown",gt(l[215]))],B=!0)},p(q,Y){Y[3]&16384&&r!==(r=q[107].title+"")&&K(c,r),Y[3]&32768&&h.value!==q[108]&&be(h,q[108]),q[109].length>0?H?H.p(q,Y):(H=wc(q),H.c(),H.m(p,null)):H&&(H.d(1),H=null),q[111]?U||(U=Cc(),U.c(),U.m(t,E)):U&&(U.d(1),U=null),Y[3]&131072&&I!==(I=!q[110])&&(N.disabled=I)},d(q){q&&y(e),H&&H.d(),U&&U.d(),B=!1,ge(W)}}}function wc(l){let e,t=de(l[109]),n=[];for(let i=0;i{r[_]=null}),ct(),t=r[e],t?t.p(f,p):(t=r[e]=o[e](f),t.c()),fe(t,1),t.m(n.parentNode,n))},i(f){i||(fe(t),i=!0)},o(f){me(t),i=!1},d(f){f&&y(n),r[e].d(f)}}}function oe(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function bh(l,e,t){const n=[...l];return n.sort((i,o)=>{let r=0;if(e==="name")r=(i.title||"").localeCompare(o.title||"");else if(e==="type"){const c=i.captureKind||i.sourceKind||i.type||"",f=o.captureKind||o.sourceKind||o.type||"";r=c.localeCompare(f)}else r=(i.capturedAt||i.createdAt||"").localeCompare(o.capturedAt||o.createdAt||"");return t==="asc"?r:-r}),n}function wh(l,e){return l.section===e.section&&l.nodeId===e.nodeId&&l.tab===e.tab&&l.trashFolderId===e.trashFolderId}function kn(l){return!l||!(l instanceof Element)?!1:!!l.closest('input, textarea, select, [contenteditable="true"], [contenteditable=""]')}function Hl(l,e,t){for(const n of l){if(n.id===e)return n.children=t,n.has_children=t.length>0,!0;if(n.children&&Hl(n.children,e,t))return!0}return!1}function Zc(l){return(l==null?void 0:l.sourceKind)||(l==null?void 0:l.captureKind)||(l==null?void 0:l.type)||""}function _i(l){return Zc(l)!=="url"&&(l==null?void 0:l.type)!=="link"}function yh(l,e){return{id:l.id,nodeId:l.id,fileId:e.id||e.fileId,name:e.name||l.title,type:"file",size:e.size||0,mime:e.mime||""}}function xc(l,e,t){for(const n of l){if(n.id===e)return n.children=t,n.has_children=t.length>0,!0;if(n.children&&xc(n.children,e,t))return!0}return!1}function Ch(l,e){return e?l.filter(t=>ri(t)===e):l.filter(t=>!ri(t)||!l.some(n=>n.id===ri(t)))}function ri(l){return(l==null?void 0:l.parentId)||(l==null?void 0:l.parentID)||(l==null?void 0:l.parent_id)||""}function gn(l){return l.eventIds&&l.eventIds.length?l.eventIds:l.events&&l.events.length?l.events.map(e=>e.id).filter(Boolean):[]}function _n(l){try{oe("WriteDebugLog",l)}catch{}}function ai(l){return l?l.map(e=>(e._expanded===void 0&&(e._expanded=!1),e)):[]}function _t(l){return l?new Date(l).toLocaleTimeString("ru-RU",{hour:"2-digit",minute:"2-digit"}):""}function Ul(l){return l==="note_created"||l==="file_added"||l==="folder_added"||l==="node_created"?"+":l==="file_deleted"||l==="folder_deleted"?"×":l==="file_renamed"||l==="folder_renamed"||l==="note_updated"||l==="node_updated"?"~":l==="file_copied"?"⧉":l==="file_moved"?"→":"•"}function vt(l){if(!l)return"";try{return new Date(l).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return l}}function ci(l){const e=String(l||"").trim();if(!e||/[\s]/.test(e)||e.includes("@"))return"";try{const t=new URL(e);return(t.protocol==="http:"||t.protocol==="https:")&&t.hostname?e:""}catch{try{const n=`https://${e}`,i=new URL(n);return i.hostname&&i.hostname.includes(".")?n:""}catch{return""}}}function Sh(l){return{"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"}[l]||"bin"}function Th(l){return new Promise((e,t)=>{const n=new FileReader;n.onload=()=>{const i=String(n.result||""),o=i.indexOf(",");e(o>=0?i.slice(o+1):i)},n.onerror=()=>t(n.error),n.readAsDataURL(l)})}function Eh(l){const e=String(l||"").split(/\r?\n/).map(t=>t.trim()).filter(Boolean);return e.length?{url:e[0],title:e[1]||""}:null}function Dh(l){return String(l||"").split(/\r?\n/).map(t=>t.trim()).filter(t=>t&&!t.startsWith("#"))[0]||""}function Ih(l){return["case","client","project","folder","document","recipe"].includes(l.type)}function Nh(l){return l.targetType==="note"&&l.targetId?{nodeId:l.nodeId,tab:"notes",targetId:l.targetId}:l.targetType==="file"?{nodeId:l.nodeId,tab:"files",targetId:l.targetId,targetPath:l.targetPath}:l.targetType==="folder"?{nodeId:l.nodeId,tab:"files",targetPath:l.targetPath||l.targetId}:{nodeId:l.nodeId}}function gt(l){return e=>{kn(e.target)||(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),l())}}function Ah(l,e,t){var Ds;let n,i,o,r,c=null,f=!1,p=!1,_=!1,m=!1,g=[],h=[],b=[],w=null,C=[],T=0,E=!0,D=[],N=null,A="",P="",I=!1,M="",z="all",B="all",W="",H="",U="suggestions",q="",Y=[],Q=!1,O=[],V="",R="";function X(d){return{"vault not open":v("error.vaultNotOpen")}[d]||d}let J="",G=null,x="overview",ee=[],le=null,ce=[],pe=[],Ee=[],ze=!1,_e="",$="",se="",Ce="",De=!1,we=!1,Le=null,Qe=null,Ae=[],$e=0,Re=[],Pe=[],Ne=[],Ge=!1,Se=[],je=[],Me=!1,ft="",Z="date",ye="desc",ve=!1,ke=[],Je=null,qe="",Ue="",tt="",Ye="",Oe=null,et=0,re=[],he="",Ke=[],Ft=[],Kt="",ol="",st=[],rl=!1,zt=!1,Nt="",Gt=null,St=null,At={visible:!1,x:0,y:0,node:null},Jt=!1,bt="",Il=!1,Rt="",Nl="open_url",Ot="",En=[{id:"open_url",label:v("action.openUrl")},{id:"open_file",label:v("action.openFile")},{id:"open_folder",label:v("action.openFolder")},{id:"run_command",label:v("action.runCommand")},{id:"run_script",label:v("action.runScript")},{id:"open_terminal",label:v("action.openTerminal")},{id:"launch_app",label:v("action.launchApp")}],al=!0,Dn=!1,ql=null,Al=!1,In="",vi="",Tt={},Nn=!1,ut=null,dt=[],rt=[],Mt=null,wt="",Ml=!1,cl="",Et={items:[],mode:"copy"},Be=[],ul=[],An=!1,jl=!1,fl=!1,Mn="",Ll=0,jn=0,dl=null,Yl=!1,hi="",ki="",bi=!1,wi=v("common.delete"),Ql=null,Xl=null,pl=!1,Zl="",ml="",gl="",jt=null,Bt="",qt=[],Ht=null,xl=!1,yi,Ln=null,Pn=!1,Pl="",$l="";const $c=[{id:"overview",label:v("tab.overview")},{id:"notes",label:v("tab.notes")},{id:"files",label:v("tab.files")},{id:"links",label:v("tab.links")},{id:"actions",label:v("tab.actions")},{id:"activity",label:v("tab.activity"),group:"service"},{id:"worklog",label:v("tab.worklog"),group:"service"},{id:"inbox",label:v("tab.inbox"),group:"service"}];let Fn=null;function eu(d){const j={};for(const ue of d){const Te=ue.captureContextLabel||v("inbox.noContext");j[Te]||(j[Te]=[]),j[Te].push(ue)}const ne=[];for(const[ue,Te]of Object.entries(j))ne.push({label:ue,items:Te});return ne.sort((ue,Te)=>ue.label.localeCompare(Te.label)),ne}function tu(){return{section:J||"",nodeId:(G==null?void 0:G.id)||"",tab:G?x:"",trashFolderId:J==="trash"?he:"",trashFolderStack:J==="trash"?Ke.map(d=>({id:d.id,title:d.title})):[]}}function Wt(){if(rl)return;const d=tu(),j=st[st.length-1];(!j||!wh(j,d))&&(st=[...st,d].slice(-80))}function zn(){t(8,he=""),t(242,Ke=[]),t(65,re=[])}function Ci(){return Yl?(Hn(),!0):m?(Es(),!0):Mt?(nn(),!0):jt?($n(),!0):Je?(ei(),!0):pl?(t(104,pl=!1),!0):ze?(Yi(),!0):Al?(ns(),!0):Il?(Cs(),!0):Jt?(Ki(),!0):zt?(Oi(),!0):At.visible?(Yt(),!0):le?(qi(),!0):!1}async function lu(d){rl=!0;try{if(d.nodeId){const j=await oe("GetNodeDetail",d.nodeId);return j?(await mt(j),t(35,x=d.tab||"overview"),x==="files"&&rt.length===0&&await lt(j.id),!0):!1}else if(d.section)return g.some(j=>j.id===d.section)?(await tn(d.section),d.section==="trash"&&(t(8,he=d.trashFolderId||""),t(242,Ke=d.trashFolderStack||[]),t(65,re=[]),await Zt()),!0):!1;return!1}catch{return!1}finally{rl=!1}}async function Si(){if(!Ci())for(;st.length>0;){const d=st[st.length-1];if(st=st.slice(0,-1),await lu(d))return}}function en(d){d.button!==3&&d.button!==4||kn(d.target)||Ci()&&d.button===3||(d.preventDefault(),d.stopPropagation(),d.button===3&&Si())}function ht(d){x!==d&&(Wt(),t(35,x=d),d==="files"&&G&&rt.length===0&&!ut&<(G.id))}Kl(async()=>{try{if(t(10,c=await oe("GetStartupStatus")),f=!0,c.status==="first_run"){t(11,p=!0),t(80,al=!1);return}if(c.status==="recovery"){t(12,_=!0),t(80,al=!1);return}}catch(d){t(34,R=String(d))}try{t(33,V=await oe("VerstakVersion")||"verstak-gui/v2"),t(0,g=await oe("ListSystemViewsWithPlugins")||[]),t(14,h=await oe("ListWorkspaceTree")||[]),t(15,b=await oe("ListEnabledTemplates")||[])}catch(d){t(34,R=String(d)),t(0,g=[{id:"today",label:v("nav.today")},{id:"inbox",label:v("nav.inbox")},{id:"activity",label:v("nav.activity")}]),t(14,h=[]),t(15,b=[])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",Hu),Fn=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",Pi),window.addEventListener("paste",os),window.addEventListener("dragenter",fs),window.addEventListener("dragover",ds),window.addEventListener("dragleave",ps),window.addEventListener("dragend",pt),window.addEventListener("dragcancel",pt),window.addEventListener("drop",gs),window.addEventListener("mouseup",pt),window.addEventListener("mouseleave",pt),window.addEventListener("blur",pt),document.addEventListener("visibilitychange",ms),window.addEventListener("auxclick",en),window.addEventListener("mouseup",en),t(80,al=!1),li(),Qi()}),Gl(()=>{Fn&&Fn(),window.removeEventListener("keydown",Pi),window.removeEventListener("paste",os),window.removeEventListener("dragenter",fs),window.removeEventListener("dragover",ds),window.removeEventListener("dragleave",ps),window.removeEventListener("dragend",pt),window.removeEventListener("dragcancel",pt),window.removeEventListener("drop",gs),window.removeEventListener("mouseup",pt),window.removeEventListener("mouseleave",pt),window.removeEventListener("blur",pt),document.removeEventListener("visibilitychange",ms),window.removeEventListener("auxclick",en),window.removeEventListener("mouseup",en),as()});async function tn(d){Wt(),t(1,J=d),t(2,G=null),t(35,x="overview"),t(36,ee=[]),ce=[],t(38,pe=[]),t(39,Ee=[]),t(55,je=[]),t(58,ke=[]),t(49,Ae=[]),t(3,Se=[]),t(7,Oe=null),zn(),t(69,zt=!1),t(34,R=""),t(16,w=null),t(51,Re=[]),t(52,Pe=[]),t(17,C=[]),T=0,E=!0,t(18,D=[]),t(19,N=null);try{d==="today"?(t(16,w=await oe("ListTodayView")||{cases:[]}),t(49,Ae=await oe("GetSuggestions")||[]),t(50,$e=Ae.length),t(51,Re=await oe("ListTodayInProgress")||[]),t(52,Pe=await oe("ListTodayCaptures")||[])):d==="inbox"?t(3,Se=await oe("ListInboxNodes")||[]):d==="trash"?await Zt():d==="journal"?await xt():d==="activity"&&(t(17,C=await oe("ListActivityFeed",50,0)||[]),T=C.length,E=C.length===50)}catch(j){t(34,R=String(j)),t(16,w={cases:[]}),t(3,Se=[]),t(7,Oe=null),t(17,C=[])}}async function mt(d){Wt(),t(2,G=d),t(1,J=""),t(35,x="overview"),t(36,ee=[]),ce=[],t(38,pe=[]),t(39,Ee=[]),t(49,Ae=[]),t(88,rt=[]),t(87,dt=[]),t(86,ut=null),t(89,Mt=null),t(90,wt=""),t(94,Be=[]),ul=[],zn(),t(37,le=null),t(69,zt=!1),t(74,Jt=!1),t(34,R=""),t(32,O=[]),await ln(d.id)}async function ln(d){try{t(36,ee=await oe("ListNotes",d)||[])}catch{}try{ce=await oe("ListFiles",d)||[]}catch{}try{t(38,pe=await oe("ListActions",d)||[])}catch{}try{t(39,Ee=ai(await oe("ListWorklog",d)))}catch{}try{t(55,je=await oe("ListInboxNodesForTarget",d)||[])}catch{t(55,je=[])}try{t(58,ke=await oe("ListLinks",d)||[])}catch{t(58,ke=[])}try{t(49,Ae=await oe("GetSuggestions")||[]),t(50,$e=Ae.length)}catch{t(49,Ae=[]),t(50,$e=0)}try{t(32,O=await oe("ListActivityByNode",d,50,0)||[])}catch{}}async function lt(d){t(85,Nn=!0);try{let j=await oe("ListItems",d)||[];j.sort((ne,ue)=>ne.type!==ue.type?ne.type==="folder"?-1:1:(ne.name||"").localeCompare(ue.name||"")),t(88,rt=j)}catch{t(88,rt=[])}t(85,Nn=!1)}async function Rn(d){if(!G)return;Wt();try{const ne=await oe("GetNodeDetail",d);ne&&t(87,dt=[...dt,{id:d,name:ne.title}])}catch{t(87,dt=[...dt,{id:d,name:"..."}])}t(86,ut=d),t(84,Tt={...Tt,[d]:!0});const j=await oe("ListWorkspaceChildren",d)||[];Hl(h,d,j),t(14,h=[...h]),await lt(d)}function nu(){if(Wt(),dt.length<2)t(87,dt=[]),t(86,ut=null),lt(G.id);else{const d=dt[dt.length-2];t(87,dt=dt.slice(0,-1)),t(86,ut=d.id),lt(d.id)}}function Ti(d){const j=dt[d];t(87,dt=dt.slice(0,d+1)),t(86,ut=j.id),lt(j.id)}async function _l(d){t(89,Mt=d),t(90,wt=""),t(92,cl=""),t(91,Ml=!0);try{Vp(d)?t(90,wt=await oe("GetFileBase64",d.fileId)||""):Up(d)&&t(90,wt=await oe("ReadFileText",d.fileId)||"")}catch(j){t(92,cl=String(j))}t(91,Ml=!1)}function nn(){t(89,Mt=null),t(90,wt=""),t(92,cl="")}async function iu(){const d=prompt(v("file.namePrompt"));if(!(!d||!d.trim()))try{const j=ut||G.id;await oe("CreateEmptyFile",j,d.trim()),await lt(j),await Wn(j)}catch(j){t(34,R=String(j))}}async function Ei(d){try{await oe("DuplicateNode",d);const j=ut||G.id;await lt(j),await Wn(j)}catch(j){t(34,R=String(j))}}function Di(d){const j=rt.find(ne=>ne.id===d);j&&Bn(j.id,j.name)}function Ii(d){t(93,Et={items:[d],mode:"cut"})}function Ni(d){t(93,Et={items:[d],mode:"copy"})}async function Ai(){if(Et.items.length===0)return;const d=ut||G.id;try{if(Et.mode==="copy")for(const j of Et.items)await oe("DuplicateNode",j);else for(const j of Et.items)await oe("MoveNode",j,d);t(93,Et={items:[],mode:"copy"}),await lt(d)}catch(j){t(34,R=String(j))}}function Mi(d){Be.includes(d)?t(94,Be=Be.filter(j=>j!==d)):t(94,Be=[...Be,d])}function ji(d){t(94,Be=[d])}function su(){t(94,Be=rt.map(d=>d.id))}function Li(d){if(rt.length===0)return;const j=Be.length>0?Be[Be.length-1]:rt[0].id,ne=rt.findIndex(It=>It.id===j),ue=rt.findIndex(It=>It.id===d);if(ne===-1||ue===-1)return;const Te=Math.min(ne,ue),nt=Math.max(ne,ue),bl=rt.slice(Te,nt+1).map(It=>It.id),Rl=new Set(Be);bl.forEach(It=>Rl.add(It)),t(94,Be=[...Rl])}function ou(){t(94,Be=[])}function On(d){return d.length>0?d:rt.map(j=>j.id)}async function ru(){const d=On(Be),j=rt.find(ue=>ue.id===d[0]);let ne;d.length===1&&(j==null?void 0:j.type)==="folder"?ne=v("delete.folder"):d.length===1?ne=v("delete.file"):ne=v("delete.files",{count:d.length}),Dt({title:v("delete.confirmTitle"),message:v("delete.confirmMessage")+" "+ne+"?",confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{for(const Te of d)try{await oe("DeleteFileOrFolder",Te)}catch(nt){t(34,R=String(nt))}t(94,Be=[]);const ue=ut||G.id;await lt(ue)}})}function au(){const d=On(Be);t(93,Et={items:d,mode:"cut"}),t(94,Be=[])}function cu(){const d=On(Be);t(93,Et={items:d,mode:"copy"}),t(94,Be=[])}function uu(d,j){d.stopPropagation();const ne=Be.includes(j)?Be:[j];ul=ne,d.dataTransfer.effectAllowed="move",d.dataTransfer.setData("text/plain",ne.join(","))}function fu(d,j){const ne=rt.find(ue=>ue.id===j);ne&&ne.type==="folder"&&(d.preventDefault(),d.stopPropagation(),d.dataTransfer.dropEffect="move")}async function du(d,j){if(d.preventDefault(),d.stopPropagation(),ul.length!==0){for(const ne of ul)try{await oe("MoveNode",ne,j)}catch(ue){t(34,R=String(ue))}ul=[],t(94,Be=[]),await lt(ut||G.id)}}function Pi(d){if(d.key==="Escape"&&fl){d.preventDefault(),pt();return}if(!kn(d.target)){if(d.key==="Backspace"||d.altKey&&d.key==="ArrowLeft"){d.preventDefault(),Si();return}if(x==="files")if(d.ctrlKey||d.metaKey)d.key==="c"||d.key==="C"?(d.preventDefault(),cu()):d.key==="x"||d.key==="X"?(d.preventDefault(),au()):d.key==="v"||d.key==="V"?(d.preventDefault(),Ai()):d.key==="a"||d.key==="A"?(d.preventDefault(),su()):d.key==="o"||d.key==="O"?(d.preventDefault(),pu()):d.key==="Enter"&&(d.preventDefault(),Fi());else if(d.key==="Enter")d.preventDefault(),Fi();else if(d.key==="Delete"){if(Mt){d.preventDefault(),nn();return}if(Be.length>0){d.preventDefault(),ru();return}}else if(d.key==="Escape"){if(Mt){nn();return}if(Be.length>0){ou();return}}else d.key==="F2"&&(d.preventDefault(),mu())}}function Fi(){if(Be.length===1){const d=rt.find(j=>j.id===Be[0]);d&&(d.type==="folder"?Rn(d.id):_l(d))}}function pu(){if(Be.length===1){const d=rt.find(j=>j.id===Be[0]);d&&d.fileId&&oe("OpenFile",d.fileId)}}function Bn(d,j){Zl=d,t(105,ml=j),t(106,gl=""),t(104,pl=!0)}function mu(){if(Be.length===1){const d=rt.find(j=>j.id===Be[0]);d&&Bn(d.id,d.name)}}async function zi(){const d=ml.trim();if(!d){t(106,gl=v("rename.emptyError"));return}try{await oe("ValidateName",d)}catch{t(106,gl=v("rename.invalidError"));return}t(104,pl=!1);const j=Zl;Zl="";try{await oe("RenameNode",j,d),G&&G.id===j&&t(2,G={...G,title:d}),await Qt(),ut&&await lt(ut)}catch(ne){t(34,R=String(ne))}}function gu(){t(104,pl=!1),Zl="",t(105,ml=""),t(106,gl="")}function _u(d){d.key==="Enter"?zi():t(106,gl="")}function Dt(d){t(100,hi=d.title||v("common.confirm")),t(101,ki=d.message||""),t(102,bi=d.danger!==void 0?d.danger:!0),t(103,wi=d.confirmText||v("common.delete")),Ql=d.onConfirm||null,Xl=d.onCancel||null,t(99,Yl=!0)}function Hn(){t(99,Yl=!1),Ql=null,Xl=null}function vu(){Ql&&Ql(),Hn()}function hu(){Xl&&Xl(),Hn()}function Ri(d){t(71,Gt=At.node),t(72,St=d),t(70,Nt=""),t(69,zt=!0),Yt()}function ku(){t(71,Gt=null),t(72,St=void 0),t(70,Nt=""),t(69,zt=!0)}function Oi(){t(69,zt=!1),t(70,Nt=""),t(71,Gt=null),t(72,St=void 0)}async function Bi(){if(!(!Nt.trim()||St===void 0))try{const d=Gt?Gt.id:"",j=St?St.id:"",ne=await oe("CreateNodeFromTemplate",d,Nt.trim(),j);t(69,zt=!1),t(70,Nt="");const ue=ne?ne.id:null;if(t(71,Gt=null),t(72,St=void 0),d){t(84,Tt={...Tt,[d]:!0});const Te=await oe("ListWorkspaceChildren",d)||[];Hl(h,d,Te),t(14,h=[...h])}else t(14,h=await oe("ListWorkspaceTree")||h);if(ue){const Te=await oe("GetNodeDetail",ue);Te&&(t(1,J=""),mt(Te))}}catch(d){t(34,R=String(d))}}function bu(d,j){t(73,At={visible:!0,x:d.clientX,y:d.clientY,node:j})}function Yt(){t(73,At={visible:!1,x:0,y:0,node:null})}async function wu(d){const j=!Tt[d];if(t(84,Tt={...Tt,[d]:j}),!j)return;const ne=await oe("ListWorkspaceChildren",d)||[];Hl(h,d,ne),t(14,h=[...h])}async function yu(d,j){if(!(!d||!j||d===j))try{const ne=await oe("MoveNode",d,j);await Qt();const ue=await oe("GetNodeDetail",d);ue&&(t(1,J=""),mt(ue))}catch(ne){t(34,R=String(ne))}}async function Cu(d){d.preventDefault(),d.stopPropagation();try{const j=d.dataTransfer.getData("text/plain");if(!j)return;const ne=await oe("GetNodeDetail",j);if(!ne||!ne.parent_id)return;await oe("MoveNode",j,""),await Qt();const ue=await oe("GetNodeDetail",j);ue&&(t(1,J=""),mt(ue))}catch(j){t(34,R=String(j))}}function Su(d){d.preventDefault(),d.dataTransfer.dropEffect="move",t(95,An=!0)}function Tu(d){t(95,An=!1)}function Hi(d){Bn(d.id,d.title),Yt()}function Wi(d){Yt(),Dt({title:v("delete.confirmTitle"),message:v("delete.confirmMessage")+" "+d.title+"?",confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("DeleteNode",d.id),await Qt(),await Qi(),G&&G.id===d.id&&t(2,G=null)}catch(j){t(34,R=String(j))}}})}async function Lt(d){Yt();const j=typeof d=="string"?d:d.id;try{await oe("OpenFolder",j)}catch(ne){t(34,R=String(ne))}}async function yt(d){const j=Zc(d);try{if(j==="url"||d.type==="link"){if(!d.url)throw new Error("url required");await oe("OpenURL",d.url);return}if(j==="text"||d.type==="note"){const ne=await oe("ReadNote",d.id);t(37,le={id:d.id,title:d.title,content:ne||"",dirty:!1});return}if(j==="folder"||d.type==="folder"){Wt(),t(1,J=""),t(2,G=d),t(35,x="files"),t(87,dt=[]),t(86,ut=null),t(94,Be=[]),t(89,Mt=null),await ln(d.id),await lt(d.id);return}if(j==="file"||j==="image"||d.type==="file"){const ue=(await oe("ListFiles",d.id)||[])[0];if(!ue)throw new Error("file record not found");const Te=yh(d,ue);si(Te)?await _l(Te):await oe("OpenFile",Te.fileId);return}await zl(d.id)}catch(ne){t(34,R=String(ne))}}async function Vi(d){Yt();try{await oe("MoveNode",d.id,""),await Qt();const j=await oe("GetNodeDetail",d.id);j&&(t(1,J=""),mt(j))}catch(j){t(34,R=String(j))}}async function Qt(){const d=Object.keys(Tt).filter(ne=>Tt[ne]),j=await oe("ListWorkspaceTree")||[];for(const ne of d){const Te=(await oe("ListWorkspaceChildren",ne)||[]).map(nt=>({...nt}));xc(j,ne,Te)}t(14,h=j)}async function Wn(d){const j=await oe("ListWorkspaceChildren",d)||[];Hl(h,d,j),t(14,h=[...h])}function Ui(){t(74,Jt=!0),t(75,bt="")}function Ki(){t(74,Jt=!1),t(75,bt="")}async function Gi(){if(!(!bt.trim()||!G))try{const d=await oe("CreateNote",G.id,bt.trim());t(36,ee=[...ee,d&&d.id?d:{id:Date.now().toString(),title:bt.trim(),createdAt:new Date().toISOString()}]),t(74,Jt=!1),t(75,bt="")}catch{const j={id:Date.now().toString(),title:bt.trim(),createdAt:new Date().toISOString()};t(36,ee=[...ee,j]),t(74,Jt=!1),t(75,bt="")}}async function Xt(d){if(le&&le.dirty){Dt({title:v("note.unsavedTitle"),message:v("note.unsavedMessage"),confirmText:v("note.unsavedClose"),danger:!1,onConfirm:async()=>{await Ji(d)}});return}await Ji(d)}async function Ji(d){try{const j=await oe("ReadNote",d.id);t(37,le={id:d.id,title:d.title,content:j||"",dirty:!1})}catch{t(37,le={id:d.id,title:d.title,content:"# "+d.title+`
+ `),Q&&Q.c(),M=k(),B&&B.c(),s(n,"class","today-date svelte-ii7vwz"),s(t,"class","today-header svelte-ii7vwz"),s(f,"class","today-tab svelte-ii7vwz"),ae(f,"active",l[21]==="feed"),s(_,"class","today-tab svelte-ii7vwz"),ae(_,"active",l[21]==="suggestions"),s(w,"class","today-tab svelte-ii7vwz"),ae(w,"active",l[21]==="inprogress"),s(T,"class","today-tab svelte-ii7vwz"),ae(T,"active",l[21]==="captured"),s(P,"class","today-tab svelte-ii7vwz"),ae(P,"active",l[21]==="browser"),s(c,"class","today-tabs svelte-ii7vwz"),s(e,"class","today-screen svelte-ii7vwz")},m(J,G){S(J,e,G),a(e,t),a(t,n),a(n,o),a(e,r),a(e,c),a(c,f),a(c,p),a(c,_),a(_,g),a(_,h),q&&q.m(_,null),a(c,b),a(c,w),a(c,C),a(c,T),a(T,D),a(T,N),Y&&Y.m(T,null),a(c,A),a(c,P),a(P,I),Q&&Q.m(P,null),a(e,M),~z&&V[z].m(e,null),W=!0,H||(U=[L(f,"click",l[34]),L(_,"click",l[35]),L(w,"click",l[36]),L(T,"click",l[37]),L(P,"click",l[38])],H=!0)},p(J,G){var ee;(!W||G[0]&2)&&i!==(i=(((ee=J[1])==null?void 0:ee.date)||"")+"")&&K(o,i),(!W||G[0]&2097152)&&ae(f,"active",J[21]==="feed"),J[4]>0?q?q.p(J,G):(q=Wo(J),q.c(),q.m(_,null)):q&&(q.d(1),q=null),(!W||G[0]&2097152)&&ae(_,"active",J[21]==="suggestions"),(!W||G[0]&2097152)&&ae(w,"active",J[21]==="inprogress"),J[3].length>0?Y?Y.p(J,G):(Y=Vo(J),Y.c(),Y.m(T,null)):Y&&(Y.d(1),Y=null),(!W||G[0]&2097152)&&ae(T,"active",J[21]==="captured"),J[15].length>0?Q?Q.p(J,G):(Q=Uo(J),Q.c(),Q.m(P,null)):Q&&(Q.d(1),Q=null),(!W||G[0]&2097152)&&ae(P,"active",J[21]==="browser");let x=z;z=R(J),z===x?~z&&V[z].p(J,G):(B&&(at(),me(V[x],1,1,()=>{V[x]=null}),ct()),~z?(B=V[z],B?B.p(J,G):(B=V[z]=O[z](J),B.c()),fe(B,1),B.m(e,null)):B=null)},i(J){W||(fe(B),W=!0)},o(J){me(B),W=!1},d(J){J&&y(e),q&&q.d(),Y&&Y.d(),Q&&Q.d(),~z&&V[z].d(),H=!1,ge(U)}}}function tr(l){return l==="note_created"||l==="file_added"||l==="folder_added"||l==="node_created"?"+":l==="file_deleted"||l==="folder_deleted"?"×":l==="file_renamed"||l==="folder_renamed"||l==="node_updated"?"~":l==="file_copied"?"⧉":l==="file_moved"||l==="folder_moved"?"→":l==="note_updated"?"✎":l==="action_created"?"▶":l==="action_done"?"✓":l==="worklog_added"?"⏱":"•"}function Cn(l){const e=[];return l.nodePath&&e.push(l.nodePath),e.length>0?e.join(" → "):""}function lr(l,e,t){const n=[...l];return n.sort((i,o)=>{let r=0;if(e==="name")r=(i.title||"").localeCompare(o.title||"");else if(e==="type"){const c=i.captureKind||i.sourceKind||"",f=o.captureKind||o.sourceKind||"";r=c.localeCompare(f)}else r=(i.capturedAt||i.createdAt||"").localeCompare(o.capturedAt||o.createdAt||"");return t==="asc"?r:-r}),n}function nr(l){return{text:"📝",url:"🔗",file:"📄",image:"🖼",folder:"📁"}[l]||"📦"}function h_(l,e,t){let{todayDashboard:n=null}=e,{suggestions:i=[]}=e,{inProgressItems:o=[]}=e,{todayCaptures:r=[]}=e,{suggestionCount:c=0}=e,{formatTime:f=Z=>""}=e,{eventLabel:p=Z=>Z}=e,{eventIcon:_=Z=>""}=e,{inboxMetaText:m=Z=>""}=e,{onOpenNodeById:g=Z=>{}}=e,{onOpenActivityEvent:h=Z=>{}}=e,{onOpenActivityTarget:b=Z=>{}}=e,{onOpenSuggestionWorklog:w=Z=>{}}=e,{onAcceptSuggestion:C=Z=>{}}=e,{onDeleteSuggestion:T=Z=>{}}=e,{onOpenNodeFolder:E=Z=>{}}=e,{onOpenInboxArtifact:D=Z=>{}}=e,{onOpenTrashNode:N=Z=>{}}=e,{browserEvents:A=[]}=e,{browserLoading:P=!1}=e,{onBrowserAccept:I=Z=>{}}=e,{onBrowserDismiss:M=Z=>{}}=e,{onBrowserAttach:z=Z=>{}}=e,{onBrowserRefresh:B=()=>{}}=e,W="feed";function H(Z){C(Z)}function U(Z){T(Z)}function q(Z){return!Z||!Z.eventType?"":p(Z.eventType)}function Y(Z){if(!(!Z||!Z.eventType)){if(Z.eventType==="folder_deleted"){Z.targetId&&N(Z.targetId);return}if(["file_added","file_deleted","file_renamed","file_copied","file_moved","folder_added","folder_renamed","folder_moved"].includes(Z.eventType)){Z.targetId?b(Z):Z.nodeId&&g(Z.nodeId);return}if(["note_created","note_updated","note_deleted"].includes(Z.eventType)){Z.targetType==="note"&&Z.targetId?b(Z):Z.nodeId&&g(Z.nodeId);return}if(Z.eventType==="worklog_added"){Z.nodeId&&g(Z.nodeId);return}if(["action_created","action_done"].includes(Z.eventType)){Z.nodeId&&g(Z.nodeId);return}(Z.id||Z.nodeId)&&h(Z)}}function Q(Z,ye,ve){const ke=[...Z];return ke.sort((Je,qe)=>{let Ue=0;return ye==="name"?Ue=(Je.title||"").localeCompare(qe.title||""):ye==="type"?Ue=(p(Je.eventType)||"").localeCompare(p(qe.eventType)||""):Ue=(Je.createdAt||"").localeCompare(qe.createdAt||""),ve==="asc"?Ue:-Ue}),ke}let O="time",V="desc",R="time",X="desc";const J=()=>t(21,W="feed"),G=()=>t(21,W="suggestions"),x=()=>t(21,W="inprogress"),ee=()=>t(21,W="captured"),le=()=>t(21,W="browser"),ce=Z=>Y(Z),pe=Z=>Y(Z),Ee=(Z,ye)=>ye.key==="Enter"&&Y(Z),ze=Z=>g(Z.nodeId),_e=(Z,ye,ve,ke)=>t(0,ye[ve].suggestedMin=parseInt(ke.target.value),i),$=Z=>w(Z),se=Z=>H(Z),Ce=Z=>U(Z),De=(Z,ye,ve)=>t(0,ye[ve]._expanded=!Z._expanded,i),we=(Z,ye,ve,ke)=>ke.key==="Enter"&&t(0,ye[ve]._expanded=!Z._expanded,i),Le=Z=>b(Z),Qe=Z=>E(Z.nodeId),Ae=()=>{t(22,O="time"),t(23,V=O==="time"&&V==="desc"?"asc":"desc")},$e=()=>{t(22,O="name"),t(23,V=O==="name"&&V==="desc"?"asc":"desc")},Re=()=>{t(22,O="type"),t(23,V=O==="type"&&V==="desc"?"asc":"desc")},Pe=Z=>h(Z),Ne=(Z,ye)=>ye.key==="Enter"&&h(Z),Ge=()=>{t(24,R="time"),t(25,X=R==="time"&&X==="desc"?"asc":"desc")},Se=()=>{t(24,R="name"),t(25,X=R==="name"&&X==="desc"?"asc":"desc")},je=()=>{t(24,R="type"),t(25,X=R==="type"&&X==="desc"?"asc":"desc")},Me=Z=>D(Z),ft=(Z,ye)=>ye.key==="Enter"&&D(Z);return l.$$set=Z=>{"todayDashboard"in Z&&t(1,n=Z.todayDashboard),"suggestions"in Z&&t(0,i=Z.suggestions),"inProgressItems"in Z&&t(2,o=Z.inProgressItems),"todayCaptures"in Z&&t(3,r=Z.todayCaptures),"suggestionCount"in Z&&t(4,c=Z.suggestionCount),"formatTime"in Z&&t(5,f=Z.formatTime),"eventLabel"in Z&&t(6,p=Z.eventLabel),"eventIcon"in Z&&t(7,_=Z.eventIcon),"inboxMetaText"in Z&&t(8,m=Z.inboxMetaText),"onOpenNodeById"in Z&&t(9,g=Z.onOpenNodeById),"onOpenActivityEvent"in Z&&t(10,h=Z.onOpenActivityEvent),"onOpenActivityTarget"in Z&&t(11,b=Z.onOpenActivityTarget),"onOpenSuggestionWorklog"in Z&&t(12,w=Z.onOpenSuggestionWorklog),"onAcceptSuggestion"in Z&&t(31,C=Z.onAcceptSuggestion),"onDeleteSuggestion"in Z&&t(32,T=Z.onDeleteSuggestion),"onOpenNodeFolder"in Z&&t(13,E=Z.onOpenNodeFolder),"onOpenInboxArtifact"in Z&&t(14,D=Z.onOpenInboxArtifact),"onOpenTrashNode"in Z&&t(33,N=Z.onOpenTrashNode),"browserEvents"in Z&&t(15,A=Z.browserEvents),"browserLoading"in Z&&t(16,P=Z.browserLoading),"onBrowserAccept"in Z&&t(17,I=Z.onBrowserAccept),"onBrowserDismiss"in Z&&t(18,M=Z.onBrowserDismiss),"onBrowserAttach"in Z&&t(19,z=Z.onBrowserAttach),"onBrowserRefresh"in Z&&t(20,B=Z.onBrowserRefresh)},[i,n,o,r,c,f,p,_,m,g,h,b,w,E,D,A,P,I,M,z,B,W,O,V,R,X,H,U,q,Y,Q,C,T,N,J,G,x,ee,le,ce,pe,Ee,ze,_e,$,se,Ce,De,we,Le,Qe,Ae,$e,Re,Pe,Ne,Ge,Se,je,Me,ft]}class k_ extends xe{constructor(e){super(),Ze(this,e,h_,v_,Xe,{todayDashboard:1,suggestions:0,inProgressItems:2,todayCaptures:3,suggestionCount:4,formatTime:5,eventLabel:6,eventIcon:7,inboxMetaText:8,onOpenNodeById:9,onOpenActivityEvent:10,onOpenActivityTarget:11,onOpenSuggestionWorklog:12,onAcceptSuggestion:31,onDeleteSuggestion:32,onOpenNodeFolder:13,onOpenInboxArtifact:14,onOpenTrashNode:33,browserEvents:15,browserLoading:16,onBrowserAccept:17,onBrowserDismiss:18,onBrowserAttach:19,onBrowserRefresh:20},null,[-1,-1,-1])}}function b_(l){let e,t,n,i,o,r,c;return{c(){e=u("div"),t=u("p"),n=F("Плагин «"),i=F(l[4]),o=F("» активен, но HTML-панель не настроена."),r=k(),c=u("p"),c.innerHTML='Для отображения контента добавьте поле panel в plugin.json.',s(c,"class","hint"),s(e,"class","empty-state svelte-42cgi7")},m(f,p){S(f,e,p),a(e,t),a(t,n),a(t,i),a(t,o),a(e,r),a(e,c)},p(f,p){p&16&&K(i,f[4])},d(f){f&&y(e)}}}function w_(l){let e,t;return{c(){e=u("iframe"),s(e,"class","plugin-frame svelte-42cgi7"),s(e,"srcdoc",l[0]),s(e,"sandbox","allow-scripts allow-same-origin"),s(e,"title",t=l[4]+" panel")},m(n,i){S(n,e,i),l[10](e)},p(n,i){i&1&&s(e,"srcdoc",n[0]),i&16&&t!==(t=n[4]+" panel")&&s(e,"title",t)},d(n){n&&y(e),l[10](null)}}}function y_(l){let e,t;return{c(){e=u("p"),t=F(l[2]),s(e,"class","error svelte-42cgi7")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&4&&K(t,n[2])},d(n){n&&y(e)}}}function C_(l){let e;return{c(){e=u("p"),e.textContent="Загрузка…",s(e,"class","loading svelte-42cgi7")},m(t,n){S(t,e,n)},p:te,d(t){t&&y(e)}}}function S_(l){let e,t,n,i,o,r,c;function f(m,g){return m[1]?C_:m[2]?y_:m[0]?w_:b_}let p=f(l),_=p(l);return{c(){e=u("div"),t=u("div"),n=u("h2"),i=F(l[4]),o=F(" — "),r=F(l[5]),c=k(),_.c(),s(n,"class","svelte-42cgi7"),s(t,"class","plugin-page-header svelte-42cgi7"),s(e,"class","plugin-page svelte-42cgi7")},m(m,g){S(m,e,g),a(e,t),a(t,n),a(n,i),a(n,o),a(n,r),a(e,c),_.m(e,null)},p(m,[g]){g&16&&K(i,m[4]),g&32&&K(r,m[5]),p===(p=f(m))&&_?_.p(m,g):(_.d(1),_=p(m),_&&(_.c(),_.m(e,null)))},i:te,o:te,d(m){m&&y(e),_.d()}}}function nl(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function T_(l,e,t){let n,i,o,r,{sectionId:c=""}=e,f="",p=!0,_="",m=null,g=[],h=!1;function b(I){m&&m.contentWindow&&h?m.contentWindow.postMessage(I,"*"):g.push(I)}function w(I){if(!m||!m.contentWindow||I.source!==m.contentWindow)return;const M=I.data;if(!(!M||typeof M!="object")&&!(!M.source||M.source!=="calendar-plugin")&&!(!M.action||typeof M.action!="string"))switch(M.action){case"ready":for(h=!0;g.length>0;)m.contentWindow.postMessage(g.shift(),"*");C();break;case"get-events":T(M.data);break;case"create-event":E(M.data);break;case"update-event":D(M.data);break;case"delete-event":N(M.data);break;default:console.log("[PluginPage] Unknown iframe action:",M.action)}}async function C(){try{const I=new Date,M=I.getFullYear(),z=I.getMonth(),B=new Date(M,z,1).toISOString().slice(0,10)+"T00:00:00",W=new Date(M,z+1,0).toISOString().slice(0,10)+"T23:59:59",[H,U]=await Promise.all([nl("CallPluginFunction",i,"calendar.get_events",JSON.stringify({start:B,end:W})),nl("CallPluginFunction",i,"calendar.get_categories","{}")]),q=H?JSON.parse(H):[],Y=U?JSON.parse(U):[];b({source:"verstak",type:"calendar-data",events:q,categories:Y})}catch(I){console.error("[PluginPage] loadCalendarData:",I)}}async function T(I){try{const M=JSON.stringify({start:I.start,end:I.end}),z=await nl("CallPluginFunction",i,"calendar.get_events",M),B=z?JSON.parse(z):[];b({source:"verstak",type:"calendar-data",events:B})}catch(M){console.error("[PluginPage] get-events:",M)}}async function E(I){try{const M=JSON.stringify(I),z=await nl("CallPluginFunction",i,"calendar.create_event",M),B=z?JSON.parse(z):{};b({source:"verstak",type:"event-created",event:B}),C()}catch(M){console.error("[PluginPage] create-event:",M),b({source:"verstak",type:"error",message:String(M)})}}async function D(I){try{const M=JSON.stringify(I);await nl("CallPluginFunction",i,"calendar.update_event",M),b({source:"verstak",type:"event-updated",event:I}),C()}catch(M){console.error("[PluginPage] update-event:",M)}}async function N(I){try{const M=JSON.stringify({id:I.id});await nl("CallPluginFunction",i,"calendar.delete_event",M),b({source:"verstak",type:"event-deleted",id:I.id}),C()}catch(M){console.error("[PluginPage] delete-event:",M)}}Kl(async()=>{try{t(0,f=await nl("GetPluginPanelHTML",i)||"")}catch(I){t(2,_=String(I))}t(1,p=!1),window.addEventListener("message",w)}),Gl(()=>{window.removeEventListener("message",w)});function A(I,M){b({source:"verstak",type:"drop",date:M,data:I})}function P(I){bn[I?"unshift":"push"](()=>{m=I,t(3,m)})}return l.$$set=I=>{"sectionId"in I&&t(6,c=I.sectionId)},l.$$.update=()=>{l.$$.dirty&64&&t(9,n=c.split(":")),l.$$.dirty&512&&t(4,i=n[1]||""),l.$$.dirty&512&&t(8,o=n[2]||"main"),l.$$.dirty&256&&t(5,r=o.charAt(0).toUpperCase()+o.slice(1))},[f,p,_,m,i,r,c,A,o,n,P]}class E_ extends xe{constructor(e){super(),Ze(this,e,T_,S_,Xe,{sectionId:6,handleDrop:7})}get handleDrop(){return this.$$.ctx[7]}}function ir(l,e,t){const n=l.slice();return n[25]=e[t],n[27]=t,n}function sr(l){let e;function t(o,r){return o[3]?N_:o[1].length===0?I_:D_}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","global-search-results svelte-1dlr37h")},m(o,r){S(o,e,r),i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e,null)))},d(o){o&&y(e),i.d()}}}function D_(l){let e,t=de(l[1]),n=[];for(let i=0;i[]}=e,{typeLabel:i=H=>H||""}=e;const o=Jl();let r="",c=[],f=!1,p=!1,_=0,m,g;function h(H){const U=[],q=i(H.type),Y=M_(H);return q&&U.push(q),Y&&U.push(Y),U.join(" · ")}async function b(){const H=Qc(r);if(H.length<2){t(1,c=[]),t(2,f=!1),t(3,p=!1);return}t(3,p=!0);try{t(1,c=await n("Search",H)||[]),t(4,_=0),t(2,f=!0)}catch{t(1,c=[]),t(2,f=!1)}finally{t(3,p=!1)}}function w(){clearTimeout(g),g=setTimeout(b,180)}function C(){t(2,f=!1),t(4,_=0)}function T(){t(0,r=""),t(1,c=[]),C()}function E(H){H&&(o("open",H),T(),m==null||m.blur())}function D(){w()}function N(H){if(H.key==="Escape"){H.preventDefault(),T(),m==null||m.blur();return}!f||c.length===0||(H.key==="ArrowDown"?(H.preventDefault(),t(4,_=Math.min(c.length-1,_+1))):H.key==="ArrowUp"?(H.preventDefault(),t(4,_=Math.max(0,_-1))):H.key==="Enter"&&(H.preventDefault(),E(c[_])))}async function A(){await bp(),m==null||m.focus(),m==null||m.select()}function P(H){if((H.ctrlKey||H.metaKey)&&H.key.toLowerCase()==="k"){H.preventDefault(),A();return}H.key==="/"&&!j_(H.target)&&(H.preventDefault(),A())}Kl(()=>{window.addEventListener("keydown",P)}),Gl(()=>{window.removeEventListener("keydown",P),clearTimeout(g)});function I(H){bn[H?"unshift":"push"](()=>{m=H,t(5,m)})}function M(){r=this.value,t(0,r)}const z=()=>{c.length>0&&t(2,f=!0)},B=()=>setTimeout(C,160),W=H=>E(H);return l.$$set=H=>{"wailsCall"in H&&t(11,n=H.wailsCall),"typeLabel"in H&&t(12,i=H.typeLabel)},[r,c,f,p,_,m,h,C,E,D,N,n,i,I,M,z,B,W]}class P_ extends xe{constructor(e){super(),Ze(this,e,L_,A_,Xe,{wailsCall:11,typeLabel:12})}}const F_=l=>({}),cr=l=>({});function ur(l){let e,t;return{c(){e=u("span"),t=F(l[1]),s(e,"class","header-subtitle svelte-7x8q9h")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i&2&&K(t,n[1])},d(n){n&&y(e)}}}function z_(l){let e,t,n,i=(l[0]||"")+"",o,r,c,f,p,_,m,g=l[1]&&ur(l);p=new P_({props:{wailsCall:l[2],typeLabel:l[3]}}),p.$on("open",l[7]);const h=l[6].actions,b=mp(h,l,l[5],cr);return{c(){e=u("header"),t=u("div"),n=u("span"),o=F(i),r=k(),g&&g.c(),c=k(),f=u("div"),Ve(p.$$.fragment),_=k(),b&&b.c(),s(n,"class","header-title svelte-7x8q9h"),ae(n,"placeholder",!l[0]),s(t,"class","header-left svelte-7x8q9h"),s(f,"class","header-right svelte-7x8q9h"),s(e,"class","header svelte-7x8q9h")},m(w,C){S(w,e,C),a(e,t),a(t,n),a(n,o),a(t,r),g&&g.m(t,null),a(e,c),a(e,f),He(p,f,null),a(f,_),b&&b.m(f,null),m=!0},p(w,[C]){(!m||C&1)&&i!==(i=(w[0]||"")+"")&&K(o,i),(!m||C&1)&&ae(n,"placeholder",!w[0]),w[1]?g?g.p(w,C):(g=ur(w),g.c(),g.m(t,null)):g&&(g.d(1),g=null);const T={};C&4&&(T.wailsCall=w[2]),C&8&&(T.typeLabel=w[3]),p.$set(T),b&&b.p&&(!m||C&32)&&_p(b,h,w,w[5],m?gp(h,w[5],C,F_):vp(w[5]),cr)},i(w){m||(fe(p.$$.fragment,w),fe(b,w),m=!0)},o(w){me(p.$$.fragment,w),me(b,w),m=!1},d(w){w&&y(e),g&&g.d(),We(p),b&&b.d(w)}}}function R_(l,e,t){let{$$slots:n={},$$scope:i}=e,{title:o=""}=e,{subtitle:r=""}=e,{wailsCall:c=async()=>[]}=e,{typeLabel:f=m=>m||""}=e,{onOpenSearchResult:p=()=>{}}=e;const _=m=>p(m.detail);return l.$$set=m=>{"title"in m&&t(0,o=m.title),"subtitle"in m&&t(1,r=m.subtitle),"wailsCall"in m&&t(2,c=m.wailsCall),"typeLabel"in m&&t(3,f=m.typeLabel),"onOpenSearchResult"in m&&t(4,p=m.onOpenSearchResult),"$$scope"in m&&t(5,i=m.$$scope)},[o,r,c,f,p,i,n,_]}class O_ extends xe{constructor(e){super(),Ze(this,e,R_,z_,Xe,{title:0,subtitle:1,wailsCall:2,typeLabel:3,onOpenSearchResult:4})}}const B_={open:'',showInExplorer:'',delete:'',restore:'',purge:'',move:'',attach:'',back:'',emptyTrash:'',folder:''};function it(l,e=16){return``}const{Boolean:Xc}=mi;function fr(l,e,t){const n=l.slice();return n[482]=e[t],n}function dr(l,e,t){const n=l.slice();return n[485]=e[t],n}function pr(l,e,t){const n=l.slice();return n[488]=e[t],n}function mr(l,e,t){const n=l.slice();return n[488]=e[t],n}function gr(l,e,t){const n=l.slice();return n[514]=e[t],n}function _r(l,e,t){const n=l.slice();return n[541]=e[t],n}function vr(l,e,t){const n=l.slice();return n[514]=e[t],n}function hr(l,e,t){const n=l.slice();return n[541]=e[t],n}function kr(l,e,t){const n=l.slice();return n[548]=e[t],n}function br(l,e,t){const n=l.slice();return n[548]=e[t],n}function wr(l,e,t){const n=l.slice();return n[517]=e[t],n[537]=e,n[538]=t,n}function yr(l,e,t){const n=l.slice();return n[514]=e[t],n}function Cr(l,e,t){const n=l.slice();return n[534]=e[t],n}function Sr(l,e,t){const n=l.slice();return n[501]=e[t],n}function Tr(l,e,t){const n=l.slice();return n[527]=e[t],n}function Er(l,e,t){const n=l.slice();return n[501]=e[t],n}function Dr(l,e,t){const n=l.slice();return n[514]=e[t],n}function Ir(l,e,t){const n=l.slice();return n[493]=e[t],n}function Nr(l,e,t){const n=l.slice();return n[514]=e[t],n}function Ar(l,e,t){const n=l.slice();return n[517]=e[t],n[518]=e,n[519]=t,n}function Mr(l,e,t){const n=l.slice();return n[514]=e[t],n}function jr(l,e,t){const n=l.slice();return n[509]=e[t],n}function Lr(l,e,t){const n=l.slice();return n[506]=e[t],n}function Pr(l,e,t){const n=l.slice();return n[501]=e[t],n}function Fr(l,e,t){const n=l.slice();return n[501]=e[t],n}function zr(l,e,t){const n=l.slice();return n[496]=e[t],n}function Rr(l,e,t){const n=l.slice();return n[493]=e[t],n}function Or(l,e,t){const n=l.slice();return n[496]=e[t],n}function Br(l,e,t){const n=l.slice();return n[524]=e[t],n}function Hr(l,e,t){const n=l.slice();return n[555]=e[t],n}function H_(l){let e,t,n,i,o,r,c,f,p,_,m,g,h,b,w,C,T,E,D,N,A,P,I,M,z,B,W,H,U,q,Y,Q,O,V,R,X,J,G,x,ee,le,ce,pe,Ee,ze,_e,$,se,Ce,De,we,Le,Qe,Ae=l[97]&&Wr(l),$e=de(l[0]),Re=[];for(let re=0;re<$e.length;re+=1)Re[re]=Kr(Hr(l,$e,re));const Pe=[K_,U_],Ne=[];function Ge(re,he){return re[14].length>0?0:1}A=Ge(l),P=Ne[A]=Pe[A](l),z=new Xg({props:{syncStatus:l[112],syncLoading:l[113],syncMessage:l[114],syncMessageKind:l[115],onSync:l[239],onOpenSettings:l[245]}}),V=new O_({props:{title:l[119],subtitle:l[118],wailsCall:oe,typeLabel:l[208],onOpenSearchResult:l[235],$$slots:{actions:[q_]},$$scope:{ctx:l}}});let Se=l[34]&&qr(l);const je=[lv,tv,ev,$_,x_,Z_,X_,Q_,Y_],Me=[];function ft(re,he){return he[0]&2&&(J=null),re[37]?0:re[2]?1:re[1]==="inbox"?2:re[1]==="trash"?3:re[1]==="journal"?4:re[1]==="today"?5:re[1]==="activity"?6:(J==null&&(J=!!(re[1]&&re[1].startsWith("plugin:"))),J?7:8)}G=ft(l,[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]),x=Me[G]=je[G](l);let Z=l[69]&&oc(l),ye=l[73].visible&&cc(l),ve=l[40]&&pc(l),ke=l[76]&&mc(l),Je=l[83]&&l[82]&&_c(l),qe=l[104]&&hc(l),Ue=l[107]&&bc(l),tt=l[59]&&Sc(l),Ye=l[99]&&Ec(l),Oe=l[89]&&Dc(l),et=l[13]&&Ic(l);return{c(){e=u("div"),Ae&&Ae.c(),t=k(),n=u("aside"),i=u("div"),o=u("img"),c=k(),f=u("span"),f.textContent=`${v("nav.brand")}`,p=k(),_=u("nav"),m=u("div"),g=u("div"),g.textContent=`${v("nav.system")}`,h=k();for(let re=0;re',U=k(),q=u("span"),Y=F(l[33]),Q=k(),O=u("main"),Ve(V.$$.fragment),R=k(),Se&&Se.c(),X=k(),x.c(),ee=k(),Z&&Z.c(),le=k(),ye&&ye.c(),ce=k(),ve&&ve.c(),pe=k(),ke&&ke.c(),Ee=k(),Je&&Je.c(),ze=k(),qe&&qe.c(),_e=k(),Ue&&Ue.c(),$=k(),tt&&tt.c(),se=k(),Ye&&Ye.c(),Ce=k(),Oe&&Oe.c(),De=k(),et&&et.c(),s(o,"class","logo svelte-19ekrug"),El(o.src,r="/assets/app-icons/icon_32x32.png")||s(o,"src",r),s(o,"width","20"),s(o,"height","20"),s(o,"alt",""),s(f,"class","brand-name svelte-19ekrug"),s(i,"class","sidebar-brand svelte-19ekrug"),s(g,"class","nav-label svelte-19ekrug"),s(m,"class","nav-group svelte-19ekrug"),s(T,"class","svelte-19ekrug"),s(D,"class","nav-add-btn svelte-19ekrug"),s(D,"title",v("common.create")),s(C,"class","nav-label-row svelte-19ekrug"),s(w,"class","nav-group svelte-19ekrug"),s(_,"class","sidebar-nav svelte-19ekrug"),s(H,"class","sidebar-settings-btn svelte-19ekrug"),s(H,"title",v("common.settings")),s(q,"class","version svelte-19ekrug"),s(W,"class","sidebar-footer-row svelte-19ekrug"),s(M,"class","sidebar-footer svelte-19ekrug"),s(n,"class","sidebar svelte-19ekrug"),s(O,"class","main svelte-19ekrug"),s(e,"class","app svelte-19ekrug")},m(re,he){S(re,e,he),Ae&&Ae.m(e,null),a(e,t),a(e,n),a(n,i),a(i,o),a(i,c),a(i,f),a(n,p),a(n,_),a(_,m),a(m,g),a(m,h);for(let Ke=0;Ke{Ne[Ke]=null}),ct(),P=Ne[A],P?P.p(re,he):(P=Ne[A]=Pe[A](re),P.c()),fe(P,1),P.m(w,null));const Ft={};he[3]&524288&&(Ft.syncStatus=re[112]),he[3]&1048576&&(Ft.syncLoading=re[113]),he[3]&2097152&&(Ft.syncMessage=re[114]),he[3]&4194304&&(Ft.syncMessageKind=re[115]),z.$set(Ft),(!we||he[1]&4)&&K(Y,re[33]);const Kt={};he[3]&67108864&&(Kt.title=re[119]),he[3]&33554432&&(Kt.subtitle=re[118]),he[0]&2|he[1]&100663296|he[2]&8|he[18]&1&&(Kt.$$scope={dirty:he,ctx:re}),V.$set(Kt),re[34]?Se?Se.p(re,he):(Se=qr(re),Se.c(),Se.m(O,X)):Se&&(Se.d(1),Se=null);let ol=G;G=ft(re,he),G===ol?Me[G].p(re,he):(at(),me(Me[ol],1,1,()=>{Me[ol]=null}),ct(),x=Me[G],x?x.p(re,he):(x=Me[G]=je[G](re),x.c()),fe(x,1),x.m(O,ee)),re[69]?Z?(Z.p(re,he),he[2]&128&&fe(Z,1)):(Z=oc(re),Z.c(),fe(Z,1),Z.m(O,le)):Z&&(at(),me(Z,1,1,()=>{Z=null}),ct()),re[73].visible?ye?(ye.p(re,he),he[2]&2048&&fe(ye,1)):(ye=cc(re),ye.c(),fe(ye,1),ye.m(O,ce)):ye&&(at(),me(ye,1,1,()=>{ye=null}),ct()),re[40]?ve?ve.p(re,he):(ve=pc(re),ve.c(),ve.m(O,pe)):ve&&(ve.d(1),ve=null),re[76]?ke?ke.p(re,he):(ke=mc(re),ke.c(),ke.m(O,Ee)):ke&&(ke.d(1),ke=null),re[83]&&re[82]?Je?Je.p(re,he):(Je=_c(re),Je.c(),Je.m(O,ze)):Je&&(Je.d(1),Je=null),re[104]?qe?qe.p(re,he):(qe=hc(re),qe.c(),qe.m(O,_e)):qe&&(qe.d(1),qe=null),re[107]?Ue?Ue.p(re,he):(Ue=bc(re),Ue.c(),Ue.m(O,$)):Ue&&(Ue.d(1),Ue=null),re[59]?tt?tt.p(re,he):(tt=Sc(re),tt.c(),tt.m(O,se)):tt&&(tt.d(1),tt=null),re[99]?Ye?(Ye.p(re,he),he[3]&64&&fe(Ye,1)):(Ye=Ec(re),Ye.c(),fe(Ye,1),Ye.m(O,Ce)):Ye&&(at(),me(Ye,1,1,()=>{Ye=null}),ct()),re[89]?Oe?(Oe.p(re,he),he[2]&134217728&&fe(Oe,1)):(Oe=Dc(re),Oe.c(),fe(Oe,1),Oe.m(O,De)):Oe&&(at(),me(Oe,1,1,()=>{Oe=null}),ct()),re[13]?et?(et.p(re,he),he[0]&8192&&fe(et,1)):(et=Ic(re),et.c(),fe(et,1),et.m(O,null)):et&&(at(),me(et,1,1,()=>{et=null}),ct())},i(re){we||(fe(P),fe(z.$$.fragment,re),fe(V.$$.fragment,re),fe(x),fe(Z),fe(ye),fe(Ye),fe(Oe),fe(et),we=!0)},o(re){me(P),me(z.$$.fragment,re),me(V.$$.fragment,re),me(x),me(Z),me(ye),me(Ye),me(Oe),me(et),we=!1},d(re){re&&y(e),Ae&&Ae.d(),Fe(Re,re),Ne[A].d(),We(z),We(V),Se&&Se.d(),Me[G].d(),Z&&Z.d(),ye&&ye.d(),ve&&ve.d(),ke&&ke.d(),Je&&Je.d(),qe&&qe.d(),Ue&&Ue.d(),tt&&tt.d(),Ye&&Ye.d(),Oe&&Oe.d(),et&&et.d(),Le=!1,ge(Qe)}}}function W_(l){var n;let e,t;return e=new Rm({props:{vaultPath:((n=l[10])==null?void 0:n.vaultPath)||"",onComplete:l[241]}}),{c(){Ve(e.$$.fragment)},m(i,o){He(e,i,o),t=!0},p(i,o){var c;const r={};o[0]&1024&&(r.vaultPath=((c=i[10])==null?void 0:c.vaultPath)||""),e.$set(r)},i(i){t||(fe(e.$$.fragment,i),t=!0)},o(i){me(e.$$.fragment,i),t=!1},d(i){We(e,i)}}}function V_(l){let e,t;return e=new Pm({props:{onComplete:l[240]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Wr(l){let e,t,n;return{c(){e=u("div"),t=u("div"),n=F(l[98]),s(t,"class","capture-drop-box svelte-19ekrug"),s(e,"class","capture-drop-overlay svelte-19ekrug")},m(i,o){S(i,e,o),a(e,t),a(t,n)},p(i,o){o[3]&32&&K(n,i[98])},d(i){i&&y(e)}}}function Vr(l){let e,t;return{c(){e=u("span"),t=F(l[50]),s(e,"class","nav-badge svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i[1]&524288&&K(t,n[50])},d(n){n&&y(e)}}}function Ur(l){let e,t;return{c(){e=u("span"),t=F(l[64]),s(e,"class","nav-badge svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i[2]&4&&K(t,n[64])},d(n){n&&y(e)}}}function Kr(l){let e,t=l[555].label+"",n,i,o,r,c,f,p,_=l[555].id==="journal"&&l[50]>0&&Vr(l),m=l[555].id==="trash"&&l[64]>0&&Ur(l);function g(){return l[244](l[555])}return{c(){e=u("button"),n=F(t),i=k(),_&&_.c(),o=k(),m&&m.c(),r=k(),s(e,"class",c="nav-item "+(l[1]===l[555].id?"selected":"")+" svelte-19ekrug")},m(h,b){S(h,e,b),a(e,n),a(e,i),_&&_.m(e,null),a(e,o),m&&m.m(e,null),a(e,r),f||(p=L(e,"click",g),f=!0)},p(h,b){l=h,b[0]&1&&t!==(t=l[555].label+"")&&K(n,t),l[555].id==="journal"&&l[50]>0?_?_.p(l,b):(_=Vr(l),_.c(),_.m(e,o)):_&&(_.d(1),_=null),l[555].id==="trash"&&l[64]>0?m?m.p(l,b):(m=Ur(l),m.c(),m.m(e,r)):m&&(m.d(1),m=null),b[0]&3&&c!==(c="nav-item "+(l[1]===l[555].id?"selected":"")+" svelte-19ekrug")&&s(e,"class",c)},d(h){h&&y(e),_&&_.d(),m&&m.d(),f=!1,p()}}}function U_(l){let e;return{c(){e=u("div"),e.textContent=`${v("nav.noNodes")}`,s(e,"class","nav-empty svelte-19ekrug")},m(t,n){S(t,e,n)},p:te,i:te,o:te,d(t){t&&y(e)}}}function K_(l){var r;let e,t,n,i,o;return t=new Yc({props:{nodes:l[14],expanded:l[84],selectedNodeId:((r=l[2])==null?void 0:r.id)||"",onSelect:l[125],onToggle:l[155],onContextMenu:l[153],onDrop:l[156]}}),{c(){e=u("div"),Ve(t.$$.fragment),s(e,"class","workspace-tree-area svelte-19ekrug"),s(e,"role","region"),s(e,"aria-label",v("nav.workspace")),ae(e,"drop-valid",l[95])},m(c,f){S(c,e,f),He(t,e,null),n=!0,i||(o=[L(e,"dragover",Sn(l[158])),L(e,"dragleave",l[159]),L(e,"drop",l[157])],i=!0)},p(c,f){var _;const p={};f[0]&16384&&(p.nodes=c[14]),f[2]&4194304&&(p.expanded=c[84]),f[0]&4&&(p.selectedNodeId=((_=c[2])==null?void 0:_.id)||""),t.$set(p),(!n||f[3]&4)&&ae(e,"drop-valid",c[95])},i(c){n||(fe(t.$$.fragment,c),n=!0)},o(c){me(t.$$.fragment,c),n=!1},d(c){c&&y(e),We(t),i=!1,ge(o)}}}function G_(l){let e,t,n,i=it("emptyTrash",14)+"",o,r=v("trash.emptyTrash")+"",c,f,p,_,m,g=l[65].length>0&&Gr(l);return{c(){g&&g.c(),e=k(),t=u("button"),n=new ui(!1),o=k(),c=F(r),f=k(),p=u("button"),p.textContent=`${v("trash.openFolder")}`,n.a=o,s(t,"class","btn btn-sm btn-danger svelte-19ekrug"),s(p,"class","btn btn-sm svelte-19ekrug")},m(h,b){g&&g.m(h,b),S(h,e,b),S(h,t,b),n.m(i,t),a(t,o),a(t,c),S(h,f,b),S(h,p,b),_||(m=[L(t,"click",l[184]),L(p,"click",l[249])],_=!0)},p(h,b){h[65].length>0?g?g.p(h,b):(g=Gr(h),g.c(),g.m(e.parentNode,e)):g&&(g.d(1),g=null)},d(h){h&&(y(e),y(t),y(f),y(p)),g&&g.d(h),_=!1,ge(m)}}}function J_(l){let e,t=(l[56]?v("common.loading"):v("inbox.pasteClipboard"))+"",n,i,o,r,c,f=l[57]&&Jr(l);return{c(){e=u("button"),n=F(t),i=k(),f&&f.c(),o=ot(),s(e,"class","btn btn-primary svelte-19ekrug"),e.disabled=l[56]},m(p,_){S(p,e,_),a(e,n),S(p,i,_),f&&f.m(p,_),S(p,o,_),r||(c=L(e,"click",l[210]),r=!0)},p(p,_){_[1]&33554432&&t!==(t=(p[56]?v("common.loading"):v("inbox.pasteClipboard"))+"")&&K(n,t),_[1]&33554432&&(e.disabled=p[56]),p[57]?f?f.p(p,_):(f=Jr(p),f.c(),f.m(o.parentNode,o)):f&&(f.d(1),f=null)},d(p){p&&(y(e),y(i),y(o)),f&&f.d(p),r=!1,c()}}}function Gr(l){let e,t,n=it("restore",14)+"",i,o=v("trash.restore")+"",r,c,f=l[65].length+"",p,_,m,g,h,b=it("purge",14)+"",w,C=v("common.delete")+"",T,E,D=l[65].length+"",N,A,P,I;return{c(){e=u("button"),t=new ui(!1),i=k(),r=F(o),c=F(" ("),p=F(f),_=F(")"),m=k(),g=u("button"),h=new ui(!1),w=k(),T=F(C),E=F(" ("),N=F(D),A=F(")"),t.a=i,s(e,"class","btn btn-sm btn-primary svelte-19ekrug"),h.a=w,s(g,"class","btn btn-sm btn-danger svelte-19ekrug")},m(M,z){S(M,e,z),t.m(n,e),a(e,i),a(e,r),a(e,c),a(e,p),a(e,_),S(M,m,z),S(M,g,z),h.m(b,g),a(g,w),a(g,T),a(g,E),a(g,N),a(g,A),P||(I=[L(e,"click",l[247]),L(g,"click",l[248])],P=!0)},p(M,z){z[2]&8&&f!==(f=M[65].length+"")&&K(p,f),z[2]&8&&D!==(D=M[65].length+"")&&K(N,D)},d(M){M&&(y(e),y(m),y(g)),P=!1,ge(I)}}}function Jr(l){let e,t;return{c(){e=u("span"),t=F(l[57]),s(e,"class","inbox-capture-status svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p(n,i){i[1]&67108864&&K(t,n[57])},d(n){n&&y(e)}}}function q_(l){let e;function t(o,r){if(o[1]==="inbox")return J_;if(o[1]==="trash")return G_}let n=t(l),i=n&&n(l);return{c(){e=u("div"),i&&i.c(),s(e,"slot","actions"),s(e,"class","header-actions svelte-19ekrug")},m(o,r){S(o,e,r),i&&i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i&&i.d(1),i=n&&n(o),i&&(i.c(),i.m(e,null)))},d(o){o&&y(e),i&&i.d()}}}function qr(l){let e,t=l[120](l[34])+"",n,i,o,r,c;return{c(){e=u("div"),n=F(t),i=k(),o=u("button"),o.innerHTML='',s(o,"class","dismiss-btn svelte-19ekrug"),s(o,"aria-label","Dismiss"),s(e,"class","error-banner svelte-19ekrug"),s(e,"role","button"),s(e,"tabindex","0")},m(f,p){S(f,e,p),a(e,n),a(e,i),a(e,o),r||(c=[L(o,"click",Ie(l[250])),L(e,"click",l[251]),L(e,"keydown",function(){Pt(gt(l[252]))&>(l[252]).apply(this,arguments)})],r=!0)},p(f,p){l=f,p[1]&8&&t!==(t=l[120](l[34])+"")&&K(n,t)},d(f){f&&y(e),r=!1,ge(c)}}}function Y_(l){let e,t,n;function i(c,f){if(c[80])return sv;if(c[0].length>0)return iv;if(c[34])return nv}let o=i(l),r=o&&o(l);return{c(){e=u("div"),t=u("h2"),t.textContent=`${v("welcome.title")}`,n=k(),r&&r.c(),s(t,"class","svelte-19ekrug"),s(e,"class","welcome svelte-19ekrug")},m(c,f){S(c,e,f),a(e,t),a(e,n),r&&r.m(e,null)},p(c,f){o===(o=i(c))&&r?r.p(c,f):(r&&r.d(1),r=o&&o(c),r&&(r.c(),r.m(e,null)))},i:te,o:te,d(c){c&&y(e),r&&r.d()}}}function Q_(l){let e,t;return e=new E_({props:{sectionId:l[1]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p(n,i){const o={};i[0]&2&&(o.sectionId=n[1]),e.$set(o)},i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function X_(l){let e;function t(o,r){return o[17].length===0?rv:ov}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","activity-feed svelte-19ekrug")},m(o,r){S(o,e,r),i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e,null)))},i:te,o:te,d(o){o&&y(e),i.d()}}}function Z_(l){let e,t,n,i;const o=[cv,av],r=[];function c(f,p){return f[16]?0:1}return e=c(l),t=r[e]=o[e](l),{c(){t.c(),n=ot()},m(f,p){r[e].m(f,p),S(f,n,p),i=!0},p(f,p){let _=e;e=c(f),e===_?r[e].p(f,p):(at(),me(r[_],1,1,()=>{r[_]=null}),ct(),t=r[e],t?t.p(f,p):(t=r[e]=o[e](f),t.c()),fe(t,1),t.m(n.parentNode,n))},i(f){i||(fe(t),i=!0)},o(f){me(t),i=!1},d(f){f&&y(n),r[e].d(f)}}}function x_(l){let e,t,n,i=v("suggest.title")+"",o,r,c,f,p,_,m,g=l[50]>0&&Xr(l);function h(C,T){return C[28]==="suggestions"?fv:uv}let b=h(l),w=b(l);return{c(){e=u("div"),t=u("div"),n=u("button"),o=F(i),r=k(),g&&g.c(),c=k(),f=u("button"),f.textContent=`${v("journal.worklogTab")}`,p=k(),w.c(),s(n,"class","journal-tab svelte-19ekrug"),ae(n,"active",l[28]==="suggestions"),s(f,"class","journal-tab svelte-19ekrug"),ae(f,"active",l[28]==="worklog"),s(t,"class","journal-tabs svelte-19ekrug"),s(e,"class","journal-screen svelte-19ekrug")},m(C,T){S(C,e,T),a(e,t),a(t,n),a(n,o),a(n,r),g&&g.m(n,null),a(t,c),a(t,f),a(e,p),w.m(e,null),_||(m=[L(n,"click",l[332]),L(f,"click",l[333])],_=!0)},p(C,T){C[50]>0?g?g.p(C,T):(g=Xr(C),g.c(),g.m(n,null)):g&&(g.d(1),g=null),T[0]&268435456&&ae(n,"active",C[28]==="suggestions"),T[0]&268435456&&ae(f,"active",C[28]==="worklog"),b===(b=h(C))&&w?w.p(C,T):(w.d(1),w=b(C),w&&(w.c(),w.m(e,null)))},i:te,o:te,d(C){C&&y(e),g&&g.d(),w.d(),_=!1,ge(m)}}}function $_(l){let e,t,n,i,o,r;function c(_,m){return!_[7]||(_[7].nodes||[]).length===0?Tv:Sv}let f=c(l),p=f(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("p"),o=F(l[67]),r=k(),p.c(),s(i,"class","svelte-19ekrug"),s(n,"class","svelte-19ekrug"),s(t,"class","trash-header svelte-19ekrug"),s(e,"class","trash-screen svelte-19ekrug")},m(_,m){S(_,e,m),a(e,t),a(t,n),a(n,i),a(i,o),a(e,r),p.m(e,null)},p(_,m){m[2]&32&&K(o,_[67]),f===(f=c(_))&&p?p.p(_,m):(p.d(1),p=f(_),p&&(p.c(),p.m(e,null)))},i:te,o:te,d(_){_&&y(e),p.d()}}}function ev(l){let e,t,n,i,o,r,c,f,p=l[3].length>0&&wa(l);function _(h,b){return h[3].length===0?Av:h[117]?Nv:Iv}let m=_(l),g=m(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("p"),i.textContent=`${v("inbox.subtitle")}`,o=k(),p&&p.c(),r=k(),g.c(),s(i,"class","svelte-19ekrug"),s(n,"class","svelte-19ekrug"),s(t,"class","inbox-header svelte-19ekrug"),s(e,"class","inbox-screen svelte-19ekrug"),s(e,"role","region"),s(e,"aria-label",v("nav.inbox")),ae(e,"drop-valid",l[96])},m(h,b){S(h,e,b),a(e,t),a(t,n),a(n,i),a(e,o),p&&p.m(e,null),a(e,r),g.m(e,null),c||(f=[L(e,"dragover",l[211]),L(e,"dragleave",l[212]),L(e,"drop",l[213])],c=!0)},p(h,b){h[3].length>0?p?p.p(h,b):(p=wa(h),p.c(),p.m(e,r)):p&&(p.d(1),p=null),m===(m=_(h))&&g?g.p(h,b):(g.d(1),g=m(h),g&&(g.c(),g.m(e,null))),b[3]&8&&ae(e,"drop-valid",h[96])},i:te,o:te,d(h){h&&y(e),p&&p.d(),g.d(),c=!1,ge(f)}}}function tv(l){let e,t,n,i,o,r,c=de(l[122]),f=[];for(let g=0;g{_[b]=null}),ct()),~i?(o=_[i],o?o.p(g,h):(o=_[i]=p[i](g),o.c()),fe(o,1),o.m(n,null)):o=null)},i(g){r||(fe(o),r=!0)},o(g){me(o),r=!1},d(g){g&&(y(e),y(t),y(n)),Fe(f,g),~i&&_[i].d()}}}function lv(l){let e,t,n,i=l[37].title+"",o,r,c,f,p,_,m,g,h,b,w,C=l[37].dirty&&sc();return{c(){e=u("div"),t=u("div"),n=u("span"),o=F(i),r=k(),C&&C.c(),c=k(),f=u("div"),p=u("button"),p.textContent=`${v("common.save")}`,_=k(),m=u("button"),m.textContent=`${v("common.close")}`,g=k(),h=u("textarea"),s(n,"class","note-title svelte-19ekrug"),s(p,"class","btn btn-primary svelte-19ekrug"),s(m,"class","btn svelte-19ekrug"),s(f,"class","note-editor-actions svelte-19ekrug"),s(t,"class","note-editor-header svelte-19ekrug"),s(h,"class","note-textarea svelte-19ekrug"),s(h,"placeholder",v("note.placeholder")),s(e,"class","note-editor svelte-19ekrug")},m(T,E){S(T,e,E),a(e,t),a(t,n),a(n,o),a(t,r),C&&C.m(t,null),a(t,c),a(t,f),a(f,p),a(f,_),a(f,m),a(e,g),a(e,h),be(h,l[37].content),b||(w=[L(p,"click",l[171]),L(m,"click",l[169]),L(h,"input",l[253]),L(h,"input",l[170])],b=!0)},p(T,E){E[1]&64&&i!==(i=T[37].title+"")&&K(o,i),T[37].dirty?C||(C=sc(),C.c(),C.m(t,c)):C&&(C.d(1),C=null),E[1]&64&&be(h,T[37].content)},i:te,o:te,d(T){T&&y(e),C&&C.d(),b=!1,ge(w)}}}function nv(l){let e,t=v("common.error")+"",n,i,o;return{c(){e=u("p"),n=F(t),i=k(),o=F(l[34]),s(e,"class","error-text svelte-19ekrug")},m(r,c){S(r,e,c),a(e,n),a(e,i),a(e,o)},p(r,c){c[1]&8&&K(o,r[34])},d(r){r&&y(e)}}}function iv(l){let e,t,n;return{c(){e=u("p"),e.textContent=`${v("welcome.selectSection")}`,t=k(),n=u("p"),n.textContent=`${v("welcome.createCase")}`,s(e,"class","svelte-19ekrug"),s(n,"class","hint svelte-19ekrug")},m(i,o){S(i,e,o),S(i,t,o),S(i,n,o)},p:te,d(i){i&&(y(e),y(t),y(n))}}}function sv(l){let e;return{c(){e=u("p"),e.textContent=`${v("common.loading")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},p:te,d(t){t&&y(e)}}}function ov(l){let e,t=de(l[17]),n=[];for(let i=0;il[353].call(J)),s(V,"title",v("journal.billableHint")),s(V,"class","svelte-19ekrug"),s(pe,"class","label-text svelte-19ekrug"),_e.__value="all",be(_e,_e.__value),s(_e,"class","svelte-19ekrug"),$.__value="no",be($,$.__value),s($,"class","svelte-19ekrug"),se.__value="yes",be(se,se.__value),s(se,"class","svelte-19ekrug"),s(ze,"class","svelte-19ekrug"),l[25]===void 0&&sl(()=>l[354].call(ze)),s(ce,"title",v("journal.approxHint")),s(ce,"class","svelte-19ekrug"),s(De,"class","btn btn-sm svelte-19ekrug"),s(Le,"class","btn btn-sm svelte-19ekrug"),s(T,"class","journal-filters-row svelte-19ekrug"),s(b,"class","journal-filter-section svelte-19ekrug"),s(t,"class","journal-header svelte-19ekrug")},m(ve,ke){Pe&&Pe.m(ve,ke),S(ve,e,ke),S(ve,t,ke),a(t,n),a(n,i),a(n,o),a(n,r),a(r,c),a(r,f),a(r,p),a(r,_),a(r,m),a(r,g),Ne&&Ne.m(r,null),a(t,h),a(t,b),a(b,w),a(b,C),a(b,T),a(T,E),a(E,D),a(E,N),a(E,A),be(A,l[20]),a(T,P),a(T,I),a(I,M),a(I,z),a(I,B),be(B,l[21]),a(T,W),a(T,H),a(H,U),a(H,q),a(H,Y),je.m(Y,null),a(T,Q),Me&&Me.m(T,null),a(T,O),a(T,V),a(V,R),a(V,X),a(V,J),a(J,G),a(J,x),a(J,ee),Ut(J,l[24],!0),a(T,le),a(T,ce),a(ce,pe),a(ce,Ee),a(ce,ze),a(ze,_e),a(ze,$),a(ze,se),Ut(ze,l[25],!0),a(T,Ce),a(T,De),a(T,we),a(T,Le),S(ve,Qe,ke),ye.m(ve,ke),S(ve,Ae,ke),$e||(Re=[L(c,"click",l[343]),L(p,"click",l[344]),L(m,"click",l[345]),L(A,"input",l[346]),L(B,"input",l[347]),L(J,"change",l[353]),L(ze,"change",l[354]),L(De,"click",l[193]),L(Le,"click",l[200])],$e=!0)},p(ve,ke){ve[19]?Pe?Pe.p(ve,ke):(Pe=Zr(ve),Pe.c(),Pe.m(e.parentNode,e)):Pe&&(Pe.d(1),Pe=null),ve[27]?Ne?Ne.p(ve,ke):(Ne=la(ve),Ne.c(),Ne.m(r,null)):Ne&&(Ne.d(1),Ne=null),ke[0]&1048576&&be(A,ve[20]),ke[0]&2097152&&be(B,ve[21]),Se===(Se=Ge(ve))&&je?je.p(ve,ke):(je.d(1),je=Se(ve),je&&(je.c(),je.m(Y,null))),ve[23]?Me?Me.p(ve,ke):(Me=sa(ve),Me.c(),Me.m(T,O)):Me&&(Me.d(1),Me=null),ke[0]&16777216&&Ut(J,ve[24]),ke[0]&33554432&&Ut(ze,ve[25]),Z===(Z=ft(ve))&&ye?ye.p(ve,ke):(ye.d(1),ye=Z(ve),ye&&(ye.c(),ye.m(Ae.parentNode,Ae)))},d(ve){ve&&(y(e),y(t),y(Qe),y(Ae)),Pe&&Pe.d(ve),Ne&&Ne.d(),je.d(),Me&&Me.d(),ye.d(ve),$e=!1,ge(Re)}}}function fv(l){let e;function t(o,r){return o[49].length===0?Cv:yv}let n=t(l),i=n(l);return{c(){i.c(),e=ot()},m(o,r){i.m(o,r),S(o,e,r)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e.parentNode,e)))},d(o){o&&y(e),i.d(o)}}}function Zr(l){let e,t,n=v("journal.total")+"",i,o,r=Math.floor(l[19].totalMinutes/60)+"",c,f,p=l[19].totalMinutes%60+"",_,m,g=l[19].totalEntries+"",h,b,w=v("worklog.min")+"",C,T,E,D,N=l[19].byDay&&l[19].byDay.length>0&&xr(l),A=l[19].byNode&&l[19].byNode.length>0&&ea(l);return{c(){e=u("div"),t=u("div"),i=F(n),o=F(": "),c=F(r),f=F("ч "),_=F(p),m=F("м ("),h=F(g),b=k(),C=F(w),T=F(")"),E=k(),N&&N.c(),D=k(),A&&A.c(),s(t,"class","summary-total svelte-19ekrug"),s(e,"class","journal-summary svelte-19ekrug")},m(P,I){S(P,e,I),a(e,t),a(t,i),a(t,o),a(t,c),a(t,f),a(t,_),a(t,m),a(t,h),a(t,b),a(t,C),a(t,T),a(e,E),N&&N.m(e,null),a(e,D),A&&A.m(e,null)},p(P,I){I[0]&524288&&r!==(r=Math.floor(P[19].totalMinutes/60)+"")&&K(c,r),I[0]&524288&&p!==(p=P[19].totalMinutes%60+"")&&K(_,p),I[0]&524288&&g!==(g=P[19].totalEntries+"")&&K(h,g),P[19].byDay&&P[19].byDay.length>0?N?N.p(P,I):(N=xr(P),N.c(),N.m(e,D)):N&&(N.d(1),N=null),P[19].byNode&&P[19].byNode.length>0?A?A.p(P,I):(A=ea(P),A.c(),A.m(e,null)):A&&(A.d(1),A=null)},d(P){P&&y(e),N&&N.d(),A&&A.d()}}}function xr(l){let e,t,n,i=de(l[19].byDay),o=[];for(let r=0;r0?bv:M[541].source==="suggestion"?kv:M[541].source==="unknown"||M[541].source==="imported"?hv:M[541]._hasEvents?vv:_v}let A=N(l),P=A(l),I=l[541]._events&&ua(l);return{c(){e=u("tr"),t=u("td"),n=u("div"),i=u("div"),o=u("button"),o.textContent=`${v("worklog.editEntry")}`,r=k(),c=u("button"),c.textContent=`${v("worklog.deleteEntry")}`,f=k(),D&&D.c(),p=k(),_=u("div"),m=u("span"),m.textContent=`${v("worklog.source")}`,g=k(),P.c(),h=k(),I&&I.c(),b=k(),s(o,"class","btn btn-sm svelte-19ekrug"),s(c,"class","btn btn-sm btn-danger svelte-19ekrug"),s(i,"class","journal-detail-actions svelte-19ekrug"),s(m,"class","journal-detail-label svelte-19ekrug"),s(_,"class","journal-detail-section svelte-19ekrug"),s(n,"class","journal-detail-body svelte-19ekrug"),s(t,"colspan","8"),s(t,"class","svelte-19ekrug"),s(e,"class","journal-row-detail svelte-19ekrug")},m(M,z){S(M,e,z),a(e,t),a(t,n),a(n,i),a(i,o),a(i,r),a(i,c),a(n,f),D&&D.m(n,null),a(n,p),a(n,_),a(_,m),a(_,g),P.m(_,null),a(n,h),I&&I.m(n,null),a(e,b),w||(C=[L(o,"click",Ie(T)),L(c,"click",Ie(E))],w=!0)},p(M,z){l=M,l[541].details?D?D.p(l,z):(D=ca(l),D.c(),D.m(n,p)):D&&(D.d(1),D=null),A!==(A=N(l))&&(P.d(1),P=A(l),P&&(P.c(),P.m(_,null))),l[541]._events?I?I.p(l,z):(I=ua(l),I.c(),I.m(n,null)):I&&(I.d(1),I=null)},d(M){M&&y(e),D&&D.d(),P.d(),I&&I.d(),w=!1,ge(C)}}}function ca(l){let e,t,n,i,o=l[541].details+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${v("worklog.details")}`,n=k(),i=u("p"),r=F(o),s(t,"class","journal-detail-label svelte-19ekrug"),s(i,"class","svelte-19ekrug"),s(e,"class","journal-detail-section svelte-19ekrug")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f[0]&262144&&o!==(o=c[541].details+"")&&K(r,o)},d(c){c&&y(e)}}}function _v(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function vv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestion")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function hv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function kv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestionNoEvents")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function bv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestion")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function wv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceManual")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function ua(l){let e,t,n,i=de(l[541]._events),o=[];for(let r=0;r0&&pa(l);function ee(...$){return l[335](l[517],l[537],l[538],...$)}function le(){return l[336](l[517])}function ce(){return l[337](l[517])}function pe(){return l[338](l[517])}function Ee(){return l[339](l[517],l[537],l[538])}function ze(...$){return l[340](l[517],l[537],l[538],...$)}let _e=l[517]._expanded&&l[517].events&&l[517].events.length>0&&ma(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("button"),r=F(o),c=k(),f=u("span"),_=F(p),m=k(),g=u("span"),b=F(h),w=k(),T=F(C),x&&x.c(),E=k(),D=u("div"),N=u("span"),I=k(),M=u("input"),B=k(),W=u("span"),W.textContent=`${v("suggest.minutes")}`,H=k(),U=u("button"),U.textContent=`${v("suggest.edit")}`,q=k(),Y=u("button"),Y.textContent=`${v("suggest.apply")}`,Q=k(),O=u("button"),O.textContent=`${v("common.delete")}`,V=k(),_e&&_e.c(),R=k(),s(i,"class","suggestion-node link-btn svelte-19ekrug"),s(f,"class","suggestion-summary svelte-19ekrug"),s(g,"class","suggestion-meta svelte-19ekrug"),s(n,"class","suggestion-info svelte-19ekrug"),s(N,"class","suggestion-confidence-dot svelte-19ekrug"),s(N,"title",A=v("suggest.confidence."+l[517].confidence)),s(N,"aria-label",P=v("suggest.confidence."+l[517].confidence)),ae(N,"low",l[517].confidence==="low"),ae(N,"medium",l[517].confidence==="medium"),ae(N,"high",l[517].confidence==="high"),s(M,"type","number"),s(M,"class","suggestion-min-input svelte-19ekrug"),M.value=z=l[517].suggestedMin,s(M,"min","1"),s(M,"max","480"),s(W,"class","suggestion-min-label svelte-19ekrug"),s(U,"class","btn btn-sm svelte-19ekrug"),s(Y,"class","btn btn-sm btn-primary svelte-19ekrug"),s(O,"class","btn btn-sm btn-danger svelte-19ekrug"),s(D,"class","suggestion-actions svelte-19ekrug"),s(t,"class","suggestion-main svelte-19ekrug"),s(t,"role","button"),s(t,"tabindex","0"),s(e,"class","suggestion-card svelte-19ekrug"),ae(e,"expanded",l[517]._expanded)},m($,se){S($,e,se),a(e,t),a(t,n),a(n,i),a(i,r),a(n,c),a(n,f),a(f,_),a(n,m),a(n,g),a(g,b),a(g,w),a(g,T),x&&x.m(g,null),a(t,E),a(t,D),a(D,N),a(D,I),a(D,M),a(D,B),a(D,W),a(D,H),a(D,U),a(D,q),a(D,Y),a(D,Q),a(D,O),a(e,V),_e&&_e.m(e,null),a(e,R),X||(J=[L(i,"click",Ie(G)),L(M,"change",Ie(ee)),L(U,"click",Ie(le)),L(Y,"click",Ie(ce)),L(O,"click",Ie(pe)),L(t,"click",Ee),L(t,"keydown",ze)],X=!0)},p($,se){l=$,se[1]&262144&&o!==(o=l[517].nodeTitle+"")&&K(r,o),se[1]&262144&&p!==(p=l[517].summary+"")&&K(_,p),se[1]&262144&&h!==(h=l[517].suggestedMin+"")&&K(b,h),l[517].events&&l[517].events.length>0?x?x.p(l,se):(x=pa(l),x.c(),x.m(g,null)):x&&(x.d(1),x=null),se[1]&262144&&A!==(A=v("suggest.confidence."+l[517].confidence))&&s(N,"title",A),se[1]&262144&&P!==(P=v("suggest.confidence."+l[517].confidence))&&s(N,"aria-label",P),se[1]&262144&&ae(N,"low",l[517].confidence==="low"),se[1]&262144&&ae(N,"medium",l[517].confidence==="medium"),se[1]&262144&&ae(N,"high",l[517].confidence==="high"),se[1]&262144&&z!==(z=l[517].suggestedMin)&&M.value!==z&&(M.value=z),l[517]._expanded&&l[517].events&&l[517].events.length>0?_e?_e.p(l,se):(_e=ma(l),_e.c(),_e.m(e,R)):_e&&(_e.d(1),_e=null),se[1]&262144&&ae(e,"expanded",l[517]._expanded)},d($){$&&y(e),x&&x.d(),_e&&_e.d(),X=!1,ge(J)}}}function Sv(l){let e,t,n,i,o,r,c,f,p,_,m,g=l[8]&&ka(l);function h(C,T){return C[66].length===0?Dv:Ev}let b=h(l),w=b(l);return{c(){e=u("div"),t=u("section"),n=u("div"),g&&g.c(),i=k(),o=u("div"),r=u("h3"),c=F(l[68]),f=k(),p=u("p"),_=F(l[67]),m=k(),w.c(),s(r,"class","svelte-19ekrug"),s(p,"class","svelte-19ekrug"),s(o,"class","svelte-19ekrug"),s(n,"class","trash-section-head svelte-19ekrug"),s(t,"class","trash-section svelte-19ekrug"),s(e,"class","trash-browser svelte-19ekrug")},m(C,T){S(C,e,T),a(e,t),a(t,n),g&&g.m(n,null),a(n,i),a(n,o),a(o,r),a(r,c),a(o,f),a(o,p),a(p,_),a(t,m),w.m(t,null)},p(C,T){C[8]?g?g.p(C,T):(g=ka(C),g.c(),g.m(n,i)):g&&(g.d(1),g=null),T[2]&64&&K(c,C[68]),T[2]&32&&K(_,C[67]),b===(b=h(C))&&w?w.p(C,T):(w.d(1),w=b(C),w&&(w.c(),w.m(t,null)))},d(C){C&&y(e),g&&g.d(),w.d()}}}function Tv(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${v("trash.empty")}`,s(t,"class","svelte-19ekrug"),s(e,"class","empty-state svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p:te,d(n){n&&y(e)}}}function ka(l){let e,t=it("back")+"",n,i;return{c(){e=u("button"),s(e,"class","inbox-icon-btn svelte-19ekrug"),s(e,"title",v("common.backLabel")),s(e,"aria-label",v("common.backLabel"))},m(o,r){S(o,e,r),e.innerHTML=t,n||(i=L(e,"click",l[178]),n=!0)},p:te,d(o){o&&y(e),n=!1,i()}}}function Ev(l){let e,t=de(l[66]),n=[];for(let i=0;i0,r,c,f,p=o&&Na(l);function _(h,b){return h[39].length===0?Zv:Xv}let m=_(l),g=m(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`+ ${v("worklog.addEntry")}`,i=k(),p&&p.c(),r=k(),g.c(),s(n,"class","btn btn-primary btn-sm svelte-19ekrug"),s(t,"class","worklog-toolbar svelte-19ekrug"),s(e,"class","worklog-tab svelte-19ekrug")},m(h,b){S(h,e,b),a(e,t),a(t,n),a(e,i),p&&p.m(e,null),a(e,r),g.m(e,null),c||(f=L(n,"click",l[290]),c=!0)},p(h,b){b[0]&4|b[1]&262144&&(o=h[2]&&h[49].filter(h[243]).length>0),o?p?p.p(h,b):(p=Na(h),p.c(),p.m(e,r)):p&&(p.d(1),p=null),m===(m=_(h))&&g?g.p(h,b):(g.d(1),g=m(h),g&&(g.c(),g.m(e,null)))},i:te,o:te,d(h){h&&y(e),p&&p.d(),g.d(),c=!1,f()}}}function Vv(l){let e,t,n,i,o,r;function c(_,m){return _[38].length===0?ih:nh}let f=c(l),p=f(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`${v("action.addAction")}`,i=k(),p.c(),s(n,"class","btn btn-primary svelte-19ekrug"),s(t,"class","tab-toolbar svelte-19ekrug"),s(e,"class","actions-tab svelte-19ekrug")},m(_,m){S(_,e,m),a(e,t),a(t,n),a(e,i),p.m(e,null),o||(r=L(n,"click",l[227]),o=!0)},p(_,m){f===(f=c(_))&&p?p.p(_,m):(p.d(1),p=f(_),p&&(p.c(),p.m(e,null)))},i:te,o:te,d(_){_&&y(e),p.d(),o=!1,r()}}}function Uv(l){let e,t;function n(c,f){return c[58].length===0?oh:sh}let i=n(l),o=i(l),r=l[63]&&Ya(l);return{c(){e=u("div"),o.c(),t=k(),r&&r.c(),s(e,"class","links-tab svelte-19ekrug")},m(c,f){S(c,e,f),o.m(e,null),a(e,t),r&&r.m(e,null)},p(c,f){i===(i=n(c))&&o?o.p(c,f):(o.d(1),o=i(c),o&&(o.c(),o.m(e,t))),c[63]?r?r.p(c,f):(r=Ya(c),r.c(),r.m(e,null)):r&&(r.d(1),r=null)},i:te,o:te,d(c){c&&y(e),o.d(),r&&r.d()}}}function Kv(l){let e;function t(o,r){return o[55].length===0?ah:rh}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","inbox-tab svelte-19ekrug")},m(o,r){S(o,e,r),i.m(e,null)},p(o,r){n===(n=t(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e,null)))},i:te,o:te,d(o){o&&y(e),i.d()}}}function Gv(l){let e,t,n,i=v("file.addFile")+"",o,r,c,f=v("file.addFolder")+"",p,_,m,g,h,b,w,C,T,E,D,N=l[93].items.length>0&&Xa(l);const A=[dh,fh],P=[];function I(z,B){return z[85]?0:1}b=I(l),w=P[b]=A[b](l);let M=l[81]&&!l[83]&&xa();return{c(){e=u("div"),t=u("div"),n=u("button"),o=F(i),r=k(),c=u("button"),p=F(f),_=k(),m=u("button"),m.textContent=`${v("file.newFile")}`,g=k(),N&&N.c(),h=k(),w.c(),C=k(),M&&M.c(),s(n,"class","btn btn-primary svelte-19ekrug"),n.disabled=l[81],s(c,"class","btn svelte-19ekrug"),c.disabled=l[81],s(m,"class","btn svelte-19ekrug"),s(t,"class","tab-toolbar svelte-19ekrug"),s(e,"class","files-tab svelte-19ekrug")},m(z,B){S(z,e,B),a(e,t),a(t,n),a(n,o),a(t,r),a(t,c),a(c,p),a(t,_),a(t,m),a(t,g),N&&N.m(t,null),a(e,h),P[b].m(e,null),a(e,C),M&&M.m(e,null),T=!0,E||(D=[L(n,"click",l[201]),L(c,"click",l[202]),L(m,"click",l[132])],E=!0)},p(z,B){(!T||B[2]&524288)&&(n.disabled=z[81]),(!T||B[2]&524288)&&(c.disabled=z[81]),z[93].items.length>0?N?N.p(z,B):(N=Xa(z),N.c(),N.m(t,null)):N&&(N.d(1),N=null);let W=b;b=I(z),b===W?P[b].p(z,B):(at(),me(P[W],1,1,()=>{P[W]=null}),ct(),w=P[b],w?w.p(z,B):(w=P[b]=A[b](z),w.c()),fe(w,1),w.m(e,C)),z[81]&&!z[83]?M||(M=xa(),M.c(),M.m(e,null)):M&&(M.d(1),M=null)},i(z){T||(fe(w),T=!0)},o(z){me(w),T=!1},d(z){z&&y(e),N&&N.d(),P[b].d(),M&&M.d(),E=!1,ge(D)}}}function Jv(l){let e,t,n,i,o,r,c,f=l[74]&&$a(l);function p(g,h){return g[36].length===0&&!g[74]?hh:vh}let _=p(l),m=_(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`${v("note.add")}`,i=k(),f&&f.c(),o=k(),m.c(),s(n,"class","btn btn-primary svelte-19ekrug"),s(t,"class","tab-toolbar svelte-19ekrug"),s(e,"class","notes-tab svelte-19ekrug")},m(g,h){S(g,e,h),a(e,t),a(t,n),a(e,i),f&&f.m(e,null),a(e,o),m.m(e,null),r||(c=L(n,"click",l[165]),r=!0)},p(g,h){g[74]?f?f.p(g,h):(f=$a(g),f.c(),f.m(e,o)):f&&(f.d(1),f=null),_===(_=p(g))&&m?m.p(g,h):(m.d(1),m=_(g),m&&(m.c(),m.m(e,null)))},i:te,o:te,d(g){g&&y(e),f&&f.d(),m.d(),r=!1,c()}}}function qv(l){let e,t,n=l[2].title+"",i,o,r,c,f,p,_=l[207](l[2].type)+"",m,g,h,b,w,C=(l[2].section||"—")+"",T,E,D,N,A,P=vt(l[2].createdAt)+"",I,M,z,B,W,H,U,q,Y=v("overview.newNote")+"",Q,O,V,R,X,J,G=v("overview.addFile")+"",x,ee,le,ce,pe,Ee,ze=v("overview.addAction")+"",_e,$,se,Ce,De,we,Le,Qe=v("overview.logTime")+"",Ae,$e,Re,Pe,Ne,Ge=l[36].length>0&&tc(l),Se=l[39].length>0&&nc(l);return{c(){e=u("div"),t=u("h2"),i=F(n),o=k(),r=u("div"),c=u("div"),f=u("span"),f.textContent=`${v("overview.type")}`,p=u("span"),m=F(_),g=k(),h=u("div"),b=u("span"),b.textContent=`${v("overview.section")}`,w=u("span"),T=F(C),E=k(),D=u("div"),N=u("span"),N.textContent=`${v("overview.created")}`,A=u("span"),I=F(P),M=k(),z=u("div"),B=u("button"),W=ie("svg"),H=ie("path"),U=ie("path"),q=k(),Q=F(Y),O=k(),V=u("button"),R=ie("svg"),X=ie("path"),J=k(),x=F(G),ee=k(),le=u("button"),ce=ie("svg"),pe=ie("polygon"),Ee=k(),_e=F(ze),$=k(),se=u("button"),Ce=ie("svg"),De=ie("circle"),we=ie("polyline"),Le=k(),Ae=F(Qe),$e=k(),Ge&&Ge.c(),Re=k(),Se&&Se.c(),s(t,"class","svelte-19ekrug"),s(f,"class","meta-label svelte-19ekrug"),s(p,"class","svelte-19ekrug"),s(c,"class","meta-item svelte-19ekrug"),s(b,"class","meta-label svelte-19ekrug"),s(w,"class","svelte-19ekrug"),s(h,"class","meta-item svelte-19ekrug"),s(N,"class","meta-label svelte-19ekrug"),s(A,"class","svelte-19ekrug"),s(D,"class","meta-item svelte-19ekrug"),s(r,"class","meta-grid svelte-19ekrug"),s(H,"d","M12 20h9"),s(H,"class","svelte-19ekrug"),s(U,"d","M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"),s(U,"class","svelte-19ekrug"),s(W,"width","16"),s(W,"height","16"),s(W,"viewBox","0 0 24 24"),s(W,"fill","none"),s(W,"stroke","currentColor"),s(W,"stroke-width","2"),s(W,"stroke-linecap","round"),s(W,"stroke-linejoin","round"),s(W,"class","svelte-19ekrug"),s(B,"class","qa-btn svelte-19ekrug"),s(X,"d","M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"),s(X,"class","svelte-19ekrug"),s(R,"width","16"),s(R,"height","16"),s(R,"viewBox","0 0 24 24"),s(R,"fill","none"),s(R,"stroke","currentColor"),s(R,"stroke-width","2"),s(R,"stroke-linecap","round"),s(R,"stroke-linejoin","round"),s(R,"class","svelte-19ekrug"),s(V,"class","qa-btn svelte-19ekrug"),s(pe,"points","13 2 3 14 12 14 11 22 21 10 12 10 13 2"),s(pe,"class","svelte-19ekrug"),s(ce,"width","16"),s(ce,"height","16"),s(ce,"viewBox","0 0 24 24"),s(ce,"fill","none"),s(ce,"stroke","currentColor"),s(ce,"stroke-width","2"),s(ce,"stroke-linecap","round"),s(ce,"stroke-linejoin","round"),s(ce,"class","svelte-19ekrug"),s(le,"class","qa-btn svelte-19ekrug"),s(De,"cx","12"),s(De,"cy","12"),s(De,"r","10"),s(De,"class","svelte-19ekrug"),s(we,"points","12 6 12 12 16 14"),s(we,"class","svelte-19ekrug"),s(Ce,"width","16"),s(Ce,"height","16"),s(Ce,"viewBox","0 0 24 24"),s(Ce,"fill","none"),s(Ce,"stroke","currentColor"),s(Ce,"stroke-width","2"),s(Ce,"stroke-linecap","round"),s(Ce,"stroke-linejoin","round"),s(Ce,"class","svelte-19ekrug"),s(se,"class","qa-btn svelte-19ekrug"),s(z,"class","quick-actions svelte-19ekrug"),s(e,"class","overview svelte-19ekrug")},m(je,Me){S(je,e,Me),a(e,t),a(t,i),a(e,o),a(e,r),a(r,c),a(c,f),a(c,p),a(p,m),a(r,g),a(r,h),a(h,b),a(h,w),a(w,T),a(r,E),a(r,D),a(D,N),a(D,A),a(A,I),a(e,M),a(e,z),a(z,B),a(B,W),a(W,H),a(W,U),a(B,q),a(B,Q),a(z,O),a(z,V),a(V,R),a(R,X),a(V,J),a(V,x),a(z,ee),a(z,le),a(le,ce),a(ce,pe),a(le,Ee),a(le,_e),a(z,$),a(z,se),a(se,Ce),a(Ce,De),a(Ce,we),a(se,Le),a(se,Ae),a(e,$e),Ge&&Ge.m(e,null),a(e,Re),Se&&Se.m(e,null),Pe||(Ne=[L(B,"click",l[255]),L(V,"click",l[256]),L(le,"click",l[227]),L(se,"click",l[257])],Pe=!0)},p(je,Me){Me[0]&4&&n!==(n=je[2].title+"")&&K(i,n),Me[0]&4&&_!==(_=je[207](je[2].type)+"")&&K(m,_),Me[0]&4&&C!==(C=(je[2].section||"—")+"")&&K(T,C),Me[0]&4&&P!==(P=vt(je[2].createdAt)+"")&&K(I,P),je[36].length>0?Ge?Ge.p(je,Me):(Ge=tc(je),Ge.c(),Ge.m(e,Re)):Ge&&(Ge.d(1),Ge=null),je[39].length>0?Se?Se.p(je,Me):(Se=nc(je),Se.c(),Se.m(e,null)):Se&&(Se.d(1),Se=null)},i:te,o:te,d(je){je&&y(e),Ge&&Ge.d(),Se&&Se.d(),Pe=!1,ge(Ne)}}}function Yv(l){let e,t=de(l[32]),n=[];for(let i=0;i0&&Aa(l);function q(){return l[292](l[517])}function Y(){return l[293](l[517])}function Q(){return l[294](l[517])}function O(){return l[295](l[517],l[518],l[519])}function V(...X){return l[296](l[517],l[518],l[519],...X)}let R=l[517]._expanded&&l[517].events&&l[517].events.length>0&&Ma(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("span"),r=F(o),c=k(),f=u("span"),_=F(p),m=k(),h=F(g),U&&U.c(),b=k(),w=u("div"),C=u("span"),D=k(),N=u("button"),N.textContent=`${v("suggest.edit")}`,A=k(),P=u("button"),P.textContent=`${v("worklog.apply")}`,I=k(),M=u("button"),M.textContent=`${v("common.delete")}`,z=k(),R&&R.c(),B=k(),s(i,"class","suggestion-summary svelte-19ekrug"),s(f,"class","suggestion-meta svelte-19ekrug"),s(n,"class","suggestion-info svelte-19ekrug"),s(C,"class","suggestion-confidence-dot svelte-19ekrug"),s(C,"title",T=v("suggest.confidence."+l[517].confidence)),s(C,"aria-label",E=v("suggest.confidence."+l[517].confidence)),ae(C,"low",l[517].confidence==="low"),ae(C,"medium",l[517].confidence==="medium"),ae(C,"high",l[517].confidence==="high"),s(N,"class","btn btn-sm svelte-19ekrug"),s(P,"class","btn btn-sm btn-primary svelte-19ekrug"),s(M,"class","btn btn-sm btn-danger svelte-19ekrug"),s(w,"class","suggestion-actions svelte-19ekrug"),s(t,"class","suggestion-main svelte-19ekrug"),s(t,"role","button"),s(t,"tabindex","0"),s(e,"class","suggestion-card svelte-19ekrug"),ae(e,"expanded",l[517]._expanded)},m(X,J){S(X,e,J),a(e,t),a(t,n),a(n,i),a(i,r),a(n,c),a(n,f),a(f,_),a(f,m),a(f,h),U&&U.m(f,null),a(t,b),a(t,w),a(w,C),a(w,D),a(w,N),a(w,A),a(w,P),a(w,I),a(w,M),a(e,z),R&&R.m(e,null),a(e,B),W||(H=[L(N,"click",Ie(q)),L(P,"click",Ie(Y)),L(M,"click",Ie(Q)),L(t,"click",O),L(t,"keydown",V)],W=!0)},p(X,J){l=X,J[0]&4|J[1]&262144&&o!==(o=l[517].summary+"")&&K(r,o),J[0]&4|J[1]&262144&&p!==(p=l[517].suggestedMin+"")&&K(_,p),l[517].events&&l[517].events.length>0?U?U.p(l,J):(U=Aa(l),U.c(),U.m(f,null)):U&&(U.d(1),U=null),J[0]&4|J[1]&262144&&T!==(T=v("suggest.confidence."+l[517].confidence))&&s(C,"title",T),J[0]&4|J[1]&262144&&E!==(E=v("suggest.confidence."+l[517].confidence))&&s(C,"aria-label",E),J[0]&4|J[1]&262144&&ae(C,"low",l[517].confidence==="low"),J[0]&4|J[1]&262144&&ae(C,"medium",l[517].confidence==="medium"),J[0]&4|J[1]&262144&&ae(C,"high",l[517].confidence==="high"),l[517]._expanded&&l[517].events&&l[517].events.length>0?R?R.p(l,J):(R=Ma(l),R.c(),R.m(e,B)):R&&(R.d(1),R=null),J[0]&4|J[1]&262144&&ae(e,"expanded",l[517]._expanded)},d(X){X&&y(e),U&&U.d(),R&&R.d(),W=!1,ge(H)}}}function Xv(l){let e,t=de(l[39]),n=[];for(let i=0;i0?th:A[493].source==="suggestion"?eh:A[493].source==="unknown"||A[493].source==="imported"?$v:xv}let E=T(l),D=E(l),N=l[493].source==="suggestion"&&l[493]._events&&l[493]._events.length>0&&Wa(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`${v("worklog.editEntry")}`,i=k(),o=u("button"),o.textContent=`${v("worklog.deleteEntry")}`,r=k(),C&&C.c(),c=k(),f=u("div"),p=u("span"),p.textContent=`${v("worklog.source")}`,_=k(),D.c(),m=k(),N&&N.c(),s(n,"class","btn btn-sm svelte-19ekrug"),s(o,"class","btn btn-sm btn-danger svelte-19ekrug"),s(t,"class","worklog-entry-actions svelte-19ekrug"),s(p,"class","wl-detail-label svelte-19ekrug"),s(f,"class","wl-detail-section svelte-19ekrug"),s(e,"class","worklog-entry-detail svelte-19ekrug")},m(A,P){S(A,e,P),a(e,t),a(t,n),a(t,i),a(t,o),a(e,r),C&&C.m(e,null),a(e,c),a(e,f),a(f,p),a(f,_),D.m(f,null),a(e,m),N&&N.m(e,null),g||(h=[L(n,"click",Ie(b)),L(o,"click",Ie(w))],g=!0)},p(A,P){l=A,l[493].details?C?C.p(l,P):(C=Ha(l),C.c(),C.m(e,c)):C&&(C.d(1),C=null),E!==(E=T(l))&&(D.d(1),D=E(l),D&&(D.c(),D.m(f,null))),l[493].source==="suggestion"&&l[493]._events&&l[493]._events.length>0?N?N.p(l,P):(N=Wa(l),N.c(),N.m(e,null)):N&&(N.d(1),N=null)},d(A){A&&y(e),C&&C.d(),D.d(),N&&N.d(),g=!1,ge(h)}}}function Ha(l){let e,t,n,i,o=l[493].details+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${v("worklog.details")}`,n=k(),i=u("p"),r=F(o),s(t,"class","wl-detail-label svelte-19ekrug"),s(i,"class","svelte-19ekrug"),s(e,"class","wl-detail-section svelte-19ekrug")},m(c,f){S(c,e,f),a(e,t),a(e,n),a(e,i),a(i,r)},p(c,f){f[1]&256&&o!==(o=c[493].details+"")&&K(r,o)},d(c){c&&y(e)}}}function xv(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function $v(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function eh(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestionNoEvents")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function th(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceSuggestion")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function lh(l){let e;return{c(){e=u("p"),e.textContent=`${v("worklog.sourceManual")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&y(e)}}}function Wa(l){let e,t,n,i=de(l[493]._events),o=[];for(let r=0;r',D=k(),s(n,"class","action-title svelte-19ekrug"),s(c,"class","action-type svelte-19ekrug"),s(m,"class","action-data svelte-19ekrug"),s(t,"class","action-info svelte-19ekrug"),s(C,"class","btn btn-sm svelte-19ekrug"),s(E,"class","btn btn-sm btn-danger svelte-19ekrug"),s(w,"class","action-btns svelte-19ekrug"),s(e,"class","action-card svelte-19ekrug")},m(M,z){S(M,e,z),a(e,t),a(t,n),a(n,o),a(t,r),a(t,c),a(c,p),a(t,_),a(t,m),a(m,h),a(e,b),a(e,w),a(w,C),a(w,T),a(w,E),a(e,D),N||(A=[L(C,"click",P),L(E,"click",I)],N=!0)},p(M,z){l=M,z[1]&128&&i!==(i=l[509].title+"")&&K(o,i),z[1]&128&&f!==(f=l[231](l[509].type)+"")&&K(p,f),z[1]&128&&g!==(g=l[509].data+"")&&K(h,g)},d(M){M&&y(e),N=!1,ge(A)}}}function sh(l){let e,t=de(l[58]),n=[];for(let i=0;i0?0:1}e=_(l),t=p[e]=f[e](l);const m=[_h,gh],g=[];function h(b,w){return b[88].length===0?0:1}return i=h(l),o=g[i]=m[i](l),{c(){t.c(),n=k(),o.c(),r=ot()},m(b,w){p[e].m(b,w),S(b,n,w),g[i].m(b,w),S(b,r,w),c=!0},p(b,w){let C=e;e=_(b),e===C?p[e].p(b,w):(at(),me(p[C],1,1,()=>{p[C]=null}),ct(),t=p[e],t?t.p(b,w):(t=p[e]=f[e](b),t.c()),fe(t,1),t.m(n.parentNode,n));let T=i;i=h(b),i===T?g[i].p(b,w):(at(),me(g[T],1,1,()=>{g[T]=null}),ct(),o=g[i],o?o.p(b,w):(o=g[i]=m[i](b),o.c()),fe(o,1),o.m(r.parentNode,r))},i(b){c||(fe(t),fe(o),c=!0)},o(b){me(t),me(o),c=!1},d(b){b&&(y(n),y(r)),p[e].d(b),g[i].d(b)}}}function dh(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${v("common.loading")}`,s(t,"class","svelte-19ekrug"),s(e,"class","empty-state svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},p:te,i:te,o:te,d(n){n&&y(e)}}}function ph(l){let e,t;return e=new qc({props:{crumbs:[{name:v("file.root")}]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p:te,i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){me(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function mh(l){let e,t,n,i,o,r,c,f=v("common.backLabel")+"",p,_,m,g;return e=new qc({props:{crumbs:[{name:v("file.root")},...l[87]]}}),e.$on("navigate",l[264]),{c(){Ve(e.$$.fragment),t=k(),n=u("button"),i=ie("svg"),o=ie("line"),r=ie("polyline"),c=k(),p=F(f),s(o,"x1","19"),s(o,"y1","12"),s(o,"x2","5"),s(o,"y2","12"),s(o,"class","svelte-19ekrug"),s(r,"points","12 19 5 12 12 5"),s(r,"class","svelte-19ekrug"),s(i,"width","14"),s(i,"height","14"),s(i,"viewBox","0 0 24 24"),s(i,"fill","none"),s(i,"stroke","currentColor"),s(i,"stroke-width","2"),s(i,"stroke-linecap","round"),s(i,"stroke-linejoin","round"),s(i,"class","svelte-19ekrug"),s(n,"class","btn btn-sm back-btn svelte-19ekrug")},m(h,b){He(e,h,b),S(h,t,b),S(h,n,b),a(n,i),a(i,o),a(i,r),a(n,c),a(n,p),_=!0,m||(g=L(n,"click",l[128]),m=!0)},p(h,b){const w={};b[2]&33554432&&(w.crumbs=[{name:v("file.root")},...h[87]]),e.$set(w)},i(h){_||(fe(e.$$.fragment,h),_=!0)},o(h){me(e.$$.fragment,h),_=!1},d(h){h&&(y(t),y(n)),We(e,h),m=!1,g()}}}function gh(l){let e,t=[],n=new Map,i,o=de(l[88]);const r=c=>c[501].id;for(let c=0;c0?v("file.noFiles"):v("file.noFilesCase"))+"",r,c,f,p,_,m,g,h,b,w;return{c(){e=u("div"),t=u("div"),t.innerHTML='',n=k(),i=u("p"),r=F(o),c=k(),f=u("p"),f.textContent=`${v("file.hint")}`,p=k(),_=u("div"),m=u("button"),m.textContent=`${v("file.addFileSimple")}`,g=k(),h=u("button"),h.textContent=`${v("file.addFolderSimple")}`,s(t,"class","empty-icon svelte-19ekrug"),s(i,"class","svelte-19ekrug"),s(f,"class","hint svelte-19ekrug"),s(m,"class","btn btn-primary svelte-19ekrug"),s(h,"class","btn svelte-19ekrug"),s(_,"class","empty-actions svelte-19ekrug"),s(e,"class","empty-state svelte-19ekrug")},m(C,T){S(C,e,T),a(e,t),a(e,n),a(e,i),a(i,r),a(e,c),a(e,f),a(e,p),a(e,_),a(_,m),a(_,g),a(_,h),b||(w=[L(m,"click",l[201]),L(h,"click",l[202])],b=!0)},p(C,T){T[2]&33554432&&o!==(o=(C[87].length>0?v("file.noFiles"):v("file.noFilesCase"))+"")&&K(r,o)},i:te,o:te,d(C){C&&y(e),b=!1,ge(w)}}}function Za(l,e){let t,n,i;return n=new Xp({props:{item:e[501],selected:e[94].includes(e[501].id),onDragStart:e[141],onDragOver:e[142],onDrop:e[143]}}),n.$on("navigate",e[265]),n.$on("preview",e[266]),n.$on("openExternal",e[267]),n.$on("showInFolder",e[268]),n.$on("delete",e[269]),n.$on("rename",e[270]),n.$on("duplicate",e[271]),n.$on("cut",e[272]),n.$on("copy",e[273]),n.$on("selectOne",e[274]),n.$on("toggleSelect",e[275]),n.$on("rangeSelect",e[276]),{key:l,first:null,c(){t=ot(),Ve(n.$$.fragment),this.first=t},m(o,r){S(o,t,r),He(n,o,r),i=!0},p(o,r){e=o;const c={};r[2]&67108864&&(c.item=e[501]),r[2]&67108864|r[3]&2&&(c.selected=e[94].includes(e[501].id)),n.$set(c)},i(o){i||(fe(n.$$.fragment,o),i=!0)},o(o){me(n.$$.fragment,o),i=!1},d(o){o&&y(t),We(n,o)}}}function xa(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${v("file.scanning")}`,s(t,"class","svelte-19ekrug"),s(e,"class","empty-state svelte-19ekrug")},m(n,i){S(n,e,i),a(e,t)},d(n){n&&y(e)}}}function $a(l){let e,t,n,i,o,r,c,f,p;return{c(){e=u("div"),t=u("input"),n=k(),i=u("div"),o=u("button"),o.textContent=`${v("common.create")}`,r=k(),c=u("button"),c.textContent=`${v("common.cancel")}`,s(t,"type","text"),s(t,"placeholder",v("note.title")),s(t,"class","svelte-19ekrug"),s(o,"class","btn btn-primary svelte-19ekrug"),s(c,"class","btn svelte-19ekrug"),s(i,"class","form-actions svelte-19ekrug"),s(e,"class","create-form svelte-19ekrug")},m(_,m){S(_,e,m),a(e,t),be(t,l[75]),a(e,n),a(e,i),a(i,o),a(i,r),a(i,c),f||(p=[L(t,"input",l[260]),L(t,"keydown",l[261]),L(o,"click",l[167]),L(c,"click",l[166])],f=!0)},p(_,m){m[2]&8192&&t.value!==_[75]&&be(t,_[75])},d(_){_&&y(e),f=!1,ge(p)}}}function vh(l){let e,t=de(l[36]),n=[];for(let i=0;ime(J[x],1,1,()=>{J[x]=null});return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${v("nav.createNode")}`,i=k(),R&&R.c(),o=k(),r=u("div"),c=u("span"),c.textContent=`${v("template.select")}`,f=k(),p=u("div"),_=u("button"),Ve(m.$$.fragment),g=k(),h=u("div"),b=u("span"),b.textContent=`${v("template.optionNone")}`,w=k(),C=u("span"),C.textContent=`${v("template.none.desc")}`,T=k();for(let x=0;x{b=null}),ct()),C[73].node&&C[73].node.parent_id?w?w.p(C,T):(w=dc(C),w.c(),w.m(t,o)):w&&(w.d(1),w=null),(!m||T[2]&2048)&&kt(t,"left",C[73].x+"px"),(!m||T[2]&2048)&&kt(t,"top",C[73].y+"px")},i(C){m||(fe(b),m=!0)},o(C){me(b),m=!1},d(C){C&&y(e),b&&b.d(),w&&w.d(),g=!1,ge(h)}}}function uc(l){let e,t,n,i,o,r=de(l[15].length>0?l[15]:[{id:"",title:"template.optionNone",icon:"folder"}]),c=[];for(let p=0;pme(c[p],1,1,()=>{c[p]=null});return{c(){e=u("div"),e.textContent=`${v("common.create")}`,t=k();for(let p=0;p0?p[15]:[{id:"",title:"template.optionNone",icon:"folder"}]);let m;for(m=0;ml[389].call(w)),s(g,"class","svelte-19ekrug"),s(m,"class","form-group svelte-19ekrug"),s(D,"class","label-text svelte-19ekrug"),s(I,"type","text"),s(I,"placeholder",M=l[78]==="open_url"?v("action.urlPlaceholder"):l[78]==="open_folder"||l[78]==="open_file"?v("action.pathPlaceholder"):v("action.commandPlaceholder")),s(I,"class","svelte-19ekrug"),s(E,"class","svelte-19ekrug"),s(T,"class","form-group svelte-19ekrug"),s(W,"class","btn btn-primary svelte-19ekrug"),s(U,"class","btn svelte-19ekrug"),s(B,"class","modal-actions svelte-19ekrug"),s(t,"class","modal svelte-19ekrug"),s(e,"class","modal-overlay svelte-19ekrug"),s(e,"role","button"),s(e,"tabindex","0")},m(V,R){S(V,e,R),a(e,t),a(t,n),a(t,i),a(t,o),a(o,r),a(r,c),a(r,f),a(r,p),be(p,l[77]),a(t,_),a(t,m),a(m,g),a(g,h),a(g,b),a(g,w);for(let X=0;X0&&wc(l),U=l[111]&&Cc();return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${v("inbox.assignTitle")}`,i=k(),o=u("div"),c=F(r),f=k(),p=u("div"),_=u("label"),m=u("span"),m.textContent=`${v("inbox.assignTarget")}`,g=k(),h=u("input"),b=k(),w=u("div"),w.textContent=`${v("inbox.assignSearchHint")}`,C=k(),H&&H.c(),T=k(),U&&U.c(),E=k(),D=u("div"),N=u("button"),P=F(A),M=k(),z=u("button"),z.textContent=`${v("common.cancel")}`,s(n,"class","svelte-19ekrug"),s(o,"class","create-context svelte-19ekrug"),s(m,"class","label-text svelte-19ekrug"),s(h,"type","text"),s(h,"placeholder",v("inbox.assignSearchPlaceholder")),s(h,"class","svelte-19ekrug"),s(w,"class","assign-hint svelte-19ekrug"),s(_,"class","svelte-19ekrug"),s(p,"class","form-group assign-search svelte-19ekrug"),s(N,"class","btn btn-primary svelte-19ekrug"),N.disabled=I=!l[110],s(z,"class","btn svelte-19ekrug"),s(D,"class","modal-actions svelte-19ekrug"),s(t,"class","modal svelte-19ekrug"),s(e,"class","modal-overlay svelte-19ekrug"),s(e,"role","button"),s(e,"tabindex","0")},m(q,Y){S(q,e,Y),a(e,t),a(t,n),a(t,i),a(t,o),a(o,c),a(t,f),a(t,p),a(p,_),a(_,m),a(_,g),a(_,h),be(h,l[108]),a(_,b),a(_,w),a(p,C),H&&H.m(p,null),a(t,T),U&&U.m(t,null),a(t,E),a(t,D),a(D,N),a(N,P),a(D,M),a(D,z),B||(W=[L(h,"input",l[395]),L(h,"input",l[216]),L(h,"keydown",l[396]),L(N,"click",l[218]),L(z,"click",l[215]),L(e,"click",Ct(l[215])),L(e,"keydown",gt(l[215]))],B=!0)},p(q,Y){Y[3]&16384&&r!==(r=q[107].title+"")&&K(c,r),Y[3]&32768&&h.value!==q[108]&&be(h,q[108]),q[109].length>0?H?H.p(q,Y):(H=wc(q),H.c(),H.m(p,null)):H&&(H.d(1),H=null),q[111]?U||(U=Cc(),U.c(),U.m(t,E)):U&&(U.d(1),U=null),Y[3]&131072&&I!==(I=!q[110])&&(N.disabled=I)},d(q){q&&y(e),H&&H.d(),U&&U.d(),B=!1,ge(W)}}}function wc(l){let e,t=de(l[109]),n=[];for(let i=0;i{r[_]=null}),ct(),t=r[e],t?t.p(f,p):(t=r[e]=o[e](f),t.c()),fe(t,1),t.m(n.parentNode,n))},i(f){i||(fe(t),i=!0)},o(f){me(t),i=!1},d(f){f&&y(n),r[e].d(f)}}}function oe(l,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[l];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",l,t)}return Promise.reject(new Error("Wails not connected: "+l))}function bh(l,e,t){const n=[...l];return n.sort((i,o)=>{let r=0;if(e==="name")r=(i.title||"").localeCompare(o.title||"");else if(e==="type"){const c=i.captureKind||i.sourceKind||i.type||"",f=o.captureKind||o.sourceKind||o.type||"";r=c.localeCompare(f)}else r=(i.capturedAt||i.createdAt||"").localeCompare(o.capturedAt||o.createdAt||"");return t==="asc"?r:-r}),n}function wh(l,e){return l.section===e.section&&l.nodeId===e.nodeId&&l.tab===e.tab&&l.trashFolderId===e.trashFolderId}function kn(l){return!l||!(l instanceof Element)?!1:!!l.closest('input, textarea, select, [contenteditable="true"], [contenteditable=""]')}function Hl(l,e,t){for(const n of l){if(n.id===e)return n.children=t,n.has_children=t.length>0,!0;if(n.children&&Hl(n.children,e,t))return!0}return!1}function Zc(l){return(l==null?void 0:l.sourceKind)||(l==null?void 0:l.captureKind)||(l==null?void 0:l.type)||""}function _i(l){return Zc(l)!=="url"&&(l==null?void 0:l.type)!=="link"}function yh(l,e){return{id:l.id,nodeId:l.id,fileId:e.id||e.fileId,name:e.name||l.title,type:"file",size:e.size||0,mime:e.mime||""}}function xc(l,e,t){for(const n of l){if(n.id===e)return n.children=t,n.has_children=t.length>0,!0;if(n.children&&xc(n.children,e,t))return!0}return!1}function Ch(l,e){return e?l.filter(t=>ri(t)===e):l.filter(t=>!ri(t)||!l.some(n=>n.id===ri(t)))}function ri(l){return(l==null?void 0:l.parentId)||(l==null?void 0:l.parentID)||(l==null?void 0:l.parent_id)||""}function gn(l){return l.eventIds&&l.eventIds.length?l.eventIds:l.events&&l.events.length?l.events.map(e=>e.id).filter(Boolean):[]}function _n(l){try{oe("WriteDebugLog",l)}catch{}}function ai(l){return l?l.map(e=>(e._expanded===void 0&&(e._expanded=!1),e)):[]}function _t(l){return l?new Date(l).toLocaleTimeString("ru-RU",{hour:"2-digit",minute:"2-digit"}):""}function Ul(l){return l==="note_created"||l==="file_added"||l==="folder_added"||l==="node_created"?"+":l==="file_deleted"||l==="folder_deleted"?"×":l==="file_renamed"||l==="folder_renamed"||l==="note_updated"||l==="node_updated"?"~":l==="file_copied"?"⧉":l==="file_moved"?"→":"•"}function vt(l){if(!l)return"";try{return new Date(l).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return l}}function ci(l){const e=String(l||"").trim();if(!e||/[\s]/.test(e)||e.includes("@"))return"";try{const t=new URL(e);return(t.protocol==="http:"||t.protocol==="https:")&&t.hostname?e:""}catch{try{const n=`https://${e}`,i=new URL(n);return i.hostname&&i.hostname.includes(".")?n:""}catch{return""}}}function Sh(l){return{"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"}[l]||"bin"}function Th(l){return new Promise((e,t)=>{const n=new FileReader;n.onload=()=>{const i=String(n.result||""),o=i.indexOf(",");e(o>=0?i.slice(o+1):i)},n.onerror=()=>t(n.error),n.readAsDataURL(l)})}function Eh(l){const e=String(l||"").split(/\r?\n/).map(t=>t.trim()).filter(Boolean);return e.length?{url:e[0],title:e[1]||""}:null}function Dh(l){return String(l||"").split(/\r?\n/).map(t=>t.trim()).filter(t=>t&&!t.startsWith("#"))[0]||""}function Ih(l){return["case","client","project","folder","document","recipe"].includes(l.type)}function Nh(l){return l.targetType==="note"&&l.targetId?{nodeId:l.nodeId,tab:"notes",targetId:l.targetId}:l.targetType==="file"?{nodeId:l.nodeId,tab:"files",targetId:l.targetId,targetPath:l.targetPath}:l.targetType==="folder"?{nodeId:l.nodeId,tab:"files",targetPath:l.targetPath||l.targetId}:{nodeId:l.nodeId}}function gt(l){return e=>{kn(e.target)||(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),l())}}function Ah(l,e,t){var Ds;let n,i,o,r,c=null,f=!1,p=!1,_=!1,m=!1,g=[],h=[],b=[],w=null,C=[],T=0,E=!0,D=[],N=null,A="",P="",I=!1,M="",z="all",B="all",W="",H="",U="suggestions",q="",Y=[],Q=!1,O=[],V="",R="";function X(d){return{"vault not open":v("error.vaultNotOpen")}[d]||d}let J="",G=null,x="overview",ee=[],le=null,ce=[],pe=[],Ee=[],ze=!1,_e="",$="",se="",Ce="",De=!1,we=!1,Le=null,Qe=null,Ae=[],$e=0,Re=[],Pe=[],Ne=[],Ge=!1,Se=[],je=[],Me=!1,ft="",Z="date",ye="desc",ve=!1,ke=[],Je=null,qe="",Ue="",tt="",Ye="",Oe=null,et=0,re=[],he="",Ke=[],Ft=[],Kt="",ol="",st=[],rl=!1,zt=!1,Nt="",Gt=null,St=null,At={visible:!1,x:0,y:0,node:null},Jt=!1,bt="",Il=!1,Rt="",Nl="open_url",Ot="",En=[{id:"open_url",label:v("action.openUrl")},{id:"open_file",label:v("action.openFile")},{id:"open_folder",label:v("action.openFolder")},{id:"run_command",label:v("action.runCommand")},{id:"run_script",label:v("action.runScript")},{id:"open_terminal",label:v("action.openTerminal")},{id:"launch_app",label:v("action.launchApp")}],al=!0,Dn=!1,ql=null,Al=!1,In="",vi="",Tt={},Nn=!1,ut=null,dt=[],rt=[],Mt=null,wt="",Ml=!1,cl="",Et={items:[],mode:"copy"},Be=[],ul=[],An=!1,jl=!1,fl=!1,Mn="",Ll=0,jn=0,dl=null,Yl=!1,hi="",ki="",bi=!1,wi=v("common.delete"),Ql=null,Xl=null,pl=!1,Zl="",ml="",gl="",jt=null,Bt="",qt=[],Ht=null,xl=!1,yi,Ln=null,Pn=!1,Pl="",$l="";const $c=[{id:"overview",label:v("tab.overview")},{id:"notes",label:v("tab.notes")},{id:"files",label:v("tab.files")},{id:"links",label:v("tab.links")},{id:"actions",label:v("tab.actions")},{id:"activity",label:v("tab.activity"),group:"service"},{id:"worklog",label:v("tab.worklog"),group:"service"},{id:"inbox",label:v("tab.inbox"),group:"service"}];let Fn=null;function eu(d){const j={};for(const ue of d){const Te=ue.captureContextLabel||v("inbox.noContext");j[Te]||(j[Te]=[]),j[Te].push(ue)}const ne=[];for(const[ue,Te]of Object.entries(j))ne.push({label:ue,items:Te});return ne.sort((ue,Te)=>ue.label.localeCompare(Te.label)),ne}function tu(){return{section:J||"",nodeId:(G==null?void 0:G.id)||"",tab:G?x:"",trashFolderId:J==="trash"?he:"",trashFolderStack:J==="trash"?Ke.map(d=>({id:d.id,title:d.title})):[]}}function Wt(){if(rl)return;const d=tu(),j=st[st.length-1];(!j||!wh(j,d))&&(st=[...st,d].slice(-80))}function zn(){t(8,he=""),t(242,Ke=[]),t(65,re=[])}function Ci(){return Yl?(Hn(),!0):m?(Es(),!0):Mt?(nn(),!0):jt?($n(),!0):Je?(ei(),!0):pl?(t(104,pl=!1),!0):ze?(Yi(),!0):Al?(ns(),!0):Il?(Cs(),!0):Jt?(Ki(),!0):zt?(Oi(),!0):At.visible?(Yt(),!0):le?(qi(),!0):!1}async function lu(d){rl=!0;try{if(d.nodeId){const j=await oe("GetNodeDetail",d.nodeId);return j?(await mt(j),t(35,x=d.tab||"overview"),x==="files"&&rt.length===0&&await lt(j.id),!0):!1}else if(d.section)return g.some(j=>j.id===d.section)?(await tn(d.section),d.section==="trash"&&(t(8,he=d.trashFolderId||""),t(242,Ke=d.trashFolderStack||[]),t(65,re=[]),await Zt()),!0):!1;return!1}catch{return!1}finally{rl=!1}}async function Si(){if(!Ci())for(;st.length>0;){const d=st[st.length-1];if(st=st.slice(0,-1),await lu(d))return}}function en(d){d.button!==3&&d.button!==4||kn(d.target)||Ci()&&d.button===3||(d.preventDefault(),d.stopPropagation(),d.button===3&&Si())}function ht(d){x!==d&&(Wt(),t(35,x=d),d==="files"&&G&&rt.length===0&&!ut&<(G.id))}Kl(async()=>{try{if(t(10,c=await oe("GetStartupStatus")),f=!0,c.status==="first_run"){t(11,p=!0),t(80,al=!1);return}if(c.status==="recovery"){t(12,_=!0),t(80,al=!1);return}}catch(d){t(34,R=String(d))}try{t(33,V=await oe("VerstakVersion")||"verstak-gui/v2"),t(0,g=await oe("ListSystemViewsWithPlugins")||[]),t(14,h=await oe("ListWorkspaceTree")||[]),t(15,b=await oe("ListEnabledTemplates")||[])}catch(d){t(34,R=String(d)),t(0,g=[{id:"today",label:v("nav.today")},{id:"inbox",label:v("nav.inbox")},{id:"activity",label:v("nav.activity")}]),t(14,h=[]),t(15,b=[])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",Hu),Fn=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",Pi),window.addEventListener("paste",os),window.addEventListener("dragenter",fs),window.addEventListener("dragover",ds),window.addEventListener("dragleave",ps),window.addEventListener("dragend",pt),window.addEventListener("dragcancel",pt),window.addEventListener("drop",gs),window.addEventListener("mouseup",pt),window.addEventListener("mouseleave",pt),window.addEventListener("blur",pt),document.addEventListener("visibilitychange",ms),window.addEventListener("auxclick",en),window.addEventListener("mouseup",en),t(80,al=!1),li(),Qi()}),Gl(()=>{Fn&&Fn(),window.removeEventListener("keydown",Pi),window.removeEventListener("paste",os),window.removeEventListener("dragenter",fs),window.removeEventListener("dragover",ds),window.removeEventListener("dragleave",ps),window.removeEventListener("dragend",pt),window.removeEventListener("dragcancel",pt),window.removeEventListener("drop",gs),window.removeEventListener("mouseup",pt),window.removeEventListener("mouseleave",pt),window.removeEventListener("blur",pt),document.removeEventListener("visibilitychange",ms),window.removeEventListener("auxclick",en),window.removeEventListener("mouseup",en),as()});async function tn(d){Wt(),t(1,J=d),t(2,G=null),t(35,x="overview"),t(36,ee=[]),ce=[],t(38,pe=[]),t(39,Ee=[]),t(55,je=[]),t(58,ke=[]),t(49,Ae=[]),t(3,Se=[]),t(7,Oe=null),zn(),t(69,zt=!1),t(34,R=""),t(16,w=null),t(51,Re=[]),t(52,Pe=[]),t(17,C=[]),T=0,E=!0,t(18,D=[]),t(19,N=null);try{d==="today"?(t(16,w=await oe("ListTodayView")||{cases:[]}),t(49,Ae=await oe("GetSuggestions")||[]),t(50,$e=Ae.length),t(51,Re=await oe("ListTodayInProgress")||[]),t(52,Pe=await oe("ListTodayCaptures")||[])):d==="inbox"?t(3,Se=await oe("ListInboxNodes")||[]):d==="trash"?await Zt():d==="journal"?await xt():d==="activity"&&(t(17,C=await oe("ListActivityFeed",50,0)||[]),T=C.length,E=C.length===50)}catch(j){t(34,R=String(j)),t(16,w={cases:[]}),t(3,Se=[]),t(7,Oe=null),t(17,C=[])}}async function mt(d){Wt(),t(2,G=d),t(1,J=""),t(35,x="overview"),t(36,ee=[]),ce=[],t(38,pe=[]),t(39,Ee=[]),t(49,Ae=[]),t(88,rt=[]),t(87,dt=[]),t(86,ut=null),t(89,Mt=null),t(90,wt=""),t(94,Be=[]),ul=[],zn(),t(37,le=null),t(69,zt=!1),t(74,Jt=!1),t(34,R=""),t(32,O=[]),await ln(d.id)}async function ln(d){try{t(36,ee=await oe("ListNotes",d)||[])}catch{}try{ce=await oe("ListFiles",d)||[]}catch{}try{t(38,pe=await oe("ListActions",d)||[])}catch{}try{t(39,Ee=ai(await oe("ListWorklog",d)))}catch{}try{t(55,je=await oe("ListInboxNodesForTarget",d)||[])}catch{t(55,je=[])}try{t(58,ke=await oe("ListLinks",d)||[])}catch{t(58,ke=[])}try{t(49,Ae=await oe("GetSuggestions")||[]),t(50,$e=Ae.length)}catch{t(49,Ae=[]),t(50,$e=0)}try{t(32,O=await oe("ListActivityByNode",d,50,0)||[])}catch{}}async function lt(d){t(85,Nn=!0);try{let j=await oe("ListItems",d)||[];j.sort((ne,ue)=>ne.type!==ue.type?ne.type==="folder"?-1:1:(ne.name||"").localeCompare(ue.name||"")),t(88,rt=j)}catch{t(88,rt=[])}t(85,Nn=!1)}async function Rn(d){if(!G)return;Wt();try{const ne=await oe("GetNodeDetail",d);ne&&t(87,dt=[...dt,{id:d,name:ne.title}])}catch{t(87,dt=[...dt,{id:d,name:"..."}])}t(86,ut=d),t(84,Tt={...Tt,[d]:!0});const j=await oe("ListWorkspaceChildren",d)||[];Hl(h,d,j),t(14,h=[...h]),await lt(d)}function nu(){if(Wt(),dt.length<2)t(87,dt=[]),t(86,ut=null),lt(G.id);else{const d=dt[dt.length-2];t(87,dt=dt.slice(0,-1)),t(86,ut=d.id),lt(d.id)}}function Ti(d){const j=dt[d];t(87,dt=dt.slice(0,d+1)),t(86,ut=j.id),lt(j.id)}async function _l(d){t(89,Mt=d),t(90,wt=""),t(92,cl=""),t(91,Ml=!0);try{Vp(d)?t(90,wt=await oe("GetFileBase64",d.fileId)||""):Up(d)&&t(90,wt=await oe("ReadFileText",d.fileId)||"")}catch(j){t(92,cl=String(j))}t(91,Ml=!1)}function nn(){t(89,Mt=null),t(90,wt=""),t(92,cl="")}async function iu(){const d=prompt(v("file.namePrompt"));if(!(!d||!d.trim()))try{const j=ut||G.id;await oe("CreateEmptyFile",j,d.trim()),await lt(j),await Wn(j)}catch(j){t(34,R=String(j))}}async function Ei(d){try{await oe("DuplicateNode",d);const j=ut||G.id;await lt(j),await Wn(j)}catch(j){t(34,R=String(j))}}function Di(d){const j=rt.find(ne=>ne.id===d);j&&Bn(j.id,j.name)}function Ii(d){t(93,Et={items:[d],mode:"cut"})}function Ni(d){t(93,Et={items:[d],mode:"copy"})}async function Ai(){if(Et.items.length===0)return;const d=ut||G.id;try{if(Et.mode==="copy")for(const j of Et.items)await oe("DuplicateNode",j);else for(const j of Et.items)await oe("MoveNode",j,d);t(93,Et={items:[],mode:"copy"}),await lt(d)}catch(j){t(34,R=String(j))}}function Mi(d){Be.includes(d)?t(94,Be=Be.filter(j=>j!==d)):t(94,Be=[...Be,d])}function ji(d){t(94,Be=[d])}function su(){t(94,Be=rt.map(d=>d.id))}function Li(d){if(rt.length===0)return;const j=Be.length>0?Be[Be.length-1]:rt[0].id,ne=rt.findIndex(It=>It.id===j),ue=rt.findIndex(It=>It.id===d);if(ne===-1||ue===-1)return;const Te=Math.min(ne,ue),nt=Math.max(ne,ue),bl=rt.slice(Te,nt+1).map(It=>It.id),Rl=new Set(Be);bl.forEach(It=>Rl.add(It)),t(94,Be=[...Rl])}function ou(){t(94,Be=[])}function On(d){return d.length>0?d:rt.map(j=>j.id)}async function ru(){const d=On(Be),j=rt.find(ue=>ue.id===d[0]);let ne;d.length===1&&(j==null?void 0:j.type)==="folder"?ne=v("delete.folder"):d.length===1?ne=v("delete.file"):ne=v("delete.files",{count:d.length}),Dt({title:v("delete.confirmTitle"),message:v("delete.confirmMessage")+" "+ne+"?",confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{for(const Te of d)try{await oe("DeleteFileOrFolder",Te)}catch(nt){t(34,R=String(nt))}t(94,Be=[]);const ue=ut||G.id;await lt(ue)}})}function au(){const d=On(Be);t(93,Et={items:d,mode:"cut"}),t(94,Be=[])}function cu(){const d=On(Be);t(93,Et={items:d,mode:"copy"}),t(94,Be=[])}function uu(d,j){d.stopPropagation();const ne=Be.includes(j)?Be:[j];ul=ne,d.dataTransfer.effectAllowed="move",d.dataTransfer.setData("text/plain",ne.join(","))}function fu(d,j){const ne=rt.find(ue=>ue.id===j);ne&&ne.type==="folder"&&(d.preventDefault(),d.stopPropagation(),d.dataTransfer.dropEffect="move")}async function du(d,j){if(d.preventDefault(),d.stopPropagation(),ul.length!==0){for(const ne of ul)try{await oe("MoveNode",ne,j)}catch(ue){t(34,R=String(ue))}ul=[],t(94,Be=[]),await lt(ut||G.id)}}function Pi(d){if(d.key==="Escape"&&fl){d.preventDefault(),pt();return}if(!kn(d.target)){if(d.key==="Backspace"||d.altKey&&d.key==="ArrowLeft"){d.preventDefault(),Si();return}if(x==="files")if(d.ctrlKey||d.metaKey)d.key==="c"||d.key==="C"?(d.preventDefault(),cu()):d.key==="x"||d.key==="X"?(d.preventDefault(),au()):d.key==="v"||d.key==="V"?(d.preventDefault(),Ai()):d.key==="a"||d.key==="A"?(d.preventDefault(),su()):d.key==="o"||d.key==="O"?(d.preventDefault(),pu()):d.key==="Enter"&&(d.preventDefault(),Fi());else if(d.key==="Enter")d.preventDefault(),Fi();else if(d.key==="Delete"){if(Mt){d.preventDefault(),nn();return}if(Be.length>0){d.preventDefault(),ru();return}}else if(d.key==="Escape"){if(Mt){nn();return}if(Be.length>0){ou();return}}else d.key==="F2"&&(d.preventDefault(),mu())}}function Fi(){if(Be.length===1){const d=rt.find(j=>j.id===Be[0]);d&&(d.type==="folder"?Rn(d.id):_l(d))}}function pu(){if(Be.length===1){const d=rt.find(j=>j.id===Be[0]);d&&d.fileId&&oe("OpenFile",d.fileId)}}function Bn(d,j){Zl=d,t(105,ml=j),t(106,gl=""),t(104,pl=!0)}function mu(){if(Be.length===1){const d=rt.find(j=>j.id===Be[0]);d&&Bn(d.id,d.name)}}async function zi(){const d=ml.trim();if(!d){t(106,gl=v("rename.emptyError"));return}try{await oe("ValidateName",d)}catch{t(106,gl=v("rename.invalidError"));return}t(104,pl=!1);const j=Zl;Zl="";try{await oe("RenameNode",j,d),G&&G.id===j&&t(2,G={...G,title:d}),await Qt(),ut&&await lt(ut)}catch(ne){t(34,R=String(ne))}}function gu(){t(104,pl=!1),Zl="",t(105,ml=""),t(106,gl="")}function _u(d){d.key==="Enter"?zi():t(106,gl="")}function Dt(d){t(100,hi=d.title||v("common.confirm")),t(101,ki=d.message||""),t(102,bi=d.danger!==void 0?d.danger:!0),t(103,wi=d.confirmText||v("common.delete")),Ql=d.onConfirm||null,Xl=d.onCancel||null,t(99,Yl=!0)}function Hn(){t(99,Yl=!1),Ql=null,Xl=null}function vu(){Ql&&Ql(),Hn()}function hu(){Xl&&Xl(),Hn()}function Ri(d){t(71,Gt=At.node),t(72,St=d),t(70,Nt=""),t(69,zt=!0),Yt()}function ku(){t(71,Gt=null),t(72,St=void 0),t(70,Nt=""),t(69,zt=!0)}function Oi(){t(69,zt=!1),t(70,Nt=""),t(71,Gt=null),t(72,St=void 0)}async function Bi(){if(!(!Nt.trim()||St===void 0))try{const d=Gt?Gt.id:"",j=St?St.id:"",ne=await oe("CreateNodeFromTemplate",d,Nt.trim(),j);t(69,zt=!1),t(70,Nt="");const ue=ne?ne.id:null;if(t(71,Gt=null),t(72,St=void 0),d){t(84,Tt={...Tt,[d]:!0});const Te=await oe("ListWorkspaceChildren",d)||[];Hl(h,d,Te),t(14,h=[...h])}else t(14,h=await oe("ListWorkspaceTree")||h);if(ue){const Te=await oe("GetNodeDetail",ue);Te&&(t(1,J=""),mt(Te))}}catch(d){t(34,R=String(d))}}function bu(d,j){t(73,At={visible:!0,x:d.clientX,y:d.clientY,node:j})}function Yt(){t(73,At={visible:!1,x:0,y:0,node:null})}async function wu(d){const j=!Tt[d];if(t(84,Tt={...Tt,[d]:j}),!j)return;const ne=await oe("ListWorkspaceChildren",d)||[];Hl(h,d,ne),t(14,h=[...h])}async function yu(d,j){if(!(!d||!j||d===j))try{const ne=await oe("MoveNode",d,j);await Qt();const ue=await oe("GetNodeDetail",d);ue&&(t(1,J=""),mt(ue))}catch(ne){t(34,R=String(ne))}}async function Cu(d){d.preventDefault(),d.stopPropagation();try{const j=d.dataTransfer.getData("text/plain");if(!j)return;const ne=await oe("GetNodeDetail",j);if(!ne||!ne.parent_id)return;await oe("MoveNode",j,""),await Qt();const ue=await oe("GetNodeDetail",j);ue&&(t(1,J=""),mt(ue))}catch(j){t(34,R=String(j))}}function Su(d){d.preventDefault(),d.dataTransfer.dropEffect="move",t(95,An=!0)}function Tu(d){t(95,An=!1)}function Hi(d){Bn(d.id,d.title),Yt()}function Wi(d){Yt(),Dt({title:v("delete.confirmTitle"),message:v("delete.confirmMessage")+" "+d.title+"?",confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("DeleteNode",d.id),await Qt(),await Qi(),G&&G.id===d.id&&t(2,G=null)}catch(j){t(34,R=String(j))}}})}async function Lt(d){Yt();const j=typeof d=="string"?d:d.id;try{await oe("OpenFolder",j)}catch(ne){t(34,R=String(ne))}}async function yt(d){const j=Zc(d);try{if(j==="url"||d.type==="link"){if(!d.url)throw new Error("url required");await oe("OpenURL",d.url);return}if(j==="text"||d.type==="note"){const ne=await oe("ReadNote",d.id);t(37,le={id:d.id,title:d.title,content:ne||"",dirty:!1});return}if(j==="folder"||d.type==="folder"){Wt(),t(1,J=""),t(2,G=d),t(35,x="files"),t(87,dt=[]),t(86,ut=null),t(94,Be=[]),t(89,Mt=null),await ln(d.id),await lt(d.id);return}if(j==="file"||j==="image"||d.type==="file"){const ue=(await oe("ListFiles",d.id)||[])[0];if(!ue)throw new Error("file record not found");const Te=yh(d,ue);si(Te)?await _l(Te):await oe("OpenFile",Te.fileId);return}await zl(d.id)}catch(ne){t(34,R=String(ne))}}async function Vi(d){Yt();try{await oe("MoveNode",d.id,""),await Qt();const j=await oe("GetNodeDetail",d.id);j&&(t(1,J=""),mt(j))}catch(j){t(34,R=String(j))}}async function Qt(){const d=Object.keys(Tt).filter(ne=>Tt[ne]),j=await oe("ListWorkspaceTree")||[];for(const ne of d){const Te=(await oe("ListWorkspaceChildren",ne)||[]).map(nt=>({...nt}));xc(j,ne,Te)}t(14,h=j)}async function Wn(d){const j=await oe("ListWorkspaceChildren",d)||[];Hl(h,d,j),t(14,h=[...h])}function Ui(){t(74,Jt=!0),t(75,bt="")}function Ki(){t(74,Jt=!1),t(75,bt="")}async function Gi(){if(!(!bt.trim()||!G))try{const d=await oe("CreateNote",G.id,bt.trim());t(36,ee=[...ee,d&&d.id?d:{id:Date.now().toString(),title:bt.trim(),createdAt:new Date().toISOString()}]),t(74,Jt=!1),t(75,bt="")}catch{const j={id:Date.now().toString(),title:bt.trim(),createdAt:new Date().toISOString()};t(36,ee=[...ee,j]),t(74,Jt=!1),t(75,bt="")}}async function Xt(d){if(le&&le.dirty){Dt({title:v("note.unsavedTitle"),message:v("note.unsavedMessage"),confirmText:v("note.unsavedClose"),danger:!1,onConfirm:async()=>{await Ji(d)}});return}await Ji(d)}async function Ji(d){try{const j=await oe("ReadNote",d.id);t(37,le={id:d.id,title:d.title,content:j||"",dirty:!1})}catch{t(37,le={id:d.id,title:d.title,content:"# "+d.title+`
`,dirty:!1})}}function qi(){if(le&&le.dirty){Dt({title:v("note.unsavedTitle"),message:v("note.unsavedMessage"),confirmText:v("note.unsavedClose"),danger:!1,onConfirm:()=>{t(37,le=null)}});return}t(37,le=null)}function Eu(d){le&&(t(37,le.content=d.target.value,le),t(37,le.dirty=!0,le))}async function Du(){if(le)try{await oe("SaveNote",le.id,le.content),t(37,le.dirty=!1,le)}catch{t(37,le.dirty=!1,le)}}function sn(d=null){t(47,Le=d),t(48,Qe=null),t(41,_e=d?d.summary:""),t(42,$=d?String(d.minutes||""):""),t(43,se=d&&d.date||""),t(44,Ce=d&&d.details||""),t(45,De=d?!!d.billable:!1),t(46,we=d?!!d.approximate:!1),t(40,ze=!0)}function Yi(){t(40,ze=!1),t(47,Le=null),t(48,Qe=null)}async function Vn(d=""){const j=d||(G?G.id:"");G&&G.id===j&&t(39,Ee=ai(await oe("ListWorklog",G.id))||Ee),J==="journal"&&await xt()}async function Iu(){const d=parseInt($,10);if(!(!_e.trim()||isNaN(d)||d<=0)&&!(!Qe&&!Le&&!G)){try{if(Qe){const j=JSON.stringify(gn(Qe));await oe("AcceptSuggestionFull",Qe.nodeId,_e.trim(),Ce,se,d,we,De,j),await on()}else Le?(await oe("UpdateWorklogEntry",Le.id,_e.trim(),Ce,se,d,we,De),await Vn(Le.nodeId)):(await oe("CreateWorklogFull",G.id,_e.trim(),Ce,se,d,we,De),await Vn(G.id))}catch(j){t(34,R=String(j));return}t(40,ze=!1),t(47,Le=null),t(48,Qe=null)}}function Un(d){Dt({title:v("worklog.deleteEntry"),message:v("worklog.deleteConfirm"),confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("DeleteWorklogEntry",d.id),await Vn(d.nodeId)}catch(j){t(34,R=String(j))}}})}async function on(){t(49,Ae=await oe("GetSuggestions")||[]),t(50,$e=Ae.length),G&&t(39,Ee=ai(await oe("ListWorklog",G.id))),J==="journal"&&await xt()}async function Zt(){t(7,Oe=await oe("ListTrash")||{nodes:[],entries:[],trashPath:"",count:0}),t(64,et=Oe.count||0);const d=Oe.nodes||[];t(65,re=re.filter(j=>d.some(ne=>ne.id===j))),he&&!d.some(j=>j.id===he)?zn():Ke.length>0&&(t(242,Ke=Ke.filter(j=>d.some(ne=>ne.id===j.id))),t(8,he=Ke.length>0?Ke[Ke.length-1].id:""))}async function Qi(){try{t(64,et=await oe("TrashCount")||0)}catch{t(64,et=0)}}function Nu(){return he&&(((Oe==null?void 0:Oe.nodes)||[]).find(d=>d.id===he)||Ke[Ke.length-1])||null}function vl(d){Wt(),t(8,he=d.id);const j=Ke.findIndex(ne=>ne.id===d.id);j>=0?t(242,Ke=Ke.slice(0,j+1)):t(242,Ke=[...Ke,{id:d.id,title:d.title}]),t(65,re=[])}function Au(){if(Ke.length===0)return;Wt();const d=Ke.slice(0,-1);t(242,Ke=d),t(8,he=d.length>0?d[d.length-1].id:""),t(65,re=[])}async function Fl(d){t(89,Mt={name:d.title,type:"file",mime:"text/plain",size:0,fileId:d.id}),t(90,wt=""),t(92,cl=""),t(91,Ml=!0);try{d.trashFsPath?t(90,wt=await oe("ReadTrashFile",d.trashFsPath)||""):t(90,wt=await oe("ReadTrashFileContent",d.id)||"");const j=(d.title||"").split(".").pop().toLowerCase();["png","jpg","jpeg","gif","webp","bmp","svg"].includes(j)&&t(90,wt="data:image/"+(j==="svg"?"svg+xml":j)+";base64,"+btoa(wt))}catch(j){t(92,cl=String(j))}t(91,Ml=!1)}function Xi(d){t(65,re=re.includes(d)?re.filter(j=>j!==d):[...re,d])}function Kn(d){return re.length>0?re:[d]}async function Gn(d){try{await oe("RestoreTrashNodesJSON",JSON.stringify(d)),await Qt(),await Zt()}catch(j){t(34,R=String(j))}}async function Jn(d){Dt({title:v("delete.confirmTitle"),message:v("delete.confirmMessage")+" "+d.length+"?",confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("PurgeTrashNodesJSON",JSON.stringify(d)),await Zt()}catch(j){t(34,R=String(j))}}})}async function Mu(){Dt({title:v("delete.confirmTitle"),message:v("trash.empty")+"?",confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("EmptyTrash"),await Zt()}catch(d){t(34,R=String(d))}}})}function rn(d){t(48,Qe=d),t(47,Le=null),t(41,_e=d.summary||""),t(42,$=String(d.suggestedMin||"")),t(43,se=""),t(44,Ce=""),t(45,De=!1),t(46,we=!0),t(40,ze=!0)}async function an(d){try{await oe("DismissSuggestion",d.nodeId,JSON.stringify(gn(d))),await on()}catch(j){t(34,R=String(j))}}async function ju(){t(54,Ge=!0);try{const d=await oe("ListBrowserEvents","pending",50,0);t(53,Ne=d||[])}catch(d){console.warn("[browser] load error:",d)}finally{t(54,Ge=!1)}}async function Lu(d){await oe("AcceptBrowserEvent",d.id,""),t(53,Ne=Ne.filter(j=>j.id!==d.id))}async function Pu(d){await oe("DismissBrowserEvent",d.id),t(53,Ne=Ne.filter(j=>j.id!==d.id))}async function Fu(d){G&&G.id?(await oe("AttachBrowserEventToNode",d.id,G.id),t(53,Ne=Ne.filter(j=>j.id!==d.id))):(await oe("DismissBrowserEvent",d.id),t(53,Ne=Ne.filter(j=>j.id!==d.id)))}async function qn(d){try{const j=gn(d),ne=JSON.stringify(j);_n("acceptTodaySuggestion: nodeId="+d.nodeId+" eventIds="+ne+" events="+JSON.stringify((d.events||[]).map(ue=>({id:ue.id,type:ue.eventType,title:ue.title})))),await oe("AcceptSuggestionWith",d.nodeId,d.summary,d.suggestedMin,"",ne),await on()}catch(j){_n("acceptTodaySuggestion error: "+j)}}async function Zi(d){try{const j=gn(d),ne=JSON.stringify(j);_n("acceptJournalSuggestion: nodeId="+d.nodeId+" eventIds="+ne+" events="+JSON.stringify((d.events||[]).map(ue=>({id:ue.id,type:ue.eventType,title:ue.title})))),await oe("AcceptSuggestionWith",d.nodeId,d.summary,d.suggestedMin,"",ne),await on()}catch(j){_n("acceptJournalSuggestion error: "+j)}}async function xt(){try{const[d,j,ne]=await Promise.all([oe("ListWorklogReport",A,P,M,I,z,B),oe("WorklogReportSummary",A,P,M,I,z,B),oe("GetSuggestions")]);if(t(18,D=(d||[]).map(ue=>(ue._expanded===void 0&&(ue._expanded=!1),ue))),t(19,N=j||null),t(49,Ae=ne||[]),t(50,$e=Ae.length),M&&!W)if(d&&d.length>0&&d[0].nodePath)t(26,W=d[0].nodePath);else try{t(26,W=await oe("GetNodeTitle",M))}catch{t(26,W="")}}catch{t(18,D=[]),t(19,N=null),t(49,Ae=[]),t(50,$e=0)}}async function cn(d){try{const j=await oe("SaveWorklogReport",d,A,P,M,I,z,B);t(27,H=j),setTimeout(()=>t(27,H=""),4e3)}catch(j){if(String(j).includes("отменено"))return;t(27,H="Ошибка: "+String(j)),setTimeout(()=>t(27,H=""),6e3)}}let xi;async function Yn(d){if(d._expanded=!d._expanded,t(18,D),d._expanded&&!d._events&&d._hasEvents===void 0)try{d._events=await oe("GetWorklogEntryEvents",d.id)||[],d._hasEvents=d._events.length>0,t(18,D)}catch{d._events=[],d._hasEvents=!1,t(18,D)}}async function Qn(d){if(d._expanded=!d._expanded,d._expanded&&d.source==="suggestion"&&!d._events&&d._hasEvents===void 0)try{d._events=await oe("GetWorklogEntryEvents",d.id)||[],d._hasEvents=d._events.length>0}catch(j){j._events=[],j._hasEvents=!1}t(39,Ee)}async function zu(){const d=q.trim();if(!d||d.length<2){t(30,Y=[]),t(31,Q=!1);return}try{t(30,Y=await oe("SearchNodes",d)||[]),t(31,Q=Y.length>0)}catch{t(30,Y=[]),t(31,Q=!1)}}function Ru(){clearTimeout(xi),xi=setTimeout(zu,200)}function $i(d){t(23,M=d.id),t(26,W=d.path||d.title),t(22,I=!0),t(29,q=""),t(30,Y=[]),t(31,Q=!1),xt()}function es(){t(23,M=""),t(22,I=!1),t(26,W=""),t(29,q=""),t(30,Y=[]),t(31,Q=!1),xt()}function Ou(){t(20,A=""),t(21,P=""),t(23,M=""),t(22,I=!1),t(24,z="all"),t(25,B="all"),t(26,W=""),t(29,q=""),t(30,Y=[]),t(31,Q=!1),xt()}async function ts(){const d=await oe("PickFile");if(!d)return;const j=ut||G.id;await ls(j,d)}async function Bu(){const d=await oe("PickDirectory");if(!d)return;const j=ut||G.id;await ls(j,d)}async function ls(d,j){t(81,Dn=!0);try{const ne=await oe("PreviewImport",j);t(82,ql=ne),In=j,vi=d,t(83,Al=!0)}catch(ne){t(34,R=String(ne))}t(81,Dn=!1)}async function Xn(d){try{const j=vi||G.id,ne=d==="copy"?await oe("AddPathCopy",j,In):await oe("AddPathLink",j,In);t(83,Al=!1),t(82,ql=null),t(87,dt=[]),t(86,ut=null),await Promise.all([ln(j),lt(j),Wn(j)])}catch(j){t(34,R=String(j))}}function ns(){t(83,Al=!1),t(82,ql=null)}async function is({id:d,type:j}){const ne=v(j==="folder"?"delete.folder":"delete.file");Dt({title:v("delete.confirmTitle"),message:v("delete.confirmMessage")+" "+ne+"?",confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("DeleteFileOrFolder",d),ce=ce.filter(Te=>Te.nodeId!==d);const ue=ut||G.id;await lt(ue)}catch(ue){t(34,R=String(ue))}}})}async function Hu(d){try{if(!d||d.length===0)return;await xu(d,"drop")}finally{pt()}}function Wu(d){return{note_created:v("event.noteCreated"),note_updated:v("event.noteUpdated"),note_deleted:v("event.noteDeleted"),file_added:v("event.fileAdded"),file_deleted:v("event.fileDeleted"),file_renamed:v("event.fileRenamed"),file_copied:v("event.fileCopied"),file_moved:v("event.fileMoved"),folder_added:v("event.folderAdded"),folder_deleted:v("event.folderDeleted"),folder_renamed:v("event.folderRenamed"),folder_moved:v("event.folderMoved"),node_created:v("event.caseCreated"),node_updated:v("event.caseUpdated"),node_deleted:v("event.nodeDeleted"),action_created:v("event.actionCreated"),action_done:v("event.actionDone"),worklog_added:v("event.worklogAdded")}[d]||d}function Zn(d){return{project:v("kind.project"),client:v("kind.client"),document:v("kind.document"),recipe:v("kind.recipe"),folder:v("kind.folder"),note:v("kind.note"),file:v("kind.file"),archive:v("kind.archive"),case:v("kind.case"),link:v("kind.link")}[d]||d||v("kind.case")}function Vu(d){return d==="action"?v("kind.action"):Zn(d)}function Uu(d){return d?v("capture.kind."+d):""}function Ku(d){return d?v("capture.source."+d):""}function Gu(d){const j=[];return d.captureKind&&j.push(Uu(d.captureKind)),d.captureSource&&j.push(Ku(d.captureSource)),d.captureContextLabel&&j.push(`${v("inbox.capturedIn")}: ${d.captureContextLabel}`),d.suggestedTargetLabel&&j.push(`${v("inbox.suggestedTarget")}: ${d.suggestedTargetLabel}`),j.push(vt(d.capturedAt||d.createdAt)),j.filter(Boolean).join(" · ")}function Ju(d){!d||!d.id||(t(3,Se=[d,...Se.filter(j=>j.id!==d.id)]),G&&(d.captureContextNodeId===G.id||d.suggestedTargetNodeId===G.id)&&t(55,je=[d,...je.filter(j=>j.id!==d.id)]))}function qu(){return G&&G.id?{contextType:"node",nodeId:G.id,suggestedTargetNodeId:G.id}:J?{contextType:"section",section:J}:{contextType:"global",section:"root"}}function $t(){return JSON.stringify(qu())}function Yu(){return G&&G.id?v("capture.dropOverlayNode",{title:G.title}):v("capture.dropOverlayGlobal")}async function hl(d=null){d&&Ju(d),J==="inbox"&&t(3,Se=await oe("ListInboxNodes")||Se)}async function Qu(d,j){const ne=String(d||"").trim();if(!ne)return null;const ue=ci(ne),Te=ue?await oe("CaptureURLWithContext",ue,"",j,$t()):await oe("CaptureTextWithContext",ne,j,$t());return await hl(Te),Te}async function ss(d,j,ne){const ue=String(d||"").trim();if(!ue)return null;const Te=await oe("CaptureURLWithContext",ue,j||"",ne,$t());return await hl(Te),Te}async function Xu(d,j){if(!d)return null;const ne=d.path||d.webkitRelativePath||"";if(ne){const nt=await oe("CapturePathWithContext",ne,j,$t());return await hl(nt),nt}const ue=await Th(d),Te=await oe("CaptureFileDataWithContext",d.name||`clipboard.${Sh(d.type)}`,ue,j,$t());return await hl(Te),Te}async function xn(d,j){var Rl,It,Is;if(!d)return!1;let ne=!1;const ue=Array.from(d.files||[]);for(const tl of ue)await Xu(tl,j),ne=!0;const Te=(Rl=d.getData)==null?void 0:Rl.call(d,"text/x-moz-url");if(Te){const tl=Eh(Te),Ol=tl?ci(tl.url):"";if(Ol)return await ss(Ol,tl.title,j),!0}const nt=(It=d.getData)==null?void 0:It.call(d,"text/uri-list");if(nt){const tl=Dh(nt),Ol=ci(tl);if(Ol)return await ss(Ol,"",j),!0}const bl=(Is=d.getData)==null?void 0:Is.call(d,"text/plain");return String(bl||"").trim()&&(await Qu(bl,j),ne=!0),ne}async function Zu(){if(!Me){t(57,ft=""),t(56,Me=!0);try{const d=await oe("CaptureClipboardTextWithContext",$t());await hl(d),t(57,ft=v("inbox.captured"))}catch(d){t(34,R=String(d).includes("clipboard is empty")?v("inbox.clipboardEmpty"):v("inbox.clipboardUnavailable"))}finally{t(56,Me=!1)}}}async function xu(d,j="drop"){if(!Me){t(56,Me=!0),t(57,ft="");try{for(const ne of d){const ue=await oe("CapturePathWithContext",ne,j,$t());await hl(ue)}t(57,ft=v("inbox.captured"))}catch(ne){t(34,R=String(ne))}finally{t(56,Me=!1),t(96,jl=!1)}}}async function os(d){if(!(p||_)&&!kn(d.target)&&d.clipboardData)try{await xn(d.clipboardData,"paste")&&(d.preventDefault(),t(57,ft=v("inbox.captured")))}catch(j){t(34,R=String(j))}}function rs(d){if(ul.length>0)return!1;const j=Array.from((d==null?void 0:d.types)||[]);return j.includes("Files")||j.includes("text/uri-list")||j.includes("text/x-moz-url")||j.includes("text/plain")&&!j.includes("application/x-verstak-node")}function as(){dl&&(clearTimeout(dl),dl=null)}function pt(){Ll=0,t(97,fl=!1),t(98,Mn=""),jn=0,t(96,jl=!1),as()}function cs(){dl||(dl=setTimeout(()=>{dl=null,fl&&Date.now()-jn>2e3?pt():fl&&cs()},2500))}function us(d){return rs(d)?(t(98,Mn=Yu()),t(97,fl=!0),jn=Date.now(),cs(),!0):!1}function fs(d){us(d.dataTransfer)&&(Ll+=1)}function ds(d){us(d.dataTransfer)&&(d.preventDefault(),d.dataTransfer.dropEffect="copy")}function ps(d){Ll>0&&(Ll-=1),(d.clientX<=0||d.clientY<=0||d.clientX>=window.innerWidth||d.clientY>=window.innerHeight||Ll<=0)&&pt()}function ms(){document.hidden&&pt()}async function gs(d){if(rs(d.dataTransfer)){d.preventDefault();try{await xn(d.dataTransfer,"drop")&&t(57,ft=v("inbox.captured"))}catch(j){t(34,R=String(j))}finally{pt()}}}function $u(d){d.preventDefault(),d.dataTransfer.dropEffect="copy",t(96,jl=!0)}function ef(){t(96,jl=!1)}async function tf(d){d.preventDefault(),d.stopPropagation();try{await xn(d.dataTransfer,"drop")&&t(57,ft=v("inbox.captured"))}catch(j){t(34,R=String(j))}finally{pt()}}function un(d){t(107,jt=d),t(108,Bt=""),t(109,qt=[]),t(110,Ht=null)}function $n(){t(107,jt=null),t(108,Bt=""),t(109,qt=[]),t(110,Ht=null),t(111,xl=!1)}async function lf(){const d=Bt.trim();if(!d||d.length<2){t(109,qt=[]);return}t(111,xl=!0);try{const j=await oe("SearchNodes",d)||[];t(109,qt=j.filter(ne=>Ih(ne)&&ne.id!==(jt==null?void 0:jt.id)))}catch{t(109,qt=[])}finally{t(111,xl=!1)}}function nf(d){t(108,Bt=d.target.value),t(110,Ht=null),clearTimeout(yi),yi=setTimeout(lf,200)}function _s(d){t(110,Ht=d),t(108,Bt=d.path||d.title),t(109,qt=[])}async function vs(){if(!(!jt||!Ht))try{await hs(jt,Ht.id),$n()}catch(d){t(34,R=String(d))}}async function hs(d,j){!d||!j||(await oe("ResolveInboxNode",d.id,j),t(3,Se=Se.filter(ne=>ne.id!==d.id)),t(55,je=je.filter(ne=>ne.id!==d.id)),await Qt(),G&&await ln(G.id))}async function fn(d){const j=(d==null?void 0:d.suggestedTargetNodeId)||(G==null?void 0:G.id)||"";if(j)try{await hs(d,j)}catch(ne){t(34,R=String(ne))}}function dn(d){Dt({title:v("inbox.deleteTitle"),message:v("inbox.deleteConfirm",{title:d.title}),confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("DeleteInboxNode",d.id),t(3,Se=Se.filter(j=>j.id!==d.id)),t(55,je=je.filter(j=>j.id!==d.id))}catch(j){t(34,R=String(j))}}})}function ks(d){t(59,Je=d),t(60,qe=d.title||""),t(61,Ue=d.url||""),t(62,tt=d.note||""),t(63,Ye="")}function ei(){t(59,Je=null),t(60,qe=""),t(61,Ue=""),t(62,tt=""),t(63,Ye="")}async function sf(){if(!(!Je||!Ue.trim()))try{const d=await oe("UpdateLink",Je.id,qe.trim(),Ue.trim(),tt);t(58,ke=ke.map(j=>j.id===d.id?d:j)),ei()}catch(d){t(63,Ye=String(d))}}async function bs(d){Dt({title:v("links.deleteTitle"),message:v("links.deleteConfirm",{title:d.title}),confirmText:v("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("DeleteLink",d.id),t(58,ke=ke.filter(j=>j.id!==d.id))}catch(j){t(34,R=String(j))}}})}async function ws(d){try{await oe("OpenLink",d.id)}catch(j){t(34,R=String(j))}}async function ys(d){var j,ne;try{await((ne=(j=navigator.clipboard)==null?void 0:j.writeText)==null?void 0:ne.call(j,d.url)),t(63,Ye=v("links.copied"))}catch{t(63,Ye=v("links.copyUnavailable"))}}function of(){t(76,Il=!0),t(77,Rt=""),t(78,Nl="open_url"),t(79,Ot="")}function Cs(){t(76,Il=!1),t(77,Rt=""),t(79,Ot="")}async function ti(){if(!(!Rt.trim()||!Ot.trim()||!G))try{const d=await oe("CreateAction",G.id,Nl,Rt.trim(),Ot.trim());d&&d.id&&t(38,pe=[...pe,d]),t(76,Il=!1),t(77,Rt=""),t(79,Ot="")}catch(d){t(34,R=String(d))}}async function Ss(d){try{await oe("DeleteAction",d),t(38,pe=pe.filter(j=>j.id!==d))}catch(j){t(34,R=String(j))}}function rf(d){const j=En.find(ne=>ne.id===d);return j?j.label:d}async function zl(d){try{const j=await oe("GetNodeDetail",d);j&&mt(j)}catch(j){t(34,R=String(j))}}async function el(d){const j=Nh(d),ne=j.nodeId;if(ne)try{const ue=await oe("GetNodeDetail",ne);if(!ue)return;if(mt(ue),j.tab==="notes"){if(ht("notes"),j.targetId){try{t(36,ee=await oe("ListNotes",ne)||[])}catch{}const Te=ee.find(nt=>nt.id===j.targetId);Te&&setTimeout(()=>Xt(Te),100)}}else if(j.tab==="files")if(ht("files"),j.targetId)try{const Te=await oe("GetNodeDetail",j.targetId);if(Te&&Te.parent_id){await lt(Te.parent_id);const nt=rt.find(bl=>bl.id===j.targetId);nt&&nt.type==="file"&&si(nt)&&setTimeout(()=>_l(nt),150)}else await lt(ne)}catch{await lt(ne)}else await lt(ne)}catch(ue){t(34,R=String(ue))}}async function kl(d){return el(d)}async function af(d){if(!(!d||!d.nodeId))try{if(d.type==="link"){const ne=await oe("GetNodeDetail",d.nodeId);ne&&(await mt(ne),ht("links"));return}if(d.type==="action"){const ne=await oe("GetNodeDetail",d.nodeId);ne&&(await mt(ne),ht("actions"));return}const j=await oe("GetNodeDetail",d.nodeId);if(!j)return;if(d.type==="note"){const ne=j.parent_id||j.parentId||"",ue=ne?await oe("GetNodeDetail",ne):null;if(ue){await mt(ue),ht("notes"),t(36,ee=await oe("ListNotes",ue.id)||[]);const Te=ee.find(nt=>nt.id===j.id);Te&&await Xt(Te)}return}if(d.type==="file"){const ne=j.parent_id||j.parentId||"",ue=ne?await oe("GetNodeDetail",ne):null;if(ue){await mt(ue),ht("files"),await lt(ue.id);const Te=rt.find(nt=>nt.id===j.id);Te&&si(Te)&&await _l(Te)}return}if(d.type==="folder"){await mt(j),ht("files"),await lt(j.id);return}await mt(j)}catch(j){t(34,R=String(j))}}async function li(){try{t(112,Ln=await oe("SyncStatus"))}catch{t(112,Ln={configured:!1,serverUrl:"",deviceId:"",unpushedOps:0,lastSyncAt:"",syncInterval:0})}}let Ts="general";function ni(d){t(116,Ts=d||"general"),t(13,m=!0)}function Es(){t(13,m=!1)}function cf(d){const j=Array.isArray(d==null?void 0:d.conflicts)?d.conflicts:[],ne=Array.isArray(d==null?void 0:d.applyErrors)?d.applyErrors:[],ue=[];return j.length>0&&ue.push(v("sync.conflictsCount",{count:j.length})),ne.length>0&&ue.push(v("sync.applyErrorsCount",{count:ne.length})),ue.join(" · ")}async function uf(){t(113,Pn=!0),t(114,Pl=""),t(115,$l="");try{const d=await oe("SyncNow");await li(),t(114,Pl=cf(d)),t(115,$l=Pl?"warning":"")}catch(d){console.error("sync error:",d),t(114,Pl=`${v("sync.status.error")}: ${(d==null?void 0:d.message)||d}`),t(115,$l="warning")}finally{t(113,Pn=!1)}}function ff(d){t(11,p=!1),t(10,c=d),t(80,al=!1),window.location.reload()}function df(d){t(12,_=!1),t(10,c=d),t(80,al=!1),window.location.reload()}const pf=d=>d.nodeId===G.id,mf=d=>tn(d.id),gf=()=>ni("sync"),_f=()=>ni(),vf=()=>Gn(re),hf=()=>Jn(re),kf=()=>oe("OpenTrashFolder"),bf=()=>t(34,R=""),wf=()=>t(34,R=""),yf=()=>t(34,R="");function Cf(){le.content=this.value,t(37,le)}const Sf=d=>ht(d.id),Tf=()=>{ht("notes"),Ui()},Ef=()=>{ht("files"),ts()},Df=()=>ht("worklog"),If=d=>Xt(d),Nf=d=>Xt(d);function Af(){bt=this.value,t(75,bt)}const Mf=d=>d.key==="Enter"&&Gi(),jf=d=>Xt(d),Lf=d=>Xt(d),Pf=d=>{const j=d.detail;j===0?(t(87,dt=[]),t(86,ut=null),lt(G.id)):Ti(j-1)},Ff=d=>Rn(d.detail),zf=d=>_l(d.detail),Rf=d=>oe("OpenFile",d.detail),Of=d=>oe("OpenFolder",d.detail),Bf=d=>is(d.detail),Hf=d=>Di(d.detail.id),Wf=d=>Ei(d.detail),Vf=d=>Ii(d.detail),Uf=d=>Ni(d.detail),Kf=d=>ji(d.detail),Gf=d=>Mi(d.detail),Jf=d=>Li(d.detail),qf=d=>fn(d),Yf=d=>un(d),Qf=d=>yt(d),Xf=d=>Lt(d),Zf=d=>dn(d),xf=d=>yt(d),$f=(d,j)=>j.key==="Enter"&&yt(d),ed=d=>ws(d),td=d=>ys(d),ld=d=>ks(d),nd=d=>bs(d),id=d=>oe("RunAction",d.id),sd=d=>Ss(d.id),od=()=>sn(),rd=d=>d.nodeId===G.id,ad=d=>rn(d),cd=d=>qn(d),ud=d=>an(d),fd=(d,j,ne)=>t(49,j[ne]._expanded=!d._expanded,Ae,t(2,G)),dd=(d,j,ne,ue)=>ue.key==="Enter"&&t(49,j[ne]._expanded=!d._expanded,Ae,t(2,G)),pd=d=>el(d),md=d=>Lt(d.nodeId),gd=d=>sn(d),_d=d=>Un(d),vd=d=>el(d),hd=d=>Lt(d.nodeId),kd=d=>Qn(d),bd=(d,j)=>j.key==="Enter"&&Qn(d),wd=d=>kl(d),yd=(d,j)=>j.key==="Enter"&&kl(d),Cd=()=>{t(4,Z="date"),t(5,ye=Z==="date"&&ye==="desc"?"asc":"desc")},Sd=()=>{t(4,Z="name"),t(5,ye=Z==="name"&&ye==="desc"?"asc":"desc")},Td=()=>{t(4,Z="type"),t(5,ye=Z==="type"&&ye==="desc"?"asc":"desc")};function Ed(){ve=this.checked,t(6,ve)}const Dd=d=>fn(d),Id=d=>un(d),Nd=d=>yt(d),Ad=d=>Lt(d),Md=d=>dn(d),jd=d=>yt(d),Ld=(d,j)=>j.key==="Enter"&&yt(d),Pd=d=>fn(d),Fd=d=>un(d),zd=d=>yt(d),Rd=d=>Lt(d),Od=d=>dn(d),Bd=d=>yt(d),Hd=(d,j)=>j.key==="Enter"&&yt(d),Wd=d=>Xi(d.id),Vd=d=>d.type!=="file"?vl(d):Fl(d),Ud=(d,j)=>j.key==="Enter"&&(d.type!=="file"?vl(d):Fl(d)),Kd=d=>d.type!=="file"?vl(d):Fl(d),Gd=(d,j)=>j.key==="Enter"&&(d.type!=="file"?vl(d):Fl(d)),Jd=d=>Gn(Kn(d.id)),qd=d=>Jn(Kn(d.id)),Yd=()=>t(28,U="suggestions"),Qd=()=>t(28,U="worklog"),Xd=d=>zl(d.nodeId),Zd=(d,j,ne,ue)=>t(49,j[ne].suggestedMin=parseInt(ue.target.value),Ae),xd=d=>rn(d),$d=d=>Zi(d),e1=d=>an(d),t1=(d,j,ne)=>t(49,j[ne]._expanded=!d._expanded,Ae),l1=(d,j,ne,ue)=>ue.key==="Enter"&&t(49,j[ne]._expanded=!d._expanded,Ae),n1=d=>el(d),i1=d=>Lt(d.nodeId),s1=()=>cn("csv"),o1=()=>cn("markdown"),r1=()=>cn("pdf");function a1(){A=this.value,t(20,A)}function c1(){P=this.value,t(21,P)}const u1=()=>{t(29,q=""),t(26,W=""),es()};function f1(){q=this.value,t(29,q)}const d1=()=>setTimeout(()=>t(31,Q=!1),200),p1=d=>$i(d);function m1(){I=this.checked,t(22,I)}function g1(){z=vn(this),t(24,z)}function _1(){B=vn(this),t(25,B)}const v1=d=>zl(d.nodeId),h1=d=>Yn(d),k1=(d,j)=>j.key==="Enter"&&Yn(d),b1=d=>sn(d),w1=d=>Un(d),y1=d=>el(d),C1=d=>zl(d),S1=d=>kl(d),T1=d=>el(d),E1=d=>rn(d),D1=d=>qn(d),I1=d=>an(d),N1=d=>Lt(d),A1=d=>yt(d),M1=d=>{tn("trash"),vl({id:d,title:""}),Zt()},j1=d=>kl(d),L1=(d,j)=>j.key==="Enter"&&kl(d),P1=()=>t(72,St=null),F1=d=>t(72,St=d);function z1(){Nt=this.value,t(70,Nt)}const R1=d=>d.key==="Enter"&&Bi(),O1=d=>Ri(d),B1=()=>Vi(At.node),H1=()=>Hi(At.node),W1=()=>Wi(At.node),V1=()=>Lt(At.node);function U1(){se=this.value,t(43,se)}function K1(){_e=this.value,t(41,_e)}function G1(){$=Dl(this.value),t(42,$)}function J1(){Ce=this.value,t(44,Ce)}function q1(){De=this.checked,t(45,De)}function Y1(){we=this.checked,t(46,we)}function Q1(){Rt=this.value,t(77,Rt)}const X1=d=>d.key==="Enter"&&ti();function Z1(){Nl=vn(this),t(78,Nl),t(121,En)}function x1(){Ot=this.value,t(79,Ot)}const $1=d=>d.key==="Enter"&&ti(),ep=()=>Xn("copy"),tp=()=>Xn("link");function lp(){ml=this.value,t(105,ml)}function np(){Bt=this.value,t(108,Bt)}const ip=d=>d.key==="Enter"&&Ht&&vs(),sp=d=>_s(d);function op(){qe=this.value,t(60,qe)}function rp(){Ue=this.value,t(61,Ue)}function ap(){tt=this.value,t(62,tt)}const cp=d=>oe("OpenFile",d.detail);return l.$$.update=()=>{var d;l.$$.dirty[0]&384&&t(66,Ft=Ch((Oe==null?void 0:Oe.nodes)||[],he)),l.$$.dirty[0]&7&&t(119,n=G?G.title:J?((d=g.find(j=>j.id===J))==null?void 0:d.label)||"":v("nav.selectPrompt")),l.$$.dirty[0]&4&&t(118,i=G?Zn(G.type):""),l.$$.dirty[0]&56&&t(9,o=bh(Se,Z,ye)),l.$$.dirty[0]&576&&t(117,r=ve?eu(o):null),l.$$.dirty[7]&33554432&&t(67,Kt=Ke.length===0?v("nav.trash"):[v("nav.trash"),...Ke.map(j=>j.title)].join(" / "))},t(68,ol=((Ds=Nu())==null?void 0:Ds.title)||v("trash.deletedNodes")),[g,J,G,Se,Z,ye,ve,Oe,he,o,c,p,_,m,h,b,w,C,D,N,A,P,I,M,z,B,W,H,U,q,Y,Q,O,V,R,x,ee,le,pe,Ee,ze,_e,$,se,Ce,De,we,Le,Qe,Ae,$e,Re,Pe,Ne,Ge,je,Me,ft,ke,Je,qe,Ue,tt,Ye,et,re,Ft,Kt,ol,zt,Nt,Gt,St,At,Jt,bt,Il,Rt,Nl,Ot,al,Dn,ql,Al,Tt,Nn,ut,dt,rt,Mt,wt,Ml,cl,Et,Be,An,jl,fl,Mn,Yl,hi,ki,bi,wi,pl,ml,gl,jt,Bt,qt,Ht,xl,Ln,Pn,Pl,$l,Ts,r,i,n,X,En,$c,ht,tn,mt,lt,Rn,nu,Ti,_l,nn,iu,Ei,Di,Ii,Ni,Ai,Mi,ji,Li,uu,fu,du,zi,gu,_u,vu,hu,Ri,ku,Oi,Bi,bu,Yt,wu,yu,Cu,Su,Tu,Hi,Wi,Lt,yt,Vi,Ui,Ki,Gi,Xt,qi,Eu,Du,sn,Yi,Iu,Un,Zt,vl,Au,Fl,Xi,Kn,Gn,Jn,Mu,rn,an,ju,Lu,Pu,Fu,qn,Zi,xt,cn,Yn,Qn,Ru,$i,es,Ou,ts,Bu,Xn,ns,is,Wu,Zn,Vu,Gu,Zu,$u,ef,tf,un,$n,nf,_s,vs,fn,dn,ks,ei,sf,bs,ws,ys,of,Cs,ti,Ss,rf,zl,el,kl,af,li,ni,Es,uf,ff,df,Ke,pf,mf,gf,_f,vf,hf,kf,bf,wf,yf,Cf,Sf,Tf,Ef,Df,If,Nf,Af,Mf,jf,Lf,Pf,Ff,zf,Rf,Of,Bf,Hf,Wf,Vf,Uf,Kf,Gf,Jf,qf,Yf,Qf,Xf,Zf,xf,$f,ed,td,ld,nd,id,sd,od,rd,ad,cd,ud,fd,dd,pd,md,gd,_d,vd,hd,kd,bd,wd,yd,Cd,Sd,Td,Ed,Dd,Id,Nd,Ad,Md,jd,Ld,Pd,Fd,zd,Rd,Od,Bd,Hd,Wd,Vd,Ud,Kd,Gd,Jd,qd,Yd,Qd,Xd,Zd,xd,$d,e1,t1,l1,n1,i1,s1,o1,r1,a1,c1,u1,f1,d1,p1,m1,g1,_1,v1,h1,k1,b1,w1,y1,C1,S1,T1,E1,D1,I1,N1,A1,M1,j1,L1,P1,F1,z1,R1,O1,B1,H1,W1,V1,U1,K1,G1,J1,q1,Y1,Q1,X1,Z1,x1,$1,ep,tp,lp,np,ip,sp,op,rp,ap,cp]}class Mh extends xe{constructor(e){super(),Ze(this,e,Ah,kh,Xe,{},null,[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1])}}new Mh({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/index.html b/cmd/verstak-gui/frontend-dist/index.html
index 691f6c6..d8de46c 100644
--- a/cmd/verstak-gui/frontend-dist/index.html
+++ b/cmd/verstak-gui/frontend-dist/index.html
@@ -19,7 +19,7 @@
background: #13131f;
}
-
+
diff --git a/docs/plugins-security.md b/docs/plugins-security.md
new file mode 100644
index 0000000..e5571a3
--- /dev/null
+++ b/docs/plugins-security.md
@@ -0,0 +1,203 @@
+# Plugin Security Model
+
+## Overview
+
+Verstak's Lua plugin system is designed with a **sandbox-first** approach. Plugins run in isolated Lua 5.1 states with restricted access to the host system. This document defines the security boundaries.
+
+## Lua Sandbox
+
+### Blocked Global Functions
+
+The following Lua globals are set to `nil` in every plugin VM:
+
+| Function | Reason |
+|----------|--------|
+| `dofile` | Arbitrary file read/execute |
+| `loadfile` | Arbitrary file read |
+| `require` | Module loading (no filesystem access) |
+| `module` | Module system (deprecated, unsafe) |
+| `load` | Arbitrary code execution from string |
+| `rawequal` | Bypass metatable protections |
+| `rawget` | Bypass metatable protections |
+| `rawset` | Bypass metatable protections |
+| `rawlen` | Bypass metatable protections |
+| `setfenv` | Environment manipulation |
+| `getfenv` | Environment manipulation |
+
+### Blocked Libraries
+
+| Library | Status | Notes |
+|---------|--------|-------|
+| `io` | **Not opened** | No file I/O |
+| `debug` | **Not opened** | No debug introspection |
+| `coroutine` | **Not opened** | No coroutine creation |
+| `os` | **Restricted** | Only `clock`, `date`, `difftime`, `time`, `tmpname` |
+| `package` | **Restricted** | Only `seeall` is available; `loadlib`, `preload`, `loaders`, `loaded`, `path`, `cpath`, `config`, `searchpath` are blocked |
+
+### Restricted `os.*` Functions
+
+| Function | Status | Reason |
+|----------|--------|--------|
+| `os.clock` | ✅ Allowed | Safe timing |
+| `os.date` | ✅ Allowed | Safe date formatting |
+| `os.difftime` | ✅ Allowed | Safe time diff |
+| `os.time` | ✅ Allowed | Safe timestamp |
+| `os.tmpname` | ✅ Allowed | Safe temp name |
+| `os.execute` | ❌ Blocked | Shell command execution |
+| `os.exit` | ❌ Blocked | Process termination |
+| `os.remove` | ❌ Blocked | File deletion |
+| `os.rename` | ❌ Blocked | File renaming |
+| `os.setlocale` | ❌ Blocked | Locale manipulation |
+| `os.getenv` | ❌ Blocked | Environment variable access |
+
+### Safe Libraries (Available)
+
+- `string` — string manipulation
+- `table` — table operations
+- `math` — mathematical functions
+- `type`, `tostring`, `tonumber` — type operations
+- `pcall`, `xpcall` — protected calls
+- `error`, `assert` — error handling
+- `select`, `unpack` — argument manipulation
+- `pairs`, `ipairs`, `next` — iteration
+- `collectgarbage` — GC control
+
+### Print Redirection
+
+`print()` is redirected to Go's `log.Printf` with the `[lua]` prefix. Plugins cannot write to stdout directly.
+
+## Plugin Function Call Security
+
+### `CallPluginFunction` Validation
+
+When the frontend calls a plugin function via `CallPluginFunction(pluginName, funcName, paramsJSON)`:
+
+1. **funcName validation**: Only `[a-zA-Z_][a-zA-Z0-9_]*` segments separated by dots (max 2 dots, 3 segments)
+2. **No string-based code generation**: Functions are resolved via `_G` table walk, not `DoString`
+3. **Direct PCall**: Arguments are pushed as `lua.LValue` directly, not serialized to Lua code
+4. **Plugin must be active**: Only enabled plugins can receive calls
+
+### Blocked funcName Patterns
+
+```
+❌ "func;os.execute('id')" — semicolon injection
+❌ "func..name" — empty segment
+❌ "func[name]" — bracket injection
+❌ "func()" — parentheses
+❌ "func name" — space injection
+❌ "func-name" — special chars
+❌ "a.b.c.d" — too deep (>3 segments)
+❌ "123func" — starts with number
+```
+
+## iframe Bridge Security
+
+### PluginPage.svelte ↔ iframe Communication
+
+1. **Source verification**: Messages are only accepted from the specific `iframeEl.contentWindow` (not just any `source: 'calendar-plugin'`)
+2. **Type checking**: `msg.source`, `msg.action` must be strings
+3. **sandbox attribute**: iframe uses `sandbox="allow-scripts allow-same-origin"` (no forms, no popups)
+4. **srcdoc**: iframe content is injected as `srcdoc` (same origin, no external network)
+
+### Message Protocol
+
+All messages must have:
+```js
+{ source: 'calendar-plugin', action: 'ready' | 'get-events' | 'create-event' | ... }
+```
+
+Messages from iframe to Svelte are validated:
+- `e.source === iframeEl.contentWindow` (origin check)
+- `msg.source === 'calendar-plugin'` (source check)
+- `typeof msg.action === 'string'` (type check)
+
+## Plugin Lifecycle Security
+
+### State Separation
+
+| State | Description | Data Persistence |
+|-------|-------------|-----------------|
+| **Discovered** | Plugin found on disk | None |
+| **Installed** | `on_install` hook ran, tables created | DB tables exist |
+| **Enabled** | Plugin is active, Lua VM running | Full access |
+| **Active** | Runtime is initialized | Full access |
+| **Disabled** | Plugin deactivated, data preserved | DB tables exist |
+| **Uninstalled** | `on_uninstall` hook ran, tables dropped | Data cleaned |
+
+### Idempotency
+
+- `Install` on already-installed plugin → error (no duplicate config entries)
+- `Uninstall` on non-installed plugin → error
+- `Enable` on non-installed plugin → error
+- `Disable` on already-disabled plugin → no-op (error, but harmless)
+- `ReloadPlugins` → stops schedulers, calls shutdown hooks, closes VMs, re-discovers
+
+### ReloadPlugins Cleanup Order
+
+1. `StopSchedulers()` — stops all background tasks, sets `scheduler = nil`
+2. `CallShutdownHooks()` — calls `on_shutdown` for all active plugins
+3. `CloseRuntimes()` — closes all Lua VMs, sets `vm = nil`
+4. `Discover()` — re-scans plugins directory
+5. `SyncConfig()` — applies installed/enabled state from config
+6. `InitRuntimes()` — creates new VMs and schedulers
+7. `CallInitHooks()` — calls `on_init` for all active plugins
+8. `StartSchedulers()` — starts background tasks
+
+## Network Access
+
+Plugins have **no direct network access**. All HTTP/network operations must go through the `verstak.http.*` API (registered by the core), which:
+
+- Uses Go's `net/http` (not Lua socket)
+- Can be rate-limited by the core
+- Goes through the proxy if configured
+
+## Filesystem Access
+
+Plugins have **no direct filesystem access**. All file operations must go through:
+
+- `verstak.db.*` — SQLite queries (plugin's own DB only)
+- `verstak.node.*` — Node CRUD (via core services)
+- `verstak.files.*` — File operations (via core services)
+
+The `io` library is not opened. `os.remove`, `os.rename` are blocked.
+
+## Database Isolation
+
+Each plugin gets its own SQLite database at `.verstak/plugins//data/`. Plugins cannot access:
+- The main Verstak database
+- Other plugins' databases
+- System databases
+
+## Calendar Plugin (Reference)
+
+The Calendar plugin in `contrib/plugins/calendar/` is a **reference implementation**, not a core feature:
+
+- It is **not** loaded by default
+- It requires explicit `Install` + `Enable`
+- Its tables are created only during `on_install`
+- It can be fully `Uninstall`ed without affecting core functionality
+- It does not add calendar UI to any core views
+- It demonstrates the full plugin API: `verstak.db.*`, `verstak.config.*`, `verstak.state.*`, `verstak.node.*`, `verstak.activity.*`, `verstak.schedule.*`, `verstak.http.*`
+
+## Security Tests
+
+All security properties are verified by tests in `internal/core/plugins/security_test.go`:
+
+- `TestLuaVM_Sandbox_Comprehensive` — 12 dangerous APIs blocked
+- `TestLuaVM_Sandbox_SafeLibs` — 9 safe libraries available
+- `TestLuaVM_Sandbox_GlobalsRemoved` — 11 dangerous globals nil
+- `TestLuaVM_Sandbox_OsRestricted` — 6 os.* functions blocked, 5 safe ones available
+- `TestLuaVM_Sandbox_IoBlocked` — io library not opened
+- `TestLuaVM_Sandbox_DebugBlocked` — debug library not opened
+- `TestLuaVM_Sandbox_CoroutineBlocked` — coroutine library not opened
+- `TestLuaVM_Sandbox_Package*Blocked` — 9 package.* fields blocked
+- `TestLuaVM_Sandbox_PrintIsRedirected` — print goes to Go log
+- `TestLuaVM_DoStringTimeout` — infinite loops killed by timeout
+- `TestLuaVM_Isolation` — plugins cannot see each other's globals
+- `TestLuaVM_ClosedVM` — operations on closed VM return errors
+- `TestLuaVM_DoString_InjectionAttempt` — dangerous APIs return nil
+- `TestPluginManager_InstallIdempotent` — no duplicate config entries
+- `TestPluginManager_DisablePreservesData` — Disable keeps data
+- `TestPluginManager_UninstallRemovesFromConfig` — Uninstall cleans config
+- `TestPluginManager_ReloadPlugins_Cleanup` — full cleanup on reload
+- `TestCallPluginFunction_Validation` — funcName validation (5 valid, 10 invalid cases)
diff --git a/frontend/src/lib/PluginPage.svelte b/frontend/src/lib/PluginPage.svelte
index 0dcccf4..944167a 100644
--- a/frontend/src/lib/PluginPage.svelte
+++ b/frontend/src/lib/PluginPage.svelte
@@ -35,10 +35,15 @@
}
}
- // Handle messages from iframe
+ // Handle messages from iframe — only accept from our own iframeEl
function handleIframeMessage(e) {
+ // Verify the message comes from our iframe (srcdoc = same origin)
+ if (!iframeEl || !iframeEl.contentWindow || e.source !== iframeEl.contentWindow) return
+
const msg = e.data
- if (!msg || !msg.source || msg.source !== 'calendar-plugin') return
+ if (!msg || typeof msg !== 'object') return
+ if (!msg.source || msg.source !== 'calendar-plugin') return
+ if (!msg.action || typeof msg.action !== 'string') return
switch (msg.action) {
case 'ready':
diff --git a/internal/core/plugins/manager.go b/internal/core/plugins/manager.go
index b5067e7..784cff8 100644
--- a/internal/core/plugins/manager.go
+++ b/internal/core/plugins/manager.go
@@ -255,6 +255,7 @@ func (m *Manager) StopSchedulers() {
p := &m.plugins[i]
if p.scheduler != nil {
p.scheduler.Stop()
+ p.scheduler = nil
}
}
}
@@ -426,13 +427,22 @@ func (m *Manager) Install(name string) error {
return fmt.Errorf("on_install: %w", err)
}
- // Mark installed in config
+ // Mark installed in config (idempotent — avoid duplicates)
p.Installed = true
appCfg, _ := config.LoadAppConfig()
if appCfg == nil {
appCfg = config.DefaultAppConfig()
}
- appCfg.InstalledPlugins = append(appCfg.InstalledPlugins, name)
+ already := false
+ for _, n := range appCfg.InstalledPlugins {
+ if n == name {
+ already = true
+ break
+ }
+ }
+ if !already {
+ appCfg.InstalledPlugins = append(appCfg.InstalledPlugins, name)
+ }
if err := config.SaveAppConfig(appCfg); err != nil {
return fmt.Errorf("save config: %w", err)
}
diff --git a/internal/core/plugins/runtime.go b/internal/core/plugins/runtime.go
index 5dcadde..ba9c0f1 100644
--- a/internal/core/plugins/runtime.go
+++ b/internal/core/plugins/runtime.go
@@ -72,10 +72,19 @@ func NewLuaVM(p *Plugin) (*LuaVM, error) {
}
// Disable dangerous functions
- for _, name := range []string{"dofile", "loadfile", "require", "module", "rawequal", "rawget", "rawset", "rawlen", "setfenv", "getfenv"} {
+ for _, name := range []string{"dofile", "loadfile", "require", "module", "rawequal", "rawget", "rawset", "rawlen", "setfenv", "getfenv", "load"} {
L.SetGlobal(name, lua.LNil)
}
+ // Restrict package table: remove dangerous fields
+ if pkgTbl := L.GetGlobal("package"); pkgTbl != lua.LNil {
+ if tbl, ok := pkgTbl.(*lua.LTable); ok {
+ for _, name := range []string{"loadlib", "seeall", "preload", "loaders", "loaded", "path", "cpath", "config", "searchpath"} {
+ tbl.RawSetString(name, lua.LNil)
+ }
+ }
+ }
+
// Restrict os.* to safe subset
osSafe := map[string]bool{
"clock": true, "date": true, "difftime": true, "time": true,
diff --git a/internal/core/plugins/scheduler.go b/internal/core/plugins/scheduler.go
index cfad300..bb8f487 100644
--- a/internal/core/plugins/scheduler.go
+++ b/internal/core/plugins/scheduler.go
@@ -77,8 +77,11 @@ func (s *Scheduler) Stop() {
t.stopped = true
}
}
+ tasks := s.tasks
+ s.tasks = nil
s.mu.Unlock()
s.wg.Wait()
+ _ = tasks // keep reference until wg done
}
func (s *Scheduler) runTask(t *Task) {
diff --git a/internal/core/plugins/security_test.go b/internal/core/plugins/security_test.go
new file mode 100644
index 0000000..08a8acb
--- /dev/null
+++ b/internal/core/plugins/security_test.go
@@ -0,0 +1,966 @@
+package plugins
+
+import (
+ "os"
+ "path/filepath"
+ "regexp"
+ "strings"
+ "testing"
+ "time"
+
+ "verstak/internal/core/config"
+
+ lua "github.com/yuin/gopher-lua"
+)
+
+// validLuaIdent matches a safe Lua identifier segment: [a-zA-Z_][a-zA-Z0-9_]*
+var validLuaIdent = regexp.MustCompile(`^[a-zA-Z_][a-zA-Z0-9_]*$`)
+
+// TestLuaVM_Sandbox_Comprehensive verifies that dangerous Lua APIs are blocked.
+func TestLuaVM_Sandbox_Comprehensive(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "sandbox2")
+ if err := os.MkdirAll(pluginDir, 0755); err != nil {
+ t.Fatal(err)
+ }
+
+ mainLua := `
+function test_dofile()
+ if dofile == nil then return false end
+ local ok = pcall(function() dofile("/etc/passwd") end)
+ return ok
+end
+function test_loadfile()
+ if loadfile == nil then return false end
+ local ok = pcall(function() loadfile("/etc/passwd") end)
+ return ok
+end
+function test_require()
+ if require == nil then return false end
+ local ok = pcall(function() require("os") end)
+ return ok
+end
+function test_os_execute()
+ if os == nil or os.execute == nil then return false end
+ local ok = pcall(function() os.execute("id") end)
+ return ok
+end
+function test_os_remove()
+ if os == nil or os.remove == nil then return false end
+ local ok = pcall(function() os.remove("/tmp/test") end)
+ return ok
+end
+function test_os_rename()
+ if os == nil or os.rename == nil then return false end
+ local ok = pcall(function() os.rename("/tmp/a", "/tmp/b") end)
+ return ok
+end
+function test_os_getenv()
+ if os == nil or os.getenv == nil then return false end
+ local ok = pcall(function() return os.getenv("PATH") end)
+ return ok
+end
+function test_io_open()
+ if io == nil or io.open == nil then return false end
+ local ok = pcall(function() io.open("/etc/passwd", "r") end)
+ return ok
+end
+function test_load()
+ if load == nil then return false end
+ local ok = pcall(function() load("return 1") end)
+ return ok
+end
+function test_package_loadlib()
+ if package == nil or package.loadlib == nil then return false end
+ local ok = pcall(function() package.loadlib("libc.so.6", "malloc") end)
+ return ok
+end
+function test_rawget()
+ if rawget == nil then return false end
+ return true
+end
+function test_setfenv()
+ if setfenv == nil then return false end
+ return true
+end
+`
+ if err := os.WriteFile(filepath.Join(pluginDir, "main.lua"), []byte(mainLua), 0644); err != nil {
+ t.Fatal(err)
+ }
+
+ p := &Plugin{
+ Meta: Meta{Name: "sandbox2"},
+ Dir: pluginDir,
+ Active: true,
+ }
+
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ if err := vm.LoadScript("main.lua"); err != nil {
+ t.Fatalf("LoadScript: %v", err)
+ }
+
+ dangerousTests := []struct {
+ name string
+ fnName string
+ wantSafe bool
+ }{
+ {"dofile", "test_dofile", true},
+ {"loadfile", "test_loadfile", true},
+ {"require", "test_require", true},
+ {"os.execute", "test_os_execute", true},
+ {"os.remove", "test_os_remove", true},
+ {"os.rename", "test_os_rename", true},
+ {"os.getenv", "test_os_getenv", true},
+ {"io.open", "test_io_open", true},
+ {"load", "test_load", true},
+ {"package.loadlib", "test_package_loadlib", true},
+ {"rawget", "test_rawget", true},
+ {"setfenv", "test_setfenv", true},
+ }
+
+ for _, tt := range dangerousTests {
+ t.Run(tt.name, func(t *testing.T) {
+ result, err := vm.CallHookWithResult(tt.fnName)
+ if err != nil {
+ t.Fatalf("CallHook(%s): %v", tt.fnName, err)
+ }
+ succeeded := result == lua.LTrue
+ if tt.wantSafe && succeeded {
+ t.Errorf("%s: dangerous API was NOT blocked (returned true)", tt.name)
+ }
+ })
+ }
+}
+
+// TestLuaVM_Sandbox_SafeLibs verifies that safe Lua libraries still work.
+func TestLuaVM_Sandbox_SafeLibs(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "safelibs")
+ if err := os.MkdirAll(pluginDir, 0755); err != nil {
+ t.Fatal(err)
+ }
+
+ mainLua := `
+function test_string()
+ local s = string.format("hello %s", "world")
+ return s == "hello world"
+end
+function test_table()
+ local t = {1, 2, 3}
+ return #t == 3
+end
+function test_math()
+ return math.max(1, 2, 3) == 3
+end
+function test_type()
+ return type(42) == "number" and type("hi") == "string"
+end
+function test_pcall()
+ local ok, err = pcall(function() error("test") end)
+ return not ok and err ~= nil
+end
+function test_pairs()
+ local t = {a=1, b=2}
+ local count = 0
+ for k, v in pairs(t) do count = count + 1 end
+ return count == 2
+end
+function test_os_clock()
+ if os == nil or os.clock == nil then return false end
+ local c = os.clock()
+ return c > 0
+end
+function test_os_date()
+ if os == nil or os.date == nil then return false end
+ local d = os.date("%Y")
+ return #d == 4
+end
+function test_os_time()
+ if os == nil or os.time == nil then return false end
+ local t = os.time()
+ return t > 0
+end
+`
+ if err := os.WriteFile(filepath.Join(pluginDir, "main.lua"), []byte(mainLua), 0644); err != nil {
+ t.Fatal(err)
+ }
+
+ p := &Plugin{
+ Meta: Meta{Name: "safelibs"},
+ Dir: pluginDir,
+ Active: true,
+ }
+
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ if err := vm.LoadScript("main.lua"); err != nil {
+ t.Fatalf("LoadScript: %v", err)
+ }
+
+ safeTests := []struct {
+ name string
+ fnName string
+ }{
+ {"string", "test_string"},
+ {"table", "test_table"},
+ {"math", "test_math"},
+ {"type", "test_type"},
+ {"pcall", "test_pcall"},
+ {"pairs", "test_pairs"},
+ {"os.clock", "test_os_clock"},
+ {"os.date", "test_os_date"},
+ {"os.time", "test_os_time"},
+ }
+
+ for _, tt := range safeTests {
+ t.Run(tt.name, func(t *testing.T) {
+ result, err := vm.CallHookWithResult(tt.fnName)
+ if err != nil {
+ t.Fatalf("CallHook(%s): %v", tt.fnName, err)
+ }
+ if result != lua.LTrue {
+ t.Errorf("%s: expected true, got %v", tt.name, result)
+ }
+ })
+ }
+}
+
+// TestLuaVM_Sandbox_GlobalsRemoved verifies that dangerous globals are nil.
+func TestLuaVM_Sandbox_GlobalsRemoved(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "globals")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "globals"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ dangerous := []string{"dofile", "loadfile", "require", "module", "rawequal", "rawget", "rawset", "rawlen", "setfenv", "getfenv", "load"}
+ for _, name := range dangerous {
+ val := vm.L.GetGlobal(name)
+ if val != lua.LNil {
+ t.Errorf("global %q should be nil, got %v", name, val)
+ }
+ }
+}
+
+// TestLuaVM_Sandbox_OsRestricted verifies that os.* is restricted to safe subset.
+func TestLuaVM_Sandbox_OsRestricted(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "osrestrict")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "osrestrict"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ blocked := []string{"execute", "exit", "remove", "rename", "setlocale", "getenv"}
+ for _, name := range blocked {
+ osTbl := vm.L.GetGlobal("os")
+ if osTbl == lua.LNil {
+ t.Fatal("os table is nil")
+ }
+ tbl := osTbl.(*lua.LTable)
+ val := tbl.RawGetString(name)
+ if val != lua.LNil {
+ t.Errorf("os.%s should be nil, got %v", name, val)
+ }
+ }
+
+ safe := []string{"clock", "date", "difftime", "time", "tmpname"}
+ for _, name := range safe {
+ osTbl := vm.L.GetGlobal("os")
+ tbl := osTbl.(*lua.LTable)
+ val := tbl.RawGetString(name)
+ if val == lua.LNil {
+ t.Errorf("os.%s should be available, got nil", name)
+ }
+ }
+}
+
+// TestLuaVM_Sandbox_IoBlocked verifies that io.* is completely blocked.
+func TestLuaVM_Sandbox_IoBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "ioblock")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "ioblock"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ ioTbl := vm.L.GetGlobal("io")
+ if ioTbl != lua.LNil {
+ t.Errorf("io should be nil (not opened), got %v", ioTbl)
+ }
+}
+
+// TestLuaVM_Sandbox_DebugBlocked verifies that debug library is not available.
+func TestLuaVM_Sandbox_DebugBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "debugblock")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "debugblock"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ debugVal := vm.L.GetGlobal("debug")
+ if debugVal != lua.LNil {
+ t.Errorf("debug should be nil (not opened), got %v", debugVal)
+ }
+}
+
+// TestLuaVM_Sandbox_CoroutineBlocked verifies coroutine library is not available.
+func TestLuaVM_Sandbox_CoroutineBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "coroblock")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "coroblock"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ coroVal := vm.L.GetGlobal("coroutine")
+ if coroVal != lua.LNil {
+ t.Errorf("coroutine should be nil (not opened), got %v", coroVal)
+ }
+}
+
+// TestLuaVM_Sandbox_PackageLoadlibBlocked verifies package.loadlib is blocked.
+func TestLuaVM_Sandbox_PackageLoadlibBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "loadlib")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "loadlib"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ pkgTbl := vm.L.GetGlobal("package")
+ if pkgTbl == lua.LNil {
+ t.Fatal("package table is nil")
+ }
+ tbl := pkgTbl.(*lua.LTable)
+ loadlib := tbl.RawGetString("loadlib")
+ if loadlib != lua.LNil {
+ t.Errorf("package.loadlib should be nil, got %v", loadlib)
+ }
+}
+
+// TestLuaVM_Sandbox_PackageSeeallBlocked verifies package.seeall is blocked.
+func TestLuaVM_Sandbox_PackageSeeallBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "seeall")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "seeall"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ pkgTbl := vm.L.GetGlobal("package")
+ if pkgTbl == lua.LNil {
+ t.Fatal("package table is nil")
+ }
+ tbl := pkgTbl.(*lua.LTable)
+ seeall := tbl.RawGetString("seeall")
+ if seeall != lua.LNil {
+ t.Errorf("package.seeall should be nil, got %v", seeall)
+ }
+}
+
+// TestLuaVM_Sandbox_PackagePreloadBlocked verifies package.preload is blocked.
+func TestLuaVM_Sandbox_PackagePreloadBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "preload")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "preload"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ pkgTbl := vm.L.GetGlobal("package")
+ if pkgTbl == lua.LNil {
+ t.Fatal("package table is nil")
+ }
+ tbl := pkgTbl.(*lua.LTable)
+ preload := tbl.RawGetString("preload")
+ if preload != lua.LNil {
+ t.Errorf("package.preload should be nil, got %v", preload)
+ }
+}
+
+// TestLuaVM_Sandbox_PackageLoadersBlocked verifies package.loaders is blocked.
+func TestLuaVM_Sandbox_PackageLoadersBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "loaders")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "loaders"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ pkgTbl := vm.L.GetGlobal("package")
+ if pkgTbl == lua.LNil {
+ t.Fatal("package table is nil")
+ }
+ tbl := pkgTbl.(*lua.LTable)
+ loaders := tbl.RawGetString("loaders")
+ if loaders != lua.LNil {
+ t.Errorf("package.loaders should be nil, got %v", loaders)
+ }
+}
+
+// TestLuaVM_Sandbox_PackagePathBlocked verifies package.path is blocked.
+func TestLuaVM_Sandbox_PackagePathBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "pkgpath")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "pkgpath"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ pkgTbl := vm.L.GetGlobal("package")
+ if pkgTbl == lua.LNil {
+ t.Fatal("package table is nil")
+ }
+ tbl := pkgTbl.(*lua.LTable)
+ path := tbl.RawGetString("path")
+ if path != lua.LNil {
+ t.Errorf("package.path should be nil, got %v", path)
+ }
+}
+
+// TestLuaVM_Sandbox_PackageCpathBlocked verifies package.cpath is blocked.
+func TestLuaVM_Sandbox_PackageCpathBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "pkgcpath")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "pkgcpath"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ pkgTbl := vm.L.GetGlobal("package")
+ if pkgTbl == lua.LNil {
+ t.Fatal("package table is nil")
+ }
+ tbl := pkgTbl.(*lua.LTable)
+ cpath := tbl.RawGetString("cpath")
+ if cpath != lua.LNil {
+ t.Errorf("package.cpath should be nil, got %v", cpath)
+ }
+}
+
+// TestLuaVM_Sandbox_PackageLoadedBlocked verifies package.loaded is blocked.
+func TestLuaVM_Sandbox_PackageLoadedBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "pkgloaded")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "pkgloaded"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ pkgTbl := vm.L.GetGlobal("package")
+ if pkgTbl == lua.LNil {
+ t.Fatal("package table is nil")
+ }
+ tbl := pkgTbl.(*lua.LTable)
+ loaded := tbl.RawGetString("loaded")
+ if loaded != lua.LNil {
+ t.Errorf("package.loaded should be nil, got %v", loaded)
+ }
+}
+
+// TestLuaVM_Sandbox_PackageConfigBlocked verifies package.config is blocked.
+func TestLuaVM_Sandbox_PackageConfigBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "pkgconfig")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "pkgconfig"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ pkgTbl := vm.L.GetGlobal("package")
+ if pkgTbl == lua.LNil {
+ t.Fatal("package table is nil")
+ }
+ tbl := pkgTbl.(*lua.LTable)
+ config := tbl.RawGetString("config")
+ if config != lua.LNil {
+ t.Errorf("package.config should be nil, got %v", config)
+ }
+}
+
+// TestLuaVM_Sandbox_PackageSearchpathBlocked verifies package.searchpath is blocked.
+func TestLuaVM_Sandbox_PackageSearchpathBlocked(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "searchpath")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "searchpath"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ pkgTbl := vm.L.GetGlobal("package")
+ if pkgTbl == lua.LNil {
+ t.Fatal("package table is nil")
+ }
+ tbl := pkgTbl.(*lua.LTable)
+ searchpath := tbl.RawGetString("searchpath")
+ if searchpath != lua.LNil {
+ t.Errorf("package.searchpath should be nil, got %v", searchpath)
+ }
+}
+
+// TestLuaVM_Sandbox_PrintIsRedirected verifies print is the Go-redirected version.
+func TestLuaVM_Sandbox_PrintIsRedirected(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "printredir")
+ os.MkdirAll(pluginDir, 0755)
+
+ p := &Plugin{Meta: Meta{Name: "printredir"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ printVal := vm.L.GetGlobal("print")
+ if printVal == lua.LNil {
+ t.Fatal("print should be available")
+ }
+ if _, ok := printVal.(*lua.LFunction); !ok {
+ t.Errorf("print should be a function, got %T", printVal)
+ }
+}
+
+// TestLuaVM_DoStringTimeout verifies that infinite loops are killed by timeout.
+func TestLuaVM_DoStringTimeout(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "timeout")
+ os.MkdirAll(pluginDir, 0755)
+ os.WriteFile(filepath.Join(pluginDir, "main.lua"), []byte(`
+function infinite_loop()
+ while true do end
+end
+`), 0644)
+
+ p := &Plugin{Meta: Meta{Name: "timeout"}, Dir: pluginDir, Active: true}
+ vm, err := NewLuaVM(p)
+ if err != nil {
+ t.Fatalf("NewLuaVM: %v", err)
+ }
+ defer vm.Close()
+
+ if err := vm.LoadScript("main.lua"); err != nil {
+ t.Fatalf("LoadScript: %v", err)
+ }
+
+ vm.callTimeout = 1 * time.Second
+
+ done := make(chan error, 1)
+ go func() {
+ _, err := vm.CallHookWithResult("infinite_loop")
+ done <- err
+ }()
+
+ select {
+ case err := <-done:
+ if err == nil {
+ t.Error("expected timeout error for infinite loop")
+ }
+ case <-time.After(5 * time.Second):
+ t.Fatal("test hung — timeout didn't work")
+ }
+}
+
+// TestLuaVM_Isolation verifies that two plugins have separate Lua states.
+func TestLuaVM_Isolation(t *testing.T) {
+ dir := t.TempDir()
+
+ pluginDirA := filepath.Join(dir, "plugina")
+ os.MkdirAll(pluginDirA, 0755)
+ os.WriteFile(filepath.Join(pluginDirA, "main.lua"), []byte(`
+function set_global()
+ plugin_a_secret = "leaked"
+end
+function get_global()
+ return plugin_a_secret
+end
+`), 0644)
+
+ pluginDirB := filepath.Join(dir, "pluginb")
+ os.MkdirAll(pluginDirB, 0755)
+ os.WriteFile(filepath.Join(pluginDirB, "main.lua"), []byte(`
+function check_isolation()
+ return plugin_a_secret == nil
+end
+`), 0644)
+
+ pA := &Plugin{Meta: Meta{Name: "plugina"}, Dir: pluginDirA, Active: true}
+ pB := &Plugin{Meta: Meta{Name: "pluginb"}, Dir: pluginDirB, Active: true}
+
+ vmA, _ := NewLuaVM(pA)
+ defer vmA.Close()
+ vmB, _ := NewLuaVM(pB)
+ defer vmB.Close()
+
+ vmA.LoadScript("main.lua")
+ vmB.LoadScript("main.lua")
+
+ vmA.CallHook("set_global")
+
+ result, err := vmB.CallHookWithResult("check_isolation")
+ if err != nil {
+ t.Fatalf("CallHook: %v", err)
+ }
+ if result != lua.LTrue {
+ t.Error("plugin B could see plugin A's global — isolation broken")
+ }
+}
+
+// TestLuaVM_ClosedVM verifies that operations on a closed VM return errors.
+func TestLuaVM_ClosedVM(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "closed")
+ os.MkdirAll(pluginDir, 0755)
+ os.WriteFile(filepath.Join(pluginDir, "main.lua"), []byte(`function test() return true end`), 0644)
+
+ p := &Plugin{Meta: Meta{Name: "closed"}, Dir: pluginDir, Active: true}
+ vm, _ := NewLuaVM(p)
+ vm.LoadScript("main.lua")
+ vm.Close()
+
+ _, err := vm.DoString("return 1")
+ if err == nil {
+ t.Error("expected error from DoString on closed VM")
+ }
+}
+
+// TestLuaVM_DoString_InjectionAttempt verifies that dangerous APIs are blocked.
+func TestLuaVM_DoString_InjectionAttempt(t *testing.T) {
+ dir := t.TempDir()
+ pluginDir := filepath.Join(dir, "inject")
+ os.MkdirAll(pluginDir, 0755)
+ os.WriteFile(filepath.Join(pluginDir, "main.lua"), []byte(`
+function innocent()
+ return "innocent"
+end
+`), 0644)
+
+ p := &Plugin{Meta: Meta{Name: "inject"}, Dir: pluginDir, Active: true}
+ vm, _ := NewLuaVM(p)
+ defer vm.Close()
+ vm.LoadScript("main.lua")
+
+ // dofile is blocked — attempting to call it should error
+ _, err := vm.DoString("return dofile('/etc/passwd')")
+ if err == nil {
+ t.Error("dofile should be blocked in sandbox")
+ }
+
+ // package.loadlib is nil — accessing it should return "nil"
+ result, err := vm.DoString("return package.loadlib")
+ if err != nil {
+ t.Fatalf("DoString(package.loadlib): %v", err)
+ }
+ if result != "nil" {
+ t.Errorf("package.loadlib should be nil, got %q", result)
+ }
+
+ // package.loaders is nil
+ result, err = vm.DoString("return package.loaders")
+ if err != nil {
+ t.Fatalf("DoString(package.loaders): %v", err)
+ }
+ if result != "nil" {
+ t.Errorf("package.loaders should be nil, got %q", result)
+ }
+
+ // os.execute is nil
+ result, err = vm.DoString("return os.execute")
+ if err != nil {
+ t.Fatalf("DoString(os.execute): %v", err)
+ }
+ if result != "nil" {
+ t.Errorf("os.execute should be nil, got %q", result)
+ }
+
+ // io is nil (not opened)
+ result, err = vm.DoString("return io")
+ if err != nil {
+ t.Fatalf("DoString(io): %v", err)
+ }
+ if result != "nil" {
+ t.Errorf("io should be nil, got %q", result)
+ }
+
+ // load is nil (blocked global)
+ result, err = vm.DoString("return load")
+ if err != nil {
+ t.Fatalf("DoString(load): %v", err)
+ }
+ if result != "nil" {
+ t.Errorf("load should be nil, got %q", result)
+ }
+}
+
+// TestPluginManager_InstallIdempotent verifies that installing an already-installed
+// plugin does not duplicate entries in config.
+func TestPluginManager_InstallIdempotent(t *testing.T) {
+ root := setupPluginDir(t, map[string]*fsDir{
+ "idem": {
+ files: map[string][]byte{
+ "plugin.json": []byte(`{"name": "idem", "version": "1.0", "hooks": {"on_install": "on_install"}}`),
+ "main.lua": []byte(`function on_install() end`),
+ },
+ },
+ })
+
+ mgr := NewManager(root)
+ mgr.Discover()
+
+ if err := mgr.Install("idem"); err != nil {
+ t.Fatalf("first install: %v", err)
+ }
+
+ if err := mgr.Install("idem"); err == nil {
+ t.Fatal("expected error on double install, got nil")
+ }
+
+ appCfg, _ := config.LoadAppConfig()
+ count := 0
+ for _, n := range appCfg.InstalledPlugins {
+ if n == "idem" {
+ count++
+ }
+ }
+ if count != 1 {
+ t.Errorf("expected 1 entry in InstalledPlugins, got %d: %v", count, appCfg.InstalledPlugins)
+ }
+}
+
+// TestPluginManager_DisablePreservesData verifies that Disable does not
+// remove the plugin from the installed list.
+func TestPluginManager_DisablePreservesData(t *testing.T) {
+ root := setupPluginDir(t, map[string]*fsDir{
+ "keepdata": {
+ files: map[string][]byte{
+ "plugin.json": []byte(`{"name": "keepdata", "version": "1.0", "hooks": {"on_install": "on_install"}}`),
+ "main.lua": []byte(`function on_install() end`),
+ },
+ },
+ })
+
+ mgr := NewManager(root)
+ mgr.Discover()
+ mgr.Install("keepdata")
+ mgr.Enable("keepdata")
+
+ mgr.Disable("keepdata")
+
+ p := mgr.Plugins()[0]
+ if !p.Installed {
+ t.Error("Installed should remain true after Disable")
+ }
+ if p.Active {
+ t.Error("Active should be false after Disable")
+ }
+}
+
+// TestPluginManager_UninstallRemovesFromConfig verifies that Uninstall
+// removes the plugin from both installed and enabled lists.
+func TestPluginManager_UninstallRemovesFromConfig(t *testing.T) {
+ root := setupPluginDir(t, map[string]*fsDir{
+ "gone": {
+ files: map[string][]byte{
+ "plugin.json": []byte(`{"name": "gone", "version": "1.0", "hooks": {"on_install": "on_install", "on_uninstall": "on_uninstall"}}`),
+ "main.lua": []byte(`function on_install() end function on_uninstall() end`),
+ },
+ },
+ })
+
+ mgr := NewManager(root)
+ mgr.Discover()
+ mgr.Install("gone")
+ mgr.Enable("gone")
+
+ if err := mgr.Uninstall("gone"); err != nil {
+ t.Fatalf("uninstall: %v", err)
+ }
+
+ appCfg, _ := config.LoadAppConfig()
+ for _, n := range appCfg.InstalledPlugins {
+ if n == "gone" {
+ t.Error("plugin should be removed from InstalledPlugins after Uninstall")
+ }
+ }
+ for _, n := range appCfg.EnabledPlugins {
+ if n == "gone" {
+ t.Error("plugin should be removed from EnabledPlugins after Uninstall")
+ }
+ }
+}
+
+// TestPluginManager_ReloadPlugins_Cleanup verifies that ReloadPlugins
+// properly stops schedulers and closes old VMs.
+func TestPluginManager_ReloadPlugins_Cleanup(t *testing.T) {
+ root := setupPluginDir(t, map[string]*fsDir{
+ "reloadme": {
+ files: map[string][]byte{
+ "plugin.json": []byte(`{"name": "reloadme", "version": "1.0", "hooks": {"on_install": "on_install", "on_init": "on_init", "on_shutdown": "on_shutdown"}}`),
+ "main.lua": []byte(`function on_install() end function on_init() end function on_shutdown() end`),
+ },
+ },
+ })
+
+ mgr := NewManager(root)
+ mgr.Discover()
+ mgr.Install("reloadme")
+ mgr.Enable("reloadme")
+ mgr.InitRuntimes()
+
+ if len(mgr.Active()) != 1 {
+ t.Fatalf("expected 1 active plugin, got %d", len(mgr.Active()))
+ }
+
+ // Simulate what ReloadPlugins does
+ mgr.StopSchedulers()
+ mgr.CallShutdownHooks()
+ mgr.CloseRuntimes()
+
+ for _, p := range mgr.Plugins() {
+ if p.vm != nil {
+ t.Error("VM should be nil after CloseRuntimes")
+ }
+ if p.scheduler != nil {
+ t.Error("scheduler should be nil after StopSchedulers")
+ }
+ }
+
+ mgr.InitRuntimes()
+ mgr.CallInitHooks()
+ mgr.StartSchedulers()
+
+ if len(mgr.Active()) != 1 {
+ t.Errorf("expected 1 active plugin after re-init, got %d", len(mgr.Active()))
+ }
+
+ mgr.StopSchedulers()
+ mgr.CloseRuntimes()
+}
+
+// TestCallPluginFunction_Validation tests that the funcName validation
+// rejects dangerous patterns.
+func TestCallPluginFunction_Validation(t *testing.T) {
+ validCases := []string{
+ "create_event",
+ "calendar.create_event",
+ "a.b.c",
+ "_private",
+ "func123",
+ }
+ invalidCases := []string{
+ "",
+ "func;os.execute('id')",
+ "func..name",
+ "func[name]",
+ "func()",
+ "func name",
+ "func-name",
+ "func@name",
+ "a.b.c.d",
+ "123func",
+ }
+
+ for _, tc := range validCases {
+ t.Run("valid_"+tc, func(t *testing.T) {
+ segments := strings.Split(tc, ".")
+ if len(segments) > 3 {
+ t.Fatalf("should be valid: %s", tc)
+ }
+ for _, seg := range segments {
+ if !validLuaIdent.MatchString(seg) {
+ t.Fatalf("should be valid: %s (segment %s)", tc, seg)
+ }
+ }
+ })
+ }
+
+ for _, tc := range invalidCases {
+ t.Run("invalid_"+tc, func(t *testing.T) {
+ if tc == "" {
+ return
+ }
+ segments := strings.Split(tc, ".")
+ valid := true
+ if len(segments) > 3 {
+ valid = false
+ } else {
+ for _, seg := range segments {
+ if !validLuaIdent.MatchString(seg) {
+ valid = false
+ break
+ }
+ }
+ }
+ if valid {
+ t.Errorf("should be invalid: %s", tc)
+ }
+ })
+ }
+}