diff --git a/AGENTS.md b/AGENTS.md index 04584d9..4892ec1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,41 @@ # Verstak project rules +## Project quality rule: no MVP shortcuts + +This project is not an investor demo, not a throwaway prototype, and not a “good enough for MVP” product. + +Do not justify known inconsistencies, broken invariants, unsafe behavior, architectural shortcuts, or incomplete data-model operations by calling them “MVP acceptable”. + +If you find a mismatch between logical state and physical state, treat it as a bug unless the project owner explicitly says otherwise. + +For Verstak specifically: + +* Rename must keep logical metadata and filesystem representation consistent, or the design must explicitly document why filenames are stable IDs and not display names. +* Delete must remove or tombstone all related state consistently. +* File paths must never depend on unsafe user input. +* Database state and filesystem state must not silently diverge. +* “Works because the file is not lost” is not enough. +* “Can be fixed later” is not an acceptable reason to leave architectural debt. +* If a feature cannot be completed properly in the current step, stop and report it as incomplete, with a concrete fix plan. + +Use these categories in reports: + +1. Done — implemented and tested. +2. Incomplete — implemented partially, must not be treated as finished. +3. Blocked — cannot continue without a decision. +4. Design decision required — multiple valid approaches exist. +5. Known bug — must be fixed before moving on. + +Forbidden report pattern: + +> This is acceptable for MVP. + +Required replacement: + +> This violates the current project invariants. I either fixed it, or I am reporting it as incomplete and proposing the smallest correct fix. + + + ## Project identity Verstak is a local-first workbench for clients, projects, notes, files, tasks, activity and sync. diff --git a/cmd/verstak-gui/bindings_nodes.go b/cmd/verstak-gui/bindings_nodes.go index 47e06ef..54d2de3 100644 --- a/cmd/verstak-gui/bindings_nodes.go +++ b/cmd/verstak-gui/bindings_nodes.go @@ -10,6 +10,7 @@ import ( "verstak/internal/core/activity" "verstak/internal/core/nodes" syncsvc "verstak/internal/core/sync" + "verstak/internal/core/notes" "verstak/internal/core/templates" "verstak/internal/core/util" ) @@ -173,7 +174,8 @@ func (a *App) CreateNodeFromTemplate(parentID, title, templateID string) (*NodeD } for _, df := range tmpl.DefaultFiles { - fpath := filepath.Join(physPath, df.Path) + // Default files (like Overview.md) go into the Notes/ subfolder + fpath := filepath.Join(physPath, notes.NotesFolder, df.Path) if err := os.MkdirAll(filepath.Dir(fpath), 0o755); err != nil { rollbackChildren() return nil, fmt.Errorf("create directory for %s: %w", df.Path, err) diff --git a/cmd/verstak-gui/bindings_notes.go b/cmd/verstak-gui/bindings_notes.go index ef81a87..9c726d9 100644 --- a/cmd/verstak-gui/bindings_notes.go +++ b/cmd/verstak-gui/bindings_notes.go @@ -67,3 +67,29 @@ func (a *App) SaveNote(noteID, content string) error { } return nil } + +func (a *App) RenameNote(noteID, newTitle string) error { + if err := a.requireVault(); err != nil { + return err + } + return a.notes.Rename(noteID, newTitle) +} + +func (a *App) DeleteNote(noteID string) error { + if err := a.requireVault(); err != nil { + return err + } + // Record activity and sync op before delete (need node info). + n, _ := a.nodes.GetActive(noteID) + pid := "" + if n != nil && n.ParentID != nil { + pid = *n.ParentID + } + title := "" + if n != nil { + title = n.Title + } + _ = a.activity.Record(pid, activity.TargetNote, noteID, "", activity.TypeNoteDeleted, title, "") + _ = a.sync.RecordOp(syncsvc.EntityNote, noteID, syncsvc.OpDelete, nil) + return a.notes.Delete(noteID) +} diff --git a/cmd/verstak-gui/bindings_trash.go b/cmd/verstak-gui/bindings_trash.go index baa460d..bcef658 100644 --- a/cmd/verstak-gui/bindings_trash.go +++ b/cmd/verstak-gui/bindings_trash.go @@ -315,9 +315,19 @@ func (a *App) purgeTrashNode(nodeID string) error { return err } for _, id := range ids { + // Try direct trash entry (folder-type nodes: nodeID_title). if path, err := a.findTrashEntryForNode(id); err == nil { _ = os.RemoveAll(path) } + // Try file record trash entries (file/note nodes: fileID_filename). + // These are created by files.trashRecord and not found by findTrashEntryForNode. + if recs, err := a.files.ListTrashedByNode(id); err == nil { + trashDir := filepath.Join(a.vault, ".verstak", "trash") + for _, r := range recs { + trashPath := filepath.Join(trashDir, r.ID+"_"+r.Filename) + _ = os.RemoveAll(trashPath) + } + } } tx, err := a.db.Begin() if err != nil { diff --git a/cmd/verstak-gui/frontend-dist/assets/main-6mFhgd0M.js b/cmd/verstak-gui/frontend-dist/assets/main-6mFhgd0M.js new file mode 100644 index 0000000..0838c67 --- /dev/null +++ b/cmd/verstak-gui/frontend-dist/assets/main-6mFhgd0M.js @@ -0,0 +1,90 @@ +var Qh=Object.defineProperty;var xh=(n,e,t)=>e in n?Qh(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var et=(n,e,t)=>xh(n,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))l(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&l(i)}).observe(document,{childList:!0,subtree:!0});function t(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function l(s){if(s.ep)return;s.ep=!0;const o=t(s);fetch(s.href,o)}})();function ie(){}function $h(n,e){for(const t in e)n[t]=e[t];return n}function nd(n){return n()}function yr(){return Object.create(null)}function Se(n){n.forEach(nd)}function In(n){return typeof n=="function"}function ut(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let Rs;function jl(n,e){return n===e?!0:(Rs||(Rs=document.createElement("a")),Rs.href=e,n===Rs.href)}function e_(n){return Object.keys(n).length===0}function t_(n,e,t,l){if(n){const s=ld(n,e,t,l);return n[0](s)}}function ld(n,e,t,l){return n[1]&&l?$h(t.ctx.slice(),n[1](l(e))):t.ctx}function n_(n,e,t,l){if(n[2]&&l){const s=n[2](l(t));if(e.dirty===void 0)return s;if(typeof s=="object"){const o=[],i=Math.max(e.dirty.length,s.length);for(let c=0;c32){const e=[],t=n.ctx.length/32;for(let l=0;ln.removeEventListener(e,t,l)}function Xs(n){return function(e){return e.preventDefault(),n.call(this,e)}}function We(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function $t(n){return function(e){e.target===this&&n.call(this,e)}}function r(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Hl(n){return n===""?null:+n}function i_(n){return Array.from(n.childNodes)}function Q(n,e){e=""+e,n.data!==e&&(n.data=e)}function Ie(n,e){n.value=e??""}function Qt(n,e,t,l){t==null?n.style.removeProperty(e):n.style.setProperty(e,t,"")}function Zn(n,e,t){for(let l=0;l{const s=n.$$.callbacks[e];if(s){const o=o_(e,t,{cancelable:l});return s.slice().forEach(i=>{i.call(n,o)}),!o.defaultPrevented}return!0}}function xi(n,e){const t=n.$$.callbacks[e.type];t&&t.slice().forEach(l=>l.call(this,e))}const zl=[],os=[];let Fl=[];const Tr=[],sd=Promise.resolve();let Wi=!1;function id(){Wi||(Wi=!0,sd.then(od))}function r_(){return id(),sd}function bl(n){Fl.push(n)}const Ii=new Set;let Ml=0;function od(){if(Ml!==0)return;const n=is;do{try{for(;Mln.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),Fl=e}const Fs=new Set;let gl;function St(){gl={r:0,c:[],p:gl}}function Ct(){gl.r||Se(gl.c),gl=gl.p}function he(n,e){n&&n.i&&(Fs.delete(n),n.i(e))}function Ee(n,e,t,l){if(n&&n.o){if(Fs.has(n))return;Fs.add(n),gl.c.push(()=>{Fs.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function we(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}function rd(n,e){Ee(n,1,1,()=>{e.delete(n.key)})}function ad(n,e,t,l,s,o,i,c,u,d,m,g){let h=n.length,_=o.length,v=h;const k={};for(;v--;)k[n[v].key]=v;const y=[],E=new Map,C=new Map,A=[];for(v=_;v--;){const R=g(s,o,v),O=t(R);let L=i.get(O);L?A.push(()=>L.p(R,e)):(L=d(O,R),L.c()),E.set(O,y[v]=L),O in k&&C.set(O,Math.abs(v-k[O]))}const N=new Set,I=new Set;function M(R){he(R,1),R.m(c,m),i.set(R.key,R),m=R.first,_--}for(;h&&_;){const R=y[_-1],O=n[h-1],L=R.key,H=O.key;R===O?(m=R.first,h--,_--):E.has(H)?!i.has(L)||N.has(L)?M(R):I.has(H)?h--:C.get(L)>C.get(H)?(I.add(L),M(R)):(N.add(H),h--):(u(O,i),h--)}for(;h--;){const R=n[h];E.has(R.key)||u(R,i)}for(;_;)M(y[_-1]);return Se(A),y}function Qe(n){n&&n.c()}function Xe(n,e,t){const{fragment:l,after_update:s}=n.$$;l&&l.m(e,t),bl(()=>{const o=n.$$.on_mount.map(nd).filter(In);n.$$.on_destroy?n.$$.on_destroy.push(...o):Se(o),n.$$.on_mount=[]}),s.forEach(bl)}function Je(n,e){const t=n.$$;t.fragment!==null&&(c_(t.after_update),Se(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function u_(n,e){n.$$.dirty[0]===-1&&(zl.push(n),id(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const v=_.length?_[0]:h;return d.ctx&&s(d.ctx[g],d.ctx[g]=v)&&(!d.skip_bound&&d.bound[g]&&d.bound[g](v),m&&u_(n,g)),h}):[],d.update(),m=!0,Se(d.before_update),d.fragment=l?l(d.ctx):!1,e.target){if(e.hydrate){const g=i_(e.target);d.fragment&&d.fragment.l(g),g.forEach(T)}else d.fragment&&d.fragment.c();e.intro&&he(n.$$.fragment),Xe(n,e.target,e.anchor),od()}ss(u)}class dt{constructor(){et(this,"$$");et(this,"$$set")}$destroy(){Je(this,1),this.$destroy=ie}$on(e,t){if(!In(t))return ie;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const s=l.indexOf(t);s!==-1&&l.splice(s,1)}}$set(e){this.$$set&&!e_(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const f_="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(f_);function d_(n){let e,t;return{c(){e=re("path"),t=re("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8")},m(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function p_(n){let e,t,l,s,o;return{c(){e=re("path"),t=re("polyline"),l=re("line"),s=re("line"),o=re("polyline"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(s,"x1","16"),r(s,"y1","17"),r(s,"x2","8"),r(s,"y2","17"),r(o,"points","10 9 9 9 8 9")},m(i,c){S(i,e,c),S(i,t,c),S(i,l,c),S(i,s,c),S(i,o,c)},d(i){i&&(T(e),T(t),T(l),T(s),T(o))}}}function m_(n){let e,t;return{c(){e=re("polyline"),t=re("polyline"),r(e,"points","16 18 22 12 16 6"),r(t,"points","8 6 2 12 8 18")},m(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function g_(n){let e,t,l,s;return{c(){e=re("path"),t=re("polyline"),l=re("line"),s=re("rect"),r(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),r(t,"points","7 3 12 8 17 3"),r(l,"x1","3"),r(l,"y1","8"),r(l,"x2","21"),r(l,"y2","8"),r(s,"x","10"),r(s,"y","12"),r(s,"width","4"),r(s,"height","4"),r(s,"rx","1")},m(o,i){S(o,e,i),S(o,t,i),S(o,l,i),S(o,s,i)},d(o){o&&(T(e),T(t),T(l),T(s))}}}function h_(n){let e,t,l,s,o;return{c(){e=re("path"),t=re("polyline"),l=re("line"),s=re("line"),o=re("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","9"),r(l,"y1","12"),r(l,"x2","15"),r(l,"y2","12"),r(s,"x1","9"),r(s,"y1","15"),r(s,"x2","13"),r(s,"y2","15"),r(o,"x1","12"),r(o,"y1","15"),r(o,"x2","12"),r(o,"y2","18")},m(i,c){S(i,e,c),S(i,t,c),S(i,l,c),S(i,s,c),S(i,o,c)},d(i){i&&(T(e),T(t),T(l),T(s),T(o))}}}function __(n){let e,t,l,s,o,i;return{c(){e=re("path"),t=re("polyline"),l=re("line"),s=re("line"),o=re("line"),i=re("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(s,"x1","8"),r(s,"y1","16"),r(s,"x2","16"),r(s,"y2","16"),r(o,"x1","8"),r(o,"y1","14"),r(o,"x2","12"),r(o,"y2","14"),r(i,"x1","12"),r(i,"y1","12"),r(i,"x2","12"),r(i,"y2","18")},m(c,u){S(c,e,u),S(c,t,u),S(c,l,u),S(c,s,u),S(c,o,u),S(c,i,u)},d(c){c&&(T(e),T(t),T(l),T(s),T(o),T(i))}}}function b_(n){let e,t,l,s;return{c(){e=re("path"),t=re("polyline"),l=re("line"),s=re("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(s,"x1","16"),r(s,"y1","17"),r(s,"x2","8"),r(s,"y2","17")},m(o,i){S(o,e,i),S(o,t,i),S(o,l,i),S(o,s,i)},d(o){o&&(T(e),T(t),T(l),T(s))}}}function v_(n){let e,t,l,s,o;return{c(){e=re("path"),t=re("polyline"),l=re("line"),s=re("line"),o=re("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","8"),r(l,"y1","12"),r(l,"x2","16"),r(l,"y2","12"),r(s,"x1","8"),r(s,"y1","16"),r(s,"x2","16"),r(s,"y2","16"),r(o,"x1","8"),r(o,"y1","14"),r(o,"x2","12"),r(o,"y2","14")},m(i,c){S(i,e,c),S(i,t,c),S(i,l,c),S(i,s,c),S(i,o,c)},d(i){i&&(T(e),T(t),T(l),T(s),T(o))}}}function k_(n){let e,t,l;return{c(){e=re("path"),t=re("circle"),l=re("circle"),r(e,"d","M9 18V5l12-2v13"),r(t,"cx","6"),r(t,"cy","18"),r(t,"r","3"),r(l,"cx","18"),r(l,"cy","16"),r(l,"r","3")},m(s,o){S(s,e,o),S(s,t,o),S(s,l,o)},d(s){s&&(T(e),T(t),T(l))}}}function w_(n){let e,t;return{c(){e=re("rect"),t=re("polyline"),r(e,"x","2"),r(e,"y","4"),r(e,"width","20"),r(e,"height","16"),r(e,"rx","2"),r(t,"points","10 9 16 12 10 15 10 9")},m(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function y_(n){let e,t,l;return{c(){e=re("rect"),t=re("circle"),l=re("polyline"),r(e,"x","3"),r(e,"y","3"),r(e,"width","18"),r(e,"height","18"),r(e,"rx","2"),r(e,"ry","2"),r(t,"cx","8.5"),r(t,"cy","8.5"),r(t,"r","1.5"),r(l,"points","21 15 16 10 5 21")},m(s,o){S(s,e,o),S(s,t,o),S(s,l,o)},d(s){s&&(T(e),T(t),T(l))}}}function E_(n){let e;return{c(){e=re("path"),r(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,l){S(t,e,l)},d(t){t&&T(e)}}}function T_(n){let e;function t(o,i){return o[0]==="folder"?E_:o[0]==="image"?y_:o[0]==="video"?w_:o[0]==="audio"?k_:o[0]==="pdf"?v_:o[0]==="document"?b_:o[0]==="spreadsheet"?__:o[0]==="presentation"?h_:o[0]==="archive"?g_:o[0]==="code"?m_:o[0]==="text"?p_:d_}let l=t(n),s=l(n);return{c(){e=re("svg"),s.c(),r(e,"width",n[1]),r(e,"height",n[1]),r(e,"viewBox","0 0 24 24"),r(e,"fill","none"),r(e,"stroke","currentColor"),r(e,"stroke-width","1.5"),r(e,"stroke-linecap","round"),r(e,"stroke-linejoin","round"),r(e,"xmlns","http://www.w3.org/2000/svg")},m(o,i){S(o,e,i),s.m(e,null)},p(o,[i]){l!==(l=t(o))&&(s.d(1),s=l(o),s&&(s.c(),s.m(e,null))),i&2&&r(e,"width",o[1]),i&2&&r(e,"height",o[1])},i:ie,o:ie,d(o){o&&T(e),s.d()}}}function S_(n,e,t){let{kind:l="generic"}=e,{size:s=20}=e;return n.$$set=o=>{"kind"in o&&t(0,l=o.kind),"size"in o&&t(1,s=o.size)},[l,s]}class cd extends dt{constructor(e){super(),ft(this,e,S_,T_,ut,{kind:0,size:1})}}const C_={"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":"Закрыть","note.mode.edit":"Редактор","note.mode.preview":"Просмотр","note.mode.split":"Разделённый","note.toolbar.bold":"Жирный (Ctrl+B)","note.toolbar.italic":"Курсив (Ctrl+I)","note.toolbar.heading":"Заголовок","note.toolbar.link":"Ссылка","note.toolbar.code":"Код","note.toolbar.codeBlock":"Блок кода","note.toolbar.bulletList":"Маркированный список","note.toolbar.numberedList":"Нумерованный список","note.toolbar.checkbox":"Чекбокс","note.toolbar.quote":"Цитата","note.toolbar.internalLink":"Внутренняя ссылка Verstak","note.internal.secretNotImplemented":"Сейф доступов ещё не реализован","note.internal.caseNotImplemented":"Переход к делу ещё не реализован","note.internal.noteNotImplemented":"Переход к заметке ещё не реализован","note.internal.fileNotImplemented":"Переход к файлу ещё не реализован","note.rename":"Переименовать заметку","note.deleteConfirm":"Удалить заметку «{title}»?","note.renameError":"Не удалось переименовать заметку","note.internalLink.title":"Вставить внутреннюю ссылку","note.internalLink.label":"Текст ссылки","note.internalLink.url":"Адрес ссылки","note.internalLink.labelPlaceholder":"Например: Админка","note.internalLink.urlPlaceholder":"verstak://secret/sec_...","note.preview.empty":"Пустая заметка. Переключитесь в режим редактора, чтобы начать писать.","note.preview.error":"Ошибка рендеринга markdown","link.label":"Текст ссылки","link.url":"URL или verstak:// ссылка","link.urlPlaceholder":"https://... или verstak://secret/sec_...","link.insert":"Вставить","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":"Срок действия токена истёк"},A_={"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","note.mode.edit":"Edit","note.mode.preview":"Preview","note.mode.split":"Split","note.toolbar.bold":"Bold (Ctrl+B)","note.toolbar.italic":"Italic (Ctrl+I)","note.toolbar.heading":"Heading","note.toolbar.link":"Link","note.toolbar.code":"Code","note.toolbar.codeBlock":"Code block","note.toolbar.bulletList":"Bullet list","note.toolbar.numberedList":"Numbered list","note.toolbar.checkbox":"Checkbox","note.toolbar.quote":"Quote","note.toolbar.internalLink":"Verstak internal link","note.internal.secretNotImplemented":"Secrets vault is not yet implemented","note.internal.caseNotImplemented":"Case navigation is not yet implemented","note.internal.noteNotImplemented":"Note navigation is not yet implemented","note.internal.fileNotImplemented":"File navigation is not yet implemented","note.rename":"Rename note","note.deleteConfirm":'Delete note "{title}"?',"note.renameError":"Failed to rename note","note.internalLink.title":"Insert internal link","note.internalLink.label":"Link text","note.internalLink.url":"Link address","note.internalLink.labelPlaceholder":"e.g. Admin panel","note.internalLink.urlPlaceholder":"verstak://secret/sec_...","note.preview.empty":"Empty note. Switch to edit mode to start writing.","note.preview.error":"Markdown render error","link.label":"Link text","link.url":"URL or verstak:// link","link.urlPlaceholder":"https://... or verstak://secret/sec_...","link.insert":"Insert","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"},Sr={ru:C_,en:A_};let Cr="ru";function b(n,e){var s;const t=Sr[Cr];let l=t==null?void 0:t[n];if(l==null&&Cr!=="ru"&&(l=(s=Sr.ru)==null?void 0:s[n]),l==null&&(l=n),e!=null)for(const[o,i]of Object.entries(e))l=l.replace(`{${o}}`,String(i));return l}function Hs(n){if(n==null||n<0)return"—";if(n===0)return"0 B";const e=["B","KB","MB","GB"],t=Math.min(Math.floor(Math.log(n)/Math.log(1024)),e.length-1),l=n/Math.pow(1024,t);return(t===0?l.toFixed(0):l.toFixed(1))+" "+e[t]}const Gi={"image/jpeg":b("mime.jpeg"),"image/png":b("mime.png"),"image/gif":b("mime.gif"),"image/webp":b("mime.webp"),"image/svg+xml":b("mime.svg"),"image/bmp":b("mime.bmp"),"image/tiff":b("mime.tiff"),"image/avif":b("mime.avif"),"application/pdf":b("mime.pdf"),"application/msword":b("mime.word"),"application/vnd.openxmlformats-officedocument.wordprocessingml.document":b("mime.word"),"application/vnd.ms-excel":b("mime.excel"),"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":b("mime.excel"),"application/vnd.ms-powerpoint":b("mime.ppt"),"application/vnd.openxmlformats-officedocument.presentationml.presentation":b("mime.ppt"),"application/zip":b("mime.zip"),"application/gzip":b("mime.gzip"),"application/x-tar":b("mime.tar"),"application/x-7z-compressed":b("mime.sevenz"),"application/x-rar-compressed":b("mime.rar"),"text/plain":b("mime.text"),"text/html":b("mime.html"),"text/css":b("mime.css"),"text/javascript":b("mime.js"),"application/json":b("mime.json"),"application/xml":b("mime.xml"),"application/x-yaml":b("mime.yaml"),"application/octet-stream":b("mime.binary"),"application/x-msdos-program":b("mime.executable"),"inode/directory":b("mime.folder")};function Ar(n){return n?Gi[n]||n:b("mime.unknown")}function N_(n){if(n.type==="folder")return b("mime.folder");const e=(n.mime||"").toLowerCase();if(Gi[e])return Gi[e];const l=(n.name||"").toLowerCase().split(".").pop();return l?l.toUpperCase():b("mime.file")}function ud(n){if(n.type==="folder")return"folder";const e=(n.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 l=(n.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(l)?"code":"generic"}const fd=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],dd=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],pd=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],md=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function Mi(n){if(n.type==="folder")return!1;const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return!!(fd.includes(e)||md.includes(l)||e.includes("pdf")||dd.includes(e)||pd.includes(l))}function gd(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return fd.includes(e)||md.includes(l)}function hd(n){const e=(n.mime||"").toLowerCase(),l=(n.name||"").toLowerCase().split(".").pop();return dd.includes(e)||pd.includes(l)&&l!=="md"&&l!=="markdown"}function _d(n){return(n.mime||"").toLowerCase().includes("pdf")}function bd(n){const e=(n.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function R_(n){return gd(n)||_d(n)}function I_(n){return hd(n)||bd(n)}const{window:M_}=Ji;function L_(n){let e,t,l,s=Hs(n[0].size)+"",o;return{c(){e=f("span"),e.textContent="·",t=w(),l=f("span"),o=F(s),r(e,"class","meta-sep svelte-1skuef2")},m(i,c){S(i,e,c),S(i,t,c),S(i,l,c),a(l,o)},p(i,c){c[0]&1&&s!==(s=Hs(i[0].size)+"")&&Q(o,s)},d(i){i&&(T(e),T(t),T(l))}}}function O_(n){let e,t,l,s,o;return{c(){e=f("button"),e.innerHTML='',t=w(),l=f("button"),l.innerHTML='',r(e,"class","action-btn svelte-1skuef2"),r(e,"title",b("file.openFolder")),r(e,"aria-label",b("file.openFolder")),r(l,"class","action-btn svelte-1skuef2"),r(l,"title",b("file.showInExplorer")),r(l,"aria-label",b("file.showInExplorer"))},m(i,c){S(i,e,c),S(i,t,c),S(i,l,c),s||(o=[D(e,"click",We(n[30])),D(l,"click",We(n[11]))],s=!0)},p:ie,d(i){i&&(T(e),T(t),T(l)),s=!1,Se(o)}}}function D_(n){let e,t,l,s,o,i,c;return{c(){e=f("button"),e.innerHTML='',t=w(),l=f("button"),l.innerHTML='',s=w(),o=f("button"),o.innerHTML='',r(e,"class","action-btn svelte-1skuef2"),r(e,"title",b("file.preview")),r(e,"aria-label",b("file.preview")),r(l,"class","action-btn svelte-1skuef2"),r(l,"title",b("file.openExternal")),r(l,"aria-label",b("file.openExternal")),r(o,"class","action-btn svelte-1skuef2"),r(o,"title",b("file.showInExplorer")),r(o,"aria-label",b("file.showInExplorer"))},m(u,d){S(u,e,d),S(u,t,d),S(u,l,d),S(u,s,d),S(u,o,d),i||(c=[D(e,"click",We(n[29])),D(l,"click",We(n[10])),D(o,"click",We(n[11]))],i=!0)},p:ie,d(u){u&&(T(e),T(t),T(l),T(s),T(o)),i=!1,Se(c)}}}function Nr(n){let e,t,l,s,o,i,c,u,d=b("common.open")+"",m,g,h,_,v,k,y,E,C=b("file.openExternal")+"",A,N,I,M,R,O,L=b("file.showInExplorer")+"",H,W,U,K,Z,X,G,P,j,B=b("common.rename")+"",J,q,Y,$,ne,te,pe,Te=b("common.duplicate")+"",Fe,qe,Ne,ee,oe,Ce,je,_e,Ue,pt=b("common.cut")+"",be,lt,Me,Re,Pe,He,De,ze=b("common.copy")+"",ue,ye,x,ge,de,Ae,it,ot,Ye,vt=b("common.delete")+"",Ke,Ge,st;return{c(){e=f("div"),t=w(),l=f("div"),s=f("button"),o=re("svg"),i=re("path"),c=re("circle"),u=w(),m=F(d),g=w(),h=f("button"),_=re("svg"),v=re("path"),k=re("polyline"),y=re("line"),E=w(),A=F(C),N=w(),I=f("button"),M=re("svg"),R=re("path"),O=w(),H=F(L),W=w(),U=f("div"),K=w(),Z=f("button"),X=re("svg"),G=re("path"),P=re("path"),j=w(),J=F(B),q=w(),Y=f("button"),$=re("svg"),ne=re("rect"),te=re("path"),pe=w(),Fe=F(Te),qe=w(),Ne=f("button"),ee=re("svg"),oe=re("circle"),Ce=re("circle"),je=re("line"),_e=re("line"),Ue=w(),be=F(pt),lt=w(),Me=f("button"),Re=re("svg"),Pe=re("rect"),He=re("path"),De=w(),ue=F(ze),ye=w(),x=f("div"),ge=w(),de=f("button"),Ae=re("svg"),it=re("polyline"),ot=re("path"),Ye=w(),Ke=F(vt),r(e,"class","menu-backdrop svelte-1skuef2"),r(e,"role","presentation"),r(i,"d","M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"),r(c,"cx","12"),r(c,"cy","12"),r(c,"r","3"),r(o,"width","14"),r(o,"height","14"),r(o,"viewBox","0 0 24 24"),r(o,"fill","none"),r(o,"stroke","currentColor"),r(o,"stroke-width","2"),r(o,"stroke-linecap","round"),r(o,"stroke-linejoin","round"),r(s,"class","menu-item svelte-1skuef2"),r(s,"role","menuitem"),r(v,"d","M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"),r(k,"points","15 3 21 3 21 9"),r(y,"x1","10"),r(y,"y1","14"),r(y,"x2","21"),r(y,"y2","3"),r(_,"width","14"),r(_,"height","14"),r(_,"viewBox","0 0 24 24"),r(_,"fill","none"),r(_,"stroke","currentColor"),r(_,"stroke-width","2"),r(_,"stroke-linecap","round"),r(_,"stroke-linejoin","round"),r(h,"class","menu-item svelte-1skuef2"),r(h,"role","menuitem"),r(R,"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"),r(M,"width","14"),r(M,"height","14"),r(M,"viewBox","0 0 24 24"),r(M,"fill","none"),r(M,"stroke","currentColor"),r(M,"stroke-width","2"),r(M,"stroke-linecap","round"),r(M,"stroke-linejoin","round"),r(I,"class","menu-item svelte-1skuef2"),r(I,"role","menuitem"),r(U,"class","menu-sep svelte-1skuef2"),r(G,"d","M12 20h9"),r(P,"d","M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"),r(X,"width","14"),r(X,"height","14"),r(X,"viewBox","0 0 24 24"),r(X,"fill","none"),r(X,"stroke","currentColor"),r(X,"stroke-width","2"),r(X,"stroke-linecap","round"),r(X,"stroke-linejoin","round"),r(Z,"class","menu-item svelte-1skuef2"),r(Z,"role","menuitem"),r(ne,"x","9"),r(ne,"y","9"),r(ne,"width","13"),r(ne,"height","13"),r(ne,"rx","2"),r(ne,"ry","2"),r(te,"d","M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"),r($,"width","14"),r($,"height","14"),r($,"viewBox","0 0 24 24"),r($,"fill","none"),r($,"stroke","currentColor"),r($,"stroke-width","2"),r($,"stroke-linecap","round"),r($,"stroke-linejoin","round"),r(Y,"class","menu-item svelte-1skuef2"),r(Y,"role","menuitem"),r(oe,"cx","6"),r(oe,"cy","6"),r(oe,"r","3"),r(Ce,"cx","6"),r(Ce,"cy","18"),r(Ce,"r","3"),r(je,"x1","20"),r(je,"y1","4"),r(je,"x2","8.12"),r(je,"y2","15.88"),r(_e,"x1","8.12"),r(_e,"y1","8.12"),r(_e,"x2","20"),r(_e,"y2","20"),r(ee,"width","14"),r(ee,"height","14"),r(ee,"viewBox","0 0 24 24"),r(ee,"fill","none"),r(ee,"stroke","currentColor"),r(ee,"stroke-width","2"),r(ee,"stroke-linecap","round"),r(ee,"stroke-linejoin","round"),r(Ne,"class","menu-item svelte-1skuef2"),r(Ne,"role","menuitem"),r(Pe,"x","9"),r(Pe,"y","9"),r(Pe,"width","13"),r(Pe,"height","13"),r(Pe,"rx","2"),r(Pe,"ry","2"),r(He,"d","M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"),r(Re,"width","14"),r(Re,"height","14"),r(Re,"viewBox","0 0 24 24"),r(Re,"fill","none"),r(Re,"stroke","currentColor"),r(Re,"stroke-width","2"),r(Re,"stroke-linecap","round"),r(Re,"stroke-linejoin","round"),r(Me,"class","menu-item svelte-1skuef2"),r(Me,"role","menuitem"),r(x,"class","menu-sep svelte-1skuef2"),r(it,"points","3 6 5 6 21 6"),r(ot,"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"),r(Ae,"width","14"),r(Ae,"height","14"),r(Ae,"viewBox","0 0 24 24"),r(Ae,"fill","none"),r(Ae,"stroke","currentColor"),r(Ae,"stroke-width","2"),r(Ae,"stroke-linecap","round"),r(Ae,"stroke-linejoin","round"),r(de,"class","menu-item menu-item-danger svelte-1skuef2"),r(de,"role","menuitem"),r(l,"class","menu svelte-1skuef2"),Qt(l,"left",n[3]+"px"),Qt(l,"top",n[4]+"px"),Qt(l,"position","fixed"),r(l,"role","menu"),r(l,"tabindex","-1")},m(fe,Le){S(fe,e,Le),S(fe,t,Le),S(fe,l,Le),a(l,s),a(s,o),a(o,i),a(o,c),a(s,u),a(s,m),a(l,g),a(l,h),a(h,_),a(_,v),a(_,k),a(_,y),a(h,E),a(h,A),a(l,N),a(l,I),a(I,M),a(M,R),a(I,O),a(I,H),a(l,W),a(l,U),a(l,K),a(l,Z),a(Z,X),a(X,G),a(X,P),a(Z,j),a(Z,J),a(l,q),a(l,Y),a(Y,$),a($,ne),a($,te),a(Y,pe),a(Y,Fe),a(l,qe),a(l,Ne),a(Ne,ee),a(ee,oe),a(ee,Ce),a(ee,je),a(ee,_e),a(Ne,Ue),a(Ne,be),a(l,lt),a(l,Me),a(Me,Re),a(Re,Pe),a(Re,He),a(Me,De),a(Me,ue),a(l,ye),a(l,x),a(l,ge),a(l,de),a(de,Ae),a(Ae,it),a(Ae,ot),a(de,Ye),a(de,Ke),Ge||(st=[D(e,"click",We(n[19])),D(s,"click",n[17]),D(h,"click",n[10]),D(I,"click",n[11]),D(Z,"click",n[13]),D(Y,"click",n[14]),D(Ne,"click",n[15]),D(Me,"click",n[16]),D(de,"click",n[12]),D(l,"click",We(n[28])),D(l,"keydown",n[31])],Ge=!0)},p(fe,Le){Le[0]&8&&Qt(l,"left",fe[3]+"px"),Le[0]&16&&Qt(l,"top",fe[4]+"px")},d(fe){fe&&(T(e),T(t),T(l)),Ge=!1,Se(st)}}}function P_(n){let e,t,l,s,o,i,c=n[0].name+"",u,d,m,g,h,_,v,k,y,E,C,A,N,I,M,R,O,L,H,W,U,K;l=new cd({props:{kind:n[6],size:22}});let Z=!n[7]&&L_(n);function X(B,J){return B[7]?O_:D_}let P=X(n)(n),j=n[2]&&Nr(n);return{c(){e=f("div"),t=f("div"),Qe(l.$$.fragment),s=w(),o=f("div"),i=f("div"),u=F(c),m=w(),g=f("div"),h=f("span"),h.textContent=`${n[8]}`,_=w(),Z&&Z.c(),v=w(),k=f("div"),P.c(),y=w(),E=f("button"),C=re("svg"),A=re("circle"),N=re("circle"),I=re("circle"),M=w(),R=f("button"),R.innerHTML='',L=w(),j&&j.c(),H=wt(),r(t,"class","file-row-icon svelte-1skuef2"),r(i,"class","file-row-name svelte-1skuef2"),r(i,"title",d=n[0].name),r(g,"class","file-row-meta svelte-1skuef2"),r(o,"class","file-row-body svelte-1skuef2"),r(A,"cx","12"),r(A,"cy","5"),r(A,"r","2"),r(N,"cx","12"),r(N,"cy","12"),r(N,"r","2"),r(I,"cx","12"),r(I,"cy","19"),r(I,"r","2"),r(C,"width","16"),r(C,"height","16"),r(C,"viewBox","0 0 24 24"),r(C,"fill","currentColor"),r(E,"class","action-btn svelte-1skuef2"),r(E,"title",b("file.more")),r(E,"aria-label",b("file.more")),r(E,"aria-expanded",n[2]),r(R,"class","action-btn action-btn-danger svelte-1skuef2"),r(R,"title",b("common.delete")),r(R,"aria-label",b("common.delete")),r(k,"class","file-row-actions svelte-1skuef2"),r(e,"class","file-row svelte-1skuef2"),r(e,"role","button"),r(e,"tabindex","0"),r(e,"draggable","true"),r(e,"aria-label",O=n[7]?b("file.ariaFolder")+" "+n[0].name:b("file.ariaFile")+" "+n[0].name),ce(e,"file-row--selected",n[1])},m(B,J){S(B,e,J),a(e,t),Xe(l,t,null),a(e,s),a(e,o),a(o,i),a(i,u),a(o,m),a(o,g),a(g,h),a(g,_),Z&&Z.m(g,null),a(e,v),a(e,k),P.m(k,null),a(k,y),a(k,E),a(E,C),a(C,A),a(C,N),a(C,I),a(k,M),a(k,R),S(B,L,J),j&&j.m(B,J),S(B,H,J),W=!0,U||(K=[D(M_,"click",n[19]),D(E,"click",We(n[18])),D(R,"click",We(n[12])),D(e,"click",n[9]),D(e,"keydown",n[24]),D(e,"contextmenu",n[23]),D(e,"dragstart",n[20]),D(e,"dragover",n[21]),D(e,"drop",n[22])],U=!0)},p(B,J){(!W||J[0]&1)&&c!==(c=B[0].name+"")&&Q(u,c),(!W||J[0]&1&&d!==(d=B[0].name))&&r(i,"title",d),B[7]||Z.p(B,J),P.p(B,J),(!W||J[0]&4)&&r(E,"aria-expanded",B[2]),(!W||J[0]&1&&O!==(O=B[7]?b("file.ariaFolder")+" "+B[0].name:b("file.ariaFile")+" "+B[0].name))&&r(e,"aria-label",O),(!W||J[0]&2)&&ce(e,"file-row--selected",B[1]),B[2]?j?j.p(B,J):(j=Nr(B),j.c(),j.m(H.parentNode,H)):j&&(j.d(1),j=null)},i(B){W||(he(l.$$.fragment,B),W=!0)},o(B){Ee(l.$$.fragment,B),W=!1},d(B){B&&(T(e),T(L),T(H)),Je(l),Z&&Z.d(),P.d(),j&&j.d(B),U=!1,Se(K)}}}function z_(n,e,t){let{item:l}=e,{selected:s=!1}=e,{onDragStart:o}=e,{onDragOver:i}=e,{onDrop:c}=e;const u=kl(),d=ud(l),m=l.type==="folder",g=N_(l);let h=!1,_=0,v=0,k=null;function y(J){J.ctrlKey||J.metaKey?u("toggleSelect",l.id):J.shiftKey?u("rangeSelect",l.id):k?(clearTimeout(k),k=null,m?u("navigate",l.id):u("preview",l)):k=setTimeout(()=>{k=null,u("selectOne",l.id)},250)}function E(){u("openExternal",l.fileId)}function C(){t(2,h=!1),u("showInFolder",l.nodeId||l.id)}function A(){t(2,h=!1),u("delete",{id:l.id,type:l.type})}function N(){t(2,h=!1),u("rename",{id:l.id,name:l.name})}function I(){t(2,h=!1),u("duplicate",l.id)}function M(){t(2,h=!1),u("cut",l.id)}function R(){t(2,h=!1),u("copy",l.id)}function O(){t(2,h=!1),m?u("navigate",l.id):u("preview",l)}function L(){t(2,h=!h)}function H(){t(2,h=!1)}function W(J){o&&o(J,l.id)}function U(J){i&&m&&i(J,l.id)}function K(J){c&&m&&c(J,l.id)}function Z(J){J.preventDefault(),t(3,_=Math.min(J.clientX,window.innerWidth-240)),t(4,v=Math.min(J.clientY,window.innerHeight-320)),t(2,h=!0)}function X(J){(J.key==="Enter"||J.key===" ")&&(J.preventDefault(),y(J))}function G(J){xi.call(this,n,J)}const P=()=>u("preview",l),j=()=>u("navigate",l.id),B=J=>{J.key==="Escape"&&(J.stopPropagation(),H())};return n.$$set=J=>{"item"in J&&t(0,l=J.item),"selected"in J&&t(1,s=J.selected),"onDragStart"in J&&t(25,o=J.onDragStart),"onDragOver"in J&&t(26,i=J.onDragOver),"onDrop"in J&&t(27,c=J.onDrop)},[l,s,h,_,v,u,d,m,g,y,E,C,A,N,I,M,R,O,L,H,W,U,K,Z,X,o,i,c,G,P,j,B]}class B_ extends dt{constructor(e){super(),ft(this,e,z_,P_,ut,{item:0,selected:1,onDragStart:25,onDragOver:26,onDrop:27},null,[-1,-1])}}function Rr(n,e,t){const l=n.slice();return l[4]=e[t],l[6]=t,l}function F_(n){let e;return{c(){e=f("span"),e.textContent="/",r(e,"class","sep svelte-csi2lb")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function j_(n){let e,t=n[4].name+"",l,s,o;function i(){return n[2](n[6])}return{c(){e=f("button"),l=F(t),r(e,"class","crumb crumb--link svelte-csi2lb")},m(c,u){S(c,e,u),a(e,l),s||(o=D(e,"click",i),s=!0)},p(c,u){n=c,u&1&&t!==(t=n[4].name+"")&&Q(l,t)},d(c){c&&T(e),s=!1,o()}}}function U_(n){let e,t=n[4].name+"",l;return{c(){e=f("span"),l=F(t),r(e,"class","crumb crumb--current svelte-csi2lb")},m(s,o){S(s,e,o),a(e,l)},p(s,o){o&1&&t!==(t=s[4].name+"")&&Q(l,t)},d(s){s&&T(e)}}}function Ir(n){let e,t,l=n[6]>0&&F_();function s(c,u){return c[6]===c[0].length-1?U_:j_}let o=s(n),i=o(n);return{c(){l&&l.c(),e=w(),i.c(),t=wt()},m(c,u){l&&l.m(c,u),S(c,e,u),i.m(c,u),S(c,t,u)},p(c,u){o===(o=s(c))&&i?i.p(c,u):(i.d(1),i=o(c),i&&(i.c(),i.m(t.parentNode,t)))},d(c){c&&(T(e),T(t)),l&&l.d(c),i.d(c)}}}function H_(n){let e,t=we(n[0]),l=[];for(let s=0;so(c);return n.$$set=c=>{"crumbs"in c&&t(0,l=c.crumbs)},[l,o,i]}class vd extends dt{constructor(e){super(),ft(this,e,W_,H_,ut,{crumbs:0})}}function G_(n){let e,t,l,s,o,i;return{c(){e=f("div"),t=f("p"),t.textContent=`${b("file.previewUnavailable")}`,l=w(),s=f("button"),s.textContent=`${b("file.openExternal")}`,r(s,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),o||(i=D(s,"click",n[9]),o=!0)},p:ie,d(c){c&&T(e),o=!1,i()}}}function K_(n){let e,t;function l(i,c){return c&2&&(e=null),e==null&&(e=!!(i[1]&&i[1].startsWith("data:"))),e?J_:X_}let s=l(n,-1),o=s(n);return{c(){o.c(),t=wt()},m(i,c){o.m(i,c),S(i,t,c)},p(i,c){s===(s=l(i,c))&&o?o.p(i,c):(o.d(1),o=s(i),o&&(o.c(),o.m(t.parentNode,t)))},d(i){i&&T(t),o.d(i)}}}function V_(n){let e,t,l;return{c(){e=f("pre"),t=f("code"),l=F(n[1]),r(e,"class","preview-text svelte-1cw3u0m")},m(s,o){S(s,e,o),a(e,t),a(t,l)},p(s,o){o&2&&Q(l,s[1])},d(s){s&&T(e)}}}function q_(n){let e,t,l,s;return{c(){e=f("div"),t=f("img"),jl(t.src,l=n[1])||r(t,"src",l),r(t,"alt",s=n[0].name),r(t,"class","preview-image svelte-1cw3u0m"),r(e,"class","preview-image-container svelte-1cw3u0m")},m(o,i){S(o,e,i),a(e,t)},p(o,i){i&2&&!jl(t.src,l=o[1])&&r(t,"src",l),i&1&&s!==(s=o[0].name)&&r(t,"alt",s)},d(o){o&&T(e)}}}function Z_(n){let e,t,l,s,o,i,c;return{c(){e=f("div"),t=f("p"),l=F(n[3]),s=w(),o=f("button"),o.textContent=`${b("file.openExternal")}`,r(o,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(u,d){S(u,e,d),a(e,t),a(t,l),a(e,s),a(e,o),i||(c=D(o,"click",n[9]),i=!0)},p(u,d){d&8&&Q(l,u[3])},d(u){u&&T(e),i=!1,c()}}}function Y_(n){let e,t;return{c(){e=f("div"),t=f("p"),t.textContent=`${b("common.loading")}`,r(e,"class","preview-status svelte-1cw3u0m")},m(l,s){S(l,e,s),a(e,t)},p:ie,d(l){l&&T(e)}}}function X_(n){let e,t,l,s,o,i;return{c(){e=f("div"),t=f("p"),t.textContent=`${b("file.pdfUnavailable")}`,l=w(),s=f("button"),s.textContent=`${b("file.openExternal")}`,r(s,"class","btn btn-sm svelte-1cw3u0m"),r(e,"class","preview-status svelte-1cw3u0m")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),o||(i=D(s,"click",n[9]),o=!0)},p:ie,d(c){c&&T(e),o=!1,i()}}}function J_(n){let e,t,l;return{c(){e=f("div"),t=f("embed"),jl(t.src,l=n[1])||r(t,"src",l),r(t,"type","application/pdf"),r(t,"class","preview-pdf svelte-1cw3u0m"),r(e,"class","preview-pdf-container svelte-1cw3u0m")},m(s,o){S(s,e,o),a(e,t)},p(s,o){o&2&&!jl(t.src,l=s[1])&&r(t,"src",l)},d(s){s&&T(e)}}}function Q_(n){let e,t,l,s,o,i,c,u=n[0].name+"",d,m,g,h,_=Hs(n[0].size)+"",v,k,y=Ar(n[0].mime)+"",E,C,A,N,I,M,R,O,L,H,W;o=new cd({props:{kind:n[8],size:18}});function U(X,G){return X[2]?Y_:X[3]?Z_:X[6]&&X[1]?q_:X[5]&&X[1]?V_:X[4]?K_:G_}let K=U(n),Z=K(n);return{c(){e=f("div"),t=f("div"),l=f("header"),s=f("div"),Qe(o.$$.fragment),i=w(),c=f("span"),d=F(u),g=w(),h=f("div"),v=F(_),k=F(" · "),E=F(y),C=w(),A=f("div"),N=f("button"),N.innerHTML='',I=w(),M=f("button"),M.innerHTML='',R=w(),O=f("div"),Z.c(),r(c,"class","preview-name svelte-1cw3u0m"),r(c,"title",m=n[0].name),r(s,"class","preview-title svelte-1cw3u0m"),r(h,"class","preview-meta svelte-1cw3u0m"),r(N,"class","action-btn svelte-1cw3u0m"),r(N,"title",b("file.openExternal")),r(N,"aria-label",b("file.openExternal")),r(M,"class","action-btn action-btn-close svelte-1cw3u0m"),r(M,"title","Close"),r(M,"aria-label","Close preview"),r(A,"class","preview-actions svelte-1cw3u0m"),r(l,"class","preview-header svelte-1cw3u0m"),r(O,"class","preview-body svelte-1cw3u0m"),r(t,"class","modal svelte-1cw3u0m"),r(e,"class","overlay svelte-1cw3u0m"),r(e,"role","presentation")},m(X,G){S(X,e,G),a(e,t),a(t,l),a(l,s),Xe(o,s,null),a(s,i),a(s,c),a(c,d),a(l,g),a(l,h),a(h,v),a(h,k),a(h,E),a(l,C),a(l,A),a(A,N),a(A,I),a(A,M),a(t,R),a(t,O),Z.m(O,null),L=!0,H||(W=[D(N,"click",n[9]),D(M,"click",n[10]),D(e,"click",$t(n[11])),D(e,"keydown",n[12])],H=!0)},p(X,[G]){(!L||G&1)&&u!==(u=X[0].name+"")&&Q(d,u),(!L||G&1&&m!==(m=X[0].name))&&r(c,"title",m),(!L||G&1)&&_!==(_=Hs(X[0].size)+"")&&Q(v,_),(!L||G&1)&&y!==(y=Ar(X[0].mime)+"")&&Q(E,y),K===(K=U(X))&&Z?Z.p(X,G):(Z.d(1),Z=K(X),Z&&(Z.c(),Z.m(O,null)))},i(X){L||(he(o.$$.fragment,X),L=!0)},o(X){Ee(o.$$.fragment,X),L=!1},d(X){X&&T(e),Je(o),Z.d(),H=!1,Se(W)}}}function x_(n,e,t){let l,s,o,{item:i}=e,{content:c=""}=e,{loading:u=!1}=e,{error:d=""}=e;const m=kl(),g=ud(i);function h(E){E.key==="Escape"&&m("close")}function _(){m("openExternal",i.fileId)}us(()=>{window.addEventListener("keydown",h)}),fs(()=>{window.removeEventListener("keydown",h)});const v=()=>m("close"),k=()=>m("close"),y=E=>{E.key==="Escape"&&(E.preventDefault(),m("close"))};return n.$$set=E=>{"item"in E&&t(0,i=E.item),"content"in E&&t(1,c=E.content),"loading"in E&&t(2,u=E.loading),"error"in E&&t(3,d=E.error)},n.$$.update=()=>{n.$$.dirty&3&&t(6,l=gd(i)&&c&&c.startsWith("data:")),n.$$.dirty&1&&t(5,s=hd(i)||bd(i)),n.$$.dirty&1&&t(4,o=_d(i))},[i,c,u,d,o,s,l,m,g,_,v,k,y]}class $_ extends dt{constructor(e){super(),ft(this,e,x_,Q_,ut,{item:0,content:1,loading:2,error:3})}}function eb(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y,E;return{c(){e=f("div"),t=f("div"),l=f("h3"),s=F(n[0]),o=w(),i=f("p"),c=F(n[1]),u=w(),d=f("div"),m=f("button"),g=F(n[2]),_=w(),v=f("button"),k=F(n[3]),r(l,"class","svelte-1fv6yyk"),r(i,"class","message svelte-1fv6yyk"),r(m,"class",h="btn "+(n[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk"),r(v,"class","btn svelte-1fv6yyk"),r(d,"class","actions svelte-1fv6yyk"),r(t,"class","modal svelte-1fv6yyk"),r(e,"class","overlay svelte-1fv6yyk"),r(e,"role","presentation")},m(C,A){S(C,e,A),a(e,t),a(t,l),a(l,s),a(t,o),a(t,i),a(i,c),a(t,u),a(t,d),a(d,m),a(m,g),a(d,_),a(d,v),a(v,k),y||(E=[D(m,"click",n[6]),D(v,"click",n[7]),D(e,"click",$t(n[8])),D(e,"keydown",n[9])],y=!0)},p(C,[A]){A&1&&Q(s,C[0]),A&2&&Q(c,C[1]),A&4&&Q(g,C[2]),A&16&&h!==(h="btn "+(C[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk")&&r(m,"class",h),A&8&&Q(k,C[3])},i:ie,o:ie,d(C){C&&T(e),y=!1,Se(E)}}}function tb(n,e,t){let{title:l=b("common.confirm")}=e,{message:s=""}=e,{confirmText:o=b("common.delete")}=e,{cancelText:i=b("common.cancel")}=e,{danger:c=!1}=e;const u=kl(),d=()=>u("confirm"),m=()=>u("cancel"),g=()=>u("cancel"),h=_=>{_.key==="Escape"&&(_.preventDefault(),u("cancel"))};return n.$$set=_=>{"title"in _&&t(0,l=_.title),"message"in _&&t(1,s=_.message),"confirmText"in _&&t(2,o=_.confirmText),"cancelText"in _&&t(3,i=_.cancelText),"danger"in _&&t(4,c=_.danger)},[l,s,o,i,c,u,d,m,g,h]}class nb extends dt{constructor(e){super(),ft(this,e,tb,eb,ut,{title:0,message:1,confirmText:2,cancelText:3,danger:4})}}function lb(n){let e,t,l;return{c(){e=re("circle"),t=re("line"),l=re("line"),r(e,"cx","12"),r(e,"cy","12"),r(e,"r","10"),r(t,"x1","12"),r(t,"y1","16"),r(t,"x2","12"),r(t,"y2","12"),r(l,"x1","12"),r(l,"y1","8"),r(l,"x2","12.01"),r(l,"y2","8")},m(s,o){S(s,e,o),S(s,t,o),S(s,l,o)},d(s){s&&(T(e),T(t),T(l))}}}function sb(n){let e,t,l,s;return{c(){e=re("rect"),t=re("polyline"),l=re("line"),s=re("line"),r(e,"x","3"),r(e,"y","5"),r(e,"width","18"),r(e,"height","14"),r(e,"rx","2"),r(t,"points","3 10 21 10"),r(l,"x1","8"),r(l,"y1","5"),r(l,"x2","8"),r(l,"y2","19"),r(s,"x1","16"),r(s,"y1","5"),r(s,"x2","16"),r(s,"y2","19")},m(o,i){S(o,e,i),S(o,t,i),S(o,l,i),S(o,s,i)},d(o){o&&(T(e),T(t),T(l),T(s))}}}function ib(n){let e,t;return{c(){e=re("path"),t=re("polyline"),r(e,"d","M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"),r(t,"points","13 2 13 9 20 9")},m(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function ob(n){let e,t;return{c(){e=re("path"),t=re("path"),r(e,"d","M12 20h9"),r(t,"d","M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z")},m(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function rb(n){let e,t,l,s,o;return{c(){e=re("path"),t=re("path"),l=re("line"),s=re("line"),o=re("line"),r(e,"d","M4 19.5A2.5 2.5 0 0 1 6.5 17H20"),r(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"),r(l,"x1","8"),r(l,"y1","7"),r(l,"x2","16"),r(l,"y2","7"),r(s,"x1","8"),r(s,"y1","11"),r(s,"x2","14"),r(s,"y2","11"),r(o,"x1","8"),r(o,"y1","15"),r(o,"x2","12"),r(o,"y2","15")},m(i,c){S(i,e,c),S(i,t,c),S(i,l,c),S(i,s,c),S(i,o,c)},d(i){i&&(T(e),T(t),T(l),T(s),T(o))}}}function ab(n){let e,t,l,s;return{c(){e=re("path"),t=re("polyline"),l=re("line"),s=re("line"),r(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),r(t,"points","14 2 14 8 20 8"),r(l,"x1","16"),r(l,"y1","13"),r(l,"x2","8"),r(l,"y2","13"),r(s,"x1","16"),r(s,"y1","17"),r(s,"x2","8"),r(s,"y2","17")},m(o,i){S(o,e,i),S(o,t,i),S(o,l,i),S(o,s,i)},d(o){o&&(T(e),T(t),T(l),T(s))}}}function cb(n){let e,t;return{c(){e=re("path"),t=re("circle"),r(e,"d","M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"),r(t,"cx","12"),r(t,"cy","7"),r(t,"r","4")},m(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function ub(n){let e,t,l,s;return{c(){e=re("rect"),t=re("rect"),l=re("rect"),s=re("rect"),r(e,"x","3"),r(e,"y","3"),r(e,"width","7"),r(e,"height","7"),r(e,"rx","1"),r(t,"x","14"),r(t,"y","3"),r(t,"width","7"),r(t,"height","4"),r(t,"rx","1"),r(l,"x","14"),r(l,"y","10"),r(l,"width","7"),r(l,"height","11"),r(l,"rx","1"),r(s,"x","3"),r(s,"y","14"),r(s,"width","7"),r(s,"height","7"),r(s,"rx","1")},m(o,i){S(o,e,i),S(o,t,i),S(o,l,i),S(o,s,i)},d(o){o&&(T(e),T(t),T(l),T(s))}}}function fb(n){let e;return{c(){e=re("path"),r(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,l){S(t,e,l)},d(t){t&&T(e)}}}function db(n){let e;function t(o,i){return o[0]==="folder"?fb:o[0]==="project"?ub:o[0]==="client"?cb:o[0]==="document"?ab:o[0]==="recipe"?rb:o[0]==="note"?ob:o[0]==="file"?ib:o[0]==="case"?sb:lb}let l=t(n),s=l(n);return{c(){e=re("svg"),s.c(),r(e,"width",n[1]),r(e,"height",n[1]),r(e,"viewBox","0 0 24 24"),r(e,"fill","none"),r(e,"stroke","currentColor"),r(e,"stroke-width","1.5"),r(e,"stroke-linecap","round"),r(e,"stroke-linejoin","round"),r(e,"xmlns","http://www.w3.org/2000/svg")},m(o,i){S(o,e,i),s.m(e,null)},p(o,[i]){l!==(l=t(o))&&(s.d(1),s=l(o),s&&(s.c(),s.m(e,null))),i&2&&r(e,"width",o[1]),i&2&&r(e,"height",o[1])},i:ie,o:ie,d(o){o&&T(e),s.d()}}}function pb(n,e,t){let{kind:l="generic"}=e,{size:s=18}=e;return n.$$set=o=>{"kind"in o&&t(0,l=o.kind),"size"in o&&t(1,s=o.size)},[l,s]}class Js extends dt{constructor(e){super(),ft(this,e,pb,db,ut,{kind:0,size:1})}}function Mr(n,e,t){const l=n.slice();return l[44]=e[t],l}function mb(n){let e;return{c(){e=f("span"),r(e,"class","tree-toggle-placeholder svelte-zj71cl")},m(t,l){S(t,e,l)},p:ie,d(t){t&&T(e)}}}function gb(n){let e,t,l=n[1][n[44].id]?"▾":"▸",s,o,i;function c(){return n[25](n[44])}return{c(){e=f("button"),t=f("span"),s=F(l),r(t,"class","tree-arrow"),r(e,"class","tree-toggle svelte-zj71cl")},m(u,d){S(u,e,d),a(e,t),a(t,s),o||(i=D(e,"click",We(c)),o=!0)},p(u,d){n=u,d[0]&3&&l!==(l=n[1][n[44].id]?"▾":"▸")&&Q(s,l)},d(u){u&&T(e),o=!1,i()}}}function Lr(n){let e,t;return e=new kd({props:{nodes:n[44].children||[],expanded:n[1],selectedNodeId:n[2],level:n[3]+1,onSelect:n[4],onToggle:n[5],onContextMenu:n[6],onDrop:n[7]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p(l,s){const o={};s[0]&1&&(o.nodes=l[44].children||[]),s[0]&2&&(o.expanded=l[1]),s[0]&4&&(o.selectedNodeId=l[2]),s[0]&8&&(o.level=l[3]+1),s[0]&16&&(o.onSelect=l[4]),s[0]&32&&(o.onToggle=l[5]),s[0]&64&&(o.onContextMenu=l[6]),s[0]&128&&(o.onDrop=l[7]),e.$set(o)},i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Or(n,e){let t,l,s,o,i,c,u,d=e[44].title+"",m,g,h=e[1][e[44].id]&&Ki(e[44]),_,v,k,y;function E(P,j){return j[0]&1&&(l=null),l==null&&(l=!!es(P[44])),l?gb:mb}let C=E(e,[-1,-1]),A=C(e);i=new Js({props:{kind:Dr(e[44]),size:16}});function N(...P){return e[26](e[44],...P)}function I(...P){return e[27](e[44],...P)}function M(){return e[28](e[44])}function R(...P){return e[29](e[44],...P)}function O(...P){return e[30](e[44],...P)}function L(...P){return e[31](e[44],...P)}function H(...P){return e[32](e[44],...P)}function W(...P){return e[33](e[44],...P)}function U(...P){return e[34](e[44],...P)}function K(...P){return e[35](e[44],...P)}function Z(...P){return e[36](e[44],...P)}function X(...P){return e[37](e[44],...P)}let G=h&&Lr(e);return{key:n,first:null,c(){t=f("div"),A.c(),s=w(),o=f("span"),Qe(i.$$.fragment),c=w(),u=f("span"),m=F(d),g=w(),G&&G.c(),_=wt(),r(o,"class","tree-icon svelte-zj71cl"),r(o,"role","button"),r(o,"tabindex","-1"),r(u,"class","tree-label svelte-zj71cl"),r(u,"role","button"),r(u,"tabindex","-1"),r(t,"class","tree-item svelte-zj71cl"),Qt(t,"padding-left",e[3]*16+4+"px"),r(t,"draggable","true"),r(t,"role","button"),r(t,"tabindex","0"),ce(t,"selected",e[2]===e[44].id),ce(t,"drop-valid",e[8]===e[44].id&&e[9][e[44].id]),ce(t,"drop-invalid",e[8]===e[44].id&&!e[9][e[44].id]),this.first=t},m(P,j){S(P,t,j),A.m(t,null),a(t,s),a(t,o),Xe(i,o,null),a(t,c),a(t,u),a(u,m),S(P,g,j),G&&G.m(P,j),S(P,_,j),v=!0,k||(y=[D(o,"click",N),D(o,"keydown",I),D(o,"dblclick",We(e[24])),D(u,"click",We(M)),D(u,"keydown",R),D(t,"dragstart",O),D(t,"dragover",L),D(t,"dragleave",H),D(t,"drop",W),D(t,"click",U),D(t,"keydown",K),D(t,"dblclick",Z),D(t,"contextmenu",Xs(X))],k=!0)},p(P,j){e=P,C===(C=E(e,j))&&A?A.p(e,j):(A.d(1),A=C(e),A&&(A.c(),A.m(t,s)));const B={};j[0]&1&&(B.kind=Dr(e[44])),i.$set(B),(!v||j[0]&1)&&d!==(d=e[44].title+"")&&Q(m,d),(!v||j[0]&8)&&Qt(t,"padding-left",e[3]*16+4+"px"),(!v||j[0]&5)&&ce(t,"selected",e[2]===e[44].id),(!v||j[0]&769)&&ce(t,"drop-valid",e[8]===e[44].id&&e[9][e[44].id]),(!v||j[0]&769)&&ce(t,"drop-invalid",e[8]===e[44].id&&!e[9][e[44].id]),j[0]&3&&(h=e[1][e[44].id]&&Ki(e[44])),h?G?(G.p(e,j),j[0]&3&&he(G,1)):(G=Lr(e),G.c(),he(G,1),G.m(_.parentNode,_)):G&&(St(),Ee(G,1,1,()=>{G=null}),Ct())},i(P){v||(he(i.$$.fragment,P),he(G),v=!0)},o(P){Ee(i.$$.fragment,P),Ee(G),v=!1},d(P){P&&(T(t),T(g),T(_)),A.d(),Je(i),G&&G.d(P),k=!1,Se(y)}}}function hb(n){let e=[],t=new Map,l,s,o,i,c=we(n[0]);const u=d=>d[44].id;for(let d=0;d0:n.has_children===!0}function Pr(n){const e={};function t(l,s){for(const o of l)e[o.id]=s,o.children&&t(o.children,o.id)}return t(n,""),e}function zr(n){const e=[];function t(l){for(const s of l)e.push(s),s.children&&t(s.children)}return t(n),e}function _b(n){try{return n.dataTransfer.getData("text/plain")}catch{return""}}function bb(n,e,t){let l,s,o,{nodes:i=[]}=e,{expanded:c={}}=e,{selectedNodeId:u=""}=e,{level:d=0}=e,{onSelect:m=void 0}=e,{onToggle:g=void 0}=e,{onContextMenu:h=void 0}=e,{onDrop:_=void 0}=e,v={},k=null,y="",E="";const C=["folder","project","client","document","recipe","case"];fs(()=>{for(const ee of Object.keys(v))clearTimeout(v[ee]);k&&clearInterval(k)});function A(ee){return C.includes(ee.type)}function N(ee,oe,Ce){if(!ee||!oe||oe===ee.id||!A(ee))return!1;let je=ee.id;for(;je;){if(je===oe)return!1;je=Ce[je]||""}return!0}function I(ee,oe){ee.stopPropagation(),ee.dataTransfer.effectAllowed="move",ee.dataTransfer.setData("text/plain",oe.id),t(21,y=oe.id)}function M(ee,oe){ee.preventDefault(),ee.stopPropagation(),ee.dataTransfer.dropEffect="move",E!==oe.id&&t(8,E=oe.id),es(oe)&&!c[oe.id]&&!v[oe.id]&&(v[oe.id]=setTimeout(()=>{g&&g(oe.id),delete v[oe.id]},600));const Ce=ee.currentTarget.closest(".workspace-tree-area");if(Ce){const je=Ce.getBoundingClientRect(),_e=30;ee.clientY-je.top<_e?k||(k=setInterval(()=>{Ce.scrollTop-=10},50)):je.bottom-ee.clientY<_e?k||(k=setInterval(()=>{Ce.scrollTop+=10},50)):k&&(clearInterval(k),k=null)}}function R(ee,oe){const Ce=ee.relatedTarget;Ce&&ee.currentTarget.contains(Ce)||(E===oe.id&&t(8,E=""),v[oe.id]&&(clearTimeout(v[oe.id]),delete v[oe.id]),k&&(clearInterval(k),k=null))}function O(ee,oe){ee.preventDefault(),ee.stopPropagation(),v[oe.id]&&(clearTimeout(v[oe.id]),delete v[oe.id]),k&&(clearInterval(k),k=null);const Ce=zr(i),je=Pr(Ce),_e=_b(ee);if(!N(oe,_e,je)){t(8,E=""),t(21,y="");return}_&&_(_e,oe.id),t(8,E=""),t(21,y="")}function L(){t(8,E=""),t(21,y="");for(const ee of Object.keys(v))clearTimeout(v[ee]),delete v[ee];k&&(clearInterval(k),k=null)}function H(ee,oe){ee.target.closest(".tree-toggle")||ee.target.closest(".tree-icon")||m&&m(oe)}function W(ee,oe){es(oe)&&g&&g(oe.id)}function U(ee,oe){(ee.key==="Enter"||ee.key===" ")&&(ee.preventDefault(),m&&m(oe))}function K(ee,oe){ee.stopPropagation(),es(oe)&&g&&g(oe.id)}function Z(ee,oe){(ee.key==="Enter"||ee.key===" ")&&(ee.preventDefault(),ee.stopPropagation(),es(oe)&&g&&g(oe.id))}function X(ee,oe){(ee.key==="Enter"||ee.key===" ")&&(ee.preventDefault(),m&&m(oe))}function G(ee,oe,Ce){const je={};function _e(Ue){for(const pt of Ue)je[pt.id]=N(pt,oe,Ce),pt.children&&_e(pt.children)}return _e(ee),je}function P(ee){xi.call(this,n,ee)}const j=ee=>g&&g(ee.id),B=(ee,oe)=>K(oe,ee),J=(ee,oe)=>Z(oe,ee),q=ee=>m&&m(ee),Y=(ee,oe)=>X(oe,ee),$=(ee,oe)=>I(oe,ee),ne=(ee,oe)=>M(oe,ee),te=(ee,oe)=>R(oe,ee),pe=(ee,oe)=>O(oe,ee),Te=(ee,oe)=>H(oe,ee),Fe=(ee,oe)=>U(oe,ee),qe=(ee,oe)=>W(oe,ee),Ne=(ee,oe)=>h&&h(oe,ee);return n.$$set=ee=>{"nodes"in ee&&t(0,i=ee.nodes),"expanded"in ee&&t(1,c=ee.expanded),"selectedNodeId"in ee&&t(2,u=ee.selectedNodeId),"level"in ee&&t(3,d=ee.level),"onSelect"in ee&&t(4,m=ee.onSelect),"onToggle"in ee&&t(5,g=ee.onToggle),"onContextMenu"in ee&&t(6,h=ee.onContextMenu),"onDrop"in ee&&t(7,_=ee.onDrop)},n.$$.update=()=>{n.$$.dirty[0]&1&&t(23,l=zr(i)),n.$$.dirty[0]&8388608&&t(22,s=Pr(l)),n.$$.dirty[0]&14680064&&t(9,o=G(l,y,s))},[i,c,u,d,m,g,h,_,E,o,I,M,R,O,L,H,W,U,K,Z,X,y,s,l,P,j,B,J,q,Y,$,ne,te,pe,Te,Fe,qe,Ne]}class kd extends dt{constructor(e){super(),ft(this,e,bb,hb,ut,{nodes:0,expanded:1,selectedNodeId:2,level:3,onSelect:4,onToggle:5,onContextMenu:6,onDrop:7},null,[-1,-1])}}function Br(n){let e,t;return{c(){e=f("div"),t=F(n[4]),r(e,"class","path-info svelte-a9f1pd")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s&16&&Q(t,l[4])},d(l){l&&T(e)}}}function Fr(n){let e,t;return{c(){e=f("div"),t=F(n[3]),r(e,"class","error-msg svelte-a9f1pd")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s&8&&Q(t,l[3])},d(l){l&&T(e)}}}function vb(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y,E,C=b("firstrun.browse")+"",A,N,I,M,R,O,L=(n[2]?b("firstrun.creating"):b("firstrun.create"))+"",H,W,U,K,Z,X,G=n[4]&&Br(n),P=n[3]&&Fr(n);return{c(){e=f("div"),t=f("div"),l=f("img"),o=w(),i=f("h1"),i.textContent=`${b("firstrun.title")}`,c=w(),u=f("p"),u.textContent=`${b("firstrun.desc")}`,d=w(),m=f("div"),g=f("label"),g.textContent=`${b("firstrun.pathLabel")}`,h=w(),_=f("div"),v=f("input"),y=w(),E=f("button"),A=F(C),N=w(),G&&G.c(),I=w(),P&&P.c(),M=w(),R=f("div"),O=f("button"),H=F(L),U=w(),K=f("button"),K.textContent=`${b("firstrun.quit")}`,r(l,"class","first-run-logo svelte-a9f1pd"),jl(l.src,s="/assets/app-icons/icon_64x64.png")||r(l,"src",s),r(l,"width","64"),r(l,"height","64"),r(l,"alt",""),r(i,"class","svelte-a9f1pd"),r(u,"class","first-run-desc svelte-a9f1pd"),r(g,"class","form-label svelte-a9f1pd"),r(g,"for","vault-path"),r(v,"id","vault-path"),r(v,"type","text"),r(v,"placeholder",k=n[1]||b("firstrun.defaultPath")),v.disabled=n[2],r(v,"class","svelte-a9f1pd"),r(E,"class","btn"),E.disabled=n[2],r(_,"class","input-row svelte-a9f1pd"),r(m,"class","form-group svelte-a9f1pd"),r(O,"class","btn btn-primary btn-lg svelte-a9f1pd"),O.disabled=W=!n[0].trim()||n[2],r(K,"class","btn btn-lg svelte-a9f1pd"),r(R,"class","first-run-actions svelte-a9f1pd"),r(t,"class","first-run-card svelte-a9f1pd"),r(e,"class","first-run-screen svelte-a9f1pd")},m(j,B){S(j,e,B),a(e,t),a(t,l),a(t,o),a(t,i),a(t,c),a(t,u),a(t,d),a(t,m),a(m,g),a(m,h),a(m,_),a(_,v),Ie(v,n[0]),a(_,y),a(_,E),a(E,A),a(t,N),G&&G.m(t,null),a(t,I),P&&P.m(t,null),a(t,M),a(t,R),a(R,O),a(O,H),a(R,U),a(R,K),Z||(X=[D(v,"input",n[12]),D(v,"input",n[6]),D(v,"keydown",n[9]),D(E,"click",n[5]),D(O,"click",n[7]),D(K,"click",n[8])],Z=!0)},p(j,[B]){B&2&&k!==(k=j[1]||b("firstrun.defaultPath"))&&r(v,"placeholder",k),B&4&&(v.disabled=j[2]),B&1&&v.value!==j[0]&&Ie(v,j[0]),B&4&&(E.disabled=j[2]),j[4]?G?G.p(j,B):(G=Br(j),G.c(),G.m(t,I)):G&&(G.d(1),G=null),j[3]?P?P.p(j,B):(P=Fr(j),P.c(),P.m(t,M)):P&&(P.d(1),P=null),B&4&&L!==(L=(j[2]?b("firstrun.creating"):b("firstrun.create"))+"")&&Q(H,L),B&5&&W!==(W=!j[0].trim()||j[2])&&(O.disabled=W)},i:ie,o:ie,d(j){j&&T(e),G&&G.d(),P&&P.d(),Z=!1,Se(X)}}}function Is(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function kb(n,e,t){let{onComplete:l=null}=e,{onQuit:s=null}=e,o="",i="",c=!1,u="",d="",m=null;async function g(){try{const C=await Is("GetDefaultVaultPath");t(1,i=C||""),t(0,o=i||""),o&&await _()}catch{t(1,i="")}}g();async function h(){try{const C=await Is("PickDirectory");C&&(t(0,o=C),await _())}catch(C){t(3,u=String(C))}}async function _(){if(!o||!o.trim()){t(4,d=""),m=null;return}try{m=await Is("CheckVaultPath",o.trim()),m&&t(4,d=m.description)}catch{t(4,d=""),m=null}}async function v(){if(!(!o||!o.trim())){if(t(2,c=!0),t(3,u=""),m&&!m.writable){t(3,u=b("firstrun.errorNoWrite")),t(2,c=!1);return}try{const C=await Is("CreateVault",o.trim());C&&C.status==="ready"&&l&&l(C)}catch(C){t(3,u=String(C))}t(2,c=!1)}}function k(){s&&s()}function y(C){C.key==="Enter"&&!c&&o.trim()&&v()}function E(){o=this.value,t(0,o)}return n.$$set=C=>{"onComplete"in C&&t(10,l=C.onComplete),"onQuit"in C&&t(11,s=C.onQuit)},[o,i,c,u,d,h,_,v,k,y,l,s,E]}class wb extends dt{constructor(e){super(),ft(this,e,kb,vb,ut,{onComplete:10,onQuit:11})}}function jr(n){let e,t;return{c(){e=f("div"),t=F(n[2]),r(e,"class","error-msg svelte-s3o8c3")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s&4&&Q(t,l[2])},d(l){l&&T(e)}}}function Ur(n){let e,t,l,s,o,i,c,u,d=b("common.yes")+"",m,g,h,_,v;return{c(){e=f("div"),t=f("div"),l=f("h3"),l.textContent=`${b("recovery.createConfirmTitle")}`,s=w(),o=f("p"),o.textContent=`${b("recovery.createConfirm")}`,i=w(),c=f("div"),u=f("button"),m=F(d),g=w(),h=f("button"),h.textContent=`${b("common.cancel")}`,r(l,"class","svelte-s3o8c3"),r(o,"class","modal-desc svelte-s3o8c3"),r(u,"class","btn btn-primary"),u.disabled=n[1],r(h,"class","btn"),r(c,"class","modal-actions svelte-s3o8c3"),r(t,"class","modal svelte-s3o8c3"),r(e,"class","modal-overlay svelte-s3o8c3"),r(e,"role","button"),r(e,"tabindex","0")},m(k,y){S(k,e,y),a(e,t),a(t,l),a(t,s),a(t,o),a(t,i),a(t,c),a(c,u),a(u,m),a(c,g),a(c,h),_||(v=[D(u,"click",n[6]),D(h,"click",n[7]),D(e,"click",$t(n[7])),D(e,"keydown",n[11])],_=!0)},p(k,y){y&2&&(u.disabled=k[1])},d(k){k&&T(e),_=!1,Se(v)}}}function yb(n){let e,t,l,s,o,i,c,u,d,m=(n[0]||"—")+"",g,h,_,v,k,y=b("recovery.choose")+"",E,C,A,N=b("recovery.create")+"",I,M,R,O,L,H,W,U=n[2]&&jr(n),K=n[3]&&Ur(n);return{c(){e=f("div"),t=f("div"),l=f("div"),l.textContent="⚠",s=w(),o=f("h1"),o.textContent=`${b("recovery.title")}`,i=w(),c=f("p"),c.textContent=`${b("recovery.expected")}:`,u=w(),d=f("code"),g=F(m),h=w(),U&&U.c(),_=w(),v=f("div"),k=f("button"),E=F(y),C=w(),A=f("button"),I=F(N),M=w(),R=f("button"),R.textContent=`${b("recovery.quit")}`,O=w(),K&&K.c(),L=wt(),r(l,"class","recovery-icon svelte-s3o8c3"),r(o,"class","svelte-s3o8c3"),r(c,"class","recovery-desc svelte-s3o8c3"),r(d,"class","recovery-path svelte-s3o8c3"),r(k,"class","btn btn-primary btn-lg svelte-s3o8c3"),k.disabled=n[1],r(A,"class","btn btn-lg svelte-s3o8c3"),A.disabled=n[1],r(R,"class","btn btn-lg svelte-s3o8c3"),r(v,"class","recovery-actions svelte-s3o8c3"),r(t,"class","recovery-card svelte-s3o8c3"),r(e,"class","recovery-screen svelte-s3o8c3")},m(Z,X){S(Z,e,X),a(e,t),a(t,l),a(t,s),a(t,o),a(t,i),a(t,c),a(t,u),a(t,d),a(d,g),a(t,h),U&&U.m(t,null),a(t,_),a(t,v),a(v,k),a(k,E),a(v,C),a(v,A),a(A,I),a(v,M),a(v,R),S(Z,O,X),K&&K.m(Z,X),S(Z,L,X),H||(W=[D(k,"click",n[4]),D(A,"click",n[5]),D(R,"click",n[8])],H=!0)},p(Z,[X]){X&1&&m!==(m=(Z[0]||"—")+"")&&Q(g,m),Z[2]?U?U.p(Z,X):(U=jr(Z),U.c(),U.m(t,_)):U&&(U.d(1),U=null),X&2&&(k.disabled=Z[1]),X&2&&(A.disabled=Z[1]),Z[3]?K?K.p(Z,X):(K=Ur(Z),K.c(),K.m(L.parentNode,L)):K&&(K.d(1),K=null)},i:ie,o:ie,d(Z){Z&&(T(e),T(O),T(L)),U&&U.d(),K&&K.d(Z),H=!1,Se(W)}}}function Li(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function Eb(n,e,t){let{vaultPath:l=""}=e,{onComplete:s=null}=e,{onQuit:o=null}=e,i=!1,c="",u=!1;async function d(){try{const k=await Li("PickDirectory");if(!k)return;t(1,i=!0),t(2,c="");const y=await Li("OpenVault",k);y&&y.status==="ready"&&s&&s(y)}catch(k){t(2,c=String(k))}t(1,i=!1)}function m(){t(3,u=!0)}async function g(){t(3,u=!1),t(1,i=!0),t(2,c="");try{const k=await Li("CreateVault",l);k&&k.status==="ready"&&s&&s(k)}catch(k){t(2,c=String(k))}t(1,i=!1)}function h(){t(3,u=!1)}function _(){o&&o()}const v=k=>k.key==="Enter"&&h();return n.$$set=k=>{"vaultPath"in k&&t(0,l=k.vaultPath),"onComplete"in k&&t(9,s=k.onComplete),"onQuit"in k&&t(10,o=k.onQuit)},[l,i,c,u,d,m,g,h,_,s,o,v]}class Tb extends dt{constructor(e){super(),ft(this,e,Eb,yb,ut,{vaultPath:0,onComplete:9,onQuit:10})}}function Hr(n,e,t){const l=n.slice();return l[5]=e[t],l}function Sb(n){let e,t;return{c(){e=re("circle"),t=re("path"),r(e,"cx","12"),r(e,"cy","12"),r(e,"r","3"),r(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(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function Cb(n){let e,t,l;return{c(){e=re("path"),t=re("path"),l=re("path"),r(e,"d","M5 4h12l2 2v14H5z"),r(t,"d","M8 4v6h8V4"),r(l,"d","M8 20v-6h8v6")},m(s,o){S(s,e,o),S(s,t,o),S(s,l,o)},d(s){s&&(T(e),T(t),T(l))}}}function Ab(n){let e,t,l,s;return{c(){e=re("path"),t=re("path"),l=re("path"),s=re("path"),r(e,"d","M20 11a8 8 0 0 0-14-4l-2 2"),r(t,"d","M4 5v4h4"),r(l,"d","M4 13a8 8 0 0 0 14 4l2-2"),r(s,"d","M20 19v-4h-4")},m(o,i){S(o,e,i),S(o,t,i),S(o,l,i),S(o,s,i)},d(o){o&&(T(e),T(t),T(l),T(s))}}}function Nb(n){let e;return{c(){e=re("path"),r(e,"d","M4 19V9M10 19V5M16 19v-7M22 19H2")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Rb(n){let e;return{c(){e=re("path"),r(e,"d","M3 6h6l2 2h10v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6z")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Ib(n){let e,t;return{c(){e=re("path"),t=re("path"),r(e,"d","M9 3v5M15 3v5M7 8h10v3a5 5 0 0 1-10 0V8z"),r(t,"d","M12 16v5")},m(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function Mb(n){let e,t;return{c(){e=re("rect"),t=re("path"),r(e,"x","4"),r(e,"y","3"),r(e,"width","16"),r(e,"height","18"),r(e,"rx","2"),r(t,"d","M8 7h8M8 11h8M8 15h5")},m(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function Lb(n){let e,t,l;return{c(){e=re("path"),t=re("path"),l=re("path"),r(e,"d","M3 10.5 12 3l9 7.5"),r(t,"d","M5 9.5V21h14V9.5"),r(l,"d","M10 21v-6h4v6")},m(s,o){S(s,e,o),S(s,t,o),S(s,l,o)},d(s){s&&(T(e),T(t),T(l))}}}function Ob(n){let e,t;return{c(){e=re("circle"),t=re("path"),r(e,"cx","12"),r(e,"cy","12"),r(e,"r","3"),r(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(l,s){S(l,e,s),S(l,t,s)},d(l){l&&(T(e),T(t))}}}function Wr(n){let e,t,l,s,o,i,c,u;function d(_,v){if(_[5].id==="general")return Ob;if(_[5].id==="workspace")return Lb;if(_[5].id==="templates")return Mb;if(_[5].id==="plugins")return Ib;if(_[5].id==="files")return Rb;if(_[5].id==="activity")return Nb;if(_[5].id==="sync")return Ab;if(_[5].id==="backup")return Cb;if(_[5].id==="browserBridge")return Sb}let m=d(n),g=m&&m(n);function h(){return n[4](n[5])}return{c(){e=f("button"),t=f("span"),l=re("svg"),g&&g.c(),s=w(),o=f("span"),o.textContent=`${n[5].label}`,i=w(),r(l,"width","16"),r(l,"height","16"),r(l,"viewBox","0 0 24 24"),r(l,"fill","none"),r(l,"stroke","currentColor"),r(l,"stroke-width","1.8"),r(l,"stroke-linecap","round"),r(l,"stroke-linejoin","round"),r(l,"aria-hidden","true"),r(t,"class","settings-nav-icon svelte-8ag2z0"),r(o,"class","settings-nav-label svelte-8ag2z0"),r(e,"class","settings-nav-item svelte-8ag2z0"),ce(e,"active",n[0]===n[5].id),ce(e,"disabled",n[5].id==="files"||n[5].id==="activity"||n[5].id==="backup")},m(_,v){S(_,e,v),a(e,t),a(t,l),g&&g.m(l,null),a(e,s),a(e,o),a(e,i),c||(u=D(e,"click",h),c=!0)},p(_,v){n=_,v&3&&ce(e,"active",n[0]===n[5].id)},d(_){_&&T(e),g&&g.d(),c=!1,u()}}}function Db(n){let e,t=we(n[1]),l=[];for(let s=0;si(u.id);return n.$$set=u=>{"activeSection"in u&&t(0,l=u.activeSection),"onSelect"in u&&t(3,s=u.onSelect)},[l,o,i,s,c]}class zb extends dt{constructor(e){super(),ft(this,e,Pb,Db,ut,{activeSection:0,onSelect:3})}}function Gr(n){let e;return{c(){e=f("div"),e.textContent=`${b("settings.saved")}`,r(e,"class","save-notice svelte-1e2uhdh")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Bb(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y,E,C,A,N,I,M,R,O,L,H,W,U,K,Z,X,G,P,j=n[1]&&Gr();return{c(){e=f("div"),t=f("h2"),t.textContent=`${b("settings.general")}`,l=w(),s=f("p"),s.textContent=`${b("settings.generalDesc")}`,o=w(),i=f("div"),c=f("h3"),c.textContent=`${b("settings.appearance")}`,u=w(),d=f("div"),m=f("label"),g=f("span"),g.textContent=`${b("settings.theme")}`,h=w(),_=f("select"),v=f("option"),v.textContent=`${b("settings.themeSystem")}`,k=f("option"),k.textContent=`${b("settings.themeLight")} (${b("settings.langSoon")})`,y=f("option"),y.textContent=`${b("settings.themeDark")} (${b("settings.langSoon")})`,E=w(),C=f("div"),A=f("h3"),A.textContent=`${b("settings.localization")}`,N=w(),I=f("div"),M=f("label"),R=f("span"),R.textContent=`${b("settings.language")}`,O=w(),L=f("select"),H=f("option"),H.textContent=`${b("settings.langRu")}`,W=f("option"),W.textContent=`${b("settings.langEn")} (${b("settings.langSoon")})`,U=w(),K=f("div"),j&&j.c(),Z=w(),X=f("button"),X.textContent=`${b("settings.save")}`,r(t,"class","svelte-1e2uhdh"),r(s,"class","section-desc svelte-1e2uhdh"),r(c,"class","card-title svelte-1e2uhdh"),r(g,"class","label-text svelte-1e2uhdh"),v.__value="system",Ie(v,v.__value),k.__value="light",Ie(k,k.__value),k.disabled=!0,y.__value="dark",Ie(y,y.__value),y.disabled=!0,n[0]===void 0&&bl(()=>n[5].call(_)),r(d,"class","form-group svelte-1e2uhdh"),r(i,"class","settings-card svelte-1e2uhdh"),r(A,"class","card-title svelte-1e2uhdh"),r(R,"class","label-text svelte-1e2uhdh"),H.__value="ru",Ie(H,H.__value),W.__value="en",Ie(W,W.__value),L.disabled=!0,r(I,"class","form-group svelte-1e2uhdh"),r(C,"class","settings-card svelte-1e2uhdh"),r(X,"class","btn btn-primary"),r(K,"class","settings-actions svelte-1e2uhdh"),r(e,"class","settings-section svelte-1e2uhdh")},m(B,J){S(B,e,J),a(e,t),a(e,l),a(e,s),a(e,o),a(e,i),a(i,c),a(i,u),a(i,d),a(d,m),a(m,g),a(m,h),a(m,_),a(_,v),a(_,k),a(_,y),Zn(_,n[0],!0),a(e,E),a(e,C),a(C,A),a(C,N),a(C,I),a(I,M),a(M,R),a(M,O),a(M,L),a(L,H),a(L,W),a(e,U),a(e,K),j&&j.m(K,null),a(K,Z),a(K,X),G||(P=[D(_,"change",n[5]),D(X,"click",n[2])],G=!0)},p(B,[J]){J&1&&Zn(_,B[0]),B[1]?j||(j=Gr(),j.c(),j.m(K,Z)):j&&(j.d(1),j=null)},i:ie,o:ie,d(B){B&&T(e),j&&j.d(),G=!1,Se(P)}}}function Fb(n,e,t){let{appConfig:l=null}=e,{onSave:s=null}=e,o="system",i=!1;function c(){l&&t(0,o=l.theme||"system")}async function u(){l&&(t(3,l.theme=o,l),s&&await s(l),t(1,i=!0),setTimeout(()=>t(1,i=!1),2e3))}function d(){o=Bs(this),t(0,o)}return n.$$set=m=>{"appConfig"in m&&t(3,l=m.appConfig),"onSave"in m&&t(4,s=m.onSave)},n.$$.update=()=>{n.$$.dirty&8&&l&&c()},[o,i,u,l,s,d]}class jb extends dt{constructor(e){super(),ft(this,e,Fb,Bb,ut,{appConfig:3,onSave:4})}}function Kr(n){let e,t;return{c(){e=f("div"),t=F(n[1]),r(e,"class","notice svelte-1zbky3")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s&2&&Q(t,l[1])},d(l){l&&T(e)}}}function Ub(n){let e;return{c(){e=f("p"),e.textContent=`${b("settings.noVaultInfo")}`,r(e,"class","no-data svelte-1zbky3")},m(t,l){S(t,e,l)},p:ie,d(t){t&&T(e)}}}function Hb(n){let e,t,l,s,o,i=n[0].path+"",c,u,d,m,g,h,_=n[0].dbPath+"",v,k,y,E=n[0].nodeCount!==void 0&&Vr(n),C=n[0].fileCount!==void 0&&qr(n);return{c(){e=f("div"),t=f("div"),l=f("span"),l.textContent=`${b("settings.vaultPath")}`,s=w(),o=f("span"),c=F(i),u=w(),d=f("div"),m=f("span"),m.textContent="DB",g=w(),h=f("span"),v=F(_),k=w(),E&&E.c(),y=w(),C&&C.c(),r(l,"class","info-label svelte-1zbky3"),r(o,"class","info-value mono svelte-1zbky3"),r(t,"class","info-row svelte-1zbky3"),r(m,"class","info-label svelte-1zbky3"),r(h,"class","info-value mono small svelte-1zbky3"),r(d,"class","info-row svelte-1zbky3"),r(e,"class","vault-info svelte-1zbky3")},m(A,N){S(A,e,N),a(e,t),a(t,l),a(t,s),a(t,o),a(o,c),a(e,u),a(e,d),a(d,m),a(d,g),a(d,h),a(h,v),a(e,k),E&&E.m(e,null),a(e,y),C&&C.m(e,null)},p(A,N){N&1&&i!==(i=A[0].path+"")&&Q(c,i),N&1&&_!==(_=A[0].dbPath+"")&&Q(v,_),A[0].nodeCount!==void 0?E?E.p(A,N):(E=Vr(A),E.c(),E.m(e,y)):E&&(E.d(1),E=null),A[0].fileCount!==void 0?C?C.p(A,N):(C=qr(A),C.c(),C.m(e,null)):C&&(C.d(1),C=null)},d(A){A&&T(e),E&&E.d(),C&&C.d()}}}function Vr(n){let e,t,l,s,o=n[0].nodeCount+"",i;return{c(){e=f("div"),t=f("span"),t.textContent="Nodes",l=w(),s=f("span"),i=F(o),r(t,"class","info-label svelte-1zbky3"),r(s,"class","info-value svelte-1zbky3"),r(e,"class","info-row svelte-1zbky3")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,i)},p(c,u){u&1&&o!==(o=c[0].nodeCount+"")&&Q(i,o)},d(c){c&&T(e)}}}function qr(n){let e,t,l,s,o=n[0].fileCount+"",i;return{c(){e=f("div"),t=f("span"),t.textContent="Files",l=w(),s=f("span"),i=F(o),r(t,"class","info-label svelte-1zbky3"),r(s,"class","info-value svelte-1zbky3"),r(e,"class","info-row svelte-1zbky3")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,i)},p(c,u){u&1&&o!==(o=c[0].fileCount+"")&&Q(i,o)},d(c){c&&T(e)}}}function Wb(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y,E=n[1]&&Kr(n);function C(I,M){return I[0]?Hb:Ub}let A=C(n),N=A(n);return{c(){e=f("div"),t=f("h2"),t.textContent=`${b("settings.workspace")}`,l=w(),s=f("p"),s.textContent=`${b("settings.workspaceDesc")}`,o=w(),E&&E.c(),i=w(),c=f("div"),N.c(),u=w(),d=f("div"),m=f("button"),m.textContent=`${b("settings.openVault")}`,g=w(),h=f("button"),h.textContent=`${b("settings.changeVault")}`,_=w(),v=f("button"),v.textContent=`${b("settings.checkIntegrity")}`,r(t,"class","svelte-1zbky3"),r(s,"class","section-desc svelte-1zbky3"),r(c,"class","settings-card svelte-1zbky3"),r(m,"class","btn svelte-1zbky3"),r(h,"class","btn svelte-1zbky3"),r(v,"class","btn svelte-1zbky3"),r(d,"class","workspace-actions svelte-1zbky3"),r(e,"class","settings-section svelte-1zbky3")},m(I,M){S(I,e,M),a(e,t),a(e,l),a(e,s),a(e,o),E&&E.m(e,null),a(e,i),a(e,c),N.m(c,null),a(e,u),a(e,d),a(d,m),a(d,g),a(d,h),a(d,_),a(d,v),k||(y=[D(m,"click",n[2]),D(h,"click",n[4]),D(v,"click",n[3])],k=!0)},p(I,[M]){I[1]?E?E.p(I,M):(E=Kr(I),E.c(),E.m(e,i)):E&&(E.d(1),E=null),A===(A=C(I))&&N?N.p(I,M):(N.d(1),N=A(I),N&&(N.c(),N.m(c,null)))},i:ie,o:ie,d(I){I&&T(e),E&&E.d(),N.d(),k=!1,Se(y)}}}function Ll(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function Gb(n,e,t){let{onRefresh:l=null}=e,s=null,o="";async function i(){try{t(0,s=await Ll("GetVaultInfo"))}catch{t(0,s=null)}}i();async function c(){try{await Ll("OpenVaultFolder")}catch(m){t(1,o=String(m))}}async function u(){try{const m=await Ll("VaultCheck");m.healthy?t(1,o="Vault healthy"):t(1,o="Issues found: "+(m.errors||[]).join("; "))}catch(m){t(1,o=String(m))}}async function d(){try{const m=await Ll("PickDirectory");if(!m)return;const g=await Ll("OpenVault",m);g&&g.status==="ready"&&(t(0,s=await Ll("GetVaultInfo")),l&&l())}catch(m){t(1,o=String(m))}}return n.$$set=m=>{"onRefresh"in m&&t(5,l=m.onRefresh)},[s,o,c,u,d,l]}class Kb extends dt{constructor(e){super(),ft(this,e,Gb,Wb,ut,{onRefresh:5})}}function Zr(n,e,t){const l=n.slice();return l[6]=e[t],l}function Vb(n){let e,t=we(n[0]),l=[];for(let s=0;sc(d);return n.$$set=d=>{"onRefresh"in d&&t(3,l=d.onRefresh)},[s,o,c,l,u]}class Jb extends dt{constructor(e){super(),ft(this,e,Xb,Yb,ut,{onRefresh:3})}}function Jr(n,e,t){const l=n.slice();return l[12]=e[t],l}function Qb(n){let e,t=we(n[0]),l=[];for(let s=0;sНет установленных плагинов.

Создайте папку .verstak/plugins/ в хранилище и добавьте туда плагины.

',r(e,"class","empty-state svelte-i9gngw")},m(t,l){S(t,e,l)},p:ie,d(t){t&&T(e)}}}function $b(n){let e,t;return{c(){e=f("p"),t=F(n[2]),r(e,"class","error svelte-i9gngw")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s&4&&Q(t,l[2])},d(l){l&&T(e)}}}function ev(n){let e;return{c(){e=f("p"),e.textContent=`${b("common.loading")}`,r(e,"class","loading svelte-i9gngw")},m(t,l){S(t,e,l)},p:ie,d(t){t&&T(e)}}}function Qr(n){let e,t,l=n[12].version+"",s;return{c(){e=f("span"),t=F("v"),s=F(l),r(e,"class","plugin-version svelte-i9gngw")},m(o,i){S(o,e,i),a(e,t),a(e,s)},p(o,i){i&1&&l!==(l=o[12].version+"")&&Q(s,l)},d(o){o&&T(e)}}}function xr(n){let e,t=n[12].description+"",l;return{c(){e=f("div"),l=F(t),r(e,"class","plugin-desc svelte-i9gngw")},m(s,o){S(s,e,o),a(e,l)},p(s,o){o&1&&t!==(t=s[12].description+"")&&Q(l,t)},d(s){s&&T(e)}}}function $r(n){let e,t=(b("settings.author")||"Автор")+"",l,s,o=n[12].author+"",i;return{c(){e=f("span"),l=F(t),s=F(": "),i=F(o)},m(c,u){S(c,e,u),a(e,l),a(e,s),a(e,i)},p(c,u){u&1&&o!==(o=c[12].author+"")&&Q(i,o)},d(c){c&&T(e)}}}function ea(n){let e,t=n[12].uiContribs.sidebarItems.length+"",l,s;return{c(){e=f("span"),l=F(t),s=F(" пункт(а) в сайдбаре")},m(o,i){S(o,e,i),a(e,l),a(e,s)},p(o,i){i&1&&t!==(t=o[12].uiContribs.sidebarItems.length+"")&&Q(l,t)},d(o){o&&T(e)}}}function ta(n){let e,t=n[12].uiContribs.nodeTabs.length+"",l,s;return{c(){e=f("span"),l=F(t),s=F(" вкладок(и) в карточке дела")},m(o,i){S(o,e,i),a(e,l),a(e,s)},p(o,i){i&1&&t!==(t=o[12].uiContribs.nodeTabs.length+"")&&Q(l,t)},d(o){o&&T(e)}}}function na(n){let e;return{c(){e=f("span"),e.textContent="🗖 HTML-панель"},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function tv(n){let e,t,l,s,o,i,c,u;function d(){return n[8](n[12])}function m(){return n[9](n[12])}return{c(){e=f("div"),t=f("button"),l=f("span"),o=w(),i=f("button"),i.textContent="🗑",r(l,"class","toggle-knob svelte-i9gngw"),r(t,"class","toggle-btn svelte-i9gngw"),r(t,"role","switch"),r(t,"aria-checked",s=n[12].active),ce(t,"active",n[12].active),r(i,"class","uninstall-btn btn-sm svelte-i9gngw"),r(i,"title","Удалить плагин (очистить данные)"),r(e,"class","toggle-group svelte-i9gngw")},m(g,h){S(g,e,h),a(e,t),a(t,l),a(e,o),a(e,i),c||(u=[D(t,"click",d),D(i,"click",m)],c=!0)},p(g,h){n=g,h&1&&s!==(s=n[12].active)&&r(t,"aria-checked",s),h&1&&ce(t,"active",n[12].active)},d(g){g&&T(e),c=!1,Se(u)}}}function nv(n){let e,t,l;function s(){return n[7](n[12])}return{c(){e=f("button"),e.textContent="📦 Установить",r(e,"class","install-btn svelte-i9gngw")},m(o,i){S(o,e,i),t||(l=D(e,"click",s),t=!0)},p(o,i){n=o},d(o){o&&T(e),t=!1,l()}}}function la(n){var L,H,W,U;let e,t,l,s=n[12].name+"",o,i,c,u,d,m,g,h,_,v,k,y=n[12].version&&Qr(n),E=n[12].description&&xr(n),C=n[12].author&&$r(n),A=((H=(L=n[12].uiContribs)==null?void 0:L.sidebarItems)==null?void 0:H.length)&&ea(n),N=((U=(W=n[12].uiContribs)==null?void 0:W.nodeTabs)==null?void 0:U.length)&&ta(n),I=n[12].hasPanel&&na();function M(K,Z){return K[12].installed?tv:nv}let R=M(n),O=R(n);return{c(){e=f("div"),t=f("div"),l=f("div"),o=F(s),i=w(),y&&y.c(),c=w(),E&&E.c(),u=w(),d=f("div"),C&&C.c(),m=w(),A&&A.c(),g=w(),N&&N.c(),h=w(),I&&I.c(),_=w(),v=f("div"),O.c(),k=w(),r(l,"class","plugin-name svelte-i9gngw"),r(d,"class","plugin-meta svelte-i9gngw"),r(t,"class","plugin-info svelte-i9gngw"),r(v,"class","plugin-toggle svelte-i9gngw"),r(e,"class","plugin-card svelte-i9gngw")},m(K,Z){S(K,e,Z),a(e,t),a(t,l),a(l,o),a(l,i),y&&y.m(l,null),a(t,c),E&&E.m(t,null),a(t,u),a(t,d),C&&C.m(d,null),a(d,m),A&&A.m(d,null),a(d,g),N&&N.m(d,null),a(d,h),I&&I.m(d,null),a(e,_),a(e,v),O.m(v,null),a(e,k)},p(K,Z){var X,G,P,j;Z&1&&s!==(s=K[12].name+"")&&Q(o,s),K[12].version?y?y.p(K,Z):(y=Qr(K),y.c(),y.m(l,null)):y&&(y.d(1),y=null),K[12].description?E?E.p(K,Z):(E=xr(K),E.c(),E.m(t,u)):E&&(E.d(1),E=null),K[12].author?C?C.p(K,Z):(C=$r(K),C.c(),C.m(d,m)):C&&(C.d(1),C=null),(G=(X=K[12].uiContribs)==null?void 0:X.sidebarItems)!=null&&G.length?A?A.p(K,Z):(A=ea(K),A.c(),A.m(d,g)):A&&(A.d(1),A=null),(j=(P=K[12].uiContribs)==null?void 0:P.nodeTabs)!=null&&j.length?N?N.p(K,Z):(N=ta(K),N.c(),N.m(d,h)):N&&(N.d(1),N=null),K[12].hasPanel?I||(I=na(),I.c(),I.m(d,null)):I&&(I.d(1),I=null),R===(R=M(K))&&O?O.p(K,Z):(O.d(1),O=R(K),O&&(O.c(),O.m(v,null)))},d(K){K&&T(e),y&&y.d(),E&&E.d(),C&&C.d(),A&&A.d(),N&&N.d(),I&&I.d(),O.d()}}}function lv(n){let e,t,l,s,o;function i(d,m){return d[1]?ev:d[2]?$b:d[0].length===0?xb:Qb}let c=i(n),u=c(n);return{c(){e=f("div"),t=f("h3"),t.textContent=`${b("settings.plugins")||"Плагины"}`,l=w(),s=f("p"),s.textContent="Включение и отключение плагинов. Изменения применяются сразу.",o=w(),u.c(),r(t,"class","svelte-i9gngw"),r(s,"class","hint svelte-i9gngw"),r(e,"class","settings-plugins svelte-i9gngw")},m(d,m){S(d,e,m),a(e,t),a(e,l),a(e,s),a(e,o),u.m(e,null)},p(d,[m]){c===(c=i(d))&&u?u.p(d,m):(u.d(1),u=c(d),u&&(u.c(),u.m(e,null)))},i:ie,o:ie,d(d){d&&T(e),u.d()}}}function ul(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function sv(n,e,t){let{onPluginToggle:l=null}=e,s=[],o=!0,i="";us(async()=>{try{t(0,s=await ul("ListPlugins")||[])}catch(_){t(2,i=String(_))}t(1,o=!1)});async function c(_){const v=!_.active;try{await ul("SetPluginEnabled",_.name,v),t(0,s=await ul("ListPlugins")||[]),l&&l()}catch(k){t(2,i=String(k))}}async function u(_){t(2,i="");try{await ul("InstallPlugin",_.name),_.installed=!0,t(0,s=await ul("ListPlugins")||[]),l&&l()}catch(v){t(2,i=String(v))}}async function d(_){if(confirm(`Удалить плагин «${_.name}»? Все данные плагина будут очищены. Файлы плагина сохранятся.`)){t(2,i="");try{await ul("UninstallPlugin",_.name),_.installed=!1,_.active=!1,t(0,s=await ul("ListPlugins")||[]),l&&l()}catch(v){t(2,i=String(v))}}}const m=_=>u(_),g=_=>c(_),h=_=>d(_);return n.$$set=_=>{"onPluginToggle"in _&&t(6,l=_.onPluginToggle)},n.$$.update=()=>{n.$$.dirty&1&&s.reduce((_,v)=>{var k,y;return _+(((y=(k=v.uiContribs)==null?void 0:k.sidebarItems)==null?void 0:y.length)||0)},0),n.$$.dirty&1&&s.reduce((_,v)=>{var k,y;return _+(((y=(k=v.uiContribs)==null?void 0:k.nodeTabs)==null?void 0:y.length)||0)},0)},[s,o,i,c,u,d,l,m,g,h]}class iv extends dt{constructor(e){super(),ft(this,e,sv,lv,ut,{onPluginToggle:6})}}function ov(n){let e,t,l,s;return{c(){e=f("div"),t=f("h2"),t.textContent=`${b("settings.files")}`,l=w(),s=f("p"),s.textContent=`${b("settings.filesStub")}`,r(t,"class","svelte-19bo7bn"),r(s,"class","section-desc svelte-19bo7bn"),r(e,"class","settings-section svelte-19bo7bn")},m(o,i){S(o,e,i),a(e,t),a(e,l),a(e,s)},p:ie,i:ie,o:ie,d(o){o&&T(e)}}}class rv extends dt{constructor(e){super(),ft(this,e,null,ov,ut,{})}}function av(n){let e,t,l,s;return{c(){e=f("div"),t=f("h2"),t.textContent=`${b("settings.activity")}`,l=w(),s=f("p"),s.textContent=`${b("settings.activityStub")}`,r(t,"class","svelte-19bo7bn"),r(s,"class","section-desc svelte-19bo7bn"),r(e,"class","settings-section svelte-19bo7bn")},m(o,i){S(o,e,i),a(e,t),a(e,l),a(e,s)},p:ie,i:ie,o:ie,d(o){o&&T(e)}}}class cv extends dt{constructor(e){super(),ft(this,e,null,av,ut,{})}}function sa(n){let e,t;return{c(){e=f("div"),t=F(n[2]),r(e,"class","error-msg svelte-1fx1e1e")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s[0]&4&&Q(t,l[2])},d(l){l&&T(e)}}}function ia(n){let e,t;return{c(){e=f("div"),t=F(n[3]),r(e,"class","result-msg svelte-1fx1e1e"),ce(e,"warning",n[4]==="warning")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s[0]&8&&Q(t,l[3]),s[0]&16&&ce(e,"warning",l[4]==="warning")},d(l){l&&T(e)}}}function uv(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y,E,C,A,N,I,M,R=b("settings.checkConnection")+"",O,L,H,W,U=b("common.connect")+"",K,Z,X,G,P,j=n[11]!==null&&oa(n);return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("label"),o=f("span"),o.textContent=`${b("settings.serverUrl")}`,i=w(),c=f("input"),u=w(),d=f("div"),m=f("label"),g=f("span"),g.textContent=`${b("sync.username")}`,h=w(),_=f("input"),v=w(),k=f("div"),y=f("label"),E=f("span"),E.textContent=`${b("sync.password")}`,C=w(),A=f("input"),N=w(),I=f("div"),M=f("button"),O=F(R),H=w(),W=f("button"),K=F(U),X=w(),j&&j.c(),r(o,"class","label-text"),r(c,"type","text"),r(c,"placeholder","https://example.com"),r(l,"class","form-group svelte-1fx1e1e"),r(g,"class","label-text"),r(_,"type","text"),r(d,"class","form-group svelte-1fx1e1e"),r(E,"class","label-text"),r(A,"type","password"),r(k,"class","form-group svelte-1fx1e1e"),r(M,"class","btn"),M.disabled=L=n[1]||!n[5],r(W,"class","btn btn-primary"),W.disabled=Z=n[1]||!n[5]||!n[6]||!n[7],r(I,"class","sync-setup-actions svelte-1fx1e1e"),r(t,"class","sync-setup svelte-1fx1e1e"),r(e,"class","settings-card svelte-1fx1e1e")},m(B,J){S(B,e,J),a(e,t),a(t,l),a(l,s),a(s,o),a(s,i),a(s,c),Ie(c,n[5]),a(t,u),a(t,d),a(d,m),a(m,g),a(m,h),a(m,_),Ie(_,n[6]),a(t,v),a(t,k),a(k,y),a(y,E),a(y,C),a(y,A),Ie(A,n[7]),a(t,N),a(t,I),a(I,M),a(M,O),a(I,H),a(I,W),a(W,K),a(t,X),j&&j.m(t,null),G||(P=[D(c,"input",n[23]),D(_,"input",n[24]),D(A,"input",n[25]),D(M,"click",n[12]),D(W,"click",n[13])],G=!0)},p(B,J){J[0]&32&&c.value!==B[5]&&Ie(c,B[5]),J[0]&64&&_.value!==B[6]&&Ie(_,B[6]),J[0]&128&&A.value!==B[7]&&Ie(A,B[7]),J[0]&34&&L!==(L=B[1]||!B[5])&&(M.disabled=L),J[0]&226&&Z!==(Z=B[1]||!B[5]||!B[6]||!B[7])&&(W.disabled=Z),B[11]!==null?j?j.p(B,J):(j=oa(B),j.c(),j.m(t,null)):j&&(j.d(1),j=null)},d(B){B&&T(e),j&&j.d(),G=!1,Se(P)}}}function fv(n){let e,t,l,s,o,i,c=n[20](n[0].lastStatus)+"",u,d,m,g,h,_,v,k,y,E=b("settings.syncNow")+"",C,A,N,I=b("settings.disconnect")+"",M,R,O,L=b("settings.resetKey")+"",H,W,U,K,Z,X,G,P,j,B,J,q,Y=n[0].serverUrl&&ra(n),$=n[0].deviceName&&aa(n),ne=n[0].deviceId&&ca(n),te=n[0].lastSyncAt&&ua(n),pe=n[0].lastError&&fa(n);return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("span"),s.textContent=`${b("settings.status")}`,o=w(),i=f("span"),u=F(c),d=w(),Y&&Y.c(),m=w(),$&&$.c(),g=w(),ne&&ne.c(),h=w(),te&&te.c(),_=w(),pe&&pe.c(),v=w(),k=f("div"),y=f("button"),C=F(E),A=w(),N=f("button"),M=F(I),R=w(),O=f("button"),H=F(L),W=w(),U=f("div"),K=f("label"),Z=f("span"),Z.textContent=`${b("sync.interval")}`,X=w(),G=f("div"),P=f("input"),j=w(),B=f("button"),B.textContent=`${b("common.save")}`,r(s,"class","info-label svelte-1fx1e1e"),r(i,"class","info-value svelte-1fx1e1e"),ce(i,"status-ok",n[0].lastStatus==="connected"),ce(i,"status-err",n[0].lastStatus==="error"||n[0].lastStatus==="revoked"),r(l,"class","info-row svelte-1fx1e1e"),r(t,"class","sync-info svelte-1fx1e1e"),r(e,"class","settings-card svelte-1fx1e1e"),r(y,"class","btn btn-primary"),y.disabled=n[1],r(N,"class","btn"),N.disabled=n[1],r(O,"class","btn"),O.disabled=n[1],r(k,"class","sync-actions svelte-1fx1e1e"),r(Z,"class","label-text"),r(P,"type","number"),r(P,"min","0"),r(P,"placeholder","0"),r(P,"class","svelte-1fx1e1e"),r(B,"class","btn btn-sm"),r(G,"class","interval-row svelte-1fx1e1e"),r(U,"class","sync-interval svelte-1fx1e1e")},m(Te,Fe){S(Te,e,Fe),a(e,t),a(t,l),a(l,s),a(l,o),a(l,i),a(i,u),a(t,d),Y&&Y.m(t,null),a(t,m),$&&$.m(t,null),a(t,g),ne&&ne.m(t,null),a(t,h),te&&te.m(t,null),a(t,_),pe&&pe.m(t,null),S(Te,v,Fe),S(Te,k,Fe),a(k,y),a(y,C),a(k,A),a(k,N),a(N,M),a(k,R),a(k,O),a(O,H),S(Te,W,Fe),S(Te,U,Fe),a(U,K),a(K,Z),a(K,X),a(K,G),a(G,P),Ie(P,n[8]),a(G,j),a(G,B),J||(q=[D(y,"click",n[14]),D(N,"click",n[16]),D(O,"click",n[18]),D(P,"input",n[22]),D(B,"click",n[15])],J=!0)},p(Te,Fe){Fe[0]&1&&c!==(c=Te[20](Te[0].lastStatus)+"")&&Q(u,c),Fe[0]&1&&ce(i,"status-ok",Te[0].lastStatus==="connected"),Fe[0]&1&&ce(i,"status-err",Te[0].lastStatus==="error"||Te[0].lastStatus==="revoked"),Te[0].serverUrl?Y?Y.p(Te,Fe):(Y=ra(Te),Y.c(),Y.m(t,m)):Y&&(Y.d(1),Y=null),Te[0].deviceName?$?$.p(Te,Fe):($=aa(Te),$.c(),$.m(t,g)):$&&($.d(1),$=null),Te[0].deviceId?ne?ne.p(Te,Fe):(ne=ca(Te),ne.c(),ne.m(t,h)):ne&&(ne.d(1),ne=null),Te[0].lastSyncAt?te?te.p(Te,Fe):(te=ua(Te),te.c(),te.m(t,_)):te&&(te.d(1),te=null),Te[0].lastError?pe?pe.p(Te,Fe):(pe=fa(Te),pe.c(),pe.m(t,null)):pe&&(pe.d(1),pe=null),Fe[0]&2&&(y.disabled=Te[1]),Fe[0]&2&&(N.disabled=Te[1]),Fe[0]&2&&(O.disabled=Te[1]),Fe[0]&256&&Hl(P.value)!==Te[8]&&Ie(P,Te[8])},d(Te){Te&&(T(e),T(v),T(k),T(W),T(U)),Y&&Y.d(),$&&$.d(),ne&&ne.d(),te&&te.d(),pe&&pe.d(),J=!1,Se(q)}}}function oa(n){let e,t=(n[11]?b("common.test")+" OK":b("error.generic"))+"",l;return{c(){e=f("div"),l=F(t),r(e,"class","connection-result svelte-1fx1e1e"),ce(e,"ok",n[11]),ce(e,"fail",!n[11])},m(s,o){S(s,e,o),a(e,l)},p(s,o){o[0]&2048&&t!==(t=(s[11]?b("common.test")+" OK":b("error.generic"))+"")&&Q(l,t),o[0]&2048&&ce(e,"ok",s[11]),o[0]&2048&&ce(e,"fail",!s[11])},d(s){s&&T(e)}}}function ra(n){let e,t,l,s,o=n[0].serverUrl+"",i;return{c(){e=f("div"),t=f("span"),t.textContent=`${b("settings.serverUrl")}`,l=w(),s=f("span"),i=F(o),r(t,"class","info-label svelte-1fx1e1e"),r(s,"class","info-value mono svelte-1fx1e1e"),r(e,"class","info-row svelte-1fx1e1e")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,i)},p(c,u){u[0]&1&&o!==(o=c[0].serverUrl+"")&&Q(i,o)},d(c){c&&T(e)}}}function aa(n){let e,t,l,s,o=n[0].deviceName+"",i;return{c(){e=f("div"),t=f("span"),t.textContent=`${b("settings.deviceName")}`,l=w(),s=f("span"),i=F(o),r(t,"class","info-label svelte-1fx1e1e"),r(s,"class","info-value svelte-1fx1e1e"),r(e,"class","info-row svelte-1fx1e1e")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,i)},p(c,u){u[0]&1&&o!==(o=c[0].deviceName+"")&&Q(i,o)},d(c){c&&T(e)}}}function ca(n){let e,t,l,s,o=n[0].deviceId+"",i;return{c(){e=f("div"),t=f("span"),t.textContent=`${b("settings.deviceId")}`,l=w(),s=f("span"),i=F(o),r(t,"class","info-label svelte-1fx1e1e"),r(s,"class","info-value mono svelte-1fx1e1e"),r(e,"class","info-row svelte-1fx1e1e")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,i)},p(c,u){u[0]&1&&o!==(o=c[0].deviceId+"")&&Q(i,o)},d(c){c&&T(e)}}}function ua(n){let e,t,l,s,o=n[0].lastSyncAt+"",i;return{c(){e=f("div"),t=f("span"),t.textContent=`${b("settings.lastSync")}`,l=w(),s=f("span"),i=F(o),r(t,"class","info-label svelte-1fx1e1e"),r(s,"class","info-value svelte-1fx1e1e"),r(e,"class","info-row svelte-1fx1e1e")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,i)},p(c,u){u[0]&1&&o!==(o=c[0].lastSyncAt+"")&&Q(i,o)},d(c){c&&T(e)}}}function fa(n){let e,t,l,s,o=n[0].lastError+"",i;return{c(){e=f("div"),t=f("span"),t.textContent=`${b("settings.lastError")}`,l=w(),s=f("span"),i=F(o),r(t,"class","info-label svelte-1fx1e1e"),r(s,"class","info-value error svelte-1fx1e1e"),r(e,"class","info-row svelte-1fx1e1e")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,i)},p(c,u){u[0]&1&&o!==(o=c[0].lastError+"")&&Q(i,o)},d(c){c&&T(e)}}}function da(n){let e,t,l,s,o,i,c,u,d,m,g,h;return{c(){e=f("button"),t=f("div"),l=f("h3"),l.textContent=`${b("settings.confirmDisconnect")}`,s=w(),o=f("p"),o.textContent=`${b("settings.confirmDisconnectDesc")}`,i=w(),c=f("div"),u=f("button"),u.textContent=`${b("common.disconnect")}`,d=w(),m=f("button"),m.textContent=`${b("common.cancel")}`,r(l,"class","svelte-1fx1e1e"),r(o,"class","modal-desc svelte-1fx1e1e"),r(u,"class","btn btn-danger"),r(m,"class","btn"),r(c,"class","modal-actions svelte-1fx1e1e"),r(t,"class","modal svelte-1fx1e1e"),r(e,"class","modal-overlay svelte-1fx1e1e")},m(_,v){S(_,e,v),a(e,t),a(t,l),a(t,s),a(t,o),a(t,i),a(t,c),a(c,u),a(c,d),a(c,m),g||(h=[D(u,"click",n[17]),D(m,"click",n[26]),D(e,"click",n[27])],g=!0)},p:ie,d(_){_&&T(e),g=!1,Se(h)}}}function pa(n){let e,t,l,s,o,i,c,u,d,m,g,h;return{c(){e=f("button"),t=f("div"),l=f("h3"),l.textContent=`${b("settings.confirmResetKey")}`,s=w(),o=f("p"),o.textContent=`${b("settings.confirmResetKeyDesc")}`,i=w(),c=f("div"),u=f("button"),u.textContent=`${b("settings.resetKey")}`,d=w(),m=f("button"),m.textContent=`${b("common.cancel")}`,r(l,"class","svelte-1fx1e1e"),r(o,"class","modal-desc svelte-1fx1e1e"),r(u,"class","btn btn-danger"),r(m,"class","btn"),r(c,"class","modal-actions svelte-1fx1e1e"),r(t,"class","modal svelte-1fx1e1e"),r(e,"class","modal-overlay svelte-1fx1e1e")},m(_,v){S(_,e,v),a(e,t),a(t,l),a(t,s),a(t,o),a(t,i),a(t,c),a(c,u),a(c,d),a(c,m),g||(h=[D(u,"click",n[19]),D(m,"click",n[28]),D(e,"click",n[29])],g=!0)},p:ie,d(_){_&&T(e),g=!1,Se(h)}}}function dv(n){let e,t,l,s,o,i,c,u,d,m,g=n[2]&&sa(n),h=n[3]&&!n[2]&&ia(n);function _(C,A){return C[0]&&C[0].enabled?fv:uv}let v=_(n),k=v(n),y=n[9]&&da(n),E=n[10]&&pa(n);return{c(){e=f("div"),t=f("h2"),t.textContent=`${b("settings.sync")}`,l=w(),s=f("p"),s.textContent=`${b("settings.syncDesc")}`,o=w(),g&&g.c(),i=w(),h&&h.c(),c=w(),k.c(),u=w(),y&&y.c(),d=w(),E&&E.c(),m=wt(),r(t,"class","svelte-1fx1e1e"),r(s,"class","section-desc svelte-1fx1e1e"),r(e,"class","settings-section svelte-1fx1e1e")},m(C,A){S(C,e,A),a(e,t),a(e,l),a(e,s),a(e,o),g&&g.m(e,null),a(e,i),h&&h.m(e,null),a(e,c),k.m(e,null),S(C,u,A),y&&y.m(C,A),S(C,d,A),E&&E.m(C,A),S(C,m,A)},p(C,A){C[2]?g?g.p(C,A):(g=sa(C),g.c(),g.m(e,i)):g&&(g.d(1),g=null),C[3]&&!C[2]?h?h.p(C,A):(h=ia(C),h.c(),h.m(e,c)):h&&(h.d(1),h=null),v===(v=_(C))&&k?k.p(C,A):(k.d(1),k=v(C),k&&(k.c(),k.m(e,null))),C[9]?y?y.p(C,A):(y=da(C),y.c(),y.m(d.parentNode,d)):y&&(y.d(1),y=null),C[10]?E?E.p(C,A):(E=pa(C),E.c(),E.m(m.parentNode,m)):E&&(E.d(1),E=null)},i:ie,o:ie,d(C){C&&(T(e),T(u),T(d),T(m)),g&&g.d(),h&&h.d(),k.d(),y&&y.d(C),E&&E.d(C)}}}function fl(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function pv(n,e,t){let{onRefresh:l=null}=e,s=null,o=!1,i="",c="",u="",d="",m="",g="",h=0,_=!1,v=!1,k=null;async function y(){try{t(0,s=await fl("GetSyncSettings")),s&&(t(5,d=s.serverUrl||""),t(8,h=s.syncInterval||0))}catch{t(0,s=null)}}y();async function E(){t(1,o=!0),t(2,i=""),t(4,u=""),t(11,k=null);try{await fl("SyncTestConnection",d,m,g),t(11,k=!0),t(3,c="connection ok")}catch(B){t(11,k=!1),t(3,c="connection failed: "+String(B))}t(1,o=!1)}async function C(){t(1,o=!0),t(2,i=""),t(4,u="");try{await fl("SyncConfigure",d,m,g),t(3,c="configured"),t(6,m=""),t(7,g=""),await y(),l&&l()}catch(B){t(2,i=String(B))}t(1,o=!1)}function A(B){const J=Array.isArray(B==null?void 0:B.conflicts)?B.conflicts:[],q=Array.isArray(B==null?void 0:B.applyErrors)?B.applyErrors:[],Y=[];return J.length>0&&Y.push(b("sync.conflictsCount",{count:J.length})),q.length>0&&Y.push(b("sync.applyErrorsCount",{count:q.length})),Y.join(" · ")}async function N(){t(1,o=!0),t(2,i=""),t(4,u="");try{const B=await fl("SyncNow"),J=b("sync.pushedPulled",{pushed:(B==null?void 0:B.pushed)||0,pulled:(B==null?void 0:B.pulled)||0}),q=A(B);t(3,c=q?J+" · "+q:J),t(4,u=q?"warning":""),await y(),l&&l()}catch(B){t(2,i=String(B))}t(1,o=!1)}async function I(){try{await fl("SyncSetInterval",h),t(3,c=b("sync.settingsSaved")),t(4,u="")}catch(B){t(2,i=String(B))}}function M(){t(9,_=!0)}async function R(){t(9,_=!1),t(1,o=!0),t(4,u="");try{await fl("SyncDisconnect"),t(3,c="disconnected"),await y(),l&&l()}catch(B){t(2,i=String(B))}t(1,o=!1)}function O(){t(10,v=!0)}async function L(){t(10,v=!1),t(1,o=!0),t(4,u="");try{await fl("ResetSyncKey"),t(3,c="key reset"),await y(),l&&l()}catch(B){t(2,i=String(B))}t(1,o=!1)}function H(B){return B?{connected:b("settings.connected"),disconnected:b("settings.disconnected"),disabled:b("settings.notConfigured"),error:b("settings.error"),revoked:b("settings.revoked")}[B]||B:b("settings.notConfigured")}function W(){h=Hl(this.value),t(8,h)}function U(){d=this.value,t(5,d)}function K(){m=this.value,t(6,m)}function Z(){g=this.value,t(7,g)}const X=()=>t(9,_=!1),G=()=>t(9,_=!1),P=()=>t(10,v=!1),j=()=>t(10,v=!1);return n.$$set=B=>{"onRefresh"in B&&t(21,l=B.onRefresh)},[s,o,i,c,u,d,m,g,h,_,v,k,E,C,N,I,M,R,O,L,H,l,W,U,K,Z,X,G,P,j]}class mv extends dt{constructor(e){super(),ft(this,e,pv,dv,ut,{onRefresh:21},null,[-1,-1])}}function gv(n){let e,t,l,s;return{c(){e=f("div"),t=f("h2"),t.textContent=`${b("settings.backup")}`,l=w(),s=f("p"),s.textContent=`${b("settings.backupStub")}`,r(t,"class","svelte-19bo7bn"),r(s,"class","section-desc svelte-19bo7bn"),r(e,"class","settings-section svelte-19bo7bn")},m(o,i){S(o,e,i),a(e,t),a(e,l),a(e,s)},p:ie,i:ie,o:ie,d(o){o&&T(e)}}}class hv extends dt{constructor(e){super(),ft(this,e,null,gv,ut,{})}}function ma(n){let e,t;return{c(){e=f("div"),t=F(n[5]),r(e,"class","status-msg svelte-13i6m7m"),ce(e,"ok",n[6]==="ok"),ce(e,"error",n[6]==="error")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s&32&&Q(t,l[5]),s&64&&ce(e,"ok",l[6]==="ok"),s&64&&ce(e,"error",l[6]==="error")},d(l){l&&T(e)}}}function ga(n){let e,t,l,s,o,i;return{c(){e=f("div"),t=f("span"),t.textContent="Активный порт",l=w(),s=f("span"),o=F("127.0.0.1:"),i=F(n[3]),r(t,"class","info-label svelte-13i6m7m"),r(s,"class","info-value mono svelte-13i6m7m"),r(e,"class","info-row svelte-13i6m7m")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,o),a(s,i)},p(c,u){u&8&&Q(i,c[3])},d(c){c&&T(e)}}}function ha(n){let e,t,l,s;return{c(){e=f("button"),t=F("Перезапустить сервер"),r(e,"class","btn"),e.disabled=n[4]},m(o,i){S(o,e,i),a(e,t),l||(s=D(e,"click",n[8]),l=!0)},p(o,i){i&16&&(e.disabled=o[4])},d(o){o&&T(e),l=!1,s()}}}function _v(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y,E,C,A,N,I,M,R,O,L,H,W,U=n[2]?"Запущен":"Остановлен",K,Z,X,G,P,j,B,J,q,Y=n[5]&&ma(n),$=n[2]&&n[3]&&ga(n),ne=n[0]&&ha(n);return{c(){e=f("div"),t=f("h2"),t.textContent="Browser Bridge",l=w(),s=f("p"),s.textContent=`Локальный HTTP-сервер для приёма событий от браузерного расширения Verstak Bridge. + Работает только на 127.0.0.1.`,o=w(),Y&&Y.c(),i=w(),c=f("div"),u=f("div"),d=f("label"),m=f("input"),g=w(),h=f("span"),h.textContent="Включить Browser Bridge",_=w(),v=f("div"),k=f("label"),y=f("span"),y.textContent="Порт",E=w(),C=f("input"),N=w(),I=f("p"),I.textContent="По умолчанию: 9786. Требуется перезапуск сервера при изменении.",M=w(),R=f("div"),O=f("div"),L=f("span"),L.textContent="Статус",H=w(),W=f("span"),K=F(U),Z=w(),$&&$.c(),X=w(),G=f("div"),P=f("button"),j=F("Сохранить"),B=w(),ne&&ne.c(),r(t,"class","svelte-13i6m7m"),r(s,"class","section-desc svelte-13i6m7m"),r(m,"type","checkbox"),r(h,"class","toggle-text svelte-13i6m7m"),r(d,"class","toggle-label svelte-13i6m7m"),r(u,"class","form-group svelte-13i6m7m"),r(y,"class","label-text svelte-13i6m7m"),r(C,"type","number"),r(C,"min","1024"),r(C,"max","65535"),C.disabled=A=!n[0],r(C,"class","svelte-13i6m7m"),r(I,"class","field-hint svelte-13i6m7m"),r(v,"class","form-group svelte-13i6m7m"),r(L,"class","info-label svelte-13i6m7m"),r(W,"class","info-value svelte-13i6m7m"),ce(W,"status-ok",n[2]),ce(W,"status-off",!n[2]),r(O,"class","info-row svelte-13i6m7m"),r(R,"class","bridge-status svelte-13i6m7m"),r(c,"class","settings-card svelte-13i6m7m"),r(P,"class","btn btn-primary"),P.disabled=n[4],r(G,"class","actions svelte-13i6m7m"),r(e,"class","settings-section svelte-13i6m7m")},m(te,pe){S(te,e,pe),a(e,t),a(e,l),a(e,s),a(e,o),Y&&Y.m(e,null),a(e,i),a(e,c),a(c,u),a(u,d),a(d,m),m.checked=n[0],a(d,g),a(d,h),a(c,_),a(c,v),a(v,k),a(k,y),a(k,E),a(k,C),Ie(C,n[1]),a(v,N),a(v,I),a(c,M),a(c,R),a(R,O),a(O,L),a(O,H),a(O,W),a(W,K),a(R,Z),$&&$.m(R,null),a(e,X),a(e,G),a(G,P),a(P,j),a(G,B),ne&&ne.m(G,null),J||(q=[D(m,"change",n[10]),D(C,"input",n[11]),D(P,"click",n[7])],J=!0)},p(te,[pe]){te[5]?Y?Y.p(te,pe):(Y=ma(te),Y.c(),Y.m(e,i)):Y&&(Y.d(1),Y=null),pe&1&&(m.checked=te[0]),pe&1&&A!==(A=!te[0])&&(C.disabled=A),pe&2&&Hl(C.value)!==te[1]&&Ie(C,te[1]),pe&4&&U!==(U=te[2]?"Запущен":"Остановлен")&&Q(K,U),pe&4&&ce(W,"status-ok",te[2]),pe&4&&ce(W,"status-off",!te[2]),te[2]&&te[3]?$?$.p(te,pe):($=ga(te),$.c(),$.m(R,null)):$&&($.d(1),$=null),pe&16&&(P.disabled=te[4]),te[0]?ne?ne.p(te,pe):(ne=ha(te),ne.c(),ne.m(G,null)):ne&&(ne.d(1),ne=null)},i:ie,o:ie,d(te){te&&T(e),Y&&Y.d(),$&&$.d(),ne&&ne.d(),J=!1,Se(q)}}}function bv(n,e,t){let{appConfig:l=null}=e,s=!1,o=9786,i=!1,c=0,u=!1,d="",m="";function g(){if(l&&l.vault&&l.vault.bridge){const E=l.vault.bridge;t(0,s=E.enabled!==!1),t(1,o=E.port||9786)}}async function h(){try{if(window.go&&window.go.main&&window.go.main.App){const E=await window.go.main.App.BridgeInfo();t(2,i=E.running||!1),t(3,c=E.port||0)}}catch{t(2,i=!1),t(3,c=0)}}g(),h();async function _(){t(4,u=!0),t(5,d=""),t(6,m="");try{l||t(9,l={}),l.vault||t(9,l.vault={},l),l.vault.bridge||t(9,l.vault.bridge={},l),t(9,l.vault.bridge.enabled=s,l),t(9,l.vault.bridge.port=o,l),window.go&&window.go.main&&window.go.main.App&&await window.go.main.App.SaveAppConfig(l),t(5,d="saved"),t(6,m="ok"),await h()}catch(E){t(5,d=String(E)),t(6,m="error")}t(4,u=!1)}async function v(){t(4,u=!0),t(5,d=""),t(6,m="");try{window.go&&window.go.main&&window.go.main.App&&await window.go.main.App.RestartBridge(),t(5,d="bridge restarted"),t(6,m="ok"),await h()}catch(E){t(5,d=String(E)),t(6,m="error")}t(4,u=!1)}function k(){s=this.checked,t(0,s)}function y(){o=Hl(this.value),t(1,o)}return n.$$set=E=>{"appConfig"in E&&t(9,l=E.appConfig)},[s,o,i,c,u,d,m,_,v,l,k,y]}class vv extends dt{constructor(e){super(),ft(this,e,bv,_v,ut,{appConfig:9})}}const{window:kv}=Ji;function wv(n){let e,t;return e=new vv({props:{appConfig:n[2]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p(l,s){const o={};s&4&&(o.appConfig=l[2]),e.$set(o)},i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function yv(n){let e,t;return e=new hv({}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p:ie,i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Ev(n){let e,t;return e=new mv({props:{onRefresh:n[7]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p:ie,i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Tv(n){let e,t;return e=new cv({}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p:ie,i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Sv(n){let e,t;return e=new rv({}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p:ie,i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Cv(n){let e,t;return e=new iv({props:{onPluginToggle:n[0]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p(l,s){const o={};s&1&&(o.onPluginToggle=l[0]),e.$set(o)},i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Av(n){let e,t;return e=new Jb({props:{onRefresh:n[3]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p:ie,i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Nv(n){let e,t;return e=new Kb({props:{onRefresh:n[3]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p:ie,i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Rv(n){let e,t;return e=new jb({props:{appConfig:n[2],onSave:n[6]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p(l,s){const o={};s&4&&(o.appConfig=l[2]),e.$set(o)},i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Iv(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y;d=new zb({props:{activeSection:n[1],onSelect:n[4]}});const E=[Rv,Nv,Av,Cv,Sv,Tv,Ev,yv,wv],C=[];function A(N,I){return N[1]==="general"?0:N[1]==="workspace"?1:N[1]==="templates"?2:N[1]==="plugins"?3:N[1]==="files"?4:N[1]==="activity"?5:N[1]==="sync"?6:N[1]==="backup"?7:N[1]==="browserBridge"?8:-1}return~(h=A(n))&&(_=C[h]=E[h](n)),{c(){e=f("button"),t=f("div"),l=f("div"),s=f("h2"),s.textContent=`${b("settings.title")}`,o=w(),i=f("button"),i.innerHTML='',c=w(),u=f("div"),Qe(d.$$.fragment),m=w(),g=f("div"),_&&_.c(),r(s,"class","svelte-zf2zsc"),r(i,"class","close-btn svelte-zf2zsc"),r(i,"title",b("settings.close")),r(l,"class","settings-header svelte-zf2zsc"),r(g,"class","settings-content svelte-zf2zsc"),r(u,"class","settings-body svelte-zf2zsc"),r(t,"class","settings-window svelte-zf2zsc"),r(e,"class","settings-overlay svelte-zf2zsc")},m(N,I){S(N,e,I),a(e,t),a(t,l),a(l,s),a(l,o),a(l,i),a(t,c),a(t,u),Xe(d,u,null),a(u,m),a(u,g),~h&&C[h].m(g,null),v=!0,k||(y=[D(kv,"keydown",n[8]),D(i,"click",n[5]),D(e,"click",$t(n[5]))],k=!0)},p(N,[I]){const M={};I&2&&(M.activeSection=N[1]),d.$set(M);let R=h;h=A(N),h===R?~h&&C[h].p(N,I):(_&&(St(),Ee(C[R],1,1,()=>{C[R]=null}),Ct()),~h?(_=C[h],_?_.p(N,I):(_=C[h]=E[h](N),_.c()),he(_,1),_.m(g,null)):_=null)},i(N){v||(he(d.$$.fragment,N),he(_),v=!0)},o(N){Ee(d.$$.fragment,N),Ee(_),v=!1},d(N){N&&T(e),Je(d),~h&&C[h].d(),k=!1,Se(y)}}}function _a(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function Mv(n,e,t){let{onClose:l=null}=e,{onSyncRefresh:s=null}=e,{onPluginToggle:o=null}=e,{initialSection:i="general"}=e,c=i,u=null;async function d(){try{t(2,u=await _a("GetAppConfig"))}catch{t(2,u=null)}}d();function m(k){t(1,c=k)}function g(){l&&l()}async function h(k){try{await _a("SaveAppConfig",k),t(2,u=k)}catch(y){console.error(y)}}function _(){s&&s()}function v(k){k.key==="Escape"&&g()}return n.$$set=k=>{"onClose"in k&&t(9,l=k.onClose),"onSyncRefresh"in k&&t(10,s=k.onSyncRefresh),"onPluginToggle"in k&&t(0,o=k.onPluginToggle),"initialSection"in k&&t(11,i=k.initialSection)},[o,c,u,d,m,g,h,_,v,l,s,i]}class Lv extends dt{constructor(e){super(),ft(this,e,Mv,Iv,ut,{onClose:9,onSyncRefresh:10,onPluginToggle:0,initialSection:11})}}function Ov(n){let e,t,l,s,o,i,c,u;return{c(){e=f("div"),t=f("span"),l=w(),s=f("span"),s.textContent=`${b("sync.status.disabled")}`,o=w(),i=f("button"),i.textContent=`${b("sync.configure")}`,r(t,"class","sync-dot dot-disabled svelte-1rxbx0"),r(s,"class","sync-label svelte-1rxbx0"),r(i,"class","btn btn-xs svelte-1rxbx0"),r(e,"class","sync-status-row svelte-1rxbx0")},m(d,m){S(d,e,m),a(e,t),a(e,l),a(e,s),a(e,o),a(e,i),c||(u=D(i,"click",function(){In(n[5])&&n[5].apply(this,arguments)}),c=!0)},p(d,m){n=d},d(d){d&&T(e),c=!1,u()}}}function Dv(n){let e,t,l,s,o,i=n[7](n[0])+"",c,u,d,m,g,h=(n[1]?b("sync.running"):b("sync.run"))+"",_,v,k,y,E,C,A,N=n[0].unpushedOps>0&&ba(n),I=n[2]&&va(n);return{c(){e=f("div"),t=f("span"),s=w(),o=f("span"),c=F(i),u=w(),N&&N.c(),d=w(),m=f("div"),g=f("button"),_=F(h),v=w(),k=f("button"),k.textContent=`${b("sync.details")}`,y=w(),I&&I.c(),E=wt(),r(t,"class",l="sync-dot "+n[6](n[0])+" svelte-1rxbx0"),r(o,"class","sync-label svelte-1rxbx0"),r(g,"class","btn btn-xs svelte-1rxbx0"),g.disabled=n[1],r(k,"class","btn btn-xs btn-link svelte-1rxbx0"),r(m,"class","sync-actions-row svelte-1rxbx0"),r(e,"class","sync-status-row svelte-1rxbx0")},m(M,R){S(M,e,R),a(e,t),a(e,s),a(e,o),a(o,c),a(e,u),N&&N.m(e,null),a(e,d),a(e,m),a(m,g),a(g,_),a(m,v),a(m,k),S(M,y,R),I&&I.m(M,R),S(M,E,R),C||(A=[D(g,"click",function(){In(n[4])&&n[4].apply(this,arguments)}),D(k,"click",function(){In(n[5])&&n[5].apply(this,arguments)})],C=!0)},p(M,R){n=M,R&1&&l!==(l="sync-dot "+n[6](n[0])+" svelte-1rxbx0")&&r(t,"class",l),R&1&&i!==(i=n[7](n[0])+"")&&Q(c,i),n[0].unpushedOps>0?N?N.p(n,R):(N=ba(n),N.c(),N.m(e,d)):N&&(N.d(1),N=null),R&2&&h!==(h=(n[1]?b("sync.running"):b("sync.run"))+"")&&Q(_,h),R&2&&(g.disabled=n[1]),n[2]?I?I.p(n,R):(I=va(n),I.c(),I.m(E.parentNode,E)):I&&(I.d(1),I=null)},d(M){M&&(T(e),T(y),T(E)),N&&N.d(),I&&I.d(M),C=!1,Se(A)}}}function ba(n){let e,t=n[0].unpushedOps+"",l,s,o=b("sync.changes")+"",i;return{c(){e=f("span"),l=F(t),s=w(),i=F(o),r(e,"class","sync-count svelte-1rxbx0")},m(c,u){S(c,e,u),a(e,l),a(e,s),a(e,i)},p(c,u){u&1&&t!==(t=c[0].unpushedOps+"")&&Q(l,t)},d(c){c&&T(e)}}}function va(n){let e,t,l;return{c(){e=f("div"),t=F(n[2]),r(e,"class",l=Er(n[3]==="warning"?"sync-message sync-message-warning":"sync-message")+" svelte-1rxbx0")},m(s,o){S(s,e,o),a(e,t)},p(s,o){o&4&&Q(t,s[2]),o&8&&l!==(l=Er(s[3]==="warning"?"sync-message sync-message-warning":"sync-message")+" svelte-1rxbx0")&&r(e,"class",l)},d(s){s&&T(e)}}}function Pv(n){let e;function t(o,i){var c;return(c=o[0])!=null&&c.configured?Dv:Ov}let l=t(n),s=l(n);return{c(){e=f("div"),s.c(),r(e,"class","sync-status-widget svelte-1rxbx0")},m(o,i){S(o,e,i),s.m(e,null)},p(o,[i]){l===(l=t(o))&&s?s.p(o,i):(s.d(1),s=l(o),s&&(s.c(),s.m(e,null)))},i:ie,o:ie,d(o){o&&T(e),s.d()}}}function zv(n,e,t){let{syncStatus:l=null}=e,{syncLoading:s=!1}=e,{syncMessage:o=""}=e,{syncMessageKind:i=""}=e,{onSync:c=null}=e,{onOpenSettings:u=null}=e;function d(g){return!g||!g.configured?"dot-disabled":s?"dot-syncing":g.revoked?"dot-disabled":g.connected?"dot-connected":g.configured?"dot-warning":"dot-disabled"}function m(g){return!g||!g.configured?b("sync.status.disabled"):s?b("sync.status.syncing"):g.revoked?b("sync.status.error"):g.connected?b("sync.status.connected"):b("sync.status.disconnected")}return n.$$set=g=>{"syncStatus"in g&&t(0,l=g.syncStatus),"syncLoading"in g&&t(1,s=g.syncLoading),"syncMessage"in g&&t(2,o=g.syncMessage),"syncMessageKind"in g&&t(3,i=g.syncMessageKind),"onSync"in g&&t(4,c=g.onSync),"onOpenSettings"in g&&t(5,u=g.onOpenSettings)},[l,s,o,i,c,u,d,m]}class Bv extends dt{constructor(e){super(),ft(this,e,zv,Pv,ut,{syncStatus:0,syncLoading:1,syncMessage:2,syncMessageKind:3,onSync:4,onOpenSettings:5})}}function ka(n,e,t){const l=n.slice();return l[10]=e[t],l}function Fv(n){let e,t=we(n[0]),l=[];for(let s=0;s0&&wa(n),R=n[10].ts_start&&ya(n),O=n[10].status!=="pending"&&Ea(n),L=n[10].selected_text&&Ta(n),H=n[10].status==="pending"&&Sa(n);return{c(){e=f("div"),t=f("div"),s=F(l),o=w(),i=f("div"),c=f("div"),d=F(u),m=w(),g=f("div"),_=F(h),k=w(),y=f("div"),M&&M.c(),E=w(),R&&R.c(),C=w(),O&&O.c(),A=w(),L&&L.c(),N=w(),H&&H.c(),I=w(),r(t,"class","event-icon svelte-slao4o"),r(c,"class","event-domain svelte-slao4o"),r(g,"class","event-title svelte-slao4o"),r(g,"title",v=n[10].title),r(y,"class","event-meta svelte-slao4o"),r(i,"class","event-body svelte-slao4o"),r(e,"class","event-item svelte-slao4o"),ce(e,"pending",n[10].status==="pending")},m(W,U){S(W,e,U),a(e,t),a(t,s),a(e,o),a(e,i),a(i,c),a(c,d),a(i,m),a(i,g),a(g,_),a(i,k),a(i,y),M&&M.m(y,null),a(y,E),R&&R.m(y,null),a(y,C),O&&O.m(y,null),a(i,A),L&&L.m(i,null),a(e,N),H&&H.m(e,null),a(e,I)},p(W,U){U&1&&l!==(l=Aa(W[10].type)+"")&&Q(s,l),U&1&&u!==(u=(W[10].domain||"?")+"")&&Q(d,u),U&1&&h!==(h=Ws(W[10].title||W[10].url,80)+"")&&Q(_,h),U&1&&v!==(v=W[10].title)&&r(g,"title",v),W[10].active_seconds>0?M?M.p(W,U):(M=wa(W),M.c(),M.m(y,E)):M&&(M.d(1),M=null),W[10].ts_start?R?R.p(W,U):(R=ya(W),R.c(),R.m(y,C)):R&&(R.d(1),R=null),W[10].status!=="pending"?O?O.p(W,U):(O=Ea(W),O.c(),O.m(y,null)):O&&(O.d(1),O=null),W[10].selected_text?L?L.p(W,U):(L=Ta(W),L.c(),L.m(i,null)):L&&(L.d(1),L=null),W[10].status==="pending"?H?H.p(W,U):(H=Sa(W),H.c(),H.m(e,I)):H&&(H.d(1),H=null),U&1&&ce(e,"pending",W[10].status==="pending")},d(W){W&&T(e),M&&M.d(),R&&R.d(),O&&O.d(),L&&L.d(),H&&H.d()}}}function Uv(n){let e;return{c(){e=f("p"),e.textContent=`${b("noBrowserEvents","Нет событий браузера")}`,r(e,"class","empty-text svelte-slao4o")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Hv(n){let e;return{c(){e=f("p"),e.textContent=`${b("loading","Загрузка...")}`,r(e,"class","loading svelte-slao4o")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Wv(n){let e,t,l,s,o,i=n[1]?"⏳":"🔄",c,u,d,m;function g(v,k){return v[0].length===0?jv:Fv}let h=g(n),_=h(n);return{c(){e=f("div"),t=f("div"),l=f("h3"),l.textContent=`${b("browserEvents","События браузера")}`,s=w(),o=f("button"),c=F(i),u=w(),_.c(),r(l,"class","svelte-slao4o"),r(o,"class","refresh-btn svelte-slao4o"),o.disabled=n[1],r(t,"class","browser-header svelte-slao4o"),r(e,"class","browser-events svelte-slao4o")},m(v,k){S(v,e,k),a(e,t),a(t,l),a(t,s),a(t,o),a(o,c),a(e,u),_.m(e,null),d||(m=D(o,"click",function(){In(n[5])&&n[5].apply(this,arguments)}),d=!0)},p(v,[k]){n=v,k&2&&i!==(i=n[1]?"⏳":"🔄")&&Q(c,i),k&2&&(o.disabled=n[1]),h===(h=g(n))&&_?_.p(n,k):(_.d(1),_=h(n),_&&(_.c(),_.m(e,null)))},i:ie,o:ie,d(v){v&&T(e),_.d(),d=!1,m()}}}function Aa(n){return n==="page_visit"?"🌐":n==="note_capture"?"📝":n==="screenshot"?"📸":"•"}function Ws(n,e){return n?n.length>e?n.substring(0,e)+"...":n:""}function Gv(n,e,t){let{events:l=[]}=e,{loading:s=!1}=e,{onAccept:o=_=>{}}=e,{onDismiss:i=_=>{}}=e,{onAttach:c=_=>{}}=e,{onRefresh:u=()=>{}}=e,{formatTime:d=_=>""}=e;const m=_=>o(_),g=_=>c(_),h=_=>i(_);return n.$$set=_=>{"events"in _&&t(0,l=_.events),"loading"in _&&t(1,s=_.loading),"onAccept"in _&&t(2,o=_.onAccept),"onDismiss"in _&&t(3,i=_.onDismiss),"onAttach"in _&&t(4,c=_.onAttach),"onRefresh"in _&&t(5,u=_.onRefresh),"formatTime"in _&&t(6,d=_.formatTime)},[l,s,o,i,c,u,d,m,g,h]}class Kv extends dt{constructor(e){super(),ft(this,e,Gv,Wv,ut,{events:0,loading:1,onAccept:2,onDismiss:3,onAttach:4,onRefresh:5,formatTime:6})}}function Na(n,e,t){const l=n.slice();return l[69]=e[t],l}function Ra(n,e,t){const l=n.slice();return l[69]=e[t],l}function Ia(n,e,t){const l=n.slice();return l[64]=e[t],l[65]=e,l[66]=t,l}function Ma(n,e,t){const l=n.slice();return l[61]=e[t],l}function La(n,e,t){const l=n.slice();return l[61]=e[t],l}function Oa(n){let e,t;return{c(){e=f("span"),t=F(n[4]),r(e,"class","tab-badge svelte-ii7vwz")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s[0]&16&&Q(t,l[4])},d(l){l&&T(e)}}}function Da(n){let e,t=n[3].length+"",l;return{c(){e=f("span"),l=F(t),r(e,"class","tab-badge svelte-ii7vwz")},m(s,o){S(s,e,o),a(e,l)},p(s,o){o[0]&8&&t!==(t=s[3].length+"")&&Q(l,t)},d(s){s&&T(e)}}}function Pa(n){let e,t=n[15].length+"",l;return{c(){e=f("span"),l=F(t),r(e,"class","tab-badge svelte-ii7vwz")},m(s,o){S(s,e,o),a(e,l)},p(s,o){o[0]&32768&&t!==(t=s[15].length+"")&&Q(l,t)},d(s){s&&T(e)}}}function Vv(n){let e,t,l;return t=new Kv({props:{events:n[15],loading:n[16],formatTime:n[5],onAccept:n[17],onDismiss:n[18],onAttach:n[19],onRefresh:n[20]}}),{c(){e=f("div"),Qe(t.$$.fragment),r(e,"class","today-tab-content svelte-ii7vwz")},m(s,o){S(s,e,o),Xe(t,e,null),l=!0},p(s,o){const i={};o[0]&32768&&(i.events=s[15]),o[0]&65536&&(i.loading=s[16]),o[0]&32&&(i.formatTime=s[5]),o[0]&131072&&(i.onAccept=s[17]),o[0]&262144&&(i.onDismiss=s[18]),o[0]&524288&&(i.onAttach=s[19]),o[0]&1048576&&(i.onRefresh=s[20]),t.$set(i)},i(s){l||(he(t.$$.fragment,s),l=!0)},o(s){Ee(t.$$.fragment,s),l=!1},d(s){s&&T(e),Je(t)}}}function qv(n){let e,t,l,s,o,i,c,u,d,m,g=n[25]==="asc"?"↑":"↓",h,_,v,k;function y(A,N){return A[3].length===0?Qv:Jv}let E=y(n),C=E(n);return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("button"),s.textContent=`${b("today.sortByTime")}`,o=w(),i=f("button"),i.textContent=`${b("today.sortByName")}`,c=w(),u=f("button"),u.textContent=`${b("today.sortByType")}`,d=w(),m=f("span"),h=F(g),_=w(),C.c(),r(s,"class","sort-btn svelte-ii7vwz"),ce(s,"active",n[24]==="time"),r(i,"class","sort-btn svelte-ii7vwz"),ce(i,"active",n[24]==="name"),r(u,"class","sort-btn svelte-ii7vwz"),ce(u,"active",n[24]==="type"),r(m,"class","sort-dir svelte-ii7vwz"),r(l,"class","sort-controls svelte-ii7vwz"),r(t,"class","tab-controls svelte-ii7vwz"),r(e,"class","today-tab-content svelte-ii7vwz")},m(A,N){S(A,e,N),a(e,t),a(t,l),a(l,s),a(l,o),a(l,i),a(l,c),a(l,u),a(l,d),a(l,m),a(m,h),a(e,_),C.m(e,null),v||(k=[D(s,"click",n[56]),D(i,"click",n[57]),D(u,"click",n[58])],v=!0)},p(A,N){N[0]&16777216&&ce(s,"active",A[24]==="time"),N[0]&16777216&&ce(i,"active",A[24]==="name"),N[0]&16777216&&ce(u,"active",A[24]==="type"),N[0]&33554432&&g!==(g=A[25]==="asc"?"↑":"↓")&&Q(h,g),E===(E=y(A))&&C?C.p(A,N):(C.d(1),C=E(A),C&&(C.c(),C.m(e,null)))},i:ie,o:ie,d(A){A&&T(e),C.d(),v=!1,Se(k)}}}function Zv(n){let e,t,l,s,o,i,c,u,d,m,g=n[23]==="asc"?"↑":"↓",h,_,v,k;function y(A,N){return A[2].length===0?$v:xv}let E=y(n),C=E(n);return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("button"),s.textContent=`${b("today.sortByTime")}`,o=w(),i=f("button"),i.textContent=`${b("today.sortByName")}`,c=w(),u=f("button"),u.textContent=`${b("today.sortByType")}`,d=w(),m=f("span"),h=F(g),_=w(),C.c(),r(s,"class","sort-btn svelte-ii7vwz"),ce(s,"active",n[22]==="time"),r(i,"class","sort-btn svelte-ii7vwz"),ce(i,"active",n[22]==="name"),r(u,"class","sort-btn svelte-ii7vwz"),ce(u,"active",n[22]==="type"),r(m,"class","sort-dir svelte-ii7vwz"),r(l,"class","sort-controls svelte-ii7vwz"),r(t,"class","tab-controls svelte-ii7vwz"),r(e,"class","today-tab-content svelte-ii7vwz")},m(A,N){S(A,e,N),a(e,t),a(t,l),a(l,s),a(l,o),a(l,i),a(l,c),a(l,u),a(l,d),a(l,m),a(m,h),a(e,_),C.m(e,null),v||(k=[D(s,"click",n[51]),D(i,"click",n[52]),D(u,"click",n[53])],v=!0)},p(A,N){N[0]&4194304&&ce(s,"active",A[22]==="time"),N[0]&4194304&&ce(i,"active",A[22]==="name"),N[0]&4194304&&ce(u,"active",A[22]==="type"),N[0]&8388608&&g!==(g=A[23]==="asc"?"↑":"↓")&&Q(h,g),E===(E=y(A))&&C?C.p(A,N):(C.d(1),C=E(A),C&&(C.c(),C.m(e,null)))},i:ie,o:ie,d(A){A&&T(e),C.d(),v=!1,Se(k)}}}function Yv(n){let e;function t(o,i){return o[0].length===0?t0:e0}let l=t(n),s=l(n);return{c(){e=f("div"),s.c(),r(e,"class","today-tab-content svelte-ii7vwz")},m(o,i){S(o,e,i),s.m(e,null)},p(o,i){l===(l=t(o))&&s?s.p(o,i):(s.d(1),s=l(o),s&&(s.c(),s.m(e,null)))},i:ie,o:ie,d(o){o&&T(e),s.d()}}}function Xv(n){let e;function t(o,i){return!o[1]||!o[1].events||o[1].events.length===0?l0:n0}let l=t(n),s=l(n);return{c(){e=f("div"),s.c(),r(e,"class","today-tab-content svelte-ii7vwz")},m(o,i){S(o,e,i),s.m(e,null)},p(o,i){l===(l=t(o))&&s?s.p(o,i):(s.d(1),s=l(o),s&&(s.c(),s.m(e,null)))},i:ie,o:ie,d(o){o&&T(e),s.d()}}}function Jv(n){let e,t=we(Ya(n[3],n[24],n[25])),l=[];for(let s=0;s0&&ja(n);function ne(...ee){return n[43](n[64],n[65],n[66],...ee)}function te(){return n[44](n[64])}function pe(){return n[45](n[64])}function Te(){return n[46](n[64])}function Fe(){return n[47](n[64],n[65],n[66])}function qe(...ee){return n[48](n[64],n[65],n[66],...ee)}let Ne=n[64]._expanded&&n[64].events&&n[64].events.length>0&&Ua(n);return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("button"),i=F(o),c=w(),u=f("span"),m=F(d),g=w(),h=f("span"),v=F(_),k=w(),E=F(y),$&&$.c(),C=w(),A=f("div"),N=f("span"),R=w(),O=f("input"),H=w(),W=f("span"),W.textContent=`${b("suggest.minutes")}`,U=w(),K=f("button"),K.textContent=`${b("suggest.edit")}`,Z=w(),X=f("button"),X.textContent=`${b("suggest.apply")}`,G=w(),P=f("button"),P.textContent=`${b("common.delete")}`,j=w(),Ne&&Ne.c(),B=w(),r(s,"class","suggestion-node link-btn svelte-ii7vwz"),r(u,"class","suggestion-summary svelte-ii7vwz"),r(h,"class","suggestion-meta svelte-ii7vwz"),r(l,"class","suggestion-info svelte-ii7vwz"),r(N,"class","suggestion-confidence-dot svelte-ii7vwz"),r(N,"title",I=b("suggest.confidence."+n[64].confidence)),r(N,"aria-label",M=b("suggest.confidence."+n[64].confidence)),ce(N,"low",n[64].confidence==="low"),ce(N,"medium",n[64].confidence==="medium"),ce(N,"high",n[64].confidence==="high"),r(O,"type","number"),r(O,"class","suggestion-min-input svelte-ii7vwz"),O.value=L=n[64].suggestedMin,r(O,"min","1"),r(O,"max","480"),r(W,"class","suggestion-min-label svelte-ii7vwz"),r(K,"class","btn btn-sm svelte-ii7vwz"),r(X,"class","btn btn-sm btn-primary svelte-ii7vwz"),r(P,"class","btn btn-sm btn-danger svelte-ii7vwz"),r(A,"class","suggestion-actions svelte-ii7vwz"),r(t,"class","suggestion-main svelte-ii7vwz"),r(t,"role","button"),r(t,"tabindex","0"),r(e,"class","suggestion-card svelte-ii7vwz"),ce(e,"expanded",n[64]._expanded)},m(ee,oe){S(ee,e,oe),a(e,t),a(t,l),a(l,s),a(s,i),a(l,c),a(l,u),a(u,m),a(l,g),a(l,h),a(h,v),a(h,k),a(h,E),$&&$.m(h,null),a(t,C),a(t,A),a(A,N),a(A,R),a(A,O),a(A,H),a(A,W),a(A,U),a(A,K),a(A,Z),a(A,X),a(A,G),a(A,P),a(e,j),Ne&&Ne.m(e,null),a(e,B),J||(q=[D(s,"click",We(Y)),D(O,"change",We(ne)),D(K,"click",We(te)),D(X,"click",We(pe)),D(P,"click",We(Te)),D(t,"click",Fe),D(t,"keydown",qe)],J=!0)},p(ee,oe){n=ee,oe[0]&1&&o!==(o=n[64].nodeTitle+"")&&Q(i,o),oe[0]&1&&d!==(d=n[64].summary+"")&&Q(m,d),oe[0]&1&&_!==(_=n[64].suggestedMin+"")&&Q(v,_),n[64].events&&n[64].events.length>0?$?$.p(n,oe):($=ja(n),$.c(),$.m(h,null)):$&&($.d(1),$=null),oe[0]&1&&I!==(I=b("suggest.confidence."+n[64].confidence))&&r(N,"title",I),oe[0]&1&&M!==(M=b("suggest.confidence."+n[64].confidence))&&r(N,"aria-label",M),oe[0]&1&&ce(N,"low",n[64].confidence==="low"),oe[0]&1&&ce(N,"medium",n[64].confidence==="medium"),oe[0]&1&&ce(N,"high",n[64].confidence==="high"),oe[0]&1&&L!==(L=n[64].suggestedMin)&&O.value!==L&&(O.value=L),n[64]._expanded&&n[64].events&&n[64].events.length>0?Ne?Ne.p(n,oe):(Ne=Ua(n),Ne.c(),Ne.m(e,B)):Ne&&(Ne.d(1),Ne=null),oe[0]&1&&ce(e,"expanded",n[64]._expanded)},d(ee){ee&&T(e),$&&$.d(),Ne&&Ne.d(),J=!1,Se(q)}}}function n0(n){let e,t=we(n[1].events),l=[];for(let s=0;s',Z=w(),r(t,"class","feed-icon svelte-ii7vwz"),r(u,"class","feed-type svelte-ii7vwz"),r(h,"class","feed-colon svelte-ii7vwz"),r(v,"class","feed-title link-btn svelte-ii7vwz"),r(c,"class","feed-title-line svelte-ii7vwz"),r(I,"class","feed-event-type svelte-ii7vwz"),r(L,"class","feed-time svelte-ii7vwz"),r(C,"class","feed-meta-line svelte-ii7vwz"),r(i,"class","feed-body svelte-ii7vwz"),r(K,"class","feed-nav-btn svelte-ii7vwz"),r(K,"title",b("common.open")),r(e,"class","feed-item svelte-ii7vwz"),r(e,"role","button"),r(e,"tabindex","0")},m(q,Y){S(q,e,Y),a(e,t),a(t,s),a(e,o),a(e,i),a(i,c),a(c,u),a(u,m),a(c,g),a(c,h),a(c,_),a(c,v),a(v,y),a(i,E),a(i,C),P&&P.m(C,null),a(C,N),a(C,I),a(I,R),a(C,O),a(C,L),a(L,W),a(e,U),a(e,K),a(e,Z),X||(G=[D(K,"click",We(j)),D(e,"click",B),D(e,"keydown",J)],X=!0)},p(q,Y){n=q,Y[0]&2&&l!==(l=Za(n[61].eventType)+"")&&Q(s,l),Y[0]&2&&d!==(d=n[28](n[61])+"")&&Q(m,d),Y[0]&2&&k!==(k=(n[61].title||"")+"")&&Q(y,k),Y[0]&2&&(A=Gs(n[61])),A?P?P.p(n,Y):(P=Va(n),P.c(),P.m(C,N)):P&&(P.d(1),P=null),Y[0]&66&&M!==(M=n[6](n[61].eventType)+"")&&Q(R,M),Y[0]&34&&H!==(H=n[5](n[61].createdAt)+"")&&Q(W,H)},d(q){q&&T(e),P&&P.d(),X=!1,Se(G)}}}function s0(n){var J;let e,t,l,s=(((J=n[1])==null?void 0:J.date)||"")+"",o,i,c,u,d,m,g=b("today.suggestionsTab")+"",h,_,v,k,y,E,C=b("today.captured")+"",A,N,I,M,R,O,L,H,W,U,K,Z=n[4]>0&&Oa(n),X=n[3].length>0&&Da(n),G=n[15].length>0&&Pa(n);const P=[Xv,Yv,Zv,qv,Vv],j=[];function B(q,Y){return q[21]==="feed"?0:q[21]==="suggestions"?1:q[21]==="inprogress"?2:q[21]==="captured"?3:q[21]==="browser"?4:-1}return~(L=B(n))&&(H=j[L]=P[L](n)),{c(){e=f("div"),t=f("div"),l=f("span"),o=F(s),i=w(),c=f("div"),u=f("button"),u.textContent=`${b("today.feed")}`,d=w(),m=f("button"),h=F(g),_=w(),Z&&Z.c(),v=w(),k=f("button"),k.textContent=`${b("today.inProgress")}`,y=w(),E=f("button"),A=F(C),N=w(),X&&X.c(),I=w(),M=f("button"),R=F(`Браузер + `),G&&G.c(),O=w(),H&&H.c(),r(l,"class","today-date svelte-ii7vwz"),r(t,"class","today-header svelte-ii7vwz"),r(u,"class","today-tab svelte-ii7vwz"),ce(u,"active",n[21]==="feed"),r(m,"class","today-tab svelte-ii7vwz"),ce(m,"active",n[21]==="suggestions"),r(k,"class","today-tab svelte-ii7vwz"),ce(k,"active",n[21]==="inprogress"),r(E,"class","today-tab svelte-ii7vwz"),ce(E,"active",n[21]==="captured"),r(M,"class","today-tab svelte-ii7vwz"),ce(M,"active",n[21]==="browser"),r(c,"class","today-tabs svelte-ii7vwz"),r(e,"class","today-screen svelte-ii7vwz")},m(q,Y){S(q,e,Y),a(e,t),a(t,l),a(l,o),a(e,i),a(e,c),a(c,u),a(c,d),a(c,m),a(m,h),a(m,_),Z&&Z.m(m,null),a(c,v),a(c,k),a(c,y),a(c,E),a(E,A),a(E,N),X&&X.m(E,null),a(c,I),a(c,M),a(M,R),G&&G.m(M,null),a(e,O),~L&&j[L].m(e,null),W=!0,U||(K=[D(u,"click",n[34]),D(m,"click",n[35]),D(k,"click",n[36]),D(E,"click",n[37]),D(M,"click",n[38])],U=!0)},p(q,Y){var ne;(!W||Y[0]&2)&&s!==(s=(((ne=q[1])==null?void 0:ne.date)||"")+"")&&Q(o,s),(!W||Y[0]&2097152)&&ce(u,"active",q[21]==="feed"),q[4]>0?Z?Z.p(q,Y):(Z=Oa(q),Z.c(),Z.m(m,null)):Z&&(Z.d(1),Z=null),(!W||Y[0]&2097152)&&ce(m,"active",q[21]==="suggestions"),(!W||Y[0]&2097152)&&ce(k,"active",q[21]==="inprogress"),q[3].length>0?X?X.p(q,Y):(X=Da(q),X.c(),X.m(E,null)):X&&(X.d(1),X=null),(!W||Y[0]&2097152)&&ce(E,"active",q[21]==="captured"),q[15].length>0?G?G.p(q,Y):(G=Pa(q),G.c(),G.m(M,null)):G&&(G.d(1),G=null),(!W||Y[0]&2097152)&&ce(M,"active",q[21]==="browser");let $=L;L=B(q),L===$?~L&&j[L].p(q,Y):(H&&(St(),Ee(j[$],1,1,()=>{j[$]=null}),Ct()),~L?(H=j[L],H?H.p(q,Y):(H=j[L]=P[L](q),H.c()),he(H,1),H.m(e,null)):H=null)},i(q){W||(he(H),W=!0)},o(q){Ee(H),W=!1},d(q){q&&T(e),Z&&Z.d(),X&&X.d(),G&&G.d(),~L&&j[L].d(),U=!1,Se(K)}}}function Za(n){return n==="note_created"||n==="file_added"||n==="folder_added"||n==="node_created"?"+":n==="file_deleted"||n==="folder_deleted"?"×":n==="file_renamed"||n==="folder_renamed"||n==="node_updated"?"~":n==="file_copied"?"⧉":n==="file_moved"||n==="folder_moved"?"→":n==="note_updated"?"✎":n==="action_created"?"▶":n==="action_done"?"✓":n==="worklog_added"?"⏱":"•"}function Gs(n){const e=[];return n.nodePath&&e.push(n.nodePath),e.length>0?e.join(" → "):""}function Ya(n,e,t){const l=[...n];return l.sort((s,o)=>{let i=0;if(e==="name")i=(s.title||"").localeCompare(o.title||"");else if(e==="type"){const c=s.captureKind||s.sourceKind||"",u=o.captureKind||o.sourceKind||"";i=c.localeCompare(u)}else i=(s.capturedAt||s.createdAt||"").localeCompare(o.capturedAt||o.createdAt||"");return t==="asc"?i:-i}),l}function Xa(n){return{text:"📝",url:"🔗",file:"📄",image:"🖼",folder:"📁"}[n]||"📦"}function i0(n,e,t){let{todayDashboard:l=null}=e,{suggestions:s=[]}=e,{inProgressItems:o=[]}=e,{todayCaptures:i=[]}=e,{suggestionCount:c=0}=e,{formatTime:u=x=>""}=e,{eventLabel:d=x=>x}=e,{eventIcon:m=x=>""}=e,{inboxMetaText:g=x=>""}=e,{onOpenNodeById:h=x=>{}}=e,{onOpenActivityEvent:_=x=>{}}=e,{onOpenActivityTarget:v=x=>{}}=e,{onOpenSuggestionWorklog:k=x=>{}}=e,{onAcceptSuggestion:y=x=>{}}=e,{onDeleteSuggestion:E=x=>{}}=e,{onOpenNodeFolder:C=x=>{}}=e,{onOpenInboxArtifact:A=x=>{}}=e,{onOpenTrashNode:N=x=>{}}=e,{browserEvents:I=[]}=e,{browserLoading:M=!1}=e,{onBrowserAccept:R=x=>{}}=e,{onBrowserDismiss:O=x=>{}}=e,{onBrowserAttach:L=x=>{}}=e,{onBrowserRefresh:H=()=>{}}=e,W="feed";function U(x){y(x)}function K(x){E(x)}function Z(x){return!x||!x.eventType?"":d(x.eventType)}function X(x){if(!(!x||!x.eventType)){if(x.eventType==="folder_deleted"){x.targetId&&N(x.targetId);return}if(["file_added","file_deleted","file_renamed","file_copied","file_moved","folder_added","folder_renamed","folder_moved"].includes(x.eventType)){x.targetId?v(x):x.nodeId&&h(x.nodeId);return}if(["note_created","note_updated","note_deleted"].includes(x.eventType)){x.targetType==="note"&&x.targetId?v(x):x.nodeId&&h(x.nodeId);return}if(x.eventType==="worklog_added"){x.nodeId&&h(x.nodeId);return}if(["action_created","action_done"].includes(x.eventType)){x.nodeId&&h(x.nodeId);return}(x.id||x.nodeId)&&_(x)}}function G(x,ge,de){const Ae=[...x];return Ae.sort((it,ot)=>{let Ye=0;return ge==="name"?Ye=(it.title||"").localeCompare(ot.title||""):ge==="type"?Ye=(d(it.eventType)||"").localeCompare(d(ot.eventType)||""):Ye=(it.createdAt||"").localeCompare(ot.createdAt||""),de==="asc"?Ye:-Ye}),Ae}let P="time",j="desc",B="time",J="desc";const q=()=>t(21,W="feed"),Y=()=>t(21,W="suggestions"),$=()=>t(21,W="inprogress"),ne=()=>t(21,W="captured"),te=()=>t(21,W="browser"),pe=x=>X(x),Te=x=>X(x),Fe=(x,ge)=>ge.key==="Enter"&&X(x),qe=x=>h(x.nodeId),Ne=(x,ge,de,Ae)=>t(0,ge[de].suggestedMin=parseInt(Ae.target.value),s),ee=x=>k(x),oe=x=>U(x),Ce=x=>K(x),je=(x,ge,de)=>t(0,ge[de]._expanded=!x._expanded,s),_e=(x,ge,de,Ae)=>Ae.key==="Enter"&&t(0,ge[de]._expanded=!x._expanded,s),Ue=x=>v(x),pt=x=>C(x.nodeId),be=()=>{t(22,P="time"),t(23,j=P==="time"&&j==="desc"?"asc":"desc")},lt=()=>{t(22,P="name"),t(23,j=P==="name"&&j==="desc"?"asc":"desc")},Me=()=>{t(22,P="type"),t(23,j=P==="type"&&j==="desc"?"asc":"desc")},Re=x=>_(x),Pe=(x,ge)=>ge.key==="Enter"&&_(x),He=()=>{t(24,B="time"),t(25,J=B==="time"&&J==="desc"?"asc":"desc")},De=()=>{t(24,B="name"),t(25,J=B==="name"&&J==="desc"?"asc":"desc")},ze=()=>{t(24,B="type"),t(25,J=B==="type"&&J==="desc"?"asc":"desc")},ue=x=>A(x),ye=(x,ge)=>ge.key==="Enter"&&A(x);return n.$$set=x=>{"todayDashboard"in x&&t(1,l=x.todayDashboard),"suggestions"in x&&t(0,s=x.suggestions),"inProgressItems"in x&&t(2,o=x.inProgressItems),"todayCaptures"in x&&t(3,i=x.todayCaptures),"suggestionCount"in x&&t(4,c=x.suggestionCount),"formatTime"in x&&t(5,u=x.formatTime),"eventLabel"in x&&t(6,d=x.eventLabel),"eventIcon"in x&&t(7,m=x.eventIcon),"inboxMetaText"in x&&t(8,g=x.inboxMetaText),"onOpenNodeById"in x&&t(9,h=x.onOpenNodeById),"onOpenActivityEvent"in x&&t(10,_=x.onOpenActivityEvent),"onOpenActivityTarget"in x&&t(11,v=x.onOpenActivityTarget),"onOpenSuggestionWorklog"in x&&t(12,k=x.onOpenSuggestionWorklog),"onAcceptSuggestion"in x&&t(31,y=x.onAcceptSuggestion),"onDeleteSuggestion"in x&&t(32,E=x.onDeleteSuggestion),"onOpenNodeFolder"in x&&t(13,C=x.onOpenNodeFolder),"onOpenInboxArtifact"in x&&t(14,A=x.onOpenInboxArtifact),"onOpenTrashNode"in x&&t(33,N=x.onOpenTrashNode),"browserEvents"in x&&t(15,I=x.browserEvents),"browserLoading"in x&&t(16,M=x.browserLoading),"onBrowserAccept"in x&&t(17,R=x.onBrowserAccept),"onBrowserDismiss"in x&&t(18,O=x.onBrowserDismiss),"onBrowserAttach"in x&&t(19,L=x.onBrowserAttach),"onBrowserRefresh"in x&&t(20,H=x.onBrowserRefresh)},[s,l,o,i,c,u,d,m,g,h,_,v,k,C,A,I,M,R,O,L,H,W,P,j,B,J,U,K,Z,X,G,y,E,N,q,Y,$,ne,te,pe,Te,Fe,qe,Ne,ee,oe,Ce,je,_e,Ue,pt,be,lt,Me,Re,Pe,He,De,ze,ue,ye]}class o0 extends dt{constructor(e){super(),ft(this,e,i0,s0,ut,{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 r0(n){let e,t,l,s,o=n[3]&&Ja(n);return{c(){e=f("div"),o&&o.c(),t=w(),l=f("iframe"),r(l,"class","plugin-frame svelte-xgfxht"),r(l,"srcdoc",n[1]),r(l,"sandbox","allow-scripts allow-same-origin"),r(l,"title",s=n[0]+" panel"),r(e,"class","plugin-frame-container svelte-xgfxht")},m(i,c){S(i,e,c),o&&o.m(e,null),a(e,t),a(e,l),n[9](l)},p(i,c){i[3]?o?o.p(i,c):(o=Ja(i),o.c(),o.m(e,t)):o&&(o.d(1),o=null),c&2&&r(l,"srcdoc",i[1]),c&1&&s!==(s=i[0]+" panel")&&r(l,"title",s)},d(i){i&&T(e),o&&o.d(),n[9](null)}}}function a0(n){let e,t,l,s,o,i,c;return{c(){e=f("div"),t=f("p"),l=F("Плагин «"),s=F(n[0]),o=F("» активен, но HTML-панель не настроена."),i=w(),c=f("p"),c.innerHTML='Для отображения контента добавьте поле panel в plugin.json.',r(c,"class","hint"),r(e,"class","empty-state svelte-xgfxht")},m(u,d){S(u,e,d),a(e,t),a(t,l),a(t,s),a(t,o),a(e,i),a(e,c)},p(u,d){d&1&&Q(s,u[0])},d(u){u&&T(e)}}}function c0(n){let e;return{c(){e=f("p"),e.textContent="Загрузка…",r(e,"class","loading svelte-xgfxht")},m(t,l){S(t,e,l)},p:ie,d(t){t&&T(e)}}}function Ja(n){let e,t,l;return{c(){e=f("div"),t=F("⚠ "),l=F(n[3]),r(e,"class","plugin-error-bar svelte-xgfxht")},m(s,o){S(s,e,o),a(e,t),a(e,l)},p(s,o){o&8&&Q(l,s[3])},d(s){s&&T(e)}}}function u0(n){let e;function t(o,i){return o[2]?c0:o[1]?r0:a0}let l=t(n),s=l(n);return{c(){e=f("div"),s.c(),r(e,"class","plugin-page svelte-xgfxht")},m(o,i){S(o,e,i),s.m(e,null)},p(o,[i]){l===(l=t(o))&&s?s.p(o,i):(s.d(1),s=l(o),s&&(s.c(),s.m(e,null)))},i:ie,o:ie,d(o){o&&T(e),s.d()}}}function dl(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function f0(n,e,t){let l,s,o,i,{sectionId:c=""}=e,u="",d=!0,m="",g=null,h=[],_=!1;function v(R){console.log("[CalendarPluginPage] postToIframe: iframeReady="+_+", hasEl="+!!g+", hasCW="+!!(g!=null&&g.contentWindow)),g&&g.contentWindow&&_?(console.log("[CalendarPluginPage] postToIframe: sending msg.type="+R.type),g.contentWindow.postMessage(R,"*")):(console.log("[CalendarPluginPage] postToIframe: queuing msg.type="+R.type),h.push(R))}function k(R){if(!g||!g.contentWindow||R.source!==g.contentWindow)return;const O=R.data;if(!(!O||typeof O!="object")&&!(!O.source||typeof O.source!="string")&&!(!O.action||typeof O.action!="string"))switch(O.action){case"ready":for(_=!0;h.length>0;)g.contentWindow.postMessage(h.shift(),"*");y();break;case"get-events":E(O.data);break;case"create-event":C(O.data);break;case"update-event":A(O.data);break;case"delete-event":N(O.data);break;default:console.log("[CalendarPluginPage] Unknown iframe action:",O.action)}}async function y(){try{console.log("[CalendarPluginPage] loadCalendarData: step 1");const R=new Date,O=R.getFullYear(),L=R.getMonth(),H=new Date(O,L,1).toISOString().slice(0,10)+"T00:00:00",W=new Date(O,L+1,0).toISOString().slice(0,10)+"T23:59:59";console.log("[CalendarPluginPage] loadCalendarData: step 2, start="+H+", end="+W),console.log("[CalendarPluginPage] loadCalendarData: step 3, calling get_events...");const U=dl("CallPluginFunction",s,i+"get_events",JSON.stringify({start:H,end:W}));console.log("[CalendarPluginPage] loadCalendarData: step 4, calling get_categories...");const K=dl("CallPluginFunction",s,i+"get_categories","{}");console.log("[CalendarPluginPage] loadCalendarData: step 5, awaiting Promise.all...");const[Z,X]=await Promise.all([U,K]);console.log("[CalendarPluginPage] loadCalendarData: step 6, got results, eventsRaw="+typeof Z+", categoriesRaw="+typeof X);const G=Z?JSON.parse(Z):[],P=X?JSON.parse(X):[];v({source:"verstak",type:"calendar-data",events:G,categories:P});try{window.go.main.App.WriteDebugLog("[CalendarPluginPage] calendar-data sent to iframe, events.len="+G.length+", categories.len="+((P==null?void 0:P.length)||0)+", typeof events="+typeof G+", typeof eventsRaw="+typeof Z+", eventsRaw.length="+Z.length+", eventsRaw.substr(0,10)="+String(Z).substring(0,10))}catch{}}catch(R){console.error("[CalendarPluginPage] loadCalendarData:",R),console.log("[CalendarPluginPage] error details:",JSON.stringify({message:String(R),stack:R==null?void 0:R.stack})),t(3,m=String(R))}}async function E(R){try{const O=JSON.stringify({start:R.start,end:R.end}),L=await dl("CallPluginFunction",s,i+"get_events",O),H=L?JSON.parse(L):[];v({source:"verstak",type:"calendar-data",events:H})}catch(O){console.error("[CalendarPluginPage] get-events:",O)}}async function C(R){try{const O=JSON.stringify(R),L=await dl("CallPluginFunction",s,i+"create_event",O),H=L?JSON.parse(L):{};v({source:"verstak",type:"event-created",event:H}),y()}catch(O){console.error("[CalendarPluginPage] create-event:",O),v({source:"verstak",type:"error",message:String(O)})}}async function A(R){try{const O=JSON.stringify(R);await dl("CallPluginFunction",s,i+"update_event",O),v({source:"verstak",type:"event-updated",event:R}),y()}catch(O){console.error("[CalendarPluginPage] update-event:",O)}}async function N(R){try{const O=JSON.stringify({id:R.id});await dl("CallPluginFunction",s,i+"delete_event",O),v({source:"verstak",type:"event-deleted",id:R.id}),y()}catch(O){console.error("[CalendarPluginPage] delete-event:",O)}}us(async()=>{try{t(1,u=await dl("GetPluginPanelHTML",s)||"")}catch(R){t(3,m=String(R))}t(2,d=!1),window.addEventListener("message",k)}),fs(()=>{window.removeEventListener("message",k)});function I(R,O){v({source:"verstak",type:"drop",date:O,data:R})}function M(R){os[R?"unshift":"push"](()=>{g=R,t(4,g)})}return n.$$set=R=>{"sectionId"in R&&t(5,c=R.sectionId)},n.$$.update=()=>{n.$$.dirty&32&&t(8,l=c.split(":")),n.$$.dirty&256&&t(0,s=l[1]||""),n.$$.dirty&256&&t(7,o=l[2]||"main"),n.$$.dirty&128&&o.charAt(0).toUpperCase()+o.slice(1),n.$$.dirty&1&&(i=s?s+".":"")},[s,u,d,m,g,c,I,o,l,M]}class d0 extends dt{constructor(e){super(),ft(this,e,f0,u0,ut,{sectionId:5,handleDrop:6})}get handleDrop(){return this.$$.ctx[6]}}function Qa(n,e,t){const l=n.slice();return l[25]=e[t],l[27]=t,l}function xa(n){let e;function t(o,i){return o[3]?g0:o[1].length===0?m0:p0}let l=t(n),s=l(n);return{c(){e=f("div"),s.c(),r(e,"class","global-search-results svelte-1dlr37h")},m(o,i){S(o,e,i),s.m(e,null)},p(o,i){l===(l=t(o))&&s?s.p(o,i):(s.d(1),s=l(o),s&&(s.c(),s.m(e,null)))},d(o){o&&T(e),s.d()}}}function p0(n){let e,t=we(n[1]),l=[];for(let s=0;s[]}=e,{typeLabel:s=U=>U||""}=e;const o=kl();let i="",c=[],u=!1,d=!1,m=0,g,h;function _(U){const K=[],Z=s(U.type),X=_0(U);return Z&&K.push(Z),X&&K.push(X),K.join(" · ")}async function v(){const U=wd(i);if(U.length<2){t(1,c=[]),t(2,u=!1),t(3,d=!1);return}t(3,d=!0);try{t(1,c=await l("Search",U)||[]),t(4,m=0),t(2,u=!0)}catch{t(1,c=[]),t(2,u=!1)}finally{t(3,d=!1)}}function k(){clearTimeout(h),h=setTimeout(v,180)}function y(){t(2,u=!1),t(4,m=0)}function E(){t(0,i=""),t(1,c=[]),y()}function C(U){U&&(o("open",U),E(),g==null||g.blur())}function A(){k()}function N(U){if(U.key==="Escape"){U.preventDefault(),E(),g==null||g.blur();return}!u||c.length===0||(U.key==="ArrowDown"?(U.preventDefault(),t(4,m=Math.min(c.length-1,m+1))):U.key==="ArrowUp"?(U.preventDefault(),t(4,m=Math.max(0,m-1))):U.key==="Enter"&&(U.preventDefault(),C(c[m])))}async function I(){await r_(),g==null||g.focus(),g==null||g.select()}function M(U){if((U.ctrlKey||U.metaKey)&&U.key.toLowerCase()==="k"){U.preventDefault(),I();return}U.key==="/"&&!b0(U.target)&&(U.preventDefault(),I())}us(()=>{window.addEventListener("keydown",M)}),fs(()=>{window.removeEventListener("keydown",M),clearTimeout(h)});function R(U){os[U?"unshift":"push"](()=>{g=U,t(5,g)})}function O(){i=this.value,t(0,i)}const L=()=>{c.length>0&&t(2,u=!0)},H=()=>setTimeout(y,160),W=U=>C(U);return n.$$set=U=>{"wailsCall"in U&&t(11,l=U.wailsCall),"typeLabel"in U&&t(12,s=U.typeLabel)},[i,c,u,d,m,g,_,y,C,A,N,l,s,R,O,L,H,W]}class k0 extends dt{constructor(e){super(),ft(this,e,v0,h0,ut,{wailsCall:11,typeLabel:12})}}const w0=n=>({}),nc=n=>({});function lc(n){let e,t;return{c(){e=f("span"),t=F(n[1]),r(e,"class","header-subtitle svelte-7x8q9h")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s&2&&Q(t,l[1])},d(l){l&&T(e)}}}function y0(n){let e,t,l,s=(n[0]||"")+"",o,i,c,u,d,m,g,h=n[1]&&lc(n);d=new k0({props:{wailsCall:n[2],typeLabel:n[3]}}),d.$on("open",n[7]);const _=n[6].actions,v=t_(_,n,n[5],nc);return{c(){e=f("header"),t=f("div"),l=f("span"),o=F(s),i=w(),h&&h.c(),c=w(),u=f("div"),Qe(d.$$.fragment),m=w(),v&&v.c(),r(l,"class","header-title svelte-7x8q9h"),ce(l,"placeholder",!n[0]),r(t,"class","header-left svelte-7x8q9h"),r(u,"class","header-right svelte-7x8q9h"),r(e,"class","header svelte-7x8q9h")},m(k,y){S(k,e,y),a(e,t),a(t,l),a(l,o),a(t,i),h&&h.m(t,null),a(e,c),a(e,u),Xe(d,u,null),a(u,m),v&&v.m(u,null),g=!0},p(k,[y]){(!g||y&1)&&s!==(s=(k[0]||"")+"")&&Q(o,s),(!g||y&1)&&ce(l,"placeholder",!k[0]),k[1]?h?h.p(k,y):(h=lc(k),h.c(),h.m(t,null)):h&&(h.d(1),h=null);const E={};y&4&&(E.wailsCall=k[2]),y&8&&(E.typeLabel=k[3]),d.$set(E),v&&v.p&&(!g||y&32)&&l_(v,_,k,k[5],g?n_(_,k[5],y,w0):s_(k[5]),nc)},i(k){g||(he(d.$$.fragment,k),he(v,k),g=!0)},o(k){Ee(d.$$.fragment,k),Ee(v,k),g=!1},d(k){k&&T(e),h&&h.d(),Je(d),v&&v.d(k)}}}function E0(n,e,t){let{$$slots:l={},$$scope:s}=e,{title:o=""}=e,{subtitle:i=""}=e,{wailsCall:c=async()=>[]}=e,{typeLabel:u=g=>g||""}=e,{onOpenSearchResult:d=()=>{}}=e;const m=g=>d(g.detail);return n.$$set=g=>{"title"in g&&t(0,o=g.title),"subtitle"in g&&t(1,i=g.subtitle),"wailsCall"in g&&t(2,c=g.wailsCall),"typeLabel"in g&&t(3,u=g.typeLabel),"onOpenSearchResult"in g&&t(4,d=g.onOpenSearchResult),"$$scope"in g&&t(5,s=g.$$scope)},[o,i,c,u,d,s,l,m]}class T0 extends dt{constructor(e){super(),ft(this,e,E0,y0,ut,{title:0,subtitle:1,wailsCall:2,typeLabel:3,onOpenSearchResult:4})}}const S0={open:'',showInExplorer:'',delete:'',restore:'',purge:'',move:'',attach:'',back:'',emptyTrash:'',folder:''};function Et(n,e=16){return`${S0[n]||""}`}function C0(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y,E,C,A,N,I,M,R,O,L,H,W,U,K,Z,X,G,P,j,B,J,q,Y;return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("button"),s.innerHTML='B',o=w(),i=f("button"),i.innerHTML='I',c=w(),u=f("button"),u.innerHTML='H',d=w(),m=f("div"),g=w(),h=f("div"),_=f("button"),_.innerHTML='',v=w(),k=f("button"),k.innerHTML='',y=w(),E=f("button"),C=f("span"),C.textContent="",A=w(),N=f("div"),I=w(),M=f("div"),R=f("button"),R.innerHTML='',O=w(),L=f("button"),L.innerHTML='1.',H=w(),W=f("button"),W.innerHTML='',U=w(),K=f("button"),K.innerHTML='"',Z=w(),X=f("div"),G=w(),P=f("div"),j=f("button"),j.innerHTML='',B=w(),J=f("textarea"),r(s,"type","button"),r(s,"class","md-toolbar-btn svelte-1etjgc1"),r(s,"title",b("note.toolbar.bold")),r(s,"aria-label",b("note.toolbar.bold")),r(i,"type","button"),r(i,"class","md-toolbar-btn svelte-1etjgc1"),r(i,"title",b("note.toolbar.italic")),r(i,"aria-label",b("note.toolbar.italic")),r(u,"type","button"),r(u,"class","md-toolbar-btn svelte-1etjgc1"),r(u,"title",b("note.toolbar.heading")),r(u,"aria-label",b("note.toolbar.heading")),r(l,"class","md-toolbar-group svelte-1etjgc1"),r(m,"class","md-toolbar-sep svelte-1etjgc1"),r(_,"type","button"),r(_,"class","md-toolbar-btn svelte-1etjgc1"),r(_,"title",b("note.toolbar.link")),r(_,"aria-label",b("note.toolbar.link")),r(k,"type","button"),r(k,"class","md-toolbar-btn svelte-1etjgc1"),r(k,"title",b("note.toolbar.code")),r(k,"aria-label",b("note.toolbar.code")),r(C,"class","md-btn-label md-btn-sm svelte-1etjgc1"),r(E,"type","button"),r(E,"class","md-toolbar-btn svelte-1etjgc1"),r(E,"title",b("note.toolbar.codeBlock")),r(E,"aria-label",b("note.toolbar.codeBlock")),r(h,"class","md-toolbar-group svelte-1etjgc1"),r(N,"class","md-toolbar-sep svelte-1etjgc1"),r(R,"type","button"),r(R,"class","md-toolbar-btn svelte-1etjgc1"),r(R,"title",b("note.toolbar.bulletList")),r(R,"aria-label",b("note.toolbar.bulletList")),r(L,"type","button"),r(L,"class","md-toolbar-btn svelte-1etjgc1"),r(L,"title",b("note.toolbar.numberedList")),r(L,"aria-label",b("note.toolbar.numberedList")),r(W,"type","button"),r(W,"class","md-toolbar-btn svelte-1etjgc1"),r(W,"title",b("note.toolbar.checkbox")),r(W,"aria-label",b("note.toolbar.checkbox")),r(K,"type","button"),r(K,"class","md-toolbar-btn svelte-1etjgc1"),r(K,"title",b("note.toolbar.quote")),r(K,"aria-label",b("note.toolbar.quote")),r(M,"class","md-toolbar-group svelte-1etjgc1"),r(X,"class","md-toolbar-sep svelte-1etjgc1"),r(j,"type","button"),r(j,"class","md-toolbar-btn md-toolbar-btn--internal svelte-1etjgc1"),r(j,"title",b("note.toolbar.internalLink")),r(j,"aria-label",b("note.toolbar.internalLink")),r(P,"class","md-toolbar-group svelte-1etjgc1"),r(t,"class","md-toolbar svelte-1etjgc1"),r(t,"role","toolbar"),r(t,"aria-label","Markdown formatting"),r(J,"class","md-textarea svelte-1etjgc1"),r(J,"placeholder",n[2]),r(J,"spellcheck","true"),r(e,"class","md-editor svelte-1etjgc1"),ce(e,"mode-edit",n[1]==="edit"||n[1]==="split")},m($,ne){S($,e,ne),a(e,t),a(t,l),a(l,s),a(l,o),a(l,i),a(l,c),a(l,u),a(t,d),a(t,m),a(t,g),a(t,h),a(h,_),a(h,v),a(h,k),a(h,y),a(h,E),a(E,C),a(t,A),a(t,N),a(t,I),a(t,M),a(M,R),a(M,O),a(M,L),a(M,H),a(M,W),a(M,U),a(M,K),a(t,Z),a(t,X),a(t,G),a(t,P),a(P,j),a(e,B),a(e,J),Ie(J,n[0]),n[18](J),q||(Y=[D(s,"click",n[4]),D(i,"click",n[5]),D(u,"click",n[8]),D(_,"click",n[7]),D(k,"click",n[6]),D(E,"click",n[13]),D(R,"click",n[10]),D(L,"click",n[11]),D(W,"click",n[12]),D(K,"click",n[9]),D(j,"click",n[14]),D(J,"input",n[17]),D(J,"input",n[15]),D(J,"keydown",n[16])],q=!0)},p($,[ne]){ne&4&&r(J,"placeholder",$[2]),ne&1&&Ie(J,$[0]),ne&2&&ce(e,"mode-edit",$[1]==="edit"||$[1]==="split")},i:ie,o:ie,d($){$&&T(e),n[18](null),q=!1,Se(Y)}}}function A0(n,e,t){let{content:l=""}=e,{viewMode:s="edit"}=e,{placeholder:o=""}=e;const i=kl();let c;function u(L,H="",W=""){const U=c;if(!U)return;const K=U.selectionStart,Z=U.selectionEnd,X=l.substring(K,Z),P=L+(X||W)+H,j=l.substring(0,K)+P+l.substring(Z);t(0,l=j),i("content-change",{content:j}),requestAnimationFrame(()=>{U.focus(),X?(U.selectionStart=K+L.length,U.selectionEnd=K+L.length+X.length):(U.selectionStart=K+L.length,U.selectionEnd=K+L.length+W.length)})}function d(L){const H=c;if(!H)return;const W=H.selectionStart,U=H.selectionEnd;let K=W;for(;K>0&&l[K-1]!==` +`;)K--;let Z=U;for(;ZJ.startsWith(L)?J:L+J).join(` +`),B=l.substring(0,K)+j+l.substring(Z);t(0,l=B),i("content-change",{content:B}),requestAnimationFrame(()=>{H.focus(),H.selectionStart=K,H.selectionEnd=K+j.length})}function m(){u("**","**","bold text")}function g(){u("*","*","italic text")}function h(){u("`","`","code")}function _(){i("insert-link")}function v(){d("## ")}function k(){d("> ")}function y(){d("- ")}function E(){const L=c;if(!L)return;let W=L.selectionStart;for(;W>0&&l[W-1]!==` +`;)W--;let U=L.selectionEnd;for(;U{const J=B.trim();return B.replace(/^\s*\d+\.\s*/,""),`${X++}. ${J||"item"}`}).join(` +`),j=l.substring(0,W)+P+l.substring(U);t(0,l=j),i("content-change",{content:j}),requestAnimationFrame(()=>{L.focus(),L.selectionStart=W,L.selectionEnd=W+P.length})}function C(){d("- [ ] ")}function A(){const L=c;if(!L)return;const H=L.selectionStart,W=L.selectionEnd,U=l.substring(H,W),K=U?"```\n"+U+"\n```":"```\ncode here\n```",Z=l.substring(0,H)+K+l.substring(W);t(0,l=Z),i("content-change",{content:Z}),requestAnimationFrame(()=>{L.focus(),U?(L.selectionStart=H+4,L.selectionEnd=H+4+U.length):(L.selectionStart=H+4,L.selectionEnd=H+4+9)})}function N(){i("insert-internal-link")}function I(L){t(0,l=L.target.value),i("content-change",{content:l})}function M(L){if((L.ctrlKey||L.metaKey)&&L.key==="s"){L.preventDefault(),i("save");return}if(L.key==="Tab"){L.preventDefault();const H=L.target,W=H.selectionStart,U=H.selectionEnd;if(L.shiftKey){let K=W;for(;K>0&&l[K-1]!==` +`;)K--;let Z=U;for(;Z{H.focus(),H.selectionStart=K,H.selectionEnd=K+G.length})}else if(W===U){const K=l.substring(0,W)+" "+l.substring(U);t(0,l=K),i("content-change",{content:K}),requestAnimationFrame(()=>{H.focus(),H.selectionStart=H.selectionEnd=W+2})}else{let K=W;for(;K>0&&l[K-1]!==` +`;)K--;let Z=U;for(;Z{H.focus(),H.selectionStart=K,H.selectionEnd=K+G.length})}}}function R(){l=this.value,t(0,l)}function O(L){os[L?"unshift":"push"](()=>{c=L,t(3,c)})}return n.$$set=L=>{"content"in L&&t(0,l=L.content),"viewMode"in L&&t(1,s=L.viewMode),"placeholder"in L&&t(2,o=L.placeholder)},[l,s,o,c,m,g,h,_,v,k,y,E,C,A,N,I,M,R,O]}class yd extends dt{constructor(e){super(),ft(this,e,A0,C0,ut,{content:0,viewMode:1,placeholder:2})}}function $i(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var wl=$i();function Ed(n){wl=n}var ml={exec:()=>null};function Ol(n){let e=[];return t=>{let l=Math.max(0,Math.min(3,t-1)),s=e[l];return s||(s=n(l),e[l]=s),s}}function nt(n,e=""){let t=typeof n=="string"?n:n.source,l={replace:(s,o)=>{let i=typeof o=="string"?o:o.source;return i=i.replace(Ut.caret,"$1"),t=t.replace(s,i),l},getRegex:()=>new RegExp(t,e)};return l}var N0=((n="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:n=>new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Ol(n=>new RegExp(`^ {0,${n}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Ol(n=>new RegExp(`^ {0,${n}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Ol(n=>new RegExp(`^ {0,${n}}(?:\`\`\`|~~~)`)),headingBeginRegex:Ol(n=>new RegExp(`^ {0,${n}}#`)),htmlBeginRegex:Ol(n=>new RegExp(`^ {0,${n}}<(?:[a-z].*>|!--)`,"i")),blockquoteBeginRegex:Ol(n=>new RegExp(`^ {0,${n}}>`))},R0=/^(?:[ \t]*(?:\n|$))+/,I0=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,M0=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,ds=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,L0=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,eo=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Td=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Sd=nt(Td).replace(/bull/g,eo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),O0=nt(Td).replace(/bull/g,eo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),to=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,D0=/^[^\n]+/,no=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,P0=nt(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",no).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),z0=nt(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,eo).getRegex(),Qs="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",lo=/|$))/,B0=nt("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",lo).replace("tag",Qs).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Cd=nt(to).replace("hr",ds).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qs).getRegex(),F0=nt(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Cd).getRegex(),so={blockquote:F0,code:I0,def:P0,fences:M0,heading:L0,hr:ds,html:B0,lheading:Sd,list:z0,newline:R0,paragraph:Cd,table:ml,text:D0},sc=nt("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",ds).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qs).getRegex(),j0={...so,lheading:O0,table:sc,paragraph:nt(to).replace("hr",ds).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",sc).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Qs).getRegex()},U0={...so,html:nt(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",lo).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ml,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:nt(to).replace("hr",ds).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",Sd).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},H0=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,W0=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Ad=/^( {2,}|\\)\n(?!\s*$)/,G0=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",N0?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Rd=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Y0=nt(Rd,"u").replace(/punct/g,Wl).getRegex(),X0=nt(Rd,"u").replace(/punct/g,Nd).getRegex(),Id="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",J0=nt(Id,"gu").replace(/notPunctSpace/g,io).replace(/punctSpace/g,xs).replace(/punct/g,Wl).getRegex(),Q0=nt(Id,"gu").replace(/notPunctSpace/g,q0).replace(/punctSpace/g,V0).replace(/punct/g,Nd).getRegex(),x0=nt("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,io).replace(/punctSpace/g,xs).replace(/punct/g,Wl).getRegex(),$0=nt(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Wl).getRegex(),ek="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",tk=nt(ek,"gu").replace(/notPunctSpace/g,io).replace(/punctSpace/g,xs).replace(/punct/g,Wl).getRegex(),nk=nt(/\\(punct)/,"gu").replace(/punct/g,Wl).getRegex(),lk=nt(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),sk=nt(lo).replace("(?:-->|$)","-->").getRegex(),ik=nt("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",sk).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Ks=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,ok=nt(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Ks).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Md=nt(/^!?\[(label)\]\[(ref)\]/).replace("label",Ks).replace("ref",no).getRegex(),Ld=nt(/^!?\[(ref)\](?:\[\])?/).replace("ref",no).getRegex(),rk=nt("reflink|nolink(?!\\()","g").replace("reflink",Md).replace("nolink",Ld).getRegex(),ic=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,oo={_backpedal:ml,anyPunctuation:nk,autolink:lk,blockSkip:Z0,br:Ad,code:W0,del:ml,delLDelim:ml,delRDelim:ml,emStrongLDelim:Y0,emStrongRDelimAst:J0,emStrongRDelimUnd:x0,escape:H0,link:ok,nolink:Ld,punctuation:K0,reflink:Md,reflinkSearch:rk,tag:ik,text:G0,url:ml},ak={...oo,link:nt(/^!?\[(label)\]\((.*?)\)/).replace("label",Ks).getRegex(),reflink:nt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ks).getRegex()},Vi={...oo,emStrongRDelimAst:Q0,emStrongLDelim:X0,delLDelim:$0,delRDelim:tk,url:nt(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",ic).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:nt(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},oc=n=>uk[n];function Sn(n,e){if(e){if(Ut.escapeTest.test(n))return n.replace(Ut.escapeReplace,oc)}else if(Ut.escapeTestNoEncode.test(n))return n.replace(Ut.escapeReplaceNoEncode,oc);return n}function rc(n){try{n=encodeURI(n).replace(Ut.percentDecode,"%")}catch{return null}return n}function ac(n,e){var o;let t=n.replace(Ut.findPipe,(i,c,u)=>{let d=!1,m=c;for(;--m>=0&&u[m]==="\\";)d=!d;return d?"|":" |"}),l=t.split(Ut.splitPipe),s=0;if(l[0].trim()||l.shift(),l.length>0&&!((o=l.at(-1))!=null&&o.trim())&&l.pop(),e)if(l.length>e)l.splice(e);else for(;l.length=0&&Ut.blankLine.test(e[t]);)t--;return e.length-t<=2?n:e.slice(0,t+1).join(` +`)}function fk(n,e){if(n.indexOf(e[1])===-1)return-1;let t=0;for(let l=0;l0?-2:-1}function dk(n,e=0){let t=e,l="";for(let s of n)if(s===" "){let o=4-t%4;l+=" ".repeat(o),t+=o}else l+=s,t++;return l}function uc(n,e,t,l,s){let o=e.href,i=e.title||null,c=n[1].replace(s.other.outputLinkReplace,"$1");l.state.inLink=!0;let u={type:n[0].charAt(0)==="!"?"image":"link",raw:t,href:o,title:i,text:c,tokens:l.inlineTokens(c)};return l.state.inLink=!1,u}function pk(n,e,t){let l=n.match(t.other.indentCodeCompensation);if(l===null)return e;let s=l[1];return e.split(` +`).map(o=>{let i=o.match(t.other.beginningSpace);if(i===null)return o;let[c]=i;return c.length>=s.length?o.slice(s.length):o}).join(` +`)}var Vs=class{constructor(n){et(this,"options");et(this,"rules");et(this,"lexer");this.options=n||wl}space(n){let e=this.rules.block.newline.exec(n);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(n){let e=this.rules.block.code.exec(n);if(e){let t=this.options.pedantic?e[0]:cc(e[0]),l=t.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t,codeBlockStyle:"indented",text:l}}}fences(n){let e=this.rules.block.fences.exec(n);if(e){let t=e[0],l=pk(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:l}}}heading(n){let e=this.rules.block.heading.exec(n);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let l=Gn(t,"#");(this.options.pedantic||!l||this.rules.other.endingSpaceChar.test(l))&&(t=l.trim())}return{type:"heading",raw:Gn(e[0],` +`),depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(n){let e=this.rules.block.hr.exec(n);if(e)return{type:"hr",raw:Gn(e[0],` +`)}}blockquote(n){let e=this.rules.block.blockquote.exec(n);if(e){let t=Gn(e[0],` +`).split(` +`),l="",s="",o=[];for(;t.length>0;){let i=!1,c=[],u;for(u=0;u1,s={type:"list",raw:"",ordered:l,start:l?+t.slice(0,-1):"",loose:!1,items:[]};t=l?`\\d{1,9}\\${t.slice(-1)}`:`\\${t}`,this.options.pedantic&&(t=l?t:"[*+-]");let o=this.rules.other.listItemRegex(t),i=!1;for(;n;){let u=!1,d="",m="";if(!(e=o.exec(n))||this.rules.block.hr.test(n))break;d=e[0],n=n.substring(d.length);let g=dk(e[2].split(` +`,1)[0],e[1].length),h=n.split(` +`,1)[0],_=!g.trim(),v=0;if(this.options.pedantic?(v=2,m=g.trimStart()):_?v=e[1].length+1:(v=g.search(this.rules.other.nonSpaceChar),v=v>4?1:v,m=g.slice(v),v+=e[1].length),_&&this.rules.other.blankLine.test(h)&&(d+=h+` +`,n=n.substring(h.length+1),u=!0),!u){let k=this.rules.other.nextBulletRegex(v),y=this.rules.other.hrRegex(v),E=this.rules.other.fencesBeginRegex(v),C=this.rules.other.headingBeginRegex(v),A=this.rules.other.htmlBeginRegex(v),N=this.rules.other.blockquoteBeginRegex(v);for(;n;){let I=n.split(` +`,1)[0],M;if(h=I,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),M=h):M=h.replace(this.rules.other.tabCharGlobal," "),E.test(h)||C.test(h)||A.test(h)||N.test(h)||k.test(h)||y.test(h))break;if(M.search(this.rules.other.nonSpaceChar)>=v||!h.trim())m+=` +`+M.slice(v);else{if(_||g.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||E.test(g)||C.test(g)||y.test(g))break;m+=` +`+h}_=!h.trim(),d+=I+` +`,n=n.substring(I.length+1),g=M.slice(v)}}s.loose||(i?s.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(i=!0)),s.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(m),loose:!1,text:m,tokens:[]}),s.raw+=d}let c=s.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;s.raw=s.raw.trimEnd();for(let u of s.items){this.lexer.state.top=!1,u.tokens=this.lexer.blockTokens(u.text,[]);let d=u.tokens[0];if(u.task&&((d==null?void 0:d.type)==="text"||(d==null?void 0:d.type)==="paragraph")){u.text=u.text.replace(this.rules.other.listReplaceTask,""),d.raw=d.raw.replace(this.rules.other.listReplaceTask,""),d.text=d.text.replace(this.rules.other.listReplaceTask,"");for(let g=this.lexer.inlineQueue.length-1;g>=0;g--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[g].src)){this.lexer.inlineQueue[g].src=this.lexer.inlineQueue[g].src.replace(this.rules.other.listReplaceTask,"");break}let m=this.rules.other.listTaskCheckbox.exec(u.raw);if(m){let g={type:"checkbox",raw:m[0]+" ",checked:m[0]!=="[ ]"};u.checked=g.checked,s.loose?u.tokens[0]&&["paragraph","text"].includes(u.tokens[0].type)&&"tokens"in u.tokens[0]&&u.tokens[0].tokens?(u.tokens[0].raw=g.raw+u.tokens[0].raw,u.tokens[0].text=g.raw+u.tokens[0].text,u.tokens[0].tokens.unshift(g)):u.tokens.unshift({type:"paragraph",raw:g.raw,text:g.raw,tokens:[g]}):u.tokens.unshift(g)}}else u.task&&(u.task=!1);if(!s.loose){let m=u.tokens.filter(h=>h.type==="space"),g=m.length>0&&m.some(h=>this.rules.other.anyLine.test(h.raw));s.loose=g}}if(s.loose)for(let u of s.items){u.loose=!0;for(let d of u.tokens)d.type==="text"&&(d.type="paragraph")}return s}}html(n){let e=this.rules.block.html.exec(n);if(e){let t=cc(e[0]);return{type:"html",block:!0,raw:t,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:t}}}def(n){let e=this.rules.block.def.exec(n);if(e){let t=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),l=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",s=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:t,raw:Gn(e[0],` +`),href:l,title:s}}}table(n){var i;let e=this.rules.block.table.exec(n);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let t=ac(e[1]),l=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),s=(i=e[3])!=null&&i.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(` +`):[],o={type:"table",raw:Gn(e[0],` +`),header:[],align:[],rows:[]};if(t.length===l.length){for(let c of l)this.rules.other.tableAlignRight.test(c)?o.align.push("right"):this.rules.other.tableAlignCenter.test(c)?o.align.push("center"):this.rules.other.tableAlignLeft.test(c)?o.align.push("left"):o.align.push(null);for(let c=0;c({text:u,tokens:this.lexer.inline(u),header:!1,align:o.align[d]})));return o}}lheading(n){let e=this.rules.block.lheading.exec(n);if(e){let t=e[1].trim();return{type:"heading",raw:Gn(e[0],` +`),depth:e[2].charAt(0)==="="?1:2,text:t,tokens:this.lexer.inline(t)}}}paragraph(n){let e=this.rules.block.paragraph.exec(n);if(e){let t=e[1].charAt(e[1].length-1)===` +`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(n){let e=this.rules.block.text.exec(n);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(n){let e=this.rules.inline.escape.exec(n);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(n){let e=this.rules.inline.tag.exec(n);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(n){let e=this.rules.inline.link.exec(n);if(e){let t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;let o=Gn(t.slice(0,-1),"\\");if((t.length-o.length)%2===0)return}else{let o=fk(e[2],"()");if(o===-2)return;if(o>-1){let i=(e[0].indexOf("!")===0?5:4)+e[1].length+o;e[2]=e[2].substring(0,o),e[0]=e[0].substring(0,i).trim(),e[3]=""}}let l=e[2],s="";if(this.options.pedantic){let o=this.rules.other.pedanticHrefTitle.exec(l);o&&(l=o[1],s=o[3])}else s=e[3]?e[3].slice(1,-1):"";return l=l.trim(),this.rules.other.startAngleBracket.test(l)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(t)?l=l.slice(1):l=l.slice(1,-1)),uc(e,{href:l&&l.replace(this.rules.inline.anyPunctuation,"$1"),title:s&&s.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(n,e){let t;if((t=this.rules.inline.reflink.exec(n))||(t=this.rules.inline.nolink.exec(n))){let l=(t[2]||t[1]).replace(this.rules.other.multipleSpaceGlobal," "),s=e[l.toLowerCase()];if(!s){let o=t[0].charAt(0);return{type:"text",raw:o,text:o}}return uc(t,s,t[0],this.lexer,this.rules)}}emStrong(n,e,t=""){let l=this.rules.inline.emStrongLDelim.exec(n);if(!(!l||!l[1]&&!l[2]&&!l[3]&&!l[4]||l[4]&&t.match(this.rules.other.unicodeAlphaNumeric))&&(!(l[1]||l[3])||!t||this.rules.inline.punctuation.exec(t))){let s=[...l[0]].length-1,o,i,c=s,u=0,d=l[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,e=e.slice(-1*n.length+s);(l=d.exec(e))!==null;){if(o=l[1]||l[2]||l[3]||l[4]||l[5]||l[6],!o)continue;if(i=[...o].length,l[3]||l[4]){c+=i;continue}else if((l[5]||l[6])&&s%3&&!((s+i)%3)){u+=i;continue}if(c-=i,c>0)continue;i=Math.min(i,i+c+u);let m=[...l[0]][0].length,g=n.slice(0,s+l.index+m+i);if(Math.min(s,i)%2){let _=g.slice(1,-1);return{type:"em",raw:g,text:_,tokens:this.lexer.inlineTokens(_)}}let h=g.slice(2,-2);return{type:"strong",raw:g,text:h,tokens:this.lexer.inlineTokens(h)}}}}codespan(n){let e=this.rules.inline.code.exec(n);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),l=this.rules.other.nonSpaceChar.test(t),s=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return l&&s&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(n){let e=this.rules.inline.br.exec(n);if(e)return{type:"br",raw:e[0]}}del(n,e,t=""){let l=this.rules.inline.delLDelim.exec(n);if(l&&(!l[1]||!t||this.rules.inline.punctuation.exec(t))){let s=[...l[0]].length-1,o,i,c=s,u=this.rules.inline.delRDelim;for(u.lastIndex=0,e=e.slice(-1*n.length+s);(l=u.exec(e))!==null;){if(o=l[1]||l[2]||l[3]||l[4]||l[5]||l[6],!o||(i=[...o].length,i!==s))continue;if(l[3]||l[4]){c+=i;continue}if(c-=i,c>0)continue;i=Math.min(i,i+c);let d=[...l[0]][0].length,m=n.slice(0,s+l.index+d+i),g=m.slice(s,-s);return{type:"del",raw:m,text:g,tokens:this.lexer.inlineTokens(g)}}}}autolink(n){let e=this.rules.inline.autolink.exec(n);if(e){let t,l;return e[2]==="@"?(t=e[1],l="mailto:"+t):(t=e[1],l=t),{type:"link",raw:e[0],text:t,href:l,tokens:[{type:"text",raw:t,text:t}]}}}url(n){var t;let e;if(e=this.rules.inline.url.exec(n)){let l,s;if(e[2]==="@")l=e[0],s="mailto:"+l;else{let o;do o=e[0],e[0]=((t=this.rules.inline._backpedal.exec(e[0]))==null?void 0:t[0])??"";while(o!==e[0]);l=e[0],e[1]==="www."?s="http://"+e[0]:s=e[0]}return{type:"link",raw:e[0],text:l,href:s,tokens:[{type:"text",raw:l,text:l}]}}}inlineText(n){let e=this.rules.inline.text.exec(n);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},hn=class qi{constructor(e){et(this,"tokens");et(this,"options");et(this,"state");et(this,"inlineQueue");et(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=e||wl,this.options.tokenizer=this.options.tokenizer||new Vs,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:Ut,block:Ms.normal,inline:Jl.normal};this.options.pedantic?(t.block=Ms.pedantic,t.inline=Jl.pedantic):this.options.gfm&&(t.block=Ms.gfm,this.options.breaks?t.inline=Jl.breaks:t.inline=Jl.gfm),this.tokenizer.rules=t}static get rules(){return{block:Ms,inline:Jl}}static lex(e,t){return new qi(t).lex(e)}static lexInline(e,t){return new qi(t).inlineTokens(e)}lex(e){e=e.replace(Ut.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let t=0;t(u=m.call({lexer:this},e,t))?(e=e.substring(u.raw.length),t.push(u),!0):!1))continue;if(u=this.tokenizer.space(e)){e=e.substring(u.raw.length);let m=t.at(-1);u.raw.length===1&&m!==void 0?m.raw+=` +`:t.push(u);continue}if(u=this.tokenizer.code(e)){e=e.substring(u.raw.length);let m=t.at(-1);(m==null?void 0:m.type)==="paragraph"||(m==null?void 0:m.type)==="text"?(m.raw+=(m.raw.endsWith(` +`)?"":` +`)+u.raw,m.text+=` +`+u.text,this.inlineQueue.at(-1).src=m.text):t.push(u);continue}if(u=this.tokenizer.fences(e)){e=e.substring(u.raw.length),t.push(u);continue}if(u=this.tokenizer.heading(e)){e=e.substring(u.raw.length),t.push(u);continue}if(u=this.tokenizer.hr(e)){e=e.substring(u.raw.length),t.push(u);continue}if(u=this.tokenizer.blockquote(e)){e=e.substring(u.raw.length),t.push(u);continue}if(u=this.tokenizer.list(e)){e=e.substring(u.raw.length),t.push(u);continue}if(u=this.tokenizer.html(e)){e=e.substring(u.raw.length),t.push(u);continue}if(u=this.tokenizer.def(e)){e=e.substring(u.raw.length);let m=t.at(-1);(m==null?void 0:m.type)==="paragraph"||(m==null?void 0:m.type)==="text"?(m.raw+=(m.raw.endsWith(` +`)?"":` +`)+u.raw,m.text+=` +`+u.raw,this.inlineQueue.at(-1).src=m.text):this.tokens.links[u.tag]||(this.tokens.links[u.tag]={href:u.href,title:u.title},t.push(u));continue}if(u=this.tokenizer.table(e)){e=e.substring(u.raw.length),t.push(u);continue}if(u=this.tokenizer.lheading(e)){e=e.substring(u.raw.length),t.push(u);continue}let d=e;if((c=this.options.extensions)!=null&&c.startBlock){let m=1/0,g=e.slice(1),h;this.options.extensions.startBlock.forEach(_=>{h=_.call({lexer:this},g),typeof h=="number"&&h>=0&&(m=Math.min(m,h))}),m<1/0&&m>=0&&(d=e.substring(0,m+1))}if(this.state.top&&(u=this.tokenizer.paragraph(d))){let m=t.at(-1);l&&(m==null?void 0:m.type)==="paragraph"?(m.raw+=(m.raw.endsWith(` +`)?"":` +`)+u.raw,m.text+=` +`+u.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=m.text):t.push(u),l=d.length!==e.length,e=e.substring(u.raw.length);continue}if(u=this.tokenizer.text(e)){e=e.substring(u.raw.length);let m=t.at(-1);(m==null?void 0:m.type)==="text"?(m.raw+=(m.raw.endsWith(` +`)?"":` +`)+u.raw,m.text+=` +`+u.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=m.text):t.push(u);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){var d,m,g,h,_;this.tokenizer.lexer=this;let l=e,s=null;if(this.tokens.links){let v=Object.keys(this.tokens.links);if(v.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(l))!==null;)v.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(l))!==null;)l=l.slice(0,s.index)+"++"+l.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let o;for(;(s=this.tokenizer.rules.inline.blockSkip.exec(l))!==null;)o=s[2]?s[2].length:0,l=l.slice(0,s.index+o)+"["+"a".repeat(s[0].length-o-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);l=((m=(d=this.options.hooks)==null?void 0:d.emStrongMask)==null?void 0:m.call({lexer:this},l))??l;let i=!1,c="",u=1/0;for(;e;){if(e.length(v=y.call({lexer:this},e,t))?(e=e.substring(v.raw.length),t.push(v),!0):!1))continue;if(v=this.tokenizer.escape(e)){e=e.substring(v.raw.length),t.push(v);continue}if(v=this.tokenizer.tag(e)){e=e.substring(v.raw.length),t.push(v);continue}if(v=this.tokenizer.link(e)){e=e.substring(v.raw.length),t.push(v);continue}if(v=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(v.raw.length);let y=t.at(-1);v.type==="text"&&(y==null?void 0:y.type)==="text"?(y.raw+=v.raw,y.text+=v.text):t.push(v);continue}if(v=this.tokenizer.emStrong(e,l,c)){e=e.substring(v.raw.length),t.push(v);continue}if(v=this.tokenizer.codespan(e)){e=e.substring(v.raw.length),t.push(v);continue}if(v=this.tokenizer.br(e)){e=e.substring(v.raw.length),t.push(v);continue}if(v=this.tokenizer.del(e,l,c)){e=e.substring(v.raw.length),t.push(v);continue}if(v=this.tokenizer.autolink(e)){e=e.substring(v.raw.length),t.push(v);continue}if(!this.state.inLink&&(v=this.tokenizer.url(e))){e=e.substring(v.raw.length),t.push(v);continue}let k=e;if((_=this.options.extensions)!=null&&_.startInline){let y=1/0,E=e.slice(1),C;this.options.extensions.startInline.forEach(A=>{C=A.call({lexer:this},E),typeof C=="number"&&C>=0&&(y=Math.min(y,C))}),y<1/0&&y>=0&&(k=e.substring(0,y+1))}if(v=this.tokenizer.inlineText(k)){e=e.substring(v.raw.length),v.raw.slice(-1)!=="_"&&(c=v.raw.slice(-1)),i=!0;let y=t.at(-1);(y==null?void 0:y.type)==="text"?(y.raw+=v.raw,y.text+=v.text):t.push(v);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(this.options.silent)console.error(t);else throw new Error(t)}},qs=class{constructor(n){et(this,"options");et(this,"parser");this.options=n||wl}space(n){return""}code({text:n,lang:e,escaped:t}){var o;let l=(o=(e||"").match(Ut.notSpaceStart))==null?void 0:o[0],s=n.replace(Ut.endingNewline,"")+` +`;return l?'
'+(t?s:Sn(s,!0))+`
+`:"
"+(t?s:Sn(s,!0))+`
+`}blockquote({tokens:n}){return`
+${this.parser.parse(n)}
+`}html({text:n}){return n}def(n){return""}heading({tokens:n,depth:e}){return`${this.parser.parseInline(n)} +`}hr(n){return`
+`}list(n){let e=n.ordered,t=n.start,l="";for(let i=0;i +`+l+" +`}listitem(n){return`
  • ${this.parser.parse(n.tokens)}
  • +`}checkbox({checked:n}){return" '}paragraph({tokens:n}){return`

    ${this.parser.parseInline(n)}

    +`}table(n){let e="",t="";for(let s=0;s${l}`),` + +`+e+` +`+l+`
    +`}tablerow({text:n}){return` +${n} +`}tablecell(n){let e=this.parser.parseInline(n.tokens),t=n.header?"th":"td";return(n.align?`<${t} align="${n.align}">`:`<${t}>`)+e+` +`}strong({tokens:n}){return`${this.parser.parseInline(n)}`}em({tokens:n}){return`${this.parser.parseInline(n)}`}codespan({text:n}){return`${Sn(n,!0)}`}br(n){return"
    "}del({tokens:n}){return`${this.parser.parseInline(n)}`}link({href:n,title:e,tokens:t}){let l=this.parser.parseInline(t),s=rc(n);if(s===null)return l;n=s;let o='
    ",o}image({href:n,title:e,text:t,tokens:l}){l&&(t=this.parser.parseInline(l,this.parser.textRenderer));let s=rc(n);if(s===null)return Sn(t);n=s;let o=`${Sn(t)}{let u=i[c].flat(1/0);t=t.concat(this.walkTokens(u,e))}):i.tokens&&(t=t.concat(this.walkTokens(i.tokens,e)))}}return t}use(...n){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return n.forEach(t=>{let l={...t};if(l.async=this.defaults.async||l.async||!1,t.extensions&&(t.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if("renderer"in s){let o=e.renderers[s.name];o?e.renderers[s.name]=function(...i){let c=s.renderer.apply(this,i);return c===!1&&(c=o.apply(this,i)),c}:e.renderers[s.name]=s.renderer}if("tokenizer"in s){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let o=e[s.level];o?o.unshift(s.tokenizer):e[s.level]=[s.tokenizer],s.start&&(s.level==="block"?e.startBlock?e.startBlock.push(s.start):e.startBlock=[s.start]:s.level==="inline"&&(e.startInline?e.startInline.push(s.start):e.startInline=[s.start]))}"childTokens"in s&&s.childTokens&&(e.childTokens[s.name]=s.childTokens)}),l.extensions=e),t.renderer){let s=this.defaults.renderer||new qs(this.defaults);for(let o in t.renderer){if(!(o in s))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;let i=o,c=t.renderer[i],u=s[i];s[i]=(...d)=>{let m=c.apply(s,d);return m===!1&&(m=u.apply(s,d)),m||""}}l.renderer=s}if(t.tokenizer){let s=this.defaults.tokenizer||new Vs(this.defaults);for(let o in t.tokenizer){if(!(o in s))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let i=o,c=t.tokenizer[i],u=s[i];s[i]=(...d)=>{let m=c.apply(s,d);return m===!1&&(m=u.apply(s,d)),m}}l.tokenizer=s}if(t.hooks){let s=this.defaults.hooks||new ts;for(let o in t.hooks){if(!(o in s))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;let i=o,c=t.hooks[i],u=s[i];ts.passThroughHooks.has(o)?s[i]=d=>{if(this.defaults.async&&ts.passThroughHooksRespectAsync.has(o))return(async()=>{let g=await c.call(s,d);return u.call(s,g)})();let m=c.call(s,d);return u.call(s,m)}:s[i]=(...d)=>{if(this.defaults.async)return(async()=>{let g=await c.apply(s,d);return g===!1&&(g=await u.apply(s,d)),g})();let m=c.apply(s,d);return m===!1&&(m=u.apply(s,d)),m}}l.hooks=s}if(t.walkTokens){let s=this.defaults.walkTokens,o=t.walkTokens;l.walkTokens=function(i){let c=[];return c.push(o.call(this,i)),s&&(c=c.concat(s.call(this,i))),c}}this.defaults={...this.defaults,...l}}),this}setOptions(n){return this.defaults={...this.defaults,...n},this}lexer(n,e){return hn.lex(n,e??this.defaults)}parser(n,e){return _n.parse(n,e??this.defaults)}parseMarkdown(n){return(e,t)=>{let l={...t},s={...this.defaults,...l},o=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&l.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=n),s.async)return(async()=>{let i=s.hooks?await s.hooks.preprocess(e):e,c=await(s.hooks?await s.hooks.provideLexer(n):n?hn.lex:hn.lexInline)(i,s),u=s.hooks?await s.hooks.processAllTokens(c):c;s.walkTokens&&await Promise.all(this.walkTokens(u,s.walkTokens));let d=await(s.hooks?await s.hooks.provideParser(n):n?_n.parse:_n.parseInline)(u,s);return s.hooks?await s.hooks.postprocess(d):d})().catch(o);try{s.hooks&&(e=s.hooks.preprocess(e));let i=(s.hooks?s.hooks.provideLexer(n):n?hn.lex:hn.lexInline)(e,s);s.hooks&&(i=s.hooks.processAllTokens(i)),s.walkTokens&&this.walkTokens(i,s.walkTokens);let c=(s.hooks?s.hooks.provideParser(n):n?_n.parse:_n.parseInline)(i,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(i){return o(i)}}}onError(n,e){return t=>{if(t.message+=` +Please report this to https://github.com/markedjs/marked.`,n){let l="

    An error occurred:

    "+Sn(t.message+"",!0)+"
    ";return e?Promise.resolve(l):l}if(e)return Promise.reject(t);throw t}}},vl=new mk;function at(n,e){return vl.parse(n,e)}at.options=at.setOptions=function(n){return vl.setOptions(n),at.defaults=vl.defaults,Ed(at.defaults),at};at.getDefaults=$i;at.defaults=wl;at.use=function(...n){return vl.use(...n),at.defaults=vl.defaults,Ed(at.defaults),at};at.walkTokens=function(n,e){return vl.walkTokens(n,e)};at.parseInline=vl.parseInline;at.Parser=_n;at.parser=_n.parse;at.Renderer=qs;at.TextRenderer=ro;at.Lexer=hn;at.lexer=hn.lex;at.Tokenizer=Vs;at.Hooks=ts;at.parse=at;at.options;at.setOptions;at.use;at.walkTokens;at.parseInline;_n.parse;hn.lex;/*! @license DOMPurify 3.4.10 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.10/LICENSE */function fc(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,l=Array(e);t2?l-2:0),o=2;o1?t-1:0),s=1;s"u"?null:Rt(BigInt.prototype.toString),_c=typeof Symbol>"u"?null:Rt(Symbol.prototype.toString),Vt=Rt(Object.prototype.hasOwnProperty),$l=Rt(Object.prototype.toString),Bt=Rt(RegExp.prototype.test),pl=Nk(TypeError);function Rt(n){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var t=arguments.length,l=new Array(t>1?t-1:0),s=1;s2&&arguments[2]!==void 0?arguments[2]:ns;if(dc&&dc(n,null),!qn(e))return n;let l=e.length;for(;l--;){let s=e[l];if(typeof s=="string"){const o=t(s);o!==s&&(kk(e)||(e[l]=o),s=o)}n[s]=!0}return n}function Rk(n){for(let e=0;e/g),zk=jt(/\${[\w\W]*/g),Bk=jt(/^data-[\-\w.\u00B7-\uFFFF]+$/),Fk=jt(/^aria-[\-\w]+$/),yc=jt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),jk=jt(/^(?:\w+script|data):/i),Uk=jt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Hk=jt(/^html$/i),Wk=jt(/^[a-z][.\w]*(-[.\w]+)+$/i),Ec=jt(/<[/\w!]/g),Gk=jt(/<[/\w]/g),Kk=jt(/<\/no(script|embed|frames)/i),Vk=jt(/\/>/i),Tn={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},qk=function(){return typeof window>"u"?null:window},Zk=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let l=null;const s="data-tt-policy-suffix";t&&t.hasAttribute(s)&&(l=t.getAttribute(s));const o="dompurify"+(l?"#"+l:"");try{return e.createPolicy(o,{createHTML(i){return i},createScriptURL(i){return i}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}},Tc=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Kn=function(e,t,l,s){return Vt(e,t)&&qn(e[t])?tt(s.base?Kt(s.base):{},e[t],s.transform):l};function Pd(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:qk();const e=ke=>Pd(ke);if(e.version="3.4.10",e.removed=[],!n||!n.document||n.document.nodeType!==Tn.document||!n.Element)return e.isSupported=!1,e;let t=n.document;const l=t,s=l.currentScript;n.DocumentFragment;const o=n.HTMLTemplateElement,i=n.Node,c=n.Element,u=n.NodeFilter,d=n.NamedNodeMap;d===void 0&&(n.NamedNodeMap||n.MozNamedAttrMap),n.HTMLFormElement;const m=n.DOMParser,g=n.trustedTypes,h=c.prototype,_=Cn(h,"cloneNode"),v=Cn(h,"remove"),k=Cn(h,"nextSibling"),y=Cn(h,"childNodes"),E=Cn(h,"parentNode"),C=Cn(h,"shadowRoot"),A=Cn(h,"attributes"),N=i&&i.prototype?Cn(i.prototype,"nodeType"):null,I=i&&i.prototype?Cn(i.prototype,"nodeName"):null;if(typeof o=="function"){const ke=t.createElement("template");ke.content&&ke.content.ownerDocument&&(t=ke.content.ownerDocument)}let M,R="",O,L=!1,H=0;const W=function(){if(H>0)throw pl('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},U=function(V){W(),H++;try{return M.createHTML(V)}finally{H--}},K=function(V){W(),H++;try{return M.createScriptURL(V)}finally{H--}},Z=function(){return L||(O=Zk(g,s),L=!0),O},X=t,G=X.implementation,P=X.createNodeIterator,j=X.createDocumentFragment,B=X.getElementsByTagName,J=l.importNode;let q=Tc();e.isSupported=typeof Od=="function"&&typeof E=="function"&&G&&G.createHTMLDocument!==void 0;const Y=Dk,$=Pk,ne=zk,te=Bk,pe=Fk,Te=jk,Fe=Uk,qe=Wk;let Ne=yc,ee=null;const oe=tt({},[...bc,...Di,...Pi,...zi,...vc]);let Ce=null;const je=tt({},[...kc,...Bi,...wc,...Ls]);let _e=Object.seal(Bl(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ue=null,pt=null;const be=Object.seal(Bl(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let lt=!0,Me=!0,Re=!1,Pe=!0,He=!1,De=!0,ze=!1,ue=!1,ye=!1,x=!1,ge=!1,de=!1,Ae=!0,it=!1;const ot="user-content-";let Ye=!0,vt=!1,Ke={},Ge=null;const st=tt({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]);let fe=null;const Le=tt({},["audio","video","img","source","image","track"]);let At=null;const en=tt({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Mt="http://www.w3.org/1998/Math/MathML",Ht="http://www.w3.org/2000/svg",ct="http://www.w3.org/1999/xhtml";let Dt=ct,bn=!1,vn=null;const qt=tt({},[Mt,Ht,ct],Oi),Xn=Ft(["mi","mo","mn","ms","mtext"]);let It=tt({},Xn);const Wt=Ft(["annotation-xml"]);let gt=tt({},Wt);const ps=tt({},["title","style","font","a","script"]);let Mn=null;const ms=["application/xhtml+xml","text/html"],un="text/html";let ht=null,Gt=null;const fn=t.createElement("form"),kn=function(V){return V instanceof RegExp||V instanceof Function},Zt=function(){let V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Gt&&Gt===V)return;(!V||typeof V!="object")&&(V={}),V=Kt(V),Mn=ms.indexOf(V.PARSER_MEDIA_TYPE)===-1?un:V.PARSER_MEDIA_TYPE,ht=Mn==="application/xhtml+xml"?Oi:ns,ee=Kn(V,"ALLOWED_TAGS",oe,{transform:ht}),Ce=Kn(V,"ALLOWED_ATTR",je,{transform:ht}),vn=Kn(V,"ALLOWED_NAMESPACES",qt,{transform:Oi}),At=Kn(V,"ADD_URI_SAFE_ATTR",en,{transform:ht,base:en}),fe=Kn(V,"ADD_DATA_URI_TAGS",Le,{transform:ht,base:Le}),Ge=Kn(V,"FORBID_CONTENTS",st,{transform:ht}),Ue=Kn(V,"FORBID_TAGS",Kt({}),{transform:ht}),pt=Kn(V,"FORBID_ATTR",Kt({}),{transform:ht}),Ke=Vt(V,"USE_PROFILES")?V.USE_PROFILES&&typeof V.USE_PROFILES=="object"?Kt(V.USE_PROFILES):V.USE_PROFILES:!1,lt=V.ALLOW_ARIA_ATTR!==!1,Me=V.ALLOW_DATA_ATTR!==!1,Re=V.ALLOW_UNKNOWN_PROTOCOLS||!1,Pe=V.ALLOW_SELF_CLOSE_IN_ATTR!==!1,He=V.SAFE_FOR_TEMPLATES||!1,De=V.SAFE_FOR_XML!==!1,ze=V.WHOLE_DOCUMENT||!1,x=V.RETURN_DOM||!1,ge=V.RETURN_DOM_FRAGMENT||!1,de=V.RETURN_TRUSTED_TYPE||!1,ye=V.FORCE_BODY||!1,Ae=V.SANITIZE_DOM!==!1,it=V.SANITIZE_NAMED_PROPS||!1,Ye=V.KEEP_CONTENT!==!1,vt=V.IN_PLACE||!1,Ne=Mk(V.ALLOWED_URI_REGEXP)?V.ALLOWED_URI_REGEXP:yc,Dt=typeof V.NAMESPACE=="string"?V.NAMESPACE:ct,It=Vt(V,"MATHML_TEXT_INTEGRATION_POINTS")&&V.MATHML_TEXT_INTEGRATION_POINTS&&typeof V.MATHML_TEXT_INTEGRATION_POINTS=="object"?Kt(V.MATHML_TEXT_INTEGRATION_POINTS):tt({},Xn),gt=Vt(V,"HTML_INTEGRATION_POINTS")&&V.HTML_INTEGRATION_POINTS&&typeof V.HTML_INTEGRATION_POINTS=="object"?Kt(V.HTML_INTEGRATION_POINTS):tt({},Wt);const le=Vt(V,"CUSTOM_ELEMENT_HANDLING")&&V.CUSTOM_ELEMENT_HANDLING&&typeof V.CUSTOM_ELEMENT_HANDLING=="object"?Kt(V.CUSTOM_ELEMENT_HANDLING):Bl(null);if(_e=Bl(null),Vt(le,"tagNameCheck")&&kn(le.tagNameCheck)&&(_e.tagNameCheck=le.tagNameCheck),Vt(le,"attributeNameCheck")&&kn(le.attributeNameCheck)&&(_e.attributeNameCheck=le.attributeNameCheck),Vt(le,"allowCustomizedBuiltInElements")&&typeof le.allowCustomizedBuiltInElements=="boolean"&&(_e.allowCustomizedBuiltInElements=le.allowCustomizedBuiltInElements),jt(_e),He&&(Me=!1),ge&&(x=!0),Ke&&(ee=tt({},vc),Ce=Bl(null),Ke.html===!0&&(tt(ee,bc),tt(Ce,kc)),Ke.svg===!0&&(tt(ee,Di),tt(Ce,Bi),tt(Ce,Ls)),Ke.svgFilters===!0&&(tt(ee,Pi),tt(Ce,Bi),tt(Ce,Ls)),Ke.mathMl===!0&&(tt(ee,zi),tt(Ce,wc),tt(Ce,Ls))),be.tagCheck=null,be.attributeCheck=null,Vt(V,"ADD_TAGS")&&(typeof V.ADD_TAGS=="function"?be.tagCheck=V.ADD_TAGS:qn(V.ADD_TAGS)&&(ee===oe&&(ee=Kt(ee)),tt(ee,V.ADD_TAGS,ht))),Vt(V,"ADD_ATTR")&&(typeof V.ADD_ATTR=="function"?be.attributeCheck=V.ADD_ATTR:qn(V.ADD_ATTR)&&(Ce===je&&(Ce=Kt(Ce)),tt(Ce,V.ADD_ATTR,ht))),Vt(V,"ADD_URI_SAFE_ATTR")&&qn(V.ADD_URI_SAFE_ATTR)&&tt(At,V.ADD_URI_SAFE_ATTR,ht),Vt(V,"FORBID_CONTENTS")&&qn(V.FORBID_CONTENTS)&&(Ge===st&&(Ge=Kt(Ge)),tt(Ge,V.FORBID_CONTENTS,ht)),Vt(V,"ADD_FORBID_CONTENTS")&&qn(V.ADD_FORBID_CONTENTS)&&(Ge===st&&(Ge=Kt(Ge)),tt(Ge,V.ADD_FORBID_CONTENTS,ht)),Ye&&(ee["#text"]=!0),ze&&tt(ee,["html","head","body"]),ee.table&&(tt(ee,["tbody"]),delete Ue.tbody),V.TRUSTED_TYPES_POLICY){if(typeof V.TRUSTED_TYPES_POLICY.createHTML!="function")throw pl('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof V.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw pl('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');const ve=M;M=V.TRUSTED_TYPES_POLICY;try{R=U("")}catch(Oe){throw M=ve,Oe}}else V.TRUSTED_TYPES_POLICY===null?(M=void 0,R=""):(M===void 0&&(M=Z()),M&&typeof R=="string"&&(R=U("")));(q.uponSanitizeElement.length>0||q.uponSanitizeAttribute.length>0)&&ee===oe&&(ee=Kt(ee)),q.uponSanitizeAttribute.length>0&&Ce===je&&(Ce=Kt(Ce)),Ft&&Ft(V),Gt=V},rn=tt({},[...Di,...Pi,...Lk]),wn=tt({},[...zi,...Ok]),tn=function(V,le,ve){return le.namespaceURI===ct?V==="svg":le.namespaceURI===Mt?V==="svg"&&(ve==="annotation-xml"||It[ve]):!!rn[V]},Jn=function(V,le,ve){return le.namespaceURI===ct?V==="math":le.namespaceURI===Ht?V==="math"&>[ve]:!!wn[V]},yn=function(V,le,ve){return le.namespaceURI===Ht&&!gt[ve]||le.namespaceURI===Mt&&!It[ve]?!1:!wn[V]&&(ps[V]||!rn[V])},Qn=function(V){let le=E(V);(!le||!le.tagName)&&(le={namespaceURI:Dt,tagName:"template"});const ve=ns(V.tagName),Oe=ns(le.tagName);return vn[V.namespaceURI]?V.namespaceURI===Ht?tn(ve,le,Oe):V.namespaceURI===Mt?Jn(ve,le,Oe):V.namespaceURI===ct?yn(ve,le,Oe):!!(Mn==="application/xhtml+xml"&&vn[V.namespaceURI]):!1},Pt=function(V){Dl(e.removed,{element:V});try{E(V).removeChild(V)}catch{if(v(V),!E(V))throw pl("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},El=function(V){const le=y(V);if(le){const Oe=[];Ql(le,Ve=>{Dl(Oe,Ve)}),Ql(Oe,Ve=>{try{v(Ve)}catch{}})}const ve=A(V);if(ve)for(let Oe=ve.length-1;Oe>=0;--Oe){const Ve=ve[Oe],$e=Ve&&Ve.name;if(typeof $e=="string")try{V.removeAttribute($e)}catch{}}},Yt=function(V,le){try{Dl(e.removed,{attribute:le.getAttributeNode(V),from:le})}catch{Dl(e.removed,{attribute:null,from:le})}if(le.removeAttribute(V),V==="is")if(x||ge)try{Pt(le)}catch{}else try{le.setAttribute(V,"")}catch{}},Kl=function(V){const le=A(V);if(le)for(let ve=le.length-1;ve>=0;--ve){const Oe=le[ve],Ve=Oe&&Oe.name;if(!(typeof Ve!="string"||Ce[ht(Ve)]))try{V.removeAttribute(Ve)}catch{}}},Tl=function(V){const le=[V];for(;le.length>0;){const ve=le.pop();(N?N(ve):ve.nodeType)===Tn.element&&Kl(ve);const Ve=y(ve);if(Ve)for(let $e=Ve.length-1;$e>=0;--$e)le.push(Ve[$e])}},Ln=function(V){let le=null,ve=null;if(ye)V=""+V;else{const $e=mc(V,/^[\r\n\t ]+/);ve=$e&&$e[0]}Mn==="application/xhtml+xml"&&Dt===ct&&(V=''+V+"");const Oe=M?U(V):V;if(Dt===ct)try{le=new m().parseFromString(Oe,Mn)}catch{}if(!le||!le.documentElement){le=G.createDocument(Dt,"template",null);try{le.documentElement.innerHTML=bn?R:Oe}catch{}}const Ve=le.body||le.documentElement;return V&&ve&&Ve.insertBefore(t.createTextNode(ve),Ve.childNodes[0]||null),Dt===ct?B.call(le,ze?"html":"body")[0]:ze?le.documentElement:Ve},Sl=function(V){return P.call(V.ownerDocument||V,V,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},xn=function(V){return V=xl(V,Y," "),V=xl(V,$," "),V=xl(V,ne," "),V},Xt=function(V){var le;V.normalize();const ve=P.call(V.ownerDocument||V,V,u.SHOW_TEXT|u.SHOW_COMMENT|u.SHOW_CDATA_SECTION|u.SHOW_PROCESSING_INSTRUCTION,null);let Oe=ve.nextNode();for(;Oe;)Oe.data=xn(Oe.data),Oe=ve.nextNode();const Ve=(le=V.querySelectorAll)===null||le===void 0?void 0:le.call(V,"template");Ve&&Ql(Ve,$e=>{mt($e.content)&&Xt($e.content)})},On=function(V){const le=I?I(V):null;return typeof le!="string"||ht(le)!=="form"?!1:typeof V.nodeName!="string"||typeof V.textContent!="string"||typeof V.removeChild!="function"||V.attributes!==A(V)||typeof V.removeAttribute!="function"||typeof V.setAttribute!="function"||typeof V.namespaceURI!="string"||typeof V.insertBefore!="function"||typeof V.hasChildNodes!="function"||V.nodeType!==N(V)||V.childNodes!==y(V)},mt=function(V){if(!N||typeof V!="object"||V===null)return!1;try{return N(V)===Tn.documentFragment}catch{return!1}},kt=function(V){if(!N||typeof V!="object"||V===null)return!1;try{return typeof N(V)=="number"}catch{return!1}};function rt(ke,V,le){ke.length!==0&&Ql(ke,ve=>{ve.call(e,V,le,Gt)})}const dn=function(V,le){return!!(De&&V.hasChildNodes()&&!kt(V.firstElementChild)&&Bt(Ec,V.textContent)&&Bt(Ec,V.innerHTML)||De&&V.namespaceURI===ct&&le==="style"&&kt(V.firstElementChild)||V.nodeType===Tn.processingInstruction||De&&V.nodeType===Tn.comment&&Bt(Gk,V.data))},nn=function(V,le){if(!Ue[le]&&xe(le)&&(_e.tagNameCheck instanceof RegExp&&Bt(_e.tagNameCheck,le)||_e.tagNameCheck instanceof Function&&_e.tagNameCheck(le)))return!1;if(Ye&&!Ge[le]){const ve=E(V),Oe=y(V);if(Oe&&ve){const Ve=Oe.length;for(let $e=Ve-1;$e>=0;--$e){const Nt=vt?Oe[$e]:_(Oe[$e],!0);ve.insertBefore(Nt,k(V))}}}return Pt(V),!0},Dn=function(V){if(rt(q.beforeSanitizeElements,V,null),On(V))return Pt(V),!0;const le=ht(I?I(V):V.nodeName);if(rt(q.uponSanitizeElement,V,{tagName:le,allowedTags:ee}),dn(V,le))return Pt(V),!0;if(Ue[le]||!(be.tagCheck instanceof Function&&be.tagCheck(le))&&!ee[le])return nn(V,le);if((N?N(V):V.nodeType)===Tn.element&&!Qn(V)||(le==="noscript"||le==="noembed"||le==="noframes")&&Bt(Kk,V.innerHTML))return Pt(V),!0;if(He&&V.nodeType===Tn.text){const Oe=xn(V.textContent);V.textContent!==Oe&&(Dl(e.removed,{element:V.cloneNode()}),V.textContent=Oe)}return rt(q.afterSanitizeElements,V,null),!1},An=function(V,le,ve){if(pt[le]||Ae&&(le==="id"||le==="name")&&(ve in t||ve in fn))return!1;const Oe=Ce[le]||be.attributeCheck instanceof Function&&be.attributeCheck(le,V);if(!(Me&&Bt(te,le))){if(!(lt&&Bt(pe,le))){if(Oe){if(!At[le]){if(!Bt(Ne,xl(ve,Fe,""))){if(!((le==="src"||le==="xlink:href"||le==="href")&&V!=="script"&&gc(ve,"data:")===0&&fe[V])){if(!(Re&&!Bt(Te,xl(ve,Fe,"")))){if(ve)return!1}}}}}else if(!(xe(V)&&(_e.tagNameCheck instanceof RegExp&&Bt(_e.tagNameCheck,V)||_e.tagNameCheck instanceof Function&&_e.tagNameCheck(V))&&(_e.attributeNameCheck instanceof RegExp&&Bt(_e.attributeNameCheck,le)||_e.attributeNameCheck instanceof Function&&_e.attributeNameCheck(le,V))||le==="is"&&_e.allowCustomizedBuiltInElements&&(_e.tagNameCheck instanceof RegExp&&Bt(_e.tagNameCheck,ve)||_e.tagNameCheck instanceof Function&&_e.tagNameCheck(ve))))return!1}}return!0},an=tt({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),xe=function(V){return!an[ns(V)]&&Bt(qe,V)},Pn=function(V,le,ve,Oe){if(M&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!ve)switch(g.getAttributeType(V,le)){case"TrustedHTML":return U(Oe);case"TrustedScriptURL":return K(Oe)}return Oe},Vl=function(V,le,ve,Oe){try{ve?V.setAttributeNS(ve,le,Oe):V.setAttribute(le,Oe),On(V)?Pt(V):pc(e.removed)}catch{Yt(le,V)}},zn=function(V){rt(q.beforeSanitizeAttributes,V,null);const le=V.attributes;if(!le||On(V))return;const ve={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ce,forceKeepAttr:void 0};let Oe=le.length;const Ve=ht(V.nodeName);for(;Oe--;){const $e=le[Oe],Nt=$e.name,_t=$e.namespaceURI,zt=$e.value,Lt=ht(Nt),Bn=zt;let Tt=Nt==="value"?Bn:Sk(Bn);if(ve.attrName=Lt,ve.attrValue=Tt,ve.keepAttr=!0,ve.forceKeepAttr=void 0,rt(q.uponSanitizeAttribute,V,ve),Tt=ve.attrValue,it&&(Lt==="id"||Lt==="name")&&gc(Tt,ot)!==0&&(Yt(Nt,V),Tt=ot+Tt),De&&Bt(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Tt)){Yt(Nt,V);continue}if(Lt==="attributename"&&mc(Tt,"href")){Yt(Nt,V);continue}if(!ve.forceKeepAttr){if(!ve.keepAttr){Yt(Nt,V);continue}if(!Pe&&Bt(Vk,Tt)){Yt(Nt,V);continue}if(He&&(Tt=xn(Tt)),!An(Ve,Lt,Tt)){Yt(Nt,V);continue}Tt=Pn(Ve,Lt,_t,Tt),Tt!==Bn&&Vl(V,Nt,_t,Tt)}}rt(q.afterSanitizeAttributes,V,null)},pn=function(V){let le=null;const ve=Sl(V);for(rt(q.beforeSanitizeShadowDOM,V,null);le=ve.nextNode();)if(rt(q.uponSanitizeShadowNode,le,null),Dn(le),zn(le),mt(le.content)&&pn(le.content),(N?N(le):le.nodeType)===Tn.element){const Ve=C(le);mt(Ve)&&($n(Ve),pn(Ve))}rt(q.afterSanitizeShadowDOM,V,null)},$n=function(V){const le=[{node:V,shadow:null}];for(;le.length>0;){const ve=le.pop();if(ve.shadow){pn(ve.shadow);continue}const Oe=ve.node,$e=(N?N(Oe):Oe.nodeType)===Tn.element,Nt=y(Oe);if(Nt)for(let _t=Nt.length-1;_t>=0;--_t)le.push({node:Nt[_t],shadow:null});if($e){const _t=I?I(Oe):null;if(typeof _t=="string"&&ht(_t)==="template"){const zt=Oe.content;mt(zt)&&le.push({node:zt,shadow:null})}}if($e){const _t=C(Oe);mt(_t)&&le.push({node:null,shadow:_t},{node:_t,shadow:null})}}};return e.sanitize=function(ke){let V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},le=null,ve=null,Oe=null,Ve=null;if(bn=!ke,bn&&(ke=""),typeof ke!="string"&&!kt(ke)&&(ke=Ik(ke),typeof ke!="string"))throw pl("dirty is not a string, aborting");if(!e.isSupported)return ke;ue||Zt(V),e.removed=[];const $e=vt&&typeof ke!="string"&&kt(ke);if($e){const zt=I?I(ke):ke.nodeName;if(typeof zt=="string"){const Lt=ht(zt);if(!ee[Lt]||Ue[Lt])throw pl("root node is forbidden and cannot be sanitized in-place")}if(On(ke))throw pl("root node is clobbered and cannot be sanitized in-place");try{$n(ke)}catch(Lt){throw El(ke),Lt}}else if(kt(ke))le=Ln(""),ve=le.ownerDocument.importNode(ke,!0),ve.nodeType===Tn.element&&ve.nodeName==="BODY"||ve.nodeName==="HTML"?le=ve:le.appendChild(ve),$n(ve);else{if(!x&&!He&&!ze&&ke.indexOf("<")===-1)return M&&de?U(ke):ke;if(le=Ln(ke),!le)return x?null:de?R:""}le&&ye&&Pt(le.firstChild);const Nt=Sl($e?ke:le);try{for(;Oe=Nt.nextNode();)Dn(Oe),zn(Oe),mt(Oe.content)&&pn(Oe.content)}catch(zt){throw $e&&El(ke),zt}if($e)return Ql(e.removed,zt=>{zt.element&&Tl(zt.element)}),He&&Xt(ke),ke;if(x){if(He&&Xt(le),ge)for(Ve=j.call(le.ownerDocument);le.firstChild;)Ve.appendChild(le.firstChild);else Ve=le;return(Ce.shadowroot||Ce.shadowrootmode)&&(Ve=J.call(l,Ve,!0)),Ve}let _t=ze?le.outerHTML:le.innerHTML;return ze&&ee["!doctype"]&&le.ownerDocument&&le.ownerDocument.doctype&&le.ownerDocument.doctype.name&&Bt(Hk,le.ownerDocument.doctype.name)&&(_t=" +`+_t),He&&(_t=xn(_t)),M&&de?U(_t):_t},e.setConfig=function(){let ke=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Zt(ke),ue=!0},e.clearConfig=function(){Gt=null,ue=!1,M=O,R=""},e.isValidAttribute=function(ke,V,le){Gt||Zt({});const ve=ht(ke),Oe=ht(V);return An(ve,Oe,le)},e.addHook=function(ke,V){typeof V=="function"&&Dl(q[ke],V)},e.removeHook=function(ke,V){if(V!==void 0){const le=Ek(q[ke],V);return le===-1?void 0:Tk(q[ke],le,1)[0]}return pc(q[ke])},e.removeHooks=function(ke){q[ke]=[]},e.removeAllHooks=function(){q=Tc()},e}var zd=Pd();function Yk(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function Bd(n){return n instanceof Map?n.clear=n.delete=n.set=function(){throw new Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=function(){throw new Error("set is read-only")}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(e=>{const t=n[e],l=typeof t;(l==="object"||l==="function")&&!Object.isFrozen(t)&&Bd(t)}),n}class Sc{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Fd(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function Yn(n,...e){const t=Object.create(null);for(const l in n)t[l]=n[l];return e.forEach(function(l){for(const s in l)t[s]=l[s]}),t}const Xk="",Cc=n=>!!n.scope,Jk=(n,{prefix:e})=>{if(n.startsWith("language:"))return n.replace("language:","language-");if(n.includes(".")){const t=n.split(".");return[`${e}${t.shift()}`,...t.map((l,s)=>`${l}${"_".repeat(s+1)}`)].join(" ")}return`${e}${n}`};class Qk{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=Fd(e)}openNode(e){if(!Cc(e))return;const t=Jk(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){Cc(e)&&(this.buffer+=Xk)}value(){return this.buffer}span(e){this.buffer+=``}}const Ac=(n={})=>{const e={children:[]};return Object.assign(e,n),e};class ao{constructor(){this.rootNode=Ac(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=Ac({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return typeof t=="string"?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(l=>this._walk(e,l)),e.closeNode(t)),e}static _collapse(e){typeof e!="string"&&e.children&&(e.children.every(t=>typeof t=="string")?e.children=[e.children.join("")]:e.children.forEach(t=>{ao._collapse(t)}))}}class xk extends ao{constructor(e){super(),this.options=e}addText(e){e!==""&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){const l=e.root;t&&(l.scope=`language:${t}`),this.add(l)}toHTML(){return new Qk(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function rs(n){return n?typeof n=="string"?n:n.source:null}function jd(n){return yl("(?=",n,")")}function $k(n){return yl("(?:",n,")*")}function e2(n){return yl("(?:",n,")?")}function yl(...n){return n.map(t=>rs(t)).join("")}function t2(n){const e=n[n.length-1];return typeof e=="object"&&e.constructor===Object?(n.splice(n.length-1,1),e):{}}function co(...n){return"("+(t2(n).capture?"":"?:")+n.map(l=>rs(l)).join("|")+")"}function Ud(n){return new RegExp(n.toString()+"|").exec("").length-1}function n2(n,e){const t=n&&n.exec(e);return t&&t.index===0}const l2=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function uo(n,{joinWith:e}){let t=0;return n.map(l=>{t+=1;const s=t;let o=rs(l),i="";for(;o.length>0;){const c=l2.exec(o);if(!c){i+=o;break}i+=o.substring(0,c.index),o=o.substring(c.index+c[0].length),c[0][0]==="\\"&&c[1]?i+="\\"+String(Number(c[1])+s):(i+=c[0],c[0]==="("&&t++)}return i}).map(l=>`(${l})`).join(e)}const s2=/\b\B/,Hd="[a-zA-Z]\\w*",fo="[a-zA-Z_]\\w*",Wd="\\b\\d+(\\.\\d+)?",Gd="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Kd="\\b(0b[01]+)",i2="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",o2=(n={})=>{const e=/^#![ ]*\//;return n.binary&&(n.begin=yl(e,/.*\b/,n.binary,/\b.*/)),Yn({scope:"meta",begin:e,end:/$/,relevance:0,"on:begin":(t,l)=>{t.index!==0&&l.ignoreMatch()}},n)},as={begin:"\\\\[\\s\\S]",relevance:0},r2={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[as]},a2={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[as]},c2={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},$s=function(n,e,t={}){const l=Yn({scope:"comment",begin:n,end:e,contains:[]},t);l.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const s=co("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return l.contains.push({begin:yl(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),l},u2=$s("//","$"),f2=$s("/\\*","\\*/"),d2=$s("#","$"),p2={scope:"number",begin:Wd,relevance:0},m2={scope:"number",begin:Gd,relevance:0},g2={scope:"number",begin:Kd,relevance:0},h2={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[as,{begin:/\[/,end:/\]/,relevance:0,contains:[as]}]},_2={scope:"title",begin:Hd,relevance:0},b2={scope:"title",begin:fo,relevance:0},v2={begin:"\\.\\s*"+fo,relevance:0},k2=function(n){return Object.assign(n,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})};var Os=Object.freeze({__proto__:null,APOS_STRING_MODE:r2,BACKSLASH_ESCAPE:as,BINARY_NUMBER_MODE:g2,BINARY_NUMBER_RE:Kd,COMMENT:$s,C_BLOCK_COMMENT_MODE:f2,C_LINE_COMMENT_MODE:u2,C_NUMBER_MODE:m2,C_NUMBER_RE:Gd,END_SAME_AS_BEGIN:k2,HASH_COMMENT_MODE:d2,IDENT_RE:Hd,MATCH_NOTHING_RE:s2,METHOD_GUARD:v2,NUMBER_MODE:p2,NUMBER_RE:Wd,PHRASAL_WORDS_MODE:c2,QUOTE_STRING_MODE:a2,REGEXP_MODE:h2,RE_STARTERS_RE:i2,SHEBANG:o2,TITLE_MODE:_2,UNDERSCORE_IDENT_RE:fo,UNDERSCORE_TITLE_MODE:b2});function w2(n,e){n.input[n.index-1]==="."&&e.ignoreMatch()}function y2(n,e){n.className!==void 0&&(n.scope=n.className,delete n.className)}function E2(n,e){e&&n.beginKeywords&&(n.begin="\\b("+n.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",n.__beforeBegin=w2,n.keywords=n.keywords||n.beginKeywords,delete n.beginKeywords,n.relevance===void 0&&(n.relevance=0))}function T2(n,e){Array.isArray(n.illegal)&&(n.illegal=co(...n.illegal))}function S2(n,e){if(n.match){if(n.begin||n.end)throw new Error("begin & end are not supported with match");n.begin=n.match,delete n.match}}function C2(n,e){n.relevance===void 0&&(n.relevance=1)}const A2=(n,e)=>{if(!n.beforeMatch)return;if(n.starts)throw new Error("beforeMatch cannot be used with starts");const t=Object.assign({},n);Object.keys(n).forEach(l=>{delete n[l]}),n.keywords=t.keywords,n.begin=yl(t.beforeMatch,jd(t.begin)),n.starts={relevance:0,contains:[Object.assign(t,{endsParent:!0})]},n.relevance=0,delete t.beforeMatch},N2=["of","and","for","in","not","or","if","then","parent","list","value"],R2="keyword";function Vd(n,e,t=R2){const l=Object.create(null);return typeof n=="string"?s(t,n.split(" ")):Array.isArray(n)?s(t,n):Object.keys(n).forEach(function(o){Object.assign(l,Vd(n[o],e,o))}),l;function s(o,i){e&&(i=i.map(c=>c.toLowerCase())),i.forEach(function(c){const u=c.split("|");l[u[0]]=[o,I2(u[0],u[1])]})}}function I2(n,e){return e?Number(e):M2(n)?0:1}function M2(n){return N2.includes(n.toLowerCase())}const Nc={},_l=n=>{console.error(n)},Rc=(n,...e)=>{console.log(`WARN: ${n}`,...e)},Pl=(n,e)=>{Nc[`${n}/${e}`]||(console.log(`Deprecated as of ${n}. ${e}`),Nc[`${n}/${e}`]=!0)},Zs=new Error;function qd(n,e,{key:t}){let l=0;const s=n[t],o={},i={};for(let c=1;c<=e.length;c++)i[c+l]=s[c],o[c+l]=!0,l+=Ud(e[c-1]);n[t]=i,n[t]._emit=o,n[t]._multi=!0}function L2(n){if(Array.isArray(n.begin)){if(n.skip||n.excludeBegin||n.returnBegin)throw _l("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Zs;if(typeof n.beginScope!="object"||n.beginScope===null)throw _l("beginScope must be object"),Zs;qd(n,n.begin,{key:"beginScope"}),n.begin=uo(n.begin,{joinWith:""})}}function O2(n){if(Array.isArray(n.end)){if(n.skip||n.excludeEnd||n.returnEnd)throw _l("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Zs;if(typeof n.endScope!="object"||n.endScope===null)throw _l("endScope must be object"),Zs;qd(n,n.end,{key:"endScope"}),n.end=uo(n.end,{joinWith:""})}}function D2(n){n.scope&&typeof n.scope=="object"&&n.scope!==null&&(n.beginScope=n.scope,delete n.scope)}function P2(n){D2(n),typeof n.beginScope=="string"&&(n.beginScope={_wrap:n.beginScope}),typeof n.endScope=="string"&&(n.endScope={_wrap:n.endScope}),L2(n),O2(n)}function z2(n){function e(i,c){return new RegExp(rs(i),"m"+(n.case_insensitive?"i":"")+(n.unicodeRegex?"u":"")+(c?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(c,u){u.position=this.position++,this.matchIndexes[this.matchAt]=u,this.regexes.push([u,c]),this.matchAt+=Ud(c)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const c=this.regexes.map(u=>u[1]);this.matcherRe=e(uo(c,{joinWith:"|"}),!0),this.lastIndex=0}exec(c){this.matcherRe.lastIndex=this.lastIndex;const u=this.matcherRe.exec(c);if(!u)return null;const d=u.findIndex((g,h)=>h>0&&g!==void 0),m=this.matchIndexes[d];return u.splice(0,d),Object.assign(u,m)}}class l{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(c){if(this.multiRegexes[c])return this.multiRegexes[c];const u=new t;return this.rules.slice(c).forEach(([d,m])=>u.addRule(d,m)),u.compile(),this.multiRegexes[c]=u,u}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(c,u){this.rules.push([c,u]),u.type==="begin"&&this.count++}exec(c){const u=this.getMatcher(this.regexIndex);u.lastIndex=this.lastIndex;let d=u.exec(c);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){const m=this.getMatcher(0);m.lastIndex=this.lastIndex+1,d=m.exec(c)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function s(i){const c=new l;return i.contains.forEach(u=>c.addRule(u.begin,{rule:u,type:"begin"})),i.terminatorEnd&&c.addRule(i.terminatorEnd,{type:"end"}),i.illegal&&c.addRule(i.illegal,{type:"illegal"}),c}function o(i,c){const u=i;if(i.isCompiled)return u;[y2,S2,P2,A2].forEach(m=>m(i,c)),n.compilerExtensions.forEach(m=>m(i,c)),i.__beforeBegin=null,[E2,T2,C2].forEach(m=>m(i,c)),i.isCompiled=!0;let d=null;return typeof i.keywords=="object"&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords),d=i.keywords.$pattern,delete i.keywords.$pattern),d=d||/\w+/,i.keywords&&(i.keywords=Vd(i.keywords,n.case_insensitive)),u.keywordPatternRe=e(d,!0),c&&(i.begin||(i.begin=/\B|\b/),u.beginRe=e(u.begin),!i.end&&!i.endsWithParent&&(i.end=/\B|\b/),i.end&&(u.endRe=e(u.end)),u.terminatorEnd=rs(u.end)||"",i.endsWithParent&&c.terminatorEnd&&(u.terminatorEnd+=(i.end?"|":"")+c.terminatorEnd)),i.illegal&&(u.illegalRe=e(i.illegal)),i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map(function(m){return B2(m==="self"?i:m)})),i.contains.forEach(function(m){o(m,u)}),i.starts&&o(i.starts,c),u.matcher=s(u),u}if(n.compilerExtensions||(n.compilerExtensions=[]),n.contains&&n.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return n.classNameAliases=Yn(n.classNameAliases||{}),o(n)}function Zd(n){return n?n.endsWithParent||Zd(n.starts):!1}function B2(n){return n.variants&&!n.cachedVariants&&(n.cachedVariants=n.variants.map(function(e){return Yn(n,{variants:null},e)})),n.cachedVariants?n.cachedVariants:Zd(n)?Yn(n,{starts:n.starts?Yn(n.starts):null}):Object.isFrozen(n)?Yn(n):n}var F2="11.11.1";class j2 extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const Fi=Fd,Ic=Yn,Mc=Symbol("nomatch"),U2=7,Yd=function(n){const e=Object.create(null),t=Object.create(null),l=[];let s=!0;const o="Could not find the language '{}', did you forget to load/include a language module?",i={disableAutodetect:!0,name:"Plain text",contains:[]};let c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:xk};function u(G){return c.noHighlightRe.test(G)}function d(G){let P=G.className+" ";P+=G.parentNode?G.parentNode.className:"";const j=c.languageDetectRe.exec(P);if(j){const B=O(j[1]);return B||(Rc(o.replace("{}",j[1])),Rc("Falling back to no-highlight mode for this block.",G)),B?j[1]:"no-highlight"}return P.split(/\s+/).find(B=>u(B)||O(B))}function m(G,P,j){let B="",J="";typeof P=="object"?(B=G,j=P.ignoreIllegals,J=P.language):(Pl("10.7.0","highlight(lang, code, ...args) has been deprecated."),Pl("10.7.0",`Please use highlight(code, options) instead. +https://github.com/highlightjs/highlight.js/issues/2277`),J=G,B=P),j===void 0&&(j=!0);const q={code:B,language:J};Z("before:highlight",q);const Y=q.result?q.result:g(q.language,q.code,j);return Y.code=q.code,Z("after:highlight",Y),Y}function g(G,P,j,B){const J=Object.create(null);function q(ue,ye){return ue.keywords[ye]}function Y(){if(!be.keywords){Me.addText(Re);return}let ue=0;be.keywordPatternRe.lastIndex=0;let ye=be.keywordPatternRe.exec(Re),x="";for(;ye;){x+=Re.substring(ue,ye.index);const ge=_e.case_insensitive?ye[0].toLowerCase():ye[0],de=q(be,ge);if(de){const[Ae,it]=de;if(Me.addText(x),x="",J[ge]=(J[ge]||0)+1,J[ge]<=U2&&(Pe+=it),Ae.startsWith("_"))x+=ye[0];else{const ot=_e.classNameAliases[Ae]||Ae;te(ye[0],ot)}}else x+=ye[0];ue=be.keywordPatternRe.lastIndex,ye=be.keywordPatternRe.exec(Re)}x+=Re.substring(ue),Me.addText(x)}function $(){if(Re==="")return;let ue=null;if(typeof be.subLanguage=="string"){if(!e[be.subLanguage]){Me.addText(Re);return}ue=g(be.subLanguage,Re,!0,lt[be.subLanguage]),lt[be.subLanguage]=ue._top}else ue=_(Re,be.subLanguage.length?be.subLanguage:null);be.relevance>0&&(Pe+=ue.relevance),Me.__addSublanguage(ue._emitter,ue.language)}function ne(){be.subLanguage!=null?$():Y(),Re=""}function te(ue,ye){ue!==""&&(Me.startScope(ye),Me.addText(ue),Me.endScope())}function pe(ue,ye){let x=1;const ge=ye.length-1;for(;x<=ge;){if(!ue._emit[x]){x++;continue}const de=_e.classNameAliases[ue[x]]||ue[x],Ae=ye[x];de?te(Ae,de):(Re=Ae,Y(),Re=""),x++}}function Te(ue,ye){return ue.scope&&typeof ue.scope=="string"&&Me.openNode(_e.classNameAliases[ue.scope]||ue.scope),ue.beginScope&&(ue.beginScope._wrap?(te(Re,_e.classNameAliases[ue.beginScope._wrap]||ue.beginScope._wrap),Re=""):ue.beginScope._multi&&(pe(ue.beginScope,ye),Re="")),be=Object.create(ue,{parent:{value:be}}),be}function Fe(ue,ye,x){let ge=n2(ue.endRe,x);if(ge){if(ue["on:end"]){const de=new Sc(ue);ue["on:end"](ye,de),de.isMatchIgnored&&(ge=!1)}if(ge){for(;ue.endsParent&&ue.parent;)ue=ue.parent;return ue}}if(ue.endsWithParent)return Fe(ue.parent,ye,x)}function qe(ue){return be.matcher.regexIndex===0?(Re+=ue[0],1):(ze=!0,0)}function Ne(ue){const ye=ue[0],x=ue.rule,ge=new Sc(x),de=[x.__beforeBegin,x["on:begin"]];for(const Ae of de)if(Ae&&(Ae(ue,ge),ge.isMatchIgnored))return qe(ye);return x.skip?Re+=ye:(x.excludeBegin&&(Re+=ye),ne(),!x.returnBegin&&!x.excludeBegin&&(Re=ye)),Te(x,ue),x.returnBegin?0:ye.length}function ee(ue){const ye=ue[0],x=P.substring(ue.index),ge=Fe(be,ue,x);if(!ge)return Mc;const de=be;be.endScope&&be.endScope._wrap?(ne(),te(ye,be.endScope._wrap)):be.endScope&&be.endScope._multi?(ne(),pe(be.endScope,ue)):de.skip?Re+=ye:(de.returnEnd||de.excludeEnd||(Re+=ye),ne(),de.excludeEnd&&(Re=ye));do be.scope&&Me.closeNode(),!be.skip&&!be.subLanguage&&(Pe+=be.relevance),be=be.parent;while(be!==ge.parent);return ge.starts&&Te(ge.starts,ue),de.returnEnd?0:ye.length}function oe(){const ue=[];for(let ye=be;ye!==_e;ye=ye.parent)ye.scope&&ue.unshift(ye.scope);ue.forEach(ye=>Me.openNode(ye))}let Ce={};function je(ue,ye){const x=ye&&ye[0];if(Re+=ue,x==null)return ne(),0;if(Ce.type==="begin"&&ye.type==="end"&&Ce.index===ye.index&&x===""){if(Re+=P.slice(ye.index,ye.index+1),!s){const ge=new Error(`0 width match regex (${G})`);throw ge.languageName=G,ge.badRule=Ce.rule,ge}return 1}if(Ce=ye,ye.type==="begin")return Ne(ye);if(ye.type==="illegal"&&!j){const ge=new Error('Illegal lexeme "'+x+'" for mode "'+(be.scope||"")+'"');throw ge.mode=be,ge}else if(ye.type==="end"){const ge=ee(ye);if(ge!==Mc)return ge}if(ye.type==="illegal"&&x==="")return Re+=` +`,1;if(De>1e5&&De>ye.index*3)throw new Error("potential infinite loop, way more iterations than matches");return Re+=x,x.length}const _e=O(G);if(!_e)throw _l(o.replace("{}",G)),new Error('Unknown language: "'+G+'"');const Ue=z2(_e);let pt="",be=B||Ue;const lt={},Me=new c.__emitter(c);oe();let Re="",Pe=0,He=0,De=0,ze=!1;try{if(_e.__emitTokens)_e.__emitTokens(P,Me);else{for(be.matcher.considerAll();;){De++,ze?ze=!1:be.matcher.considerAll(),be.matcher.lastIndex=He;const ue=be.matcher.exec(P);if(!ue)break;const ye=P.substring(He,ue.index),x=je(ye,ue);He=ue.index+x}je(P.substring(He))}return Me.finalize(),pt=Me.toHTML(),{language:G,value:pt,relevance:Pe,illegal:!1,_emitter:Me,_top:be}}catch(ue){if(ue.message&&ue.message.includes("Illegal"))return{language:G,value:Fi(P),illegal:!0,relevance:0,_illegalBy:{message:ue.message,index:He,context:P.slice(He-100,He+100),mode:ue.mode,resultSoFar:pt},_emitter:Me};if(s)return{language:G,value:Fi(P),illegal:!1,relevance:0,errorRaised:ue,_emitter:Me,_top:be};throw ue}}function h(G){const P={value:Fi(G),illegal:!1,relevance:0,_top:i,_emitter:new c.__emitter(c)};return P._emitter.addText(G),P}function _(G,P){P=P||c.languages||Object.keys(e);const j=h(G),B=P.filter(O).filter(H).map(ne=>g(ne,G,!1));B.unshift(j);const J=B.sort((ne,te)=>{if(ne.relevance!==te.relevance)return te.relevance-ne.relevance;if(ne.language&&te.language){if(O(ne.language).supersetOf===te.language)return 1;if(O(te.language).supersetOf===ne.language)return-1}return 0}),[q,Y]=J,$=q;return $.secondBest=Y,$}function v(G,P,j){const B=P&&t[P]||j;G.classList.add("hljs"),G.classList.add(`language-${B}`)}function k(G){let P=null;const j=d(G);if(u(j))return;if(Z("before:highlightElement",{el:G,language:j}),G.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",G);return}if(G.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(G)),c.throwUnescapedHTML))throw new j2("One of your code blocks includes unescaped HTML.",G.innerHTML);P=G;const B=P.textContent,J=j?m(B,{language:j,ignoreIllegals:!0}):_(B);G.innerHTML=J.value,G.dataset.highlighted="yes",v(G,j,J.language),G.result={language:J.language,re:J.relevance,relevance:J.relevance},J.secondBest&&(G.secondBest={language:J.secondBest.language,relevance:J.secondBest.relevance}),Z("after:highlightElement",{el:G,result:J,text:B})}function y(G){c=Ic(c,G)}const E=()=>{N(),Pl("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function C(){N(),Pl("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let A=!1;function N(){function G(){N()}if(document.readyState==="loading"){A||window.addEventListener("DOMContentLoaded",G,!1),A=!0;return}document.querySelectorAll(c.cssSelector).forEach(k)}function I(G,P){let j=null;try{j=P(n)}catch(B){if(_l("Language definition for '{}' could not be registered.".replace("{}",G)),s)_l(B);else throw B;j=i}j.name||(j.name=G),e[G]=j,j.rawDefinition=P.bind(null,n),j.aliases&&L(j.aliases,{languageName:G})}function M(G){delete e[G];for(const P of Object.keys(t))t[P]===G&&delete t[P]}function R(){return Object.keys(e)}function O(G){return G=(G||"").toLowerCase(),e[G]||e[t[G]]}function L(G,{languageName:P}){typeof G=="string"&&(G=[G]),G.forEach(j=>{t[j.toLowerCase()]=P})}function H(G){const P=O(G);return P&&!P.disableAutodetect}function W(G){G["before:highlightBlock"]&&!G["before:highlightElement"]&&(G["before:highlightElement"]=P=>{G["before:highlightBlock"](Object.assign({block:P.el},P))}),G["after:highlightBlock"]&&!G["after:highlightElement"]&&(G["after:highlightElement"]=P=>{G["after:highlightBlock"](Object.assign({block:P.el},P))})}function U(G){W(G),l.push(G)}function K(G){const P=l.indexOf(G);P!==-1&&l.splice(P,1)}function Z(G,P){const j=G;l.forEach(function(B){B[j]&&B[j](P)})}function X(G){return Pl("10.7.0","highlightBlock will be removed entirely in v12.0"),Pl("10.7.0","Please use highlightElement now."),k(G)}Object.assign(n,{highlight:m,highlightAuto:_,highlightAll:N,highlightElement:k,highlightBlock:X,configure:y,initHighlighting:E,initHighlightingOnLoad:C,registerLanguage:I,unregisterLanguage:M,listLanguages:R,getLanguage:O,registerAliases:L,autoDetection:H,inherit:Ic,addPlugin:U,removePlugin:K}),n.debugMode=function(){s=!1},n.safeMode=function(){s=!0},n.versionString=F2,n.regex={concat:yl,lookahead:jd,either:co,optional:e2,anyNumberOfTimes:$k};for(const G in Os)typeof Os[G]=="object"&&Bd(Os[G]);return Object.assign(n,Os),n},Ul=Yd({});Ul.newInstance=()=>Yd({});var H2=Ul;Ul.HighlightJS=Ul;Ul.default=Ul;const ln=Yk(H2),Lc="[A-Za-z$_][0-9A-Za-z$_]*",W2=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],G2=["true","false","null","undefined","NaN","Infinity"],Xd=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Jd=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Qd=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],K2=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],V2=[].concat(Qd,Xd,Jd);function q2(n){const e=n.regex,t=(j,{after:B})=>{const J="",end:""},o=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(j,B)=>{const J=j[0].length+j.index,q=j.input[J];if(q==="<"||q===","){B.ignoreMatch();return}q===">"&&(t(j,{after:J})||B.ignoreMatch());let Y;const $=j.input.substring(J);if(Y=$.match(/^\s*=/)){B.ignoreMatch();return}if((Y=$.match(/^\s+extends\s+/))&&Y.index===0){B.ignoreMatch();return}}},c={$pattern:Lc,keyword:W2,literal:G2,built_in:V2,"variable.language":K2},u="[0-9](_?[0-9])*",d=`\\.(${u})`,m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",g={className:"number",variants:[{begin:`(\\b(${m})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${m})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},h={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},_={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,h],subLanguage:"xml"}},v={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,h],subLanguage:"css"}},k={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,h],subLanguage:"graphql"}},y={className:"string",begin:"`",end:"`",contains:[n.BACKSLASH_ESCAPE,h]},C={className:"comment",variants:[n.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:l+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),n.C_BLOCK_COMMENT_MODE,n.C_LINE_COMMENT_MODE]},A=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,_,v,k,y,{match:/\$\d+/},g];h.contains=A.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(A)});const N=[].concat(C,h.contains),I=N.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(N)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:I},R={variants:[{match:[/class/,/\s+/,l,/\s+/,/extends/,/\s+/,e.concat(l,"(",e.concat(/\./,l),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,l],scope:{1:"keyword",3:"title.class"}}]},O={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Xd,...Jd]}},L={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},H={variants:[{match:[/function/,/\s+/,l,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},W={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function U(j){return e.concat("(?!",j.join("|"),")")}const K={match:e.concat(/\b/,U([...Qd,"super","import"].map(j=>`${j}\\s*\\(`)),l,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},Z={begin:e.concat(/\./,e.lookahead(e.concat(l,/(?![0-9A-Za-z$_(])/))),end:l,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},X={match:[/get|set/,/\s+/,l,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},G="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+n.UNDERSCORE_IDENT_RE+")\\s*=>",P={match:[/const|var|let/,/\s+/,l,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(G)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:I,CLASS_REFERENCE:O},illegal:/#(?![$_A-z])/,contains:[n.SHEBANG({label:"shebang",binary:"node",relevance:5}),L,n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,_,v,k,y,C,{match:/\$\d+/},g,O,{scope:"attr",match:l+e.lookahead(":"),relevance:0},P,{begin:"("+n.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[C,n.REGEXP_MODE,{className:"function",begin:G,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:n.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:I}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:s.begin,end:s.end},{match:o},{begin:i.begin,"on:begin":i.isTrulyOpeningTag,end:i.end}],subLanguage:"xml",contains:[{begin:i.begin,end:i.end,skip:!0,contains:["self"]}]}]},H,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+n.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,n.inherit(n.TITLE_MODE,{begin:l,className:"title.function"})]},{match:/\.\.\./,relevance:0},Z,{match:"\\$"+l,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},K,W,R,X,{match:/\$[(.]/}]}}const Ys="[A-Za-z$_][0-9A-Za-z$_]*",xd=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],$d=["true","false","null","undefined","NaN","Infinity"],ep=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],tp=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],np=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],lp=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],sp=[].concat(np,ep,tp);function Z2(n){const e=n.regex,t=(j,{after:B})=>{const J="",end:""},o=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(j,B)=>{const J=j[0].length+j.index,q=j.input[J];if(q==="<"||q===","){B.ignoreMatch();return}q===">"&&(t(j,{after:J})||B.ignoreMatch());let Y;const $=j.input.substring(J);if(Y=$.match(/^\s*=/)){B.ignoreMatch();return}if((Y=$.match(/^\s+extends\s+/))&&Y.index===0){B.ignoreMatch();return}}},c={$pattern:Ys,keyword:xd,literal:$d,built_in:sp,"variable.language":lp},u="[0-9](_?[0-9])*",d=`\\.(${u})`,m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",g={className:"number",variants:[{begin:`(\\b(${m})((${d})|\\.)?|(${d}))[eE][+-]?(${u})\\b`},{begin:`\\b(${m})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},h={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},_={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,h],subLanguage:"xml"}},v={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,h],subLanguage:"css"}},k={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,h],subLanguage:"graphql"}},y={className:"string",begin:"`",end:"`",contains:[n.BACKSLASH_ESCAPE,h]},C={className:"comment",variants:[n.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:l+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),n.C_BLOCK_COMMENT_MODE,n.C_LINE_COMMENT_MODE]},A=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,_,v,k,y,{match:/\$\d+/},g];h.contains=A.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(A)});const N=[].concat(C,h.contains),I=N.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(N)}]),M={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:I},R={variants:[{match:[/class/,/\s+/,l,/\s+/,/extends/,/\s+/,e.concat(l,"(",e.concat(/\./,l),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,l],scope:{1:"keyword",3:"title.class"}}]},O={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...ep,...tp]}},L={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},H={variants:[{match:[/function/,/\s+/,l,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[M],illegal:/%/},W={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function U(j){return e.concat("(?!",j.join("|"),")")}const K={match:e.concat(/\b/,U([...np,"super","import"].map(j=>`${j}\\s*\\(`)),l,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},Z={begin:e.concat(/\./,e.lookahead(e.concat(l,/(?![0-9A-Za-z$_(])/))),end:l,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},X={match:[/get|set/,/\s+/,l,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},M]},G="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+n.UNDERSCORE_IDENT_RE+")\\s*=>",P={match:[/const|var|let/,/\s+/,l,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(G)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[M]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:I,CLASS_REFERENCE:O},illegal:/#(?![$_A-z])/,contains:[n.SHEBANG({label:"shebang",binary:"node",relevance:5}),L,n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,_,v,k,y,C,{match:/\$\d+/},g,O,{scope:"attr",match:l+e.lookahead(":"),relevance:0},P,{begin:"("+n.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[C,n.REGEXP_MODE,{className:"function",begin:G,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:n.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:I}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:s.begin,end:s.end},{match:o},{begin:i.begin,"on:begin":i.isTrulyOpeningTag,end:i.end}],subLanguage:"xml",contains:[{begin:i.begin,end:i.end,skip:!0,contains:["self"]}]}]},H,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+n.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[M,n.inherit(n.TITLE_MODE,{begin:l,className:"title.function"})]},{match:/\.\.\./,relevance:0},Z,{match:"\\$"+l,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[M]},K,W,R,X,{match:/\$[(.]/}]}}function Y2(n){const e=n.regex,t=Z2(n),l=Ys,s=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],o={begin:[/namespace/,/\s+/,n.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},i={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:s},contains:[t.exports.CLASS_REFERENCE]},c={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},u=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],d={$pattern:Ys,keyword:xd.concat(u),literal:$d,built_in:sp.concat(s),"variable.language":lp},m={className:"meta",begin:"@"+l},g=(k,y,E)=>{const C=k.contains.findIndex(A=>A.label===y);if(C===-1)throw new Error("can not find mode to replace");k.contains.splice(C,1,E)};Object.assign(t.keywords,d),t.exports.PARAMS_CONTAINS.push(m);const h=t.contains.find(k=>k.scope==="attr"),_=Object.assign({},h,{match:e.concat(l,e.lookahead(/\s*\?:/))});t.exports.PARAMS_CONTAINS.push([t.exports.CLASS_REFERENCE,h,_]),t.contains=t.contains.concat([m,o,i,_]),g(t,"shebang",n.SHEBANG()),g(t,"use_strict",c);const v=t.contains.find(k=>k.label==="func.def");return v.relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),t}function X2(n){const e=n.regex,t=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),l=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],c={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:l,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},u={className:"meta",begin:/^(>>>|\.\.\.) /},d={className:"subst",begin:/\{/,end:/\}/,keywords:c,illegal:/#/},m={begin:/\{\{/,relevance:0},g={className:"string",contains:[n.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[n.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[n.BACKSLASH_ESCAPE,u],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[n.BACKSLASH_ESCAPE,u,m,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[n.BACKSLASH_ESCAPE,u,m,d]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[n.BACKSLASH_ESCAPE,m,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[n.BACKSLASH_ESCAPE,m,d]},n.APOS_STRING_MODE,n.QUOTE_STRING_MODE]},h="[0-9](_?[0-9])*",_=`(\\b(${h}))?\\.(${h})|\\b(${h})\\.`,v=`\\b|${l.join("|")}`,k={className:"number",relevance:0,variants:[{begin:`(\\b(${h})|(${_}))[eE][+-]?(${h})[jJ]?(?=${v})`},{begin:`(${_})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${v})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${v})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${v})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${v})`},{begin:`\\b(${h})[jJ](?=${v})`}]},y={className:"comment",begin:e.lookahead(/# type:/),end:/$/,keywords:c,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},E={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:["self",u,k,g,n.HASH_COMMENT_MODE]}]};return d.contains=[g,k,u],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:c,illegal:/(<\/|\?)|=>/,contains:[u,k,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},g,y,n.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[E]},{variants:[{match:[/\bclass/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/\bclass/,/\s+/,t]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[k,E,g]}]}}function J2(n){const o={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:o,illegal:"]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type",begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t},{className:"meta",begin:"&"+n.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+n.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},n.HASH_COMMENT_MODE,{beginKeywords:e,keywords:{literal:e}},h,{className:"number",begin:n.C_NUMBER_RE+"\\b",relevance:0},v,k,o,i],E=[...y];return E.pop(),E.push(c),_.contains=E,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:y}}function ew(n){const e=n.regex,t={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},l={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},o={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},i={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},c=/[A-Za-z][A-Za-z0-9+.-]*/,u={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,c,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},d={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},m={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},g=n.inherit(d,{contains:[]}),h=n.inherit(m,{contains:[]});d.contains.push(h),m.contains.push(g);let _=[t,u];return[d,m,g,h].forEach(E=>{E.contains=E.contains.concat(_)}),_=_.concat(d,m),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:_},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:_}]}]},t,o,d,m,{className:"quote",begin:"^>\\s+",contains:_,end:"$"},s,l,u,i,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}const tw=n=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:n.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:n.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),nw=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],lw=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],sw=[...nw,...lw],iw=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),ow=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),rw=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),aw=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function cw(n){const e=n.regex,t=tw(n),l={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},s="and or not only",o=/@-?\w[\w]*(-\w+)*/,i="[a-zA-Z-][a-zA-Z0-9_-]*",c=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[t.BLOCK_COMMENT,l,t.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+i,relevance:0},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+ow.join("|")+")"},{begin:":(:)?("+rw.join("|")+")"}]},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+aw.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...c,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...c,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},t.FUNCTION_DISPATCH]},{begin:e.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:o},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:s,attribute:iw.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...c,t.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+sw.join("|")+")\\b"}]}}function uw(n){const e=n.regex,t=n.COMMENT("--","$"),l={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},s={begin:/"/,end:/"/,contains:[{match:/""/}]},o=["true","false","unknown"],i=["double precision","large object","with timezone","without timezone"],c=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],u=["add","asc","collation","desc","final","first","last","view"],d=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],m=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],g=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],h=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],_=m,v=[...d,...u].filter(I=>!m.includes(I)),k={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},y={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},E={match:e.concat(/\b/,e.either(..._),/\s*\(/),relevance:0,keywords:{built_in:_}};function C(I){return e.concat(/\b/,e.either(...I.map(M=>M.replace(/\s+/,"\\s+"))),/\b/)}const A={scope:"keyword",match:C(h),relevance:0};function N(I,{exceptions:M,when:R}={}){const O=R;return M=M||[],I.map(L=>L.match(/\|\d+$/)||M.includes(L)?L:O(L)?`${L}|0`:L)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:N(v,{when:I=>I.length<3}),literal:o,type:c,built_in:g},contains:[{scope:"type",match:C(i)},A,E,k,l,s,n.C_NUMBER_MODE,n.C_BLOCK_COMMENT_MODE,t,y]}}function fw(n){const e=n.regex,t=e.concat(/[\p{L}_]/u,e.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),l=/[\p{L}0-9._:-]+/u,s={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},i=n.inherit(o,{begin:/\(/,end:/\)/}),c=n.inherit(n.APOS_STRING_MODE,{className:"string"}),u=n.inherit(n.QUOTE_STRING_MODE,{className:"string"}),d={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[o,u,c,i,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[o,i,u,c]}]}]},n.COMMENT(//,{relevance:10}),{begin://,relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[u]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[d],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[d],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:e.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:d}]},{className:"tag",begin:e.concat(/<\//,e.lookahead(e.concat(t,/>/))),contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}ln.registerLanguage("javascript",q2);ln.registerLanguage("typescript",Y2);ln.registerLanguage("python",X2);ln.registerLanguage("go",J2);ln.registerLanguage("bash",Q2);ln.registerLanguage("json",x2);ln.registerLanguage("yaml",$2);ln.registerLanguage("markdown",ew);ln.registerLanguage("css",cw);ln.registerLanguage("sql",uw);ln.registerLanguage("xml",fw);const ip=/^(https?|mailto|verstak):/i,op=new Set(["case","note","file","secret"]);zd.addHook("afterSanitizeAttributes",n=>{if(n.tagName==="A"){const e=(n.getAttribute("href")||"").trim();ip.test(e)||(n.removeAttribute("href"),n.setAttribute("data-blocked-href",e),n.classList.add("md-link--blocked"),n.setAttribute("role","link"),n.setAttribute("aria-disabled","true"))}n.tagName==="IMG"&&n.remove()});const Gl=new at.Renderer;Gl.link=function({href:n,title:e,text:t}){const l=(n||"").trim();if(!ip.test(l)){const c=hl(t);return`${c}`}if(l.startsWith("verstak://")){const c=rp(l);if(c&&op.has(c.type)){const m=Vn(l),g=hl(t);return`
    ${g}`}const u=hl(t);return`${u}`}const s=Vn(l),o=hl(t),i=e?` title="${Vn(e)}"`:"";return`${o}`};Gl.image=function({href:n,title:e,text:t}){return`[Image: ${hl(t)}]`};Gl.code=function({text:n,lang:e}){const t=e&&ln.getLanguage(e)?e:"plaintext";let l;try{l=ln.highlight(n,{language:t}).value}catch{l=hl(n)}return`
    ${l}
    `};Gl.codespan=function({text:n}){return`${hl(n)}`};Gl.listitem=function({text:n,task:e,checked:t}){return e?`
  • ${n}
  • `:`
  • ${n}
  • `};at.setOptions({renderer:Gl,gfm:!0,breaks:!1,pedantic:!1});function dw(n){const e=at.parse(n);return zd.sanitize(e,{ADD_ATTR:["target","class","data-verstak-href","data-verstak-type","data-verstak-id","data-blocked-href","role","aria-disabled","checked"],ADD_TAGS:["input","span"],ALLOW_UNKNOWN_PROTOCOLS:!0})}function rp(n){const e=n.match(/^verstak:\/\/([a-zA-Z_]+)\/(.+)$/);return e?{type:e[1],id:e[2]}:null}function pw(n){return op.has(n)}function hl(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function Vn(n){return n.replace(/"/g,""").replace(/'/g,"'")}function mw(n){let e,t;return{c(){e=new Us(!1),t=wt(),e.a=t},m(l,s){e.m(n[1],l,s),S(l,t,s)},p(l,s){s&2&&e.p(l[1])},d(l){l&&(T(t),e.d())}}}function gw(n){let e;return{c(){e=f("div"),e.textContent=`${b("note.preview.empty")}`,r(e,"class","md-empty svelte-jdvhib")},m(t,l){S(t,e,l)},p:ie,d(t){t&&T(e)}}}function hw(n){let e,t,l,s,o;return{c(){e=f("div"),t=f("p"),t.textContent=`⚠️ ${b("note.preview.error")}`,l=w(),s=f("p"),o=F(n[2]),r(s,"class","md-error-detail svelte-jdvhib"),r(e,"class","md-error svelte-jdvhib")},m(i,c){S(i,e,c),a(e,t),a(e,l),a(e,s),a(s,o)},p(i,c){c&4&&Q(o,i[2])},d(i){i&&T(e)}}}function _w(n){let e,t,l,s;function o(u,d){var m;return d&1&&(t=null),u[2]?hw:(t==null&&(t=!((m=u[0])!=null&&m.trim())),t?gw:mw)}let i=o(n,-1),c=i(n);return{c(){e=f("div"),c.c(),r(e,"class","markdown-body svelte-jdvhib"),r(e,"role","article")},m(u,d){S(u,e,d),c.m(e,null),l||(s=D(e,"click",n[3]),l=!0)},p(u,[d]){i===(i=o(u,d))&&c?c.p(u,d):(c.d(1),c=i(u),c&&(c.c(),c.m(e,null)))},i:ie,o:ie,d(u){u&&T(e),c.d(),l=!1,s()}}}function bw(n,e,t){let{content:l=""}=e,s="",o="";function i(c){const u=c.target.closest("[data-verstak-href]");if(!u)return;const d=u.getAttribute("data-verstak-href");if(!d)return;c.preventDefault(),c.stopPropagation();const m=rp(d);!m||!pw(m.type)||u.dispatchEvent(new CustomEvent("verstak-link",{bubbles:!0,detail:{type:m.type,id:m.id,href:d}}))}return n.$$set=c=>{"content"in c&&t(0,l=c.content)},n.$$.update=()=>{if(n.$$.dirty&1)try{t(1,s=dw(l||"")),t(2,o="")}catch(c){t(2,o=String(c)),t(1,s="")}},[l,s,o,i]}class ap extends dt{constructor(e){super(),ft(this,e,bw,_w,ut,{content:0})}}function vw(n){let e,t,l,s,o,i,c;return l=new yd({props:{content:n[0],placeholder:n[2],viewMode:"split"}}),l.$on("content-change",n[4]),l.$on("save",n[5]),l.$on("insert-link",n[6]),l.$on("insert-internal-link",n[7]),i=new ap({props:{content:n[0]}}),i.$on("verstak-link",n[8]),{c(){e=f("div"),t=f("div"),Qe(l.$$.fragment),s=w(),o=f("div"),Qe(i.$$.fragment),r(t,"class","split-editor svelte-8tdyp9"),r(o,"class","split-preview svelte-8tdyp9"),r(e,"class","split-pane svelte-8tdyp9")},m(u,d){S(u,e,d),a(e,t),Xe(l,t,null),a(e,s),a(e,o),Xe(i,o,null),c=!0},p(u,d){const m={};d&1&&(m.content=u[0]),d&4&&(m.placeholder=u[2]),l.$set(m);const g={};d&1&&(g.content=u[0]),i.$set(g)},i(u){c||(he(l.$$.fragment,u),he(i.$$.fragment,u),c=!0)},o(u){Ee(l.$$.fragment,u),Ee(i.$$.fragment,u),c=!1},d(u){u&&T(e),Je(l),Je(i)}}}function kw(n){let e,t,l;return t=new ap({props:{content:n[0]}}),t.$on("verstak-link",n[8]),{c(){e=f("div"),Qe(t.$$.fragment),r(e,"class","preview-pane svelte-8tdyp9")},m(s,o){S(s,e,o),Xe(t,e,null),l=!0},p(s,o){const i={};o&1&&(i.content=s[0]),t.$set(i)},i(s){l||(he(t.$$.fragment,s),l=!0)},o(s){Ee(t.$$.fragment,s),l=!1},d(s){s&&T(e),Je(t)}}}function ww(n){let e,t;return e=new yd({props:{content:n[0],placeholder:n[2],viewMode:"edit"}}),e.$on("content-change",n[4]),e.$on("save",n[5]),e.$on("insert-link",n[6]),e.$on("insert-internal-link",n[7]),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p(l,s){const o={};s&1&&(o.content=l[0]),s&4&&(o.placeholder=l[2]),e.$set(o)},i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function yw(n){let e,t,l,s=b("note.mode.edit")+"",o,i,c,u,d=b("note.mode.preview")+"",m,g,h,_,v=b("note.mode.split")+"",k,y,E,C,A,N,I,M,R;const O=[ww,kw,vw],L=[];function H(W,U){return W[1]==="edit"?0:W[1]==="preview"?1:W[1]==="split"?2:-1}return~(A=H(n))&&(N=L[A]=O[A](n)),{c(){e=f("div"),t=f("div"),l=f("button"),o=F(s),c=w(),u=f("button"),m=F(d),h=w(),_=f("button"),k=F(v),E=w(),C=f("div"),N&&N.c(),r(l,"type","button"),r(l,"class","mode-btn svelte-8tdyp9"),r(l,"role","tab"),r(l,"aria-selected",i=n[1]==="edit"),ce(l,"active",n[1]==="edit"),r(u,"type","button"),r(u,"class","mode-btn svelte-8tdyp9"),r(u,"role","tab"),r(u,"aria-selected",g=n[1]==="preview"),ce(u,"active",n[1]==="preview"),r(_,"type","button"),r(_,"class","mode-btn svelte-8tdyp9"),r(_,"role","tab"),r(_,"aria-selected",y=n[1]==="split"),ce(_,"active",n[1]==="split"),r(t,"class","mode-switcher svelte-8tdyp9"),r(t,"role","tablist"),r(t,"aria-label","Note view mode"),r(C,"class","panel-content svelte-8tdyp9"),r(e,"class","note-editor-panel svelte-8tdyp9"),ce(e,"mode-edit",n[1]==="edit"),ce(e,"mode-preview",n[1]==="preview"),ce(e,"mode-split",n[1]==="split")},m(W,U){S(W,e,U),a(e,t),a(t,l),a(l,o),a(t,c),a(t,u),a(u,m),a(t,h),a(t,_),a(_,k),a(e,E),a(e,C),~A&&L[A].m(C,null),I=!0,M||(R=[D(l,"click",n[9]),D(u,"click",n[10]),D(_,"click",n[11])],M=!0)},p(W,[U]){(!I||U&2&&i!==(i=W[1]==="edit"))&&r(l,"aria-selected",i),(!I||U&2)&&ce(l,"active",W[1]==="edit"),(!I||U&2&&g!==(g=W[1]==="preview"))&&r(u,"aria-selected",g),(!I||U&2)&&ce(u,"active",W[1]==="preview"),(!I||U&2&&y!==(y=W[1]==="split"))&&r(_,"aria-selected",y),(!I||U&2)&&ce(_,"active",W[1]==="split");let K=A;A=H(W),A===K?~A&&L[A].p(W,U):(N&&(St(),Ee(L[K],1,1,()=>{L[K]=null}),Ct()),~A?(N=L[A],N?N.p(W,U):(N=L[A]=O[A](W),N.c()),he(N,1),N.m(C,null)):N=null),(!I||U&2)&&ce(e,"mode-edit",W[1]==="edit"),(!I||U&2)&&ce(e,"mode-preview",W[1]==="preview"),(!I||U&2)&&ce(e,"mode-split",W[1]==="split")},i(W){I||(he(N),I=!0)},o(W){Ee(N),I=!1},d(W){W&&T(e),~A&&L[A].d(),M=!1,Se(R)}}}function Ew(n,e,t){let{content:l=""}=e,{viewMode:s="edit"}=e,{placeholder:o=""}=e;const i=kl();function c(y){i("mode-change",{mode:y})}function u(y){t(0,l=y.detail.content),i("content-change",y.detail)}function d(){i("save")}function m(){i("insert-link")}function g(){i("insert-internal-link")}function h(y){i("verstak-link",y.detail)}const _=()=>c("edit"),v=()=>c("preview"),k=()=>c("split");return n.$$set=y=>{"content"in y&&t(0,l=y.content),"viewMode"in y&&t(1,s=y.viewMode),"placeholder"in y&&t(2,o=y.placeholder)},[l,s,o,c,u,d,m,g,h,_,v,k]}class Tw extends dt{constructor(e){super(),ft(this,e,Ew,yw,ut,{content:0,viewMode:1,placeholder:2})}}const{Boolean:cp}=Ji;function Oc(n,e,t){const l=n.slice();return l[531]=e[t],l}function Dc(n,e,t){const l=n.slice();return l[534]=e[t],l}function Pc(n,e,t){const l=n.slice();return l[537]=e[t],l}function zc(n,e,t){const l=n.slice();return l[537]=e[t],l}function Bc(n,e,t){const l=n.slice();return l[563]=e[t],l}function Fc(n,e,t){const l=n.slice();return l[590]=e[t],l}function jc(n,e,t){const l=n.slice();return l[563]=e[t],l}function Uc(n,e,t){const l=n.slice();return l[590]=e[t],l}function Hc(n,e,t){const l=n.slice();return l[597]=e[t],l}function Wc(n,e,t){const l=n.slice();return l[597]=e[t],l}function Gc(n,e,t){const l=n.slice();return l[566]=e[t],l[586]=e,l[587]=t,l}function Kc(n,e,t){const l=n.slice();return l[563]=e[t],l}function Vc(n,e,t){const l=n.slice();return l[583]=e[t],l}function qc(n,e,t){const l=n.slice();return l[550]=e[t],l}function Zc(n,e,t){const l=n.slice();return l[576]=e[t],l}function Yc(n,e,t){const l=n.slice();return l[550]=e[t],l}function Xc(n,e,t){const l=n.slice();return l[563]=e[t],l}function Jc(n,e,t){const l=n.slice();return l[542]=e[t],l}function Qc(n,e,t){const l=n.slice();return l[563]=e[t],l}function xc(n,e,t){const l=n.slice();return l[566]=e[t],l[567]=e,l[568]=t,l}function $c(n,e,t){const l=n.slice();return l[563]=e[t],l}function eu(n,e,t){const l=n.slice();return l[558]=e[t],l}function tu(n,e,t){const l=n.slice();return l[555]=e[t],l}function nu(n,e,t){const l=n.slice();return l[550]=e[t],l}function lu(n,e,t){const l=n.slice();return l[550]=e[t],l}function su(n,e,t){const l=n.slice();return l[545]=e[t],l}function iu(n,e,t){const l=n.slice();return l[542]=e[t],l}function ou(n,e,t){const l=n.slice();return l[545]=e[t],l}function ru(n,e,t){const l=n.slice();return l[573]=e[t],l}function au(n,e,t){const l=n.slice();return l[604]=e[t],l}function Sw(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y,E,C,A,N,I,M,R,O,L,H,W,U,K,Z,X,G,P,j,B,J,q,Y,$,ne,te,pe,Te,Fe,qe,Ne,ee,oe,Ce,je,_e,Ue,pt,be=n[108]&&cu(n),lt=we(n[0]),Me=[];for(let fe=0;fe0?0:1}I=He(n),M=Pe[I]=Re[I](n),L=new Bv({props:{syncStatus:n[123],syncLoading:n[124],syncMessage:n[125],syncMessageKind:n[126],onSync:n[262],onOpenSettings:n[269]}}),j=new T0({props:{title:n[130],subtitle:n[129],wailsCall:ae,typeLabel:n[230],onOpenSearchResult:n[257],$$slots:{actions:[Lw]},$$scope:{ctx:n}}});let De=n[34]&&gu(n);const ze=[Hw,Uw,jw,Fw,Bw,zw,Pw,Dw,Ow],ue=[];function ye(fe,Le){return Le[0]&2&&(q=null),fe[37]?0:fe[2]?1:fe[1]==="inbox"?2:fe[1]==="trash"?3:fe[1]==="journal"?4:fe[1]==="today"?5:fe[1]==="activity"?6:(q==null&&(q=!!(fe[1]&&fe[1].startsWith("plugin:"))),q?7:8)}Y=ye(n,[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]),$=ue[Y]=ze[Y](n);let x=n[80]&&Rf(n),ge=n[84].visible&&Lf(n),de=n[51]&&zf(n),Ae=n[87]&&Bf(n),it=n[94]&&n[93]&&jf(n),ot=n[115]&&Hf(n),Ye=n[118]&&Gf(n),vt=n[70]&&Zf(n),Ke=n[110]&&Xf(n),Ge=n[100]&&Jf(n),st=n[13]&&Qf(n);return{c(){e=f("div"),be&&be.c(),t=w(),l=f("aside"),s=f("div"),o=f("img"),c=w(),u=f("span"),u.textContent=`${b("nav.brand")}`,d=w(),m=f("nav"),g=f("div"),h=f("div"),h.textContent=`${b("nav.system")}`,_=w();for(let fe=0;fe',K=w(),Z=f("span"),X=F(n[33]),G=w(),P=f("main"),Qe(j.$$.fragment),B=w(),De&&De.c(),J=w(),$.c(),ne=w(),x&&x.c(),te=w(),ge&&ge.c(),pe=w(),de&&de.c(),Te=w(),Ae&&Ae.c(),Fe=w(),it&&it.c(),qe=w(),ot&&ot.c(),Ne=w(),Ye&&Ye.c(),ee=w(),vt&&vt.c(),oe=w(),Ke&&Ke.c(),Ce=w(),Ge&&Ge.c(),je=w(),st&&st.c(),r(o,"class","logo svelte-5mstt"),jl(o.src,i="/assets/app-icons/icon_32x32.png")||r(o,"src",i),r(o,"width","20"),r(o,"height","20"),r(o,"alt",""),r(u,"class","brand-name svelte-5mstt"),r(s,"class","sidebar-brand svelte-5mstt"),r(h,"class","nav-label svelte-5mstt"),r(g,"class","nav-group svelte-5mstt"),r(E,"class","svelte-5mstt"),r(A,"class","nav-add-btn svelte-5mstt"),r(A,"title",b("common.create")),r(y,"class","nav-label-row svelte-5mstt"),r(k,"class","nav-group svelte-5mstt"),r(m,"class","sidebar-nav svelte-5mstt"),r(U,"class","sidebar-settings-btn svelte-5mstt"),r(U,"title",b("common.settings")),r(Z,"class","version svelte-5mstt"),r(W,"class","sidebar-footer-row svelte-5mstt"),r(O,"class","sidebar-footer svelte-5mstt"),r(l,"class","sidebar svelte-5mstt"),r(P,"class","main svelte-5mstt"),r(e,"class","app svelte-5mstt")},m(fe,Le){S(fe,e,Le),be&&be.m(e,null),a(e,t),a(e,l),a(l,s),a(s,o),a(s,c),a(s,u),a(l,d),a(l,m),a(m,g),a(g,h),a(g,_);for(let At=0;At{Pe[At]=null}),Ct(),M=Pe[I],M?M.p(fe,Le):(M=Pe[I]=Re[I](fe),M.c()),he(M,1),M.m(k,null));const en={};Le[3]&1073741824&&(en.syncStatus=fe[123]),Le[4]&1&&(en.syncLoading=fe[124]),Le[4]&2&&(en.syncMessage=fe[125]),Le[4]&4&&(en.syncMessageKind=fe[126]),L.$set(en),(!_e||Le[1]&4)&&Q(X,fe[33]);const Mt={};Le[4]&64&&(Mt.title=fe[130]),Le[4]&32&&(Mt.subtitle=fe[129]),Le[0]&2|Le[2]&16480|Le[19]&262144&&(Mt.$$scope={dirty:Le,ctx:fe}),j.$set(Mt),fe[34]?De?De.p(fe,Le):(De=gu(fe),De.c(),De.m(P,J)):De&&(De.d(1),De=null);let Ht=Y;Y=ye(fe,Le),Y===Ht?ue[Y].p(fe,Le):(St(),Ee(ue[Ht],1,1,()=>{ue[Ht]=null}),Ct(),$=ue[Y],$?$.p(fe,Le):($=ue[Y]=ze[Y](fe),$.c()),he($,1),$.m(P,ne)),fe[80]?x?(x.p(fe,Le),Le[2]&262144&&he(x,1)):(x=Rf(fe),x.c(),he(x,1),x.m(P,te)):x&&(St(),Ee(x,1,1,()=>{x=null}),Ct()),fe[84].visible?ge?(ge.p(fe,Le),Le[2]&4194304&&he(ge,1)):(ge=Lf(fe),ge.c(),he(ge,1),ge.m(P,pe)):ge&&(St(),Ee(ge,1,1,()=>{ge=null}),Ct()),fe[51]?de?de.p(fe,Le):(de=zf(fe),de.c(),de.m(P,Te)):de&&(de.d(1),de=null),fe[87]?Ae?Ae.p(fe,Le):(Ae=Bf(fe),Ae.c(),Ae.m(P,Fe)):Ae&&(Ae.d(1),Ae=null),fe[94]&&fe[93]?it?it.p(fe,Le):(it=jf(fe),it.c(),it.m(P,qe)):it&&(it.d(1),it=null),fe[115]?ot?ot.p(fe,Le):(ot=Hf(fe),ot.c(),ot.m(P,Ne)):ot&&(ot.d(1),ot=null),fe[118]?Ye?Ye.p(fe,Le):(Ye=Gf(fe),Ye.c(),Ye.m(P,ee)):Ye&&(Ye.d(1),Ye=null),fe[70]?vt?vt.p(fe,Le):(vt=Zf(fe),vt.c(),vt.m(P,oe)):vt&&(vt.d(1),vt=null),fe[110]?Ke?(Ke.p(fe,Le),Le[3]&131072&&he(Ke,1)):(Ke=Xf(fe),Ke.c(),he(Ke,1),Ke.m(P,Ce)):Ke&&(St(),Ee(Ke,1,1,()=>{Ke=null}),Ct()),fe[100]?Ge?(Ge.p(fe,Le),Le[3]&128&&he(Ge,1)):(Ge=Jf(fe),Ge.c(),he(Ge,1),Ge.m(P,je)):Ge&&(St(),Ee(Ge,1,1,()=>{Ge=null}),Ct()),fe[13]?st?(st.p(fe,Le),Le[0]&8192&&he(st,1)):(st=Qf(fe),st.c(),he(st,1),st.m(P,null)):st&&(St(),Ee(st,1,1,()=>{st=null}),Ct())},i(fe){_e||(he(M),he(L.$$.fragment,fe),he(j.$$.fragment,fe),he($),he(x),he(ge),he(Ke),he(Ge),he(st),_e=!0)},o(fe){Ee(M),Ee(L.$$.fragment,fe),Ee(j.$$.fragment,fe),Ee($),Ee(x),Ee(ge),Ee(Ke),Ee(Ge),Ee(st),_e=!1},d(fe){fe&&T(e),be&&be.d(),Ze(Me,fe),Pe[I].d(),Je(L),Je(j),De&&De.d(),ue[Y].d(),x&&x.d(),ge&&ge.d(),de&&de.d(),Ae&&Ae.d(),it&&it.d(),ot&&ot.d(),Ye&&Ye.d(),vt&&vt.d(),Ke&&Ke.d(),Ge&&Ge.d(),st&&st.d(),Ue=!1,Se(pt)}}}function Cw(n){var l;let e,t;return e=new Tb({props:{vaultPath:((l=n[10])==null?void 0:l.vaultPath)||"",onComplete:n[264]}}),{c(){Qe(e.$$.fragment)},m(s,o){Xe(e,s,o),t=!0},p(s,o){var c;const i={};o[0]&1024&&(i.vaultPath=((c=s[10])==null?void 0:c.vaultPath)||""),e.$set(i)},i(s){t||(he(e.$$.fragment,s),t=!0)},o(s){Ee(e.$$.fragment,s),t=!1},d(s){Je(e,s)}}}function Aw(n){let e,t;return e=new wb({props:{onComplete:n[263]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p:ie,i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function cu(n){let e,t,l;return{c(){e=f("div"),t=f("div"),l=F(n[109]),r(t,"class","capture-drop-box svelte-5mstt"),r(e,"class","capture-drop-overlay svelte-5mstt")},m(s,o){S(s,e,o),a(e,t),a(t,l)},p(s,o){o[3]&65536&&Q(l,s[109])},d(s){s&&T(e)}}}function uu(n){let e,t;return{c(){e=f("span"),t=F(n[61]),r(e,"class","nav-badge svelte-5mstt")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s[1]&1073741824&&Q(t,l[61])},d(l){l&&T(e)}}}function fu(n){let e,t;return{c(){e=f("span"),t=F(n[75]),r(e,"class","nav-badge svelte-5mstt")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s[2]&8192&&Q(t,l[75])},d(l){l&&T(e)}}}function du(n){let e,t=n[604].label+"",l,s,o,i,c,u,d,m=n[604].id==="journal"&&n[61]>0&&uu(n),g=n[604].id==="trash"&&n[75]>0&&fu(n);function h(){return n[268](n[604])}return{c(){e=f("button"),l=F(t),s=w(),m&&m.c(),o=w(),g&&g.c(),i=w(),r(e,"class",c="nav-item "+(n[1]===n[604].id?"selected":"")+" svelte-5mstt")},m(_,v){S(_,e,v),a(e,l),a(e,s),m&&m.m(e,null),a(e,o),g&&g.m(e,null),a(e,i),u||(d=D(e,"click",h),u=!0)},p(_,v){n=_,v[0]&1&&t!==(t=n[604].label+"")&&Q(l,t),n[604].id==="journal"&&n[61]>0?m?m.p(n,v):(m=uu(n),m.c(),m.m(e,o)):m&&(m.d(1),m=null),n[604].id==="trash"&&n[75]>0?g?g.p(n,v):(g=fu(n),g.c(),g.m(e,i)):g&&(g.d(1),g=null),v[0]&3&&c!==(c="nav-item "+(n[1]===n[604].id?"selected":"")+" svelte-5mstt")&&r(e,"class",c)},d(_){_&&T(e),m&&m.d(),g&&g.d(),u=!1,d()}}}function Nw(n){let e;return{c(){e=f("div"),e.textContent=`${b("nav.noNodes")}`,r(e,"class","nav-empty svelte-5mstt")},m(t,l){S(t,e,l)},p:ie,i:ie,o:ie,d(t){t&&T(e)}}}function Rw(n){var i;let e,t,l,s,o;return t=new kd({props:{nodes:n[14],expanded:n[95],selectedNodeId:((i=n[2])==null?void 0:i.id)||"",onSelect:n[136],onToggle:n[166],onContextMenu:n[164],onDrop:n[167]}}),{c(){e=f("div"),Qe(t.$$.fragment),r(e,"class","workspace-tree-area svelte-5mstt"),r(e,"role","region"),r(e,"aria-label",b("nav.workspace")),ce(e,"drop-valid",n[106])},m(c,u){S(c,e,u),Xe(t,e,null),l=!0,s||(o=[D(e,"dragover",Xs(n[169])),D(e,"dragleave",n[170]),D(e,"drop",n[168])],s=!0)},p(c,u){var m;const d={};u[0]&16384&&(d.nodes=c[14]),u[3]&4&&(d.expanded=c[95]),u[0]&4&&(d.selectedNodeId=((m=c[2])==null?void 0:m.id)||""),t.$set(d),(!l||u[3]&8192)&&ce(e,"drop-valid",c[106])},i(c){l||(he(t.$$.fragment,c),l=!0)},o(c){Ee(t.$$.fragment,c),l=!1},d(c){c&&T(e),Je(t),s=!1,Se(o)}}}function Iw(n){let e,t,l,s=Et("emptyTrash",14)+"",o,i=b("trash.emptyTrash")+"",c,u,d,m,g,h=n[76].length>0&&pu(n);return{c(){h&&h.c(),e=w(),t=f("button"),l=new Us(!1),o=w(),c=F(i),u=w(),d=f("button"),d.textContent=`${b("trash.openFolder")}`,l.a=o,r(t,"class","btn btn-sm btn-danger svelte-5mstt"),r(d,"class","btn btn-sm svelte-5mstt")},m(_,v){h&&h.m(_,v),S(_,e,v),S(_,t,v),l.m(s,t),a(t,o),a(t,c),S(_,u,v),S(_,d,v),m||(g=[D(t,"click",n[206]),D(d,"click",n[273])],m=!0)},p(_,v){_[76].length>0?h?h.p(_,v):(h=pu(_),h.c(),h.m(e.parentNode,e)):h&&(h.d(1),h=null)},d(_){_&&(T(e),T(t),T(u),T(d)),h&&h.d(_),m=!1,Se(g)}}}function Mw(n){let e,t=(n[67]?b("common.loading"):b("inbox.pasteClipboard"))+"",l,s,o,i,c,u=n[68]&&mu(n);return{c(){e=f("button"),l=F(t),s=w(),u&&u.c(),o=wt(),r(e,"class","btn btn-primary svelte-5mstt"),e.disabled=n[67]},m(d,m){S(d,e,m),a(e,l),S(d,s,m),u&&u.m(d,m),S(d,o,m),i||(c=D(e,"click",n[232]),i=!0)},p(d,m){m[2]&32&&t!==(t=(d[67]?b("common.loading"):b("inbox.pasteClipboard"))+"")&&Q(l,t),m[2]&32&&(e.disabled=d[67]),d[68]?u?u.p(d,m):(u=mu(d),u.c(),u.m(o.parentNode,o)):u&&(u.d(1),u=null)},d(d){d&&(T(e),T(s),T(o)),u&&u.d(d),i=!1,c()}}}function pu(n){let e,t,l=Et("restore",14)+"",s,o=b("trash.restore")+"",i,c,u=n[76].length+"",d,m,g,h,_,v=Et("purge",14)+"",k,y=b("common.delete")+"",E,C,A=n[76].length+"",N,I,M,R;return{c(){e=f("button"),t=new Us(!1),s=w(),i=F(o),c=F(" ("),d=F(u),m=F(")"),g=w(),h=f("button"),_=new Us(!1),k=w(),E=F(y),C=F(" ("),N=F(A),I=F(")"),t.a=s,r(e,"class","btn btn-sm btn-primary svelte-5mstt"),_.a=k,r(h,"class","btn btn-sm btn-danger svelte-5mstt")},m(O,L){S(O,e,L),t.m(l,e),a(e,s),a(e,i),a(e,c),a(e,d),a(e,m),S(O,g,L),S(O,h,L),_.m(v,h),a(h,k),a(h,E),a(h,C),a(h,N),a(h,I),M||(R=[D(e,"click",n[271]),D(h,"click",n[272])],M=!0)},p(O,L){L[2]&16384&&u!==(u=O[76].length+"")&&Q(d,u),L[2]&16384&&A!==(A=O[76].length+"")&&Q(N,A)},d(O){O&&(T(e),T(g),T(h)),M=!1,Se(R)}}}function mu(n){let e,t;return{c(){e=f("span"),t=F(n[68]),r(e,"class","inbox-capture-status svelte-5mstt")},m(l,s){S(l,e,s),a(e,t)},p(l,s){s[2]&64&&Q(t,l[68])},d(l){l&&T(e)}}}function Lw(n){let e;function t(o,i){if(o[1]==="inbox")return Mw;if(o[1]==="trash")return Iw}let l=t(n),s=l&&l(n);return{c(){e=f("div"),s&&s.c(),r(e,"slot","actions"),r(e,"class","header-actions svelte-5mstt")},m(o,i){S(o,e,i),s&&s.m(e,null)},p(o,i){l===(l=t(o))&&s?s.p(o,i):(s&&s.d(1),s=l&&l(o),s&&(s.c(),s.m(e,null)))},d(o){o&&T(e),s&&s.d()}}}function gu(n){let e,t=n[131](n[34])+"",l,s,o,i,c;return{c(){e=f("div"),l=F(t),s=w(),o=f("button"),o.innerHTML='',r(o,"class","dismiss-btn svelte-5mstt"),r(o,"aria-label","Dismiss"),r(e,"class","error-banner svelte-5mstt"),r(e,"role","button"),r(e,"tabindex","0")},m(u,d){S(u,e,d),a(e,l),a(e,s),a(e,o),i||(c=[D(o,"click",We(n[274])),D(e,"click",n[275]),D(e,"keydown",function(){In(xt(n[276]))&&xt(n[276]).apply(this,arguments)})],i=!0)},p(u,d){n=u,d[1]&8&&t!==(t=n[131](n[34])+"")&&Q(l,t)},d(u){u&&T(e),i=!1,Se(c)}}}function Ow(n){let e,t,l;function s(c,u){if(c[91])return Kw;if(c[0].length>0)return Gw;if(c[34])return Ww}let o=s(n),i=o&&o(n);return{c(){e=f("div"),t=f("h2"),t.textContent=`${b("welcome.title")}`,l=w(),i&&i.c(),r(t,"class","svelte-5mstt"),r(e,"class","welcome svelte-5mstt")},m(c,u){S(c,e,u),a(e,t),a(e,l),i&&i.m(e,null)},p(c,u){o===(o=s(c))&&i?i.p(c,u):(i&&i.d(1),i=o&&o(c),i&&(i.c(),i.m(e,null)))},i:ie,o:ie,d(c){c&&T(e),i&&i.d()}}}function Dw(n){let e,t;return e=new d0({props:{sectionId:n[1]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p(l,s){const o={};s[0]&2&&(o.sectionId=l[1]),e.$set(o)},i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function Pw(n){let e;function t(o,i){return o[17].length===0?qw:Vw}let l=t(n),s=l(n);return{c(){e=f("div"),s.c(),r(e,"class","activity-feed svelte-5mstt")},m(o,i){S(o,e,i),s.m(e,null)},p(o,i){l===(l=t(o))&&s?s.p(o,i):(s.d(1),s=l(o),s&&(s.c(),s.m(e,null)))},i:ie,o:ie,d(o){o&&T(e),s.d()}}}function zw(n){let e,t,l,s;const o=[Yw,Zw],i=[];function c(u,d){return u[16]?0:1}return e=c(n),t=i[e]=o[e](n),{c(){t.c(),l=wt()},m(u,d){i[e].m(u,d),S(u,l,d),s=!0},p(u,d){let m=e;e=c(u),e===m?i[e].p(u,d):(St(),Ee(i[m],1,1,()=>{i[m]=null}),Ct(),t=i[e],t?t.p(u,d):(t=i[e]=o[e](u),t.c()),he(t,1),t.m(l.parentNode,l))},i(u){s||(he(t),s=!0)},o(u){Ee(t),s=!1},d(u){u&&T(l),i[e].d(u)}}}function Bw(n){let e,t,l,s=b("suggest.title")+"",o,i,c,u,d,m,g,h=n[61]>0&&bu(n);function _(y,E){return y[28]==="suggestions"?Jw:Xw}let v=_(n),k=v(n);return{c(){e=f("div"),t=f("div"),l=f("button"),o=F(s),i=w(),h&&h.c(),c=w(),u=f("button"),u.textContent=`${b("journal.worklogTab")}`,d=w(),k.c(),r(l,"class","journal-tab svelte-5mstt"),ce(l,"active",n[28]==="suggestions"),r(u,"class","journal-tab svelte-5mstt"),ce(u,"active",n[28]==="worklog"),r(t,"class","journal-tabs svelte-5mstt"),r(e,"class","journal-screen svelte-5mstt")},m(y,E){S(y,e,E),a(e,t),a(t,l),a(l,o),a(l,i),h&&h.m(l,null),a(t,c),a(t,u),a(e,d),k.m(e,null),m||(g=[D(l,"click",n[360]),D(u,"click",n[361])],m=!0)},p(y,E){y[61]>0?h?h.p(y,E):(h=bu(y),h.c(),h.m(l,null)):h&&(h.d(1),h=null),E[0]&268435456&&ce(l,"active",y[28]==="suggestions"),E[0]&268435456&&ce(u,"active",y[28]==="worklog"),v===(v=_(y))&&k?k.p(y,E):(k.d(1),k=v(y),k&&(k.c(),k.m(e,null)))},i:ie,o:ie,d(y){y&&T(e),h&&h.d(),k.d(),m=!1,Se(g)}}}function Fw(n){let e,t,l,s,o,i;function c(m,g){return!m[7]||(m[7].nodes||[]).length===0?uy:cy}let u=c(n),d=u(n);return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("p"),o=F(n[78]),i=w(),d.c(),r(s,"class","svelte-5mstt"),r(l,"class","svelte-5mstt"),r(t,"class","trash-header svelte-5mstt"),r(e,"class","trash-screen svelte-5mstt")},m(m,g){S(m,e,g),a(e,t),a(t,l),a(l,s),a(s,o),a(e,i),d.m(e,null)},p(m,g){g[2]&65536&&Q(o,m[78]),u===(u=c(m))&&d?d.p(m,g):(d.d(1),d=u(m),d&&(d.c(),d.m(e,null)))},i:ie,o:ie,d(m){m&&T(e),d.d()}}}function jw(n){let e,t,l,s,o,i,c,u,d=n[3].length>0&&Gu(n);function m(_,v){return _[3].length===0?gy:_[128]?my:py}let g=m(n),h=g(n);return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("p"),s.textContent=`${b("inbox.subtitle")}`,o=w(),d&&d.c(),i=w(),h.c(),r(s,"class","svelte-5mstt"),r(l,"class","svelte-5mstt"),r(t,"class","inbox-header svelte-5mstt"),r(e,"class","inbox-screen svelte-5mstt"),r(e,"role","region"),r(e,"aria-label",b("nav.inbox")),ce(e,"drop-valid",n[107])},m(_,v){S(_,e,v),a(e,t),a(t,l),a(l,s),a(e,o),d&&d.m(e,null),a(e,i),h.m(e,null),c||(u=[D(e,"dragover",n[233]),D(e,"dragleave",n[234]),D(e,"drop",n[235])],c=!0)},p(_,v){_[3].length>0?d?d.p(_,v):(d=Gu(_),d.c(),d.m(e,i)):d&&(d.d(1),d=null),g===(g=m(_))&&h?h.p(_,v):(h.d(1),h=g(_),h&&(h.c(),h.m(e,null))),v[3]&16384&&ce(e,"drop-valid",_[107])},i:ie,o:ie,d(_){_&&T(e),d&&d.d(),h.d(),c=!1,Se(u)}}}function Uw(n){let e,t,l,s,o,i,c=we(n[133]),u=[];for(let h=0;h{m[v]=null}),Ct()),~s?(o=m[s],o?o.p(h,_):(o=m[s]=d[s](h),o.c()),he(o,1),o.m(l,null)):o=null)},i(h){i||(he(o),i=!0)},o(h){Ee(o),i=!1},d(h){h&&(T(e),T(t),T(l)),Ze(u,h),~s&&m[s].d()}}}function Hw(n){let e,t,l,s,o,i,c,u,d,m,g,h;function _(y,E){return y[47]===y[37].id?i5:s5}let v=_(n),k=v(n);return d=new Tw({props:{content:n[37].content,viewMode:n[38],placeholder:b("note.placeholder")}}),d.$on("content-change",n[190]),d.$on("mode-change",n[191]),d.$on("save",n[182]),d.$on("insert-link",n[192]),d.$on("insert-internal-link",n[193]),d.$on("verstak-link",n[189]),{c(){e=f("div"),t=f("div"),k.c(),l=w(),s=f("div"),o=f("button"),o.textContent=`${b("common.save")}`,i=w(),c=f("button"),c.textContent=`${b("common.close")}`,u=w(),Qe(d.$$.fragment),r(o,"class","btn btn-primary svelte-5mstt"),r(c,"class","btn svelte-5mstt"),r(s,"class","note-editor-actions svelte-5mstt"),r(t,"class","note-editor-header svelte-5mstt"),r(e,"class","note-editor-wrapper svelte-5mstt")},m(y,E){S(y,e,E),a(e,t),k.m(t,null),a(t,l),a(t,s),a(s,o),a(s,i),a(s,c),a(e,u),Xe(d,e,null),m=!0,g||(h=[D(o,"click",n[182]),D(c,"click",n[181])],g=!0)},p(y,E){v===(v=_(y))&&k?k.p(y,E):(k.d(1),k=v(y),k&&(k.c(),k.m(t,l)));const C={};E[1]&64&&(C.content=y[37].content),E[1]&128&&(C.viewMode=y[38]),d.$set(C)},i(y){m||(he(d.$$.fragment,y),m=!0)},o(y){Ee(d.$$.fragment,y),m=!1},d(y){y&&T(e),k.d(),Je(d),g=!1,Se(h)}}}function Ww(n){let e,t=b("common.error")+"",l,s,o;return{c(){e=f("p"),l=F(t),s=w(),o=F(n[34]),r(e,"class","error-text svelte-5mstt")},m(i,c){S(i,e,c),a(e,l),a(e,s),a(e,o)},p(i,c){c[1]&8&&Q(o,i[34])},d(i){i&&T(e)}}}function Gw(n){let e,t,l;return{c(){e=f("p"),e.textContent=`${b("welcome.selectSection")}`,t=w(),l=f("p"),l.textContent=`${b("welcome.createCase")}`,r(e,"class","svelte-5mstt"),r(l,"class","hint svelte-5mstt")},m(s,o){S(s,e,o),S(s,t,o),S(s,l,o)},p:ie,d(s){s&&(T(e),T(t),T(l))}}}function Kw(n){let e;return{c(){e=f("p"),e.textContent=`${b("common.loading")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},p:ie,d(t){t&&T(e)}}}function Vw(n){let e,t=we(n[17]),l=[];for(let s=0;sn[381].call(q)),r(j,"title",b("journal.billableHint")),r(j,"class","svelte-5mstt"),r(Te,"class","label-text svelte-5mstt"),Ne.__value="all",Ie(Ne,Ne.__value),r(Ne,"class","svelte-5mstt"),ee.__value="no",Ie(ee,ee.__value),r(ee,"class","svelte-5mstt"),oe.__value="yes",Ie(oe,oe.__value),r(oe,"class","svelte-5mstt"),r(qe,"class","svelte-5mstt"),n[25]===void 0&&bl(()=>n[382].call(qe)),r(pe,"title",b("journal.approxHint")),r(pe,"class","svelte-5mstt"),r(je,"class","btn btn-sm svelte-5mstt"),r(Ue,"class","btn btn-sm svelte-5mstt"),r(E,"class","journal-filters-row svelte-5mstt"),r(v,"class","journal-filter-section svelte-5mstt"),r(t,"class","journal-header svelte-5mstt")},m(de,Ae){Re&&Re.m(de,Ae),S(de,e,Ae),S(de,t,Ae),a(t,l),a(l,s),a(l,o),a(l,i),a(i,c),a(i,u),a(i,d),a(i,m),a(i,g),a(i,h),Pe&&Pe.m(i,null),a(t,_),a(t,v),a(v,k),a(v,y),a(v,E),a(E,C),a(C,A),a(C,N),a(C,I),Ie(I,n[20]),a(E,M),a(E,R),a(R,O),a(R,L),a(R,H),Ie(H,n[21]),a(E,W),a(E,U),a(U,K),a(U,Z),a(U,X),ze.m(X,null),a(E,G),ue&&ue.m(E,null),a(E,P),a(E,j),a(j,B),a(j,J),a(j,q),a(q,Y),a(q,$),a(q,ne),Zn(q,n[24],!0),a(E,te),a(E,pe),a(pe,Te),a(pe,Fe),a(pe,qe),a(qe,Ne),a(qe,ee),a(qe,oe),Zn(qe,n[25],!0),a(E,Ce),a(E,je),a(E,_e),a(E,Ue),S(de,pt,Ae),ge.m(de,Ae),S(de,be,Ae),lt||(Me=[D(c,"click",n[371]),D(d,"click",n[372]),D(g,"click",n[373]),D(I,"input",n[374]),D(H,"input",n[375]),D(q,"change",n[381]),D(qe,"change",n[382]),D(je,"click",n[215]),D(Ue,"click",n[222])],lt=!0)},p(de,Ae){de[19]?Re?Re.p(de,Ae):(Re=vu(de),Re.c(),Re.m(e.parentNode,e)):Re&&(Re.d(1),Re=null),de[27]?Pe?Pe.p(de,Ae):(Pe=Tu(de),Pe.c(),Pe.m(i,null)):Pe&&(Pe.d(1),Pe=null),Ae[0]&1048576&&Ie(I,de[20]),Ae[0]&2097152&&Ie(H,de[21]),De===(De=He(de))&&ze?ze.p(de,Ae):(ze.d(1),ze=De(de),ze&&(ze.c(),ze.m(X,null))),de[23]?ue?ue.p(de,Ae):(ue=Au(de),ue.c(),ue.m(E,P)):ue&&(ue.d(1),ue=null),Ae[0]&16777216&&Zn(q,de[24]),Ae[0]&33554432&&Zn(qe,de[25]),x===(x=ye(de))&&ge?ge.p(de,Ae):(ge.d(1),ge=x(de),ge&&(ge.c(),ge.m(be.parentNode,be)))},d(de){de&&(T(e),T(t),T(pt),T(be)),Re&&Re.d(de),Pe&&Pe.d(),ze.d(),ue&&ue.d(),ge.d(de),lt=!1,Se(Me)}}}function Jw(n){let e;function t(o,i){return o[60].length===0?ay:ry}let l=t(n),s=l(n);return{c(){s.c(),e=wt()},m(o,i){s.m(o,i),S(o,e,i)},p(o,i){l===(l=t(o))&&s?s.p(o,i):(s.d(1),s=l(o),s&&(s.c(),s.m(e.parentNode,e)))},d(o){o&&T(e),s.d(o)}}}function vu(n){let e,t,l=b("journal.total")+"",s,o,i=Math.floor(n[19].totalMinutes/60)+"",c,u,d=n[19].totalMinutes%60+"",m,g,h=n[19].totalEntries+"",_,v,k=b("worklog.min")+"",y,E,C,A,N=n[19].byDay&&n[19].byDay.length>0&&ku(n),I=n[19].byNode&&n[19].byNode.length>0&&yu(n);return{c(){e=f("div"),t=f("div"),s=F(l),o=F(": "),c=F(i),u=F("ч "),m=F(d),g=F("м ("),_=F(h),v=w(),y=F(k),E=F(")"),C=w(),N&&N.c(),A=w(),I&&I.c(),r(t,"class","summary-total svelte-5mstt"),r(e,"class","journal-summary svelte-5mstt")},m(M,R){S(M,e,R),a(e,t),a(t,s),a(t,o),a(t,c),a(t,u),a(t,m),a(t,g),a(t,_),a(t,v),a(t,y),a(t,E),a(e,C),N&&N.m(e,null),a(e,A),I&&I.m(e,null)},p(M,R){R[0]&524288&&i!==(i=Math.floor(M[19].totalMinutes/60)+"")&&Q(c,i),R[0]&524288&&d!==(d=M[19].totalMinutes%60+"")&&Q(m,d),R[0]&524288&&h!==(h=M[19].totalEntries+"")&&Q(_,h),M[19].byDay&&M[19].byDay.length>0?N?N.p(M,R):(N=ku(M),N.c(),N.m(e,A)):N&&(N.d(1),N=null),M[19].byNode&&M[19].byNode.length>0?I?I.p(M,R):(I=yu(M),I.c(),I.m(e,null)):I&&(I.d(1),I=null)},d(M){M&&T(e),N&&N.d(),I&&I.d()}}}function ku(n){let e,t,l,s=we(n[19].byDay),o=[];for(let i=0;i0?iy:O[590].source==="suggestion"?sy:O[590].source==="unknown"||O[590].source==="imported"?ly:O[590]._hasEvents?ny:ty}let I=N(n),M=I(n),R=n[590]._events&&Lu(n);return{c(){e=f("tr"),t=f("td"),l=f("div"),s=f("div"),o=f("button"),o.textContent=`${b("worklog.editEntry")}`,i=w(),c=f("button"),c.textContent=`${b("worklog.deleteEntry")}`,u=w(),A&&A.c(),d=w(),m=f("div"),g=f("span"),g.textContent=`${b("worklog.source")}`,h=w(),M.c(),_=w(),R&&R.c(),v=w(),r(o,"class","btn btn-sm svelte-5mstt"),r(c,"class","btn btn-sm btn-danger svelte-5mstt"),r(s,"class","journal-detail-actions svelte-5mstt"),r(g,"class","journal-detail-label svelte-5mstt"),r(m,"class","journal-detail-section svelte-5mstt"),r(l,"class","journal-detail-body svelte-5mstt"),r(t,"colspan","8"),r(t,"class","svelte-5mstt"),r(e,"class","journal-row-detail svelte-5mstt")},m(O,L){S(O,e,L),a(e,t),a(t,l),a(l,s),a(s,o),a(s,i),a(s,c),a(l,u),A&&A.m(l,null),a(l,d),a(l,m),a(m,g),a(m,h),M.m(m,null),a(l,_),R&&R.m(l,null),a(e,v),k||(y=[D(o,"click",We(E)),D(c,"click",We(C))],k=!0)},p(O,L){n=O,n[590].details?A?A.p(n,L):(A=Mu(n),A.c(),A.m(l,d)):A&&(A.d(1),A=null),I!==(I=N(n))&&(M.d(1),M=I(n),M&&(M.c(),M.m(m,null))),n[590]._events?R?R.p(n,L):(R=Lu(n),R.c(),R.m(l,null)):R&&(R.d(1),R=null)},d(O){O&&T(e),A&&A.d(),M.d(),R&&R.d(),k=!1,Se(y)}}}function Mu(n){let e,t,l,s,o=n[590].details+"",i;return{c(){e=f("div"),t=f("span"),t.textContent=`${b("worklog.details")}`,l=w(),s=f("p"),i=F(o),r(t,"class","journal-detail-label svelte-5mstt"),r(s,"class","svelte-5mstt"),r(e,"class","journal-detail-section svelte-5mstt")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,i)},p(c,u){u[0]&262144&&o!==(o=c[590].details+"")&&Q(i,o)},d(c){c&&T(e)}}}function ty(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceUnknown")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function ny(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceSuggestion")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function ly(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceUnknown")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function sy(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceSuggestionNoEvents")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function iy(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceSuggestion")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function oy(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceManual")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Lu(n){let e,t,l,s=we(n[590]._events),o=[];for(let i=0;i0&&Pu(n);function ne(...ee){return n[363](n[566],n[586],n[587],...ee)}function te(){return n[364](n[566])}function pe(){return n[365](n[566])}function Te(){return n[366](n[566])}function Fe(){return n[367](n[566],n[586],n[587])}function qe(...ee){return n[368](n[566],n[586],n[587],...ee)}let Ne=n[566]._expanded&&n[566].events&&n[566].events.length>0&&zu(n);return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("button"),i=F(o),c=w(),u=f("span"),m=F(d),g=w(),h=f("span"),v=F(_),k=w(),E=F(y),$&&$.c(),C=w(),A=f("div"),N=f("span"),R=w(),O=f("input"),H=w(),W=f("span"),W.textContent=`${b("suggest.minutes")}`,U=w(),K=f("button"),K.textContent=`${b("suggest.edit")}`,Z=w(),X=f("button"),X.textContent=`${b("suggest.apply")}`,G=w(),P=f("button"),P.textContent=`${b("common.delete")}`,j=w(),Ne&&Ne.c(),B=w(),r(s,"class","suggestion-node link-btn svelte-5mstt"),r(u,"class","suggestion-summary svelte-5mstt"),r(h,"class","suggestion-meta svelte-5mstt"),r(l,"class","suggestion-info svelte-5mstt"),r(N,"class","suggestion-confidence-dot svelte-5mstt"),r(N,"title",I=b("suggest.confidence."+n[566].confidence)),r(N,"aria-label",M=b("suggest.confidence."+n[566].confidence)),ce(N,"low",n[566].confidence==="low"),ce(N,"medium",n[566].confidence==="medium"),ce(N,"high",n[566].confidence==="high"),r(O,"type","number"),r(O,"class","suggestion-min-input svelte-5mstt"),O.value=L=n[566].suggestedMin,r(O,"min","1"),r(O,"max","480"),r(W,"class","suggestion-min-label svelte-5mstt"),r(K,"class","btn btn-sm svelte-5mstt"),r(X,"class","btn btn-sm btn-primary svelte-5mstt"),r(P,"class","btn btn-sm btn-danger svelte-5mstt"),r(A,"class","suggestion-actions svelte-5mstt"),r(t,"class","suggestion-main svelte-5mstt"),r(t,"role","button"),r(t,"tabindex","0"),r(e,"class","suggestion-card svelte-5mstt"),ce(e,"expanded",n[566]._expanded)},m(ee,oe){S(ee,e,oe),a(e,t),a(t,l),a(l,s),a(s,i),a(l,c),a(l,u),a(u,m),a(l,g),a(l,h),a(h,v),a(h,k),a(h,E),$&&$.m(h,null),a(t,C),a(t,A),a(A,N),a(A,R),a(A,O),a(A,H),a(A,W),a(A,U),a(A,K),a(A,Z),a(A,X),a(A,G),a(A,P),a(e,j),Ne&&Ne.m(e,null),a(e,B),J||(q=[D(s,"click",We(Y)),D(O,"change",We(ne)),D(K,"click",We(te)),D(X,"click",We(pe)),D(P,"click",We(Te)),D(t,"click",Fe),D(t,"keydown",qe)],J=!0)},p(ee,oe){n=ee,oe[1]&536870912&&o!==(o=n[566].nodeTitle+"")&&Q(i,o),oe[1]&536870912&&d!==(d=n[566].summary+"")&&Q(m,d),oe[1]&536870912&&_!==(_=n[566].suggestedMin+"")&&Q(v,_),n[566].events&&n[566].events.length>0?$?$.p(n,oe):($=Pu(n),$.c(),$.m(h,null)):$&&($.d(1),$=null),oe[1]&536870912&&I!==(I=b("suggest.confidence."+n[566].confidence))&&r(N,"title",I),oe[1]&536870912&&M!==(M=b("suggest.confidence."+n[566].confidence))&&r(N,"aria-label",M),oe[1]&536870912&&ce(N,"low",n[566].confidence==="low"),oe[1]&536870912&&ce(N,"medium",n[566].confidence==="medium"),oe[1]&536870912&&ce(N,"high",n[566].confidence==="high"),oe[1]&536870912&&L!==(L=n[566].suggestedMin)&&O.value!==L&&(O.value=L),n[566]._expanded&&n[566].events&&n[566].events.length>0?Ne?Ne.p(n,oe):(Ne=zu(n),Ne.c(),Ne.m(e,B)):Ne&&(Ne.d(1),Ne=null),oe[1]&536870912&&ce(e,"expanded",n[566]._expanded)},d(ee){ee&&T(e),$&&$.d(),Ne&&Ne.d(),J=!1,Se(q)}}}function cy(n){let e,t,l,s,o,i,c,u,d,m,g,h=n[8]&&Hu(n);function _(y,E){return y[77].length===0?dy:fy}let v=_(n),k=v(n);return{c(){e=f("div"),t=f("section"),l=f("div"),h&&h.c(),s=w(),o=f("div"),i=f("h3"),c=F(n[79]),u=w(),d=f("p"),m=F(n[78]),g=w(),k.c(),r(i,"class","svelte-5mstt"),r(d,"class","svelte-5mstt"),r(o,"class","svelte-5mstt"),r(l,"class","trash-section-head svelte-5mstt"),r(t,"class","trash-section svelte-5mstt"),r(e,"class","trash-browser svelte-5mstt")},m(y,E){S(y,e,E),a(e,t),a(t,l),h&&h.m(l,null),a(l,s),a(l,o),a(o,i),a(i,c),a(o,u),a(o,d),a(d,m),a(t,g),k.m(t,null)},p(y,E){y[8]?h?h.p(y,E):(h=Hu(y),h.c(),h.m(l,s)):h&&(h.d(1),h=null),E[2]&131072&&Q(c,y[79]),E[2]&65536&&Q(m,y[78]),v===(v=_(y))&&k?k.p(y,E):(k.d(1),k=v(y),k&&(k.c(),k.m(t,null)))},d(y){y&&T(e),h&&h.d(),k.d()}}}function uy(n){let e,t;return{c(){e=f("div"),t=f("p"),t.textContent=`${b("trash.empty")}`,r(t,"class","svelte-5mstt"),r(e,"class","empty-state svelte-5mstt")},m(l,s){S(l,e,s),a(e,t)},p:ie,d(l){l&&T(e)}}}function Hu(n){let e,t=Et("back")+"",l,s;return{c(){e=f("button"),r(e,"class","inbox-icon-btn svelte-5mstt"),r(e,"title",b("common.backLabel")),r(e,"aria-label",b("common.backLabel"))},m(o,i){S(o,e,i),e.innerHTML=t,l||(s=D(e,"click",n[200]),l=!0)},p:ie,d(o){o&&T(e),l=!1,s()}}}function fy(n){let e,t=we(n[77]),l=[];for(let s=0;s0,i,c,u,d=o&&Qu(n);function m(_,v){return _[50].length===0?zy:Py}let g=m(n),h=g(n);return{c(){e=f("div"),t=f("div"),l=f("button"),l.textContent=`+ ${b("worklog.addEntry")}`,s=w(),d&&d.c(),i=w(),h.c(),r(l,"class","btn btn-primary btn-sm svelte-5mstt"),r(t,"class","worklog-toolbar svelte-5mstt"),r(e,"class","worklog-tab svelte-5mstt")},m(_,v){S(_,e,v),a(e,t),a(t,l),a(e,s),d&&d.m(e,null),a(e,i),h.m(e,null),c||(u=D(l,"click",n[318]),c=!0)},p(_,v){v[0]&4|v[1]&536870912&&(o=_[2]&&_[60].filter(_[267]).length>0),o?d?d.p(_,v):(d=Qu(_),d.c(),d.m(e,i)):d&&(d.d(1),d=null),g===(g=m(_))&&h?h.p(_,v):(h.d(1),h=g(_),h&&(h.c(),h.m(e,null)))},i:ie,o:ie,d(_){_&&T(e),d&&d.d(),h.d(),c=!1,u()}}}function Ay(n){let e,t,l,s,o,i;function c(m,g){return m[49].length===0?Gy:Wy}let u=c(n),d=u(n);return{c(){e=f("div"),t=f("div"),l=f("button"),l.textContent=`${b("action.addAction")}`,s=w(),d.c(),r(l,"class","btn btn-primary svelte-5mstt"),r(t,"class","tab-toolbar svelte-5mstt"),r(e,"class","actions-tab svelte-5mstt")},m(m,g){S(m,e,g),a(e,t),a(t,l),a(e,s),d.m(e,null),o||(i=D(l,"click",n[249]),o=!0)},p(m,g){u===(u=c(m))&&d?d.p(m,g):(d.d(1),d=u(m),d&&(d.c(),d.m(e,null)))},i:ie,o:ie,d(m){m&&T(e),d.d(),o=!1,i()}}}function Ny(n){let e,t;function l(c,u){return c[69].length===0?Vy:Ky}let s=l(n),o=s(n),i=n[74]&&_f(n);return{c(){e=f("div"),o.c(),t=w(),i&&i.c(),r(e,"class","links-tab svelte-5mstt")},m(c,u){S(c,e,u),o.m(e,null),a(e,t),i&&i.m(e,null)},p(c,u){s===(s=l(c))&&o?o.p(c,u):(o.d(1),o=s(c),o&&(o.c(),o.m(e,t))),c[74]?i?i.p(c,u):(i=_f(c),i.c(),i.m(e,null)):i&&(i.d(1),i=null)},i:ie,o:ie,d(c){c&&T(e),o.d(),i&&i.d()}}}function Ry(n){let e;function t(o,i){return o[66].length===0?Zy:qy}let l=t(n),s=l(n);return{c(){e=f("div"),s.c(),r(e,"class","inbox-tab svelte-5mstt")},m(o,i){S(o,e,i),s.m(e,null)},p(o,i){l===(l=t(o))&&s?s.p(o,i):(s.d(1),s=l(o),s&&(s.c(),s.m(e,null)))},i:ie,o:ie,d(o){o&&T(e),s.d()}}}function Iy(n){let e,t,l,s=b("file.addFile")+"",o,i,c,u=b("file.addFolder")+"",d,m,g,h,_,v,k,y,E,C,A,N=n[104].items.length>0&&vf(n);const I=[Qy,Jy],M=[];function R(L,H){return L[96]?0:1}v=R(n),k=M[v]=I[v](n);let O=n[92]&&!n[94]&&wf();return{c(){e=f("div"),t=f("div"),l=f("button"),o=F(s),i=w(),c=f("button"),d=F(u),m=w(),g=f("button"),g.textContent=`${b("file.newFile")}`,h=w(),N&&N.c(),_=w(),k.c(),y=w(),O&&O.c(),r(l,"class","btn btn-primary svelte-5mstt"),l.disabled=n[92],r(c,"class","btn svelte-5mstt"),c.disabled=n[92],r(g,"class","btn svelte-5mstt"),r(t,"class","tab-toolbar svelte-5mstt"),r(e,"class","files-tab svelte-5mstt")},m(L,H){S(L,e,H),a(e,t),a(t,l),a(l,o),a(t,i),a(t,c),a(c,d),a(t,m),a(t,g),a(t,h),N&&N.m(t,null),a(e,_),M[v].m(e,null),a(e,y),O&&O.m(e,null),E=!0,C||(A=[D(l,"click",n[223]),D(c,"click",n[224]),D(g,"click",n[143])],C=!0)},p(L,H){(!E||H[2]&1073741824)&&(l.disabled=L[92]),(!E||H[2]&1073741824)&&(c.disabled=L[92]),L[104].items.length>0?N?N.p(L,H):(N=vf(L),N.c(),N.m(t,null)):N&&(N.d(1),N=null);let W=v;v=R(L),v===W?M[v].p(L,H):(St(),Ee(M[W],1,1,()=>{M[W]=null}),Ct(),k=M[v],k?k.p(L,H):(k=M[v]=I[v](L),k.c()),he(k,1),k.m(e,y)),L[92]&&!L[94]?O||(O=wf(),O.c(),O.m(e,null)):O&&(O.d(1),O=null)},i(L){E||(he(k),E=!0)},o(L){Ee(k),E=!1},d(L){L&&T(e),N&&N.d(),M[v].d(),O&&O.d(),C=!1,Se(A)}}}function My(n){let e,t,l,s,o,i,c,u=n[85]&&yf(n);function d(h,_){return h[36].length===0&&!h[85]?l5:n5}let m=d(n),g=m(n);return{c(){e=f("div"),t=f("div"),l=f("button"),l.textContent=`${b("note.add")}`,s=w(),u&&u.c(),o=w(),g.c(),r(l,"class","btn btn-primary svelte-5mstt"),r(t,"class","tab-toolbar svelte-5mstt"),r(e,"class","notes-tab svelte-5mstt")},m(h,_){S(h,e,_),a(e,t),a(t,l),a(e,s),u&&u.m(e,null),a(e,o),g.m(e,null),i||(c=D(l,"click",n[176]),i=!0)},p(h,_){h[85]?u?u.p(h,_):(u=yf(h),u.c(),u.m(e,o)):u&&(u.d(1),u=null),m===(m=d(h))&&g?g.p(h,_):(g.d(1),g=m(h),g&&(g.c(),g.m(e,null)))},i:ie,o:ie,d(h){h&&T(e),u&&u.d(),g.d(),i=!1,c()}}}function Ly(n){let e,t,l=n[2].title+"",s,o,i,c,u,d,m=n[229](n[2].type)+"",g,h,_,v,k,y=(n[2].section||"—")+"",E,C,A,N,I,M=on(n[2].createdAt)+"",R,O,L,H,W,U,K,Z,X=b("overview.newNote")+"",G,P,j,B,J,q,Y=b("overview.addFile")+"",$,ne,te,pe,Te,Fe,qe=b("overview.addAction")+"",Ne,ee,oe,Ce,je,_e,Ue,pt=b("overview.logTime")+"",be,lt,Me,Re,Pe,He=n[36].length>0&&Tf(n),De=n[50].length>0&&Cf(n);return{c(){e=f("div"),t=f("h2"),s=F(l),o=w(),i=f("div"),c=f("div"),u=f("span"),u.textContent=`${b("overview.type")}`,d=f("span"),g=F(m),h=w(),_=f("div"),v=f("span"),v.textContent=`${b("overview.section")}`,k=f("span"),E=F(y),C=w(),A=f("div"),N=f("span"),N.textContent=`${b("overview.created")}`,I=f("span"),R=F(M),O=w(),L=f("div"),H=f("button"),W=re("svg"),U=re("path"),K=re("path"),Z=w(),G=F(X),P=w(),j=f("button"),B=re("svg"),J=re("path"),q=w(),$=F(Y),ne=w(),te=f("button"),pe=re("svg"),Te=re("polygon"),Fe=w(),Ne=F(qe),ee=w(),oe=f("button"),Ce=re("svg"),je=re("circle"),_e=re("polyline"),Ue=w(),be=F(pt),lt=w(),He&&He.c(),Me=w(),De&&De.c(),r(t,"class","svelte-5mstt"),r(u,"class","meta-label svelte-5mstt"),r(d,"class","svelte-5mstt"),r(c,"class","meta-item svelte-5mstt"),r(v,"class","meta-label svelte-5mstt"),r(k,"class","svelte-5mstt"),r(_,"class","meta-item svelte-5mstt"),r(N,"class","meta-label svelte-5mstt"),r(I,"class","svelte-5mstt"),r(A,"class","meta-item svelte-5mstt"),r(i,"class","meta-grid svelte-5mstt"),r(U,"d","M12 20h9"),r(U,"class","svelte-5mstt"),r(K,"d","M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"),r(K,"class","svelte-5mstt"),r(W,"width","16"),r(W,"height","16"),r(W,"viewBox","0 0 24 24"),r(W,"fill","none"),r(W,"stroke","currentColor"),r(W,"stroke-width","2"),r(W,"stroke-linecap","round"),r(W,"stroke-linejoin","round"),r(W,"class","svelte-5mstt"),r(H,"class","qa-btn svelte-5mstt"),r(J,"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"),r(J,"class","svelte-5mstt"),r(B,"width","16"),r(B,"height","16"),r(B,"viewBox","0 0 24 24"),r(B,"fill","none"),r(B,"stroke","currentColor"),r(B,"stroke-width","2"),r(B,"stroke-linecap","round"),r(B,"stroke-linejoin","round"),r(B,"class","svelte-5mstt"),r(j,"class","qa-btn svelte-5mstt"),r(Te,"points","13 2 3 14 12 14 11 22 21 10 12 10 13 2"),r(Te,"class","svelte-5mstt"),r(pe,"width","16"),r(pe,"height","16"),r(pe,"viewBox","0 0 24 24"),r(pe,"fill","none"),r(pe,"stroke","currentColor"),r(pe,"stroke-width","2"),r(pe,"stroke-linecap","round"),r(pe,"stroke-linejoin","round"),r(pe,"class","svelte-5mstt"),r(te,"class","qa-btn svelte-5mstt"),r(je,"cx","12"),r(je,"cy","12"),r(je,"r","10"),r(je,"class","svelte-5mstt"),r(_e,"points","12 6 12 12 16 14"),r(_e,"class","svelte-5mstt"),r(Ce,"width","16"),r(Ce,"height","16"),r(Ce,"viewBox","0 0 24 24"),r(Ce,"fill","none"),r(Ce,"stroke","currentColor"),r(Ce,"stroke-width","2"),r(Ce,"stroke-linecap","round"),r(Ce,"stroke-linejoin","round"),r(Ce,"class","svelte-5mstt"),r(oe,"class","qa-btn svelte-5mstt"),r(L,"class","quick-actions svelte-5mstt"),r(e,"class","overview svelte-5mstt")},m(ze,ue){S(ze,e,ue),a(e,t),a(t,s),a(e,o),a(e,i),a(i,c),a(c,u),a(c,d),a(d,g),a(i,h),a(i,_),a(_,v),a(_,k),a(k,E),a(i,C),a(i,A),a(A,N),a(A,I),a(I,R),a(e,O),a(e,L),a(L,H),a(H,W),a(W,U),a(W,K),a(H,Z),a(H,G),a(L,P),a(L,j),a(j,B),a(B,J),a(j,q),a(j,$),a(L,ne),a(L,te),a(te,pe),a(pe,Te),a(te,Fe),a(te,Ne),a(L,ee),a(L,oe),a(oe,Ce),a(Ce,je),a(Ce,_e),a(oe,Ue),a(oe,be),a(e,lt),He&&He.m(e,null),a(e,Me),De&&De.m(e,null),Re||(Pe=[D(H,"click",n[281]),D(j,"click",n[282]),D(te,"click",n[249]),D(oe,"click",n[283])],Re=!0)},p(ze,ue){ue[0]&4&&l!==(l=ze[2].title+"")&&Q(s,l),ue[0]&4&&m!==(m=ze[229](ze[2].type)+"")&&Q(g,m),ue[0]&4&&y!==(y=(ze[2].section||"—")+"")&&Q(E,y),ue[0]&4&&M!==(M=on(ze[2].createdAt)+"")&&Q(R,M),ze[36].length>0?He?He.p(ze,ue):(He=Tf(ze),He.c(),He.m(e,Me)):He&&(He.d(1),He=null),ze[50].length>0?De?De.p(ze,ue):(De=Cf(ze),De.c(),De.m(e,null)):De&&(De.d(1),De=null)},i:ie,o:ie,d(ze){ze&&T(e),He&&He.d(),De&&De.d(),Re=!1,Se(Pe)}}}function Oy(n){let e,t=we(n[32]),l=[];for(let s=0;s0&&xu(n);function Z(){return n[320](n[566])}function X(){return n[321](n[566])}function G(){return n[322](n[566])}function P(){return n[323](n[566],n[567],n[568])}function j(...J){return n[324](n[566],n[567],n[568],...J)}let B=n[566]._expanded&&n[566].events&&n[566].events.length>0&&$u(n);return{c(){e=f("div"),t=f("div"),l=f("div"),s=f("span"),i=F(o),c=w(),u=f("span"),m=F(d),g=w(),_=F(h),K&&K.c(),v=w(),k=f("div"),y=f("span"),A=w(),N=f("button"),N.textContent=`${b("suggest.edit")}`,I=w(),M=f("button"),M.textContent=`${b("worklog.apply")}`,R=w(),O=f("button"),O.textContent=`${b("common.delete")}`,L=w(),B&&B.c(),H=w(),r(s,"class","suggestion-summary svelte-5mstt"),r(u,"class","suggestion-meta svelte-5mstt"),r(l,"class","suggestion-info svelte-5mstt"),r(y,"class","suggestion-confidence-dot svelte-5mstt"),r(y,"title",E=b("suggest.confidence."+n[566].confidence)),r(y,"aria-label",C=b("suggest.confidence."+n[566].confidence)),ce(y,"low",n[566].confidence==="low"),ce(y,"medium",n[566].confidence==="medium"),ce(y,"high",n[566].confidence==="high"),r(N,"class","btn btn-sm svelte-5mstt"),r(M,"class","btn btn-sm btn-primary svelte-5mstt"),r(O,"class","btn btn-sm btn-danger svelte-5mstt"),r(k,"class","suggestion-actions svelte-5mstt"),r(t,"class","suggestion-main svelte-5mstt"),r(t,"role","button"),r(t,"tabindex","0"),r(e,"class","suggestion-card svelte-5mstt"),ce(e,"expanded",n[566]._expanded)},m(J,q){S(J,e,q),a(e,t),a(t,l),a(l,s),a(s,i),a(l,c),a(l,u),a(u,m),a(u,g),a(u,_),K&&K.m(u,null),a(t,v),a(t,k),a(k,y),a(k,A),a(k,N),a(k,I),a(k,M),a(k,R),a(k,O),a(e,L),B&&B.m(e,null),a(e,H),W||(U=[D(N,"click",We(Z)),D(M,"click",We(X)),D(O,"click",We(G)),D(t,"click",P),D(t,"keydown",j)],W=!0)},p(J,q){n=J,q[0]&4|q[1]&536870912&&o!==(o=n[566].summary+"")&&Q(i,o),q[0]&4|q[1]&536870912&&d!==(d=n[566].suggestedMin+"")&&Q(m,d),n[566].events&&n[566].events.length>0?K?K.p(n,q):(K=xu(n),K.c(),K.m(u,null)):K&&(K.d(1),K=null),q[0]&4|q[1]&536870912&&E!==(E=b("suggest.confidence."+n[566].confidence))&&r(y,"title",E),q[0]&4|q[1]&536870912&&C!==(C=b("suggest.confidence."+n[566].confidence))&&r(y,"aria-label",C),q[0]&4|q[1]&536870912&&ce(y,"low",n[566].confidence==="low"),q[0]&4|q[1]&536870912&&ce(y,"medium",n[566].confidence==="medium"),q[0]&4|q[1]&536870912&&ce(y,"high",n[566].confidence==="high"),n[566]._expanded&&n[566].events&&n[566].events.length>0?B?B.p(n,q):(B=$u(n),B.c(),B.m(e,H)):B&&(B.d(1),B=null),q[0]&4|q[1]&536870912&&ce(e,"expanded",n[566]._expanded)},d(J){J&&T(e),K&&K.d(),B&&B.d(),W=!1,Se(U)}}}function Py(n){let e,t=we(n[50]),l=[];for(let s=0;s0?Uy:I[542].source==="suggestion"?jy:I[542].source==="unknown"||I[542].source==="imported"?Fy:By}let C=E(n),A=C(n),N=n[542].source==="suggestion"&&n[542]._events&&n[542]._events.length>0&&uf(n);return{c(){e=f("div"),t=f("div"),l=f("button"),l.textContent=`${b("worklog.editEntry")}`,s=w(),o=f("button"),o.textContent=`${b("worklog.deleteEntry")}`,i=w(),y&&y.c(),c=w(),u=f("div"),d=f("span"),d.textContent=`${b("worklog.source")}`,m=w(),A.c(),g=w(),N&&N.c(),r(l,"class","btn btn-sm svelte-5mstt"),r(o,"class","btn btn-sm btn-danger svelte-5mstt"),r(t,"class","worklog-entry-actions svelte-5mstt"),r(d,"class","wl-detail-label svelte-5mstt"),r(u,"class","wl-detail-section svelte-5mstt"),r(e,"class","worklog-entry-detail svelte-5mstt")},m(I,M){S(I,e,M),a(e,t),a(t,l),a(t,s),a(t,o),a(e,i),y&&y.m(e,null),a(e,c),a(e,u),a(u,d),a(u,m),A.m(u,null),a(e,g),N&&N.m(e,null),h||(_=[D(l,"click",We(v)),D(o,"click",We(k))],h=!0)},p(I,M){n=I,n[542].details?y?y.p(n,M):(y=cf(n),y.c(),y.m(e,c)):y&&(y.d(1),y=null),C!==(C=E(n))&&(A.d(1),A=C(n),A&&(A.c(),A.m(u,null))),n[542].source==="suggestion"&&n[542]._events&&n[542]._events.length>0?N?N.p(n,M):(N=uf(n),N.c(),N.m(e,null)):N&&(N.d(1),N=null)},d(I){I&&T(e),y&&y.d(),A.d(),N&&N.d(),h=!1,Se(_)}}}function cf(n){let e,t,l,s,o=n[542].details+"",i;return{c(){e=f("div"),t=f("span"),t.textContent=`${b("worklog.details")}`,l=w(),s=f("p"),i=F(o),r(t,"class","wl-detail-label svelte-5mstt"),r(s,"class","svelte-5mstt"),r(e,"class","wl-detail-section svelte-5mstt")},m(c,u){S(c,e,u),a(e,t),a(e,l),a(e,s),a(s,i)},p(c,u){u[1]&524288&&o!==(o=c[542].details+"")&&Q(i,o)},d(c){c&&T(e)}}}function By(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceUnknown")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Fy(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceUnknown")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function jy(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceSuggestionNoEvents")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Uy(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceSuggestion")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Hy(n){let e;return{c(){e=f("p"),e.textContent=`${b("worklog.sourceManual")}`,r(e,"class","svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function uf(n){let e,t,l,s=we(n[542]._events),o=[];for(let i=0;i',A=w(),r(l,"class","action-title svelte-5mstt"),r(c,"class","action-type svelte-5mstt"),r(g,"class","action-data svelte-5mstt"),r(t,"class","action-info svelte-5mstt"),r(y,"class","btn btn-sm svelte-5mstt"),r(C,"class","btn btn-sm btn-danger svelte-5mstt"),r(k,"class","action-btns svelte-5mstt"),r(e,"class","action-card svelte-5mstt")},m(O,L){S(O,e,L),a(e,t),a(t,l),a(l,o),a(t,i),a(t,c),a(c,d),a(t,m),a(t,g),a(g,_),a(e,v),a(e,k),a(k,y),a(k,E),a(k,C),a(e,A),N||(I=[D(y,"click",M),D(C,"click",R)],N=!0)},p(O,L){n=O,L[1]&262144&&s!==(s=n[558].title+"")&&Q(o,s),L[1]&262144&&u!==(u=n[253](n[558].type)+"")&&Q(d,u),L[1]&262144&&h!==(h=n[558].data+"")&&Q(_,h)},d(O){O&&T(e),N=!1,Se(I)}}}function Ky(n){let e,t=we(n[69]),l=[];for(let s=0;s0?0:1}e=m(n),t=d[e]=u[e](n);const g=[t5,e5],h=[];function _(v,k){return v[99].length===0?0:1}return s=_(n),o=h[s]=g[s](n),{c(){t.c(),l=w(),o.c(),i=wt()},m(v,k){d[e].m(v,k),S(v,l,k),h[s].m(v,k),S(v,i,k),c=!0},p(v,k){let y=e;e=m(v),e===y?d[e].p(v,k):(St(),Ee(d[y],1,1,()=>{d[y]=null}),Ct(),t=d[e],t?t.p(v,k):(t=d[e]=u[e](v),t.c()),he(t,1),t.m(l.parentNode,l));let E=s;s=_(v),s===E?h[s].p(v,k):(St(),Ee(h[E],1,1,()=>{h[E]=null}),Ct(),o=h[s],o?o.p(v,k):(o=h[s]=g[s](v),o.c()),he(o,1),o.m(i.parentNode,i))},i(v){c||(he(t),he(o),c=!0)},o(v){Ee(t),Ee(o),c=!1},d(v){v&&(T(l),T(i)),d[e].d(v),h[s].d(v)}}}function Qy(n){let e,t;return{c(){e=f("div"),t=f("p"),t.textContent=`${b("common.loading")}`,r(t,"class","svelte-5mstt"),r(e,"class","empty-state svelte-5mstt")},m(l,s){S(l,e,s),a(e,t)},p:ie,i:ie,o:ie,d(l){l&&T(e)}}}function xy(n){let e,t;return e=new vd({props:{crumbs:[{name:b("file.root")}]}}),{c(){Qe(e.$$.fragment)},m(l,s){Xe(e,l,s),t=!0},p:ie,i(l){t||(he(e.$$.fragment,l),t=!0)},o(l){Ee(e.$$.fragment,l),t=!1},d(l){Je(e,l)}}}function $y(n){let e,t,l,s,o,i,c,u=b("common.backLabel")+"",d,m,g,h;return e=new vd({props:{crumbs:[{name:b("file.root")},...n[98]]}}),e.$on("navigate",n[292]),{c(){Qe(e.$$.fragment),t=w(),l=f("button"),s=re("svg"),o=re("line"),i=re("polyline"),c=w(),d=F(u),r(o,"x1","19"),r(o,"y1","12"),r(o,"x2","5"),r(o,"y2","12"),r(o,"class","svelte-5mstt"),r(i,"points","12 19 5 12 12 5"),r(i,"class","svelte-5mstt"),r(s,"width","14"),r(s,"height","14"),r(s,"viewBox","0 0 24 24"),r(s,"fill","none"),r(s,"stroke","currentColor"),r(s,"stroke-width","2"),r(s,"stroke-linecap","round"),r(s,"stroke-linejoin","round"),r(s,"class","svelte-5mstt"),r(l,"class","btn btn-sm back-btn svelte-5mstt")},m(_,v){Xe(e,_,v),S(_,t,v),S(_,l,v),a(l,s),a(s,o),a(s,i),a(l,c),a(l,d),m=!0,g||(h=D(l,"click",n[139]),g=!0)},p(_,v){const k={};v[3]&32&&(k.crumbs=[{name:b("file.root")},..._[98]]),e.$set(k)},i(_){m||(he(e.$$.fragment,_),m=!0)},o(_){Ee(e.$$.fragment,_),m=!1},d(_){_&&(T(t),T(l)),Je(e,_),g=!1,h()}}}function e5(n){let e,t=[],l=new Map,s,o=we(n[99]);const i=c=>c[550].id;for(let c=0;c0?b("file.noFiles"):b("file.noFilesCase"))+"",i,c,u,d,m,g,h,_,v,k;return{c(){e=f("div"),t=f("div"),t.innerHTML='',l=w(),s=f("p"),i=F(o),c=w(),u=f("p"),u.textContent=`${b("file.hint")}`,d=w(),m=f("div"),g=f("button"),g.textContent=`${b("file.addFileSimple")}`,h=w(),_=f("button"),_.textContent=`${b("file.addFolderSimple")}`,r(t,"class","empty-icon svelte-5mstt"),r(s,"class","svelte-5mstt"),r(u,"class","hint svelte-5mstt"),r(g,"class","btn btn-primary svelte-5mstt"),r(_,"class","btn svelte-5mstt"),r(m,"class","empty-actions svelte-5mstt"),r(e,"class","empty-state svelte-5mstt")},m(y,E){S(y,e,E),a(e,t),a(e,l),a(e,s),a(s,i),a(e,c),a(e,u),a(e,d),a(e,m),a(m,g),a(m,h),a(m,_),v||(k=[D(g,"click",n[223]),D(_,"click",n[224])],v=!0)},p(y,E){E[3]&32&&o!==(o=(y[98].length>0?b("file.noFiles"):b("file.noFilesCase"))+"")&&Q(i,o)},i:ie,o:ie,d(y){y&&T(e),v=!1,Se(k)}}}function kf(n,e){let t,l,s;return l=new B_({props:{item:e[550],selected:e[105].includes(e[550].id),onDragStart:e[152],onDragOver:e[153],onDrop:e[154]}}),l.$on("navigate",e[293]),l.$on("preview",e[294]),l.$on("openExternal",e[295]),l.$on("showInFolder",e[296]),l.$on("delete",e[297]),l.$on("rename",e[298]),l.$on("duplicate",e[299]),l.$on("cut",e[300]),l.$on("copy",e[301]),l.$on("selectOne",e[302]),l.$on("toggleSelect",e[303]),l.$on("rangeSelect",e[304]),{key:n,first:null,c(){t=wt(),Qe(l.$$.fragment),this.first=t},m(o,i){S(o,t,i),Xe(l,o,i),s=!0},p(o,i){e=o;const c={};i[3]&64&&(c.item=e[550]),i[3]&4160&&(c.selected=e[105].includes(e[550].id)),l.$set(c)},i(o){s||(he(l.$$.fragment,o),s=!0)},o(o){Ee(l.$$.fragment,o),s=!1},d(o){o&&T(t),Je(l,o)}}}function wf(n){let e,t;return{c(){e=f("div"),t=f("p"),t.textContent=`${b("file.scanning")}`,r(t,"class","svelte-5mstt"),r(e,"class","empty-state svelte-5mstt")},m(l,s){S(l,e,s),a(e,t)},d(l){l&&T(e)}}}function yf(n){let e,t,l,s,o,i,c,u,d;return{c(){e=f("div"),t=f("input"),l=w(),s=f("div"),o=f("button"),o.textContent=`${b("common.create")}`,i=w(),c=f("button"),c.textContent=`${b("common.cancel")}`,r(t,"type","text"),r(t,"placeholder",b("note.title")),r(t,"class","svelte-5mstt"),r(o,"class","btn btn-primary svelte-5mstt"),r(c,"class","btn svelte-5mstt"),r(s,"class","form-actions svelte-5mstt"),r(e,"class","create-form svelte-5mstt")},m(m,g){S(m,e,g),a(e,t),Ie(t,n[86]),a(e,l),a(e,s),a(s,o),a(s,i),a(s,c),u||(d=[D(t,"input",n[286]),D(t,"keydown",n[287]),D(o,"click",n[178]),D(c,"click",n[177])],u=!0)},p(m,g){g[2]&16777216&&t.value!==m[86]&&Ie(t,m[86])},d(m){m&&T(e),u=!1,Se(d)}}}function n5(n){let e,t=we(n[36]),l=[];for(let s=0;s',_=w(),v=f("button"),v.innerHTML='',k=w(),r(l,"class","note-card-title svelte-5mstt"),r(c,"class","note-card-date svelte-5mstt"),r(t,"class","note-card-info svelte-5mstt"),r(h,"class","note-action-btn svelte-5mstt"),r(h,"title",b("common.rename")),r(v,"class","note-action-btn note-action-danger svelte-5mstt"),r(v,"title",b("common.delete")),r(g,"class","note-card-actions svelte-5mstt"),r(e,"class","note-card svelte-5mstt"),r(e,"role","button"),r(e,"tabindex","0")},m(M,R){S(M,e,R),a(e,t),a(t,l),a(l,o),a(t,i),a(t,c),a(c,d),a(e,m),a(e,g),a(g,h),a(g,_),a(g,v),a(e,k),y||(E=[D(h,"click",C),D(v,"click",A),D(g,"click",We(n[266])),D(e,"click",N),D(e,"keydown",function(){In(xt(I))&&xt(I).apply(this,arguments)})],y=!0)},p(M,R){n=M,R[1]&32&&s!==(s=n[545].title+"")&&Q(o,s),R[1]&32&&u!==(u=on(n[545].createdAt)+"")&&Q(d,u)},d(M){M&&T(e),y=!1,Se(E)}}}function Tf(n){let e,t,l,s=we(n[36].slice(0,5)),o=[];for(let i=0;i',i=w(),m&&m.c(),c=wt(),r(e,"class","note-title svelte-5mstt"),r(o,"class","btn btn-sm note-rename-btn svelte-5mstt"),r(o,"title",b("common.rename"))},m(g,h){S(g,e,h),a(e,l),S(g,s,h),S(g,o,h),S(g,i,h),m&&m.m(g,h),S(g,c,h),u||(d=D(o,"click",n[279]),u=!0)},p(g,h){h[1]&64&&t!==(t=g[37].title+"")&&Q(l,t),g[37].dirty?m||(m=Nf(),m.c(),m.m(c.parentNode,c)):m&&(m.d(1),m=null)},d(g){g&&(T(e),T(s),T(o),T(i),T(c)),m&&m.d(g),u=!1,d()}}}function i5(n){let e,t,l,s,o,i,c,u;return{c(){e=f("div"),t=f("input"),l=w(),s=f("button"),s.textContent=`${b("common.save")}`,o=w(),i=f("button"),i.textContent=`${b("common.cancel")}`,r(t,"type","text"),r(t,"class","note-rename-input svelte-5mstt"),r(s,"class","btn btn-primary btn-sm svelte-5mstt"),r(i,"class","btn btn-sm svelte-5mstt"),r(e,"class","note-rename-inline svelte-5mstt")},m(d,m){S(d,e,m),a(e,t),Ie(t,n[48]),a(e,l),a(e,s),a(e,o),a(e,i),c||(u=[D(t,"input",n[277]),D(t,"keydown",n[278]),D(s,"click",n[188]),D(i,"click",n[187])],c=!0)},p(d,m){m[1]&131072&&t.value!==d[48]&&Ie(t,d[48])},d(d){d&&T(e),c=!1,Se(u)}}}function Nf(n){let e;return{c(){e=f("span"),e.textContent="●",r(e,"class","dirty-mark svelte-5mstt")},m(t,l){S(t,e,l)},d(t){t&&T(e)}}}function Rf(n){let e,t,l,s,o,i,c,u,d,m,g,h,_,v,k,y,E,C,A,N,I,M,R,O,L,H,W=b("common.create")+"",U,K,Z,X,G,P,j,B=n[82]&&If(n);g=new Js({props:{kind:"folder",size:24}});let J=we(n[15]),q=[];for(let $=0;$Ee(q[$],1,1,()=>{q[$]=null});return{c(){e=f("div"),t=f("div"),l=f("h3"),l.textContent=`${b("nav.createNode")}`,s=w(),B&&B.c(),o=w(),i=f("div"),c=f("span"),c.textContent=`${b("template.select")}`,u=w(),d=f("div"),m=f("button"),Qe(g.$$.fragment),h=w(),_=f("div"),v=f("span"),v.textContent=`${b("template.optionNone")}`,k=w(),y=f("span"),y.textContent=`${b("template.none.desc")}`,E=w();for(let $=0;${v=null}),Ct()),y[84].node&&y[84].node.parent_id?k?k.p(y,E):(k=Pf(y),k.c(),k.m(t,o)):k&&(k.d(1),k=null),(!g||E[2]&4194304)&&Qt(t,"left",y[84].x+"px"),(!g||E[2]&4194304)&&Qt(t,"top",y[84].y+"px")},i(y){g||(he(v),g=!0)},o(y){Ee(v),g=!1},d(y){y&&T(e),v&&v.d(),k&&k.d(),h=!1,Se(_)}}}function Of(n){let e,t,l,s,o,i=we(n[15].length>0?n[15]:[{id:"",title:"template.optionNone",icon:"folder"}]),c=[];for(let d=0;dEe(c[d],1,1,()=>{c[d]=null});return{c(){e=f("div"),e.textContent=`${b("common.create")}`,t=w();for(let d=0;d0?d[15]:[{id:"",title:"template.optionNone",icon:"folder"}]);let g;for(g=0;gn[417].call(k)),r(h,"class","svelte-5mstt"),r(g,"class","form-group svelte-5mstt"),r(A,"class","label-text svelte-5mstt"),r(R,"type","text"),r(R,"placeholder",O=n[89]==="open_url"?b("action.urlPlaceholder"):n[89]==="open_folder"||n[89]==="open_file"?b("action.pathPlaceholder"):b("action.commandPlaceholder")),r(R,"class","svelte-5mstt"),r(C,"class","svelte-5mstt"),r(E,"class","form-group svelte-5mstt"),r(W,"class","btn btn-primary svelte-5mstt"),r(K,"class","btn svelte-5mstt"),r(H,"class","modal-actions svelte-5mstt"),r(t,"class","modal svelte-5mstt"),r(e,"class","modal-overlay svelte-5mstt"),r(e,"role","button"),r(e,"tabindex","0")},m(j,B){S(j,e,B),a(e,t),a(t,l),a(t,s),a(t,o),a(o,i),a(i,c),a(i,u),a(i,d),Ie(d,n[88]),a(t,m),a(t,g),a(g,h),a(h,_),a(h,v),a(h,k);for(let J=0;J0&&Kf(n),K=n[122]&&qf();return{c(){e=f("div"),t=f("div"),l=f("h3"),l.textContent=`${b("inbox.assignTitle")}`,s=w(),o=f("div"),c=F(i),u=w(),d=f("div"),m=f("label"),g=f("span"),g.textContent=`${b("inbox.assignTarget")}`,h=w(),_=f("input"),v=w(),k=f("div"),k.textContent=`${b("inbox.assignSearchHint")}`,y=w(),U&&U.c(),E=w(),K&&K.c(),C=w(),A=f("div"),N=f("button"),M=F(I),O=w(),L=f("button"),L.textContent=`${b("common.cancel")}`,r(l,"class","svelte-5mstt"),r(o,"class","create-context svelte-5mstt"),r(g,"class","label-text svelte-5mstt"),r(_,"type","text"),r(_,"placeholder",b("inbox.assignSearchPlaceholder")),r(_,"class","svelte-5mstt"),r(k,"class","assign-hint svelte-5mstt"),r(m,"class","svelte-5mstt"),r(d,"class","form-group assign-search svelte-5mstt"),r(N,"class","btn btn-primary svelte-5mstt"),N.disabled=R=!n[121],r(L,"class","btn svelte-5mstt"),r(A,"class","modal-actions svelte-5mstt"),r(t,"class","modal svelte-5mstt"),r(e,"class","modal-overlay svelte-5mstt"),r(e,"role","button"),r(e,"tabindex","0")},m(Z,X){S(Z,e,X),a(e,t),a(t,l),a(t,s),a(t,o),a(o,c),a(t,u),a(t,d),a(d,m),a(m,g),a(m,h),a(m,_),Ie(_,n[119]),a(m,v),a(m,k),a(d,y),U&&U.m(d,null),a(t,E),K&&K.m(t,null),a(t,C),a(t,A),a(A,N),a(N,M),a(A,O),a(A,L),H||(W=[D(_,"input",n[423]),D(_,"input",n[238]),D(_,"keydown",n[424]),D(N,"click",n[240]),D(L,"click",n[237]),D(e,"click",$t(n[237])),D(e,"keydown",xt(n[237]))],H=!0)},p(Z,X){X[3]&33554432&&i!==(i=Z[118].title+"")&&Q(c,i),X[3]&67108864&&_.value!==Z[119]&&Ie(_,Z[119]),Z[120].length>0?U?U.p(Z,X):(U=Kf(Z),U.c(),U.m(d,null)):U&&(U.d(1),U=null),Z[122]?K||(K=qf(),K.c(),K.m(t,C)):K&&(K.d(1),K=null),X[3]&268435456&&R!==(R=!Z[121])&&(N.disabled=R)},d(Z){Z&&T(e),U&&U.d(),K&&K.d(),H=!1,Se(W)}}}function Kf(n){let e,t=we(n[120]),l=[];for(let s=0;s{m[A]=null}),Ct(),t=m[e],t?t.p(E,C):(t=m[e]=d[e](E),t.c()),he(t,1),t.m(l.parentNode,l)),E[39]?h?h.p(E,C):(h=xf(E),h.c(),h.m(s.parentNode,s)):h&&(h.d(1),h=null),E[42]?_?_.p(E,C):(_=$f(E),_.c(),_.m(o.parentNode,o)):_&&(_.d(1),_=null),E[47]&&E[47]!==((N=E[37])==null?void 0:N.id)?v?v.p(E,C):(v=ed(E),v.c(),v.m(i.parentNode,i)):v&&(v.d(1),v=null),E[45]?k?k.p(E,C):(k=td(E),k.c(),k.m(c.parentNode,c)):k&&(k.d(1),k=null)},i(E){u||(he(t),u=!0)},o(E){Ee(t),u=!1},d(E){E&&(T(l),T(s),T(o),T(i),T(c)),m[e].d(E),h&&h.d(E),_&&_.d(E),v&&v.d(E),k&&k.d(E)}}}function ae(n,...e){try{if(window.go&&window.go.main&&window.go.main.App){const t=window.go.main.App[n];if(typeof t=="function")return t(...e)}}catch(t){console.error("Wails call error:",n,t)}return Promise.reject(new Error("Wails not connected: "+n))}function r5(n,e,t){const l=[...n];return l.sort((s,o)=>{let i=0;if(e==="name")i=(s.title||"").localeCompare(o.title||"");else if(e==="type"){const c=s.captureKind||s.sourceKind||s.type||"",u=o.captureKind||o.sourceKind||o.type||"";i=c.localeCompare(u)}else i=(s.capturedAt||s.createdAt||"").localeCompare(o.capturedAt||o.createdAt||"");return t==="asc"?i:-i}),l}function a5(n,e){return n.section===e.section&&n.nodeId===e.nodeId&&n.tab===e.tab&&n.trashFolderId===e.trashFolderId}function js(n){return!n||!(n instanceof Element)?!1:!!n.closest('input, textarea, select, [contenteditable="true"], [contenteditable=""]')}function ls(n,e,t){for(const l of n){if(l.id===e)return l.children=t,l.has_children=t.length>0,!0;if(l.children&&ls(l.children,e,t))return!0}return!1}function up(n){return(n==null?void 0:n.sourceKind)||(n==null?void 0:n.captureKind)||(n==null?void 0:n.type)||""}function po(n){return up(n)!=="url"&&(n==null?void 0:n.type)!=="link"}function c5(n,e){return{id:n.id,nodeId:n.id,fileId:e.id||e.fileId,name:e.name||n.title,type:"file",size:e.size||0,mime:e.mime||""}}function fp(n,e,t){for(const l of n){if(l.id===e)return l.children=t,l.has_children=t.length>0,!0;if(l.children&&fp(l.children,e,t))return!0}return!1}function u5(n,e){return e?n.filter(t=>ji(t)===e):n.filter(t=>!ji(t)||!n.some(l=>l.id===ji(t)))}function ji(n){return(n==null?void 0:n.parentId)||(n==null?void 0:n.parentID)||(n==null?void 0:n.parent_id)||""}function Ds(n){return n.eventIds&&n.eventIds.length?n.eventIds:n.events&&n.events.length?n.events.map(e=>e.id).filter(Boolean):[]}function Ps(n){try{ae("WriteDebugLog",n)}catch{}}function Ui(n){return n?n.map(e=>(e._expanded===void 0&&(e._expanded=!1),e)):[]}function sn(n){return n?new Date(n).toLocaleTimeString("ru-RU",{hour:"2-digit",minute:"2-digit"}):""}function cs(n){return n==="note_created"||n==="file_added"||n==="folder_added"||n==="node_created"?"+":n==="file_deleted"||n==="folder_deleted"?"×":n==="file_renamed"||n==="folder_renamed"||n==="note_updated"||n==="node_updated"?"~":n==="file_copied"?"⧉":n==="file_moved"?"→":"•"}function on(n){if(!n)return"";try{return new Date(n).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return n}}function Hi(n){const e=String(n||"").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 l=`https://${e}`,s=new URL(l);return s.hostname&&s.hostname.includes(".")?l:""}catch{return""}}}function f5(n){return{"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"}[n]||"bin"}function d5(n){return new Promise((e,t)=>{const l=new FileReader;l.onload=()=>{const s=String(l.result||""),o=s.indexOf(",");e(o>=0?s.slice(o+1):s)},l.onerror=()=>t(l.error),l.readAsDataURL(n)})}function p5(n){const e=String(n||"").split(/\r?\n/).map(t=>t.trim()).filter(Boolean);return e.length?{url:e[0],title:e[1]||""}:null}function m5(n){return String(n||"").split(/\r?\n/).map(t=>t.trim()).filter(t=>t&&!t.startsWith("#"))[0]||""}function g5(n){return["case","client","project","folder","document","recipe"].includes(n.type)}function h5(n){return n.targetType==="note"&&n.targetId?{nodeId:n.nodeId,tab:"notes",targetId:n.targetId}:n.targetType==="file"?{nodeId:n.nodeId,tab:"files",targetId:n.targetId,targetPath:n.targetPath}:n.targetType==="folder"?{nodeId:n.nodeId,tab:"files",targetPath:n.targetPath||n.targetId}:{nodeId:n.nodeId}}function xt(n){return e=>{js(e.target)||(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),n())}}function _5(n,e,t){var kr;let l,s,o,i,c=null,u=!1,d=!1,m=!1,g=!1,h=[],_=[],v=[],k=null,y=[],E=0,C=!0,A=[],N=null,I="",M="",R=!1,O="",L="all",H="all",W="",U="",K="suggestions",Z="",X=[],G=!1,P=[],j="",B="";function J(p){return{"vault not open":b("error.vaultNotOpen")}[p]||p}let q="",Y=null,$="overview",ne=[],te=null,pe="edit",Te=!1,Fe="",qe="",Ne=!1,ee="",oe="verstak://secret/sec_example",Ce=!1,je="",_e=null,Ue="",pt="",be=[],lt=[],Me=[],Re=!1,Pe="",He="",De="",ze="",ue=!1,ye=!1,x=null,ge=null,de=[],Ae=0,it=[],ot=[],Ye=[],vt=!1,Ke=[],Ge=[],st=!1,fe="",Le="date",At="desc",en=!1,Mt=[],Ht=null,ct="",Dt="",bn="",vn="",qt=null,Xn=0,It=[],Wt="",gt=[],ps=[],Mn="",ms="",un=[],ht=!1,Gt=!1,fn="",kn=null,Zt=null,rn={visible:!1,x:0,y:0,node:null},wn=!1,tn="",Jn=!1,yn="",Qn="open_url",Pt="",El=[{id:"open_url",label:b("action.openUrl")},{id:"open_file",label:b("action.openFile")},{id:"open_folder",label:b("action.openFolder")},{id:"run_command",label:b("action.runCommand")},{id:"run_script",label:b("action.runScript")},{id:"open_terminal",label:b("action.openTerminal")},{id:"launch_app",label:b("action.launchApp")}],Yt=!0,Kl=!1,Tl=null,Ln=!1,Sl="",xn="",Xt={},On=!1,mt=null,kt=[],rt=[],dn=null,nn="",Dn=!1,An="",an={items:[],mode:"copy"},xe=[],Pn=[],Vl=!1,zn=!1,pn=!1,$n="",ke=0,V=0,le=null,ve=!1,Oe="",Ve="",$e=!1,Nt=b("common.delete"),_t=null,zt=null,Lt=!1,Bn="",Tt="",Cl="",Nn=null,Fn="",el=[],jn=null,gs=!1,mo,ei=null,ti=!1,ql="",hs="";const dp=[{id:"overview",label:b("tab.overview")},{id:"notes",label:b("tab.notes")},{id:"files",label:b("tab.files")},{id:"links",label:b("tab.links")},{id:"actions",label:b("tab.actions")},{id:"activity",label:b("tab.activity"),group:"service"},{id:"worklog",label:b("tab.worklog"),group:"service"},{id:"inbox",label:b("tab.inbox"),group:"service"}];let ni=null;function pp(p){const z={};for(const me of p){const Be=me.captureContextLabel||b("inbox.noContext");z[Be]||(z[Be]=[]),z[Be].push(me)}const se=[];for(const[me,Be]of Object.entries(z))se.push({label:me,items:Be});return se.sort((me,Be)=>me.label.localeCompare(Be.label)),se}function mp(){return{section:q||"",nodeId:(Y==null?void 0:Y.id)||"",tab:Y?$:"",trashFolderId:q==="trash"?Wt:"",trashFolderStack:q==="trash"?gt.map(p=>({id:p.id,title:p.title})):[]}}function Un(){if(ht)return;const p=mp(),z=un[un.length-1];(!z||!a5(z,p))&&(un=[...un,p].slice(-80))}function li(){t(8,Wt=""),t(265,gt=[]),t(76,It=[])}function go(){return ve?(ri(),!0):g?(vr(),!0):dn?(ks(),!0):Nn?(Si(),!0):Ht?(Ci(),!0):Lt?(t(115,Lt=!1),!0):Re?(Wo(),!0):Ln?(Jo(),!0):Jn?(hr(),!0):wn?(zo(),!0):Gt?(Io(),!0):rn.visible?(tl(),!0):te?(Uo(),!0):!1}async function gp(p){ht=!0;try{if(p.nodeId){const z=await ae("GetNodeDetail",p.nodeId);return z?(await Jt(z),t(35,$=p.tab||"overview"),$==="files"&&rt.length===0&&await yt(z.id),!0):!1}else if(p.section)return h.some(z=>z.id===p.section)?(await bs(p.section),p.section==="trash"&&(t(8,Wt=p.trashFolderId||""),t(265,gt=p.trashFolderStack||[]),t(76,It=[]),await sl()),!0):!1;return!1}catch{return!1}finally{ht=!1}}async function ho(){if(!go())for(;un.length>0;){const p=un[un.length-1];if(un=un.slice(0,-1),await gp(p))return}}function _s(p){p.button!==3&&p.button!==4||js(p.target)||go()&&p.button===3||(p.preventDefault(),p.stopPropagation(),p.button===3&&ho())}function cn(p){$!==p&&(Un(),t(35,$=p),p==="files"&&Y&&rt.length===0&&!mt&&yt(Y.id))}us(async()=>{try{if(t(10,c=await ae("GetStartupStatus")),u=!0,c.status==="first_run"){t(11,d=!0),t(91,Yt=!1);return}if(c.status==="recovery"){t(12,m=!0),t(91,Yt=!1);return}}catch(p){t(34,B=String(p))}try{t(33,j=await ae("VerstakVersion")||"verstak-gui/v2"),t(0,h=await ae("ListSystemViewsWithPlugins")||[]),t(14,_=await ae("ListWorkspaceTree")||[]),t(15,v=await ae("ListEnabledTemplates")||[])}catch(p){t(34,B=String(p)),t(0,h=[{id:"today",label:b("nav.today")},{id:"inbox",label:b("nav.inbox")},{id:"activity",label:b("nav.activity")}]),t(14,_=[]),t(15,v=[])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",rm),ni=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",Co),window.addEventListener("paste",$o),window.addEventListener("dragenter",sr),window.addEventListener("dragover",ir),window.addEventListener("dragleave",or),window.addEventListener("dragend",Ot),window.addEventListener("dragcancel",Ot),window.addEventListener("drop",ar),window.addEventListener("mouseup",Ot),window.addEventListener("mouseleave",Ot),window.addEventListener("blur",Ot),document.addEventListener("visibilitychange",rr),window.addEventListener("auxclick",_s),window.addEventListener("mouseup",_s),t(91,Yt=!1),Ni(),gi()}),fs(()=>{ni&&ni(),window.removeEventListener("keydown",Co),window.removeEventListener("paste",$o),window.removeEventListener("dragenter",sr),window.removeEventListener("dragover",ir),window.removeEventListener("dragleave",or),window.removeEventListener("dragend",Ot),window.removeEventListener("dragcancel",Ot),window.removeEventListener("drop",ar),window.removeEventListener("mouseup",Ot),window.removeEventListener("mouseleave",Ot),window.removeEventListener("blur",Ot),document.removeEventListener("visibilitychange",rr),window.removeEventListener("auxclick",_s),window.removeEventListener("mouseup",_s),tr()});async function bs(p){Un(),t(1,q=p),t(2,Y=null),t(35,$="overview"),t(36,ne=[]),be=[],t(49,lt=[]),t(50,Me=[]),t(66,Ge=[]),t(69,Mt=[]),t(60,de=[]),t(3,Ke=[]),t(7,qt=null),li(),t(80,Gt=!1),t(34,B=""),t(16,k=null),t(62,it=[]),t(63,ot=[]),t(17,y=[]),E=0,C=!0,t(18,A=[]),t(19,N=null);try{p==="today"?(t(16,k=await ae("ListTodayView")||{cases:[]}),t(60,de=await ae("GetSuggestions")||[]),t(61,Ae=de.length),t(62,it=await ae("ListTodayInProgress")||[]),t(63,ot=await ae("ListTodayCaptures")||[])):p==="inbox"?t(3,Ke=await ae("ListInboxNodes")||[]):p==="trash"?await sl():p==="journal"?await il():p==="activity"&&(t(17,y=await ae("ListActivityFeed",50,0)||[]),E=y.length,C=y.length===50)}catch(z){t(34,B=String(z)),t(16,k={cases:[]}),t(3,Ke=[]),t(7,qt=null),t(17,y=[])}}async function Jt(p){Un(),t(2,Y=p),t(1,q=""),t(35,$="overview"),t(36,ne=[]),be=[],t(49,lt=[]),t(50,Me=[]),t(60,de=[]),t(99,rt=[]),t(98,kt=[]),t(97,mt=null),t(100,dn=null),t(101,nn=""),t(105,xe=[]),Pn=[],li(),t(37,te=null),t(80,Gt=!1),t(85,wn=!1),t(34,B=""),t(32,P=[]),await vs(p.id)}async function vs(p){try{t(36,ne=await ae("ListNotes",p)||[])}catch{}try{be=await ae("ListFiles",p)||[]}catch{}try{t(49,lt=await ae("ListActions",p)||[])}catch{}try{t(50,Me=Ui(await ae("ListWorklog",p)))}catch{}try{t(66,Ge=await ae("ListInboxNodesForTarget",p)||[])}catch{t(66,Ge=[])}try{t(69,Mt=await ae("ListLinks",p)||[])}catch{t(69,Mt=[])}try{t(60,de=await ae("GetSuggestions")||[]),t(61,Ae=de.length)}catch{t(60,de=[]),t(61,Ae=0)}try{t(32,P=await ae("ListActivityByNode",p,50,0)||[])}catch{}}async function yt(p){t(96,On=!0);try{let z=await ae("ListItems",p)||[];z.sort((se,me)=>se.type!==me.type?se.type==="folder"?-1:1:(se.name||"").localeCompare(me.name||"")),t(99,rt=z)}catch{t(99,rt=[])}t(96,On=!1)}async function si(p){if(!Y)return;Un();try{const se=await ae("GetNodeDetail",p);se&&t(98,kt=[...kt,{id:p,name:se.title}])}catch{t(98,kt=[...kt,{id:p,name:"..."}])}t(97,mt=p),t(95,Xt={...Xt,[p]:!0});const z=await ae("ListWorkspaceChildren",p)||[];ls(_,p,z),t(14,_=[..._]),await yt(p)}function hp(){if(Un(),kt.length<2)t(98,kt=[]),t(97,mt=null),yt(Y.id);else{const p=kt[kt.length-2];t(98,kt=kt.slice(0,-1)),t(97,mt=p.id),yt(p.id)}}function _o(p){const z=kt[p];t(98,kt=kt.slice(0,p+1)),t(97,mt=z.id),yt(z.id)}async function Al(p){t(100,dn=p),t(101,nn=""),t(103,An=""),t(102,Dn=!0);try{R_(p)?t(101,nn=await ae("GetFileBase64",p.fileId)||""):I_(p)&&t(101,nn=await ae("ReadFileText",p.fileId)||"")}catch(z){t(103,An=String(z))}t(102,Dn=!1)}function ks(){t(100,dn=null),t(101,nn=""),t(103,An="")}async function _p(){const p=prompt(b("file.namePrompt"));if(!(!p||!p.trim()))try{const z=mt||Y.id;await ae("CreateEmptyFile",z,p.trim()),await yt(z),await ai(z)}catch(z){t(34,B=String(z))}}async function bo(p){try{await ae("DuplicateNode",p);const z=mt||Y.id;await yt(z),await ai(z)}catch(z){t(34,B=String(z))}}function vo(p){const z=rt.find(se=>se.id===p);z&&oi(z.id,z.name)}function ko(p){t(104,an={items:[p],mode:"cut"})}function wo(p){t(104,an={items:[p],mode:"copy"})}async function yo(){if(an.items.length===0)return;const p=mt||Y.id;try{if(an.mode==="copy")for(const z of an.items)await ae("DuplicateNode",z);else for(const z of an.items)await ae("MoveNode",z,p);t(104,an={items:[],mode:"copy"}),await yt(p)}catch(z){t(34,B=String(z))}}function Eo(p){xe.includes(p)?t(105,xe=xe.filter(z=>z!==p)):t(105,xe=[...xe,p])}function To(p){t(105,xe=[p])}function bp(){t(105,xe=rt.map(p=>p.id))}function So(p){if(rt.length===0)return;const z=xe.length>0?xe[xe.length-1]:rt[0].id,se=rt.findIndex(En=>En.id===z),me=rt.findIndex(En=>En.id===p);if(se===-1||me===-1)return;const Be=Math.min(se,me),bt=Math.max(se,me),Wn=rt.slice(Be,bt+1).map(En=>En.id),al=new Set(xe);Wn.forEach(En=>al.add(En)),t(105,xe=[...al])}function vp(){t(105,xe=[])}function ii(p){return p.length>0?p:rt.map(z=>z.id)}async function kp(){const p=ii(xe),z=rt.find(me=>me.id===p[0]);let se;p.length===1&&(z==null?void 0:z.type)==="folder"?se=b("delete.folder"):p.length===1?se=b("delete.file"):se=b("delete.files",{count:p.length}),mn({title:b("delete.confirmTitle"),message:b("delete.confirmMessage")+" "+se+"?",confirmText:b("common.delete"),danger:!0,onConfirm:async()=>{for(const Be of p)try{await ae("DeleteFileOrFolder",Be)}catch(bt){t(34,B=String(bt))}t(105,xe=[]);const me=mt||Y.id;await yt(me)}})}function wp(){const p=ii(xe);t(104,an={items:p,mode:"cut"}),t(105,xe=[])}function yp(){const p=ii(xe);t(104,an={items:p,mode:"copy"}),t(105,xe=[])}function Ep(p,z){p.stopPropagation();const se=xe.includes(z)?xe:[z];Pn=se,p.dataTransfer.effectAllowed="move",p.dataTransfer.setData("text/plain",se.join(","))}function Tp(p,z){const se=rt.find(me=>me.id===z);se&&se.type==="folder"&&(p.preventDefault(),p.stopPropagation(),p.dataTransfer.dropEffect="move")}async function Sp(p,z){if(p.preventDefault(),p.stopPropagation(),Pn.length!==0){for(const se of Pn)try{await ae("MoveNode",se,z)}catch(me){t(34,B=String(me))}Pn=[],t(105,xe=[]),await yt(mt||Y.id)}}function Co(p){if(p.key==="Escape"&&pn){p.preventDefault(),Ot();return}if(!js(p.target)){if(p.key==="Backspace"||p.altKey&&p.key==="ArrowLeft"){p.preventDefault(),ho();return}if($==="files")if(p.ctrlKey||p.metaKey)p.key==="c"||p.key==="C"?(p.preventDefault(),yp()):p.key==="x"||p.key==="X"?(p.preventDefault(),wp()):p.key==="v"||p.key==="V"?(p.preventDefault(),yo()):p.key==="a"||p.key==="A"?(p.preventDefault(),bp()):p.key==="o"||p.key==="O"?(p.preventDefault(),Cp()):p.key==="Enter"&&(p.preventDefault(),Ao());else if(p.key==="Enter")p.preventDefault(),Ao();else if(p.key==="Delete"){if(dn){p.preventDefault(),ks();return}if(xe.length>0){p.preventDefault(),kp();return}}else if(p.key==="Escape"){if(dn){ks();return}if(xe.length>0){vp();return}}else p.key==="F2"&&(p.preventDefault(),Ap())}}function Ao(){if(xe.length===1){const p=rt.find(z=>z.id===xe[0]);p&&(p.type==="folder"?si(p.id):Al(p))}}function Cp(){if(xe.length===1){const p=rt.find(z=>z.id===xe[0]);p&&p.fileId&&ae("OpenFile",p.fileId)}}function oi(p,z){Bn=p,t(116,Tt=z),t(117,Cl=""),t(115,Lt=!0)}function Ap(){if(xe.length===1){const p=rt.find(z=>z.id===xe[0]);p&&oi(p.id,p.name)}}async function No(){const p=Tt.trim();if(!p){t(117,Cl=b("rename.emptyError"));return}try{await ae("ValidateName",p)}catch{t(117,Cl=b("rename.invalidError"));return}t(115,Lt=!1);const z=Bn;Bn="";try{await ae("RenameNode",z,p),Y&&Y.id===z&&t(2,Y={...Y,title:p}),await nl(),mt&&await yt(mt)}catch(se){t(34,B=String(se))}}function Np(){t(115,Lt=!1),Bn="",t(116,Tt=""),t(117,Cl="")}function Rp(p){p.key==="Enter"?No():t(117,Cl="")}function mn(p){t(111,Oe=p.title||b("common.confirm")),t(112,Ve=p.message||""),t(113,$e=p.danger!==void 0?p.danger:!0),t(114,Nt=p.confirmText||b("common.delete")),_t=p.onConfirm||null,zt=p.onCancel||null,t(110,ve=!0)}function ri(){t(110,ve=!1),_t=null,zt=null}function Ip(){_t&&_t(),ri()}function Mp(){zt&&zt(),ri()}function Ro(p){t(82,kn=rn.node),t(83,Zt=p),t(81,fn=""),t(80,Gt=!0),tl()}function Lp(){t(82,kn=null),t(83,Zt=void 0),t(81,fn=""),t(80,Gt=!0)}function Io(){t(80,Gt=!1),t(81,fn=""),t(82,kn=null),t(83,Zt=void 0)}async function Mo(){if(!(!fn.trim()||Zt===void 0))try{const p=kn?kn.id:"",z=Zt?Zt.id:"",se=await ae("CreateNodeFromTemplate",p,fn.trim(),z);t(80,Gt=!1),t(81,fn="");const me=se?se.id:null;if(t(82,kn=null),t(83,Zt=void 0),p){t(95,Xt={...Xt,[p]:!0});const Be=await ae("ListWorkspaceChildren",p)||[];ls(_,p,Be),t(14,_=[..._])}else t(14,_=await ae("ListWorkspaceTree")||_);if(me){const Be=await ae("GetNodeDetail",me);Be&&(t(1,q=""),Jt(Be))}}catch(p){t(34,B=String(p))}}function Op(p,z){t(84,rn={visible:!0,x:p.clientX,y:p.clientY,node:z})}function tl(){t(84,rn={visible:!1,x:0,y:0,node:null})}async function Dp(p){const z=!Xt[p];if(t(95,Xt={...Xt,[p]:z}),!z)return;const se=await ae("ListWorkspaceChildren",p)||[];ls(_,p,se),t(14,_=[..._])}async function Pp(p,z){if(!(!p||!z||p===z))try{const se=await ae("MoveNode",p,z);await nl();const me=await ae("GetNodeDetail",p);me&&(t(1,q=""),Jt(me))}catch(se){t(34,B=String(se))}}async function zp(p){p.preventDefault(),p.stopPropagation();try{const z=p.dataTransfer.getData("text/plain");if(!z)return;const se=await ae("GetNodeDetail",z);if(!se||!se.parent_id)return;await ae("MoveNode",z,""),await nl();const me=await ae("GetNodeDetail",z);me&&(t(1,q=""),Jt(me))}catch(z){t(34,B=String(z))}}function Bp(p){p.preventDefault(),p.dataTransfer.dropEffect="move",t(106,Vl=!0)}function Fp(p){t(106,Vl=!1)}function Lo(p){oi(p.id,p.title),tl()}function Oo(p){tl(),mn({title:b("delete.confirmTitle"),message:b("delete.confirmMessage")+" "+p.title+"?",confirmText:b("common.delete"),danger:!0,onConfirm:async()=>{try{await ae("DeleteNode",p.id),await nl(),await gi(),Y&&Y.id===p.id&&t(2,Y=null)}catch(z){t(34,B=String(z))}}})}async function Rn(p){tl();const z=typeof p=="string"?p:p.id;try{await ae("OpenFolder",z)}catch(se){t(34,B=String(se))}}async function gn(p){const z=up(p);try{if(z==="url"||p.type==="link"){if(!p.url)throw new Error("url required");await ae("OpenURL",p.url);return}if(z==="text"||p.type==="note"){const se=await ae("ReadNote",p.id);t(37,te={id:p.id,title:p.title,content:se||"",dirty:!1});return}if(z==="folder"||p.type==="folder"){Un(),t(1,q=""),t(2,Y=p),t(35,$="files"),t(98,kt=[]),t(97,mt=null),t(105,xe=[]),t(100,dn=null),await vs(p.id),await yt(p.id);return}if(z==="file"||z==="image"||p.type==="file"){const me=(await ae("ListFiles",p.id)||[])[0];if(!me)throw new Error("file record not found");const Be=c5(p,me);Mi(Be)?await Al(Be):await ae("OpenFile",Be.fileId);return}await Yl(p.id)}catch(se){t(34,B=String(se))}}async function Do(p){tl();try{await ae("MoveNode",p.id,""),await nl();const z=await ae("GetNodeDetail",p.id);z&&(t(1,q=""),Jt(z))}catch(z){t(34,B=String(z))}}async function nl(){const p=Object.keys(Xt).filter(se=>Xt[se]),z=await ae("ListWorkspaceTree")||[];for(const se of p){const Be=(await ae("ListWorkspaceChildren",se)||[]).map(bt=>({...bt}));fp(z,se,Be)}t(14,_=z)}async function ai(p){const z=await ae("ListWorkspaceChildren",p)||[];ls(_,p,z),t(14,_=[..._])}function Po(){t(85,wn=!0),t(86,tn="")}function zo(){t(85,wn=!1),t(86,tn="")}async function Bo(){if(!(!tn.trim()||!Y))try{const p=await ae("CreateNote",Y.id,tn.trim());t(36,ne=[...ne,p&&p.id?p:{id:Date.now().toString(),title:tn.trim(),createdAt:new Date().toISOString()}]),t(85,wn=!1),t(86,tn="")}catch{const z={id:Date.now().toString(),title:tn.trim(),createdAt:new Date().toISOString()};t(36,ne=[...ne,z]),t(85,wn=!1),t(86,tn="")}}async function ll(p){if(te&&te.dirty){mn({title:b("note.unsavedTitle"),message:b("note.unsavedMessage"),confirmText:b("note.unsavedClose"),danger:!1,onConfirm:async()=>{await Fo(p)}});return}await Fo(p)}async function Fo(p){try{const z=await ae("ReadNote",p.id);t(37,te={id:p.id,title:p.title,content:z||"",dirty:!1})}catch{t(37,te={id:p.id,title:p.title,content:"# "+p.title+` + +`,dirty:!1})}}function jo(p){mn({title:b("common.delete"),message:b("note.deleteConfirm",{title:p.title})||`Удалить заметку «${p.title}»?`,confirmText:b("common.delete"),danger:!0,onConfirm:async()=>{try{await ae("DeleteNote",p.id),t(36,ne=ne.filter(z=>z.id!==p.id)),te&&te.id===p.id&&t(37,te=null);try{await gi()}catch{}}catch(z){t(34,B=String(z))}}})}function Uo(){if(te&&te.dirty){mn({title:b("note.unsavedTitle"),message:b("note.unsavedMessage"),confirmText:b("note.unsavedClose"),danger:!1,onConfirm:()=>{t(37,te=null),t(38,pe="edit")}});return}t(37,te=null),t(38,pe="edit")}async function jp(){if(te)try{await ae("SaveNote",te.id,te.content),t(37,te.dirty=!1,te)}catch{t(37,te.dirty=!1,te)}}function Up(){t(40,Fe=""),t(41,qe=""),t(39,Te=!0)}function ci(){if(!te){t(39,Te=!1);return}const p=Fe.trim()||qe.trim()||"link",z=qe.trim()||"#",se=`[${p}](${z})`;t(37,te.content=te.content+(te.content.endsWith(` +`)?"":` +`)+se+` +`,te),t(37,te.dirty=!0,te),t(39,Te=!1)}function Hp(){t(43,ee=""),t(44,oe="verstak://secret/sec_example"),t(42,Ne=!0)}function ui(){Yp()}function Ho(){t(42,Ne=!1),t(43,ee=""),t(44,oe="verstak://secret/sec_example")}function fi(p,z){t(47,_e=p),t(48,Ue=z),pt=z}function Hn(){t(47,_e=null),t(48,Ue=""),pt=""}async function di(){if(!_e||!Ue.trim()){Hn();return}if(Ue.trim()===pt){Hn();return}try{await ae("RenameNote",_e,Ue.trim()),t(36,ne=ne.map(p=>p.id===_e?{...p,title:Ue.trim()}:p)),te&&te.id===_e&&t(37,te.title=Ue.trim(),te),Hn()}catch(p){t(34,B=String(p)),Hn()}}function Wp(p){const{type:z,id:se}=p.detail;let me="";switch(z){case"secret":me=b("note.internal.secretNotImplemented");break;case"case":me=b("note.internal.caseNotImplemented");break;case"note":me=b("note.internal.noteNotImplemented");break;case"file":me=b("note.internal.fileNotImplemented");break;default:me=`verstak://${z}/${se}`}Gp(me)}function Gp(p){t(46,je=p),t(45,Ce=!0),setTimeout(()=>{t(45,Ce=!1)},3e3)}function Kp(p){te&&(t(37,te.content=p.detail.content,te),t(37,te.dirty=!0,te))}function Vp(p){t(38,pe=p.detail.mode)}function qp(){Up()}function Zp(){Hp()}function Yp(){if(!te){t(42,Ne=!1);return}const p=ee.trim()||oe,z=oe.trim()||"verstak://secret/sec_example",se=`[${p}](${z})`,me=document.querySelector(".md-textarea");if(me){const Be=me.selectionStart,bt=me.selectionEnd,Wn=te.content.substring(0,Be),al=te.content.substring(bt);t(37,te.content=Wn+se+al,te),t(37,te.dirty=!0,te),requestAnimationFrame(()=>{me.focus(),me.selectionStart=me.selectionEnd=Be+se.length})}else t(37,te.content=te.content+(te.content.endsWith(` +`)?"":` +`)+se+` +`,te),t(37,te.dirty=!0,te);t(42,Ne=!1)}function ws(p=null){t(58,x=p),t(59,ge=null),t(52,Pe=p?p.summary:""),t(53,He=p?String(p.minutes||""):""),t(54,De=p&&p.date||""),t(55,ze=p&&p.details||""),t(56,ue=p?!!p.billable:!1),t(57,ye=p?!!p.approximate:!1),t(51,Re=!0)}function Wo(){t(51,Re=!1),t(58,x=null),t(59,ge=null)}async function pi(p=""){const z=p||(Y?Y.id:"");Y&&Y.id===z&&t(50,Me=Ui(await ae("ListWorklog",Y.id))||Me),q==="journal"&&await il()}async function Xp(){const p=parseInt(He,10);if(!(!Pe.trim()||isNaN(p)||p<=0)&&!(!ge&&!x&&!Y)){try{if(ge){const z=JSON.stringify(Ds(ge));await ae("AcceptSuggestionFull",ge.nodeId,Pe.trim(),ze,De,p,ye,ue,z),await ys()}else x?(await ae("UpdateWorklogEntry",x.id,Pe.trim(),ze,De,p,ye,ue),await pi(x.nodeId)):(await ae("CreateWorklogFull",Y.id,Pe.trim(),ze,De,p,ye,ue),await pi(Y.id))}catch(z){t(34,B=String(z));return}t(51,Re=!1),t(58,x=null),t(59,ge=null)}}function mi(p){mn({title:b("worklog.deleteEntry"),message:b("worklog.deleteConfirm"),confirmText:b("common.delete"),danger:!0,onConfirm:async()=>{try{await ae("DeleteWorklogEntry",p.id),await pi(p.nodeId)}catch(z){t(34,B=String(z))}}})}async function ys(){t(60,de=await ae("GetSuggestions")||[]),t(61,Ae=de.length),Y&&t(50,Me=Ui(await ae("ListWorklog",Y.id))),q==="journal"&&await il()}async function sl(){t(7,qt=await ae("ListTrash")||{nodes:[],entries:[],trashPath:"",count:0}),t(75,Xn=qt.count||0);const p=qt.nodes||[];t(76,It=It.filter(z=>p.some(se=>se.id===z))),Wt&&!p.some(z=>z.id===Wt)?li():gt.length>0&&(t(265,gt=gt.filter(z=>p.some(se=>se.id===z.id))),t(8,Wt=gt.length>0?gt[gt.length-1].id:""))}async function gi(){try{t(75,Xn=await ae("TrashCount")||0)}catch{t(75,Xn=0)}}function Jp(){return Wt&&(((qt==null?void 0:qt.nodes)||[]).find(p=>p.id===Wt)||gt[gt.length-1])||null}function Nl(p){Un(),t(8,Wt=p.id);const z=gt.findIndex(se=>se.id===p.id);z>=0?t(265,gt=gt.slice(0,z+1)):t(265,gt=[...gt,{id:p.id,title:p.title}]),t(76,It=[])}function Qp(){if(gt.length===0)return;Un();const p=gt.slice(0,-1);t(265,gt=p),t(8,Wt=p.length>0?p[p.length-1].id:""),t(76,It=[])}async function Zl(p){t(100,dn={name:p.title,type:"file",mime:"text/plain",size:0,fileId:p.id}),t(101,nn=""),t(103,An=""),t(102,Dn=!0);try{p.trashFsPath?t(101,nn=await ae("ReadTrashFile",p.trashFsPath)||""):t(101,nn=await ae("ReadTrashFileContent",p.id)||"");const z=(p.title||"").split(".").pop().toLowerCase();["png","jpg","jpeg","gif","webp","bmp","svg"].includes(z)&&t(101,nn="data:image/"+(z==="svg"?"svg+xml":z)+";base64,"+btoa(nn))}catch(z){t(103,An=String(z))}t(102,Dn=!1)}function Go(p){t(76,It=It.includes(p)?It.filter(z=>z!==p):[...It,p])}function hi(p){return It.length>0?It:[p]}async function _i(p){try{await ae("RestoreTrashNodesJSON",JSON.stringify(p)),await nl(),await sl()}catch(z){t(34,B=String(z))}}async function bi(p){mn({title:b("delete.confirmTitle"),message:b("delete.confirmMessage")+" "+p.length+"?",confirmText:b("common.delete"),danger:!0,onConfirm:async()=>{try{await ae("PurgeTrashNodesJSON",JSON.stringify(p)),await sl()}catch(z){t(34,B=String(z))}}})}async function xp(){mn({title:b("delete.confirmTitle"),message:b("trash.empty")+"?",confirmText:b("common.delete"),danger:!0,onConfirm:async()=>{try{await ae("EmptyTrash"),await sl()}catch(p){t(34,B=String(p))}}})}function Es(p){t(59,ge=p),t(58,x=null),t(52,Pe=p.summary||""),t(53,He=String(p.suggestedMin||"")),t(54,De=""),t(55,ze=""),t(56,ue=!1),t(57,ye=!0),t(51,Re=!0)}async function Ts(p){try{await ae("DismissSuggestion",p.nodeId,JSON.stringify(Ds(p))),await ys()}catch(z){t(34,B=String(z))}}async function $p(){t(65,vt=!0);try{const p=await ae("ListBrowserEvents","pending",50,0);t(64,Ye=p||[])}catch(p){console.warn("[browser] load error:",p)}finally{t(65,vt=!1)}}async function em(p){await ae("AcceptBrowserEvent",p.id,""),t(64,Ye=Ye.filter(z=>z.id!==p.id))}async function tm(p){await ae("DismissBrowserEvent",p.id),t(64,Ye=Ye.filter(z=>z.id!==p.id))}async function nm(p){Y&&Y.id?(await ae("AttachBrowserEventToNode",p.id,Y.id),t(64,Ye=Ye.filter(z=>z.id!==p.id))):(await ae("DismissBrowserEvent",p.id),t(64,Ye=Ye.filter(z=>z.id!==p.id)))}async function vi(p){try{const z=Ds(p),se=JSON.stringify(z);Ps("acceptTodaySuggestion: nodeId="+p.nodeId+" eventIds="+se+" events="+JSON.stringify((p.events||[]).map(me=>({id:me.id,type:me.eventType,title:me.title})))),await ae("AcceptSuggestionWith",p.nodeId,p.summary,p.suggestedMin,"",se),await ys()}catch(z){Ps("acceptTodaySuggestion error: "+z)}}async function Ko(p){try{const z=Ds(p),se=JSON.stringify(z);Ps("acceptJournalSuggestion: nodeId="+p.nodeId+" eventIds="+se+" events="+JSON.stringify((p.events||[]).map(me=>({id:me.id,type:me.eventType,title:me.title})))),await ae("AcceptSuggestionWith",p.nodeId,p.summary,p.suggestedMin,"",se),await ys()}catch(z){Ps("acceptJournalSuggestion error: "+z)}}async function il(){try{const[p,z,se]=await Promise.all([ae("ListWorklogReport",I,M,O,R,L,H),ae("WorklogReportSummary",I,M,O,R,L,H),ae("GetSuggestions")]);if(t(18,A=(p||[]).map(me=>(me._expanded===void 0&&(me._expanded=!1),me))),t(19,N=z||null),t(60,de=se||[]),t(61,Ae=de.length),O&&!W)if(p&&p.length>0&&p[0].nodePath)t(26,W=p[0].nodePath);else try{t(26,W=await ae("GetNodeTitle",O))}catch{t(26,W="")}}catch{t(18,A=[]),t(19,N=null),t(60,de=[]),t(61,Ae=0)}}async function Ss(p){try{const z=await ae("SaveWorklogReport",p,I,M,O,R,L,H);t(27,U=z),setTimeout(()=>t(27,U=""),4e3)}catch(z){if(String(z).includes("отменено"))return;t(27,U="Ошибка: "+String(z)),setTimeout(()=>t(27,U=""),6e3)}}let Vo;async function ki(p){if(p._expanded=!p._expanded,t(18,A),p._expanded&&!p._events&&p._hasEvents===void 0)try{p._events=await ae("GetWorklogEntryEvents",p.id)||[],p._hasEvents=p._events.length>0,t(18,A)}catch{p._events=[],p._hasEvents=!1,t(18,A)}}async function wi(p){if(p._expanded=!p._expanded,p._expanded&&p.source==="suggestion"&&!p._events&&p._hasEvents===void 0)try{p._events=await ae("GetWorklogEntryEvents",p.id)||[],p._hasEvents=p._events.length>0}catch(z){z._events=[],z._hasEvents=!1}t(50,Me)}async function lm(){const p=Z.trim();if(!p||p.length<2){t(30,X=[]),t(31,G=!1);return}try{t(30,X=await ae("SearchNodes",p)||[]),t(31,G=X.length>0)}catch{t(30,X=[]),t(31,G=!1)}}function sm(){clearTimeout(Vo),Vo=setTimeout(lm,200)}function qo(p){t(23,O=p.id),t(26,W=p.path||p.title),t(22,R=!0),t(29,Z=""),t(30,X=[]),t(31,G=!1),il()}function Zo(){t(23,O=""),t(22,R=!1),t(26,W=""),t(29,Z=""),t(30,X=[]),t(31,G=!1),il()}function im(){t(20,I=""),t(21,M=""),t(23,O=""),t(22,R=!1),t(24,L="all"),t(25,H="all"),t(26,W=""),t(29,Z=""),t(30,X=[]),t(31,G=!1),il()}async function Yo(){const p=await ae("PickFile");if(!p)return;const z=mt||Y.id;await Xo(z,p)}async function om(){const p=await ae("PickDirectory");if(!p)return;const z=mt||Y.id;await Xo(z,p)}async function Xo(p,z){t(92,Kl=!0);try{const se=await ae("PreviewImport",z);t(93,Tl=se),Sl=z,xn=p,t(94,Ln=!0)}catch(se){t(34,B=String(se))}t(92,Kl=!1)}async function yi(p){try{const z=xn||Y.id,se=p==="copy"?await ae("AddPathCopy",z,Sl):await ae("AddPathLink",z,Sl);t(94,Ln=!1),t(93,Tl=null),t(98,kt=[]),t(97,mt=null),await Promise.all([vs(z),yt(z),ai(z)])}catch(z){t(34,B=String(z))}}function Jo(){t(94,Ln=!1),t(93,Tl=null)}async function Qo({id:p,type:z}){const se=b(z==="folder"?"delete.folder":"delete.file");mn({title:b("delete.confirmTitle"),message:b("delete.confirmMessage")+" "+se+"?",confirmText:b("common.delete"),danger:!0,onConfirm:async()=>{try{await ae("DeleteFileOrFolder",p),be=be.filter(Be=>Be.nodeId!==p);const me=mt||Y.id;await yt(me)}catch(me){t(34,B=String(me))}}})}async function rm(p){try{if(!p||p.length===0)return;await vm(p,"drop")}finally{Ot()}}function am(p){return{note_created:b("event.noteCreated"),note_updated:b("event.noteUpdated"),note_deleted:b("event.noteDeleted"),file_added:b("event.fileAdded"),file_deleted:b("event.fileDeleted"),file_renamed:b("event.fileRenamed"),file_copied:b("event.fileCopied"),file_moved:b("event.fileMoved"),folder_added:b("event.folderAdded"),folder_deleted:b("event.folderDeleted"),folder_renamed:b("event.folderRenamed"),folder_moved:b("event.folderMoved"),node_created:b("event.caseCreated"),node_updated:b("event.caseUpdated"),node_deleted:b("event.nodeDeleted"),action_created:b("event.actionCreated"),action_done:b("event.actionDone"),worklog_added:b("event.worklogAdded")}[p]||p}function Ei(p){return{project:b("kind.project"),client:b("kind.client"),document:b("kind.document"),recipe:b("kind.recipe"),folder:b("kind.folder"),note:b("kind.note"),file:b("kind.file"),archive:b("kind.archive"),case:b("kind.case"),link:b("kind.link")}[p]||p||b("kind.case")}function cm(p){return p==="action"?b("kind.action"):Ei(p)}function um(p){return p?b("capture.kind."+p):""}function fm(p){return p?b("capture.source."+p):""}function dm(p){const z=[];return p.captureKind&&z.push(um(p.captureKind)),p.captureSource&&z.push(fm(p.captureSource)),p.captureContextLabel&&z.push(`${b("inbox.capturedIn")}: ${p.captureContextLabel}`),p.suggestedTargetLabel&&z.push(`${b("inbox.suggestedTarget")}: ${p.suggestedTargetLabel}`),z.push(on(p.capturedAt||p.createdAt)),z.filter(Boolean).join(" · ")}function pm(p){!p||!p.id||(t(3,Ke=[p,...Ke.filter(z=>z.id!==p.id)]),Y&&(p.captureContextNodeId===Y.id||p.suggestedTargetNodeId===Y.id)&&t(66,Ge=[p,...Ge.filter(z=>z.id!==p.id)]))}function mm(){return Y&&Y.id?{contextType:"node",nodeId:Y.id,suggestedTargetNodeId:Y.id}:q?{contextType:"section",section:q}:{contextType:"global",section:"root"}}function ol(){return JSON.stringify(mm())}function gm(){return Y&&Y.id?b("capture.dropOverlayNode",{title:Y.title}):b("capture.dropOverlayGlobal")}async function Rl(p=null){p&&pm(p),q==="inbox"&&t(3,Ke=await ae("ListInboxNodes")||Ke)}async function hm(p,z){const se=String(p||"").trim();if(!se)return null;const me=Hi(se),Be=me?await ae("CaptureURLWithContext",me,"",z,ol()):await ae("CaptureTextWithContext",se,z,ol());return await Rl(Be),Be}async function xo(p,z,se){const me=String(p||"").trim();if(!me)return null;const Be=await ae("CaptureURLWithContext",me,z||"",se,ol());return await Rl(Be),Be}async function _m(p,z){if(!p)return null;const se=p.path||p.webkitRelativePath||"";if(se){const bt=await ae("CapturePathWithContext",se,z,ol());return await Rl(bt),bt}const me=await d5(p),Be=await ae("CaptureFileDataWithContext",p.name||`clipboard.${f5(p.type)}`,me,z,ol());return await Rl(Be),Be}async function Ti(p,z){var al,En,wr;if(!p)return!1;let se=!1;const me=Array.from(p.files||[]);for(const cl of me)await _m(cl,z),se=!0;const Be=(al=p.getData)==null?void 0:al.call(p,"text/x-moz-url");if(Be){const cl=p5(Be),Xl=cl?Hi(cl.url):"";if(Xl)return await xo(Xl,cl.title,z),!0}const bt=(En=p.getData)==null?void 0:En.call(p,"text/uri-list");if(bt){const cl=m5(bt),Xl=Hi(cl);if(Xl)return await xo(Xl,"",z),!0}const Wn=(wr=p.getData)==null?void 0:wr.call(p,"text/plain");return String(Wn||"").trim()&&(await hm(Wn,z),se=!0),se}async function bm(){if(!st){t(68,fe=""),t(67,st=!0);try{const p=await ae("CaptureClipboardTextWithContext",ol());await Rl(p),t(68,fe=b("inbox.captured"))}catch(p){t(34,B=String(p).includes("clipboard is empty")?b("inbox.clipboardEmpty"):b("inbox.clipboardUnavailable"))}finally{t(67,st=!1)}}}async function vm(p,z="drop"){if(!st){t(67,st=!0),t(68,fe="");try{for(const se of p){const me=await ae("CapturePathWithContext",se,z,ol());await Rl(me)}t(68,fe=b("inbox.captured"))}catch(se){t(34,B=String(se))}finally{t(67,st=!1),t(107,zn=!1)}}}async function $o(p){if(!(d||m)&&!js(p.target)&&p.clipboardData)try{await Ti(p.clipboardData,"paste")&&(p.preventDefault(),t(68,fe=b("inbox.captured")))}catch(z){t(34,B=String(z))}}function er(p){if(Pn.length>0)return!1;const z=Array.from((p==null?void 0:p.types)||[]);return z.includes("Files")||z.includes("text/uri-list")||z.includes("text/x-moz-url")||z.includes("text/plain")&&!z.includes("application/x-verstak-node")}function tr(){le&&(clearTimeout(le),le=null)}function Ot(){ke=0,t(108,pn=!1),t(109,$n=""),V=0,t(107,zn=!1),tr()}function nr(){le||(le=setTimeout(()=>{le=null,pn&&Date.now()-V>2e3?Ot():pn&&nr()},2500))}function lr(p){return er(p)?(t(109,$n=gm()),t(108,pn=!0),V=Date.now(),nr(),!0):!1}function sr(p){lr(p.dataTransfer)&&(ke+=1)}function ir(p){lr(p.dataTransfer)&&(p.preventDefault(),p.dataTransfer.dropEffect="copy")}function or(p){ke>0&&(ke-=1),(p.clientX<=0||p.clientY<=0||p.clientX>=window.innerWidth||p.clientY>=window.innerHeight||ke<=0)&&Ot()}function rr(){document.hidden&&Ot()}async function ar(p){if(er(p.dataTransfer)){p.preventDefault();try{await Ti(p.dataTransfer,"drop")&&t(68,fe=b("inbox.captured"))}catch(z){t(34,B=String(z))}finally{Ot()}}}function km(p){p.preventDefault(),p.dataTransfer.dropEffect="copy",t(107,zn=!0)}function wm(){t(107,zn=!1)}async function ym(p){p.preventDefault(),p.stopPropagation();try{await Ti(p.dataTransfer,"drop")&&t(68,fe=b("inbox.captured"))}catch(z){t(34,B=String(z))}finally{Ot()}}function Cs(p){t(118,Nn=p),t(119,Fn=""),t(120,el=[]),t(121,jn=null)}function Si(){t(118,Nn=null),t(119,Fn=""),t(120,el=[]),t(121,jn=null),t(122,gs=!1)}async function Em(){const p=Fn.trim();if(!p||p.length<2){t(120,el=[]);return}t(122,gs=!0);try{const z=await ae("SearchNodes",p)||[];t(120,el=z.filter(se=>g5(se)&&se.id!==(Nn==null?void 0:Nn.id)))}catch{t(120,el=[])}finally{t(122,gs=!1)}}function Tm(p){t(119,Fn=p.target.value),t(121,jn=null),clearTimeout(mo),mo=setTimeout(Em,200)}function cr(p){t(121,jn=p),t(119,Fn=p.path||p.title),t(120,el=[])}async function ur(){if(!(!Nn||!jn))try{await fr(Nn,jn.id),Si()}catch(p){t(34,B=String(p))}}async function fr(p,z){!p||!z||(await ae("ResolveInboxNode",p.id,z),t(3,Ke=Ke.filter(se=>se.id!==p.id)),t(66,Ge=Ge.filter(se=>se.id!==p.id)),await nl(),Y&&await vs(Y.id))}async function As(p){const z=(p==null?void 0:p.suggestedTargetNodeId)||(Y==null?void 0:Y.id)||"";if(z)try{await fr(p,z)}catch(se){t(34,B=String(se))}}function Ns(p){mn({title:b("inbox.deleteTitle"),message:b("inbox.deleteConfirm",{title:p.title}),confirmText:b("common.delete"),danger:!0,onConfirm:async()=>{try{await ae("DeleteInboxNode",p.id),t(3,Ke=Ke.filter(z=>z.id!==p.id)),t(66,Ge=Ge.filter(z=>z.id!==p.id))}catch(z){t(34,B=String(z))}}})}function dr(p){t(70,Ht=p),t(71,ct=p.title||""),t(72,Dt=p.url||""),t(73,bn=p.note||""),t(74,vn="")}function Ci(){t(70,Ht=null),t(71,ct=""),t(72,Dt=""),t(73,bn=""),t(74,vn="")}async function Sm(){if(!(!Ht||!Dt.trim()))try{const p=await ae("UpdateLink",Ht.id,ct.trim(),Dt.trim(),bn);t(69,Mt=Mt.map(z=>z.id===p.id?p:z)),Ci()}catch(p){t(74,vn=String(p))}}async function pr(p){mn({title:b("links.deleteTitle"),message:b("links.deleteConfirm",{title:p.title}),confirmText:b("common.delete"),danger:!0,onConfirm:async()=>{try{await ae("DeleteLink",p.id),t(69,Mt=Mt.filter(z=>z.id!==p.id))}catch(z){t(34,B=String(z))}}})}async function mr(p){try{await ae("OpenLink",p.id)}catch(z){t(34,B=String(z))}}async function gr(p){var z,se;try{await((se=(z=navigator.clipboard)==null?void 0:z.writeText)==null?void 0:se.call(z,p.url)),t(74,vn=b("links.copied"))}catch{t(74,vn=b("links.copyUnavailable"))}}function Cm(){t(87,Jn=!0),t(88,yn=""),t(89,Qn="open_url"),t(90,Pt="")}function hr(){t(87,Jn=!1),t(88,yn=""),t(90,Pt="")}async function Ai(){if(!(!yn.trim()||!Pt.trim()||!Y))try{const p=await ae("CreateAction",Y.id,Qn,yn.trim(),Pt.trim());p&&p.id&&t(49,lt=[...lt,p]),t(87,Jn=!1),t(88,yn=""),t(90,Pt="")}catch(p){t(34,B=String(p))}}async function _r(p){try{await ae("DeleteAction",p),t(49,lt=lt.filter(z=>z.id!==p))}catch(z){t(34,B=String(z))}}function Am(p){const z=El.find(se=>se.id===p);return z?z.label:p}async function Yl(p){try{const z=await ae("GetNodeDetail",p);z&&Jt(z)}catch(z){t(34,B=String(z))}}async function rl(p){const z=h5(p),se=z.nodeId;if(se)try{const me=await ae("GetNodeDetail",se);if(!me)return;if(Jt(me),z.tab==="notes"){if(cn("notes"),z.targetId){try{t(36,ne=await ae("ListNotes",se)||[])}catch{}const Be=ne.find(bt=>bt.id===z.targetId);Be&&setTimeout(()=>ll(Be),100)}}else if(z.tab==="files")if(cn("files"),z.targetId)try{const Be=await ae("GetNodeDetail",z.targetId);if(Be&&Be.parent_id){await yt(Be.parent_id);const bt=rt.find(Wn=>Wn.id===z.targetId);bt&&bt.type==="file"&&Mi(bt)&&setTimeout(()=>Al(bt),150)}else await yt(se)}catch{await yt(se)}else await yt(se)}catch(me){t(34,B=String(me))}}async function Il(p){return rl(p)}async function Nm(p){if(!(!p||!p.nodeId))try{if(p.type==="link"){const se=await ae("GetNodeDetail",p.nodeId);se&&(await Jt(se),cn("links"));return}if(p.type==="action"){const se=await ae("GetNodeDetail",p.nodeId);se&&(await Jt(se),cn("actions"));return}const z=await ae("GetNodeDetail",p.nodeId);if(!z)return;if(p.type==="note"){const se=z.parent_id||z.parentId||"",me=se?await ae("GetNodeDetail",se):null;if(me){await Jt(me),cn("notes"),t(36,ne=await ae("ListNotes",me.id)||[]);const Be=ne.find(bt=>bt.id===z.id);Be&&await ll(Be)}return}if(p.type==="file"){const se=z.parent_id||z.parentId||"",me=se?await ae("GetNodeDetail",se):null;if(me){await Jt(me),cn("files"),await yt(me.id);const Be=rt.find(bt=>bt.id===z.id);Be&&Mi(Be)&&await Al(Be)}return}if(p.type==="folder"){await Jt(z),cn("files"),await yt(z.id);return}await Jt(z)}catch(z){t(34,B=String(z))}}async function Ni(){try{t(123,ei=await ae("SyncStatus"))}catch{t(123,ei={configured:!1,serverUrl:"",deviceId:"",unpushedOps:0,lastSyncAt:"",syncInterval:0})}}let br="general";function Ri(p){t(127,br=p||"general"),t(13,g=!0)}function vr(){t(13,g=!1)}async function Rm(){try{t(0,h=await ae("ListSystemViewsWithPlugins")||[])}catch{}}function Im(p){const z=Array.isArray(p==null?void 0:p.conflicts)?p.conflicts:[],se=Array.isArray(p==null?void 0:p.applyErrors)?p.applyErrors:[],me=[];return z.length>0&&me.push(b("sync.conflictsCount",{count:z.length})),se.length>0&&me.push(b("sync.applyErrorsCount",{count:se.length})),me.join(" · ")}async function Mm(){t(124,ti=!0),t(125,ql=""),t(126,hs="");try{const p=await ae("SyncNow");await Ni(),t(125,ql=Im(p)),t(126,hs=ql?"warning":"")}catch(p){console.error("sync error:",p),t(125,ql=`${b("sync.status.error")}: ${(p==null?void 0:p.message)||p}`),t(126,hs="warning")}finally{t(124,ti=!1)}}function Lm(p){t(11,d=!1),t(10,c=p),t(91,Yt=!1),window.location.reload()}function Om(p){t(12,m=!1),t(10,c=p),t(91,Yt=!1),window.location.reload()}function Dm(p){xi.call(this,n,p)}const Pm=p=>p.nodeId===Y.id,zm=p=>bs(p.id),Bm=()=>Ri("sync"),Fm=()=>Ri(),jm=()=>_i(It),Um=()=>bi(It),Hm=()=>ae("OpenTrashFolder"),Wm=()=>t(34,B=""),Gm=()=>t(34,B=""),Km=()=>t(34,B="");function Vm(){Ue=this.value,t(48,Ue)}const qm=p=>{p.key==="Enter"&&di(),p.key==="Escape"&&Hn()},Zm=()=>fi(te.id,te.title),Ym=p=>cn(p.id),Xm=()=>{cn("notes"),Po()},Jm=()=>{cn("files"),Yo()},Qm=()=>cn("worklog"),xm=p=>ll(p),$m=p=>ll(p);function eg(){tn=this.value,t(86,tn)}const tg=p=>p.key==="Enter"&&Bo(),ng=p=>fi(p.id,p.title),lg=p=>jo(p),sg=p=>ll(p),ig=p=>ll(p),og=p=>{const z=p.detail;z===0?(t(98,kt=[]),t(97,mt=null),yt(Y.id)):_o(z-1)},rg=p=>si(p.detail),ag=p=>Al(p.detail),cg=p=>ae("OpenFile",p.detail),ug=p=>ae("OpenFolder",p.detail),fg=p=>Qo(p.detail),dg=p=>vo(p.detail.id),pg=p=>bo(p.detail),mg=p=>ko(p.detail),gg=p=>wo(p.detail),hg=p=>To(p.detail),_g=p=>Eo(p.detail),bg=p=>So(p.detail),vg=p=>As(p),kg=p=>Cs(p),wg=p=>gn(p),yg=p=>Rn(p),Eg=p=>Ns(p),Tg=p=>gn(p),Sg=(p,z)=>z.key==="Enter"&&gn(p),Cg=p=>mr(p),Ag=p=>gr(p),Ng=p=>dr(p),Rg=p=>pr(p),Ig=p=>ae("RunAction",p.id),Mg=p=>_r(p.id),Lg=()=>ws(),Og=p=>p.nodeId===Y.id,Dg=p=>Es(p),Pg=p=>vi(p),zg=p=>Ts(p),Bg=(p,z,se)=>t(60,z[se]._expanded=!p._expanded,de,t(2,Y)),Fg=(p,z,se,me)=>me.key==="Enter"&&t(60,z[se]._expanded=!p._expanded,de,t(2,Y)),jg=p=>rl(p),Ug=p=>Rn(p.nodeId),Hg=p=>ws(p),Wg=p=>mi(p),Gg=p=>rl(p),Kg=p=>Rn(p.nodeId),Vg=p=>wi(p),qg=(p,z)=>z.key==="Enter"&&wi(p),Zg=p=>Il(p),Yg=(p,z)=>z.key==="Enter"&&Il(p),Xg=()=>{t(4,Le="date"),t(5,At=Le==="date"&&At==="desc"?"asc":"desc")},Jg=()=>{t(4,Le="name"),t(5,At=Le==="name"&&At==="desc"?"asc":"desc")},Qg=()=>{t(4,Le="type"),t(5,At=Le==="type"&&At==="desc"?"asc":"desc")};function xg(){en=this.checked,t(6,en)}const $g=p=>As(p),e1=p=>Cs(p),t1=p=>gn(p),n1=p=>Rn(p),l1=p=>Ns(p),s1=p=>gn(p),i1=(p,z)=>z.key==="Enter"&&gn(p),o1=p=>As(p),r1=p=>Cs(p),a1=p=>gn(p),c1=p=>Rn(p),u1=p=>Ns(p),f1=p=>gn(p),d1=(p,z)=>z.key==="Enter"&&gn(p),p1=p=>Go(p.id),m1=p=>p.type!=="file"?Nl(p):Zl(p),g1=(p,z)=>z.key==="Enter"&&(p.type!=="file"?Nl(p):Zl(p)),h1=p=>p.type!=="file"?Nl(p):Zl(p),_1=(p,z)=>z.key==="Enter"&&(p.type!=="file"?Nl(p):Zl(p)),b1=p=>_i(hi(p.id)),v1=p=>bi(hi(p.id)),k1=()=>t(28,K="suggestions"),w1=()=>t(28,K="worklog"),y1=p=>Yl(p.nodeId),E1=(p,z,se,me)=>t(60,z[se].suggestedMin=parseInt(me.target.value),de),T1=p=>Es(p),S1=p=>Ko(p),C1=p=>Ts(p),A1=(p,z,se)=>t(60,z[se]._expanded=!p._expanded,de),N1=(p,z,se,me)=>me.key==="Enter"&&t(60,z[se]._expanded=!p._expanded,de),R1=p=>rl(p),I1=p=>Rn(p.nodeId),M1=()=>Ss("csv"),L1=()=>Ss("markdown"),O1=()=>Ss("pdf");function D1(){I=this.value,t(20,I)}function P1(){M=this.value,t(21,M)}const z1=()=>{t(29,Z=""),t(26,W=""),Zo()};function B1(){Z=this.value,t(29,Z)}const F1=()=>setTimeout(()=>t(31,G=!1),200),j1=p=>qo(p);function U1(){R=this.checked,t(22,R)}function H1(){L=Bs(this),t(24,L)}function W1(){H=Bs(this),t(25,H)}const G1=p=>Yl(p.nodeId),K1=p=>ki(p),V1=(p,z)=>z.key==="Enter"&&ki(p),q1=p=>ws(p),Z1=p=>mi(p),Y1=p=>rl(p),X1=p=>Yl(p),J1=p=>Il(p),Q1=p=>rl(p),x1=p=>Es(p),$1=p=>vi(p),eh=p=>Ts(p),th=p=>Rn(p),nh=p=>gn(p),lh=p=>{bs("trash"),Nl({id:p,title:""}),sl()},sh=p=>Il(p),ih=(p,z)=>z.key==="Enter"&&Il(p),oh=()=>t(83,Zt=null),rh=p=>t(83,Zt=p);function ah(){fn=this.value,t(81,fn)}const ch=p=>p.key==="Enter"&&Mo(),uh=p=>Ro(p),fh=()=>Do(rn.node),dh=()=>Lo(rn.node),ph=()=>Oo(rn.node),mh=()=>Rn(rn.node);function gh(){De=this.value,t(54,De)}function hh(){Pe=this.value,t(52,Pe)}function _h(){He=Hl(this.value),t(53,He)}function bh(){ze=this.value,t(55,ze)}function vh(){ue=this.checked,t(56,ue)}function kh(){ye=this.checked,t(57,ye)}function wh(){yn=this.value,t(88,yn)}const yh=p=>p.key==="Enter"&&Ai();function Eh(){Qn=Bs(this),t(89,Qn),t(132,El)}function Th(){Pt=this.value,t(90,Pt)}const Sh=p=>p.key==="Enter"&&Ai(),Ch=()=>yi("copy"),Ah=()=>yi("link");function Nh(){Tt=this.value,t(116,Tt)}function Rh(){Fn=this.value,t(119,Fn)}const Ih=p=>p.key==="Enter"&&jn&&ur(),Mh=p=>cr(p);function Lh(){ct=this.value,t(71,ct)}function Oh(){Dt=this.value,t(72,Dt)}function Dh(){bn=this.value,t(73,bn)}const Ph=p=>ae("OpenFile",p.detail);function zh(){Fe=this.value,t(40,Fe)}const Bh=p=>{p.key==="Enter"&&ci(),p.key==="Escape"&&t(39,Te=!1)};function Fh(){qe=this.value,t(41,qe)}const jh=p=>{p.key==="Enter"&&ci(),p.key==="Escape"&&t(39,Te=!1)},Uh=()=>t(39,Te=!1),Hh=()=>t(39,Te=!1),Wh=p=>p.key==="Escape"&&t(39,Te=!1);function Gh(){ee=this.value,t(43,ee)}const Kh=p=>p.key==="Enter"&&ui();function Vh(){oe=this.value,t(44,oe)}const qh=p=>p.key==="Enter"&&ui(),Zh=p=>p.key==="Escape"&&Ho();function Yh(){Ue=this.value,t(48,Ue)}const Xh=p=>{p.key==="Enter"&&di(),p.key==="Escape"&&Hn()},Jh=p=>p.key==="Escape"&&Hn();return n.$$.update=()=>{var p;n.$$.dirty[0]&384&&t(77,ps=u5((qt==null?void 0:qt.nodes)||[],Wt)),n.$$.dirty[0]&7&&t(130,l=Y?Y.title:q?((p=h.find(z=>z.id===q))==null?void 0:p.label)||"":b("nav.selectPrompt")),n.$$.dirty[0]&4&&t(129,s=Y?Ei(Y.type):""),n.$$.dirty[0]&56&&t(9,o=r5(Ke,Le,At)),n.$$.dirty[0]&576&&t(128,i=en?pp(o):null),n.$$.dirty[8]&131072&&t(78,Mn=gt.length===0?b("nav.trash"):[b("nav.trash"),...gt.map(z=>z.title)].join(" / "))},t(79,ms=((kr=Jp())==null?void 0:kr.title)||b("trash.deletedNodes")),[h,q,Y,Ke,Le,At,en,qt,Wt,o,c,d,m,g,_,v,k,y,A,N,I,M,R,O,L,H,W,U,K,Z,X,G,P,j,B,$,ne,te,pe,Te,Fe,qe,Ne,ee,oe,Ce,je,_e,Ue,lt,Me,Re,Pe,He,De,ze,ue,ye,x,ge,de,Ae,it,ot,Ye,vt,Ge,st,fe,Mt,Ht,ct,Dt,bn,vn,Xn,It,ps,Mn,ms,Gt,fn,kn,Zt,rn,wn,tn,Jn,yn,Qn,Pt,Yt,Kl,Tl,Ln,Xt,On,mt,kt,rt,dn,nn,Dn,An,an,xe,Vl,zn,pn,$n,ve,Oe,Ve,$e,Nt,Lt,Tt,Cl,Nn,Fn,el,jn,gs,ei,ti,ql,hs,br,i,s,l,J,El,dp,cn,bs,Jt,yt,si,hp,_o,Al,ks,_p,bo,vo,ko,wo,yo,Eo,To,So,Ep,Tp,Sp,No,Np,Rp,Ip,Mp,Ro,Lp,Io,Mo,Op,tl,Dp,Pp,zp,Bp,Fp,Lo,Oo,Rn,gn,Do,Po,zo,Bo,ll,jo,Uo,jp,ci,ui,Ho,fi,Hn,di,Wp,Kp,Vp,qp,Zp,ws,Wo,Xp,mi,sl,Nl,Qp,Zl,Go,hi,_i,bi,xp,Es,Ts,$p,em,tm,nm,vi,Ko,il,Ss,ki,wi,sm,qo,Zo,im,Yo,om,yi,Jo,Qo,am,Ei,cm,dm,bm,km,wm,ym,Cs,Si,Tm,cr,ur,As,Ns,dr,Ci,Sm,pr,mr,gr,Cm,hr,Ai,_r,Am,Yl,rl,Il,Nm,Ni,Ri,vr,Rm,Mm,Lm,Om,gt,Dm,Pm,zm,Bm,Fm,jm,Um,Hm,Wm,Gm,Km,Vm,qm,Zm,Ym,Xm,Jm,Qm,xm,$m,eg,tg,ng,lg,sg,ig,og,rg,ag,cg,ug,fg,dg,pg,mg,gg,hg,_g,bg,vg,kg,wg,yg,Eg,Tg,Sg,Cg,Ag,Ng,Rg,Ig,Mg,Lg,Og,Dg,Pg,zg,Bg,Fg,jg,Ug,Hg,Wg,Gg,Kg,Vg,qg,Zg,Yg,Xg,Jg,Qg,xg,$g,e1,t1,n1,l1,s1,i1,o1,r1,a1,c1,u1,f1,d1,p1,m1,g1,h1,_1,b1,v1,k1,w1,y1,E1,T1,S1,C1,A1,N1,R1,I1,M1,L1,O1,D1,P1,z1,B1,F1,j1,U1,H1,W1,G1,K1,V1,q1,Z1,Y1,X1,J1,Q1,x1,$1,eh,th,nh,lh,sh,ih,oh,rh,ah,ch,uh,fh,dh,ph,mh,gh,hh,_h,bh,vh,kh,wh,yh,Eh,Th,Sh,Ch,Ah,Nh,Rh,Ih,Mh,Lh,Oh,Dh,Ph,zh,Bh,Fh,jh,Uh,Hh,Wh,Gh,Kh,Vh,qh,Zh,Yh,Xh,Jh]}class b5 extends dt{constructor(e){super(),ft(this,e,_5,o5,ut,{},null,[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1])}}new b5({target:document.getElementById("app")}); diff --git a/cmd/verstak-gui/frontend-dist/assets/main-B1PBee3I.css b/cmd/verstak-gui/frontend-dist/assets/main-B1PBee3I.css deleted file mode 100644 index 0f1392c..0000000 --- a/cmd/verstak-gui/frontend-dist/assets/main-B1PBee3I.css +++ /dev/null @@ -1 +0,0 @@ -.file-row.svelte-1skuef2.svelte-1skuef2{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:default;transition:background .12s;min-height:52px;-webkit-user-select:none;user-select:none;position:relative}.file-row.svelte-1skuef2.svelte-1skuef2:hover{background:#1e1e30}.file-row--selected.svelte-1skuef2.svelte-1skuef2{background:#1e1e3a;outline:1px solid #3a3a6c}.file-row--selected.svelte-1skuef2.svelte-1skuef2:hover{background:#252545}.file-row.svelte-1skuef2.svelte-1skuef2:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-1skuef2.svelte-1skuef2{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-1skuef2.svelte-1skuef2{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-1skuef2.svelte-1skuef2{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-1skuef2.svelte-1skuef2{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-1skuef2.svelte-1skuef2{color:#444}.file-row-actions.svelte-1skuef2.svelte-1skuef2{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-1skuef2:hover .file-row-actions.svelte-1skuef2{opacity:1}.action-btn.svelte-1skuef2.svelte-1skuef2{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1skuef2.svelte-1skuef2:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-1skuef2.svelte-1skuef2:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-1skuef2.svelte-1skuef2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-backdrop.svelte-1skuef2.svelte-1skuef2{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.menu.svelte-1skuef2.svelte-1skuef2{position:fixed;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:4px;z-index:100;min-width:220px;box-shadow:0 4px 16px #00000080}.menu-item.svelte-1skuef2.svelte-1skuef2{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;background:transparent;color:#ccc;font-size:12px;text-align:left;cursor:pointer;border-radius:4px;font-family:inherit}.menu-item.svelte-1skuef2.svelte-1skuef2:hover{background:#2a2a3c;color:#fff}.menu-item-danger.svelte-1skuef2.svelte-1skuef2{color:#ff6b6b}.menu-item-danger.svelte-1skuef2.svelte-1skuef2:hover{background:#3a2222}.menu-item.svelte-1skuef2.svelte-1skuef2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-sep.svelte-1skuef2.svelte-1skuef2{height:1px;background:#2a2a3c;margin:4px 8px}.breadcrumbs.svelte-csi2lb{display:flex;align-items:center;gap:4px;padding:8px 0;font-size:13px;color:#999}.sep.svelte-csi2lb{color:#444}.crumb.svelte-csi2lb{font-size:13px}.crumb--current.svelte-csi2lb{color:#ccc}.crumb--link.svelte-csi2lb{background:none;border:none;padding:2px 4px;color:#888;cursor:pointer;border-radius:3px;font-family:inherit;font-size:13px;transition:color .12s,background .12s}.crumb--link.svelte-csi2lb:hover{color:#ccc;background:#1e1e30}.crumb--link.svelte-csi2lb:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.overlay.svelte-1cw3u0m{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-1cw3u0m{background:#14141f;border:1px solid #2a2a3c;border-radius:10px;width:90vw;max-width:900px;height:85vh;max-height:700px;display:flex;flex-direction:column;overflow:hidden}.preview-header.svelte-1cw3u0m{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.preview-title.svelte-1cw3u0m{display:flex;align-items:center;gap:8px;color:#ddd;font-size:14px;min-width:0}.preview-name.svelte-1cw3u0m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-meta.svelte-1cw3u0m{font-size:11px;color:#666;margin-left:auto;white-space:nowrap}.preview-actions.svelte-1cw3u0m{display:flex;gap:4px;flex-shrink:0;margin-left:8px}.action-btn.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1cw3u0m:hover{background:#2a2a3c;color:#ccc}.action-btn.svelte-1cw3u0m:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.action-btn-close.svelte-1cw3u0m{color:#ff6b6b}.action-btn-close.svelte-1cw3u0m:hover{background:#3a2222;color:#f44}.preview-body.svelte-1cw3u0m{flex:1;overflow:auto;min-height:0}.preview-status.svelte-1cw3u0m{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:#888;font-size:14px}.preview-image-container.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;padding:16px;min-height:200px;background:#0e0e18}.preview-image.svelte-1cw3u0m{max-width:100%;max-height:calc(85vh - 100px);object-fit:contain;border-radius:4px}.preview-text.svelte-1cw3u0m{margin:0;padding:16px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow:auto}.preview-pdf-container.svelte-1cw3u0m{width:100%;height:100%}.preview-pdf.svelte-1cw3u0m{width:100%;height:100%;border:none}.btn-sm.svelte-1cw3u0m{padding:6px 14px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit;transition:background .12s}.btn-sm.svelte-1cw3u0m:hover{background:#223}.overlay.svelte-1fv6yyk{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200}.modal.svelte-1fv6yyk{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:360px;max-width:90vw}h3.svelte-1fv6yyk{font-size:18px;margin-bottom:12px;color:#e4e4ef}.message.svelte-1fv6yyk{font-size:14px;color:#aaa;margin-bottom:20px;line-height:1.4}.actions.svelte-1fv6yyk{display:flex;gap:8px;justify-content:flex-end}.btn.svelte-1fv6yyk{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1fv6yyk:hover{background:#223}.btn-primary.svelte-1fv6yyk{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1fv6yyk:hover{background:#4f46e5}.btn-danger.svelte-1fv6yyk{background:#dc2626;border-color:#dc2626;color:#fff}.btn-danger.svelte-1fv6yyk:hover{background:#b91c1c}.btn.svelte-1fv6yyk:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.tree-item.svelte-zj71cl.svelte-zj71cl{display:flex;align-items:center;height:32px;padding-right:8px;cursor:default;font-size:13px;color:#ccc;-webkit-user-select:none;user-select:none}.tree-item.svelte-zj71cl.svelte-zj71cl:hover{background:#223}.tree-item.selected.svelte-zj71cl.svelte-zj71cl{background:#2a2a4a;color:#fff;font-weight:500}.tree-item.drop-valid.svelte-zj71cl.svelte-zj71cl{background:#1a3a1a;outline:1px solid #4ade80;outline-offset:-1px}.tree-item.drop-invalid.svelte-zj71cl.svelte-zj71cl{background:#3a1a1a;outline:1px solid #ff6b6b;outline-offset:-1px}.tree-toggle.svelte-zj71cl.svelte-zj71cl{background:none;border:none;color:#666;cursor:pointer;padding:0;width:20px;height:32px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-family:inherit;line-height:1;font-size:12px}.tree-toggle.svelte-zj71cl.svelte-zj71cl:hover{color:#a5b4fc}.tree-toggle-placeholder.svelte-zj71cl.svelte-zj71cl{display:inline-block;width:20px;flex-shrink:0}.tree-icon.svelte-zj71cl.svelte-zj71cl{display:inline-flex;align-items:center;justify-content:center;width:20px;height:32px;flex-shrink:0;color:#888;margin-right:4px;cursor:pointer}.tree-icon.svelte-zj71cl.svelte-zj71cl:hover,.tree-item.selected.svelte-zj71cl .tree-icon.svelte-zj71cl{color:#a5b4fc}.tree-label.svelte-zj71cl.svelte-zj71cl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;line-height:32px}.first-run-screen.svelte-a9f1pd.svelte-a9f1pd{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem;background:var(--bg, #13131f)}.first-run-card.svelte-a9f1pd.svelte-a9f1pd{max-width:520px;width:100%;padding:2.5rem;background:var(--surface, #1e1e2e);border-radius:12px;border:1px solid var(--border, #2a2a3e);text-align:center}.first-run-logo.svelte-a9f1pd.svelte-a9f1pd{display:block;width:64px;height:64px;margin:0 auto .5rem}.first-run-card.svelte-a9f1pd h1.svelte-a9f1pd{margin:0 0 .75rem;font-size:1.5rem;color:var(--text, #e0e0e0)}.first-run-desc.svelte-a9f1pd.svelte-a9f1pd{color:var(--text-dim, #888);margin-bottom:1.5rem;font-size:.9rem;line-height:1.5}.input-row.svelte-a9f1pd.svelte-a9f1pd{display:flex;gap:.5rem}.input-row.svelte-a9f1pd input.svelte-a9f1pd{flex:1}.path-info.svelte-a9f1pd.svelte-a9f1pd{text-align:left;font-size:.85rem;padding:.5rem .75rem;margin-top:.5rem;background:var(--surface-alt, #252538);border-radius:6px;color:var(--text-dim, #888)}.error-msg.svelte-a9f1pd.svelte-a9f1pd{text-align:left;font-size:.85rem;padding:.5rem .75rem;margin-top:.5rem;background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:6px;color:#ff6b6b}.first-run-actions.svelte-a9f1pd.svelte-a9f1pd{display:flex;gap:.75rem;justify-content:center;margin-top:1.5rem}.btn-lg.svelte-a9f1pd.svelte-a9f1pd{padding:.65rem 1.5rem;font-size:1rem}.form-group.svelte-a9f1pd.svelte-a9f1pd{margin-bottom:1rem;text-align:left}.form-label.svelte-a9f1pd.svelte-a9f1pd{display:block;font-size:.85rem;color:var(--text-dim, #888);margin-bottom:.4rem}.recovery-screen.svelte-s3o8c3.svelte-s3o8c3{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem;background:var(--bg, #13131f)}.recovery-card.svelte-s3o8c3.svelte-s3o8c3{max-width:480px;width:100%;padding:2.5rem;background:var(--surface, #1e1e2e);border-radius:12px;border:1px solid var(--border, #2a2a3e);text-align:center}.recovery-icon.svelte-s3o8c3.svelte-s3o8c3{font-size:2.5rem;margin-bottom:.5rem;color:#f59e0b}.recovery-card.svelte-s3o8c3 h1.svelte-s3o8c3{margin:0 0 .75rem;font-size:1.4rem;color:var(--text, #e0e0e0)}.recovery-desc.svelte-s3o8c3.svelte-s3o8c3{color:var(--text-dim, #888);margin-bottom:.5rem;font-size:.9rem}.recovery-path.svelte-s3o8c3.svelte-s3o8c3{display:block;padding:.5rem .75rem;background:var(--surface-alt, #252538);border-radius:6px;font-size:.85rem;color:var(--text-dim, #aaa);word-break:break-all;margin-bottom:1.5rem}.error-msg.svelte-s3o8c3.svelte-s3o8c3{padding:.5rem .75rem;margin-bottom:1rem;background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:6px;color:#ff6b6b;font-size:.85rem}.recovery-actions.svelte-s3o8c3.svelte-s3o8c3{display:flex;flex-direction:column;gap:.6rem}.btn-lg.svelte-s3o8c3.svelte-s3o8c3{padding:.65rem 1.25rem;font-size:.95rem;width:100%}.modal-desc.svelte-s3o8c3.svelte-s3o8c3{color:var(--text-dim, #888);font-size:.9rem;line-height:1.5;margin-bottom:1rem}.modal-overlay.svelte-s3o8c3.svelte-s3o8c3{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-s3o8c3.svelte-s3o8c3{background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);border-radius:10px;padding:1.5rem;max-width:420px;width:90%}.modal.svelte-s3o8c3 h3.svelte-s3o8c3{margin:0 0 .75rem}.modal-actions.svelte-s3o8c3.svelte-s3o8c3{display:flex;gap:.5rem;justify-content:flex-end}.settings-sidebar.svelte-8ag2z0{width:200px;min-width:200px;border-right:1px solid var(--border, #2a2a3e);padding:.75rem 0;overflow-y:auto;background:var(--surface, #1e1e2e)}.settings-nav-item.svelte-8ag2z0{display:flex;align-items:center;gap:.5rem;width:100%;padding:.55rem 1rem;border:none;background:transparent;color:var(--text-dim, #888);font-size:.9rem;cursor:pointer;text-align:left;transition:background .15s,color .15s;font-family:inherit}.settings-nav-item.svelte-8ag2z0:hover:not(.disabled){background:var(--surface-alt, #252538);color:var(--text, #e0e0e0)}.settings-nav-item.active.svelte-8ag2z0{background:var(--accent-bg, rgba(99, 102, 241, .15));color:var(--accent, #818cf8);font-weight:600;position:relative}.settings-nav-item.active.svelte-8ag2z0:before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:3px;background:var(--accent, #818cf8);border-radius:0 2px 2px 0}.settings-nav-item.disabled.svelte-8ag2z0{opacity:.4;cursor:default}.settings-nav-icon.svelte-8ag2z0{width:1.4rem;height:1rem;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.settings-nav-label.svelte-8ag2z0{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-section.svelte-1e2uhdh.svelte-1e2uhdh{padding:1.5rem;max-width:560px}.settings-section.svelte-1e2uhdh h2.svelte-1e2uhdh{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-1e2uhdh.svelte-1e2uhdh{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.settings-card.svelte-1e2uhdh.svelte-1e2uhdh{background:var(--surface-alt, #1e1e30);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.card-title.svelte-1e2uhdh.svelte-1e2uhdh{font-size:.9rem;font-weight:600;color:var(--text, #e0e0e0);margin:0 0 .75rem}.form-group.svelte-1e2uhdh.svelte-1e2uhdh{margin-bottom:0}.label-text.svelte-1e2uhdh.svelte-1e2uhdh{display:block;font-size:.85rem;color:var(--text-dim, #888);margin-bottom:.3rem}.settings-actions.svelte-1e2uhdh.svelte-1e2uhdh{display:flex;align-items:center;gap:.75rem;margin-top:1rem}.save-notice.svelte-1e2uhdh.svelte-1e2uhdh{padding:.4rem .75rem;background:#34d3991a;border:1px solid rgba(52,211,153,.3);border-radius:6px;color:#34d399;font-size:.85rem}.settings-section.svelte-1zbky3.svelte-1zbky3{padding:1.5rem;max-width:600px}.settings-section.svelte-1zbky3 h2.svelte-1zbky3{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-1zbky3.svelte-1zbky3{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.settings-card.svelte-1zbky3.svelte-1zbky3{background:var(--surface-alt, #1e1e30);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.notice.svelte-1zbky3.svelte-1zbky3{padding:.5rem .75rem;margin-bottom:.75rem;background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:6px;color:#ff6b6b;font-size:.85rem}.info-row.svelte-1zbky3.svelte-1zbky3{display:flex;padding:.4rem 0;border-bottom:1px solid var(--border, #2a2a3e);font-size:.9rem}.info-row.svelte-1zbky3.svelte-1zbky3:last-child{border-bottom:none}.info-label.svelte-1zbky3.svelte-1zbky3{width:120px;min-width:120px;color:var(--text-dim, #888)}.info-value.svelte-1zbky3.svelte-1zbky3{color:var(--text, #e0e0e0);word-break:break-all}.info-value.mono.svelte-1zbky3.svelte-1zbky3{font-family:monospace;font-size:.85rem}.info-value.small.svelte-1zbky3.svelte-1zbky3{font-size:.8rem}.workspace-actions.svelte-1zbky3.svelte-1zbky3{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.btn.svelte-1zbky3.svelte-1zbky3{padding:.45rem .8rem;border:1px solid var(--border, #2a2a3e);border-radius:6px;background:var(--surface-light, #232338);color:var(--text, #e0e0e0);font-size:.85rem;cursor:pointer}.btn.svelte-1zbky3.svelte-1zbky3:hover{background:var(--accent, #4a7c59);border-color:var(--accent, #4a7c59)}.no-data.svelte-1zbky3.svelte-1zbky3{color:var(--text-dim, #888);font-style:italic;margin:0}.settings-section.svelte-ksamnw.svelte-ksamnw{padding:1.5rem;max-width:560px}.settings-section.svelte-ksamnw h2.svelte-ksamnw{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-ksamnw.svelte-ksamnw{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.loading.svelte-ksamnw.svelte-ksamnw,.no-data.svelte-ksamnw.svelte-ksamnw{color:var(--text-dim, #888);font-style:italic}.template-list.svelte-ksamnw.svelte-ksamnw{display:flex;flex-direction:column;gap:.5rem}.template-item.svelte-ksamnw.svelte-ksamnw{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;background:var(--surface-alt, #252538);border-radius:6px;border:1px solid var(--border, #2a2a3e)}.template-info.svelte-ksamnw.svelte-ksamnw{display:flex;align-items:center;gap:.5rem}.template-name.svelte-ksamnw.svelte-ksamnw{color:var(--text, #e0e0e0);font-size:.9rem}.template-type.svelte-ksamnw.svelte-ksamnw{color:var(--text-dim, #888);font-size:.8rem}.toggle-label.svelte-ksamnw.svelte-ksamnw{display:flex;align-items:center;gap:.4rem;cursor:pointer}.toggle-text.svelte-ksamnw.svelte-ksamnw{font-size:.8rem;color:var(--text-dim, #888)}input[type=checkbox].svelte-ksamnw.svelte-ksamnw{accent-color:var(--accent, #818cf8)}.settings-plugins.svelte-i9gngw.svelte-i9gngw{padding:1.5rem}h3.svelte-i9gngw.svelte-i9gngw{margin:0 0 .25rem;font-size:1.1rem;color:var(--text, #e0e0e0)}.hint.svelte-i9gngw.svelte-i9gngw{margin:0 0 1rem;font-size:.85rem;color:var(--text-dim, #888)}.loading.svelte-i9gngw.svelte-i9gngw{color:var(--text-dim, #888)}.error.svelte-i9gngw.svelte-i9gngw{color:#f87171;background:#f871711a;padding:.5rem .75rem;border-radius:6px}.empty-state.svelte-i9gngw.svelte-i9gngw{text-align:center;padding:3rem 1rem;color:var(--text-dim, #888)}.empty-state.svelte-i9gngw code.svelte-i9gngw{background:var(--surface-alt, #252538);padding:.15rem .4rem;border-radius:3px;font-size:.85rem}.plugin-list.svelte-i9gngw.svelte-i9gngw{display:flex;flex-direction:column;gap:.5rem}.plugin-card.svelte-i9gngw.svelte-i9gngw{display:flex;align-items:center;justify-content:space-between;background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:.75rem 1rem;gap:1rem}.plugin-info.svelte-i9gngw.svelte-i9gngw{flex:1;min-width:0}.plugin-name.svelte-i9gngw.svelte-i9gngw{font-weight:600;color:var(--text, #e0e0e0);display:flex;align-items:center;gap:.5rem}.plugin-version.svelte-i9gngw.svelte-i9gngw{font-size:.75rem;color:var(--text-dim, #888);font-weight:400}.plugin-desc.svelte-i9gngw.svelte-i9gngw{font-size:.85rem;color:var(--text-dim, #aaa);margin-top:.15rem}.plugin-meta.svelte-i9gngw.svelte-i9gngw{display:flex;flex-wrap:wrap;gap:.25rem .75rem;margin-top:.25rem;font-size:.75rem;color:var(--text-dim, #888)}.plugin-toggle.svelte-i9gngw.svelte-i9gngw{flex-shrink:0}.toggle-btn.svelte-i9gngw.svelte-i9gngw{position:relative;width:44px;height:24px;background:var(--surface-alt, #333);border-radius:12px;border:1px solid var(--border, #444);cursor:pointer;padding:0;transition:background .2s}.toggle-btn.active.svelte-i9gngw.svelte-i9gngw{background:#6366f1;border-color:#6366f1}.toggle-knob.svelte-i9gngw.svelte-i9gngw{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;transition:left .2s;box-shadow:0 1px 3px #0000004d}.toggle-btn.active.svelte-i9gngw .toggle-knob.svelte-i9gngw{left:22px}.toggle-group.svelte-i9gngw.svelte-i9gngw{display:flex;align-items:center;gap:6px}.install-btn.svelte-i9gngw.svelte-i9gngw{padding:6px 14px;background:#6366f1;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:13px;white-space:nowrap}.install-btn.svelte-i9gngw.svelte-i9gngw:hover{filter:brightness(1.15)}.uninstall-btn.svelte-i9gngw.svelte-i9gngw{width:28px;height:28px;background:var(--surface, #1a1a2e);color:#ef4444;border:1px solid rgba(239,68,68,.3);border-radius:6px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;opacity:.6;transition:all .15s}.uninstall-btn.svelte-i9gngw.svelte-i9gngw:hover{opacity:1;background:#ef44441a}.settings-section.svelte-1fx1e1e.svelte-1fx1e1e{padding:1.5rem;max-width:600px}.settings-section.svelte-1fx1e1e h2.svelte-1fx1e1e{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-1fx1e1e.svelte-1fx1e1e{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.settings-card.svelte-1fx1e1e.svelte-1fx1e1e{background:var(--surface-alt, #1e1e30);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.info-row.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;padding:.4rem 0;border-bottom:1px solid var(--border, #2a2a3e);font-size:.9rem}.info-row.svelte-1fx1e1e.svelte-1fx1e1e:last-child{border-bottom:none}.info-label.svelte-1fx1e1e.svelte-1fx1e1e{width:180px;min-width:180px;color:var(--text-dim, #888)}.info-value.svelte-1fx1e1e.svelte-1fx1e1e{color:var(--text, #e0e0e0);word-break:break-all}.info-value.mono.svelte-1fx1e1e.svelte-1fx1e1e{font-family:monospace;font-size:.85rem}.info-value.error.svelte-1fx1e1e.svelte-1fx1e1e{color:#ff6b6b}.status-ok.svelte-1fx1e1e.svelte-1fx1e1e{color:#34d399;font-weight:600}.status-err.svelte-1fx1e1e.svelte-1fx1e1e{color:#ff6b6b}.sync-actions.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.sync-interval.svelte-1fx1e1e.svelte-1fx1e1e{margin-bottom:0}.interval-row.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;gap:.5rem;align-items:center}.interval-row.svelte-1fx1e1e input.svelte-1fx1e1e{width:100px}.sync-setup.svelte-1fx1e1e .form-group.svelte-1fx1e1e{margin-bottom:1rem}.sync-setup.svelte-1fx1e1e .form-group.svelte-1fx1e1e:last-of-type{margin-bottom:0}.sync-setup-actions.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;gap:.5rem;margin-top:1rem}.connection-result.svelte-1fx1e1e.svelte-1fx1e1e{margin-top:.75rem;padding:.4rem .75rem;border-radius:6px;font-size:.85rem}.connection-result.ok.svelte-1fx1e1e.svelte-1fx1e1e{background:#34d3991a;border:1px solid rgba(52,211,153,.3);color:#34d399}.connection-result.fail.svelte-1fx1e1e.svelte-1fx1e1e{background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);color:#ff6b6b}.error-msg.svelte-1fx1e1e.svelte-1fx1e1e{padding:.5rem .75rem;margin-bottom:.75rem;background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:6px;color:#ff6b6b;font-size:.85rem}.result-msg.svelte-1fx1e1e.svelte-1fx1e1e{padding:.5rem .75rem;margin-bottom:.75rem;background:#34d3991a;border:1px solid rgba(52,211,153,.3);border-radius:6px;color:#34d399;font-size:.85rem}.result-msg.warning.svelte-1fx1e1e.svelte-1fx1e1e{background:#f59e0b1a;border-color:#f59e0b4d;color:#f59e0b}.modal-overlay.svelte-1fx1e1e.svelte-1fx1e1e{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;border:none;padding:0;cursor:pointer;width:100%;color:inherit;font:inherit}.modal.svelte-1fx1e1e.svelte-1fx1e1e{background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);border-radius:10px;padding:1.5rem;max-width:420px;width:90%;cursor:default}.modal.svelte-1fx1e1e h3.svelte-1fx1e1e{margin:0 0 .75rem}.modal-desc.svelte-1fx1e1e.svelte-1fx1e1e{color:var(--text-dim, #888);font-size:.9rem;line-height:1.5;margin-bottom:1rem}.modal-actions.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;gap:.5rem;justify-content:flex-end}.settings-section.svelte-19bo7bn.svelte-19bo7bn{padding:1.5rem;max-width:500px}.settings-section.svelte-19bo7bn h2.svelte-19bo7bn{margin:0 0 .5rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-19bo7bn.svelte-19bo7bn{color:var(--text-dim, #888);font-size:.85rem}.settings-section.svelte-13i6m7m.svelte-13i6m7m{padding:1.5rem;max-width:600px}.settings-section.svelte-13i6m7m h2.svelte-13i6m7m{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-13i6m7m.svelte-13i6m7m{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.settings-card.svelte-13i6m7m.svelte-13i6m7m{background:var(--surface-alt, #1e1e30);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.form-group.svelte-13i6m7m.svelte-13i6m7m{margin-bottom:1rem}.form-group.svelte-13i6m7m.svelte-13i6m7m:last-child{margin-bottom:0}.label-text.svelte-13i6m7m.svelte-13i6m7m{display:block;color:var(--text-dim, #888);font-size:.85rem;margin-bottom:.35rem}input[type=number].svelte-13i6m7m.svelte-13i6m7m{width:120px;padding:.4rem .6rem;background:var(--bg, #13131f);border:1px solid var(--border, #2a2a3e);border-radius:6px;color:var(--text, #e0e0e0);font-size:.9rem}input[type=number].svelte-13i6m7m.svelte-13i6m7m:disabled{opacity:.5}.field-hint.svelte-13i6m7m.svelte-13i6m7m{color:var(--text-dim, #666);font-size:.75rem;margin-top:.35rem}.toggle-label.svelte-13i6m7m.svelte-13i6m7m{display:flex;align-items:center;gap:.5rem;cursor:pointer}.toggle-text.svelte-13i6m7m.svelte-13i6m7m{color:var(--text, #e0e0e0);font-size:.9rem}.bridge-status.svelte-13i6m7m.svelte-13i6m7m{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border, #2a2a3e)}.info-row.svelte-13i6m7m.svelte-13i6m7m{display:flex;padding:.3rem 0;font-size:.85rem}.info-label.svelte-13i6m7m.svelte-13i6m7m{width:140px;min-width:140px;color:var(--text-dim, #888)}.info-value.svelte-13i6m7m.svelte-13i6m7m{color:var(--text, #e0e0e0)}.info-value.mono.svelte-13i6m7m.svelte-13i6m7m{font-family:monospace;font-size:.85rem}.status-ok.svelte-13i6m7m.svelte-13i6m7m{color:#34d399;font-weight:600}.status-off.svelte-13i6m7m.svelte-13i6m7m{color:#888}.actions.svelte-13i6m7m.svelte-13i6m7m{display:flex;gap:.5rem;flex-wrap:wrap}.status-msg.svelte-13i6m7m.svelte-13i6m7m{padding:.5rem .75rem;margin-bottom:.75rem;border-radius:6px;font-size:.85rem}.status-msg.ok.svelte-13i6m7m.svelte-13i6m7m{background:#34d3991a;border:1px solid rgba(52,211,153,.3);color:#34d399}.status-msg.error.svelte-13i6m7m.svelte-13i6m7m{background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);color:#ff6b6b}.settings-overlay.svelte-zf2zsc.svelte-zf2zsc{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:900;border:none;padding:0;cursor:pointer;width:100%;color:inherit;font:inherit}.settings-window.svelte-zf2zsc.svelte-zf2zsc{display:flex;flex-direction:column;width:800px;max-width:90vw;height:600px;max-height:85vh;background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);border-radius:12px;overflow:hidden;box-shadow:0 8px 32px #0006}.settings-header.svelte-zf2zsc.svelte-zf2zsc{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border, #2a2a3e);flex-shrink:0}.settings-header.svelte-zf2zsc h2.svelte-zf2zsc{margin:0;font-size:1.1rem;color:var(--text, #e0e0e0)}.close-btn.svelte-zf2zsc.svelte-zf2zsc{background:transparent;border:none;color:var(--text-dim, #888);cursor:pointer;padding:.25rem;border-radius:4px;display:flex;align-items:center}.close-btn.svelte-zf2zsc.svelte-zf2zsc:hover{color:var(--text, #e0e0e0);background:var(--surface-alt, #252538)}.settings-body.svelte-zf2zsc.svelte-zf2zsc{display:flex;flex:1;overflow:hidden}.settings-content.svelte-zf2zsc.svelte-zf2zsc{flex:1;overflow-y:auto;background:var(--bg, #13131f)}.sync-status-widget.svelte-1rxbx0{font-size:.8rem;padding:.4rem .5rem}.sync-status-row.svelte-1rxbx0{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.sync-dot.svelte-1rxbx0{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot-connected.svelte-1rxbx0{background:#34d399;box-shadow:0 0 4px #34d39966}.dot-warning.svelte-1rxbx0{background:#f59e0b}.dot-disabled.svelte-1rxbx0{background:#555}.dot-syncing.svelte-1rxbx0{background:#818cf8;animation:svelte-1rxbx0-pulse 1s infinite}@keyframes svelte-1rxbx0-pulse{0%,to{opacity:1}50%{opacity:.4}}.sync-label.svelte-1rxbx0{color:var(--text-dim, #888);white-space:nowrap}.sync-count.svelte-1rxbx0{color:var(--accent, #818cf8);font-weight:600}.sync-actions-row.svelte-1rxbx0{display:flex;gap:.3rem;margin-left:auto}.sync-message.svelte-1rxbx0{margin-top:.25rem;color:var(--text-dim, #888);line-height:1.25}.sync-message-warning.svelte-1rxbx0{color:#f59e0b}.btn-xs.svelte-1rxbx0{padding:.2rem .5rem;font-size:.75rem;border:1px solid var(--border, #2a2a3e);background:var(--surface-alt, #252538);color:var(--text-dim, #888);border-radius:4px;cursor:pointer;white-space:nowrap}.btn-xs.svelte-1rxbx0:hover{background:var(--border, #2a2a3e);color:var(--text, #e0e0e0)}.btn-xs.svelte-1rxbx0:disabled{opacity:.5;cursor:default}.btn-link.svelte-1rxbx0{border:none;background:transparent;color:var(--accent, #818cf8);text-decoration:underline}.btn-link.svelte-1rxbx0:hover{color:#a5b4fc;background:transparent}.browser-events.svelte-slao4o.svelte-slao4o{padding:8px 0}.browser-header.svelte-slao4o.svelte-slao4o{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:0 4px}.browser-header.svelte-slao4o h3.svelte-slao4o{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim, #8892b0);margin:0}.refresh-btn.svelte-slao4o.svelte-slao4o{background:var(--surface2, #1e2d50);border:none;border-radius:4px;padding:4px 8px;cursor:pointer;font-size:12px;transition:background .2s}.refresh-btn.svelte-slao4o.svelte-slao4o:hover{background:var(--surface, #16213e)}.empty-state.svelte-slao4o.svelte-slao4o{padding:24px;text-align:center}.empty-text.svelte-slao4o.svelte-slao4o,.loading.svelte-slao4o.svelte-slao4o{color:var(--text-dim, #8892b0);font-style:italic;font-size:12px}.event-list.svelte-slao4o.svelte-slao4o{display:flex;flex-direction:column;gap:4px}.event-item.svelte-slao4o.svelte-slao4o{display:flex;gap:8px;padding:6px 8px;background:var(--surface, #16213e);border-radius:6px;transition:background .15s}.event-item.pending.svelte-slao4o.svelte-slao4o{border-left:2px solid var(--accent, #0f9b8e)}.event-icon.svelte-slao4o.svelte-slao4o{font-size:16px;line-height:1.4;min-width:20px;text-align:center}.event-body.svelte-slao4o.svelte-slao4o{flex:1;min-width:0}.event-domain.svelte-slao4o.svelte-slao4o{font-size:11px;color:var(--accent, #0f9b8e);font-weight:500}.event-title.svelte-slao4o.svelte-slao4o{font-size:12px;color:var(--text, #e0e0e0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-meta.svelte-slao4o.svelte-slao4o{display:flex;gap:8px;margin-top:2px}.duration.svelte-slao4o.svelte-slao4o,.time.svelte-slao4o.svelte-slao4o{font-size:10px;color:var(--text-dim, #8892b0)}.status-badge.svelte-slao4o.svelte-slao4o{font-size:9px;padding:1px 4px;border-radius:3px;text-transform:uppercase}.status-accepted.svelte-slao4o.svelte-slao4o{background:#2ecc7133;color:#2ecc71}.status-dismissed.svelte-slao4o.svelte-slao4o{background:#e74c3c33;color:#e74c3c}.status-attached.svelte-slao4o.svelte-slao4o{background:#3498db33;color:#3498db}.event-text.svelte-slao4o.svelte-slao4o{font-size:11px;color:var(--text-dim, #8892b0);font-style:italic;margin-top:2px;padding:2px 6px;background:#ffffff08;border-radius:3px}.event-actions.svelte-slao4o.svelte-slao4o{display:flex;gap:2px;align-items:flex-start}.event-actions.svelte-slao4o button.svelte-slao4o{background:none;border:1px solid var(--surface2, #1e2d50);border-radius:4px;width:24px;height:24px;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s}.btn-accept.svelte-slao4o.svelte-slao4o:hover{background:#2ecc7133;border-color:#2ecc71}.btn-attach.svelte-slao4o.svelte-slao4o:hover{background:#3498db33;border-color:#3498db}.btn-dismiss.svelte-slao4o.svelte-slao4o:hover{background:#e74c3c33;border-color:#e74c3c}.today-screen.svelte-ii7vwz.svelte-ii7vwz{padding:24px;overflow-y:auto;flex:1}.today-header.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:baseline;gap:12px;margin-bottom:16px;min-height:20px}.today-date.svelte-ii7vwz.svelte-ii7vwz{font-size:13px;color:#666}.today-tabs.svelte-ii7vwz.svelte-ii7vwz{display:flex;gap:0;border-bottom:1px solid #2a2a3c;margin-bottom:16px}.today-tab.svelte-ii7vwz.svelte-ii7vwz{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;position:relative}.today-tab.svelte-ii7vwz.svelte-ii7vwz:hover{color:#a5b4fc}.today-tab.active.svelte-ii7vwz.svelte-ii7vwz{color:#e4e4ef;border-bottom-color:#818cf8;background:#6366f11f;font-weight:600}.tab-badge.svelte-ii7vwz.svelte-ii7vwz{background:#6366f1;color:#fff;font-size:10px;font-weight:700;border-radius:10px;padding:1px 6px;margin-left:6px;line-height:1.4;vertical-align:middle}.today-tab-content.svelte-ii7vwz.svelte-ii7vwz{flex:1}.today-empty.svelte-ii7vwz.svelte-ii7vwz{padding:48px 24px;text-align:center}.today-empty.svelte-ii7vwz p.svelte-ii7vwz{color:#666;font-size:14px;margin:0}.today-empty.svelte-ii7vwz .hint.svelte-ii7vwz{font-size:12px;color:#555;margin-top:8px}.tab-controls.svelte-ii7vwz.svelte-ii7vwz{margin-bottom:12px}.sort-controls.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:6px}.sort-btn.svelte-ii7vwz.svelte-ii7vwz{padding:4px 10px;border:1px solid #2a2a3c;background:#13131f;color:#888;border-radius:4px;font-size:12px;cursor:pointer;font-family:inherit}.sort-btn.svelte-ii7vwz.svelte-ii7vwz:hover{border-color:#3a3a5c;color:#ccc}.sort-btn.active.svelte-ii7vwz.svelte-ii7vwz{border-color:#6366f1;color:#a5b4fc;background:#6366f114}.sort-dir.svelte-ii7vwz.svelte-ii7vwz{font-size:12px;color:#8888a0;margin-left:4px}.feed-list.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;gap:2px}.feed-item.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer}.feed-item.svelte-ii7vwz.svelte-ii7vwz:hover{background:#1a1a28}.feed-icon.svelte-ii7vwz.svelte-ii7vwz{width:20px;text-align:center;color:#6366f1;font-size:14px;flex-shrink:0;margin-top:2px}.feed-body.svelte-ii7vwz.svelte-ii7vwz{flex:1;min-width:0}.feed-title-line.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap}.feed-type.svelte-ii7vwz.svelte-ii7vwz{font-size:13px;color:#8888a0}.feed-colon.svelte-ii7vwz.svelte-ii7vwz{color:#555}.feed-title.svelte-ii7vwz.svelte-ii7vwz{font-size:14px;color:#e4e4ef;font-weight:500}.feed-title.svelte-ii7vwz.svelte-ii7vwz:hover{text-decoration:underline}.feed-meta-line.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:8px;margin-top:2px}.feed-path.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#8ea0d8;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-event-type.svelte-ii7vwz.svelte-ii7vwz{font-size:10px;color:#a5b4fc;background:#6366f11a;padding:2px 8px;border-radius:8px;font-weight:500}.feed-time.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#555;margin-left:auto;flex-shrink:0}.feed-nav-btn.svelte-ii7vwz.svelte-ii7vwz{background:none;border:none;color:#555;cursor:pointer;padding:4px;border-radius:4px;flex-shrink:0;margin-top:2px}.feed-nav-btn.svelte-ii7vwz.svelte-ii7vwz:hover{color:#a5b4fc;background:#1e1e30}.link-btn.svelte-ii7vwz.svelte-ii7vwz{background:none;border:none;padding:0;color:#a5b4fc;font:inherit;cursor:pointer;text-align:left}.link-btn.svelte-ii7vwz.svelte-ii7vwz:hover{text-decoration:underline}.suggestions-list.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;gap:6px}.suggestion-card.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;align-items:stretch;padding:0;background:#1e1e32;border-radius:6px;margin-bottom:6px;gap:0;border:1px solid transparent}.suggestion-card.svelte-ii7vwz.svelte-ii7vwz:last-child{margin-bottom:0}.suggestion-card.expanded.svelte-ii7vwz.svelte-ii7vwz{border-color:#3a3a5c}.suggestion-main.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;cursor:pointer;gap:10px;min-height:38px}.suggestion-info.svelte-ii7vwz.svelte-ii7vwz{flex:1;display:flex;flex-direction:column;gap:2px}.suggestion-node.svelte-ii7vwz.svelte-ii7vwz{color:#a5b4fc;font-weight:600;font-size:13px;text-decoration:none;cursor:pointer}.suggestion-node.svelte-ii7vwz.svelte-ii7vwz:hover{text-decoration:underline}.suggestion-summary.svelte-ii7vwz.svelte-ii7vwz{font-size:14px;color:#e4e4ef}.suggestion-meta.svelte-ii7vwz.svelte-ii7vwz{font-size:12px;color:#8888a0;margin-top:2px}.suggestion-actions.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:6px;flex-shrink:0}.suggestion-min-input.svelte-ii7vwz.svelte-ii7vwz{width:54px;padding:3px 7px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:13px;text-align:center}.suggestion-min-label.svelte-ii7vwz.svelte-ii7vwz{font-size:12px;color:#8888a0}.suggestion-confidence-dot.svelte-ii7vwz.svelte-ii7vwz{width:9px;height:9px;border-radius:999px;background:#77798a;box-shadow:0 0 0 3px #77798a1f;flex:0 0 auto}.suggestion-confidence-dot.low.svelte-ii7vwz.svelte-ii7vwz{background:#ef4444;box-shadow:0 0 0 3px #ef44441f}.suggestion-confidence-dot.medium.svelte-ii7vwz.svelte-ii7vwz{background:#fbbf24;box-shadow:0 0 0 3px #fbbf241f}.suggestion-confidence-dot.high.svelte-ii7vwz.svelte-ii7vwz{background:#34d399;box-shadow:0 0 0 3px #34d3991f}.suggestion-detail.svelte-ii7vwz.svelte-ii7vwz{width:100%;padding:6px 10px 8px;border-top:1px solid #2a2a3c}.suggestion-detail-title.svelte-ii7vwz.svelte-ii7vwz{font-size:10px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;padding:4px 0}.suggestion-detail-event.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:7px;padding:2px 0;font-size:12px;color:#b0b0c0}.suggestion-event-time.svelte-ii7vwz.svelte-ii7vwz{color:#a0a0b8;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:48px}.suggestion-event-type.svelte-ii7vwz.svelte-ii7vwz{color:#8888a0;font-size:11px;background:#1a1a2e;padding:1px 6px;border-radius:3px}.suggestion-event-title.svelte-ii7vwz.svelte-ii7vwz{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-event-path.svelte-ii7vwz.svelte-ii7vwz{max-width:220px;color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn.svelte-ii7vwz.svelte-ii7vwz{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.btn.svelte-ii7vwz.svelte-ii7vwz:hover{background:#223}.btn-primary.svelte-ii7vwz.svelte-ii7vwz{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-ii7vwz.svelte-ii7vwz:hover{background:#4f46e5}.btn-sm.svelte-ii7vwz.svelte-ii7vwz{padding:4px 10px;font-size:12px}.btn-danger.svelte-ii7vwz.svelte-ii7vwz{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-ii7vwz.svelte-ii7vwz:hover{background:#3a2222}.ip-list.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;gap:2px}.ip-item.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer}.ip-item.svelte-ii7vwz.svelte-ii7vwz:hover{background:#1a1a28}.ip-icon.svelte-ii7vwz.svelte-ii7vwz{width:20px;text-align:center;color:#6366f1;font-size:13px;flex-shrink:0}.ip-body.svelte-ii7vwz.svelte-ii7vwz{flex:1;min-width:0}.ip-title.svelte-ii7vwz.svelte-ii7vwz{font-size:14px;color:#e4e4ef;display:block}.ip-path.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#8ea0d8;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.ip-type.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#666;flex-shrink:0}.ip-time.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#555;flex-shrink:0;margin-left:8px}.capture-list.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;gap:6px}.capture-item.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #2a2a3c;border-radius:8px;background:#1a1a28;cursor:pointer}.capture-item.svelte-ii7vwz.svelte-ii7vwz:hover{border-color:#3a3a5c;background:#1e1e32}.capture-icon.svelte-ii7vwz.svelte-ii7vwz{font-size:18px;width:28px;text-align:center;flex-shrink:0}.capture-body.svelte-ii7vwz.svelte-ii7vwz{flex:1;min-width:0}.capture-title.svelte-ii7vwz.svelte-ii7vwz{font-size:14px;color:#e4e4ef;font-weight:500;display:block}.capture-meta.svelte-ii7vwz.svelte-ii7vwz{font-size:12px;color:#8888a0;display:block;margin-top:2px}.capture-time.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#555;flex-shrink:0}.plugin-page.svelte-xgfxht.svelte-xgfxht{padding:1.5rem;height:100%;display:flex;flex-direction:column}.loading.svelte-xgfxht.svelte-xgfxht{color:var(--text-dim, #888)}.empty-state.svelte-xgfxht.svelte-xgfxht{text-align:center;padding:3rem 1rem;color:var(--text-dim, #888)}.empty-state.svelte-xgfxht code.svelte-xgfxht{background:var(--surface-alt, #252538);padding:.15rem .4rem;border-radius:3px;font-size:.85rem}.plugin-frame-container.svelte-xgfxht.svelte-xgfxht{flex:1;display:flex;flex-direction:column;min-height:0}.plugin-error-bar.svelte-xgfxht.svelte-xgfxht{padding:.5rem 1rem;background:#f871711f;border:1px solid #f87171;border-bottom:none;border-radius:8px 8px 0 0;color:#f87171;font-size:.85rem;flex-shrink:0}.plugin-frame.svelte-xgfxht.svelte-xgfxht{flex:1;border:1px solid var(--border, #2a2a3e);border-radius:8px;background:#fff;width:100%;min-height:400px;display:block}.plugin-frame-container.svelte-xgfxht .plugin-frame.svelte-xgfxht{border-radius:0 0 8px 8px;border-top:none}.global-search.svelte-1dlr37h{position:relative;flex:1 1 360px;min-width:180px;max-width:520px}.global-search-input.svelte-1dlr37h{width:100%;height:32px;padding:0 12px;border:1px solid #2a2a3c;border-radius:6px;background:#10101a;color:#e4e4ef;font:inherit;font-size:13px}.global-search-input.svelte-1dlr37h:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 2px #6366f12e}.global-search-results.svelte-1dlr37h{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:160;max-height:min(360px,calc(100vh - 88px));overflow-y:auto;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;box-shadow:0 14px 36px #00000061;padding:4px}.global-search-result.svelte-1dlr37h{display:flex;flex-direction:column;gap:2px;width:100%;border:0;background:transparent;color:#e4e4ef;text-align:left;padding:8px 10px;border-radius:6px;cursor:pointer;font:inherit}.global-search-result.svelte-1dlr37h:hover,.global-search-result.selected.svelte-1dlr37h{background:#252545}.global-search-title.svelte-1dlr37h{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-search-meta.svelte-1dlr37h{font-size:11px;color:#a0a0bc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-search-snippet.svelte-1dlr37h{font-size:12px;color:#767690;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-search-empty.svelte-1dlr37h{padding:10px 12px;color:#8888a0;font-size:12px}.header.svelte-7x8q9h{padding:10px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:16px;flex-shrink:0;min-height:52px}.header-left.svelte-7x8q9h{display:flex;align-items:center;gap:8px;min-width:120px;flex:0 1 auto;overflow:hidden}.header-title.svelte-7x8q9h{font-size:15px;font-weight:600;color:#e4e4ef;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-title.placeholder.svelte-7x8q9h{color:#666;font-weight:500}.header-subtitle.svelte-7x8q9h{font-size:11px;color:#8888a0;background:#1e1e2e;padding:2px 8px;border-radius:10px;white-space:nowrap}.header-right.svelte-7x8q9h{flex:1;min-width:0;display:flex;align-items:center;justify-content:flex-end;gap:8px}@media (max-width: 760px){.header.svelte-7x8q9h{padding:8px 12px;gap:10px;align-items:flex-start;flex-wrap:wrap}.header-left.svelte-7x8q9h{flex:1 1 100%}.header-right.svelte-7x8q9h{flex:1 1 100%;justify-content:stretch}}.svelte-19ekrug.svelte-19ekrug,.svelte-19ekrug.svelte-19ekrug:before,.svelte-19ekrug.svelte-19ekrug:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-19ekrug.svelte-19ekrug{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.capture-drop-overlay.svelte-19ekrug.svelte-19ekrug{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;pointer-events:none;display:flex;align-items:center;justify-content:center;background:#13131f6b;border:2px dashed #818cf8}.capture-drop-box.svelte-19ekrug.svelte-19ekrug{max-width:min(520px,calc(100vw - 48px));padding:14px 18px;border:1px solid #3a3a5c;border-radius:8px;background:#1a1a28;color:#e4e4ef;font-size:14px;font-weight:600;box-shadow:0 12px 32px #00000059;text-align:center}.sidebar.svelte-19ekrug.svelte-19ekrug{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-19ekrug.svelte-19ekrug{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-19ekrug.svelte-19ekrug{display:block;width:20px;height:20px;flex-shrink:0}.brand-name.svelte-19ekrug.svelte-19ekrug{font-size:16px;font-weight:600}.sidebar-nav.svelte-19ekrug.svelte-19ekrug{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-19ekrug.svelte-19ekrug{margin-bottom:16px}.nav-label.svelte-19ekrug.svelte-19ekrug{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-19ekrug.svelte-19ekrug{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-19ekrug.svelte-19ekrug:hover{background:#223}.nav-item.selected.svelte-19ekrug.svelte-19ekrug{background:#2a2a4a;color:#fff;font-weight:500}.workspace-tree-area.svelte-19ekrug.svelte-19ekrug{min-height:32px}.workspace-tree-area.drop-valid.svelte-19ekrug.svelte-19ekrug{outline:2px dashed #4ade80;outline-offset:-2px;background:#4ade800d}.nav-empty.svelte-19ekrug.svelte-19ekrug{padding:8px 20px;color:#555;font-size:12px}.nav-label-row.svelte-19ekrug.svelte-19ekrug{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px;display:flex;align-items:center;justify-content:space-between}.nav-add-btn.svelte-19ekrug.svelte-19ekrug{background:none;border:none;color:#666;cursor:pointer;font-size:16px;padding:0 4px;font-family:inherit;line-height:1}.nav-add-btn.svelte-19ekrug.svelte-19ekrug:hover{color:#ccc}.context-menu-backdrop.svelte-19ekrug.svelte-19ekrug{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200}.context-menu.svelte-19ekrug.svelte-19ekrug{position:fixed;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:4px;min-width:180px;box-shadow:0 8px 24px #0006}.context-menu-section.svelte-19ekrug.svelte-19ekrug{padding:6px 12px;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666}.context-menu-item.svelte-19ekrug.svelte-19ekrug{display:flex;width:100%;padding:6px 12px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:4px;font-family:inherit;align-items:center;gap:6px}.context-menu-item.svelte-19ekrug.svelte-19ekrug:hover{background:#223;color:#fff}.context-menu-item.danger.svelte-19ekrug.svelte-19ekrug{color:#ff6b6b}.context-menu-item.danger.svelte-19ekrug.svelte-19ekrug:hover{background:#3a2222;color:#ff6b6b}.context-menu-divider.svelte-19ekrug.svelte-19ekrug{height:1px;background:#2a2a3c;margin:4px 0}.create-context.svelte-19ekrug.svelte-19ekrug{font-size:12px;color:#888;margin-bottom:12px}.sidebar-footer.svelte-19ekrug.svelte-19ekrug{padding:8px 12px;border-top:1px solid #2a2a3c;flex-shrink:0;display:flex;flex-direction:column;gap:4px}.sidebar-footer-row.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;justify-content:space-between}.version.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#555;text-align:center}.main.svelte-19ekrug.svelte-19ekrug{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header-actions.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.sidebar-settings-btn.svelte-19ekrug.svelte-19ekrug{background:transparent;border:none;border-radius:6px;padding:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#666;font-family:inherit;width:32px;height:32px}.sidebar-settings-btn.svelte-19ekrug.svelte-19ekrug:hover{background:#1e1e38;color:#a5b4fc}.sidebar-settings-btn.svelte-19ekrug.svelte-19ekrug:active{background:#252545;color:#818cf8}.error-banner.svelte-19ekrug.svelte-19ekrug{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.dismiss-btn.svelte-19ekrug.svelte-19ekrug{background:none;border:none;color:#f66;cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:2px}.dismiss-btn.svelte-19ekrug.svelte-19ekrug:hover{color:#f44}.tabs.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:stretch;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-19ekrug.svelte-19ekrug{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-19ekrug.svelte-19ekrug:hover{color:#a5b4fc}.tab.active.svelte-19ekrug.svelte-19ekrug{color:#e4e4ef;border-bottom-color:#818cf8;background:#6366f11f;font-weight:600}.tab-separator.svelte-19ekrug.svelte-19ekrug{width:1px;height:22px;margin:8px 10px 0;background:#2a2a3c;flex-shrink:0}.tab-content.svelte-19ekrug.svelte-19ekrug{flex:1;overflow-y:auto}.note-editor.svelte-19ekrug.svelte-19ekrug{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-19ekrug.svelte-19ekrug{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-19ekrug.svelte-19ekrug{font-size:16px;font-weight:500}.dirty-mark.svelte-19ekrug.svelte-19ekrug{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-19ekrug.svelte-19ekrug{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-19ekrug.svelte-19ekrug{flex:1;width:100%;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,monospace;font-size:14px;line-height:1.6;padding:24px;resize:none}.overview.svelte-19ekrug.svelte-19ekrug{padding:24px}.overview.svelte-19ekrug h2.svelte-19ekrug{font-size:24px;margin-bottom:16px}.meta-grid.svelte-19ekrug.svelte-19ekrug{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-19ekrug.svelte-19ekrug{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-19ekrug.svelte-19ekrug{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-19ekrug.svelte-19ekrug{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-19ekrug.svelte-19ekrug{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.qa-btn.svelte-19ekrug.svelte-19ekrug:hover{background:#223}.qa-btn.svelte-19ekrug.svelte-19ekrug:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-19ekrug.svelte-19ekrug{margin-bottom:24px}.recent-section.svelte-19ekrug h3.svelte-19ekrug{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-19ekrug.svelte-19ekrug{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-19ekrug.svelte-19ekrug:hover{background:#1a1a28}.recent-date.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#555}.recent-entry.svelte-19ekrug.svelte-19ekrug{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-19ekrug.svelte-19ekrug{padding:24px}.tab-toolbar.svelte-19ekrug.svelte-19ekrug{margin-bottom:16px}.create-form.svelte-19ekrug.svelte-19ekrug{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-19ekrug input.svelte-19ekrug{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-19ekrug input.svelte-19ekrug:focus{outline:none;border-color:#6366f1}.form-actions.svelte-19ekrug.svelte-19ekrug{display:flex;gap:8px}.notes-list.svelte-19ekrug.svelte-19ekrug{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-19ekrug.svelte-19ekrug{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-19ekrug.svelte-19ekrug:hover{border-color:#3a3a5c}.note-card-title.svelte-19ekrug.svelte-19ekrug{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#555}.worklog-tab.svelte-19ekrug.svelte-19ekrug{padding:24px}.worklog-toolbar.svelte-19ekrug.svelte-19ekrug{margin-bottom:16px}.worklog-entry.svelte-19ekrug.svelte-19ekrug{padding:12px 0;border-bottom:1px solid #1a1a28}.suggestions-title.svelte-19ekrug.svelte-19ekrug{font-size:13px;font-weight:600;color:#a5b4fc;margin-bottom:12px;text-transform:uppercase;letter-spacing:.5px}.suggestion-summary.svelte-19ekrug.svelte-19ekrug{font-size:14px;color:#e4e4ef}.suggestion-meta.svelte-19ekrug.svelte-19ekrug{font-size:12px;color:#8888a0;margin-top:2px}.suggestion-main.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;cursor:pointer;gap:10px;min-height:38px}.suggestion-card.expanded.svelte-19ekrug.svelte-19ekrug{border-color:#3a3a5c}.suggestion-detail.svelte-19ekrug.svelte-19ekrug{width:100%;padding:6px 10px 8px;border-top:1px solid #2a2a3c}.suggestion-detail-title.svelte-19ekrug.svelte-19ekrug{font-size:10px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;padding:4px 0}.suggestion-detail-event.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:7px;padding:2px 0;font-size:12px;color:#b0b0c0}.suggestion-event-time.svelte-19ekrug.svelte-19ekrug{color:#a0a0b8;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:48px}.suggestion-event-type.svelte-19ekrug.svelte-19ekrug{color:#8888a0;font-size:11px;background:#1a1a2e;padding:1px 6px;border-radius:3px}.suggestion-event-title.svelte-19ekrug.svelte-19ekrug{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-event-path.svelte-19ekrug.svelte-19ekrug{max-width:220px;color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-card.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;align-items:stretch;padding:0;background:#1e1e32;border-radius:6px;margin-bottom:6px;gap:0;border:1px solid transparent}.suggestion-card.svelte-19ekrug.svelte-19ekrug:last-child{margin-bottom:0}.suggestion-info.svelte-19ekrug.svelte-19ekrug{flex:1;display:flex;flex-direction:column;gap:2px}.suggestion-node.svelte-19ekrug.svelte-19ekrug{color:#a5b4fc;font-weight:600;font-size:13px;text-decoration:none;cursor:pointer}.suggestion-node.svelte-19ekrug.svelte-19ekrug:hover{text-decoration:underline}.suggestion-actions.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:6px;flex-shrink:0}.suggestion-min-input.svelte-19ekrug.svelte-19ekrug{width:54px;padding:3px 7px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:13px;text-align:center}.suggestion-min-label.svelte-19ekrug.svelte-19ekrug{font-size:12px;color:#8888a0}.suggestion-confidence-dot.svelte-19ekrug.svelte-19ekrug{width:9px;height:9px;border-radius:999px;background:#77798a;box-shadow:0 0 0 3px #77798a1f;flex:0 0 auto}.suggestion-confidence-dot.low.svelte-19ekrug.svelte-19ekrug{background:#ef4444;box-shadow:0 0 0 3px #ef44441f}.suggestion-confidence-dot.medium.svelte-19ekrug.svelte-19ekrug{background:#fbbf24;box-shadow:0 0 0 3px #fbbf241f}.suggestion-confidence-dot.high.svelte-19ekrug.svelte-19ekrug{background:#34d399;box-shadow:0 0 0 3px #34d3991f}.inbox-screen.svelte-19ekrug.svelte-19ekrug{padding:24px;overflow-y:auto;flex:1}.inbox-screen.drop-valid.svelte-19ekrug.svelte-19ekrug{outline:2px dashed #4ade80;outline-offset:-4px;background:#4ade800a}.inbox-header.svelte-19ekrug.svelte-19ekrug{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.inbox-header.svelte-19ekrug p.svelte-19ekrug{margin:0;color:#a0a0b8;font-size:13px}.inbox-capture-status.svelte-19ekrug.svelte-19ekrug{color:#8ee6b1;font-size:12px}.inbox-list.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;gap:8px}.inbox-item.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #2a2a3c;border-radius:8px;background:#1a1a28;cursor:pointer}.inbox-item.svelte-19ekrug.svelte-19ekrug:hover{border-color:#3a3a5c;background:#1e1e32}.inbox-item-main.svelte-19ekrug.svelte-19ekrug{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.inbox-item-title.svelte-19ekrug.svelte-19ekrug{color:#e4e4ef;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inbox-item-meta.svelte-19ekrug.svelte-19ekrug{color:#8888a0;font-size:12px}.inbox-item-actions.svelte-19ekrug.svelte-19ekrug{display:flex;gap:6px;flex-shrink:0;align-items:center}.inbox-icon-btn.svelte-19ekrug.svelte-19ekrug{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #2a2a3c;border-radius:6px;background:#13131f;color:#a0a0b8;cursor:pointer;transition:color .12s,border-color .12s,background .12s}.inbox-icon-slot.svelte-19ekrug.svelte-19ekrug{width:30px;height:30px;display:inline-block;flex:0 0 30px}.inbox-icon-btn.svelte-19ekrug.svelte-19ekrug:hover{color:#e4e4ef;border-color:#3a3a5c;background:#222238}.inbox-icon-btn-primary.svelte-19ekrug.svelte-19ekrug{color:#a5b4fc;border-color:#34346a}.inbox-icon-btn-primary.svelte-19ekrug.svelte-19ekrug:hover{color:#fff;border-color:#6366f1;background:#272750}.inbox-icon-btn-danger.svelte-19ekrug.svelte-19ekrug{color:#f87171;border-color:#4a252c}.inbox-icon-btn-danger.svelte-19ekrug.svelte-19ekrug:hover{color:#fff;border-color:#dc2626;background:#3a1f24}.inbox-tab.svelte-19ekrug.svelte-19ekrug{padding:24px}.inbox-controls.svelte-19ekrug.svelte-19ekrug{margin-bottom:12px}.inbox-sort-row.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.sort-btn.svelte-19ekrug.svelte-19ekrug{padding:4px 10px;border:1px solid #2a2a3c;background:#13131f;color:#888;border-radius:4px;font-size:12px;cursor:pointer;font-family:inherit}.sort-btn.svelte-19ekrug.svelte-19ekrug:hover{border-color:#3a3a5c;color:#ccc}.sort-btn.active.svelte-19ekrug.svelte-19ekrug{border-color:#6366f1;color:#a5b4fc;background:#6366f114}.sort-dir.svelte-19ekrug.svelte-19ekrug{font-size:12px;color:#8888a0;margin-left:2px}.inbox-controls-divider.svelte-19ekrug.svelte-19ekrug{width:1px;height:20px;background:#2a2a3c;margin:0 4px}.inbox-group.svelte-19ekrug.svelte-19ekrug{margin-bottom:16px}.inbox-group-header.svelte-19ekrug.svelte-19ekrug{font-size:12px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.5px;padding:8px 0 6px;margin-bottom:6px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:8px}.inbox-group-count.svelte-19ekrug.svelte-19ekrug{font-size:10px;color:#8888a0;background:#1e1e30;padding:1px 6px;border-radius:8px}.links-tab.svelte-19ekrug.svelte-19ekrug{padding:24px}.links-list.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;gap:8px}.link-card.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #2a2a3c;border-radius:8px;background:#1a1a28}.link-card.svelte-19ekrug.svelte-19ekrug:hover{border-color:#3a3a5c;background:#1e1e32}.link-main.svelte-19ekrug.svelte-19ekrug{flex:1;min-width:0;display:grid;grid-template-columns:minmax(160px,1fr) minmax(120px,220px) auto;gap:8px 12px;align-items:baseline}.link-title.svelte-19ekrug.svelte-19ekrug{color:#e4e4ef;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-url.svelte-19ekrug.svelte-19ekrug{color:#a5b4fc;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-date.svelte-19ekrug.svelte-19ekrug{color:#8888a0;font-size:12px;white-space:nowrap}.link-note.svelte-19ekrug.svelte-19ekrug{grid-column:1 / -1;color:#8888a0;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-actions.svelte-19ekrug.svelte-19ekrug{display:flex;gap:8px;flex-shrink:0}.link-status.svelte-19ekrug.svelte-19ekrug{margin-top:12px;color:#8ee6b1;font-size:12px}.trash-screen.svelte-19ekrug.svelte-19ekrug{padding:24px;overflow-y:auto;flex:1}.trash-header.svelte-19ekrug.svelte-19ekrug{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.trash-header.svelte-19ekrug p.svelte-19ekrug{margin:0;color:#8888a0;font-size:12px}.trash-browser.svelte-19ekrug.svelte-19ekrug{max-width:980px}.trash-section.svelte-19ekrug.svelte-19ekrug{min-width:0}.trash-section.svelte-19ekrug h3.svelte-19ekrug{margin:0 0 10px;font-size:13px;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px}.trash-section-head.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:10px;margin-bottom:10px;min-height:36px}.trash-section-head.svelte-19ekrug h3.svelte-19ekrug{margin:0 0 2px}.trash-section-head.svelte-19ekrug p.svelte-19ekrug{margin:0;color:#8888a0;font-size:12px}.trash-row.svelte-19ekrug.svelte-19ekrug{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border:1px solid #2a2a3c;border-radius:8px;background:#1a1a28;margin-bottom:8px}.trash-row.folder.svelte-19ekrug.svelte-19ekrug{background:#1b2132;border-color:#303856}.trash-row.selected.svelte-19ekrug.svelte-19ekrug{border-color:#6366f1;background:#20203a}.trash-row-icon.svelte-19ekrug.svelte-19ekrug{color:#a5b4fc;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:4px;border-radius:4px;background:transparent;border:none}.trash-row-icon.svelte-19ekrug.svelte-19ekrug:hover{background:#222238;color:#e4e4ef}.trash-row-main.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;gap:2px;min-width:0;padding:2px 0;cursor:pointer;background:transparent;border:none;color:inherit;font:inherit;text-align:left;width:100%;border-radius:4px}.trash-row-main.svelte-19ekrug.svelte-19ekrug:hover{background:#ffffff08}.trash-row-main.svelte-19ekrug:hover .trash-row-title.svelte-19ekrug{color:#a5b4fc}.trash-row-main.svelte-19ekrug.svelte-19ekrug:focus-visible{outline:2px solid #6366f1;outline-offset:2px}.trash-row-title.svelte-19ekrug.svelte-19ekrug{min-width:0;color:#e4e4ef;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trash-row-meta.svelte-19ekrug.svelte-19ekrug{color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trash-row-date.svelte-19ekrug.svelte-19ekrug{color:#666;font-size:11px}.trash-row-actions.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:6px;justify-content:flex-end}.trash-empty-line.svelte-19ekrug.svelte-19ekrug{color:#8888a0;font-size:13px;margin:0}.journal-screen.svelte-19ekrug.svelte-19ekrug{padding:24px;overflow-y:auto;flex:1}.journal-tabs.svelte-19ekrug.svelte-19ekrug{display:flex;gap:0;border-bottom:1px solid #2a2a3c;margin-bottom:16px}.journal-tab.svelte-19ekrug.svelte-19ekrug{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;position:relative}.journal-tab.svelte-19ekrug.svelte-19ekrug:hover{color:#a5b4fc}.journal-tab.active.svelte-19ekrug.svelte-19ekrug{color:#e4e4ef;border-bottom-color:#818cf8;background:#6366f11f;font-weight:600}.journal-header.svelte-19ekrug.svelte-19ekrug{margin-bottom:24px}.journal-summary.svelte-19ekrug.svelte-19ekrug{display:flex;flex-wrap:wrap;gap:24px;margin-bottom:24px;padding:16px;background:#1a1a2e;border-radius:8px;border:1px solid #2a2a3c}.summary-total.svelte-19ekrug.svelte-19ekrug{font-size:18px;font-weight:700;color:#e4e4ef;width:100%;margin-bottom:4px}.summary-section.svelte-19ekrug.svelte-19ekrug{flex:1;min-width:200px}.summary-label.svelte-19ekrug.svelte-19ekrug{font-size:12px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.summary-row.svelte-19ekrug.svelte-19ekrug{display:flex;gap:8px;font-size:13px;padding:4px 0;border-bottom:1px solid #2a2a3c}.summary-row.svelte-19ekrug span.svelte-19ekrug:first-child{flex:1;color:#e4e4ef}.summary-count.svelte-19ekrug.svelte-19ekrug{color:#8888a0}.journal-table-wrap.svelte-19ekrug.svelte-19ekrug{overflow-x:auto}.journal-table.svelte-19ekrug.svelte-19ekrug{width:100%;border-collapse:collapse;font-size:13px}.journal-table.svelte-19ekrug th.svelte-19ekrug{text-align:left;padding:8px 12px;border-bottom:2px solid #2a2a3c;color:#b0b0c8;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.journal-table.svelte-19ekrug td.svelte-19ekrug{padding:8px 12px;border-bottom:1px solid #1a1a28;color:#e4e4ef}.journal-table.svelte-19ekrug tr:hover td.svelte-19ekrug{background:#1e1e32}.journal-table.svelte-19ekrug .link-btn.svelte-19ekrug{color:#a5b4fc}.journal-path-cell.svelte-19ekrug.svelte-19ekrug{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#a0a0b8;font-size:12px}.journal-min-cell.svelte-19ekrug.svelte-19ekrug{text-align:right;font-variant-numeric:tabular-nums}.journal-date-cell.svelte-19ekrug.svelte-19ekrug{color:#b0b0c0;white-space:nowrap}.journal-bool-cell.svelte-19ekrug.svelte-19ekrug{text-align:center;color:#a0a0b8}.journal-row.svelte-19ekrug.svelte-19ekrug{cursor:pointer}.journal-row.svelte-19ekrug:hover td.svelte-19ekrug{background:#1e1e32}.journal-row.expanded.svelte-19ekrug td.svelte-19ekrug{background:#1a1a30;border-bottom:none}.journal-summary-cell.svelte-19ekrug.svelte-19ekrug{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-row-detail.svelte-19ekrug td.svelte-19ekrug{padding:0 12px 12px;background:#16162a}.journal-detail-body.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;gap:12px;padding:8px 0}.journal-detail-actions.svelte-19ekrug.svelte-19ekrug{display:flex;gap:8px;justify-content:flex-end}.journal-detail-section.svelte-19ekrug.svelte-19ekrug{font-size:13px}.journal-detail-label.svelte-19ekrug.svelte-19ekrug{font-size:11px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;display:block;margin-bottom:4px}.journal-detail-section.svelte-19ekrug p.svelte-19ekrug{margin:0;color:#c0c0d0}.journal-event-row.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;color:#b0b0c0}.journal-event-time.svelte-19ekrug.svelte-19ekrug{color:#a0a0b8;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:48px}.journal-event-type.svelte-19ekrug.svelte-19ekrug{color:#8888a0;font-size:11px;background:#1a1a2e;padding:1px 6px;border-radius:3px}.journal-event-title.svelte-19ekrug.svelte-19ekrug{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-node-picker.svelte-19ekrug input[type=text].svelte-19ekrug{padding:6px 10px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:13px;font-family:inherit;width:240px}.journal-search-dropdown.svelte-19ekrug.svelte-19ekrug{position:absolute;top:100%;left:0;right:0;z-index:50;background:#1a1a28;border:1px solid #2a2a3c;border-radius:6px;margin-top:4px;max-height:240px;overflow-y:auto;min-width:260px}.journal-search-item.svelte-19ekrug.svelte-19ekrug{display:block;width:100%;padding:8px 12px;border:none;background:transparent;color:#e4e4ef;cursor:pointer;font-family:inherit;font-size:13px;text-align:left}.journal-search-item.svelte-19ekrug.svelte-19ekrug:hover{background:#2a2a4a}.journal-search-title.svelte-19ekrug.svelte-19ekrug{display:block;font-weight:500}.journal-search-path.svelte-19ekrug.svelte-19ekrug{display:block;font-size:11px;color:#8888a0;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-selected-node.svelte-19ekrug.svelte-19ekrug{cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:#1e1e3a;border:1px solid #3a3a5c;border-radius:4px;font-size:13px;color:#a5b4fc;white-space:nowrap;font-family:inherit}.journal-selected-node.svelte-19ekrug.svelte-19ekrug:hover{background:#2a2a4a}.journal-node-clear.svelte-19ekrug.svelte-19ekrug{color:#8888a0;font-size:14px;margin-left:4px}.journal-status-msg.svelte-19ekrug.svelte-19ekrug{font-size:12px;color:#34d399;padding:4px 8px;background:#1a2a1e;border-radius:4px}.journal-include-chk.svelte-19ekrug.svelte-19ekrug{width:16px;height:16px;accent-color:#6366f1;cursor:pointer}.link-btn.svelte-19ekrug.svelte-19ekrug{background:none;border:none;padding:0;color:#a5b4fc;font:inherit;cursor:pointer;text-align:left}.link-btn.svelte-19ekrug.svelte-19ekrug:hover{text-decoration:underline}.nav-badge.svelte-19ekrug.svelte-19ekrug{background:#6366f1;color:#fff;font-size:10px;font-weight:700;border-radius:10px;padding:1px 6px;margin-left:6px;line-height:1.4}.actions-tab.svelte-19ekrug.svelte-19ekrug{padding:24px}.action-card.svelte-19ekrug.svelte-19ekrug{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.action-info.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.action-title.svelte-19ekrug.svelte-19ekrug{font-weight:500}.action-type.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px;white-space:nowrap}.action-data.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#555;font-family:SF Mono,Fira Code,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.action-btns.svelte-19ekrug.svelte-19ekrug{display:flex;gap:4px;flex-shrink:0}.action-btns.svelte-19ekrug .btn-danger.svelte-19ekrug{color:#ff6b6b;border-color:#4a2222;padding:4px 8px}.action-btns.svelte-19ekrug .btn-danger.svelte-19ekrug:hover{background:#3a2222}.empty-state.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-19ekrug p.svelte-19ekrug{margin:0;font-size:14px;color:#666}.empty-state.svelte-19ekrug .empty-icon.svelte-19ekrug{margin-bottom:12px;color:#444}.empty-state.svelte-19ekrug .hint.svelte-19ekrug{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-19ekrug .empty-actions.svelte-19ekrug{display:flex;gap:8px;justify-content:center;margin-top:16px}.welcome.svelte-19ekrug.svelte-19ekrug{padding:48px 24px;text-align:center}.welcome.svelte-19ekrug h2.svelte-19ekrug{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-19ekrug p.svelte-19ekrug{color:#666;font-size:14px}.error-text.svelte-19ekrug.svelte-19ekrug{color:#f88}.modal-overlay.svelte-19ekrug.svelte-19ekrug{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-19ekrug.svelte-19ekrug{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-19ekrug h3.svelte-19ekrug{font-size:18px;margin-bottom:16px}.modal.svelte-19ekrug textarea.svelte-19ekrug{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;min-height:60px;resize:vertical;box-sizing:border-box}.modal-worklog.svelte-19ekrug.svelte-19ekrug{width:460px}.form-group.svelte-19ekrug.svelte-19ekrug{margin-bottom:12px}.form-row.svelte-19ekrug.svelte-19ekrug{display:flex;gap:16px;margin-bottom:12px}.form-group.svelte-19ekrug label.svelte-19ekrug{display:block}.form-group.svelte-19ekrug .label-text.svelte-19ekrug,.form-group.svelte-19ekrug .form-label.svelte-19ekrug{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-19ekrug input.svelte-19ekrug,.form-group.svelte-19ekrug select.svelte-19ekrug{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-19ekrug select.svelte-19ekrug{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-19ekrug input.svelte-19ekrug:focus,.form-group.svelte-19ekrug select.svelte-19ekrug:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-19ekrug.svelte-19ekrug{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.assign-search.svelte-19ekrug.svelte-19ekrug{position:relative}.assign-search-results.svelte-19ekrug.svelte-19ekrug{position:absolute;left:0;right:0;top:100%;z-index:110;margin-top:4px;background:#1a1a28;border:1px solid #2a2a3c;border-radius:6px;max-height:220px;overflow-y:auto}.assign-search-result.svelte-19ekrug.svelte-19ekrug{width:100%;display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border:0;border-bottom:1px solid #24243a;background:transparent;color:#e4e4ef;text-align:left;cursor:pointer;font-family:inherit}.assign-search-result.svelte-19ekrug.svelte-19ekrug:hover{background:#222238}.assign-search-result.svelte-19ekrug span.svelte-19ekrug:last-child{color:#8888a0;font-size:12px;flex-shrink:0}.assign-hint.svelte-19ekrug.svelte-19ekrug{color:#8888a0;font-size:11px;margin-top:4px}.assign-status.svelte-19ekrug.svelte-19ekrug{color:#8888a0;font-size:12px}.btn.svelte-19ekrug.svelte-19ekrug{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.btn.svelte-19ekrug svg,.inbox-icon-btn.svelte-19ekrug svg{flex-shrink:0}.btn.svelte-19ekrug.svelte-19ekrug:hover{background:#223}.btn-primary.svelte-19ekrug.svelte-19ekrug{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-19ekrug.svelte-19ekrug:hover{background:#4f46e5}.btn.svelte-19ekrug.svelte-19ekrug:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-19ekrug.svelte-19ekrug{padding:4px 10px;font-size:12px}.btn-danger.svelte-19ekrug.svelte-19ekrug{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-19ekrug.svelte-19ekrug:hover{background:#3a2222}.settings-section select,.settings-section input[type=text],.settings-section input[type=url],.settings-section input[type=number],.settings-section input[type=password]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:100%;padding:.5rem .75rem;background:#13131f;border:1px solid #2a2a3e;border-radius:6px;color:#e0e0e0;font-size:.9rem;font-family:inherit;transition:border-color .15s,box-shadow .15s}.settings-section select{padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center;background-size:.85rem}.settings-section select:hover,.settings-section input:hover{border-color:#3a3a5e}.settings-section select:focus,.settings-section input:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 2px #6366f133}.settings-section select:disabled,.settings-section input:disabled{opacity:.45;cursor:not-allowed;border-color:#2a2a3e}.settings-section select option{background:#1e1e2e;color:#e0e0e0}.files-tab.svelte-19ekrug.svelte-19ekrug{padding:20px}.files-tab.svelte-19ekrug .tab-toolbar.svelte-19ekrug{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column}.back-btn.svelte-19ekrug.svelte-19ekrug{margin-bottom:4px;display:inline-flex;align-items:center;gap:4px}.import-summary.svelte-19ekrug.svelte-19ekrug{margin-bottom:16px}.summary-row.svelte-19ekrug.svelte-19ekrug{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-19ekrug.svelte-19ekrug{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}.rename-error.svelte-19ekrug.svelte-19ekrug{color:#ff6b6b;font-size:12px;margin-top:4px}.template-cards.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.template-card.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid #2a2a3c;background:#13131f;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit;width:100%;text-align:left}.template-card.svelte-19ekrug.svelte-19ekrug:hover{background:#1e1e30;border-color:#3a3a5c}.template-card.selected.svelte-19ekrug.svelte-19ekrug{background:#2a2a50;border-color:#6366f1;color:#e4e4ef}.template-card-text.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;gap:2px;min-width:0}.template-card-title.svelte-19ekrug.svelte-19ekrug{font-weight:500}.template-card-desc.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#888}.activity-tab.svelte-19ekrug.svelte-19ekrug{padding:24px}.activity-events.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;gap:2px}.activity-event.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:13px;color:#b0b0c0;cursor:pointer}.activity-event.svelte-19ekrug.svelte-19ekrug:hover{background:#1a1a28;color:#e4e4ef}.activity-event-icon.svelte-19ekrug.svelte-19ekrug{width:18px;text-align:center;color:#6366f1;font-size:13px;flex-shrink:0}.activity-event-title.svelte-19ekrug.svelte-19ekrug{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-event-path.svelte-19ekrug.svelte-19ekrug{max-width:240px;color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-event-type.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#666;flex-shrink:0}.activity-event-target.svelte-19ekrug.svelte-19ekrug{font-size:10px;color:#555;background:#1e1e2e;padding:1px 6px;border-radius:8px;flex-shrink:0}.activity-event-time.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#555;margin-left:8px;flex-shrink:0}.activity-feed.svelte-19ekrug.svelte-19ekrug{padding:24px;overflow-y:auto;flex:1}.activity-feed-events.svelte-19ekrug.svelte-19ekrug{display:flex;flex-direction:column;gap:2px}.activity-feed-event.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer}.activity-feed-event.svelte-19ekrug.svelte-19ekrug:hover{background:#1a1a28;color:#e4e4ef}.activity-feed-icon.svelte-19ekrug.svelte-19ekrug{width:20px;text-align:center;color:#6366f1;font-size:14px;flex-shrink:0;margin-top:1px}.activity-feed-body.svelte-19ekrug.svelte-19ekrug{flex:1;min-width:0}.activity-feed-title.svelte-19ekrug.svelte-19ekrug{font-size:14px;color:#e4e4ef}.activity-feed-meta.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:8px;margin-top:2px}.activity-feed-type.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#666}.activity-feed-target.svelte-19ekrug.svelte-19ekrug{font-size:10px;color:#555;background:#1e1e2e;padding:1px 6px;border-radius:8px}.activity-feed-time.svelte-19ekrug.svelte-19ekrug{font-size:11px;color:#555}.journal-filter-section.svelte-19ekrug.svelte-19ekrug{margin-bottom:12px;padding:12px 16px;background:#1a1a2e;border:1px solid #2a2a3c;border-radius:8px}.journal-filter-heading.svelte-19ekrug.svelte-19ekrug{font-size:11px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;margin-bottom:8px}.journal-filters-row.svelte-19ekrug.svelte-19ekrug{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:flex-end}.journal-filters-row.svelte-19ekrug label.svelte-19ekrug{display:flex;flex-direction:column;gap:3px;font-size:12px;color:#8888a0}.journal-filters-row.svelte-19ekrug input[type=date].svelte-19ekrug{padding:5px 8px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:12px;font-family:inherit}.journal-filters-row.svelte-19ekrug .checkbox-label.svelte-19ekrug{flex-direction:row;align-items:center;gap:6px;cursor:pointer}.journal-filters-row.svelte-19ekrug .checkbox-label input.svelte-19ekrug{width:auto}.journal-export-section.svelte-19ekrug.svelte-19ekrug{padding:8px 16px;background:#1a1a2e;border:1px solid #2a2a3c;border-radius:8px}.journal-export-heading.svelte-19ekrug.svelte-19ekrug{font-size:11px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;margin-bottom:6px}.journal-export-row.svelte-19ekrug.svelte-19ekrug{display:flex;gap:8px;align-items:center}.journal-toggle-col.svelte-19ekrug.svelte-19ekrug{width:32px;min-width:32px;text-align:center;padding:8px 4px!important}.journal-toggle-icon.svelte-19ekrug.svelte-19ekrug{color:#6366f1;font-size:12px}.worklog-entry.svelte-19ekrug.svelte-19ekrug{padding:8px 12px;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;margin-bottom:6px;cursor:pointer}.worklog-entry.svelte-19ekrug.svelte-19ekrug:hover{border-color:#3a3a5c}.worklog-entry.expanded.svelte-19ekrug.svelte-19ekrug{border-color:#6366f1}.worklog-entry-head.svelte-19ekrug.svelte-19ekrug{display:flex;align-items:center;gap:8px;font-size:13px;color:#e4e4ef}.worklog-toggle.svelte-19ekrug.svelte-19ekrug{color:#6366f1;font-size:12px;width:16px;text-align:center;flex-shrink:0}.worklog-entry-summary.svelte-19ekrug.svelte-19ekrug{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.worklog-entry-path.svelte-19ekrug.svelte-19ekrug{max-width:240px;color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.worklog-entry-mins.svelte-19ekrug.svelte-19ekrug{color:#b0b0c8;font-variant-numeric:tabular-nums;white-space:nowrap}.worklog-entry-date.svelte-19ekrug.svelte-19ekrug{color:#b0b0c0;font-size:12px;white-space:nowrap}.worklog-entry-detail.svelte-19ekrug.svelte-19ekrug{margin-top:8px;padding-top:8px;border-top:1px solid #2a2a3c;display:flex;flex-direction:column;gap:8px}.worklog-entry-actions.svelte-19ekrug.svelte-19ekrug{display:flex;gap:8px;justify-content:flex-end}.wl-detail-section.svelte-19ekrug.svelte-19ekrug{font-size:13px}.wl-detail-label.svelte-19ekrug.svelte-19ekrug{font-size:11px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;display:block;margin-bottom:2px}.wl-detail-section.svelte-19ekrug p.svelte-19ekrug{margin:0;color:#c0c0d0}.wl-tag-billable.svelte-19ekrug.svelte-19ekrug{font-size:10px;color:#34d399;background:#1a2a1e;padding:1px 6px;border-radius:8px;white-space:nowrap}.wl-tag-approx.svelte-19ekrug.svelte-19ekrug{font-size:10px;color:#fbbf24;background:#2a2a1a;padding:1px 6px;border-radius:8px;white-space:nowrap}.checkbox-label-inline.svelte-19ekrug.svelte-19ekrug{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#e4e4ef;cursor:pointer}.checkbox-label-inline.svelte-19ekrug input.svelte-19ekrug{width:auto} diff --git a/cmd/verstak-gui/frontend-dist/assets/main-CRc6HR9x.js b/cmd/verstak-gui/frontend-dist/assets/main-CRc6HR9x.js deleted file mode 100644 index 7115337..0000000 --- a/cmd/verstak-gui/frontend-dist/assets/main-CRc6HR9x.js +++ /dev/null @@ -1,5 +0,0 @@ -var dp=Object.defineProperty;var pp=(l,e,t)=>e in l?dp(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var Vt=(l,e,t)=>pp(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 gp(l,e){for(const t in e)l[t]=e[t];return l}function Ac(l){return l()}function Ns(){return Object.create(null)}function me(l){l.forEach(Ac)}function jt(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 mp(l){return Object.keys(l).length===0}function _p(l,e,t,n){if(l){const i=Mc(l,e,t,n);return l[0](i)}}function Mc(l,e,t,n){return l[1]&&n?gp(t.ctx.slice(),l[1](n(e))):t.ctx}function vp(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 bp(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=wp(e,t,{cancelable:n});return i.slice().forEach(r=>{r.call(l,o)}),!o.defaultPrevented}return!0}}function Pc(l,e){const t=l.$$.callbacks[e.type];t&&t.slice().forEach(n=>n.call(this,e))}const Sl=[],bn=[];let Tl=[];const Ms=[],Lc=Promise.resolve();let fi=!1;function jc(){fi||(fi=!0,Lc.then(Fc))}function yp(){return jc(),Lc}function ol(l){Tl.push(l)}const ii=new Set;let yl=0;function Fc(){if(yl!==0)return;const l=Vl;do{try{for(;yll.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),Tl=e}const hn=new Set;let sl;function at(){sl={r:0,c:[],p:sl}}function ct(){sl.r||me(sl.c),sl=sl.p}function fe(l,e){l&&l.i&&(hn.delete(l),l.i(e))}function ge(l,e,t,n){if(l&&l.o){if(hn.has(l))return;hn.add(l),sl.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 zc(l,e){ge(l,1,1,()=>{e.delete(l.key)})}function Rc(l,e,t,n,i,o,r,c,f,p,v,g){let h=l.length,m=o.length,w=h;const b={};for(;w--;)b[l[w].key]=w;const y=[],T=new Map,E=new Map,I=[];for(w=m;w--;){const D=g(i,o,w),M=t(D);let F=r.get(M);F?I.push(()=>F.p(D,e)):(F=p(M,D),F.c()),T.set(M,y[w]=F),M in b&&E.set(M,Math.abs(w-b[M]))}const N=new Set,A=new Set;function j(D){fe(D,1),D.m(c,v),r.set(D.key,D),v=D.first,m--}for(;h&&m;){const D=y[m-1],M=l[h-1],F=D.key,B=M.key;D===M?(v=D.first,h--,m--):T.has(B)?!r.has(F)||N.has(F)?j(D):A.has(B)?h--:E.get(F)>E.get(B)?(A.add(F),j(D)):(N.add(B),h--):(f(M,r),h--)}for(;h--;){const D=l[h];T.has(D.key)||f(D,r)}for(;m;)j(y[m-1]);return me(I),y}function Ve(l){l&&l.c()}function He(l,e,t){const{fragment:n,after_update:i}=l.$$;n&&n.m(e,t),ol(()=>{const o=l.$$.on_mount.map(Ac).filter(jt);l.$$.on_destroy?l.$$.on_destroy.push(...o):me(o),l.$$.on_mount=[]}),i.forEach(ol)}function We(l,e){const t=l.$$;t.fragment!==null&&(Sp(t.after_update),me(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Tp(l,e){l.$$.dirty[0]===-1&&(Sl.push(l),jc(),l.$$.dirty.fill(0)),l.$$.dirty[e/31|0]|=1<{const w=m.length?m[0]:h;return p.ctx&&i(p.ctx[g],p.ctx[g]=w)&&(!p.skip_bound&&p.bound[g]&&p.bound[g](w),v&&Tp(l,g)),h}):[],p.update(),v=!0,me(p.before_update),p.fragment=n?n(p.ctx):!1,e.target){if(e.hydrate){const g=bp(e.target);p.fragment&&p.fragment.l(g),g.forEach(C)}else p.fragment&&p.fragment.c();e.intro&&fe(l.$$.fragment),He(l,e.target,e.anchor),Fc()}Wl(f)}class xe{constructor(){Vt(this,"$$");Vt(this,"$$set")}$destroy(){We(this,1),this.$destroy=te}$on(e,t){if(!jt(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&&!mp(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Ep="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Ep);function Dp(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&&(C(e),C(t))}}}function Ip(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&&(C(e),C(t),C(n),C(i),C(o))}}}function Np(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&&(C(e),C(t))}}}function Ap(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&&(C(e),C(t),C(n),C(i))}}}function Mp(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&&(C(e),C(t),C(n),C(i),C(o))}}}function Pp(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&&(C(e),C(t),C(n),C(i),C(o),C(r))}}}function Lp(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&&(C(e),C(t),C(n),C(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&&(C(e),C(t),C(n),C(i),C(o))}}}function Fp(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&&(C(e),C(t),C(n))}}}function zp(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&&(C(e),C(t))}}}function Rp(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&&(C(e),C(t),C(n))}}}function Op(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&&C(e)}}}function Bp(l){let e;function t(o,r){return o[0]==="folder"?Op:o[0]==="image"?Rp:o[0]==="video"?zp:o[0]==="audio"?Fp:o[0]==="pdf"?jp:o[0]==="document"?Lp:o[0]==="spreadsheet"?Pp:o[0]==="presentation"?Mp:o[0]==="archive"?Ap:o[0]==="code"?Np:o[0]==="text"?Ip:Dp}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&&C(e),i.d()}}}function Hp(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 Oc extends xe{constructor(e){super(),Ze(this,e,Hp,Bp,Xe,{kind:0,size:1})}}const Wp={"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":"Срок действия токена истёк"},Vp={"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"},Ps={ru:Wp,en:Vp};let Ls="ru";function _(l,e){var i;const t=Ps[Ls];let n=t==null?void 0:t[l];if(n==null&&Ls!=="ru"&&(n=(i=Ps.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":_("mime.jpeg"),"image/png":_("mime.png"),"image/gif":_("mime.gif"),"image/webp":_("mime.webp"),"image/svg+xml":_("mime.svg"),"image/bmp":_("mime.bmp"),"image/tiff":_("mime.tiff"),"image/avif":_("mime.avif"),"application/pdf":_("mime.pdf"),"application/msword":_("mime.word"),"application/vnd.openxmlformats-officedocument.wordprocessingml.document":_("mime.word"),"application/vnd.ms-excel":_("mime.excel"),"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":_("mime.excel"),"application/vnd.ms-powerpoint":_("mime.ppt"),"application/vnd.openxmlformats-officedocument.presentationml.presentation":_("mime.ppt"),"application/zip":_("mime.zip"),"application/gzip":_("mime.gzip"),"application/x-tar":_("mime.tar"),"application/x-7z-compressed":_("mime.sevenz"),"application/x-rar-compressed":_("mime.rar"),"text/plain":_("mime.text"),"text/html":_("mime.html"),"text/css":_("mime.css"),"text/javascript":_("mime.js"),"application/json":_("mime.json"),"application/xml":_("mime.xml"),"application/x-yaml":_("mime.yaml"),"application/octet-stream":_("mime.binary"),"application/x-msdos-program":_("mime.executable"),"inode/directory":_("mime.folder")};function js(l){return l?di[l]||l:_("mime.unknown")}function Up(l){if(l.type==="folder")return _("mime.folder");const e=(l.mime||"").toLowerCase();if(di[e])return di[e];const n=(l.name||"").toLowerCase().split(".").pop();return n?n.toUpperCase():_("mime.file")}function Bc(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 Hc=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],Wc=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],Vc=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],Uc=["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!!(Hc.includes(e)||Uc.includes(n)||e.includes("pdf")||Wc.includes(e)||Vc.includes(n))}function Kc(l){const e=(l.mime||"").toLowerCase(),n=(l.name||"").toLowerCase().split(".").pop();return Hc.includes(e)||Uc.includes(n)}function Gc(l){const e=(l.mime||"").toLowerCase(),n=(l.name||"").toLowerCase().split(".").pop();return Wc.includes(e)||Vc.includes(n)&&n!=="md"&&n!=="markdown"}function Jc(l){return(l.mime||"").toLowerCase().includes("pdf")}function qc(l){const e=(l.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function Kp(l){return Kc(l)||Jc(l)}function Gp(l){return Gc(l)||qc(l)}const{window:Jp}=gi;function qp(l){let e,t,n,i=wn(l[0].size)+"",o;return{c(){e=u("span"),e.textContent="·",t=k(),n=u("span"),o=z(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&&(C(e),C(t),C(n))}}}function Yp(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",_("file.openFolder")),s(e,"aria-label",_("file.openFolder")),s(n,"class","action-btn svelte-1skuef2"),s(n,"title",_("file.showInExplorer")),s(n,"aria-label",_("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&&(C(e),C(t),C(n)),i=!1,me(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",_("file.preview")),s(e,"aria-label",_("file.preview")),s(n,"class","action-btn svelte-1skuef2"),s(n,"title",_("file.openExternal")),s(n,"aria-label",_("file.openExternal")),s(o,"class","action-btn svelte-1skuef2"),s(o,"title",_("file.showInExplorer")),s(o,"aria-label",_("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&&(C(e),C(t),C(n),C(i),C(o)),r=!1,me(c)}}}function Fs(l){let e,t,n,i,o,r,c,f,p=_("common.open")+"",v,g,h,m,w,b,y,T,E=_("file.openExternal")+"",I,N,A,j,D,M,F=_("file.showInExplorer")+"",B,W,H,U,J,Y,Q,R,V,O=_("common.rename")+"",X,q,G,x,ee,le,ce,pe=_("common.duplicate")+"",Ee,ze,_e,$,se,Ce,De,we,Le,Qe=_("common.cut")+"",Ae,$e,Re,je,Ne,Ge,Se,Pe=_("common.copy")+"",Me,ft,Z,ye,ve,ke,Je,qe,Ue,tt=_("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(),v=z(p),g=k(),h=u("button"),m=ie("svg"),w=ie("path"),b=ie("polyline"),y=ie("line"),T=k(),I=z(E),N=k(),A=u("button"),j=ie("svg"),D=ie("path"),M=k(),B=z(F),W=k(),H=u("div"),U=k(),J=u("button"),Y=ie("svg"),Q=ie("path"),R=ie("path"),V=k(),X=z(O),q=k(),G=u("button"),x=ie("svg"),ee=ie("rect"),le=ie("path"),ce=k(),Ee=z(pe),ze=k(),_e=u("button"),$=ie("svg"),se=ie("circle"),Ce=ie("circle"),De=ie("line"),we=ie("line"),Le=k(),Ae=z(Qe),$e=k(),Re=u("button"),je=ie("svg"),Ne=ie("rect"),Ge=ie("path"),Se=k(),Me=z(Pe),ft=k(),Z=u("div"),ye=k(),ve=u("button"),ke=ie("svg"),Je=ie("polyline"),qe=ie("path"),Ue=k(),Ye=z(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(w,"d","M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"),s(b,"points","15 3 21 3 21 9"),s(y,"x1","10"),s(y,"y1","14"),s(y,"x2","21"),s(y,"y2","3"),s(m,"width","14"),s(m,"height","14"),s(m,"viewBox","0 0 24 24"),s(m,"fill","none"),s(m,"stroke","currentColor"),s(m,"stroke-width","2"),s(m,"stroke-linecap","round"),s(m,"stroke-linejoin","round"),s(h,"class","menu-item svelte-1skuef2"),s(h,"role","menuitem"),s(D,"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(j,"width","14"),s(j,"height","14"),s(j,"viewBox","0 0 24 24"),s(j,"fill","none"),s(j,"stroke","currentColor"),s(j,"stroke-width","2"),s(j,"stroke-linecap","round"),s(j,"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(R,"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(J,"class","menu-item svelte-1skuef2"),s(J,"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(je,"width","14"),s(je,"height","14"),s(je,"viewBox","0 0 24 24"),s(je,"fill","none"),s(je,"stroke","currentColor"),s(je,"stroke-width","2"),s(je,"stroke-linecap","round"),s(je,"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,v),a(n,g),a(n,h),a(h,m),a(m,w),a(m,b),a(m,y),a(h,T),a(h,I),a(n,N),a(n,A),a(A,j),a(j,D),a(A,M),a(A,B),a(n,W),a(n,H),a(n,U),a(n,J),a(J,Y),a(Y,Q),a(Y,R),a(J,V),a(J,X),a(n,q),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,je),a(je,Ne),a(je,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(h,"click",l[10]),L(A,"click",l[11]),L(J,"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&&(C(e),C(t),C(n)),Oe=!1,me(et)}}}function Xp(l){let e,t,n,i,o,r,c=l[0].name+"",f,p,v,g,h,m,w,b,y,T,E,I,N,A,j,D,M,F,B,W,H,U;n=new Oc({props:{kind:l[6],size:22}});let J=!l[7]&&qp(l);function Y(O,X){return O[7]?Yp:Qp}let R=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=z(c),v=k(),g=u("div"),h=u("span"),h.textContent=`${l[8]}`,m=k(),J&&J.c(),w=k(),b=u("div"),R.c(),y=k(),T=u("button"),E=ie("svg"),I=ie("circle"),N=ie("circle"),A=ie("circle"),j=k(),D=u("button"),D.innerHTML='',F=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(g,"class","file-row-meta svelte-1skuef2"),s(o,"class","file-row-body svelte-1skuef2"),s(I,"cx","12"),s(I,"cy","5"),s(I,"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",_("file.more")),s(T,"aria-label",_("file.more")),s(T,"aria-expanded",l[2]),s(D,"class","action-btn action-btn-danger svelte-1skuef2"),s(D,"title",_("common.delete")),s(D,"aria-label",_("common.delete")),s(b,"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]?_("file.ariaFolder")+" "+l[0].name:_("file.ariaFile")+" "+l[0].name),ae(e,"file-row--selected",l[1])},m(O,X){S(O,e,X),a(e,t),He(n,t,null),a(e,i),a(e,o),a(o,r),a(r,f),a(o,v),a(o,g),a(g,h),a(g,m),J&&J.m(g,null),a(e,w),a(e,b),R.m(b,null),a(b,y),a(b,T),a(T,E),a(E,I),a(E,N),a(E,A),a(b,j),a(b,D),S(O,F,X),V&&V.m(O,X),S(O,B,X),W=!0,H||(U=[L(Jp,"click",l[19]),L(T,"click",Ie(l[18])),L(D,"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(O,X){(!W||X[0]&1)&&c!==(c=O[0].name+"")&&K(f,c),(!W||X[0]&1&&p!==(p=O[0].name))&&s(r,"title",p),O[7]||J.p(O,X),R.p(O,X),(!W||X[0]&4)&&s(T,"aria-expanded",O[2]),(!W||X[0]&1&&M!==(M=O[7]?_("file.ariaFolder")+" "+O[0].name:_("file.ariaFile")+" "+O[0].name))&&s(e,"aria-label",M),(!W||X[0]&2)&&ae(e,"file-row--selected",O[1]),O[2]?V?V.p(O,X):(V=Fs(O),V.c(),V.m(B.parentNode,B)):V&&(V.d(1),V=null)},i(O){W||(fe(n.$$.fragment,O),W=!0)},o(O){ge(n.$$.fragment,O),W=!1},d(O){O&&(C(e),C(F),C(B)),We(n),J&&J.d(),R.d(),V&&V.d(O),H=!1,me(U)}}}function Zp(l,e,t){let{item:n}=e,{selected:i=!1}=e,{onDragStart:o}=e,{onDragOver:r}=e,{onDrop:c}=e;const f=Jl(),p=Bc(n),v=n.type==="folder",g=Up(n);let h=!1,m=0,w=0,b=null;function y(X){X.ctrlKey||X.metaKey?f("toggleSelect",n.id):X.shiftKey?f("rangeSelect",n.id):b?(clearTimeout(b),b=null,v?f("navigate",n.id):f("preview",n)):b=setTimeout(()=>{b=null,f("selectOne",n.id)},250)}function T(){f("openExternal",n.fileId)}function E(){t(2,h=!1),f("showInFolder",n.nodeId||n.id)}function I(){t(2,h=!1),f("delete",{id:n.id,type:n.type})}function N(){t(2,h=!1),f("rename",{id:n.id,name:n.name})}function A(){t(2,h=!1),f("duplicate",n.id)}function j(){t(2,h=!1),f("cut",n.id)}function D(){t(2,h=!1),f("copy",n.id)}function M(){t(2,h=!1),v?f("navigate",n.id):f("preview",n)}function F(){t(2,h=!h)}function B(){t(2,h=!1)}function W(X){o&&o(X,n.id)}function H(X){r&&v&&r(X,n.id)}function U(X){c&&v&&c(X,n.id)}function J(X){X.preventDefault(),t(3,m=Math.min(X.clientX,window.innerWidth-240)),t(4,w=Math.min(X.clientY,window.innerHeight-320)),t(2,h=!0)}function Y(X){(X.key==="Enter"||X.key===" ")&&(X.preventDefault(),y(X))}function Q(X){Pc.call(this,l,X)}const R=()=>f("preview",n),V=()=>f("navigate",n.id),O=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,h,m,w,f,p,v,g,y,T,E,I,N,A,j,D,M,F,B,W,H,U,J,Y,o,r,c,Q,R,V,O]}class xp extends xe{constructor(e){super(),Ze(this,e,Zp,Xp,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 $p(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&&C(e)}}}function eg(l){let e,t=l[4].name+"",n,i,o;function r(){return l[2](l[6])}return{c(){e=u("button"),n=z(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&&C(e),i=!1,o()}}}function tg(l){let e,t=l[4].name+"",n;return{c(){e=u("span"),n=z(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&&C(e)}}}function Rs(l){let e,t,n=l[6]>0&&$p();function i(c,f){return c[6]===c[0].length-1?tg:eg}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&&(C(e),C(t)),n&&n.d(c),r.d(c)}}}function lg(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 Yc extends xe{constructor(e){super(),Ze(this,e,ng,lg,Xe,{crumbs:0})}}function ig(l){let e,t,n,i,o,r;return{c(){e=u("div"),t=u("p"),t.textContent=`${_("file.previewUnavailable")}`,n=k(),i=u("button"),i.textContent=`${_("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&&C(e),o=!1,r()}}}function sg(l){let e,t;function n(r,c){return c&2&&(e=null),e==null&&(e=!!(r[1]&&r[1].startsWith("data:"))),e?fg:ug}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&&C(t),o.d(r)}}}function og(l){let e,t,n;return{c(){e=u("pre"),t=u("code"),n=z(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&&C(e)}}}function rg(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&&C(e)}}}function ag(l){let e,t,n,i,o,r,c;return{c(){e=u("div"),t=u("p"),n=z(l[3]),i=k(),o=u("button"),o.textContent=`${_("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&&C(e),r=!1,c()}}}function cg(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${_("common.loading")}`,s(e,"class","preview-status svelte-1cw3u0m")},m(n,i){S(n,e,i),a(e,t)},p:te,d(n){n&&C(e)}}}function ug(l){let e,t,n,i,o,r;return{c(){e=u("div"),t=u("p"),t.textContent=`${_("file.pdfUnavailable")}`,n=k(),i=u("button"),i.textContent=`${_("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&&C(e),o=!1,r()}}}function fg(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&&C(e)}}}function dg(l){let e,t,n,i,o,r,c,f=l[0].name+"",p,v,g,h,m=wn(l[0].size)+"",w,b,y=js(l[0].mime)+"",T,E,I,N,A,j,D,M,F,B,W;o=new Oc({props:{kind:l[8],size:18}});function H(Y,Q){return Y[2]?cg:Y[3]?ag:Y[6]&&Y[1]?rg:Y[5]&&Y[1]?og:Y[4]?sg:ig}let U=H(l),J=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=z(f),g=k(),h=u("div"),w=z(m),b=z(" · "),T=z(y),E=k(),I=u("div"),N=u("button"),N.innerHTML='',A=k(),j=u("button"),j.innerHTML='',D=k(),M=u("div"),J.c(),s(c,"class","preview-name svelte-1cw3u0m"),s(c,"title",v=l[0].name),s(i,"class","preview-title svelte-1cw3u0m"),s(h,"class","preview-meta svelte-1cw3u0m"),s(N,"class","action-btn svelte-1cw3u0m"),s(N,"title",_("file.openExternal")),s(N,"aria-label",_("file.openExternal")),s(j,"class","action-btn action-btn-close svelte-1cw3u0m"),s(j,"title","Close"),s(j,"aria-label","Close preview"),s(I,"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,g),a(n,h),a(h,w),a(h,b),a(h,T),a(n,E),a(n,I),a(I,N),a(I,A),a(I,j),a(t,D),a(t,M),J.m(M,null),F=!0,B||(W=[L(N,"click",l[9]),L(j,"click",l[10]),L(e,"click",Ct(l[11])),L(e,"keydown",l[12])],B=!0)},p(Y,[Q]){(!F||Q&1)&&f!==(f=Y[0].name+"")&&K(p,f),(!F||Q&1&&v!==(v=Y[0].name))&&s(c,"title",v),(!F||Q&1)&&m!==(m=wn(Y[0].size)+"")&&K(w,m),(!F||Q&1)&&y!==(y=js(Y[0].mime)+"")&&K(T,y),U===(U=H(Y))&&J?J.p(Y,Q):(J.d(1),J=U(Y),J&&(J.c(),J.m(M,null)))},i(Y){F||(fe(o.$$.fragment,Y),F=!0)},o(Y){ge(o.$$.fragment,Y),F=!1},d(Y){Y&&C(e),We(o),J.d(),B=!1,me(W)}}}function pg(l,e,t){let n,i,o,{item:r}=e,{content:c=""}=e,{loading:f=!1}=e,{error:p=""}=e;const v=Jl(),g=Bc(r);function h(T){T.key==="Escape"&&v("close")}function m(){v("openExternal",r.fileId)}Kl(()=>{window.addEventListener("keydown",h)}),Gl(()=>{window.removeEventListener("keydown",h)});const w=()=>v("close"),b=()=>v("close"),y=T=>{T.key==="Escape"&&(T.preventDefault(),v("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=Kc(r)&&c&&c.startsWith("data:")),l.$$.dirty&1&&t(5,i=Gc(r)||qc(r)),l.$$.dirty&1&&t(4,o=Jc(r))},[r,c,f,p,o,i,n,v,g,m,w,b,y]}class gg extends xe{constructor(e){super(),Ze(this,e,pg,dg,Xe,{item:0,content:1,loading:2,error:3})}}function mg(l){let e,t,n,i,o,r,c,f,p,v,g,h,m,w,b,y,T;return{c(){e=u("div"),t=u("div"),n=u("h3"),i=z(l[0]),o=k(),r=u("p"),c=z(l[1]),f=k(),p=u("div"),v=u("button"),g=z(l[2]),m=k(),w=u("button"),b=z(l[3]),s(n,"class","svelte-1fv6yyk"),s(r,"class","message svelte-1fv6yyk"),s(v,"class",h="btn "+(l[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk"),s(w,"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,I){S(E,e,I),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,v),a(v,g),a(p,m),a(p,w),a(w,b),y||(T=[L(v,"click",l[6]),L(w,"click",l[7]),L(e,"click",Ct(l[8])),L(e,"keydown",l[9])],y=!0)},p(E,[I]){I&1&&K(i,E[0]),I&2&&K(c,E[1]),I&4&&K(g,E[2]),I&16&&h!==(h="btn "+(E[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk")&&s(v,"class",h),I&8&&K(b,E[3])},i:te,o:te,d(E){E&&C(e),y=!1,me(T)}}}function _g(l,e,t){let{title:n=_("common.confirm")}=e,{message:i=""}=e,{confirmText:o=_("common.delete")}=e,{cancelText:r=_("common.cancel")}=e,{danger:c=!1}=e;const f=Jl(),p=()=>f("confirm"),v=()=>f("cancel"),g=()=>f("cancel"),h=m=>{m.key==="Escape"&&(m.preventDefault(),f("cancel"))};return l.$$set=m=>{"title"in m&&t(0,n=m.title),"message"in m&&t(1,i=m.message),"confirmText"in m&&t(2,o=m.confirmText),"cancelText"in m&&t(3,r=m.cancelText),"danger"in m&&t(4,c=m.danger)},[n,i,o,r,c,f,p,v,g,h]}class vg extends xe{constructor(e){super(),Ze(this,e,_g,mg,Xe,{title:0,message:1,confirmText:2,cancelText:3,danger:4})}}function hg(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&&(C(e),C(t),C(n))}}}function kg(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&&(C(e),C(t),C(n),C(i))}}}function bg(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&&(C(e),C(t))}}}function wg(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&&(C(e),C(t))}}}function yg(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&&(C(e),C(t),C(n),C(i),C(o))}}}function Cg(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&&(C(e),C(t),C(n),C(i))}}}function Sg(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&&(C(e),C(t))}}}function Tg(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&&(C(e),C(t),C(n),C(i))}}}function Eg(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&&C(e)}}}function Dg(l){let e;function t(o,r){return o[0]==="folder"?Eg:o[0]==="project"?Tg:o[0]==="client"?Sg:o[0]==="document"?Cg:o[0]==="recipe"?yg:o[0]==="note"?wg:o[0]==="file"?bg:o[0]==="case"?kg:hg}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&&C(e),i.d()}}}function Ig(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,Ig,Dg,Xe,{kind:0,size:1})}}function Os(l,e,t){const n=l.slice();return n[44]=e[t],n}function Ng(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&&C(e)}}}function Ag(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=z(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&&C(e),o=!1,r()}}}function Bs(l){let e,t;return e=new Qc({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){ge(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+"",v,g,h=e[1][e[44].id]&&pi(e[44]),m,w,b,y;function T(R,V){return V[0]&1&&(n=null),n==null&&(n=!!Bl(R[44])),n?Ag:Ng}let E=T(e,[-1,-1]),I=E(e);r=new Tn({props:{kind:Ws(e[44]),size:16}});function N(...R){return e[26](e[44],...R)}function A(...R){return e[27](e[44],...R)}function j(){return e[28](e[44])}function D(...R){return e[29](e[44],...R)}function M(...R){return e[30](e[44],...R)}function F(...R){return e[31](e[44],...R)}function B(...R){return e[32](e[44],...R)}function W(...R){return e[33](e[44],...R)}function H(...R){return e[34](e[44],...R)}function U(...R){return e[35](e[44],...R)}function J(...R){return e[36](e[44],...R)}function Y(...R){return e[37](e[44],...R)}let Q=h&&Bs(e);return{key:l,first:null,c(){t=u("div"),I.c(),i=k(),o=u("span"),Ve(r.$$.fragment),c=k(),f=u("span"),v=z(p),g=k(),Q&&Q.c(),m=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(R,V){S(R,t,V),I.m(t,null),a(t,i),a(t,o),He(r,o,null),a(t,c),a(t,f),a(f,v),S(R,g,V),Q&&Q.m(R,V),S(R,m,V),w=!0,b||(y=[L(o,"click",N),L(o,"keydown",A),L(o,"dblclick",Ie(e[24])),L(f,"click",Ie(j)),L(f,"keydown",D),L(t,"dragstart",M),L(t,"dragover",F),L(t,"dragleave",B),L(t,"drop",W),L(t,"click",H),L(t,"keydown",U),L(t,"dblclick",J),L(t,"contextmenu",Sn(Y))],b=!0)},p(R,V){e=R,E===(E=T(e,V))&&I?I.p(e,V):(I.d(1),I=E(e),I&&(I.c(),I.m(t,i)));const O={};V[0]&1&&(O.kind=Ws(e[44])),r.$set(O),(!w||V[0]&1)&&p!==(p=e[44].title+"")&&K(v,p),(!w||V[0]&8)&&kt(t,"padding-left",e[3]*16+4+"px"),(!w||V[0]&5)&&ae(t,"selected",e[2]===e[44].id),(!w||V[0]&769)&&ae(t,"drop-valid",e[8]===e[44].id&&e[9][e[44].id]),(!w||V[0]&769)&&ae(t,"drop-invalid",e[8]===e[44].id&&!e[9][e[44].id]),V[0]&3&&(h=e[1][e[44].id]&&pi(e[44])),h?Q?(Q.p(e,V),V[0]&3&&fe(Q,1)):(Q=Bs(e),Q.c(),fe(Q,1),Q.m(m.parentNode,m)):Q&&(at(),ge(Q,1,1,()=>{Q=null}),ct())},i(R){w||(fe(r.$$.fragment,R),fe(Q),w=!0)},o(R){ge(r.$$.fragment,R),ge(Q),w=!1},d(R){R&&(C(t),C(g),C(m)),I.d(),We(r),Q&&Q.d(R),b=!1,me(y)}}}function Mg(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 Pg(l){try{return l.dataTransfer.getData("text/plain")}catch{return""}}function Lg(l,e,t){let n,i,o,{nodes:r=[]}=e,{expanded:c={}}=e,{selectedNodeId:f=""}=e,{level:p=0}=e,{onSelect:v=void 0}=e,{onToggle:g=void 0}=e,{onContextMenu:h=void 0}=e,{onDrop:m=void 0}=e,w={},b=null,y="",T="";const E=["folder","project","client","document","recipe","case"];Gl(()=>{for(const $ of Object.keys(w))clearTimeout(w[$]);b&&clearInterval(b)});function I($){return E.includes($.type)}function N($,se,Ce){if(!$||!se||se===$.id||!I($))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,y=se.id)}function j($,se){$.preventDefault(),$.stopPropagation(),$.dataTransfer.dropEffect="move",T!==se.id&&t(8,T=se.id),Bl(se)&&!c[se.id]&&!w[se.id]&&(w[se.id]=setTimeout(()=>{g&&g(se.id),delete w[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)):b&&(clearInterval(b),b=null)}}function D($,se){const Ce=$.relatedTarget;Ce&&$.currentTarget.contains(Ce)||(T===se.id&&t(8,T=""),w[se.id]&&(clearTimeout(w[se.id]),delete w[se.id]),b&&(clearInterval(b),b=null))}function M($,se){$.preventDefault(),$.stopPropagation(),w[se.id]&&(clearTimeout(w[se.id]),delete w[se.id]),b&&(clearInterval(b),b=null);const Ce=Us(r),De=Vs(Ce),we=Pg($);if(!N(se,we,De)){t(8,T=""),t(21,y="");return}m&&m(we,se.id),t(8,T=""),t(21,y="")}function F(){t(8,T=""),t(21,y="");for(const $ of Object.keys(w))clearTimeout(w[$]),delete w[$];b&&(clearInterval(b),b=null)}function B($,se){$.target.closest(".tree-toggle")||$.target.closest(".tree-icon")||v&&v(se)}function W($,se){Bl(se)&&g&&g(se.id)}function H($,se){($.key==="Enter"||$.key===" ")&&($.preventDefault(),v&&v(se))}function U($,se){$.stopPropagation(),Bl(se)&&g&&g(se.id)}function J($,se){($.key==="Enter"||$.key===" ")&&($.preventDefault(),$.stopPropagation(),Bl(se)&&g&&g(se.id))}function Y($,se){($.key==="Enter"||$.key===" ")&&($.preventDefault(),v&&v(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 R($){Pc.call(this,l,$)}const V=$=>g&&g($.id),O=($,se)=>U(se,$),X=($,se)=>J(se,$),q=$=>v&&v($),G=($,se)=>Y(se,$),x=($,se)=>A(se,$),ee=($,se)=>j(se,$),le=($,se)=>D(se,$),ce=($,se)=>M(se,$),pe=($,se)=>B(se,$),Ee=($,se)=>H(se,$),ze=($,se)=>W(se,$),_e=($,se)=>h&&h(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,v=$.onSelect),"onToggle"in $&&t(5,g=$.onToggle),"onContextMenu"in $&&t(6,h=$.onContextMenu),"onDrop"in $&&t(7,m=$.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,y,i))},[r,c,f,p,v,g,h,m,T,o,A,j,D,M,F,B,W,H,U,J,Y,y,i,n,R,V,O,X,q,G,x,ee,le,ce,pe,Ee,ze,_e]}class Qc extends xe{constructor(e){super(),Ze(this,e,Lg,Mg,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=z(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&&C(e)}}}function Gs(l){let e,t;return{c(){e=u("div"),t=z(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&&C(e)}}}function jg(l){let e,t,n,i,o,r,c,f,p,v,g,h,m,w,b,y,T,E=_("firstrun.browse")+"",I,N,A,j,D,M,F=(l[2]?_("firstrun.creating"):_("firstrun.create"))+"",B,W,H,U,J,Y,Q=l[4]&&Ks(l),R=l[3]&&Gs(l);return{c(){e=u("div"),t=u("div"),n=u("img"),o=k(),r=u("h1"),r.textContent=`${_("firstrun.title")}`,c=k(),f=u("p"),f.textContent=`${_("firstrun.desc")}`,p=k(),v=u("div"),g=u("label"),g.textContent=`${_("firstrun.pathLabel")}`,h=k(),m=u("div"),w=u("input"),y=k(),T=u("button"),I=z(E),N=k(),Q&&Q.c(),A=k(),R&&R.c(),j=k(),D=u("div"),M=u("button"),B=z(F),H=k(),U=u("button"),U.textContent=`${_("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(g,"class","form-label svelte-a9f1pd"),s(g,"for","vault-path"),s(w,"id","vault-path"),s(w,"type","text"),s(w,"placeholder",b=l[1]||_("firstrun.defaultPath")),w.disabled=l[2],s(w,"class","svelte-a9f1pd"),s(T,"class","btn"),T.disabled=l[2],s(m,"class","input-row svelte-a9f1pd"),s(v,"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(D,"class","first-run-actions svelte-a9f1pd"),s(t,"class","first-run-card svelte-a9f1pd"),s(e,"class","first-run-screen svelte-a9f1pd")},m(V,O){S(V,e,O),a(e,t),a(t,n),a(t,o),a(t,r),a(t,c),a(t,f),a(t,p),a(t,v),a(v,g),a(v,h),a(v,m),a(m,w),be(w,l[0]),a(m,y),a(m,T),a(T,I),a(t,N),Q&&Q.m(t,null),a(t,A),R&&R.m(t,null),a(t,j),a(t,D),a(D,M),a(M,B),a(D,H),a(D,U),J||(Y=[L(w,"input",l[12]),L(w,"input",l[6]),L(w,"keydown",l[9]),L(T,"click",l[5]),L(M,"click",l[7]),L(U,"click",l[8])],J=!0)},p(V,[O]){O&2&&b!==(b=V[1]||_("firstrun.defaultPath"))&&s(w,"placeholder",b),O&4&&(w.disabled=V[2]),O&1&&w.value!==V[0]&&be(w,V[0]),O&4&&(T.disabled=V[2]),V[4]?Q?Q.p(V,O):(Q=Ks(V),Q.c(),Q.m(t,A)):Q&&(Q.d(1),Q=null),V[3]?R?R.p(V,O):(R=Gs(V),R.c(),R.m(t,j)):R&&(R.d(1),R=null),O&4&&F!==(F=(V[2]?_("firstrun.creating"):_("firstrun.create"))+"")&&K(B,F),O&5&&W!==(W=!V[0].trim()||V[2])&&(M.disabled=W)},i:te,o:te,d(V){V&&C(e),Q&&Q.d(),R&&R.d(),J=!1,me(Y)}}}function gn(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 Fg(l,e,t){let{onComplete:n=null}=e,{onQuit:i=null}=e,o="",r="",c=!1,f="",p="",v=null;async function g(){try{const E=await gn("GetDefaultVaultPath");t(1,r=E||""),t(0,o=r||""),o&&await m()}catch{t(1,r="")}}g();async function h(){try{const E=await gn("PickDirectory");E&&(t(0,o=E),await m())}catch(E){t(3,f=String(E))}}async function m(){if(!o||!o.trim()){t(4,p=""),v=null;return}try{v=await gn("CheckVaultPath",o.trim()),v&&t(4,p=v.description)}catch{t(4,p=""),v=null}}async function w(){if(!(!o||!o.trim())){if(t(2,c=!0),t(3,f=""),v&&!v.writable){t(3,f=_("firstrun.errorNoWrite")),t(2,c=!1);return}try{const E=await gn("CreateVault",o.trim());E&&E.status==="ready"&&n&&n(E)}catch(E){t(3,f=String(E))}t(2,c=!1)}}function b(){i&&i()}function y(E){E.key==="Enter"&&!c&&o.trim()&&w()}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,h,m,w,b,y,n,i,T]}class zg extends xe{constructor(e){super(),Ze(this,e,Fg,jg,Xe,{onComplete:10,onQuit:11})}}function Js(l){let e,t;return{c(){e=u("div"),t=z(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&&C(e)}}}function qs(l){let e,t,n,i,o,r,c,f,p=_("common.yes")+"",v,g,h,m,w;return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${_("recovery.createConfirmTitle")}`,i=k(),o=u("p"),o.textContent=`${_("recovery.createConfirm")}`,r=k(),c=u("div"),f=u("button"),v=z(p),g=k(),h=u("button"),h.textContent=`${_("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(h,"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(b,y){S(b,e,y),a(e,t),a(t,n),a(t,i),a(t,o),a(t,r),a(t,c),a(c,f),a(f,v),a(c,g),a(c,h),m||(w=[L(f,"click",l[6]),L(h,"click",l[7]),L(e,"click",Ct(l[7])),L(e,"keydown",l[11])],m=!0)},p(b,y){y&2&&(f.disabled=b[1])},d(b){b&&C(e),m=!1,me(w)}}}function Rg(l){let e,t,n,i,o,r,c,f,p,v=(l[0]||"—")+"",g,h,m,w,b,y=_("recovery.choose")+"",T,E,I,N=_("recovery.create")+"",A,j,D,M,F,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=`${_("recovery.title")}`,r=k(),c=u("p"),c.textContent=`${_("recovery.expected")}:`,f=k(),p=u("code"),g=z(v),h=k(),H&&H.c(),m=k(),w=u("div"),b=u("button"),T=z(y),E=k(),I=u("button"),A=z(N),j=k(),D=u("button"),D.textContent=`${_("recovery.quit")}`,M=k(),U&&U.c(),F=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(b,"class","btn btn-primary btn-lg svelte-s3o8c3"),b.disabled=l[1],s(I,"class","btn btn-lg svelte-s3o8c3"),I.disabled=l[1],s(D,"class","btn btn-lg svelte-s3o8c3"),s(w,"class","recovery-actions svelte-s3o8c3"),s(t,"class","recovery-card svelte-s3o8c3"),s(e,"class","recovery-screen svelte-s3o8c3")},m(J,Y){S(J,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,g),a(t,h),H&&H.m(t,null),a(t,m),a(t,w),a(w,b),a(b,T),a(w,E),a(w,I),a(I,A),a(w,j),a(w,D),S(J,M,Y),U&&U.m(J,Y),S(J,F,Y),B||(W=[L(b,"click",l[4]),L(I,"click",l[5]),L(D,"click",l[8])],B=!0)},p(J,[Y]){Y&1&&v!==(v=(J[0]||"—")+"")&&K(g,v),J[2]?H?H.p(J,Y):(H=Js(J),H.c(),H.m(t,m)):H&&(H.d(1),H=null),Y&2&&(b.disabled=J[1]),Y&2&&(I.disabled=J[1]),J[3]?U?U.p(J,Y):(U=qs(J),U.c(),U.m(F.parentNode,F)):U&&(U.d(1),U=null)},i:te,o:te,d(J){J&&(C(e),C(M),C(F)),H&&H.d(),U&&U.d(J),B=!1,me(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 Og(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 b=await oi("PickDirectory");if(!b)return;t(1,r=!0),t(2,c="");const y=await oi("OpenVault",b);y&&y.status==="ready"&&i&&i(y)}catch(b){t(2,c=String(b))}t(1,r=!1)}function v(){t(3,f=!0)}async function g(){t(3,f=!1),t(1,r=!0),t(2,c="");try{const b=await oi("CreateVault",n);b&&b.status==="ready"&&i&&i(b)}catch(b){t(2,c=String(b))}t(1,r=!1)}function h(){t(3,f=!1)}function m(){o&&o()}const w=b=>b.key==="Enter"&&h();return l.$$set=b=>{"vaultPath"in b&&t(0,n=b.vaultPath),"onComplete"in b&&t(9,i=b.onComplete),"onQuit"in b&&t(10,o=b.onQuit)},[n,r,c,f,p,v,g,h,m,i,o,w]}class Bg extends xe{constructor(e){super(),Ze(this,e,Og,Rg,Xe,{vaultPath:0,onComplete:9,onQuit:10})}}function Ys(l,e,t){const n=l.slice();return n[5]=e[t],n}function Hg(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&&(C(e),C(t))}}}function Wg(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&&(C(e),C(t),C(n))}}}function Vg(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&&(C(e),C(t),C(n),C(i))}}}function Ug(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&&C(e)}}}function Kg(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&&C(e)}}}function Gg(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&&(C(e),C(t))}}}function Jg(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&&(C(e),C(t))}}}function qg(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&&(C(e),C(t),C(n))}}}function Yg(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&&(C(e),C(t))}}}function Qs(l){let e,t,n,i,o,r,c,f;function p(m,w){if(m[5].id==="general")return Yg;if(m[5].id==="workspace")return qg;if(m[5].id==="templates")return Jg;if(m[5].id==="plugins")return Gg;if(m[5].id==="files")return Kg;if(m[5].id==="activity")return Ug;if(m[5].id==="sync")return Vg;if(m[5].id==="backup")return Wg;if(m[5].id==="browserBridge")return Hg}let v=p(l),g=v&&v(l);function h(){return l[4](l[5])}return{c(){e=u("button"),t=u("span"),n=ie("svg"),g&&g.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-8ag2z0"),s(o,"class","settings-nav-label svelte-8ag2z0"),s(e,"class","settings-nav-item svelte-8ag2z0"),ae(e,"active",l[0]===l[5].id),ae(e,"disabled",l[5].id==="files"||l[5].id==="activity"||l[5].id==="backup")},m(m,w){S(m,e,w),a(e,t),a(t,n),g&&g.m(n,null),a(e,i),a(e,o),a(e,r),c||(f=L(e,"click",h),c=!0)},p(m,w){l=m,w&3&&ae(e,"active",l[0]===l[5].id)},d(m){m&&C(e),g&&g.d(),c=!1,f()}}}function Qg(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 Zg extends xe{constructor(e){super(),Ze(this,e,Xg,Qg,Xe,{activeSection:0,onSelect:3})}}function Xs(l){let e;return{c(){e=u("div"),e.textContent=`${_("settings.saved")}`,s(e,"class","save-notice svelte-1e2uhdh")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function xg(l){let e,t,n,i,o,r,c,f,p,v,g,h,m,w,b,y,T,E,I,N,A,j,D,M,F,B,W,H,U,J,Y,Q,R,V=l[1]&&Xs();return{c(){e=u("div"),t=u("h2"),t.textContent=`${_("settings.general")}`,n=k(),i=u("p"),i.textContent=`${_("settings.generalDesc")}`,o=k(),r=u("div"),c=u("h3"),c.textContent=`${_("settings.appearance")}`,f=k(),p=u("div"),v=u("label"),g=u("span"),g.textContent=`${_("settings.theme")}`,h=k(),m=u("select"),w=u("option"),w.textContent=`${_("settings.themeSystem")}`,b=u("option"),b.textContent=`${_("settings.themeLight")} (${_("settings.langSoon")})`,y=u("option"),y.textContent=`${_("settings.themeDark")} (${_("settings.langSoon")})`,T=k(),E=u("div"),I=u("h3"),I.textContent=`${_("settings.localization")}`,N=k(),A=u("div"),j=u("label"),D=u("span"),D.textContent=`${_("settings.language")}`,M=k(),F=u("select"),B=u("option"),B.textContent=`${_("settings.langRu")}`,W=u("option"),W.textContent=`${_("settings.langEn")} (${_("settings.langSoon")})`,H=k(),U=u("div"),V&&V.c(),J=k(),Y=u("button"),Y.textContent=`${_("settings.save")}`,s(t,"class","svelte-1e2uhdh"),s(i,"class","section-desc svelte-1e2uhdh"),s(c,"class","card-title svelte-1e2uhdh"),s(g,"class","label-text svelte-1e2uhdh"),w.__value="system",be(w,w.__value),b.__value="light",be(b,b.__value),b.disabled=!0,y.__value="dark",be(y,y.__value),y.disabled=!0,l[0]===void 0&&ol(()=>l[5].call(m)),s(p,"class","form-group svelte-1e2uhdh"),s(r,"class","settings-card svelte-1e2uhdh"),s(I,"class","card-title svelte-1e2uhdh"),s(D,"class","label-text svelte-1e2uhdh"),B.__value="ru",be(B,B.__value),W.__value="en",be(W,W.__value),F.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(O,X){S(O,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,v),a(v,g),a(v,h),a(v,m),a(m,w),a(m,b),a(m,y),Ut(m,l[0],!0),a(e,T),a(e,E),a(E,I),a(E,N),a(E,A),a(A,j),a(j,D),a(j,M),a(j,F),a(F,B),a(F,W),a(e,H),a(e,U),V&&V.m(U,null),a(U,J),a(U,Y),Q||(R=[L(m,"change",l[5]),L(Y,"click",l[2])],Q=!0)},p(O,[X]){X&1&&Ut(m,O[0]),O[1]?V||(V=Xs(),V.c(),V.m(U,J)):V&&(V.d(1),V=null)},i:te,o:te,d(O){O&&C(e),V&&V.d(),Q=!1,me(R)}}}function $g(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=v=>{"appConfig"in v&&t(3,n=v.appConfig),"onSave"in v&&t(4,i=v.onSave)},l.$$.update=()=>{l.$$.dirty&8&&n&&c()},[o,r,f,n,i,p]}class em extends xe{constructor(e){super(),Ze(this,e,$g,xg,Xe,{appConfig:3,onSave:4})}}function Zs(l){let e,t;return{c(){e=u("div"),t=z(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&&C(e)}}}function tm(l){let e;return{c(){e=u("p"),e.textContent=`${_("settings.noVaultInfo")}`,s(e,"class","no-data svelte-1zbky3")},m(t,n){S(t,e,n)},p:te,d(t){t&&C(e)}}}function lm(l){let e,t,n,i,o,r=l[0].path+"",c,f,p,v,g,h,m=l[0].dbPath+"",w,b,y,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=`${_("settings.vaultPath")}`,i=k(),o=u("span"),c=z(r),f=k(),p=u("div"),v=u("span"),v.textContent="DB",g=k(),h=u("span"),w=z(m),b=k(),T&&T.c(),y=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(v,"class","info-label svelte-1zbky3"),s(h,"class","info-value mono small svelte-1zbky3"),s(p,"class","info-row svelte-1zbky3"),s(e,"class","vault-info svelte-1zbky3")},m(I,N){S(I,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,v),a(p,g),a(p,h),a(h,w),a(e,b),T&&T.m(e,null),a(e,y),E&&E.m(e,null)},p(I,N){N&1&&r!==(r=I[0].path+"")&&K(c,r),N&1&&m!==(m=I[0].dbPath+"")&&K(w,m),I[0].nodeCount!==void 0?T?T.p(I,N):(T=xs(I),T.c(),T.m(e,y)):T&&(T.d(1),T=null),I[0].fileCount!==void 0?E?E.p(I,N):(E=$s(I),E.c(),E.m(e,null)):E&&(E.d(1),E=null)},d(I){I&&C(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=z(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&&C(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=z(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&&C(e)}}}function nm(l){let e,t,n,i,o,r,c,f,p,v,g,h,m,w,b,y,T=l[1]&&Zs(l);function E(A,j){return A[0]?lm:tm}let I=E(l),N=I(l);return{c(){e=u("div"),t=u("h2"),t.textContent=`${_("settings.workspace")}`,n=k(),i=u("p"),i.textContent=`${_("settings.workspaceDesc")}`,o=k(),T&&T.c(),r=k(),c=u("div"),N.c(),f=k(),p=u("div"),v=u("button"),v.textContent=`${_("settings.openVault")}`,g=k(),h=u("button"),h.textContent=`${_("settings.changeVault")}`,m=k(),w=u("button"),w.textContent=`${_("settings.checkIntegrity")}`,s(t,"class","svelte-1zbky3"),s(i,"class","section-desc svelte-1zbky3"),s(c,"class","settings-card svelte-1zbky3"),s(v,"class","btn svelte-1zbky3"),s(h,"class","btn svelte-1zbky3"),s(w,"class","btn svelte-1zbky3"),s(p,"class","workspace-actions svelte-1zbky3"),s(e,"class","settings-section svelte-1zbky3")},m(A,j){S(A,e,j),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,v),a(p,g),a(p,h),a(p,m),a(p,w),b||(y=[L(v,"click",l[2]),L(h,"click",l[4]),L(w,"click",l[3])],b=!0)},p(A,[j]){A[1]?T?T.p(A,j):(T=Zs(A),T.c(),T.m(e,r)):T&&(T.d(1),T=null),I===(I=E(A))&&N?N.p(A,j):(N.d(1),N=I(A),N&&(N.c(),N.m(c,null)))},i:te,o:te,d(A){A&&C(e),T&&T.d(),N.d(),b=!1,me(y)}}}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 im(l,e,t){let{onRefresh:n=null}=e,i=null,o="";async function r(){try{t(0,i=await Cl("GetVaultInfo"))}catch{t(0,i=null)}}r();async function c(){try{await Cl("OpenVaultFolder")}catch(v){t(1,o=String(v))}}async function f(){try{const v=await Cl("VaultCheck");v.healthy?t(1,o="Vault healthy"):t(1,o="Issues found: "+(v.errors||[]).join("; "))}catch(v){t(1,o=String(v))}}async function p(){try{const v=await Cl("PickDirectory");if(!v)return;const g=await Cl("OpenVault",v);g&&g.status==="ready"&&(t(0,i=await Cl("GetVaultInfo")),n&&n())}catch(v){t(1,o=String(v))}}return l.$$set=v=>{"onRefresh"in v&&t(5,n=v.onRefresh)},[i,o,c,f,p,n]}class sm extends xe{constructor(e){super(),Ze(this,e,im,nm,Xe,{onRefresh:5})}}function eo(l,e,t){const n=l.slice();return n[6]=e[t],n}function om(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 fm extends xe{constructor(e){super(),Ze(this,e,um,cm,Xe,{onRefresh:3})}}function no(l,e,t){const n=l.slice();return n[12]=e[t],n}function dm(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&&C(e)}}}function gm(l){let e,t;return{c(){e=u("p"),t=z(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&&C(e)}}}function mm(l){let e;return{c(){e=u("p"),e.textContent=`${_("common.loading")}`,s(e,"class","loading svelte-i9gngw")},m(t,n){S(t,e,n)},p:te,d(t){t&&C(e)}}}function io(l){let e,t,n=l[12].version+"",i;return{c(){e=u("span"),t=z("v"),i=z(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[12].version+"")&&K(i,n)},d(o){o&&C(e)}}}function so(l){let e,t=l[12].description+"",n;return{c(){e=u("div"),n=z(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[12].description+"")&&K(n,t)},d(i){i&&C(e)}}}function oo(l){let e,t=(_("settings.author")||"Автор")+"",n,i,o=l[12].author+"",r;return{c(){e=u("span"),n=z(t),i=z(": "),r=z(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[12].author+"")&&K(r,o)},d(c){c&&C(e)}}}function ro(l){let e,t=l[12].uiContribs.sidebarItems.length+"",n,i;return{c(){e=u("span"),n=z(t),i=z(" пункт(а) в сайдбаре")},m(o,r){S(o,e,r),a(e,n),a(e,i)},p(o,r){r&1&&t!==(t=o[12].uiContribs.sidebarItems.length+"")&&K(n,t)},d(o){o&&C(e)}}}function ao(l){let e,t=l[12].uiContribs.nodeTabs.length+"",n,i;return{c(){e=u("span"),n=z(t),i=z(" вкладок(и) в карточке дела")},m(o,r){S(o,e,r),a(e,n),a(e,i)},p(o,r){r&1&&t!==(t=o[12].uiContribs.nodeTabs.length+"")&&K(n,t)},d(o){o&&C(e)}}}function co(l){let e;return{c(){e=u("span"),e.textContent="🗖 HTML-панель"},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function _m(l){let e,t,n,i,o,r,c,f;function p(){return l[8](l[12])}function v(){return l[9](l[12])}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[12].active),ae(t,"active",l[12].active),s(r,"class","uninstall-btn btn-sm svelte-i9gngw"),s(r,"title","Удалить плагин (очистить данные)"),s(e,"class","toggle-group svelte-i9gngw")},m(g,h){S(g,e,h),a(e,t),a(t,n),a(e,o),a(e,r),c||(f=[L(t,"click",p),L(r,"click",v)],c=!0)},p(g,h){l=g,h&1&&i!==(i=l[12].active)&&s(t,"aria-checked",i),h&1&&ae(t,"active",l[12].active)},d(g){g&&C(e),c=!1,me(f)}}}function vm(l){let e,t,n;function i(){return l[7](l[12])}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&&C(e),t=!1,n()}}}function uo(l){var F,B,W,H;let e,t,n,i=l[12].name+"",o,r,c,f,p,v,g,h,m,w,b,y=l[12].version&&io(l),T=l[12].description&&so(l),E=l[12].author&&oo(l),I=((B=(F=l[12].uiContribs)==null?void 0:F.sidebarItems)==null?void 0:B.length)&&ro(l),N=((H=(W=l[12].uiContribs)==null?void 0:W.nodeTabs)==null?void 0:H.length)&&ao(l),A=l[12].hasPanel&&co();function j(U,J){return U[12].installed?_m:vm}let D=j(l),M=D(l);return{c(){e=u("div"),t=u("div"),n=u("div"),o=z(i),r=k(),y&&y.c(),c=k(),T&&T.c(),f=k(),p=u("div"),E&&E.c(),v=k(),I&&I.c(),g=k(),N&&N.c(),h=k(),A&&A.c(),m=k(),w=u("div"),M.c(),b=k(),s(n,"class","plugin-name svelte-i9gngw"),s(p,"class","plugin-meta svelte-i9gngw"),s(t,"class","plugin-info svelte-i9gngw"),s(w,"class","plugin-toggle svelte-i9gngw"),s(e,"class","plugin-card svelte-i9gngw")},m(U,J){S(U,e,J),a(e,t),a(t,n),a(n,o),a(n,r),y&&y.m(n,null),a(t,c),T&&T.m(t,null),a(t,f),a(t,p),E&&E.m(p,null),a(p,v),I&&I.m(p,null),a(p,g),N&&N.m(p,null),a(p,h),A&&A.m(p,null),a(e,m),a(e,w),M.m(w,null),a(e,b)},p(U,J){var Y,Q,R,V;J&1&&i!==(i=U[12].name+"")&&K(o,i),U[12].version?y?y.p(U,J):(y=io(U),y.c(),y.m(n,null)):y&&(y.d(1),y=null),U[12].description?T?T.p(U,J):(T=so(U),T.c(),T.m(t,f)):T&&(T.d(1),T=null),U[12].author?E?E.p(U,J):(E=oo(U),E.c(),E.m(p,v)):E&&(E.d(1),E=null),(Q=(Y=U[12].uiContribs)==null?void 0:Y.sidebarItems)!=null&&Q.length?I?I.p(U,J):(I=ro(U),I.c(),I.m(p,g)):I&&(I.d(1),I=null),(V=(R=U[12].uiContribs)==null?void 0:R.nodeTabs)!=null&&V.length?N?N.p(U,J):(N=ao(U),N.c(),N.m(p,h)):N&&(N.d(1),N=null),U[12].hasPanel?A||(A=co(),A.c(),A.m(p,null)):A&&(A.d(1),A=null),D===(D=j(U))&&M?M.p(U,J):(M.d(1),M=D(U),M&&(M.c(),M.m(w,null)))},d(U){U&&C(e),y&&y.d(),T&&T.d(),E&&E.d(),I&&I.d(),N&&N.d(),A&&A.d(),M.d()}}}function hm(l){let e,t,n,i,o;function r(p,v){return p[1]?mm:p[2]?gm:p[0].length===0?pm:dm}let c=r(l),f=c(l);return{c(){e=u("div"),t=u("h3"),t.textContent=`${_("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,v){S(p,e,v),a(e,t),a(e,n),a(e,i),a(e,o),f.m(e,null)},p(p,[v]){c===(c=r(p))&&f?f.p(p,v):(f.d(1),f=c(p),f&&(f.c(),f.m(e,null)))},i:te,o:te,d(p){p&&C(e),f.d()}}}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 km(l,e,t){let{onPluginToggle:n=null}=e,i=[],o=!0,r="";Kl(async()=>{try{t(0,i=await ll("ListPlugins")||[])}catch(m){t(2,r=String(m))}t(1,o=!1)});async function c(m){const w=!m.active;try{await ll("SetPluginEnabled",m.name,w),t(0,i=await ll("ListPlugins")||[]),n&&n()}catch(b){t(2,r=String(b))}}async function f(m){t(2,r="");try{await ll("InstallPlugin",m.name),m.installed=!0,t(0,i=await ll("ListPlugins")||[]),n&&n()}catch(w){t(2,r=String(w))}}async function p(m){if(confirm(`Удалить плагин «${m.name}»? Все данные плагина будут очищены. Файлы плагина сохранятся.`)){t(2,r="");try{await ll("UninstallPlugin",m.name),m.installed=!1,m.active=!1,t(0,i=await ll("ListPlugins")||[]),n&&n()}catch(w){t(2,r=String(w))}}}const v=m=>f(m),g=m=>c(m),h=m=>p(m);return l.$$set=m=>{"onPluginToggle"in m&&t(6,n=m.onPluginToggle)},l.$$.update=()=>{l.$$.dirty&1&&i.reduce((m,w)=>{var b,y;return m+(((y=(b=w.uiContribs)==null?void 0:b.sidebarItems)==null?void 0:y.length)||0)},0),l.$$.dirty&1&&i.reduce((m,w)=>{var b,y;return m+(((y=(b=w.uiContribs)==null?void 0:b.nodeTabs)==null?void 0:y.length)||0)},0)},[i,o,r,c,f,p,n,v,g,h]}class bm extends xe{constructor(e){super(),Ze(this,e,km,hm,Xe,{onPluginToggle:6})}}function wm(l){let e,t,n,i;return{c(){e=u("div"),t=u("h2"),t.textContent=`${_("settings.files")}`,n=k(),i=u("p"),i.textContent=`${_("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&&C(e)}}}class ym extends xe{constructor(e){super(),Ze(this,e,null,wm,Xe,{})}}function Cm(l){let e,t,n,i;return{c(){e=u("div"),t=u("h2"),t.textContent=`${_("settings.activity")}`,n=k(),i=u("p"),i.textContent=`${_("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&&C(e)}}}class Sm extends xe{constructor(e){super(),Ze(this,e,null,Cm,Xe,{})}}function fo(l){let e,t;return{c(){e=u("div"),t=z(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&&C(e)}}}function po(l){let e,t;return{c(){e=u("div"),t=z(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&&C(e)}}}function Tm(l){let e,t,n,i,o,r,c,f,p,v,g,h,m,w,b,y,T,E,I,N,A,j,D=_("settings.checkConnection")+"",M,F,B,W,H=_("common.connect")+"",U,J,Y,Q,R,V=l[11]!==null&&go(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("label"),o=u("span"),o.textContent=`${_("settings.serverUrl")}`,r=k(),c=u("input"),f=k(),p=u("div"),v=u("label"),g=u("span"),g.textContent=`${_("sync.username")}`,h=k(),m=u("input"),w=k(),b=u("div"),y=u("label"),T=u("span"),T.textContent=`${_("sync.password")}`,E=k(),I=u("input"),N=k(),A=u("div"),j=u("button"),M=z(D),B=k(),W=u("button"),U=z(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(g,"class","label-text"),s(m,"type","text"),s(p,"class","form-group svelte-1fx1e1e"),s(T,"class","label-text"),s(I,"type","password"),s(b,"class","form-group svelte-1fx1e1e"),s(j,"class","btn"),j.disabled=F=l[1]||!l[5],s(W,"class","btn btn-primary"),W.disabled=J=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(O,X){S(O,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,v),a(v,g),a(v,h),a(v,m),be(m,l[6]),a(t,w),a(t,b),a(b,y),a(y,T),a(y,E),a(y,I),be(I,l[7]),a(t,N),a(t,A),a(A,j),a(j,M),a(A,B),a(A,W),a(W,U),a(t,Y),V&&V.m(t,null),Q||(R=[L(c,"input",l[23]),L(m,"input",l[24]),L(I,"input",l[25]),L(j,"click",l[12]),L(W,"click",l[13])],Q=!0)},p(O,X){X[0]&32&&c.value!==O[5]&&be(c,O[5]),X[0]&64&&m.value!==O[6]&&be(m,O[6]),X[0]&128&&I.value!==O[7]&&be(I,O[7]),X[0]&34&&F!==(F=O[1]||!O[5])&&(j.disabled=F),X[0]&226&&J!==(J=O[1]||!O[5]||!O[6]||!O[7])&&(W.disabled=J),O[11]!==null?V?V.p(O,X):(V=go(O),V.c(),V.m(t,null)):V&&(V.d(1),V=null)},d(O){O&&C(e),V&&V.d(),Q=!1,me(R)}}}function Em(l){let e,t,n,i,o,r,c=l[20](l[0].lastStatus)+"",f,p,v,g,h,m,w,b,y,T=_("settings.syncNow")+"",E,I,N,A=_("settings.disconnect")+"",j,D,M,F=_("settings.resetKey")+"",B,W,H,U,J,Y,Q,R,V,O,X,q,G=l[0].serverUrl&&mo(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=`${_("settings.status")}`,o=k(),r=u("span"),f=z(c),p=k(),G&&G.c(),v=k(),x&&x.c(),g=k(),ee&&ee.c(),h=k(),le&&le.c(),m=k(),ce&&ce.c(),w=k(),b=u("div"),y=u("button"),E=z(T),I=k(),N=u("button"),j=z(A),D=k(),M=u("button"),B=z(F),W=k(),H=u("div"),U=u("label"),J=u("span"),J.textContent=`${_("sync.interval")}`,Y=k(),Q=u("div"),R=u("input"),V=k(),O=u("button"),O.textContent=`${_("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(y,"class","btn btn-primary"),y.disabled=l[1],s(N,"class","btn"),N.disabled=l[1],s(M,"class","btn"),M.disabled=l[1],s(b,"class","sync-actions svelte-1fx1e1e"),s(J,"class","label-text"),s(R,"type","number"),s(R,"min","0"),s(R,"placeholder","0"),s(R,"class","svelte-1fx1e1e"),s(O,"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,v),x&&x.m(t,null),a(t,g),ee&&ee.m(t,null),a(t,h),le&&le.m(t,null),a(t,m),ce&&ce.m(t,null),S(pe,w,Ee),S(pe,b,Ee),a(b,y),a(y,E),a(b,I),a(b,N),a(N,j),a(b,D),a(b,M),a(M,B),S(pe,W,Ee),S(pe,H,Ee),a(H,U),a(U,J),a(U,Y),a(U,Q),a(Q,R),be(R,l[8]),a(Q,V),a(Q,O),X||(q=[L(y,"click",l[14]),L(N,"click",l[16]),L(M,"click",l[18]),L(R,"input",l[22]),L(O,"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=mo(pe),G.c(),G.m(t,v)):G&&(G.d(1),G=null),pe[0].deviceName?x?x.p(pe,Ee):(x=_o(pe),x.c(),x.m(t,g)):x&&(x.d(1),x=null),pe[0].deviceId?ee?ee.p(pe,Ee):(ee=vo(pe),ee.c(),ee.m(t,h)):ee&&(ee.d(1),ee=null),pe[0].lastSyncAt?le?le.p(pe,Ee):(le=ho(pe),le.c(),le.m(t,m)):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&&(y.disabled=pe[1]),Ee[0]&2&&(N.disabled=pe[1]),Ee[0]&2&&(M.disabled=pe[1]),Ee[0]&256&&Dl(R.value)!==pe[8]&&be(R,pe[8])},d(pe){pe&&(C(e),C(w),C(b),C(W),C(H)),G&&G.d(),x&&x.d(),ee&&ee.d(),le&&le.d(),ce&&ce.d(),X=!1,me(q)}}}function go(l){let e,t=(l[11]?_("common.test")+" OK":_("error.generic"))+"",n;return{c(){e=u("div"),n=z(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]?_("common.test")+" OK":_("error.generic"))+"")&&K(n,t),o[0]&2048&&ae(e,"ok",i[11]),o[0]&2048&&ae(e,"fail",!i[11])},d(i){i&&C(e)}}}function mo(l){let e,t,n,i,o=l[0].serverUrl+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${_("settings.serverUrl")}`,n=k(),i=u("span"),r=z(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&&C(e)}}}function _o(l){let e,t,n,i,o=l[0].deviceName+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${_("settings.deviceName")}`,n=k(),i=u("span"),r=z(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&&C(e)}}}function vo(l){let e,t,n,i,o=l[0].deviceId+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${_("settings.deviceId")}`,n=k(),i=u("span"),r=z(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&&C(e)}}}function ho(l){let e,t,n,i,o=l[0].lastSyncAt+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${_("settings.lastSync")}`,n=k(),i=u("span"),r=z(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&&C(e)}}}function ko(l){let e,t,n,i,o=l[0].lastError+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${_("settings.lastError")}`,n=k(),i=u("span"),r=z(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&&C(e)}}}function bo(l){let e,t,n,i,o,r,c,f,p,v,g,h;return{c(){e=u("button"),t=u("div"),n=u("h3"),n.textContent=`${_("settings.confirmDisconnect")}`,i=k(),o=u("p"),o.textContent=`${_("settings.confirmDisconnectDesc")}`,r=k(),c=u("div"),f=u("button"),f.textContent=`${_("common.disconnect")}`,p=k(),v=u("button"),v.textContent=`${_("common.cancel")}`,s(n,"class","svelte-1fx1e1e"),s(o,"class","modal-desc svelte-1fx1e1e"),s(f,"class","btn btn-danger"),s(v,"class","btn"),s(c,"class","modal-actions svelte-1fx1e1e"),s(t,"class","modal svelte-1fx1e1e"),s(e,"class","modal-overlay svelte-1fx1e1e")},m(m,w){S(m,e,w),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,v),g||(h=[L(f,"click",l[17]),L(v,"click",l[26]),L(e,"click",l[27])],g=!0)},p:te,d(m){m&&C(e),g=!1,me(h)}}}function wo(l){let e,t,n,i,o,r,c,f,p,v,g,h;return{c(){e=u("button"),t=u("div"),n=u("h3"),n.textContent=`${_("settings.confirmResetKey")}`,i=k(),o=u("p"),o.textContent=`${_("settings.confirmResetKeyDesc")}`,r=k(),c=u("div"),f=u("button"),f.textContent=`${_("settings.resetKey")}`,p=k(),v=u("button"),v.textContent=`${_("common.cancel")}`,s(n,"class","svelte-1fx1e1e"),s(o,"class","modal-desc svelte-1fx1e1e"),s(f,"class","btn btn-danger"),s(v,"class","btn"),s(c,"class","modal-actions svelte-1fx1e1e"),s(t,"class","modal svelte-1fx1e1e"),s(e,"class","modal-overlay svelte-1fx1e1e")},m(m,w){S(m,e,w),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,v),g||(h=[L(f,"click",l[19]),L(v,"click",l[28]),L(e,"click",l[29])],g=!0)},p:te,d(m){m&&C(e),g=!1,me(h)}}}function Dm(l){let e,t,n,i,o,r,c,f,p,v,g=l[2]&&fo(l),h=l[3]&&!l[2]&&po(l);function m(E,I){return E[0]&&E[0].enabled?Em:Tm}let w=m(l),b=w(l),y=l[9]&&bo(l),T=l[10]&&wo(l);return{c(){e=u("div"),t=u("h2"),t.textContent=`${_("settings.sync")}`,n=k(),i=u("p"),i.textContent=`${_("settings.syncDesc")}`,o=k(),g&&g.c(),r=k(),h&&h.c(),c=k(),b.c(),f=k(),y&&y.c(),p=k(),T&&T.c(),v=ot(),s(t,"class","svelte-1fx1e1e"),s(i,"class","section-desc svelte-1fx1e1e"),s(e,"class","settings-section svelte-1fx1e1e")},m(E,I){S(E,e,I),a(e,t),a(e,n),a(e,i),a(e,o),g&&g.m(e,null),a(e,r),h&&h.m(e,null),a(e,c),b.m(e,null),S(E,f,I),y&&y.m(E,I),S(E,p,I),T&&T.m(E,I),S(E,v,I)},p(E,I){E[2]?g?g.p(E,I):(g=fo(E),g.c(),g.m(e,r)):g&&(g.d(1),g=null),E[3]&&!E[2]?h?h.p(E,I):(h=po(E),h.c(),h.m(e,c)):h&&(h.d(1),h=null),w===(w=m(E))&&b?b.p(E,I):(b.d(1),b=w(E),b&&(b.c(),b.m(e,null))),E[9]?y?y.p(E,I):(y=bo(E),y.c(),y.m(p.parentNode,p)):y&&(y.d(1),y=null),E[10]?T?T.p(E,I):(T=wo(E),T.c(),T.m(v.parentNode,v)):T&&(T.d(1),T=null)},i:te,o:te,d(E){E&&(C(e),C(f),C(p),C(v)),g&&g.d(),h&&h.d(),b.d(),y&&y.d(E),T&&T.d(E)}}}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 Im(l,e,t){let{onRefresh:n=null}=e,i=null,o=!1,r="",c="",f="",p="",v="",g="",h=0,m=!1,w=!1,b=null;async function y(){try{t(0,i=await nl("GetSyncSettings")),i&&(t(5,p=i.serverUrl||""),t(8,h=i.syncInterval||0))}catch{t(0,i=null)}}y();async function T(){t(1,o=!0),t(2,r=""),t(4,f=""),t(11,b=null);try{await nl("SyncTestConnection",p,v,g),t(11,b=!0),t(3,c="connection ok")}catch(O){t(11,b=!1),t(3,c="connection failed: "+String(O))}t(1,o=!1)}async function E(){t(1,o=!0),t(2,r=""),t(4,f="");try{await nl("SyncConfigure",p,v,g),t(3,c="configured"),t(6,v=""),t(7,g=""),await y(),n&&n()}catch(O){t(2,r=String(O))}t(1,o=!1)}function I(O){const X=Array.isArray(O==null?void 0:O.conflicts)?O.conflicts:[],q=Array.isArray(O==null?void 0:O.applyErrors)?O.applyErrors:[],G=[];return X.length>0&&G.push(_("sync.conflictsCount",{count:X.length})),q.length>0&&G.push(_("sync.applyErrorsCount",{count:q.length})),G.join(" · ")}async function N(){t(1,o=!0),t(2,r=""),t(4,f="");try{const O=await nl("SyncNow"),X=_("sync.pushedPulled",{pushed:(O==null?void 0:O.pushed)||0,pulled:(O==null?void 0:O.pulled)||0}),q=I(O);t(3,c=q?X+" · "+q:X),t(4,f=q?"warning":""),await y(),n&&n()}catch(O){t(2,r=String(O))}t(1,o=!1)}async function A(){try{await nl("SyncSetInterval",h),t(3,c=_("sync.settingsSaved")),t(4,f="")}catch(O){t(2,r=String(O))}}function j(){t(9,m=!0)}async function D(){t(9,m=!1),t(1,o=!0),t(4,f="");try{await nl("SyncDisconnect"),t(3,c="disconnected"),await y(),n&&n()}catch(O){t(2,r=String(O))}t(1,o=!1)}function M(){t(10,w=!0)}async function F(){t(10,w=!1),t(1,o=!0),t(4,f="");try{await nl("ResetSyncKey"),t(3,c="key reset"),await y(),n&&n()}catch(O){t(2,r=String(O))}t(1,o=!1)}function B(O){return O?{connected:_("settings.connected"),disconnected:_("settings.disconnected"),disabled:_("settings.notConfigured"),error:_("settings.error"),revoked:_("settings.revoked")}[O]||O:_("settings.notConfigured")}function W(){h=Dl(this.value),t(8,h)}function H(){p=this.value,t(5,p)}function U(){v=this.value,t(6,v)}function J(){g=this.value,t(7,g)}const Y=()=>t(9,m=!1),Q=()=>t(9,m=!1),R=()=>t(10,w=!1),V=()=>t(10,w=!1);return l.$$set=O=>{"onRefresh"in O&&t(21,n=O.onRefresh)},[i,o,r,c,f,p,v,g,h,m,w,b,T,E,N,A,j,D,M,F,B,n,W,H,U,J,Y,Q,R,V]}class Nm extends xe{constructor(e){super(),Ze(this,e,Im,Dm,Xe,{onRefresh:21},null,[-1,-1])}}function Am(l){let e,t,n,i;return{c(){e=u("div"),t=u("h2"),t.textContent=`${_("settings.backup")}`,n=k(),i=u("p"),i.textContent=`${_("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&&C(e)}}}class Mm extends xe{constructor(e){super(),Ze(this,e,null,Am,Xe,{})}}function yo(l){let e,t;return{c(){e=u("div"),t=z(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&&C(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=z("127.0.0.1:"),r=z(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&&C(e)}}}function So(l){let e,t,n,i;return{c(){e=u("button"),t=z("Перезапустить сервер"),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&&C(e),n=!1,i()}}}function Pm(l){let e,t,n,i,o,r,c,f,p,v,g,h,m,w,b,y,T,E,I,N,A,j,D,M,F,B,W,H=l[2]?"Запущен":"Остановлен",U,J,Y,Q,R,V,O,X,q,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"),v=u("input"),g=k(),h=u("span"),h.textContent="Включить Browser Bridge",m=k(),w=u("div"),b=u("label"),y=u("span"),y.textContent="Порт",T=k(),E=u("input"),N=k(),A=u("p"),A.textContent="По умолчанию: 9786. Требуется перезапуск сервера при изменении.",j=k(),D=u("div"),M=u("div"),F=u("span"),F.textContent="Статус",B=k(),W=u("span"),U=z(H),J=k(),x&&x.c(),Y=k(),Q=u("div"),R=u("button"),V=z("Сохранить"),O=k(),ee&&ee.c(),s(t,"class","svelte-13i6m7m"),s(i,"class","section-desc svelte-13i6m7m"),s(v,"type","checkbox"),s(h,"class","toggle-text svelte-13i6m7m"),s(p,"class","toggle-label svelte-13i6m7m"),s(f,"class","form-group svelte-13i6m7m"),s(y,"class","label-text svelte-13i6m7m"),s(E,"type","number"),s(E,"min","1024"),s(E,"max","65535"),E.disabled=I=!l[0],s(E,"class","svelte-13i6m7m"),s(A,"class","field-hint svelte-13i6m7m"),s(w,"class","form-group svelte-13i6m7m"),s(F,"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(D,"class","bridge-status svelte-13i6m7m"),s(c,"class","settings-card svelte-13i6m7m"),s(R,"class","btn btn-primary"),R.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,v),v.checked=l[0],a(p,g),a(p,h),a(c,m),a(c,w),a(w,b),a(b,y),a(b,T),a(b,E),be(E,l[1]),a(w,N),a(w,A),a(c,j),a(c,D),a(D,M),a(M,F),a(M,B),a(M,W),a(W,U),a(D,J),x&&x.m(D,null),a(e,Y),a(e,Q),a(Q,R),a(R,V),a(Q,O),ee&&ee.m(Q,null),X||(q=[L(v,"change",l[10]),L(E,"input",l[11]),L(R,"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&&(v.checked=le[0]),ce&1&&I!==(I=!le[0])&&(E.disabled=I),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(D,null)):x&&(x.d(1),x=null),ce&16&&(R.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&&C(e),G&&G.d(),x&&x.d(),ee&&ee.d(),X=!1,me(q)}}}function Lm(l,e,t){let{appConfig:n=null}=e,i=!1,o=9786,r=!1,c=0,f=!1,p="",v="";function g(){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 h(){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)}}g(),h();async function m(){t(4,f=!0),t(5,p=""),t(6,v="");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,v="ok"),await h()}catch(T){t(5,p=String(T)),t(6,v="error")}t(4,f=!1)}async function w(){t(4,f=!0),t(5,p=""),t(6,v="");try{window.go&&window.go.main&&window.go.main.App&&await window.go.main.App.RestartBridge(),t(5,p="bridge restarted"),t(6,v="ok"),await h()}catch(T){t(5,p=String(T)),t(6,v="error")}t(4,f=!1)}function b(){i=this.checked,t(0,i)}function y(){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,v,m,w,n,b,y]}class jm extends xe{constructor(e){super(),Ze(this,e,Lm,Pm,Xe,{appConfig:9})}}const{window:Fm}=gi;function zm(l){let e,t;return e=new jm({props:{appConfig:l[2]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p(n,i){const o={};i&4&&(o.appConfig=n[2]),e.$set(o)},i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Rm(l){let e,t;return e=new Mm({}),{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){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Om(l){let e,t;return e=new Nm({props:{onRefresh:l[7]}}),{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){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Bm(l){let e,t;return e=new Sm({}),{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){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Hm(l){let e,t;return e=new ym({}),{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){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Wm(l){let e,t;return e=new bm({props:{onPluginToggle:l[0]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p(n,i){const o={};i&1&&(o.onPluginToggle=n[0]),e.$set(o)},i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Vm(l){let e,t;return e=new fm({props:{onRefresh:l[3]}}),{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){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Um(l){let e,t;return e=new sm({props:{onRefresh:l[3]}}),{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){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Km(l){let e,t;return e=new em({props:{appConfig:l[2],onSave:l[6]}}),{c(){Ve(e.$$.fragment)},m(n,i){He(e,n,i),t=!0},p(n,i){const o={};i&4&&(o.appConfig=n[2]),e.$set(o)},i(n){t||(fe(e.$$.fragment,n),t=!0)},o(n){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Gm(l){let e,t,n,i,o,r,c,f,p,v,g,h,m,w,b,y;p=new Zg({props:{activeSection:l[1],onSelect:l[4]}});const T=[Km,Um,Vm,Wm,Hm,Bm,Om,Rm,zm],E=[];function I(N,A){return N[1]==="general"?0:N[1]==="workspace"?1:N[1]==="templates"?2:N[1]==="plugins"?3:N[1]==="files"?4:N[1]==="activity"?5:N[1]==="sync"?6:N[1]==="backup"?7:N[1]==="browserBridge"?8:-1}return~(h=I(l))&&(m=E[h]=T[h](l)),{c(){e=u("button"),t=u("div"),n=u("div"),i=u("h2"),i.textContent=`${_("settings.title")}`,o=k(),r=u("button"),r.innerHTML='',c=k(),f=u("div"),Ve(p.$$.fragment),v=k(),g=u("div"),m&&m.c(),s(i,"class","svelte-zf2zsc"),s(r,"class","close-btn svelte-zf2zsc"),s(r,"title",_("settings.close")),s(n,"class","settings-header svelte-zf2zsc"),s(g,"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,v),a(f,g),~h&&E[h].m(g,null),w=!0,b||(y=[L(Fm,"keydown",l[8]),L(r,"click",l[5]),L(e,"click",Ct(l[5]))],b=!0)},p(N,[A]){const j={};A&2&&(j.activeSection=N[1]),p.$set(j);let D=h;h=I(N),h===D?~h&&E[h].p(N,A):(m&&(at(),ge(E[D],1,1,()=>{E[D]=null}),ct()),~h?(m=E[h],m?m.p(N,A):(m=E[h]=T[h](N),m.c()),fe(m,1),m.m(g,null)):m=null)},i(N){w||(fe(p.$$.fragment,N),fe(m),w=!0)},o(N){ge(p.$$.fragment,N),ge(m),w=!1},d(N){N&&C(e),We(p),~h&&E[h].d(),b=!1,me(y)}}}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 Jm(l,e,t){let{onClose:n=null}=e,{onSyncRefresh:i=null}=e,{onPluginToggle:o=null}=e,{initialSection:r="general"}=e,c=r,f=null;async function p(){try{t(2,f=await To("GetAppConfig"))}catch{t(2,f=null)}}p();function v(b){t(1,c=b)}function g(){n&&n()}async function h(b){try{await To("SaveAppConfig",b),t(2,f=b)}catch(y){console.error(y)}}function m(){i&&i()}function w(b){b.key==="Escape"&&g()}return l.$$set=b=>{"onClose"in b&&t(9,n=b.onClose),"onSyncRefresh"in b&&t(10,i=b.onSyncRefresh),"onPluginToggle"in b&&t(0,o=b.onPluginToggle),"initialSection"in b&&t(11,r=b.initialSection)},[o,c,f,p,v,g,h,m,w,n,i,r]}class qm extends xe{constructor(e){super(),Ze(this,e,Jm,Gm,Xe,{onClose:9,onSyncRefresh:10,onPluginToggle:0,initialSection:11})}}function Ym(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=`${_("sync.status.disabled")}`,o=k(),r=u("button"),r.textContent=`${_("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,v){S(p,e,v),a(e,t),a(e,n),a(e,i),a(e,o),a(e,r),c||(f=L(r,"click",function(){jt(l[5])&&l[5].apply(this,arguments)}),c=!0)},p(p,v){l=p},d(p){p&&C(e),c=!1,f()}}}function Qm(l){let e,t,n,i,o,r=l[7](l[0])+"",c,f,p,v,g,h=(l[1]?_("sync.running"):_("sync.run"))+"",m,w,b,y,T,E,I,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=z(r),f=k(),N&&N.c(),p=k(),v=u("div"),g=u("button"),m=z(h),w=k(),b=u("button"),b.textContent=`${_("sync.details")}`,y=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(g,"class","btn btn-xs svelte-1rxbx0"),g.disabled=l[1],s(b,"class","btn btn-xs btn-link svelte-1rxbx0"),s(v,"class","sync-actions-row svelte-1rxbx0"),s(e,"class","sync-status-row svelte-1rxbx0")},m(j,D){S(j,e,D),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,v),a(v,g),a(g,m),a(v,w),a(v,b),S(j,y,D),A&&A.m(j,D),S(j,T,D),E||(I=[L(g,"click",function(){jt(l[4])&&l[4].apply(this,arguments)}),L(b,"click",function(){jt(l[5])&&l[5].apply(this,arguments)})],E=!0)},p(j,D){l=j,D&1&&n!==(n="sync-dot "+l[6](l[0])+" svelte-1rxbx0")&&s(t,"class",n),D&1&&r!==(r=l[7](l[0])+"")&&K(c,r),l[0].unpushedOps>0?N?N.p(l,D):(N=Eo(l),N.c(),N.m(e,p)):N&&(N.d(1),N=null),D&2&&h!==(h=(l[1]?_("sync.running"):_("sync.run"))+"")&&K(m,h),D&2&&(g.disabled=l[1]),l[2]?A?A.p(l,D):(A=Do(l),A.c(),A.m(T.parentNode,T)):A&&(A.d(1),A=null)},d(j){j&&(C(e),C(y),C(T)),N&&N.d(),A&&A.d(j),E=!1,me(I)}}}function Eo(l){let e,t=l[0].unpushedOps+"",n,i,o=_("sync.changes")+"",r;return{c(){e=u("span"),n=z(t),i=k(),r=z(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&&C(e)}}}function Do(l){let e,t,n;return{c(){e=u("div"),t=z(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&&C(e)}}}function Xm(l){let e;function t(o,r){var c;return(c=o[0])!=null&&c.configured?Qm:Ym}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&&C(e),i.d()}}}function Zm(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(g){return!g||!g.configured?"dot-disabled":i?"dot-syncing":g.revoked?"dot-disabled":g.connected?"dot-connected":g.configured?"dot-warning":"dot-disabled"}function v(g){return!g||!g.configured?_("sync.status.disabled"):i?_("sync.status.syncing"):g.revoked?_("sync.status.error"):g.connected?_("sync.status.connected"):_("sync.status.disconnected")}return l.$$set=g=>{"syncStatus"in g&&t(0,n=g.syncStatus),"syncLoading"in g&&t(1,i=g.syncLoading),"syncMessage"in g&&t(2,o=g.syncMessage),"syncMessageKind"in g&&t(3,r=g.syncMessageKind),"onSync"in g&&t(4,c=g.onSync),"onOpenSettings"in g&&t(5,f=g.onOpenSettings)},[n,i,o,r,c,f,p,v]}class xm extends xe{constructor(e){super(),Ze(this,e,Zm,Xm,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 $m(l){let e,t=de(l[0]),n=[];for(let i=0;i0&&No(l),D=l[10].ts_start&&Ao(l),M=l[10].status!=="pending"&&Mo(l),F=l[10].selected_text&&Po(l),B=l[10].status==="pending"&&Lo(l);return{c(){e=u("div"),t=u("div"),i=z(n),o=k(),r=u("div"),c=u("div"),p=z(f),v=k(),g=u("div"),m=z(h),b=k(),y=u("div"),j&&j.c(),T=k(),D&&D.c(),E=k(),M&&M.c(),I=k(),F&&F.c(),N=k(),B&&B.c(),A=k(),s(t,"class","event-icon svelte-slao4o"),s(c,"class","event-domain svelte-slao4o"),s(g,"class","event-title svelte-slao4o"),s(g,"title",w=l[10].title),s(y,"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,v),a(r,g),a(g,m),a(r,b),a(r,y),j&&j.m(y,null),a(y,T),D&&D.m(y,null),a(y,E),M&&M.m(y,null),a(r,I),F&&F.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&&h!==(h=yn(W[10].title||W[10].url,80)+"")&&K(m,h),H&1&&w!==(w=W[10].title)&&s(g,"title",w),W[10].active_seconds>0?j?j.p(W,H):(j=No(W),j.c(),j.m(y,T)):j&&(j.d(1),j=null),W[10].ts_start?D?D.p(W,H):(D=Ao(W),D.c(),D.m(y,E)):D&&(D.d(1),D=null),W[10].status!=="pending"?M?M.p(W,H):(M=Mo(W),M.c(),M.m(y,null)):M&&(M.d(1),M=null),W[10].selected_text?F?F.p(W,H):(F=Po(W),F.c(),F.m(r,null)):F&&(F.d(1),F=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&&C(e),j&&j.d(),D&&D.d(),M&&M.d(),F&&F.d(),B&&B.d()}}}function t_(l){let e;return{c(){e=u("p"),e.textContent=`${_("noBrowserEvents","Нет событий браузера")}`,s(e,"class","empty-text svelte-slao4o")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function l_(l){let e;return{c(){e=u("p"),e.textContent=`${_("loading","Загрузка...")}`,s(e,"class","loading svelte-slao4o")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function n_(l){let e,t,n,i,o,r=l[1]?"⏳":"🔄",c,f,p,v;function g(w,b){return w[0].length===0?e_:$m}let h=g(l),m=h(l);return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${_("browserEvents","События браузера")}`,i=k(),o=u("button"),c=z(r),f=k(),m.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(w,b){S(w,e,b),a(e,t),a(t,n),a(t,i),a(t,o),a(o,c),a(e,f),m.m(e,null),p||(v=L(o,"click",function(){jt(l[5])&&l[5].apply(this,arguments)}),p=!0)},p(w,[b]){l=w,b&2&&r!==(r=l[1]?"⏳":"🔄")&&K(c,r),b&2&&(o.disabled=l[1]),h===(h=g(l))&&m?m.p(l,b):(m.d(1),m=h(l),m&&(m.c(),m.m(e,null)))},i:te,o:te,d(w){w&&C(e),m.d(),p=!1,v()}}}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 i_(l,e,t){let{events:n=[]}=e,{loading:i=!1}=e,{onAccept:o=m=>{}}=e,{onDismiss:r=m=>{}}=e,{onAttach:c=m=>{}}=e,{onRefresh:f=()=>{}}=e,{formatTime:p=m=>""}=e;const v=m=>o(m),g=m=>c(m),h=m=>r(m);return l.$$set=m=>{"events"in m&&t(0,n=m.events),"loading"in m&&t(1,i=m.loading),"onAccept"in m&&t(2,o=m.onAccept),"onDismiss"in m&&t(3,r=m.onDismiss),"onAttach"in m&&t(4,c=m.onAttach),"onRefresh"in m&&t(5,f=m.onRefresh),"formatTime"in m&&t(6,p=m.formatTime)},[n,i,o,r,c,f,p,v,g,h]}class s_ extends xe{constructor(e){super(),Ze(this,e,i_,n_,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=z(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&&C(e)}}}function Vo(l){let e,t=l[3].length+"",n;return{c(){e=u("span"),n=z(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&&C(e)}}}function Uo(l){let e,t=l[15].length+"",n;return{c(){e=u("span"),n=z(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&&C(e)}}}function o_(l){let e,t,n;return t=new s_({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){ge(t.$$.fragment,i),n=!1},d(i){i&&C(e),We(t)}}}function r_(l){let e,t,n,i,o,r,c,f,p,v,g=l[25]==="asc"?"↑":"↓",h,m,w,b;function y(I,N){return I[3].length===0?d_:f_}let T=y(l),E=T(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("button"),i.textContent=`${_("today.sortByTime")}`,o=k(),r=u("button"),r.textContent=`${_("today.sortByName")}`,c=k(),f=u("button"),f.textContent=`${_("today.sortByType")}`,p=k(),v=u("span"),h=z(g),m=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(v,"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(I,N){S(I,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,v),a(v,h),a(e,m),E.m(e,null),w||(b=[L(i,"click",l[56]),L(r,"click",l[57]),L(f,"click",l[58])],w=!0)},p(I,N){N[0]&16777216&&ae(i,"active",I[24]==="time"),N[0]&16777216&&ae(r,"active",I[24]==="name"),N[0]&16777216&&ae(f,"active",I[24]==="type"),N[0]&33554432&&g!==(g=I[25]==="asc"?"↑":"↓")&&K(h,g),T===(T=y(I))&&E?E.p(I,N):(E.d(1),E=T(I),E&&(E.c(),E.m(e,null)))},i:te,o:te,d(I){I&&C(e),E.d(),w=!1,me(b)}}}function a_(l){let e,t,n,i,o,r,c,f,p,v,g=l[23]==="asc"?"↑":"↓",h,m,w,b;function y(I,N){return I[2].length===0?g_:p_}let T=y(l),E=T(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("button"),i.textContent=`${_("today.sortByTime")}`,o=k(),r=u("button"),r.textContent=`${_("today.sortByName")}`,c=k(),f=u("button"),f.textContent=`${_("today.sortByType")}`,p=k(),v=u("span"),h=z(g),m=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(v,"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(I,N){S(I,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,v),a(v,h),a(e,m),E.m(e,null),w||(b=[L(i,"click",l[51]),L(r,"click",l[52]),L(f,"click",l[53])],w=!0)},p(I,N){N[0]&4194304&&ae(i,"active",I[22]==="time"),N[0]&4194304&&ae(r,"active",I[22]==="name"),N[0]&4194304&&ae(f,"active",I[22]==="type"),N[0]&8388608&&g!==(g=I[23]==="asc"?"↑":"↓")&&K(h,g),T===(T=y(I))&&E?E.p(I,N):(E.d(1),E=T(I),E&&(E.c(),E.m(e,null)))},i:te,o:te,d(I){I&&C(e),E.d(),w=!1,me(b)}}}function c_(l){let e;function t(o,r){return o[0].length===0?__:m_}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&&C(e),i.d()}}}function u_(l){let e;function t(o,r){return!o[1]||!o[1].events||o[1].events.length===0?h_:v_}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&&C(e),i.d()}}}function f_(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=z(o),c=k(),f=u("span"),v=z(p),g=k(),h=u("span"),w=z(m),b=k(),T=z(y),x&&x.c(),E=k(),I=u("div"),N=u("span"),D=k(),M=u("input"),B=k(),W=u("span"),W.textContent=`${_("suggest.minutes")}`,H=k(),U=u("button"),U.textContent=`${_("suggest.edit")}`,J=k(),Y=u("button"),Y.textContent=`${_("suggest.apply")}`,Q=k(),R=u("button"),R.textContent=`${_("common.delete")}`,V=k(),_e&&_e.c(),O=k(),s(i,"class","suggestion-node link-btn svelte-ii7vwz"),s(f,"class","suggestion-summary svelte-ii7vwz"),s(h,"class","suggestion-meta svelte-ii7vwz"),s(n,"class","suggestion-info svelte-ii7vwz"),s(N,"class","suggestion-confidence-dot svelte-ii7vwz"),s(N,"title",A=_("suggest.confidence."+l[64].confidence)),s(N,"aria-label",j=_("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=F=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(R,"class","btn btn-sm btn-danger svelte-ii7vwz"),s(I,"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,v),a(n,g),a(n,h),a(h,w),a(h,b),a(h,T),x&&x.m(h,null),a(t,E),a(t,I),a(I,N),a(I,D),a(I,M),a(I,B),a(I,W),a(I,H),a(I,U),a(I,J),a(I,Y),a(I,Q),a(I,R),a(e,V),_e&&_e.m(e,null),a(e,O),X||(q=[L(i,"click",Ie(G)),L(M,"change",Ie(ee)),L(U,"click",Ie(le)),L(Y,"click",Ie(ce)),L(R,"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(v,p),se[0]&1&&m!==(m=l[64].suggestedMin+"")&&K(w,m),l[64].events&&l[64].events.length>0?x?x.p(l,se):(x=qo(l),x.c(),x.m(h,null)):x&&(x.d(1),x=null),se[0]&1&&A!==(A=_("suggest.confidence."+l[64].confidence))&&s(N,"title",A),se[0]&1&&j!==(j=_("suggest.confidence."+l[64].confidence))&&s(N,"aria-label",j),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&&F!==(F=l[64].suggestedMin)&&M.value!==F&&(M.value=F),l[64]._expanded&&l[64].events&&l[64].events.length>0?_e?_e.p(l,se):(_e=Yo(l),_e.c(),_e.m(e,O)):_e&&(_e.d(1),_e=null),se[0]&1&&ae(e,"expanded",l[64]._expanded)},d($){$&&C(e),x&&x.d(),_e&&_e.d(),X=!1,me(q)}}}function v_(l){let e,t=de(l[1].events),n=[];for(let i=0;i',J=k(),s(t,"class","feed-icon svelte-ii7vwz"),s(f,"class","feed-type svelte-ii7vwz"),s(h,"class","feed-colon svelte-ii7vwz"),s(w,"class","feed-title link-btn svelte-ii7vwz"),s(c,"class","feed-title-line svelte-ii7vwz"),s(A,"class","feed-event-type svelte-ii7vwz"),s(F,"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",_("common.open")),s(e,"class","feed-item svelte-ii7vwz"),s(e,"role","button"),s(e,"tabindex","0")},m(q,G){S(q,e,G),a(e,t),a(t,i),a(e,o),a(e,r),a(r,c),a(c,f),a(f,v),a(c,g),a(c,h),a(c,m),a(c,w),a(w,y),a(r,T),a(r,E),R&&R.m(E,null),a(E,N),a(E,A),a(A,D),a(E,M),a(E,F),a(F,W),a(e,H),a(e,U),a(e,J),Y||(Q=[L(U,"click",Ie(V)),L(e,"click",O),L(e,"keydown",X)],Y=!0)},p(q,G){l=q,G[0]&2&&n!==(n=tr(l[61].eventType)+"")&&K(i,n),G[0]&2&&p!==(p=l[28](l[61])+"")&&K(v,p),G[0]&2&&b!==(b=(l[61].title||"")+"")&&K(y,b),G[0]&2&&(I=Cn(l[61])),I?R?R.p(l,G):(R=$o(l),R.c(),R.m(E,N)):R&&(R.d(1),R=null),G[0]&66&&j!==(j=l[6](l[61].eventType)+"")&&K(D,j),G[0]&34&&B!==(B=l[5](l[61].createdAt)+"")&&K(W,B)},d(q){q&&C(e),R&&R.d(),Y=!1,me(Q)}}}function k_(l){var X;let e,t,n,i=(((X=l[1])==null?void 0:X.date)||"")+"",o,r,c,f,p,v,g=_("today.suggestionsTab")+"",h,m,w,b,y,T,E=_("today.captured")+"",I,N,A,j,D,M,F,B,W,H,U,J=l[4]>0&&Wo(l),Y=l[3].length>0&&Vo(l),Q=l[15].length>0&&Uo(l);const R=[u_,c_,a_,r_,o_],V=[];function O(q,G){return q[21]==="feed"?0:q[21]==="suggestions"?1:q[21]==="inprogress"?2:q[21]==="captured"?3:q[21]==="browser"?4:-1}return~(F=O(l))&&(B=V[F]=R[F](l)),{c(){e=u("div"),t=u("div"),n=u("span"),o=z(i),r=k(),c=u("div"),f=u("button"),f.textContent=`${_("today.feed")}`,p=k(),v=u("button"),h=z(g),m=k(),J&&J.c(),w=k(),b=u("button"),b.textContent=`${_("today.inProgress")}`,y=k(),T=u("button"),I=z(E),N=k(),Y&&Y.c(),A=k(),j=u("button"),D=z(`Браузер - `),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(v,"class","today-tab svelte-ii7vwz"),ae(v,"active",l[21]==="suggestions"),s(b,"class","today-tab svelte-ii7vwz"),ae(b,"active",l[21]==="inprogress"),s(T,"class","today-tab svelte-ii7vwz"),ae(T,"active",l[21]==="captured"),s(j,"class","today-tab svelte-ii7vwz"),ae(j,"active",l[21]==="browser"),s(c,"class","today-tabs svelte-ii7vwz"),s(e,"class","today-screen svelte-ii7vwz")},m(q,G){S(q,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,v),a(v,h),a(v,m),J&&J.m(v,null),a(c,w),a(c,b),a(c,y),a(c,T),a(T,I),a(T,N),Y&&Y.m(T,null),a(c,A),a(c,j),a(j,D),Q&&Q.m(j,null),a(e,M),~F&&V[F].m(e,null),W=!0,H||(U=[L(f,"click",l[34]),L(v,"click",l[35]),L(b,"click",l[36]),L(T,"click",l[37]),L(j,"click",l[38])],H=!0)},p(q,G){var ee;(!W||G[0]&2)&&i!==(i=(((ee=q[1])==null?void 0:ee.date)||"")+"")&&K(o,i),(!W||G[0]&2097152)&&ae(f,"active",q[21]==="feed"),q[4]>0?J?J.p(q,G):(J=Wo(q),J.c(),J.m(v,null)):J&&(J.d(1),J=null),(!W||G[0]&2097152)&&ae(v,"active",q[21]==="suggestions"),(!W||G[0]&2097152)&&ae(b,"active",q[21]==="inprogress"),q[3].length>0?Y?Y.p(q,G):(Y=Vo(q),Y.c(),Y.m(T,null)):Y&&(Y.d(1),Y=null),(!W||G[0]&2097152)&&ae(T,"active",q[21]==="captured"),q[15].length>0?Q?Q.p(q,G):(Q=Uo(q),Q.c(),Q.m(j,null)):Q&&(Q.d(1),Q=null),(!W||G[0]&2097152)&&ae(j,"active",q[21]==="browser");let x=F;F=O(q),F===x?~F&&V[F].p(q,G):(B&&(at(),ge(V[x],1,1,()=>{V[x]=null}),ct()),~F?(B=V[F],B?B.p(q,G):(B=V[F]=R[F](q),B.c()),fe(B,1),B.m(e,null)):B=null)},i(q){W||(fe(B),W=!0)},o(q){ge(B),W=!1},d(q){q&&C(e),J&&J.d(),Y&&Y.d(),Q&&Q.d(),~F&&V[F].d(),H=!1,me(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 b_(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:v=Z=>""}=e,{inboxMetaText:g=Z=>""}=e,{onOpenNodeById:h=Z=>{}}=e,{onOpenActivityEvent:m=Z=>{}}=e,{onOpenActivityTarget:w=Z=>{}}=e,{onOpenSuggestionWorklog:b=Z=>{}}=e,{onAcceptSuggestion:y=Z=>{}}=e,{onDeleteSuggestion:T=Z=>{}}=e,{onOpenNodeFolder:E=Z=>{}}=e,{onOpenInboxArtifact:I=Z=>{}}=e,{onOpenTrashNode:N=Z=>{}}=e,{browserEvents:A=[]}=e,{browserLoading:j=!1}=e,{onBrowserAccept:D=Z=>{}}=e,{onBrowserDismiss:M=Z=>{}}=e,{onBrowserAttach:F=Z=>{}}=e,{onBrowserRefresh:B=()=>{}}=e,W="feed";function H(Z){y(Z)}function U(Z){T(Z)}function J(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?w(Z):Z.nodeId&&h(Z.nodeId);return}if(["note_created","note_updated","note_deleted"].includes(Z.eventType)){Z.targetType==="note"&&Z.targetId?w(Z):Z.nodeId&&h(Z.nodeId);return}if(Z.eventType==="worklog_added"){Z.nodeId&&h(Z.nodeId);return}if(["action_created","action_done"].includes(Z.eventType)){Z.nodeId&&h(Z.nodeId);return}(Z.id||Z.nodeId)&&m(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 R="time",V="desc",O="time",X="desc";const q=()=>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=>h(Z.nodeId),_e=(Z,ye,ve,ke)=>t(0,ye[ve].suggestedMin=parseInt(ke.target.value),i),$=Z=>b(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=>w(Z),Qe=Z=>E(Z.nodeId),Ae=()=>{t(22,R="time"),t(23,V=R==="time"&&V==="desc"?"asc":"desc")},$e=()=>{t(22,R="name"),t(23,V=R==="name"&&V==="desc"?"asc":"desc")},Re=()=>{t(22,R="type"),t(23,V=R==="type"&&V==="desc"?"asc":"desc")},je=Z=>m(Z),Ne=(Z,ye)=>ye.key==="Enter"&&m(Z),Ge=()=>{t(24,O="time"),t(25,X=O==="time"&&X==="desc"?"asc":"desc")},Se=()=>{t(24,O="name"),t(25,X=O==="name"&&X==="desc"?"asc":"desc")},Pe=()=>{t(24,O="type"),t(25,X=O==="type"&&X==="desc"?"asc":"desc")},Me=Z=>I(Z),ft=(Z,ye)=>ye.key==="Enter"&&I(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,v=Z.eventIcon),"inboxMetaText"in Z&&t(8,g=Z.inboxMetaText),"onOpenNodeById"in Z&&t(9,h=Z.onOpenNodeById),"onOpenActivityEvent"in Z&&t(10,m=Z.onOpenActivityEvent),"onOpenActivityTarget"in Z&&t(11,w=Z.onOpenActivityTarget),"onOpenSuggestionWorklog"in Z&&t(12,b=Z.onOpenSuggestionWorklog),"onAcceptSuggestion"in Z&&t(31,y=Z.onAcceptSuggestion),"onDeleteSuggestion"in Z&&t(32,T=Z.onDeleteSuggestion),"onOpenNodeFolder"in Z&&t(13,E=Z.onOpenNodeFolder),"onOpenInboxArtifact"in Z&&t(14,I=Z.onOpenInboxArtifact),"onOpenTrashNode"in Z&&t(33,N=Z.onOpenTrashNode),"browserEvents"in Z&&t(15,A=Z.browserEvents),"browserLoading"in Z&&t(16,j=Z.browserLoading),"onBrowserAccept"in Z&&t(17,D=Z.onBrowserAccept),"onBrowserDismiss"in Z&&t(18,M=Z.onBrowserDismiss),"onBrowserAttach"in Z&&t(19,F=Z.onBrowserAttach),"onBrowserRefresh"in Z&&t(20,B=Z.onBrowserRefresh)},[i,n,o,r,c,f,p,v,g,h,m,w,b,E,I,A,j,D,M,F,B,W,R,V,O,X,H,U,J,Y,Q,y,T,N,q,G,x,ee,le,ce,pe,Ee,ze,_e,$,se,Ce,De,we,Le,Qe,Ae,$e,Re,je,Ne,Ge,Se,Pe,Me,ft]}class w_ extends xe{constructor(e){super(),Ze(this,e,b_,k_,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 y_(l){let e,t,n,i,o=l[3]&&ir(l);return{c(){e=u("div"),o&&o.c(),t=k(),n=u("iframe"),s(n,"class","plugin-frame svelte-xgfxht"),s(n,"srcdoc",l[1]),s(n,"sandbox","allow-scripts allow-same-origin"),s(n,"title",i=l[0]+" panel"),s(e,"class","plugin-frame-container svelte-xgfxht")},m(r,c){S(r,e,c),o&&o.m(e,null),a(e,t),a(e,n),l[9](n)},p(r,c){r[3]?o?o.p(r,c):(o=ir(r),o.c(),o.m(e,t)):o&&(o.d(1),o=null),c&2&&s(n,"srcdoc",r[1]),c&1&&i!==(i=r[0]+" panel")&&s(n,"title",i)},d(r){r&&C(e),o&&o.d(),l[9](null)}}}function C_(l){let e,t,n,i,o,r,c;return{c(){e=u("div"),t=u("p"),n=z("Плагин «"),i=z(l[0]),o=z("» активен, но HTML-панель не настроена."),r=k(),c=u("p"),c.innerHTML='Для отображения контента добавьте поле panel в plugin.json.',s(c,"class","hint"),s(e,"class","empty-state svelte-xgfxht")},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&1&&K(i,f[0])},d(f){f&&C(e)}}}function S_(l){let e;return{c(){e=u("p"),e.textContent="Загрузка…",s(e,"class","loading svelte-xgfxht")},m(t,n){S(t,e,n)},p:te,d(t){t&&C(e)}}}function ir(l){let e,t,n;return{c(){e=u("div"),t=z("⚠ "),n=z(l[3]),s(e,"class","plugin-error-bar svelte-xgfxht")},m(i,o){S(i,e,o),a(e,t),a(e,n)},p(i,o){o&8&&K(n,i[3])},d(i){i&&C(e)}}}function T_(l){let e;function t(o,r){return o[2]?S_:o[1]?y_:C_}let n=t(l),i=n(l);return{c(){e=u("div"),i.c(),s(e,"class","plugin-page svelte-xgfxht")},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&&C(e),i.d()}}}function il(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 E_(l,e,t){let n,i,o,r,{sectionId:c=""}=e,f="",p=!0,v="",g=null,h=[],m=!1;function w(D){console.log("[CalendarPluginPage] postToIframe: iframeReady="+m+", hasEl="+!!g+", hasCW="+!!(g!=null&&g.contentWindow)),g&&g.contentWindow&&m?(console.log("[CalendarPluginPage] postToIframe: sending msg.type="+D.type),g.contentWindow.postMessage(D,"*")):(console.log("[CalendarPluginPage] postToIframe: queuing msg.type="+D.type),h.push(D))}function b(D){if(!g||!g.contentWindow||D.source!==g.contentWindow)return;const M=D.data;if(!(!M||typeof M!="object")&&!(!M.source||typeof M.source!="string")&&!(!M.action||typeof M.action!="string"))switch(M.action){case"ready":for(m=!0;h.length>0;)g.contentWindow.postMessage(h.shift(),"*");y();break;case"get-events":T(M.data);break;case"create-event":E(M.data);break;case"update-event":I(M.data);break;case"delete-event":N(M.data);break;default:console.log("[CalendarPluginPage] Unknown iframe action:",M.action)}}async function y(){try{console.log("[CalendarPluginPage] loadCalendarData: step 1");const D=new Date,M=D.getFullYear(),F=D.getMonth(),B=new Date(M,F,1).toISOString().slice(0,10)+"T00:00:00",W=new Date(M,F+1,0).toISOString().slice(0,10)+"T23:59:59";console.log("[CalendarPluginPage] loadCalendarData: step 2, start="+B+", end="+W),console.log("[CalendarPluginPage] loadCalendarData: step 3, calling get_events...");const H=il("CallPluginFunction",i,r+"get_events",JSON.stringify({start:B,end:W}));console.log("[CalendarPluginPage] loadCalendarData: step 4, calling get_categories...");const U=il("CallPluginFunction",i,r+"get_categories","{}");console.log("[CalendarPluginPage] loadCalendarData: step 5, awaiting Promise.all...");const[J,Y]=await Promise.all([H,U]);console.log("[CalendarPluginPage] loadCalendarData: step 6, got results, eventsRaw="+typeof J+", categoriesRaw="+typeof Y);const Q=J?JSON.parse(J):[],R=Y?JSON.parse(Y):[];w({source:"verstak",type:"calendar-data",events:Q,categories:R});try{window.go.main.App.WriteDebugLog("[CalendarPluginPage] calendar-data sent to iframe, events.len="+Q.length+", categories.len="+((R==null?void 0:R.length)||0)+", typeof events="+typeof Q+", typeof eventsRaw="+typeof J+", eventsRaw.length="+J.length+", eventsRaw.substr(0,10)="+String(J).substring(0,10))}catch{}}catch(D){console.error("[CalendarPluginPage] loadCalendarData:",D),console.log("[CalendarPluginPage] error details:",JSON.stringify({message:String(D),stack:D==null?void 0:D.stack})),t(3,v=String(D))}}async function T(D){try{const M=JSON.stringify({start:D.start,end:D.end}),F=await il("CallPluginFunction",i,r+"get_events",M),B=F?JSON.parse(F):[];w({source:"verstak",type:"calendar-data",events:B})}catch(M){console.error("[CalendarPluginPage] get-events:",M)}}async function E(D){try{const M=JSON.stringify(D),F=await il("CallPluginFunction",i,r+"create_event",M),B=F?JSON.parse(F):{};w({source:"verstak",type:"event-created",event:B}),y()}catch(M){console.error("[CalendarPluginPage] create-event:",M),w({source:"verstak",type:"error",message:String(M)})}}async function I(D){try{const M=JSON.stringify(D);await il("CallPluginFunction",i,r+"update_event",M),w({source:"verstak",type:"event-updated",event:D}),y()}catch(M){console.error("[CalendarPluginPage] update-event:",M)}}async function N(D){try{const M=JSON.stringify({id:D.id});await il("CallPluginFunction",i,r+"delete_event",M),w({source:"verstak",type:"event-deleted",id:D.id}),y()}catch(M){console.error("[CalendarPluginPage] delete-event:",M)}}Kl(async()=>{try{t(1,f=await il("GetPluginPanelHTML",i)||"")}catch(D){t(3,v=String(D))}t(2,p=!1),window.addEventListener("message",b)}),Gl(()=>{window.removeEventListener("message",b)});function A(D,M){w({source:"verstak",type:"drop",date:M,data:D})}function j(D){bn[D?"unshift":"push"](()=>{g=D,t(4,g)})}return l.$$set=D=>{"sectionId"in D&&t(5,c=D.sectionId)},l.$$.update=()=>{l.$$.dirty&32&&t(8,n=c.split(":")),l.$$.dirty&256&&t(0,i=n[1]||""),l.$$.dirty&256&&t(7,o=n[2]||"main"),l.$$.dirty&128&&o.charAt(0).toUpperCase()+o.slice(1),l.$$.dirty&1&&(r=i?i+".":"")},[i,f,p,v,g,c,A,o,n,j]}class D_ extends xe{constructor(e){super(),Ze(this,e,E_,T_,Xe,{sectionId:5,handleDrop:6})}get handleDrop(){return this.$$.ctx[6]}}function sr(l,e,t){const n=l.slice();return n[25]=e[t],n[27]=t,n}function or(l){let e;function t(o,r){return o[3]?A_:o[1].length===0?N_:I_}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&&C(e),i.d()}}}function I_(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,v=0,g,h;function m(H){const U=[],J=i(H.type),Y=P_(H);return J&&U.push(J),Y&&U.push(Y),U.join(" · ")}async function w(){const H=Xc(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,v=0),t(2,f=!0)}catch{t(1,c=[]),t(2,f=!1)}finally{t(3,p=!1)}}function b(){clearTimeout(h),h=setTimeout(w,180)}function y(){t(2,f=!1),t(4,v=0)}function T(){t(0,r=""),t(1,c=[]),y()}function E(H){H&&(o("open",H),T(),g==null||g.blur())}function I(){b()}function N(H){if(H.key==="Escape"){H.preventDefault(),T(),g==null||g.blur();return}!f||c.length===0||(H.key==="ArrowDown"?(H.preventDefault(),t(4,v=Math.min(c.length-1,v+1))):H.key==="ArrowUp"?(H.preventDefault(),t(4,v=Math.max(0,v-1))):H.key==="Enter"&&(H.preventDefault(),E(c[v])))}async function A(){await yp(),g==null||g.focus(),g==null||g.select()}function j(H){if((H.ctrlKey||H.metaKey)&&H.key.toLowerCase()==="k"){H.preventDefault(),A();return}H.key==="/"&&!L_(H.target)&&(H.preventDefault(),A())}Kl(()=>{window.addEventListener("keydown",j)}),Gl(()=>{window.removeEventListener("keydown",j),clearTimeout(h)});function D(H){bn[H?"unshift":"push"](()=>{g=H,t(5,g)})}function M(){r=this.value,t(0,r)}const F=()=>{c.length>0&&t(2,f=!0)},B=()=>setTimeout(y,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,v,g,m,y,E,I,N,n,i,D,M,F,B,W]}class F_ extends xe{constructor(e){super(),Ze(this,e,j_,M_,Xe,{wailsCall:11,typeLabel:12})}}const z_=l=>({}),ur=l=>({});function fr(l){let e,t;return{c(){e=u("span"),t=z(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&&C(e)}}}function R_(l){let e,t,n,i=(l[0]||"")+"",o,r,c,f,p,v,g,h=l[1]&&fr(l);p=new F_({props:{wailsCall:l[2],typeLabel:l[3]}}),p.$on("open",l[7]);const m=l[6].actions,w=_p(m,l,l[5],ur);return{c(){e=u("header"),t=u("div"),n=u("span"),o=z(i),r=k(),h&&h.c(),c=k(),f=u("div"),Ve(p.$$.fragment),v=k(),w&&w.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(b,y){S(b,e,y),a(e,t),a(t,n),a(n,o),a(t,r),h&&h.m(t,null),a(e,c),a(e,f),He(p,f,null),a(f,v),w&&w.m(f,null),g=!0},p(b,[y]){(!g||y&1)&&i!==(i=(b[0]||"")+"")&&K(o,i),(!g||y&1)&&ae(n,"placeholder",!b[0]),b[1]?h?h.p(b,y):(h=fr(b),h.c(),h.m(t,null)):h&&(h.d(1),h=null);const T={};y&4&&(T.wailsCall=b[2]),y&8&&(T.typeLabel=b[3]),p.$set(T),w&&w.p&&(!g||y&32)&&hp(w,m,b,b[5],g?vp(m,b[5],y,z_):kp(b[5]),ur)},i(b){g||(fe(p.$$.fragment,b),fe(w,b),g=!0)},o(b){ge(p.$$.fragment,b),ge(w,b),g=!1},d(b){b&&C(e),h&&h.d(),We(p),w&&w.d(b)}}}function O_(l,e,t){let{$$slots:n={},$$scope:i}=e,{title:o=""}=e,{subtitle:r=""}=e,{wailsCall:c=async()=>[]}=e,{typeLabel:f=g=>g||""}=e,{onOpenSearchResult:p=()=>{}}=e;const v=g=>p(g.detail);return l.$$set=g=>{"title"in g&&t(0,o=g.title),"subtitle"in g&&t(1,r=g.subtitle),"wailsCall"in g&&t(2,c=g.wailsCall),"typeLabel"in g&&t(3,f=g.typeLabel),"onOpenSearchResult"in g&&t(4,p=g.onOpenSearchResult),"$$scope"in g&&t(5,i=g.$$scope)},[o,r,c,f,p,i,n,v]}class B_ extends xe{constructor(e){super(),Ze(this,e,O_,R_,Xe,{title:0,subtitle:1,wailsCall:2,typeLabel:3,onOpenSearchResult:4})}}const H_={open:'',showInExplorer:'',delete:'',restore:'',purge:'',move:'',attach:'',back:'',emptyTrash:'',folder:''};function it(l,e=16){return`${H_[l]||""}`}const{Boolean:Zc}=gi;function dr(l,e,t){const n=l.slice();return n[483]=e[t],n}function pr(l,e,t){const n=l.slice();return n[486]=e[t],n}function gr(l,e,t){const n=l.slice();return n[489]=e[t],n}function mr(l,e,t){const n=l.slice();return n[489]=e[t],n}function _r(l,e,t){const n=l.slice();return n[515]=e[t],n}function vr(l,e,t){const n=l.slice();return n[542]=e[t],n}function hr(l,e,t){const n=l.slice();return n[515]=e[t],n}function kr(l,e,t){const n=l.slice();return n[542]=e[t],n}function br(l,e,t){const n=l.slice();return n[549]=e[t],n}function wr(l,e,t){const n=l.slice();return n[549]=e[t],n}function yr(l,e,t){const n=l.slice();return n[518]=e[t],n[538]=e,n[539]=t,n}function Cr(l,e,t){const n=l.slice();return n[515]=e[t],n}function Sr(l,e,t){const n=l.slice();return n[535]=e[t],n}function Tr(l,e,t){const n=l.slice();return n[502]=e[t],n}function Er(l,e,t){const n=l.slice();return n[528]=e[t],n}function Dr(l,e,t){const n=l.slice();return n[502]=e[t],n}function Ir(l,e,t){const n=l.slice();return n[515]=e[t],n}function Nr(l,e,t){const n=l.slice();return n[494]=e[t],n}function Ar(l,e,t){const n=l.slice();return n[515]=e[t],n}function Mr(l,e,t){const n=l.slice();return n[518]=e[t],n[519]=e,n[520]=t,n}function Pr(l,e,t){const n=l.slice();return n[515]=e[t],n}function Lr(l,e,t){const n=l.slice();return n[510]=e[t],n}function jr(l,e,t){const n=l.slice();return n[507]=e[t],n}function Fr(l,e,t){const n=l.slice();return n[502]=e[t],n}function zr(l,e,t){const n=l.slice();return n[502]=e[t],n}function Rr(l,e,t){const n=l.slice();return n[497]=e[t],n}function Or(l,e,t){const n=l.slice();return n[494]=e[t],n}function Br(l,e,t){const n=l.slice();return n[497]=e[t],n}function Hr(l,e,t){const n=l.slice();return n[525]=e[t],n}function Wr(l,e,t){const n=l.slice();return n[556]=e[t],n}function W_(l){let e,t,n,i,o,r,c,f,p,v,g,h,m,w,b,y,T,E,I,N,A,j,D,M,F,B,W,H,U,J,Y,Q,R,V,O,X,q,G,x,ee,le,ce,pe,Ee,ze,_e,$,se,Ce,De,we,Le,Qe,Ae=l[97]&&Vr(l),$e=de(l[0]),Re=[];for(let re=0;re<$e.length;re+=1)Re[re]=Gr(Wr(l,$e,re));const je=[G_,K_],Ne=[];function Ge(re,he){return re[14].length>0?0:1}A=Ge(l),j=Ne[A]=je[A](l),F=new xm({props:{syncStatus:l[112],syncLoading:l[113],syncMessage:l[114],syncMessageKind:l[115],onSync:l[240],onOpenSettings:l[246]}}),V=new B_({props:{title:l[119],subtitle:l[118],wailsCall:oe,typeLabel:l[208],onOpenSearchResult:l[235],$$slots:{actions:[Y_]},$$scope:{ctx:l}}});let Se=l[34]&&Yr(l);const Pe=[nv,lv,tv,ev,$_,x_,Z_,X_,Q_],Me=[];function ft(re,he){return he[0]&2&&(q=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:(q==null&&(q=!!(re[1]&&re[1].startsWith("plugin:"))),q?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]=Pe[G](l);let Z=l[69]&&rc(l),ye=l[73].visible&&uc(l),ve=l[40]&&gc(l),ke=l[76]&&mc(l),Je=l[83]&&l[82]&&vc(l),qe=l[104]&&kc(l),Ue=l[107]&&wc(l),tt=l[59]&&Tc(l),Ye=l[99]&&Dc(l),Oe=l[89]&&Ic(l),et=l[13]&&Nc(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=`${_("nav.brand")}`,p=k(),v=u("nav"),g=u("div"),h=u("div"),h.textContent=`${_("nav.system")}`,m=k();for(let re=0;re',U=k(),J=u("span"),Y=z(l[33]),Q=k(),R=u("main"),Ve(V.$$.fragment),O=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(h,"class","nav-label svelte-19ekrug"),s(g,"class","nav-group svelte-19ekrug"),s(T,"class","svelte-19ekrug"),s(I,"class","nav-add-btn svelte-19ekrug"),s(I,"title",_("common.create")),s(y,"class","nav-label-row svelte-19ekrug"),s(b,"class","nav-group svelte-19ekrug"),s(v,"class","sidebar-nav svelte-19ekrug"),s(H,"class","sidebar-settings-btn svelte-19ekrug"),s(H,"title",_("common.settings")),s(J,"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(R,"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,v),a(v,g),a(g,h),a(g,m);for(let Ke=0;Ke{Ne[Ke]=null}),ct(),j=Ne[A],j?j.p(re,he):(j=Ne[A]=je[A](re),j.c()),fe(j,1),j.m(b,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]),F.$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]&2&&(Kt.$$scope={dirty:he,ctx:re}),V.$set(Kt),re[34]?Se?Se.p(re,he):(Se=Yr(re),Se.c(),Se.m(R,X)):Se&&(Se.d(1),Se=null);let rl=G;G=ft(re,he),G===rl?Me[G].p(re,he):(at(),ge(Me[rl],1,1,()=>{Me[rl]=null}),ct(),x=Me[G],x?x.p(re,he):(x=Me[G]=Pe[G](re),x.c()),fe(x,1),x.m(R,ee)),re[69]?Z?(Z.p(re,he),he[2]&128&&fe(Z,1)):(Z=rc(re),Z.c(),fe(Z,1),Z.m(R,le)):Z&&(at(),ge(Z,1,1,()=>{Z=null}),ct()),re[73].visible?ye?(ye.p(re,he),he[2]&2048&&fe(ye,1)):(ye=uc(re),ye.c(),fe(ye,1),ye.m(R,ce)):ye&&(at(),ge(ye,1,1,()=>{ye=null}),ct()),re[40]?ve?ve.p(re,he):(ve=gc(re),ve.c(),ve.m(R,pe)):ve&&(ve.d(1),ve=null),re[76]?ke?ke.p(re,he):(ke=mc(re),ke.c(),ke.m(R,Ee)):ke&&(ke.d(1),ke=null),re[83]&&re[82]?Je?Je.p(re,he):(Je=vc(re),Je.c(),Je.m(R,ze)):Je&&(Je.d(1),Je=null),re[104]?qe?qe.p(re,he):(qe=kc(re),qe.c(),qe.m(R,_e)):qe&&(qe.d(1),qe=null),re[107]?Ue?Ue.p(re,he):(Ue=wc(re),Ue.c(),Ue.m(R,$)):Ue&&(Ue.d(1),Ue=null),re[59]?tt?tt.p(re,he):(tt=Tc(re),tt.c(),tt.m(R,se)):tt&&(tt.d(1),tt=null),re[99]?Ye?(Ye.p(re,he),he[3]&64&&fe(Ye,1)):(Ye=Dc(re),Ye.c(),fe(Ye,1),Ye.m(R,Ce)):Ye&&(at(),ge(Ye,1,1,()=>{Ye=null}),ct()),re[89]?Oe?(Oe.p(re,he),he[2]&134217728&&fe(Oe,1)):(Oe=Ic(re),Oe.c(),fe(Oe,1),Oe.m(R,De)):Oe&&(at(),ge(Oe,1,1,()=>{Oe=null}),ct()),re[13]?et?(et.p(re,he),he[0]&8192&&fe(et,1)):(et=Nc(re),et.c(),fe(et,1),et.m(R,null)):et&&(at(),ge(et,1,1,()=>{et=null}),ct())},i(re){we||(fe(j),fe(F.$$.fragment,re),fe(V.$$.fragment,re),fe(x),fe(Z),fe(ye),fe(Ye),fe(Oe),fe(et),we=!0)},o(re){ge(j),ge(F.$$.fragment,re),ge(V.$$.fragment,re),ge(x),ge(Z),ge(ye),ge(Ye),ge(Oe),ge(et),we=!1},d(re){re&&C(e),Ae&&Ae.d(),Fe(Re,re),Ne[A].d(),We(F),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,me(Qe)}}}function V_(l){var n;let e,t;return e=new Bg({props:{vaultPath:((n=l[10])==null?void 0:n.vaultPath)||"",onComplete:l[242]}}),{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){ge(e.$$.fragment,i),t=!1},d(i){We(e,i)}}}function U_(l){let e,t;return e=new zg({props:{onComplete:l[241]}}),{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){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Vr(l){let e,t,n;return{c(){e=u("div"),t=u("div"),n=z(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&&C(e)}}}function Ur(l){let e,t;return{c(){e=u("span"),t=z(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&&C(e)}}}function Kr(l){let e,t;return{c(){e=u("span"),t=z(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&&C(e)}}}function Gr(l){let e,t=l[556].label+"",n,i,o,r,c,f,p,v=l[556].id==="journal"&&l[50]>0&&Ur(l),g=l[556].id==="trash"&&l[64]>0&&Kr(l);function h(){return l[245](l[556])}return{c(){e=u("button"),n=z(t),i=k(),v&&v.c(),o=k(),g&&g.c(),r=k(),s(e,"class",c="nav-item "+(l[1]===l[556].id?"selected":"")+" svelte-19ekrug")},m(m,w){S(m,e,w),a(e,n),a(e,i),v&&v.m(e,null),a(e,o),g&&g.m(e,null),a(e,r),f||(p=L(e,"click",h),f=!0)},p(m,w){l=m,w[0]&1&&t!==(t=l[556].label+"")&&K(n,t),l[556].id==="journal"&&l[50]>0?v?v.p(l,w):(v=Ur(l),v.c(),v.m(e,o)):v&&(v.d(1),v=null),l[556].id==="trash"&&l[64]>0?g?g.p(l,w):(g=Kr(l),g.c(),g.m(e,r)):g&&(g.d(1),g=null),w[0]&3&&c!==(c="nav-item "+(l[1]===l[556].id?"selected":"")+" svelte-19ekrug")&&s(e,"class",c)},d(m){m&&C(e),v&&v.d(),g&&g.d(),f=!1,p()}}}function K_(l){let e;return{c(){e=u("div"),e.textContent=`${_("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&&C(e)}}}function G_(l){var r;let e,t,n,i,o;return t=new Qc({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",_("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 v;const p={};f[0]&16384&&(p.nodes=c[14]),f[2]&4194304&&(p.expanded=c[84]),f[0]&4&&(p.selectedNodeId=((v=c[2])==null?void 0:v.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){ge(t.$$.fragment,c),n=!1},d(c){c&&C(e),We(t),i=!1,me(o)}}}function J_(l){let e,t,n,i=it("emptyTrash",14)+"",o,r=_("trash.emptyTrash")+"",c,f,p,v,g,h=l[65].length>0&&Jr(l);return{c(){h&&h.c(),e=k(),t=u("button"),n=new ui(!1),o=k(),c=z(r),f=k(),p=u("button"),p.textContent=`${_("trash.openFolder")}`,n.a=o,s(t,"class","btn btn-sm btn-danger svelte-19ekrug"),s(p,"class","btn btn-sm svelte-19ekrug")},m(m,w){h&&h.m(m,w),S(m,e,w),S(m,t,w),n.m(i,t),a(t,o),a(t,c),S(m,f,w),S(m,p,w),v||(g=[L(t,"click",l[184]),L(p,"click",l[250])],v=!0)},p(m,w){m[65].length>0?h?h.p(m,w):(h=Jr(m),h.c(),h.m(e.parentNode,e)):h&&(h.d(1),h=null)},d(m){m&&(C(e),C(t),C(f),C(p)),h&&h.d(m),v=!1,me(g)}}}function q_(l){let e,t=(l[56]?_("common.loading"):_("inbox.pasteClipboard"))+"",n,i,o,r,c,f=l[57]&&qr(l);return{c(){e=u("button"),n=z(t),i=k(),f&&f.c(),o=ot(),s(e,"class","btn btn-primary svelte-19ekrug"),e.disabled=l[56]},m(p,v){S(p,e,v),a(e,n),S(p,i,v),f&&f.m(p,v),S(p,o,v),r||(c=L(e,"click",l[210]),r=!0)},p(p,v){v[1]&33554432&&t!==(t=(p[56]?_("common.loading"):_("inbox.pasteClipboard"))+"")&&K(n,t),v[1]&33554432&&(e.disabled=p[56]),p[57]?f?f.p(p,v):(f=qr(p),f.c(),f.m(o.parentNode,o)):f&&(f.d(1),f=null)},d(p){p&&(C(e),C(i),C(o)),f&&f.d(p),r=!1,c()}}}function Jr(l){let e,t,n=it("restore",14)+"",i,o=_("trash.restore")+"",r,c,f=l[65].length+"",p,v,g,h,m,w=it("purge",14)+"",b,y=_("common.delete")+"",T,E,I=l[65].length+"",N,A,j,D;return{c(){e=u("button"),t=new ui(!1),i=k(),r=z(o),c=z(" ("),p=z(f),v=z(")"),g=k(),h=u("button"),m=new ui(!1),b=k(),T=z(y),E=z(" ("),N=z(I),A=z(")"),t.a=i,s(e,"class","btn btn-sm btn-primary svelte-19ekrug"),m.a=b,s(h,"class","btn btn-sm btn-danger svelte-19ekrug")},m(M,F){S(M,e,F),t.m(n,e),a(e,i),a(e,r),a(e,c),a(e,p),a(e,v),S(M,g,F),S(M,h,F),m.m(w,h),a(h,b),a(h,T),a(h,E),a(h,N),a(h,A),j||(D=[L(e,"click",l[248]),L(h,"click",l[249])],j=!0)},p(M,F){F[2]&8&&f!==(f=M[65].length+"")&&K(p,f),F[2]&8&&I!==(I=M[65].length+"")&&K(N,I)},d(M){M&&(C(e),C(g),C(h)),j=!1,me(D)}}}function qr(l){let e,t;return{c(){e=u("span"),t=z(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&&C(e)}}}function Y_(l){let e;function t(o,r){if(o[1]==="inbox")return q_;if(o[1]==="trash")return J_}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&&C(e),i&&i.d()}}}function Yr(l){let e,t=l[120](l[34])+"",n,i,o,r,c;return{c(){e=u("div"),n=z(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[251])),L(e,"click",l[252]),L(e,"keydown",function(){jt(mt(l[253]))&&mt(l[253]).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&&C(e),r=!1,me(c)}}}function Q_(l){let e,t,n;function i(c,f){if(c[80])return ov;if(c[0].length>0)return sv;if(c[34])return iv}let o=i(l),r=o&&o(l);return{c(){e=u("div"),t=u("h2"),t.textContent=`${_("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&&C(e),r&&r.d()}}}function X_(l){let e,t;return e=new D_({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){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function Z_(l){let e;function t(o,r){return o[17].length===0?av:rv}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&&C(e),i.d()}}}function x_(l){let e,t,n,i;const o=[uv,cv],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 v=e;e=c(f),e===v?r[e].p(f,p):(at(),ge(r[v],1,1,()=>{r[v]=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){ge(t),i=!1},d(f){f&&C(n),r[e].d(f)}}}function $_(l){let e,t,n,i=_("suggest.title")+"",o,r,c,f,p,v,g,h=l[50]>0&&Zr(l);function m(y,T){return y[28]==="suggestions"?dv:fv}let w=m(l),b=w(l);return{c(){e=u("div"),t=u("div"),n=u("button"),o=z(i),r=k(),h&&h.c(),c=k(),f=u("button"),f.textContent=`${_("journal.worklogTab")}`,p=k(),b.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(y,T){S(y,e,T),a(e,t),a(t,n),a(n,o),a(n,r),h&&h.m(n,null),a(t,c),a(t,f),a(e,p),b.m(e,null),v||(g=[L(n,"click",l[333]),L(f,"click",l[334])],v=!0)},p(y,T){y[50]>0?h?h.p(y,T):(h=Zr(y),h.c(),h.m(n,null)):h&&(h.d(1),h=null),T[0]&268435456&&ae(n,"active",y[28]==="suggestions"),T[0]&268435456&&ae(f,"active",y[28]==="worklog"),w===(w=m(y))&&b?b.p(y,T):(b.d(1),b=w(y),b&&(b.c(),b.m(e,null)))},i:te,o:te,d(y){y&&C(e),h&&h.d(),b.d(),v=!1,me(g)}}}function ev(l){let e,t,n,i,o,r;function c(v,g){return!v[7]||(v[7].nodes||[]).length===0?Ev:Tv}let f=c(l),p=f(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("p"),o=z(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(v,g){S(v,e,g),a(e,t),a(t,n),a(n,i),a(i,o),a(e,r),p.m(e,null)},p(v,g){g[2]&32&&K(o,v[67]),f===(f=c(v))&&p?p.p(v,g):(p.d(1),p=f(v),p&&(p.c(),p.m(e,null)))},i:te,o:te,d(v){v&&C(e),p.d()}}}function tv(l){let e,t,n,i,o,r,c,f,p=l[3].length>0&&ya(l);function v(m,w){return m[3].length===0?Mv:m[117]?Av:Nv}let g=v(l),h=g(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("p"),i.textContent=`${_("inbox.subtitle")}`,o=k(),p&&p.c(),r=k(),h.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",_("nav.inbox")),ae(e,"drop-valid",l[96])},m(m,w){S(m,e,w),a(e,t),a(t,n),a(n,i),a(e,o),p&&p.m(e,null),a(e,r),h.m(e,null),c||(f=[L(e,"dragover",l[211]),L(e,"dragleave",l[212]),L(e,"drop",l[213])],c=!0)},p(m,w){m[3].length>0?p?p.p(m,w):(p=ya(m),p.c(),p.m(e,r)):p&&(p.d(1),p=null),g===(g=v(m))&&h?h.p(m,w):(h.d(1),h=g(m),h&&(h.c(),h.m(e,null))),w[3]&8&&ae(e,"drop-valid",m[96])},i:te,o:te,d(m){m&&C(e),p&&p.d(),h.d(),c=!1,me(f)}}}function lv(l){let e,t,n,i,o,r,c=de(l[122]),f=[];for(let h=0;h{v[w]=null}),ct()),~i?(o=v[i],o?o.p(h,m):(o=v[i]=p[i](h),o.c()),fe(o,1),o.m(n,null)):o=null)},i(h){r||(fe(o),r=!0)},o(h){ge(o),r=!1},d(h){h&&(C(e),C(t),C(n)),Fe(f,h),~i&&v[i].d()}}}function nv(l){let e,t,n,i=l[37].title+"",o,r,c,f,p,v,g,h,m,w,b,y=l[37].dirty&&oc();return{c(){e=u("div"),t=u("div"),n=u("span"),o=z(i),r=k(),y&&y.c(),c=k(),f=u("div"),p=u("button"),p.textContent=`${_("common.save")}`,v=k(),g=u("button"),g.textContent=`${_("common.close")}`,h=k(),m=u("textarea"),s(n,"class","note-title svelte-19ekrug"),s(p,"class","btn btn-primary svelte-19ekrug"),s(g,"class","btn svelte-19ekrug"),s(f,"class","note-editor-actions svelte-19ekrug"),s(t,"class","note-editor-header svelte-19ekrug"),s(m,"class","note-textarea svelte-19ekrug"),s(m,"placeholder",_("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),y&&y.m(t,null),a(t,c),a(t,f),a(f,p),a(f,v),a(f,g),a(e,h),a(e,m),be(m,l[37].content),w||(b=[L(p,"click",l[171]),L(g,"click",l[169]),L(m,"input",l[254]),L(m,"input",l[170])],w=!0)},p(T,E){E[1]&64&&i!==(i=T[37].title+"")&&K(o,i),T[37].dirty?y||(y=oc(),y.c(),y.m(t,c)):y&&(y.d(1),y=null),E[1]&64&&be(m,T[37].content)},i:te,o:te,d(T){T&&C(e),y&&y.d(),w=!1,me(b)}}}function iv(l){let e,t=_("common.error")+"",n,i,o;return{c(){e=u("p"),n=z(t),i=k(),o=z(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&&C(e)}}}function sv(l){let e,t,n;return{c(){e=u("p"),e.textContent=`${_("welcome.selectSection")}`,t=k(),n=u("p"),n.textContent=`${_("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&&(C(e),C(t),C(n))}}}function ov(l){let e;return{c(){e=u("p"),e.textContent=`${_("common.loading")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},p:te,d(t){t&&C(e)}}}function rv(l){let e,t=de(l[17]),n=[];for(let i=0;il[354].call(q)),s(V,"title",_("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&&ol(()=>l[355].call(ze)),s(ce,"title",_("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(w,"class","journal-filter-section svelte-19ekrug"),s(t,"class","journal-header svelte-19ekrug")},m(ve,ke){je&&je.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,v),a(r,g),a(r,h),Ne&&Ne.m(r,null),a(t,m),a(t,w),a(w,b),a(w,y),a(w,T),a(T,E),a(E,I),a(E,N),a(E,A),be(A,l[20]),a(T,j),a(T,D),a(D,M),a(D,F),a(D,B),be(B,l[21]),a(T,W),a(T,H),a(H,U),a(H,J),a(H,Y),Pe.m(Y,null),a(T,Q),Me&&Me.m(T,null),a(T,R),a(T,V),a(V,O),a(V,X),a(V,q),a(q,G),a(q,x),a(q,ee),Ut(q,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[344]),L(p,"click",l[345]),L(g,"click",l[346]),L(A,"input",l[347]),L(B,"input",l[348]),L(q,"change",l[354]),L(ze,"change",l[355]),L(De,"click",l[193]),L(Le,"click",l[200])],$e=!0)},p(ve,ke){ve[19]?je?je.p(ve,ke):(je=xr(ve),je.c(),je.m(e.parentNode,e)):je&&(je.d(1),je=null),ve[27]?Ne?Ne.p(ve,ke):(Ne=na(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))&&Pe?Pe.p(ve,ke):(Pe.d(1),Pe=Se(ve),Pe&&(Pe.c(),Pe.m(Y,null))),ve[23]?Me?Me.p(ve,ke):(Me=oa(ve),Me.c(),Me.m(T,R)):Me&&(Me.d(1),Me=null),ke[0]&16777216&&Ut(q,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&&(C(e),C(t),C(Qe),C(Ae)),je&&je.d(ve),Ne&&Ne.d(),Pe.d(),Me&&Me.d(),ye.d(ve),$e=!1,me(Re)}}}function dv(l){let e;function t(o,r){return o[49].length===0?Sv:Cv}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&&C(e),i.d(o)}}}function xr(l){let e,t,n=_("journal.total")+"",i,o,r=Math.floor(l[19].totalMinutes/60)+"",c,f,p=l[19].totalMinutes%60+"",v,g,h=l[19].totalEntries+"",m,w,b=_("worklog.min")+"",y,T,E,I,N=l[19].byDay&&l[19].byDay.length>0&&$r(l),A=l[19].byNode&&l[19].byNode.length>0&&ta(l);return{c(){e=u("div"),t=u("div"),i=z(n),o=z(": "),c=z(r),f=z("ч "),v=z(p),g=z("м ("),m=z(h),w=k(),y=z(b),T=z(")"),E=k(),N&&N.c(),I=k(),A&&A.c(),s(t,"class","summary-total svelte-19ekrug"),s(e,"class","journal-summary svelte-19ekrug")},m(j,D){S(j,e,D),a(e,t),a(t,i),a(t,o),a(t,c),a(t,f),a(t,v),a(t,g),a(t,m),a(t,w),a(t,y),a(t,T),a(e,E),N&&N.m(e,null),a(e,I),A&&A.m(e,null)},p(j,D){D[0]&524288&&r!==(r=Math.floor(j[19].totalMinutes/60)+"")&&K(c,r),D[0]&524288&&p!==(p=j[19].totalMinutes%60+"")&&K(v,p),D[0]&524288&&h!==(h=j[19].totalEntries+"")&&K(m,h),j[19].byDay&&j[19].byDay.length>0?N?N.p(j,D):(N=$r(j),N.c(),N.m(e,I)):N&&(N.d(1),N=null),j[19].byNode&&j[19].byNode.length>0?A?A.p(j,D):(A=ta(j),A.c(),A.m(e,null)):A&&(A.d(1),A=null)},d(j){j&&C(e),N&&N.d(),A&&A.d()}}}function $r(l){let e,t,n,i=de(l[19].byDay),o=[];for(let r=0;r0?wv:M[542].source==="suggestion"?bv:M[542].source==="unknown"||M[542].source==="imported"?kv:M[542]._hasEvents?hv:vv}let A=N(l),j=A(l),D=l[542]._events&&fa(l);return{c(){e=u("tr"),t=u("td"),n=u("div"),i=u("div"),o=u("button"),o.textContent=`${_("worklog.editEntry")}`,r=k(),c=u("button"),c.textContent=`${_("worklog.deleteEntry")}`,f=k(),I&&I.c(),p=k(),v=u("div"),g=u("span"),g.textContent=`${_("worklog.source")}`,h=k(),j.c(),m=k(),D&&D.c(),w=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(g,"class","journal-detail-label svelte-19ekrug"),s(v,"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,F){S(M,e,F),a(e,t),a(t,n),a(n,i),a(i,o),a(i,r),a(i,c),a(n,f),I&&I.m(n,null),a(n,p),a(n,v),a(v,g),a(v,h),j.m(v,null),a(n,m),D&&D.m(n,null),a(e,w),b||(y=[L(o,"click",Ie(T)),L(c,"click",Ie(E))],b=!0)},p(M,F){l=M,l[542].details?I?I.p(l,F):(I=ua(l),I.c(),I.m(n,p)):I&&(I.d(1),I=null),A!==(A=N(l))&&(j.d(1),j=A(l),j&&(j.c(),j.m(v,null))),l[542]._events?D?D.p(l,F):(D=fa(l),D.c(),D.m(n,null)):D&&(D.d(1),D=null)},d(M){M&&C(e),I&&I.d(),j.d(),D&&D.d(),b=!1,me(y)}}}function ua(l){let e,t,n,i,o=l[542].details+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${_("worklog.details")}`,n=k(),i=u("p"),r=z(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[542].details+"")&&K(r,o)},d(c){c&&C(e)}}}function vv(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function hv(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceSuggestion")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function kv(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function bv(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceSuggestionNoEvents")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function wv(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceSuggestion")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function yv(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceManual")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function fa(l){let e,t,n,i=de(l[542]._events),o=[];for(let r=0;r0&&ga(l);function ee(...$){return l[336](l[518],l[538],l[539],...$)}function le(){return l[337](l[518])}function ce(){return l[338](l[518])}function pe(){return l[339](l[518])}function Ee(){return l[340](l[518],l[538],l[539])}function ze(...$){return l[341](l[518],l[538],l[539],...$)}let _e=l[518]._expanded&&l[518].events&&l[518].events.length>0&&ma(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("button"),r=z(o),c=k(),f=u("span"),v=z(p),g=k(),h=u("span"),w=z(m),b=k(),T=z(y),x&&x.c(),E=k(),I=u("div"),N=u("span"),D=k(),M=u("input"),B=k(),W=u("span"),W.textContent=`${_("suggest.minutes")}`,H=k(),U=u("button"),U.textContent=`${_("suggest.edit")}`,J=k(),Y=u("button"),Y.textContent=`${_("suggest.apply")}`,Q=k(),R=u("button"),R.textContent=`${_("common.delete")}`,V=k(),_e&&_e.c(),O=k(),s(i,"class","suggestion-node link-btn svelte-19ekrug"),s(f,"class","suggestion-summary svelte-19ekrug"),s(h,"class","suggestion-meta svelte-19ekrug"),s(n,"class","suggestion-info svelte-19ekrug"),s(N,"class","suggestion-confidence-dot svelte-19ekrug"),s(N,"title",A=_("suggest.confidence."+l[518].confidence)),s(N,"aria-label",j=_("suggest.confidence."+l[518].confidence)),ae(N,"low",l[518].confidence==="low"),ae(N,"medium",l[518].confidence==="medium"),ae(N,"high",l[518].confidence==="high"),s(M,"type","number"),s(M,"class","suggestion-min-input svelte-19ekrug"),M.value=F=l[518].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(R,"class","btn btn-sm btn-danger svelte-19ekrug"),s(I,"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[518]._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,v),a(n,g),a(n,h),a(h,w),a(h,b),a(h,T),x&&x.m(h,null),a(t,E),a(t,I),a(I,N),a(I,D),a(I,M),a(I,B),a(I,W),a(I,H),a(I,U),a(I,J),a(I,Y),a(I,Q),a(I,R),a(e,V),_e&&_e.m(e,null),a(e,O),X||(q=[L(i,"click",Ie(G)),L(M,"change",Ie(ee)),L(U,"click",Ie(le)),L(Y,"click",Ie(ce)),L(R,"click",Ie(pe)),L(t,"click",Ee),L(t,"keydown",ze)],X=!0)},p($,se){l=$,se[1]&262144&&o!==(o=l[518].nodeTitle+"")&&K(r,o),se[1]&262144&&p!==(p=l[518].summary+"")&&K(v,p),se[1]&262144&&m!==(m=l[518].suggestedMin+"")&&K(w,m),l[518].events&&l[518].events.length>0?x?x.p(l,se):(x=ga(l),x.c(),x.m(h,null)):x&&(x.d(1),x=null),se[1]&262144&&A!==(A=_("suggest.confidence."+l[518].confidence))&&s(N,"title",A),se[1]&262144&&j!==(j=_("suggest.confidence."+l[518].confidence))&&s(N,"aria-label",j),se[1]&262144&&ae(N,"low",l[518].confidence==="low"),se[1]&262144&&ae(N,"medium",l[518].confidence==="medium"),se[1]&262144&&ae(N,"high",l[518].confidence==="high"),se[1]&262144&&F!==(F=l[518].suggestedMin)&&M.value!==F&&(M.value=F),l[518]._expanded&&l[518].events&&l[518].events.length>0?_e?_e.p(l,se):(_e=ma(l),_e.c(),_e.m(e,O)):_e&&(_e.d(1),_e=null),se[1]&262144&&ae(e,"expanded",l[518]._expanded)},d($){$&&C(e),x&&x.d(),_e&&_e.d(),X=!1,me(q)}}}function Tv(l){let e,t,n,i,o,r,c,f,p,v,g,h=l[8]&&ba(l);function m(y,T){return y[66].length===0?Iv:Dv}let w=m(l),b=w(l);return{c(){e=u("div"),t=u("section"),n=u("div"),h&&h.c(),i=k(),o=u("div"),r=u("h3"),c=z(l[68]),f=k(),p=u("p"),v=z(l[67]),g=k(),b.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(y,T){S(y,e,T),a(e,t),a(t,n),h&&h.m(n,null),a(n,i),a(n,o),a(o,r),a(r,c),a(o,f),a(o,p),a(p,v),a(t,g),b.m(t,null)},p(y,T){y[8]?h?h.p(y,T):(h=ba(y),h.c(),h.m(n,i)):h&&(h.d(1),h=null),T[2]&64&&K(c,y[68]),T[2]&32&&K(v,y[67]),w===(w=m(y))&&b?b.p(y,T):(b.d(1),b=w(y),b&&(b.c(),b.m(t,null)))},d(y){y&&C(e),h&&h.d(),b.d()}}}function Ev(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${_("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&&C(e)}}}function ba(l){let e,t=it("back")+"",n,i;return{c(){e=u("button"),s(e,"class","inbox-icon-btn svelte-19ekrug"),s(e,"title",_("common.backLabel")),s(e,"aria-label",_("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&&C(e),n=!1,i()}}}function Dv(l){let e,t=de(l[66]),n=[];for(let i=0;i0,r,c,f,p=o&&Aa(l);function v(m,w){return m[39].length===0?xv:Zv}let g=v(l),h=g(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`+ ${_("worklog.addEntry")}`,i=k(),p&&p.c(),r=k(),h.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(m,w){S(m,e,w),a(e,t),a(t,n),a(e,i),p&&p.m(e,null),a(e,r),h.m(e,null),c||(f=L(n,"click",l[291]),c=!0)},p(m,w){w[0]&4|w[1]&262144&&(o=m[2]&&m[49].filter(m[244]).length>0),o?p?p.p(m,w):(p=Aa(m),p.c(),p.m(e,r)):p&&(p.d(1),p=null),g===(g=v(m))&&h?h.p(m,w):(h.d(1),h=g(m),h&&(h.c(),h.m(e,null)))},i:te,o:te,d(m){m&&C(e),p&&p.d(),h.d(),c=!1,f()}}}function Uv(l){let e,t,n,i,o,r;function c(v,g){return v[38].length===0?s2:i2}let f=c(l),p=f(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`${_("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(v,g){S(v,e,g),a(e,t),a(t,n),a(e,i),p.m(e,null),o||(r=L(n,"click",l[227]),o=!0)},p(v,g){f===(f=c(v))&&p?p.p(v,g):(p.d(1),p=f(v),p&&(p.c(),p.m(e,null)))},i:te,o:te,d(v){v&&C(e),p.d(),o=!1,r()}}}function Kv(l){let e,t;function n(c,f){return c[58].length===0?r2:o2}let i=n(l),o=i(l),r=l[63]&&Qa(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=Qa(c),r.c(),r.m(e,null)):r&&(r.d(1),r=null)},i:te,o:te,d(c){c&&C(e),o.d(),r&&r.d()}}}function Gv(l){let e;function t(o,r){return o[55].length===0?c2:a2}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&&C(e),i.d()}}}function Jv(l){let e,t,n,i=_("file.addFile")+"",o,r,c,f=_("file.addFolder")+"",p,v,g,h,m,w,b,y,T,E,I,N=l[93].items.length>0&&Za(l);const A=[p2,d2],j=[];function D(F,B){return F[85]?0:1}w=D(l),b=j[w]=A[w](l);let M=l[81]&&!l[83]&&$a();return{c(){e=u("div"),t=u("div"),n=u("button"),o=z(i),r=k(),c=u("button"),p=z(f),v=k(),g=u("button"),g.textContent=`${_("file.newFile")}`,h=k(),N&&N.c(),m=k(),b.c(),y=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(g,"class","btn svelte-19ekrug"),s(t,"class","tab-toolbar svelte-19ekrug"),s(e,"class","files-tab svelte-19ekrug")},m(F,B){S(F,e,B),a(e,t),a(t,n),a(n,o),a(t,r),a(t,c),a(c,p),a(t,v),a(t,g),a(t,h),N&&N.m(t,null),a(e,m),j[w].m(e,null),a(e,y),M&&M.m(e,null),T=!0,E||(I=[L(n,"click",l[201]),L(c,"click",l[202]),L(g,"click",l[132])],E=!0)},p(F,B){(!T||B[2]&524288)&&(n.disabled=F[81]),(!T||B[2]&524288)&&(c.disabled=F[81]),F[93].items.length>0?N?N.p(F,B):(N=Za(F),N.c(),N.m(t,null)):N&&(N.d(1),N=null);let W=w;w=D(F),w===W?j[w].p(F,B):(at(),ge(j[W],1,1,()=>{j[W]=null}),ct(),b=j[w],b?b.p(F,B):(b=j[w]=A[w](F),b.c()),fe(b,1),b.m(e,y)),F[81]&&!F[83]?M||(M=$a(),M.c(),M.m(e,null)):M&&(M.d(1),M=null)},i(F){T||(fe(b),T=!0)},o(F){ge(b),T=!1},d(F){F&&C(e),N&&N.d(),j[w].d(),M&&M.d(),E=!1,me(I)}}}function qv(l){let e,t,n,i,o,r,c,f=l[74]&&ec(l);function p(h,m){return h[36].length===0&&!h[74]?k2:h2}let v=p(l),g=v(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`${_("note.add")}`,i=k(),f&&f.c(),o=k(),g.c(),s(n,"class","btn btn-primary svelte-19ekrug"),s(t,"class","tab-toolbar svelte-19ekrug"),s(e,"class","notes-tab svelte-19ekrug")},m(h,m){S(h,e,m),a(e,t),a(t,n),a(e,i),f&&f.m(e,null),a(e,o),g.m(e,null),r||(c=L(n,"click",l[165]),r=!0)},p(h,m){h[74]?f?f.p(h,m):(f=ec(h),f.c(),f.m(e,o)):f&&(f.d(1),f=null),v===(v=p(h))&&g?g.p(h,m):(g.d(1),g=v(h),g&&(g.c(),g.m(e,null)))},i:te,o:te,d(h){h&&C(e),f&&f.d(),g.d(),r=!1,c()}}}function Yv(l){let e,t,n=l[2].title+"",i,o,r,c,f,p,v=l[207](l[2].type)+"",g,h,m,w,b,y=(l[2].section||"—")+"",T,E,I,N,A,j=vt(l[2].createdAt)+"",D,M,F,B,W,H,U,J,Y=_("overview.newNote")+"",Q,R,V,O,X,q,G=_("overview.addFile")+"",x,ee,le,ce,pe,Ee,ze=_("overview.addAction")+"",_e,$,se,Ce,De,we,Le,Qe=_("overview.logTime")+"",Ae,$e,Re,je,Ne,Ge=l[36].length>0&&lc(l),Se=l[39].length>0&&ic(l);return{c(){e=u("div"),t=u("h2"),i=z(n),o=k(),r=u("div"),c=u("div"),f=u("span"),f.textContent=`${_("overview.type")}`,p=u("span"),g=z(v),h=k(),m=u("div"),w=u("span"),w.textContent=`${_("overview.section")}`,b=u("span"),T=z(y),E=k(),I=u("div"),N=u("span"),N.textContent=`${_("overview.created")}`,A=u("span"),D=z(j),M=k(),F=u("div"),B=u("button"),W=ie("svg"),H=ie("path"),U=ie("path"),J=k(),Q=z(Y),R=k(),V=u("button"),O=ie("svg"),X=ie("path"),q=k(),x=z(G),ee=k(),le=u("button"),ce=ie("svg"),pe=ie("polygon"),Ee=k(),_e=z(ze),$=k(),se=u("button"),Ce=ie("svg"),De=ie("circle"),we=ie("polyline"),Le=k(),Ae=z(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(w,"class","meta-label svelte-19ekrug"),s(b,"class","svelte-19ekrug"),s(m,"class","meta-item svelte-19ekrug"),s(N,"class","meta-label svelte-19ekrug"),s(A,"class","svelte-19ekrug"),s(I,"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(O,"width","16"),s(O,"height","16"),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(O,"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(F,"class","quick-actions svelte-19ekrug"),s(e,"class","overview svelte-19ekrug")},m(Pe,Me){S(Pe,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,g),a(r,h),a(r,m),a(m,w),a(m,b),a(b,T),a(r,E),a(r,I),a(I,N),a(I,A),a(A,D),a(e,M),a(e,F),a(F,B),a(B,W),a(W,H),a(W,U),a(B,J),a(B,Q),a(F,R),a(F,V),a(V,O),a(O,X),a(V,q),a(V,x),a(F,ee),a(F,le),a(le,ce),a(ce,pe),a(le,Ee),a(le,_e),a(F,$),a(F,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),je||(Ne=[L(B,"click",l[256]),L(V,"click",l[257]),L(le,"click",l[227]),L(se,"click",l[258])],je=!0)},p(Pe,Me){Me[0]&4&&n!==(n=Pe[2].title+"")&&K(i,n),Me[0]&4&&v!==(v=Pe[207](Pe[2].type)+"")&&K(g,v),Me[0]&4&&y!==(y=(Pe[2].section||"—")+"")&&K(T,y),Me[0]&4&&j!==(j=vt(Pe[2].createdAt)+"")&&K(D,j),Pe[36].length>0?Ge?Ge.p(Pe,Me):(Ge=lc(Pe),Ge.c(),Ge.m(e,Re)):Ge&&(Ge.d(1),Ge=null),Pe[39].length>0?Se?Se.p(Pe,Me):(Se=ic(Pe),Se.c(),Se.m(e,null)):Se&&(Se.d(1),Se=null)},i:te,o:te,d(Pe){Pe&&C(e),Ge&&Ge.d(),Se&&Se.d(),je=!1,me(Ne)}}}function Qv(l){let e,t=de(l[32]),n=[];for(let i=0;i0&&Ma(l);function J(){return l[293](l[518])}function Y(){return l[294](l[518])}function Q(){return l[295](l[518])}function R(){return l[296](l[518],l[519],l[520])}function V(...X){return l[297](l[518],l[519],l[520],...X)}let O=l[518]._expanded&&l[518].events&&l[518].events.length>0&&Pa(l);return{c(){e=u("div"),t=u("div"),n=u("div"),i=u("span"),r=z(o),c=k(),f=u("span"),v=z(p),g=k(),m=z(h),U&&U.c(),w=k(),b=u("div"),y=u("span"),I=k(),N=u("button"),N.textContent=`${_("suggest.edit")}`,A=k(),j=u("button"),j.textContent=`${_("worklog.apply")}`,D=k(),M=u("button"),M.textContent=`${_("common.delete")}`,F=k(),O&&O.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(y,"class","suggestion-confidence-dot svelte-19ekrug"),s(y,"title",T=_("suggest.confidence."+l[518].confidence)),s(y,"aria-label",E=_("suggest.confidence."+l[518].confidence)),ae(y,"low",l[518].confidence==="low"),ae(y,"medium",l[518].confidence==="medium"),ae(y,"high",l[518].confidence==="high"),s(N,"class","btn btn-sm svelte-19ekrug"),s(j,"class","btn btn-sm btn-primary svelte-19ekrug"),s(M,"class","btn btn-sm btn-danger svelte-19ekrug"),s(b,"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[518]._expanded)},m(X,q){S(X,e,q),a(e,t),a(t,n),a(n,i),a(i,r),a(n,c),a(n,f),a(f,v),a(f,g),a(f,m),U&&U.m(f,null),a(t,w),a(t,b),a(b,y),a(b,I),a(b,N),a(b,A),a(b,j),a(b,D),a(b,M),a(e,F),O&&O.m(e,null),a(e,B),W||(H=[L(N,"click",Ie(J)),L(j,"click",Ie(Y)),L(M,"click",Ie(Q)),L(t,"click",R),L(t,"keydown",V)],W=!0)},p(X,q){l=X,q[0]&4|q[1]&262144&&o!==(o=l[518].summary+"")&&K(r,o),q[0]&4|q[1]&262144&&p!==(p=l[518].suggestedMin+"")&&K(v,p),l[518].events&&l[518].events.length>0?U?U.p(l,q):(U=Ma(l),U.c(),U.m(f,null)):U&&(U.d(1),U=null),q[0]&4|q[1]&262144&&T!==(T=_("suggest.confidence."+l[518].confidence))&&s(y,"title",T),q[0]&4|q[1]&262144&&E!==(E=_("suggest.confidence."+l[518].confidence))&&s(y,"aria-label",E),q[0]&4|q[1]&262144&&ae(y,"low",l[518].confidence==="low"),q[0]&4|q[1]&262144&&ae(y,"medium",l[518].confidence==="medium"),q[0]&4|q[1]&262144&&ae(y,"high",l[518].confidence==="high"),l[518]._expanded&&l[518].events&&l[518].events.length>0?O?O.p(l,q):(O=Pa(l),O.c(),O.m(e,B)):O&&(O.d(1),O=null),q[0]&4|q[1]&262144&&ae(e,"expanded",l[518]._expanded)},d(X){X&&C(e),U&&U.d(),O&&O.d(),W=!1,me(H)}}}function Zv(l){let e,t=de(l[39]),n=[];for(let i=0;i0?l2:A[494].source==="suggestion"?t2:A[494].source==="unknown"||A[494].source==="imported"?e2:$v}let E=T(l),I=E(l),N=l[494].source==="suggestion"&&l[494]._events&&l[494]._events.length>0&&Va(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent=`${_("worklog.editEntry")}`,i=k(),o=u("button"),o.textContent=`${_("worklog.deleteEntry")}`,r=k(),y&&y.c(),c=k(),f=u("div"),p=u("span"),p.textContent=`${_("worklog.source")}`,v=k(),I.c(),g=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,j){S(A,e,j),a(e,t),a(t,n),a(t,i),a(t,o),a(e,r),y&&y.m(e,null),a(e,c),a(e,f),a(f,p),a(f,v),I.m(f,null),a(e,g),N&&N.m(e,null),h||(m=[L(n,"click",Ie(w)),L(o,"click",Ie(b))],h=!0)},p(A,j){l=A,l[494].details?y?y.p(l,j):(y=Wa(l),y.c(),y.m(e,c)):y&&(y.d(1),y=null),E!==(E=T(l))&&(I.d(1),I=E(l),I&&(I.c(),I.m(f,null))),l[494].source==="suggestion"&&l[494]._events&&l[494]._events.length>0?N?N.p(l,j):(N=Va(l),N.c(),N.m(e,null)):N&&(N.d(1),N=null)},d(A){A&&C(e),y&&y.d(),I.d(),N&&N.d(),h=!1,me(m)}}}function Wa(l){let e,t,n,i,o=l[494].details+"",r;return{c(){e=u("div"),t=u("span"),t.textContent=`${_("worklog.details")}`,n=k(),i=u("p"),r=z(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[494].details+"")&&K(r,o)},d(c){c&&C(e)}}}function $v(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function e2(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceUnknown")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function t2(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceSuggestionNoEvents")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function l2(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceSuggestion")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function n2(l){let e;return{c(){e=u("p"),e.textContent=`${_("worklog.sourceManual")}`,s(e,"class","svelte-19ekrug")},m(t,n){S(t,e,n)},d(t){t&&C(e)}}}function Va(l){let e,t,n,i=de(l[494]._events),o=[];for(let r=0;r',I=k(),s(n,"class","action-title svelte-19ekrug"),s(c,"class","action-type svelte-19ekrug"),s(g,"class","action-data svelte-19ekrug"),s(t,"class","action-info svelte-19ekrug"),s(y,"class","btn btn-sm svelte-19ekrug"),s(E,"class","btn btn-sm btn-danger svelte-19ekrug"),s(b,"class","action-btns svelte-19ekrug"),s(e,"class","action-card svelte-19ekrug")},m(M,F){S(M,e,F),a(e,t),a(t,n),a(n,o),a(t,r),a(t,c),a(c,p),a(t,v),a(t,g),a(g,m),a(e,w),a(e,b),a(b,y),a(b,T),a(b,E),a(e,I),N||(A=[L(y,"click",j),L(E,"click",D)],N=!0)},p(M,F){l=M,F[1]&128&&i!==(i=l[510].title+"")&&K(o,i),F[1]&128&&f!==(f=l[231](l[510].type)+"")&&K(p,f),F[1]&128&&h!==(h=l[510].data+"")&&K(m,h)},d(M){M&&C(e),N=!1,me(A)}}}function o2(l){let e,t=de(l[58]),n=[];for(let i=0;i0?0:1}e=v(l),t=p[e]=f[e](l);const g=[v2,_2],h=[];function m(w,b){return w[88].length===0?0:1}return i=m(l),o=h[i]=g[i](l),{c(){t.c(),n=k(),o.c(),r=ot()},m(w,b){p[e].m(w,b),S(w,n,b),h[i].m(w,b),S(w,r,b),c=!0},p(w,b){let y=e;e=v(w),e===y?p[e].p(w,b):(at(),ge(p[y],1,1,()=>{p[y]=null}),ct(),t=p[e],t?t.p(w,b):(t=p[e]=f[e](w),t.c()),fe(t,1),t.m(n.parentNode,n));let T=i;i=m(w),i===T?h[i].p(w,b):(at(),ge(h[T],1,1,()=>{h[T]=null}),ct(),o=h[i],o?o.p(w,b):(o=h[i]=g[i](w),o.c()),fe(o,1),o.m(r.parentNode,r))},i(w){c||(fe(t),fe(o),c=!0)},o(w){ge(t),ge(o),c=!1},d(w){w&&(C(n),C(r)),p[e].d(w),h[i].d(w)}}}function p2(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${_("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&&C(e)}}}function g2(l){let e,t;return e=new Yc({props:{crumbs:[{name:_("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){ge(e.$$.fragment,n),t=!1},d(n){We(e,n)}}}function m2(l){let e,t,n,i,o,r,c,f=_("common.backLabel")+"",p,v,g,h;return e=new Yc({props:{crumbs:[{name:_("file.root")},...l[87]]}}),e.$on("navigate",l[265]),{c(){Ve(e.$$.fragment),t=k(),n=u("button"),i=ie("svg"),o=ie("line"),r=ie("polyline"),c=k(),p=z(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(m,w){He(e,m,w),S(m,t,w),S(m,n,w),a(n,i),a(i,o),a(i,r),a(n,c),a(n,p),v=!0,g||(h=L(n,"click",l[128]),g=!0)},p(m,w){const b={};w[2]&33554432&&(b.crumbs=[{name:_("file.root")},...m[87]]),e.$set(b)},i(m){v||(fe(e.$$.fragment,m),v=!0)},o(m){ge(e.$$.fragment,m),v=!1},d(m){m&&(C(t),C(n)),We(e,m),g=!1,h()}}}function _2(l){let e,t=[],n=new Map,i,o=de(l[88]);const r=c=>c[502].id;for(let c=0;c0?_("file.noFiles"):_("file.noFilesCase"))+"",r,c,f,p,v,g,h,m,w,b;return{c(){e=u("div"),t=u("div"),t.innerHTML='',n=k(),i=u("p"),r=z(o),c=k(),f=u("p"),f.textContent=`${_("file.hint")}`,p=k(),v=u("div"),g=u("button"),g.textContent=`${_("file.addFileSimple")}`,h=k(),m=u("button"),m.textContent=`${_("file.addFolderSimple")}`,s(t,"class","empty-icon svelte-19ekrug"),s(i,"class","svelte-19ekrug"),s(f,"class","hint svelte-19ekrug"),s(g,"class","btn btn-primary svelte-19ekrug"),s(m,"class","btn svelte-19ekrug"),s(v,"class","empty-actions svelte-19ekrug"),s(e,"class","empty-state svelte-19ekrug")},m(y,T){S(y,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,v),a(v,g),a(v,h),a(v,m),w||(b=[L(g,"click",l[201]),L(m,"click",l[202])],w=!0)},p(y,T){T[2]&33554432&&o!==(o=(y[87].length>0?_("file.noFiles"):_("file.noFilesCase"))+"")&&K(r,o)},i:te,o:te,d(y){y&&C(e),w=!1,me(b)}}}function xa(l,e){let t,n,i;return n=new xp({props:{item:e[502],selected:e[94].includes(e[502].id),onDragStart:e[141],onDragOver:e[142],onDrop:e[143]}}),n.$on("navigate",e[266]),n.$on("preview",e[267]),n.$on("openExternal",e[268]),n.$on("showInFolder",e[269]),n.$on("delete",e[270]),n.$on("rename",e[271]),n.$on("duplicate",e[272]),n.$on("cut",e[273]),n.$on("copy",e[274]),n.$on("selectOne",e[275]),n.$on("toggleSelect",e[276]),n.$on("rangeSelect",e[277]),{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[502]),r[2]&67108864|r[3]&2&&(c.selected=e[94].includes(e[502].id)),n.$set(c)},i(o){i||(fe(n.$$.fragment,o),i=!0)},o(o){ge(n.$$.fragment,o),i=!1},d(o){o&&C(t),We(n,o)}}}function $a(l){let e,t;return{c(){e=u("div"),t=u("p"),t.textContent=`${_("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&&C(e)}}}function ec(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=`${_("common.create")}`,r=k(),c=u("button"),c.textContent=`${_("common.cancel")}`,s(t,"type","text"),s(t,"placeholder",_("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(v,g){S(v,e,g),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[261]),L(t,"keydown",l[262]),L(o,"click",l[167]),L(c,"click",l[166])],f=!0)},p(v,g){g[2]&8192&&t.value!==v[75]&&be(t,v[75])},d(v){v&&C(e),f=!1,me(p)}}}function h2(l){let e,t=de(l[36]),n=[];for(let i=0;ige(q[x],1,1,()=>{q[x]=null});return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${_("nav.createNode")}`,i=k(),O&&O.c(),o=k(),r=u("div"),c=u("span"),c.textContent=`${_("template.select")}`,f=k(),p=u("div"),v=u("button"),Ve(g.$$.fragment),h=k(),m=u("div"),w=u("span"),w.textContent=`${_("template.optionNone")}`,b=k(),y=u("span"),y.textContent=`${_("template.none.desc")}`,T=k();for(let x=0;x{w=null}),ct()),y[73].node&&y[73].node.parent_id?b?b.p(y,T):(b=pc(y),b.c(),b.m(t,o)):b&&(b.d(1),b=null),(!g||T[2]&2048)&&kt(t,"left",y[73].x+"px"),(!g||T[2]&2048)&&kt(t,"top",y[73].y+"px")},i(y){g||(fe(w),g=!0)},o(y){ge(w),g=!1},d(y){y&&C(e),w&&w.d(),b&&b.d(),h=!1,me(m)}}}function fc(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;pge(c[p],1,1,()=>{c[p]=null});return{c(){e=u("div"),e.textContent=`${_("common.create")}`,t=k();for(let p=0;p0?p[15]:[{id:"",title:"template.optionNone",icon:"folder"}]);let g;for(g=0;gl[390].call(b)),s(h,"class","svelte-19ekrug"),s(g,"class","form-group svelte-19ekrug"),s(I,"class","label-text svelte-19ekrug"),s(D,"type","text"),s(D,"placeholder",M=l[78]==="open_url"?_("action.urlPlaceholder"):l[78]==="open_folder"||l[78]==="open_file"?_("action.pathPlaceholder"):_("action.commandPlaceholder")),s(D,"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,O){S(V,e,O),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,v),a(t,g),a(g,h),a(h,m),a(h,w),a(h,b);for(let X=0;X0&&yc(l),U=l[111]&&Sc();return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent=`${_("inbox.assignTitle")}`,i=k(),o=u("div"),c=z(r),f=k(),p=u("div"),v=u("label"),g=u("span"),g.textContent=`${_("inbox.assignTarget")}`,h=k(),m=u("input"),w=k(),b=u("div"),b.textContent=`${_("inbox.assignSearchHint")}`,y=k(),H&&H.c(),T=k(),U&&U.c(),E=k(),I=u("div"),N=u("button"),j=z(A),M=k(),F=u("button"),F.textContent=`${_("common.cancel")}`,s(n,"class","svelte-19ekrug"),s(o,"class","create-context svelte-19ekrug"),s(g,"class","label-text svelte-19ekrug"),s(m,"type","text"),s(m,"placeholder",_("inbox.assignSearchPlaceholder")),s(m,"class","svelte-19ekrug"),s(b,"class","assign-hint svelte-19ekrug"),s(v,"class","svelte-19ekrug"),s(p,"class","form-group assign-search svelte-19ekrug"),s(N,"class","btn btn-primary svelte-19ekrug"),N.disabled=D=!l[110],s(F,"class","btn svelte-19ekrug"),s(I,"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(J,Y){S(J,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,v),a(v,g),a(v,h),a(v,m),be(m,l[108]),a(v,w),a(v,b),a(p,y),H&&H.m(p,null),a(t,T),U&&U.m(t,null),a(t,E),a(t,I),a(I,N),a(N,j),a(I,M),a(I,F),B||(W=[L(m,"input",l[396]),L(m,"input",l[216]),L(m,"keydown",l[397]),L(N,"click",l[218]),L(F,"click",l[215]),L(e,"click",Ct(l[215])),L(e,"keydown",mt(l[215]))],B=!0)},p(J,Y){Y[3]&16384&&r!==(r=J[107].title+"")&&K(c,r),Y[3]&32768&&m.value!==J[108]&&be(m,J[108]),J[109].length>0?H?H.p(J,Y):(H=yc(J),H.c(),H.m(p,null)):H&&(H.d(1),H=null),J[111]?U||(U=Sc(),U.c(),U.m(t,E)):U&&(U.d(1),U=null),Y[3]&131072&&D!==(D=!J[110])&&(N.disabled=D)},d(J){J&&C(e),H&&H.d(),U&&U.d(),B=!1,me(W)}}}function yc(l){let e,t=de(l[109]),n=[];for(let i=0;i{r[v]=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){ge(t),i=!1},d(f){f&&C(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 w2(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 y2(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 xc(l){return(l==null?void 0:l.sourceKind)||(l==null?void 0:l.captureKind)||(l==null?void 0:l.type)||""}function _i(l){return xc(l)!=="url"&&(l==null?void 0:l.type)!=="link"}function C2(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 $c(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&&$c(n.children,e,t))return!0}return!1}function S2(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 mn(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 T2(l){return{"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp"}[l]||"bin"}function E2(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 D2(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 I2(l){return String(l||"").split(/\r?\n/).map(t=>t.trim()).filter(t=>t&&!t.startsWith("#"))[0]||""}function N2(l){return["case","client","project","folder","document","recipe"].includes(l.type)}function A2(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 mt(l){return e=>{kn(e.target)||(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),l())}}function M2(l,e,t){var Ds;let n,i,o,r,c=null,f=!1,p=!1,v=!1,g=!1,h=[],m=[],w=[],b=null,y=[],T=0,E=!0,I=[],N=null,A="",j="",D=!1,M="",F="all",B="all",W="",H="",U="suggestions",J="",Y=[],Q=!1,R=[],V="",O="";function X(d){return{"vault not open":_("error.vaultNotOpen")}[d]||d}let q="",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=[],je=[],Ne=[],Ge=!1,Se=[],Pe=[],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="",rl="",st=[],al=!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:_("action.openUrl")},{id:"open_file",label:_("action.openFile")},{id:"open_folder",label:_("action.openFolder")},{id:"run_command",label:_("action.runCommand")},{id:"run_script",label:_("action.runScript")},{id:"open_terminal",label:_("action.openTerminal")},{id:"launch_app",label:_("action.launchApp")}],cl=!0,Dn=!1,ql=null,Al=!1,In="",vi="",Tt={},Nn=!1,ut=null,dt=[],rt=[],Mt=null,wt="",Ml=!1,ul="",Et={items:[],mode:"copy"},Be=[],fl=[],An=!1,Pl=!1,dl=!1,Mn="",Ll=0,Pn=0,pl=null,Yl=!1,hi="",ki="",bi=!1,wi=_("common.delete"),Ql=null,Xl=null,gl=!1,Zl="",ml="",_l="",Pt=null,Bt="",qt=[],Ht=null,xl=!1,yi,Ln=null,jn=!1,jl="",$l="";const eu=[{id:"overview",label:_("tab.overview")},{id:"notes",label:_("tab.notes")},{id:"files",label:_("tab.files")},{id:"links",label:_("tab.links")},{id:"actions",label:_("tab.actions")},{id:"activity",label:_("tab.activity"),group:"service"},{id:"worklog",label:_("tab.worklog"),group:"service"},{id:"inbox",label:_("tab.inbox"),group:"service"}];let Fn=null;function tu(d){const P={};for(const ue of d){const Te=ue.captureContextLabel||_("inbox.noContext");P[Te]||(P[Te]=[]),P[Te].push(ue)}const ne=[];for(const[ue,Te]of Object.entries(P))ne.push({label:ue,items:Te});return ne.sort((ue,Te)=>ue.label.localeCompare(Te.label)),ne}function lu(){return{section:q||"",nodeId:(G==null?void 0:G.id)||"",tab:G?x:"",trashFolderId:q==="trash"?he:"",trashFolderStack:q==="trash"?Ke.map(d=>({id:d.id,title:d.title})):[]}}function Wt(){if(al)return;const d=lu(),P=st[st.length-1];(!P||!y2(P,d))&&(st=[...st,d].slice(-80))}function zn(){t(8,he=""),t(243,Ke=[]),t(65,re=[])}function Ci(){return Yl?(Hn(),!0):g?(Es(),!0):Mt?(nn(),!0):Pt?($n(),!0):Je?(ei(),!0):gl?(t(104,gl=!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 nu(d){al=!0;try{if(d.nodeId){const P=await oe("GetNodeDetail",d.nodeId);return P?(await gt(P),t(35,x=d.tab||"overview"),x==="files"&&rt.length===0&&await lt(P.id),!0):!1}else if(d.section)return h.some(P=>P.id===d.section)?(await tn(d.section),d.section==="trash"&&(t(8,he=d.trashFolderId||""),t(243,Ke=d.trashFolderStack||[]),t(65,re=[]),await Zt()),!0):!1;return!1}catch{return!1}finally{al=!1}}async function Si(){if(!Ci())for(;st.length>0;){const d=st[st.length-1];if(st=st.slice(0,-1),await nu(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,cl=!1);return}if(c.status==="recovery"){t(12,v=!0),t(80,cl=!1);return}}catch(d){t(34,O=String(d))}try{t(33,V=await oe("VerstakVersion")||"verstak-gui/v2"),t(0,h=await oe("ListSystemViewsWithPlugins")||[]),t(14,m=await oe("ListWorkspaceTree")||[]),t(15,w=await oe("ListEnabledTemplates")||[])}catch(d){t(34,O=String(d)),t(0,h=[{id:"today",label:_("nav.today")},{id:"inbox",label:_("nav.inbox")},{id:"activity",label:_("nav.activity")}]),t(14,m=[]),t(15,w=[])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",Wu),Fn=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",ji),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",ms),window.addEventListener("mouseup",pt),window.addEventListener("mouseleave",pt),window.addEventListener("blur",pt),document.addEventListener("visibilitychange",gs),window.addEventListener("auxclick",en),window.addEventListener("mouseup",en),t(80,cl=!1),li(),Qi()}),Gl(()=>{Fn&&Fn(),window.removeEventListener("keydown",ji),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",ms),window.removeEventListener("mouseup",pt),window.removeEventListener("mouseleave",pt),window.removeEventListener("blur",pt),document.removeEventListener("visibilitychange",gs),window.removeEventListener("auxclick",en),window.removeEventListener("mouseup",en),as()});async function tn(d){Wt(),t(1,q=d),t(2,G=null),t(35,x="overview"),t(36,ee=[]),ce=[],t(38,pe=[]),t(39,Ee=[]),t(55,Pe=[]),t(58,ke=[]),t(49,Ae=[]),t(3,Se=[]),t(7,Oe=null),zn(),t(69,zt=!1),t(34,O=""),t(16,b=null),t(51,Re=[]),t(52,je=[]),t(17,y=[]),T=0,E=!0,t(18,I=[]),t(19,N=null);try{d==="today"?(t(16,b=await oe("ListTodayView")||{cases:[]}),t(49,Ae=await oe("GetSuggestions")||[]),t(50,$e=Ae.length),t(51,Re=await oe("ListTodayInProgress")||[]),t(52,je=await oe("ListTodayCaptures")||[])):d==="inbox"?t(3,Se=await oe("ListInboxNodes")||[]):d==="trash"?await Zt():d==="journal"?await xt():d==="activity"&&(t(17,y=await oe("ListActivityFeed",50,0)||[]),T=y.length,E=y.length===50)}catch(P){t(34,O=String(P)),t(16,b={cases:[]}),t(3,Se=[]),t(7,Oe=null),t(17,y=[])}}async function gt(d){Wt(),t(2,G=d),t(1,q=""),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=[]),fl=[],zn(),t(37,le=null),t(69,zt=!1),t(74,Jt=!1),t(34,O=""),t(32,R=[]),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,Pe=await oe("ListInboxNodesForTarget",d)||[])}catch{t(55,Pe=[])}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,R=await oe("ListActivityByNode",d,50,0)||[])}catch{}}async function lt(d){t(85,Nn=!0);try{let P=await oe("ListItems",d)||[];P.sort((ne,ue)=>ne.type!==ue.type?ne.type==="folder"?-1:1:(ne.name||"").localeCompare(ue.name||"")),t(88,rt=P)}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 P=await oe("ListWorkspaceChildren",d)||[];Hl(m,d,P),t(14,m=[...m]),await lt(d)}function iu(){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 P=dt[d];t(87,dt=dt.slice(0,d+1)),t(86,ut=P.id),lt(P.id)}async function vl(d){t(89,Mt=d),t(90,wt=""),t(92,ul=""),t(91,Ml=!0);try{Kp(d)?t(90,wt=await oe("GetFileBase64",d.fileId)||""):Gp(d)&&t(90,wt=await oe("ReadFileText",d.fileId)||"")}catch(P){t(92,ul=String(P))}t(91,Ml=!1)}function nn(){t(89,Mt=null),t(90,wt=""),t(92,ul="")}async function su(){const d=prompt(_("file.namePrompt"));if(!(!d||!d.trim()))try{const P=ut||G.id;await oe("CreateEmptyFile",P,d.trim()),await lt(P),await Wn(P)}catch(P){t(34,O=String(P))}}async function Ei(d){try{await oe("DuplicateNode",d);const P=ut||G.id;await lt(P),await Wn(P)}catch(P){t(34,O=String(P))}}function Di(d){const P=rt.find(ne=>ne.id===d);P&&Bn(P.id,P.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 P of Et.items)await oe("DuplicateNode",P);else for(const P of Et.items)await oe("MoveNode",P,d);t(93,Et={items:[],mode:"copy"}),await lt(d)}catch(P){t(34,O=String(P))}}function Mi(d){Be.includes(d)?t(94,Be=Be.filter(P=>P!==d)):t(94,Be=[...Be,d])}function Pi(d){t(94,Be=[d])}function ou(){t(94,Be=rt.map(d=>d.id))}function Li(d){if(rt.length===0)return;const P=Be.length>0?Be[Be.length-1]:rt[0].id,ne=rt.findIndex(It=>It.id===P),ue=rt.findIndex(It=>It.id===d);if(ne===-1||ue===-1)return;const Te=Math.min(ne,ue),nt=Math.max(ne,ue),wl=rt.slice(Te,nt+1).map(It=>It.id),Rl=new Set(Be);wl.forEach(It=>Rl.add(It)),t(94,Be=[...Rl])}function ru(){t(94,Be=[])}function On(d){return d.length>0?d:rt.map(P=>P.id)}async function au(){const d=On(Be),P=rt.find(ue=>ue.id===d[0]);let ne;d.length===1&&(P==null?void 0:P.type)==="folder"?ne=_("delete.folder"):d.length===1?ne=_("delete.file"):ne=_("delete.files",{count:d.length}),Dt({title:_("delete.confirmTitle"),message:_("delete.confirmMessage")+" "+ne+"?",confirmText:_("common.delete"),danger:!0,onConfirm:async()=>{for(const Te of d)try{await oe("DeleteFileOrFolder",Te)}catch(nt){t(34,O=String(nt))}t(94,Be=[]);const ue=ut||G.id;await lt(ue)}})}function cu(){const d=On(Be);t(93,Et={items:d,mode:"cut"}),t(94,Be=[])}function uu(){const d=On(Be);t(93,Et={items:d,mode:"copy"}),t(94,Be=[])}function fu(d,P){d.stopPropagation();const ne=Be.includes(P)?Be:[P];fl=ne,d.dataTransfer.effectAllowed="move",d.dataTransfer.setData("text/plain",ne.join(","))}function du(d,P){const ne=rt.find(ue=>ue.id===P);ne&&ne.type==="folder"&&(d.preventDefault(),d.stopPropagation(),d.dataTransfer.dropEffect="move")}async function pu(d,P){if(d.preventDefault(),d.stopPropagation(),fl.length!==0){for(const ne of fl)try{await oe("MoveNode",ne,P)}catch(ue){t(34,O=String(ue))}fl=[],t(94,Be=[]),await lt(ut||G.id)}}function ji(d){if(d.key==="Escape"&&dl){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(),uu()):d.key==="x"||d.key==="X"?(d.preventDefault(),cu()):d.key==="v"||d.key==="V"?(d.preventDefault(),Ai()):d.key==="a"||d.key==="A"?(d.preventDefault(),ou()):d.key==="o"||d.key==="O"?(d.preventDefault(),gu()):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(),au();return}}else if(d.key==="Escape"){if(Mt){nn();return}if(Be.length>0){ru();return}}else d.key==="F2"&&(d.preventDefault(),mu())}}function Fi(){if(Be.length===1){const d=rt.find(P=>P.id===Be[0]);d&&(d.type==="folder"?Rn(d.id):vl(d))}}function gu(){if(Be.length===1){const d=rt.find(P=>P.id===Be[0]);d&&d.fileId&&oe("OpenFile",d.fileId)}}function Bn(d,P){Zl=d,t(105,ml=P),t(106,_l=""),t(104,gl=!0)}function mu(){if(Be.length===1){const d=rt.find(P=>P.id===Be[0]);d&&Bn(d.id,d.name)}}async function zi(){const d=ml.trim();if(!d){t(106,_l=_("rename.emptyError"));return}try{await oe("ValidateName",d)}catch{t(106,_l=_("rename.invalidError"));return}t(104,gl=!1);const P=Zl;Zl="";try{await oe("RenameNode",P,d),G&&G.id===P&&t(2,G={...G,title:d}),await Qt(),ut&&await lt(ut)}catch(ne){t(34,O=String(ne))}}function _u(){t(104,gl=!1),Zl="",t(105,ml=""),t(106,_l="")}function vu(d){d.key==="Enter"?zi():t(106,_l="")}function Dt(d){t(100,hi=d.title||_("common.confirm")),t(101,ki=d.message||""),t(102,bi=d.danger!==void 0?d.danger:!0),t(103,wi=d.confirmText||_("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 hu(){Ql&&Ql(),Hn()}function ku(){Xl&&Xl(),Hn()}function Ri(d){t(71,Gt=At.node),t(72,St=d),t(70,Nt=""),t(69,zt=!0),Yt()}function bu(){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:"",P=St?St.id:"",ne=await oe("CreateNodeFromTemplate",d,Nt.trim(),P);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(m,d,Te),t(14,m=[...m])}else t(14,m=await oe("ListWorkspaceTree")||m);if(ue){const Te=await oe("GetNodeDetail",ue);Te&&(t(1,q=""),gt(Te))}}catch(d){t(34,O=String(d))}}function wu(d,P){t(73,At={visible:!0,x:d.clientX,y:d.clientY,node:P})}function Yt(){t(73,At={visible:!1,x:0,y:0,node:null})}async function yu(d){const P=!Tt[d];if(t(84,Tt={...Tt,[d]:P}),!P)return;const ne=await oe("ListWorkspaceChildren",d)||[];Hl(m,d,ne),t(14,m=[...m])}async function Cu(d,P){if(!(!d||!P||d===P))try{const ne=await oe("MoveNode",d,P);await Qt();const ue=await oe("GetNodeDetail",d);ue&&(t(1,q=""),gt(ue))}catch(ne){t(34,O=String(ne))}}async function Su(d){d.preventDefault(),d.stopPropagation();try{const P=d.dataTransfer.getData("text/plain");if(!P)return;const ne=await oe("GetNodeDetail",P);if(!ne||!ne.parent_id)return;await oe("MoveNode",P,""),await Qt();const ue=await oe("GetNodeDetail",P);ue&&(t(1,q=""),gt(ue))}catch(P){t(34,O=String(P))}}function Tu(d){d.preventDefault(),d.dataTransfer.dropEffect="move",t(95,An=!0)}function Eu(d){t(95,An=!1)}function Hi(d){Bn(d.id,d.title),Yt()}function Wi(d){Yt(),Dt({title:_("delete.confirmTitle"),message:_("delete.confirmMessage")+" "+d.title+"?",confirmText:_("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(P){t(34,O=String(P))}}})}async function Lt(d){Yt();const P=typeof d=="string"?d:d.id;try{await oe("OpenFolder",P)}catch(ne){t(34,O=String(ne))}}async function yt(d){const P=xc(d);try{if(P==="url"||d.type==="link"){if(!d.url)throw new Error("url required");await oe("OpenURL",d.url);return}if(P==="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(P==="folder"||d.type==="folder"){Wt(),t(1,q=""),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(P==="file"||P==="image"||d.type==="file"){const ue=(await oe("ListFiles",d.id)||[])[0];if(!ue)throw new Error("file record not found");const Te=C2(d,ue);si(Te)?await vl(Te):await oe("OpenFile",Te.fileId);return}await zl(d.id)}catch(ne){t(34,O=String(ne))}}async function Vi(d){Yt();try{await oe("MoveNode",d.id,""),await Qt();const P=await oe("GetNodeDetail",d.id);P&&(t(1,q=""),gt(P))}catch(P){t(34,O=String(P))}}async function Qt(){const d=Object.keys(Tt).filter(ne=>Tt[ne]),P=await oe("ListWorkspaceTree")||[];for(const ne of d){const Te=(await oe("ListWorkspaceChildren",ne)||[]).map(nt=>({...nt}));$c(P,ne,Te)}t(14,m=P)}async function Wn(d){const P=await oe("ListWorkspaceChildren",d)||[];Hl(m,d,P),t(14,m=[...m])}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 P={id:Date.now().toString(),title:bt.trim(),createdAt:new Date().toISOString()};t(36,ee=[...ee,P]),t(74,Jt=!1),t(75,bt="")}}async function Xt(d){if(le&&le.dirty){Dt({title:_("note.unsavedTitle"),message:_("note.unsavedMessage"),confirmText:_("note.unsavedClose"),danger:!1,onConfirm:async()=>{await Ji(d)}});return}await Ji(d)}async function Ji(d){try{const P=await oe("ReadNote",d.id);t(37,le={id:d.id,title:d.title,content:P||"",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:_("note.unsavedTitle"),message:_("note.unsavedMessage"),confirmText:_("note.unsavedClose"),danger:!1,onConfirm:()=>{t(37,le=null)}});return}t(37,le=null)}function Du(d){le&&(t(37,le.content=d.target.value,le),t(37,le.dirty=!0,le))}async function Iu(){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 P=d||(G?G.id:"");G&&G.id===P&&t(39,Ee=ai(await oe("ListWorklog",G.id))||Ee),q==="journal"&&await xt()}async function Nu(){const d=parseInt($,10);if(!(!_e.trim()||isNaN(d)||d<=0)&&!(!Qe&&!Le&&!G)){try{if(Qe){const P=JSON.stringify(mn(Qe));await oe("AcceptSuggestionFull",Qe.nodeId,_e.trim(),Ce,se,d,we,De,P),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(P){t(34,O=String(P));return}t(40,ze=!1),t(47,Le=null),t(48,Qe=null)}}function Un(d){Dt({title:_("worklog.deleteEntry"),message:_("worklog.deleteConfirm"),confirmText:_("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("DeleteWorklogEntry",d.id),await Vn(d.nodeId)}catch(P){t(34,O=String(P))}}})}async function on(){t(49,Ae=await oe("GetSuggestions")||[]),t(50,$e=Ae.length),G&&t(39,Ee=ai(await oe("ListWorklog",G.id))),q==="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(P=>d.some(ne=>ne.id===P))),he&&!d.some(P=>P.id===he)?zn():Ke.length>0&&(t(243,Ke=Ke.filter(P=>d.some(ne=>ne.id===P.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 Au(){return he&&(((Oe==null?void 0:Oe.nodes)||[]).find(d=>d.id===he)||Ke[Ke.length-1])||null}function hl(d){Wt(),t(8,he=d.id);const P=Ke.findIndex(ne=>ne.id===d.id);P>=0?t(243,Ke=Ke.slice(0,P+1)):t(243,Ke=[...Ke,{id:d.id,title:d.title}]),t(65,re=[])}function Mu(){if(Ke.length===0)return;Wt();const d=Ke.slice(0,-1);t(243,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,ul=""),t(91,Ml=!0);try{d.trashFsPath?t(90,wt=await oe("ReadTrashFile",d.trashFsPath)||""):t(90,wt=await oe("ReadTrashFileContent",d.id)||"");const P=(d.title||"").split(".").pop().toLowerCase();["png","jpg","jpeg","gif","webp","bmp","svg"].includes(P)&&t(90,wt="data:image/"+(P==="svg"?"svg+xml":P)+";base64,"+btoa(wt))}catch(P){t(92,ul=String(P))}t(91,Ml=!1)}function Xi(d){t(65,re=re.includes(d)?re.filter(P=>P!==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(P){t(34,O=String(P))}}async function Jn(d){Dt({title:_("delete.confirmTitle"),message:_("delete.confirmMessage")+" "+d.length+"?",confirmText:_("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("PurgeTrashNodesJSON",JSON.stringify(d)),await Zt()}catch(P){t(34,O=String(P))}}})}async function Pu(){Dt({title:_("delete.confirmTitle"),message:_("trash.empty")+"?",confirmText:_("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("EmptyTrash"),await Zt()}catch(d){t(34,O=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(mn(d))),await on()}catch(P){t(34,O=String(P))}}async function Lu(){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 ju(d){await oe("AcceptBrowserEvent",d.id,""),t(53,Ne=Ne.filter(P=>P.id!==d.id))}async function Fu(d){await oe("DismissBrowserEvent",d.id),t(53,Ne=Ne.filter(P=>P.id!==d.id))}async function zu(d){G&&G.id?(await oe("AttachBrowserEventToNode",d.id,G.id),t(53,Ne=Ne.filter(P=>P.id!==d.id))):(await oe("DismissBrowserEvent",d.id),t(53,Ne=Ne.filter(P=>P.id!==d.id)))}async function qn(d){try{const P=mn(d),ne=JSON.stringify(P);_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(P){_n("acceptTodaySuggestion error: "+P)}}async function Zi(d){try{const P=mn(d),ne=JSON.stringify(P);_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(P){_n("acceptJournalSuggestion error: "+P)}}async function xt(){try{const[d,P,ne]=await Promise.all([oe("ListWorklogReport",A,j,M,D,F,B),oe("WorklogReportSummary",A,j,M,D,F,B),oe("GetSuggestions")]);if(t(18,I=(d||[]).map(ue=>(ue._expanded===void 0&&(ue._expanded=!1),ue))),t(19,N=P||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,I=[]),t(19,N=null),t(49,Ae=[]),t(50,$e=0)}}async function cn(d){try{const P=await oe("SaveWorklogReport",d,A,j,M,D,F,B);t(27,H=P),setTimeout(()=>t(27,H=""),4e3)}catch(P){if(String(P).includes("отменено"))return;t(27,H="Ошибка: "+String(P)),setTimeout(()=>t(27,H=""),6e3)}}let xi;async function Yn(d){if(d._expanded=!d._expanded,t(18,I),d._expanded&&!d._events&&d._hasEvents===void 0)try{d._events=await oe("GetWorklogEntryEvents",d.id)||[],d._hasEvents=d._events.length>0,t(18,I)}catch{d._events=[],d._hasEvents=!1,t(18,I)}}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(P){P._events=[],P._hasEvents=!1}t(39,Ee)}async function Ru(){const d=J.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 Ou(){clearTimeout(xi),xi=setTimeout(Ru,200)}function $i(d){t(23,M=d.id),t(26,W=d.path||d.title),t(22,D=!0),t(29,J=""),t(30,Y=[]),t(31,Q=!1),xt()}function es(){t(23,M=""),t(22,D=!1),t(26,W=""),t(29,J=""),t(30,Y=[]),t(31,Q=!1),xt()}function Bu(){t(20,A=""),t(21,j=""),t(23,M=""),t(22,D=!1),t(24,F="all"),t(25,B="all"),t(26,W=""),t(29,J=""),t(30,Y=[]),t(31,Q=!1),xt()}async function ts(){const d=await oe("PickFile");if(!d)return;const P=ut||G.id;await ls(P,d)}async function Hu(){const d=await oe("PickDirectory");if(!d)return;const P=ut||G.id;await ls(P,d)}async function ls(d,P){t(81,Dn=!0);try{const ne=await oe("PreviewImport",P);t(82,ql=ne),In=P,vi=d,t(83,Al=!0)}catch(ne){t(34,O=String(ne))}t(81,Dn=!1)}async function Xn(d){try{const P=vi||G.id,ne=d==="copy"?await oe("AddPathCopy",P,In):await oe("AddPathLink",P,In);t(83,Al=!1),t(82,ql=null),t(87,dt=[]),t(86,ut=null),await Promise.all([ln(P),lt(P),Wn(P)])}catch(P){t(34,O=String(P))}}function ns(){t(83,Al=!1),t(82,ql=null)}async function is({id:d,type:P}){const ne=_(P==="folder"?"delete.folder":"delete.file");Dt({title:_("delete.confirmTitle"),message:_("delete.confirmMessage")+" "+ne+"?",confirmText:_("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,O=String(ue))}}})}async function Wu(d){try{if(!d||d.length===0)return;await $u(d,"drop")}finally{pt()}}function Vu(d){return{note_created:_("event.noteCreated"),note_updated:_("event.noteUpdated"),note_deleted:_("event.noteDeleted"),file_added:_("event.fileAdded"),file_deleted:_("event.fileDeleted"),file_renamed:_("event.fileRenamed"),file_copied:_("event.fileCopied"),file_moved:_("event.fileMoved"),folder_added:_("event.folderAdded"),folder_deleted:_("event.folderDeleted"),folder_renamed:_("event.folderRenamed"),folder_moved:_("event.folderMoved"),node_created:_("event.caseCreated"),node_updated:_("event.caseUpdated"),node_deleted:_("event.nodeDeleted"),action_created:_("event.actionCreated"),action_done:_("event.actionDone"),worklog_added:_("event.worklogAdded")}[d]||d}function Zn(d){return{project:_("kind.project"),client:_("kind.client"),document:_("kind.document"),recipe:_("kind.recipe"),folder:_("kind.folder"),note:_("kind.note"),file:_("kind.file"),archive:_("kind.archive"),case:_("kind.case"),link:_("kind.link")}[d]||d||_("kind.case")}function Uu(d){return d==="action"?_("kind.action"):Zn(d)}function Ku(d){return d?_("capture.kind."+d):""}function Gu(d){return d?_("capture.source."+d):""}function Ju(d){const P=[];return d.captureKind&&P.push(Ku(d.captureKind)),d.captureSource&&P.push(Gu(d.captureSource)),d.captureContextLabel&&P.push(`${_("inbox.capturedIn")}: ${d.captureContextLabel}`),d.suggestedTargetLabel&&P.push(`${_("inbox.suggestedTarget")}: ${d.suggestedTargetLabel}`),P.push(vt(d.capturedAt||d.createdAt)),P.filter(Boolean).join(" · ")}function qu(d){!d||!d.id||(t(3,Se=[d,...Se.filter(P=>P.id!==d.id)]),G&&(d.captureContextNodeId===G.id||d.suggestedTargetNodeId===G.id)&&t(55,Pe=[d,...Pe.filter(P=>P.id!==d.id)]))}function Yu(){return G&&G.id?{contextType:"node",nodeId:G.id,suggestedTargetNodeId:G.id}:q?{contextType:"section",section:q}:{contextType:"global",section:"root"}}function $t(){return JSON.stringify(Yu())}function Qu(){return G&&G.id?_("capture.dropOverlayNode",{title:G.title}):_("capture.dropOverlayGlobal")}async function kl(d=null){d&&qu(d),q==="inbox"&&t(3,Se=await oe("ListInboxNodes")||Se)}async function Xu(d,P){const ne=String(d||"").trim();if(!ne)return null;const ue=ci(ne),Te=ue?await oe("CaptureURLWithContext",ue,"",P,$t()):await oe("CaptureTextWithContext",ne,P,$t());return await kl(Te),Te}async function ss(d,P,ne){const ue=String(d||"").trim();if(!ue)return null;const Te=await oe("CaptureURLWithContext",ue,P||"",ne,$t());return await kl(Te),Te}async function Zu(d,P){if(!d)return null;const ne=d.path||d.webkitRelativePath||"";if(ne){const nt=await oe("CapturePathWithContext",ne,P,$t());return await kl(nt),nt}const ue=await E2(d),Te=await oe("CaptureFileDataWithContext",d.name||`clipboard.${T2(d.type)}`,ue,P,$t());return await kl(Te),Te}async function xn(d,P){var Rl,It,Is;if(!d)return!1;let ne=!1;const ue=Array.from(d.files||[]);for(const tl of ue)await Zu(tl,P),ne=!0;const Te=(Rl=d.getData)==null?void 0:Rl.call(d,"text/x-moz-url");if(Te){const tl=D2(Te),Ol=tl?ci(tl.url):"";if(Ol)return await ss(Ol,tl.title,P),!0}const nt=(It=d.getData)==null?void 0:It.call(d,"text/uri-list");if(nt){const tl=I2(nt),Ol=ci(tl);if(Ol)return await ss(Ol,"",P),!0}const wl=(Is=d.getData)==null?void 0:Is.call(d,"text/plain");return String(wl||"").trim()&&(await Xu(wl,P),ne=!0),ne}async function xu(){if(!Me){t(57,ft=""),t(56,Me=!0);try{const d=await oe("CaptureClipboardTextWithContext",$t());await kl(d),t(57,ft=_("inbox.captured"))}catch(d){t(34,O=String(d).includes("clipboard is empty")?_("inbox.clipboardEmpty"):_("inbox.clipboardUnavailable"))}finally{t(56,Me=!1)}}}async function $u(d,P="drop"){if(!Me){t(56,Me=!0),t(57,ft="");try{for(const ne of d){const ue=await oe("CapturePathWithContext",ne,P,$t());await kl(ue)}t(57,ft=_("inbox.captured"))}catch(ne){t(34,O=String(ne))}finally{t(56,Me=!1),t(96,Pl=!1)}}}async function os(d){if(!(p||v)&&!kn(d.target)&&d.clipboardData)try{await xn(d.clipboardData,"paste")&&(d.preventDefault(),t(57,ft=_("inbox.captured")))}catch(P){t(34,O=String(P))}}function rs(d){if(fl.length>0)return!1;const P=Array.from((d==null?void 0:d.types)||[]);return P.includes("Files")||P.includes("text/uri-list")||P.includes("text/x-moz-url")||P.includes("text/plain")&&!P.includes("application/x-verstak-node")}function as(){pl&&(clearTimeout(pl),pl=null)}function pt(){Ll=0,t(97,dl=!1),t(98,Mn=""),Pn=0,t(96,Pl=!1),as()}function cs(){pl||(pl=setTimeout(()=>{pl=null,dl&&Date.now()-Pn>2e3?pt():dl&&cs()},2500))}function us(d){return rs(d)?(t(98,Mn=Qu()),t(97,dl=!0),Pn=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 gs(){document.hidden&&pt()}async function ms(d){if(rs(d.dataTransfer)){d.preventDefault();try{await xn(d.dataTransfer,"drop")&&t(57,ft=_("inbox.captured"))}catch(P){t(34,O=String(P))}finally{pt()}}}function ef(d){d.preventDefault(),d.dataTransfer.dropEffect="copy",t(96,Pl=!0)}function tf(){t(96,Pl=!1)}async function lf(d){d.preventDefault(),d.stopPropagation();try{await xn(d.dataTransfer,"drop")&&t(57,ft=_("inbox.captured"))}catch(P){t(34,O=String(P))}finally{pt()}}function un(d){t(107,Pt=d),t(108,Bt=""),t(109,qt=[]),t(110,Ht=null)}function $n(){t(107,Pt=null),t(108,Bt=""),t(109,qt=[]),t(110,Ht=null),t(111,xl=!1)}async function nf(){const d=Bt.trim();if(!d||d.length<2){t(109,qt=[]);return}t(111,xl=!0);try{const P=await oe("SearchNodes",d)||[];t(109,qt=P.filter(ne=>N2(ne)&&ne.id!==(Pt==null?void 0:Pt.id)))}catch{t(109,qt=[])}finally{t(111,xl=!1)}}function sf(d){t(108,Bt=d.target.value),t(110,Ht=null),clearTimeout(yi),yi=setTimeout(nf,200)}function _s(d){t(110,Ht=d),t(108,Bt=d.path||d.title),t(109,qt=[])}async function vs(){if(!(!Pt||!Ht))try{await hs(Pt,Ht.id),$n()}catch(d){t(34,O=String(d))}}async function hs(d,P){!d||!P||(await oe("ResolveInboxNode",d.id,P),t(3,Se=Se.filter(ne=>ne.id!==d.id)),t(55,Pe=Pe.filter(ne=>ne.id!==d.id)),await Qt(),G&&await ln(G.id))}async function fn(d){const P=(d==null?void 0:d.suggestedTargetNodeId)||(G==null?void 0:G.id)||"";if(P)try{await hs(d,P)}catch(ne){t(34,O=String(ne))}}function dn(d){Dt({title:_("inbox.deleteTitle"),message:_("inbox.deleteConfirm",{title:d.title}),confirmText:_("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("DeleteInboxNode",d.id),t(3,Se=Se.filter(P=>P.id!==d.id)),t(55,Pe=Pe.filter(P=>P.id!==d.id))}catch(P){t(34,O=String(P))}}})}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 of(){if(!(!Je||!Ue.trim()))try{const d=await oe("UpdateLink",Je.id,qe.trim(),Ue.trim(),tt);t(58,ke=ke.map(P=>P.id===d.id?d:P)),ei()}catch(d){t(63,Ye=String(d))}}async function bs(d){Dt({title:_("links.deleteTitle"),message:_("links.deleteConfirm",{title:d.title}),confirmText:_("common.delete"),danger:!0,onConfirm:async()=>{try{await oe("DeleteLink",d.id),t(58,ke=ke.filter(P=>P.id!==d.id))}catch(P){t(34,O=String(P))}}})}async function ws(d){try{await oe("OpenLink",d.id)}catch(P){t(34,O=String(P))}}async function ys(d){var P,ne;try{await((ne=(P=navigator.clipboard)==null?void 0:P.writeText)==null?void 0:ne.call(P,d.url)),t(63,Ye=_("links.copied"))}catch{t(63,Ye=_("links.copyUnavailable"))}}function rf(){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,O=String(d))}}async function Ss(d){try{await oe("DeleteAction",d),t(38,pe=pe.filter(P=>P.id!==d))}catch(P){t(34,O=String(P))}}function af(d){const P=En.find(ne=>ne.id===d);return P?P.label:d}async function zl(d){try{const P=await oe("GetNodeDetail",d);P&>(P)}catch(P){t(34,O=String(P))}}async function el(d){const P=A2(d),ne=P.nodeId;if(ne)try{const ue=await oe("GetNodeDetail",ne);if(!ue)return;if(gt(ue),P.tab==="notes"){if(ht("notes"),P.targetId){try{t(36,ee=await oe("ListNotes",ne)||[])}catch{}const Te=ee.find(nt=>nt.id===P.targetId);Te&&setTimeout(()=>Xt(Te),100)}}else if(P.tab==="files")if(ht("files"),P.targetId)try{const Te=await oe("GetNodeDetail",P.targetId);if(Te&&Te.parent_id){await lt(Te.parent_id);const nt=rt.find(wl=>wl.id===P.targetId);nt&&nt.type==="file"&&si(nt)&&setTimeout(()=>vl(nt),150)}else await lt(ne)}catch{await lt(ne)}else await lt(ne)}catch(ue){t(34,O=String(ue))}}async function bl(d){return el(d)}async function cf(d){if(!(!d||!d.nodeId))try{if(d.type==="link"){const ne=await oe("GetNodeDetail",d.nodeId);ne&&(await gt(ne),ht("links"));return}if(d.type==="action"){const ne=await oe("GetNodeDetail",d.nodeId);ne&&(await gt(ne),ht("actions"));return}const P=await oe("GetNodeDetail",d.nodeId);if(!P)return;if(d.type==="note"){const ne=P.parent_id||P.parentId||"",ue=ne?await oe("GetNodeDetail",ne):null;if(ue){await gt(ue),ht("notes"),t(36,ee=await oe("ListNotes",ue.id)||[]);const Te=ee.find(nt=>nt.id===P.id);Te&&await Xt(Te)}return}if(d.type==="file"){const ne=P.parent_id||P.parentId||"",ue=ne?await oe("GetNodeDetail",ne):null;if(ue){await gt(ue),ht("files"),await lt(ue.id);const Te=rt.find(nt=>nt.id===P.id);Te&&si(Te)&&await vl(Te)}return}if(d.type==="folder"){await gt(P),ht("files"),await lt(P.id);return}await gt(P)}catch(P){t(34,O=String(P))}}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,g=!0)}function Es(){t(13,g=!1)}async function uf(){try{t(0,h=await oe("ListSystemViewsWithPlugins")||[])}catch{}}function ff(d){const P=Array.isArray(d==null?void 0:d.conflicts)?d.conflicts:[],ne=Array.isArray(d==null?void 0:d.applyErrors)?d.applyErrors:[],ue=[];return P.length>0&&ue.push(_("sync.conflictsCount",{count:P.length})),ne.length>0&&ue.push(_("sync.applyErrorsCount",{count:ne.length})),ue.join(" · ")}async function df(){t(113,jn=!0),t(114,jl=""),t(115,$l="");try{const d=await oe("SyncNow");await li(),t(114,jl=ff(d)),t(115,$l=jl?"warning":"")}catch(d){console.error("sync error:",d),t(114,jl=`${_("sync.status.error")}: ${(d==null?void 0:d.message)||d}`),t(115,$l="warning")}finally{t(113,jn=!1)}}function pf(d){t(11,p=!1),t(10,c=d),t(80,cl=!1),window.location.reload()}function gf(d){t(12,v=!1),t(10,c=d),t(80,cl=!1),window.location.reload()}const mf=d=>d.nodeId===G.id,_f=d=>tn(d.id),vf=()=>ni("sync"),hf=()=>ni(),kf=()=>Gn(re),bf=()=>Jn(re),wf=()=>oe("OpenTrashFolder"),yf=()=>t(34,O=""),Cf=()=>t(34,O=""),Sf=()=>t(34,O="");function Tf(){le.content=this.value,t(37,le)}const Ef=d=>ht(d.id),Df=()=>{ht("notes"),Ui()},If=()=>{ht("files"),ts()},Nf=()=>ht("worklog"),Af=d=>Xt(d),Mf=d=>Xt(d);function Pf(){bt=this.value,t(75,bt)}const Lf=d=>d.key==="Enter"&&Gi(),jf=d=>Xt(d),Ff=d=>Xt(d),zf=d=>{const P=d.detail;P===0?(t(87,dt=[]),t(86,ut=null),lt(G.id)):Ti(P-1)},Rf=d=>Rn(d.detail),Of=d=>vl(d.detail),Bf=d=>oe("OpenFile",d.detail),Hf=d=>oe("OpenFolder",d.detail),Wf=d=>is(d.detail),Vf=d=>Di(d.detail.id),Uf=d=>Ei(d.detail),Kf=d=>Ii(d.detail),Gf=d=>Ni(d.detail),Jf=d=>Pi(d.detail),qf=d=>Mi(d.detail),Yf=d=>Li(d.detail),Qf=d=>fn(d),Xf=d=>un(d),Zf=d=>yt(d),xf=d=>Lt(d),$f=d=>dn(d),ed=d=>yt(d),td=(d,P)=>P.key==="Enter"&&yt(d),ld=d=>ws(d),nd=d=>ys(d),id=d=>ks(d),sd=d=>bs(d),od=d=>oe("RunAction",d.id),rd=d=>Ss(d.id),ad=()=>sn(),cd=d=>d.nodeId===G.id,ud=d=>rn(d),fd=d=>qn(d),dd=d=>an(d),pd=(d,P,ne)=>t(49,P[ne]._expanded=!d._expanded,Ae,t(2,G)),gd=(d,P,ne,ue)=>ue.key==="Enter"&&t(49,P[ne]._expanded=!d._expanded,Ae,t(2,G)),md=d=>el(d),_d=d=>Lt(d.nodeId),vd=d=>sn(d),hd=d=>Un(d),kd=d=>el(d),bd=d=>Lt(d.nodeId),wd=d=>Qn(d),yd=(d,P)=>P.key==="Enter"&&Qn(d),Cd=d=>bl(d),Sd=(d,P)=>P.key==="Enter"&&bl(d),Td=()=>{t(4,Z="date"),t(5,ye=Z==="date"&&ye==="desc"?"asc":"desc")},Ed=()=>{t(4,Z="name"),t(5,ye=Z==="name"&&ye==="desc"?"asc":"desc")},Dd=()=>{t(4,Z="type"),t(5,ye=Z==="type"&&ye==="desc"?"asc":"desc")};function Id(){ve=this.checked,t(6,ve)}const Nd=d=>fn(d),Ad=d=>un(d),Md=d=>yt(d),Pd=d=>Lt(d),Ld=d=>dn(d),jd=d=>yt(d),Fd=(d,P)=>P.key==="Enter"&&yt(d),zd=d=>fn(d),Rd=d=>un(d),Od=d=>yt(d),Bd=d=>Lt(d),Hd=d=>dn(d),Wd=d=>yt(d),Vd=(d,P)=>P.key==="Enter"&&yt(d),Ud=d=>Xi(d.id),Kd=d=>d.type!=="file"?hl(d):Fl(d),Gd=(d,P)=>P.key==="Enter"&&(d.type!=="file"?hl(d):Fl(d)),Jd=d=>d.type!=="file"?hl(d):Fl(d),qd=(d,P)=>P.key==="Enter"&&(d.type!=="file"?hl(d):Fl(d)),Yd=d=>Gn(Kn(d.id)),Qd=d=>Jn(Kn(d.id)),Xd=()=>t(28,U="suggestions"),Zd=()=>t(28,U="worklog"),xd=d=>zl(d.nodeId),$d=(d,P,ne,ue)=>t(49,P[ne].suggestedMin=parseInt(ue.target.value),Ae),e1=d=>rn(d),t1=d=>Zi(d),l1=d=>an(d),n1=(d,P,ne)=>t(49,P[ne]._expanded=!d._expanded,Ae),i1=(d,P,ne,ue)=>ue.key==="Enter"&&t(49,P[ne]._expanded=!d._expanded,Ae),s1=d=>el(d),o1=d=>Lt(d.nodeId),r1=()=>cn("csv"),a1=()=>cn("markdown"),c1=()=>cn("pdf");function u1(){A=this.value,t(20,A)}function f1(){j=this.value,t(21,j)}const d1=()=>{t(29,J=""),t(26,W=""),es()};function p1(){J=this.value,t(29,J)}const g1=()=>setTimeout(()=>t(31,Q=!1),200),m1=d=>$i(d);function _1(){D=this.checked,t(22,D)}function v1(){F=vn(this),t(24,F)}function h1(){B=vn(this),t(25,B)}const k1=d=>zl(d.nodeId),b1=d=>Yn(d),w1=(d,P)=>P.key==="Enter"&&Yn(d),y1=d=>sn(d),C1=d=>Un(d),S1=d=>el(d),T1=d=>zl(d),E1=d=>bl(d),D1=d=>el(d),I1=d=>rn(d),N1=d=>qn(d),A1=d=>an(d),M1=d=>Lt(d),P1=d=>yt(d),L1=d=>{tn("trash"),hl({id:d,title:""}),Zt()},j1=d=>bl(d),F1=(d,P)=>P.key==="Enter"&&bl(d),z1=()=>t(72,St=null),R1=d=>t(72,St=d);function O1(){Nt=this.value,t(70,Nt)}const B1=d=>d.key==="Enter"&&Bi(),H1=d=>Ri(d),W1=()=>Vi(At.node),V1=()=>Hi(At.node),U1=()=>Wi(At.node),K1=()=>Lt(At.node);function G1(){se=this.value,t(43,se)}function J1(){_e=this.value,t(41,_e)}function q1(){$=Dl(this.value),t(42,$)}function Y1(){Ce=this.value,t(44,Ce)}function Q1(){De=this.checked,t(45,De)}function X1(){we=this.checked,t(46,we)}function Z1(){Rt=this.value,t(77,Rt)}const x1=d=>d.key==="Enter"&&ti();function $1(){Nl=vn(this),t(78,Nl),t(121,En)}function ep(){Ot=this.value,t(79,Ot)}const tp=d=>d.key==="Enter"&&ti(),lp=()=>Xn("copy"),np=()=>Xn("link");function ip(){ml=this.value,t(105,ml)}function sp(){Bt=this.value,t(108,Bt)}const op=d=>d.key==="Enter"&&Ht&&vs(),rp=d=>_s(d);function ap(){qe=this.value,t(60,qe)}function cp(){Ue=this.value,t(61,Ue)}function up(){tt=this.value,t(62,tt)}const fp=d=>oe("OpenFile",d.detail);return l.$$.update=()=>{var d;l.$$.dirty[0]&384&&t(66,Ft=S2((Oe==null?void 0:Oe.nodes)||[],he)),l.$$.dirty[0]&7&&t(119,n=G?G.title:q?((d=h.find(P=>P.id===q))==null?void 0:d.label)||"":_("nav.selectPrompt")),l.$$.dirty[0]&4&&t(118,i=G?Zn(G.type):""),l.$$.dirty[0]&56&&t(9,o=w2(Se,Z,ye)),l.$$.dirty[0]&576&&t(117,r=ve?tu(o):null),l.$$.dirty[7]&67108864&&t(67,Kt=Ke.length===0?_("nav.trash"):[_("nav.trash"),...Ke.map(P=>P.title)].join(" / "))},t(68,rl=((Ds=Au())==null?void 0:Ds.title)||_("trash.deletedNodes")),[h,q,G,Se,Z,ye,ve,Oe,he,o,c,p,v,g,m,w,b,y,I,N,A,j,D,M,F,B,W,H,U,J,Y,Q,R,V,O,x,ee,le,pe,Ee,ze,_e,$,se,Ce,De,we,Le,Qe,Ae,$e,Re,je,Ne,Ge,Pe,Me,ft,ke,Je,qe,Ue,tt,Ye,et,re,Ft,Kt,rl,zt,Nt,Gt,St,At,Jt,bt,Il,Rt,Nl,Ot,cl,Dn,ql,Al,Tt,Nn,ut,dt,rt,Mt,wt,Ml,ul,Et,Be,An,Pl,dl,Mn,Yl,hi,ki,bi,wi,gl,ml,_l,Pt,Bt,qt,Ht,xl,Ln,jn,jl,$l,Ts,r,i,n,X,En,eu,ht,tn,gt,lt,Rn,iu,Ti,vl,nn,su,Ei,Di,Ii,Ni,Ai,Mi,Pi,Li,fu,du,pu,zi,_u,vu,hu,ku,Ri,bu,Oi,Bi,wu,Yt,yu,Cu,Su,Tu,Eu,Hi,Wi,Lt,yt,Vi,Ui,Ki,Gi,Xt,qi,Du,Iu,sn,Yi,Nu,Un,Zt,hl,Mu,Fl,Xi,Kn,Gn,Jn,Pu,rn,an,Lu,ju,Fu,zu,qn,Zi,xt,cn,Yn,Qn,Ou,$i,es,Bu,ts,Hu,Xn,ns,is,Vu,Zn,Uu,Ju,xu,ef,tf,lf,un,$n,sf,_s,vs,fn,dn,ks,ei,of,bs,ws,ys,rf,Cs,ti,Ss,af,zl,el,bl,cf,li,ni,Es,uf,df,pf,gf,Ke,mf,_f,vf,hf,kf,bf,wf,yf,Cf,Sf,Tf,Ef,Df,If,Nf,Af,Mf,Pf,Lf,jf,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,gd,md,_d,vd,hd,kd,bd,wd,yd,Cd,Sd,Td,Ed,Dd,Id,Nd,Ad,Md,Pd,Ld,jd,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,g1,m1,_1,v1,h1,k1,b1,w1,y1,C1,S1,T1,E1,D1,I1,N1,A1,M1,P1,L1,j1,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,up,fp]}class P2 extends xe{constructor(e){super(),Ze(this,e,M2,b2,Xe,{},null,[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1])}}new P2({target:document.getElementById("app")}); diff --git a/cmd/verstak-gui/frontend-dist/assets/main-bmXj_j_Z.css b/cmd/verstak-gui/frontend-dist/assets/main-bmXj_j_Z.css new file mode 100644 index 0000000..f8126d6 --- /dev/null +++ b/cmd/verstak-gui/frontend-dist/assets/main-bmXj_j_Z.css @@ -0,0 +1 @@ +.file-row.svelte-1skuef2.svelte-1skuef2{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:6px;cursor:default;transition:background .12s;min-height:52px;-webkit-user-select:none;user-select:none;position:relative}.file-row.svelte-1skuef2.svelte-1skuef2:hover{background:#1e1e30}.file-row--selected.svelte-1skuef2.svelte-1skuef2{background:#1e1e3a;outline:1px solid #3a3a6c}.file-row--selected.svelte-1skuef2.svelte-1skuef2:hover{background:#252545}.file-row.svelte-1skuef2.svelte-1skuef2:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-1skuef2.svelte-1skuef2{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-1skuef2.svelte-1skuef2{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-1skuef2.svelte-1skuef2{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-1skuef2.svelte-1skuef2{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-1skuef2.svelte-1skuef2{color:#444}.file-row-actions.svelte-1skuef2.svelte-1skuef2{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-1skuef2:hover .file-row-actions.svelte-1skuef2{opacity:1}.action-btn.svelte-1skuef2.svelte-1skuef2{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1skuef2.svelte-1skuef2:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-1skuef2.svelte-1skuef2:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-1skuef2.svelte-1skuef2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-backdrop.svelte-1skuef2.svelte-1skuef2{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.menu.svelte-1skuef2.svelte-1skuef2{position:fixed;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:4px;z-index:100;min-width:220px;box-shadow:0 4px 16px #00000080}.menu-item.svelte-1skuef2.svelte-1skuef2{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;background:transparent;color:#ccc;font-size:12px;text-align:left;cursor:pointer;border-radius:4px;font-family:inherit}.menu-item.svelte-1skuef2.svelte-1skuef2:hover{background:#2a2a3c;color:#fff}.menu-item-danger.svelte-1skuef2.svelte-1skuef2{color:#ff6b6b}.menu-item-danger.svelte-1skuef2.svelte-1skuef2:hover{background:#3a2222}.menu-item.svelte-1skuef2.svelte-1skuef2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-sep.svelte-1skuef2.svelte-1skuef2{height:1px;background:#2a2a3c;margin:4px 8px}.breadcrumbs.svelte-csi2lb{display:flex;align-items:center;gap:4px;padding:8px 0;font-size:13px;color:#999}.sep.svelte-csi2lb{color:#444}.crumb.svelte-csi2lb{font-size:13px}.crumb--current.svelte-csi2lb{color:#ccc}.crumb--link.svelte-csi2lb{background:none;border:none;padding:2px 4px;color:#888;cursor:pointer;border-radius:3px;font-family:inherit;font-size:13px;transition:color .12s,background .12s}.crumb--link.svelte-csi2lb:hover{color:#ccc;background:#1e1e30}.crumb--link.svelte-csi2lb:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.overlay.svelte-1cw3u0m{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-1cw3u0m{background:#14141f;border:1px solid #2a2a3c;border-radius:10px;width:90vw;max-width:900px;height:85vh;max-height:700px;display:flex;flex-direction:column;overflow:hidden}.preview-header.svelte-1cw3u0m{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.preview-title.svelte-1cw3u0m{display:flex;align-items:center;gap:8px;color:#ddd;font-size:14px;min-width:0}.preview-name.svelte-1cw3u0m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-meta.svelte-1cw3u0m{font-size:11px;color:#666;margin-left:auto;white-space:nowrap}.preview-actions.svelte-1cw3u0m{display:flex;gap:4px;flex-shrink:0;margin-left:8px}.action-btn.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.action-btn.svelte-1cw3u0m:hover{background:#2a2a3c;color:#ccc}.action-btn.svelte-1cw3u0m:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.action-btn-close.svelte-1cw3u0m{color:#ff6b6b}.action-btn-close.svelte-1cw3u0m:hover{background:#3a2222;color:#f44}.preview-body.svelte-1cw3u0m{flex:1;overflow:auto;min-height:0}.preview-status.svelte-1cw3u0m{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;color:#888;font-size:14px}.preview-image-container.svelte-1cw3u0m{display:flex;align-items:center;justify-content:center;padding:16px;min-height:200px;background:#0e0e18}.preview-image.svelte-1cw3u0m{max-width:100%;max-height:calc(85vh - 100px);object-fit:contain;border-radius:4px}.preview-text.svelte-1cw3u0m{margin:0;padding:16px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;color:#ccc;white-space:pre-wrap;word-wrap:break-word;overflow:auto}.preview-pdf-container.svelte-1cw3u0m{width:100%;height:100%}.preview-pdf.svelte-1cw3u0m{width:100%;height:100%;border:none}.btn-sm.svelte-1cw3u0m{padding:6px 14px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit;transition:background .12s}.btn-sm.svelte-1cw3u0m:hover{background:#223}.overlay.svelte-1fv6yyk{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:200}.modal.svelte-1fv6yyk{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:360px;max-width:90vw}h3.svelte-1fv6yyk{font-size:18px;margin-bottom:12px;color:#e4e4ef}.message.svelte-1fv6yyk{font-size:14px;color:#aaa;margin-bottom:20px;line-height:1.4}.actions.svelte-1fv6yyk{display:flex;gap:8px;justify-content:flex-end}.btn.svelte-1fv6yyk{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-1fv6yyk:hover{background:#223}.btn-primary.svelte-1fv6yyk{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-1fv6yyk:hover{background:#4f46e5}.btn-danger.svelte-1fv6yyk{background:#dc2626;border-color:#dc2626;color:#fff}.btn-danger.svelte-1fv6yyk:hover{background:#b91c1c}.btn.svelte-1fv6yyk:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.tree-item.svelte-zj71cl.svelte-zj71cl{display:flex;align-items:center;height:32px;padding-right:8px;cursor:default;font-size:13px;color:#ccc;-webkit-user-select:none;user-select:none}.tree-item.svelte-zj71cl.svelte-zj71cl:hover{background:#223}.tree-item.selected.svelte-zj71cl.svelte-zj71cl{background:#2a2a4a;color:#fff;font-weight:500}.tree-item.drop-valid.svelte-zj71cl.svelte-zj71cl{background:#1a3a1a;outline:1px solid #4ade80;outline-offset:-1px}.tree-item.drop-invalid.svelte-zj71cl.svelte-zj71cl{background:#3a1a1a;outline:1px solid #ff6b6b;outline-offset:-1px}.tree-toggle.svelte-zj71cl.svelte-zj71cl{background:none;border:none;color:#666;cursor:pointer;padding:0;width:20px;height:32px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-family:inherit;line-height:1;font-size:12px}.tree-toggle.svelte-zj71cl.svelte-zj71cl:hover{color:#a5b4fc}.tree-toggle-placeholder.svelte-zj71cl.svelte-zj71cl{display:inline-block;width:20px;flex-shrink:0}.tree-icon.svelte-zj71cl.svelte-zj71cl{display:inline-flex;align-items:center;justify-content:center;width:20px;height:32px;flex-shrink:0;color:#888;margin-right:4px;cursor:pointer}.tree-icon.svelte-zj71cl.svelte-zj71cl:hover,.tree-item.selected.svelte-zj71cl .tree-icon.svelte-zj71cl{color:#a5b4fc}.tree-label.svelte-zj71cl.svelte-zj71cl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;line-height:32px}.first-run-screen.svelte-a9f1pd.svelte-a9f1pd{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem;background:var(--bg, #13131f)}.first-run-card.svelte-a9f1pd.svelte-a9f1pd{max-width:520px;width:100%;padding:2.5rem;background:var(--surface, #1e1e2e);border-radius:12px;border:1px solid var(--border, #2a2a3e);text-align:center}.first-run-logo.svelte-a9f1pd.svelte-a9f1pd{display:block;width:64px;height:64px;margin:0 auto .5rem}.first-run-card.svelte-a9f1pd h1.svelte-a9f1pd{margin:0 0 .75rem;font-size:1.5rem;color:var(--text, #e0e0e0)}.first-run-desc.svelte-a9f1pd.svelte-a9f1pd{color:var(--text-dim, #888);margin-bottom:1.5rem;font-size:.9rem;line-height:1.5}.input-row.svelte-a9f1pd.svelte-a9f1pd{display:flex;gap:.5rem}.input-row.svelte-a9f1pd input.svelte-a9f1pd{flex:1}.path-info.svelte-a9f1pd.svelte-a9f1pd{text-align:left;font-size:.85rem;padding:.5rem .75rem;margin-top:.5rem;background:var(--surface-alt, #252538);border-radius:6px;color:var(--text-dim, #888)}.error-msg.svelte-a9f1pd.svelte-a9f1pd{text-align:left;font-size:.85rem;padding:.5rem .75rem;margin-top:.5rem;background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:6px;color:#ff6b6b}.first-run-actions.svelte-a9f1pd.svelte-a9f1pd{display:flex;gap:.75rem;justify-content:center;margin-top:1.5rem}.btn-lg.svelte-a9f1pd.svelte-a9f1pd{padding:.65rem 1.5rem;font-size:1rem}.form-group.svelte-a9f1pd.svelte-a9f1pd{margin-bottom:1rem;text-align:left}.form-label.svelte-a9f1pd.svelte-a9f1pd{display:block;font-size:.85rem;color:var(--text-dim, #888);margin-bottom:.4rem}.recovery-screen.svelte-s3o8c3.svelte-s3o8c3{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem;background:var(--bg, #13131f)}.recovery-card.svelte-s3o8c3.svelte-s3o8c3{max-width:480px;width:100%;padding:2.5rem;background:var(--surface, #1e1e2e);border-radius:12px;border:1px solid var(--border, #2a2a3e);text-align:center}.recovery-icon.svelte-s3o8c3.svelte-s3o8c3{font-size:2.5rem;margin-bottom:.5rem;color:#f59e0b}.recovery-card.svelte-s3o8c3 h1.svelte-s3o8c3{margin:0 0 .75rem;font-size:1.4rem;color:var(--text, #e0e0e0)}.recovery-desc.svelte-s3o8c3.svelte-s3o8c3{color:var(--text-dim, #888);margin-bottom:.5rem;font-size:.9rem}.recovery-path.svelte-s3o8c3.svelte-s3o8c3{display:block;padding:.5rem .75rem;background:var(--surface-alt, #252538);border-radius:6px;font-size:.85rem;color:var(--text-dim, #aaa);word-break:break-all;margin-bottom:1.5rem}.error-msg.svelte-s3o8c3.svelte-s3o8c3{padding:.5rem .75rem;margin-bottom:1rem;background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:6px;color:#ff6b6b;font-size:.85rem}.recovery-actions.svelte-s3o8c3.svelte-s3o8c3{display:flex;flex-direction:column;gap:.6rem}.btn-lg.svelte-s3o8c3.svelte-s3o8c3{padding:.65rem 1.25rem;font-size:.95rem;width:100%}.modal-desc.svelte-s3o8c3.svelte-s3o8c3{color:var(--text-dim, #888);font-size:.9rem;line-height:1.5;margin-bottom:1rem}.modal-overlay.svelte-s3o8c3.svelte-s3o8c3{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-s3o8c3.svelte-s3o8c3{background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);border-radius:10px;padding:1.5rem;max-width:420px;width:90%}.modal.svelte-s3o8c3 h3.svelte-s3o8c3{margin:0 0 .75rem}.modal-actions.svelte-s3o8c3.svelte-s3o8c3{display:flex;gap:.5rem;justify-content:flex-end}.settings-sidebar.svelte-8ag2z0{width:200px;min-width:200px;border-right:1px solid var(--border, #2a2a3e);padding:.75rem 0;overflow-y:auto;background:var(--surface, #1e1e2e)}.settings-nav-item.svelte-8ag2z0{display:flex;align-items:center;gap:.5rem;width:100%;padding:.55rem 1rem;border:none;background:transparent;color:var(--text-dim, #888);font-size:.9rem;cursor:pointer;text-align:left;transition:background .15s,color .15s;font-family:inherit}.settings-nav-item.svelte-8ag2z0:hover:not(.disabled){background:var(--surface-alt, #252538);color:var(--text, #e0e0e0)}.settings-nav-item.active.svelte-8ag2z0{background:var(--accent-bg, rgba(99, 102, 241, .15));color:var(--accent, #818cf8);font-weight:600;position:relative}.settings-nav-item.active.svelte-8ag2z0:before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:3px;background:var(--accent, #818cf8);border-radius:0 2px 2px 0}.settings-nav-item.disabled.svelte-8ag2z0{opacity:.4;cursor:default}.settings-nav-icon.svelte-8ag2z0{width:1.4rem;height:1rem;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.settings-nav-label.svelte-8ag2z0{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-section.svelte-1e2uhdh.svelte-1e2uhdh{padding:1.5rem;max-width:560px}.settings-section.svelte-1e2uhdh h2.svelte-1e2uhdh{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-1e2uhdh.svelte-1e2uhdh{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.settings-card.svelte-1e2uhdh.svelte-1e2uhdh{background:var(--surface-alt, #1e1e30);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.card-title.svelte-1e2uhdh.svelte-1e2uhdh{font-size:.9rem;font-weight:600;color:var(--text, #e0e0e0);margin:0 0 .75rem}.form-group.svelte-1e2uhdh.svelte-1e2uhdh{margin-bottom:0}.label-text.svelte-1e2uhdh.svelte-1e2uhdh{display:block;font-size:.85rem;color:var(--text-dim, #888);margin-bottom:.3rem}.settings-actions.svelte-1e2uhdh.svelte-1e2uhdh{display:flex;align-items:center;gap:.75rem;margin-top:1rem}.save-notice.svelte-1e2uhdh.svelte-1e2uhdh{padding:.4rem .75rem;background:#34d3991a;border:1px solid rgba(52,211,153,.3);border-radius:6px;color:#34d399;font-size:.85rem}.settings-section.svelte-1zbky3.svelte-1zbky3{padding:1.5rem;max-width:600px}.settings-section.svelte-1zbky3 h2.svelte-1zbky3{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-1zbky3.svelte-1zbky3{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.settings-card.svelte-1zbky3.svelte-1zbky3{background:var(--surface-alt, #1e1e30);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.notice.svelte-1zbky3.svelte-1zbky3{padding:.5rem .75rem;margin-bottom:.75rem;background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:6px;color:#ff6b6b;font-size:.85rem}.info-row.svelte-1zbky3.svelte-1zbky3{display:flex;padding:.4rem 0;border-bottom:1px solid var(--border, #2a2a3e);font-size:.9rem}.info-row.svelte-1zbky3.svelte-1zbky3:last-child{border-bottom:none}.info-label.svelte-1zbky3.svelte-1zbky3{width:120px;min-width:120px;color:var(--text-dim, #888)}.info-value.svelte-1zbky3.svelte-1zbky3{color:var(--text, #e0e0e0);word-break:break-all}.info-value.mono.svelte-1zbky3.svelte-1zbky3{font-family:monospace;font-size:.85rem}.info-value.small.svelte-1zbky3.svelte-1zbky3{font-size:.8rem}.workspace-actions.svelte-1zbky3.svelte-1zbky3{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.btn.svelte-1zbky3.svelte-1zbky3{padding:.45rem .8rem;border:1px solid var(--border, #2a2a3e);border-radius:6px;background:var(--surface-light, #232338);color:var(--text, #e0e0e0);font-size:.85rem;cursor:pointer}.btn.svelte-1zbky3.svelte-1zbky3:hover{background:var(--accent, #4a7c59);border-color:var(--accent, #4a7c59)}.no-data.svelte-1zbky3.svelte-1zbky3{color:var(--text-dim, #888);font-style:italic;margin:0}.settings-section.svelte-ksamnw.svelte-ksamnw{padding:1.5rem;max-width:560px}.settings-section.svelte-ksamnw h2.svelte-ksamnw{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-ksamnw.svelte-ksamnw{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.loading.svelte-ksamnw.svelte-ksamnw,.no-data.svelte-ksamnw.svelte-ksamnw{color:var(--text-dim, #888);font-style:italic}.template-list.svelte-ksamnw.svelte-ksamnw{display:flex;flex-direction:column;gap:.5rem}.template-item.svelte-ksamnw.svelte-ksamnw{display:flex;align-items:center;justify-content:space-between;padding:.6rem .75rem;background:var(--surface-alt, #252538);border-radius:6px;border:1px solid var(--border, #2a2a3e)}.template-info.svelte-ksamnw.svelte-ksamnw{display:flex;align-items:center;gap:.5rem}.template-name.svelte-ksamnw.svelte-ksamnw{color:var(--text, #e0e0e0);font-size:.9rem}.template-type.svelte-ksamnw.svelte-ksamnw{color:var(--text-dim, #888);font-size:.8rem}.toggle-label.svelte-ksamnw.svelte-ksamnw{display:flex;align-items:center;gap:.4rem;cursor:pointer}.toggle-text.svelte-ksamnw.svelte-ksamnw{font-size:.8rem;color:var(--text-dim, #888)}input[type=checkbox].svelte-ksamnw.svelte-ksamnw{accent-color:var(--accent, #818cf8)}.settings-plugins.svelte-i9gngw.svelte-i9gngw{padding:1.5rem}h3.svelte-i9gngw.svelte-i9gngw{margin:0 0 .25rem;font-size:1.1rem;color:var(--text, #e0e0e0)}.hint.svelte-i9gngw.svelte-i9gngw{margin:0 0 1rem;font-size:.85rem;color:var(--text-dim, #888)}.loading.svelte-i9gngw.svelte-i9gngw{color:var(--text-dim, #888)}.error.svelte-i9gngw.svelte-i9gngw{color:#f87171;background:#f871711a;padding:.5rem .75rem;border-radius:6px}.empty-state.svelte-i9gngw.svelte-i9gngw{text-align:center;padding:3rem 1rem;color:var(--text-dim, #888)}.empty-state.svelte-i9gngw code.svelte-i9gngw{background:var(--surface-alt, #252538);padding:.15rem .4rem;border-radius:3px;font-size:.85rem}.plugin-list.svelte-i9gngw.svelte-i9gngw{display:flex;flex-direction:column;gap:.5rem}.plugin-card.svelte-i9gngw.svelte-i9gngw{display:flex;align-items:center;justify-content:space-between;background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:.75rem 1rem;gap:1rem}.plugin-info.svelte-i9gngw.svelte-i9gngw{flex:1;min-width:0}.plugin-name.svelte-i9gngw.svelte-i9gngw{font-weight:600;color:var(--text, #e0e0e0);display:flex;align-items:center;gap:.5rem}.plugin-version.svelte-i9gngw.svelte-i9gngw{font-size:.75rem;color:var(--text-dim, #888);font-weight:400}.plugin-desc.svelte-i9gngw.svelte-i9gngw{font-size:.85rem;color:var(--text-dim, #aaa);margin-top:.15rem}.plugin-meta.svelte-i9gngw.svelte-i9gngw{display:flex;flex-wrap:wrap;gap:.25rem .75rem;margin-top:.25rem;font-size:.75rem;color:var(--text-dim, #888)}.plugin-toggle.svelte-i9gngw.svelte-i9gngw{flex-shrink:0}.toggle-btn.svelte-i9gngw.svelte-i9gngw{position:relative;width:44px;height:24px;background:var(--surface-alt, #333);border-radius:12px;border:1px solid var(--border, #444);cursor:pointer;padding:0;transition:background .2s}.toggle-btn.active.svelte-i9gngw.svelte-i9gngw{background:#6366f1;border-color:#6366f1}.toggle-knob.svelte-i9gngw.svelte-i9gngw{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;transition:left .2s;box-shadow:0 1px 3px #0000004d}.toggle-btn.active.svelte-i9gngw .toggle-knob.svelte-i9gngw{left:22px}.toggle-group.svelte-i9gngw.svelte-i9gngw{display:flex;align-items:center;gap:6px}.install-btn.svelte-i9gngw.svelte-i9gngw{padding:6px 14px;background:#6366f1;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:13px;white-space:nowrap}.install-btn.svelte-i9gngw.svelte-i9gngw:hover{filter:brightness(1.15)}.uninstall-btn.svelte-i9gngw.svelte-i9gngw{width:28px;height:28px;background:var(--surface, #1a1a2e);color:#ef4444;border:1px solid rgba(239,68,68,.3);border-radius:6px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;opacity:.6;transition:all .15s}.uninstall-btn.svelte-i9gngw.svelte-i9gngw:hover{opacity:1;background:#ef44441a}.settings-section.svelte-1fx1e1e.svelte-1fx1e1e{padding:1.5rem;max-width:600px}.settings-section.svelte-1fx1e1e h2.svelte-1fx1e1e{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-1fx1e1e.svelte-1fx1e1e{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.settings-card.svelte-1fx1e1e.svelte-1fx1e1e{background:var(--surface-alt, #1e1e30);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.info-row.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;padding:.4rem 0;border-bottom:1px solid var(--border, #2a2a3e);font-size:.9rem}.info-row.svelte-1fx1e1e.svelte-1fx1e1e:last-child{border-bottom:none}.info-label.svelte-1fx1e1e.svelte-1fx1e1e{width:180px;min-width:180px;color:var(--text-dim, #888)}.info-value.svelte-1fx1e1e.svelte-1fx1e1e{color:var(--text, #e0e0e0);word-break:break-all}.info-value.mono.svelte-1fx1e1e.svelte-1fx1e1e{font-family:monospace;font-size:.85rem}.info-value.error.svelte-1fx1e1e.svelte-1fx1e1e{color:#ff6b6b}.status-ok.svelte-1fx1e1e.svelte-1fx1e1e{color:#34d399;font-weight:600}.status-err.svelte-1fx1e1e.svelte-1fx1e1e{color:#ff6b6b}.sync-actions.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.sync-interval.svelte-1fx1e1e.svelte-1fx1e1e{margin-bottom:0}.interval-row.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;gap:.5rem;align-items:center}.interval-row.svelte-1fx1e1e input.svelte-1fx1e1e{width:100px}.sync-setup.svelte-1fx1e1e .form-group.svelte-1fx1e1e{margin-bottom:1rem}.sync-setup.svelte-1fx1e1e .form-group.svelte-1fx1e1e:last-of-type{margin-bottom:0}.sync-setup-actions.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;gap:.5rem;margin-top:1rem}.connection-result.svelte-1fx1e1e.svelte-1fx1e1e{margin-top:.75rem;padding:.4rem .75rem;border-radius:6px;font-size:.85rem}.connection-result.ok.svelte-1fx1e1e.svelte-1fx1e1e{background:#34d3991a;border:1px solid rgba(52,211,153,.3);color:#34d399}.connection-result.fail.svelte-1fx1e1e.svelte-1fx1e1e{background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);color:#ff6b6b}.error-msg.svelte-1fx1e1e.svelte-1fx1e1e{padding:.5rem .75rem;margin-bottom:.75rem;background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:6px;color:#ff6b6b;font-size:.85rem}.result-msg.svelte-1fx1e1e.svelte-1fx1e1e{padding:.5rem .75rem;margin-bottom:.75rem;background:#34d3991a;border:1px solid rgba(52,211,153,.3);border-radius:6px;color:#34d399;font-size:.85rem}.result-msg.warning.svelte-1fx1e1e.svelte-1fx1e1e{background:#f59e0b1a;border-color:#f59e0b4d;color:#f59e0b}.modal-overlay.svelte-1fx1e1e.svelte-1fx1e1e{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;border:none;padding:0;cursor:pointer;width:100%;color:inherit;font:inherit}.modal.svelte-1fx1e1e.svelte-1fx1e1e{background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);border-radius:10px;padding:1.5rem;max-width:420px;width:90%;cursor:default}.modal.svelte-1fx1e1e h3.svelte-1fx1e1e{margin:0 0 .75rem}.modal-desc.svelte-1fx1e1e.svelte-1fx1e1e{color:var(--text-dim, #888);font-size:.9rem;line-height:1.5;margin-bottom:1rem}.modal-actions.svelte-1fx1e1e.svelte-1fx1e1e{display:flex;gap:.5rem;justify-content:flex-end}.settings-section.svelte-19bo7bn.svelte-19bo7bn{padding:1.5rem;max-width:500px}.settings-section.svelte-19bo7bn h2.svelte-19bo7bn{margin:0 0 .5rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-19bo7bn.svelte-19bo7bn{color:var(--text-dim, #888);font-size:.85rem}.settings-section.svelte-13i6m7m.svelte-13i6m7m{padding:1.5rem;max-width:600px}.settings-section.svelte-13i6m7m h2.svelte-13i6m7m{margin:0 0 .25rem;font-size:1.2rem;color:var(--text, #e0e0e0)}.section-desc.svelte-13i6m7m.svelte-13i6m7m{color:var(--text-dim, #888);font-size:.85rem;margin-bottom:1.25rem;line-height:1.4}.settings-card.svelte-13i6m7m.svelte-13i6m7m{background:var(--surface-alt, #1e1e30);border:1px solid var(--border, #2a2a3e);border-radius:8px;padding:1rem 1.25rem;margin-bottom:1rem}.form-group.svelte-13i6m7m.svelte-13i6m7m{margin-bottom:1rem}.form-group.svelte-13i6m7m.svelte-13i6m7m:last-child{margin-bottom:0}.label-text.svelte-13i6m7m.svelte-13i6m7m{display:block;color:var(--text-dim, #888);font-size:.85rem;margin-bottom:.35rem}input[type=number].svelte-13i6m7m.svelte-13i6m7m{width:120px;padding:.4rem .6rem;background:var(--bg, #13131f);border:1px solid var(--border, #2a2a3e);border-radius:6px;color:var(--text, #e0e0e0);font-size:.9rem}input[type=number].svelte-13i6m7m.svelte-13i6m7m:disabled{opacity:.5}.field-hint.svelte-13i6m7m.svelte-13i6m7m{color:var(--text-dim, #666);font-size:.75rem;margin-top:.35rem}.toggle-label.svelte-13i6m7m.svelte-13i6m7m{display:flex;align-items:center;gap:.5rem;cursor:pointer}.toggle-text.svelte-13i6m7m.svelte-13i6m7m{color:var(--text, #e0e0e0);font-size:.9rem}.bridge-status.svelte-13i6m7m.svelte-13i6m7m{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border, #2a2a3e)}.info-row.svelte-13i6m7m.svelte-13i6m7m{display:flex;padding:.3rem 0;font-size:.85rem}.info-label.svelte-13i6m7m.svelte-13i6m7m{width:140px;min-width:140px;color:var(--text-dim, #888)}.info-value.svelte-13i6m7m.svelte-13i6m7m{color:var(--text, #e0e0e0)}.info-value.mono.svelte-13i6m7m.svelte-13i6m7m{font-family:monospace;font-size:.85rem}.status-ok.svelte-13i6m7m.svelte-13i6m7m{color:#34d399;font-weight:600}.status-off.svelte-13i6m7m.svelte-13i6m7m{color:#888}.actions.svelte-13i6m7m.svelte-13i6m7m{display:flex;gap:.5rem;flex-wrap:wrap}.status-msg.svelte-13i6m7m.svelte-13i6m7m{padding:.5rem .75rem;margin-bottom:.75rem;border-radius:6px;font-size:.85rem}.status-msg.ok.svelte-13i6m7m.svelte-13i6m7m{background:#34d3991a;border:1px solid rgba(52,211,153,.3);color:#34d399}.status-msg.error.svelte-13i6m7m.svelte-13i6m7m{background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);color:#ff6b6b}.settings-overlay.svelte-zf2zsc.svelte-zf2zsc{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:900;border:none;padding:0;cursor:pointer;width:100%;color:inherit;font:inherit}.settings-window.svelte-zf2zsc.svelte-zf2zsc{display:flex;flex-direction:column;width:800px;max-width:90vw;height:600px;max-height:85vh;background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);border-radius:12px;overflow:hidden;box-shadow:0 8px 32px #0006}.settings-header.svelte-zf2zsc.svelte-zf2zsc{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border, #2a2a3e);flex-shrink:0}.settings-header.svelte-zf2zsc h2.svelte-zf2zsc{margin:0;font-size:1.1rem;color:var(--text, #e0e0e0)}.close-btn.svelte-zf2zsc.svelte-zf2zsc{background:transparent;border:none;color:var(--text-dim, #888);cursor:pointer;padding:.25rem;border-radius:4px;display:flex;align-items:center}.close-btn.svelte-zf2zsc.svelte-zf2zsc:hover{color:var(--text, #e0e0e0);background:var(--surface-alt, #252538)}.settings-body.svelte-zf2zsc.svelte-zf2zsc{display:flex;flex:1;overflow:hidden}.settings-content.svelte-zf2zsc.svelte-zf2zsc{flex:1;overflow-y:auto;background:var(--bg, #13131f)}.sync-status-widget.svelte-1rxbx0{font-size:.8rem;padding:.4rem .5rem}.sync-status-row.svelte-1rxbx0{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.sync-dot.svelte-1rxbx0{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot-connected.svelte-1rxbx0{background:#34d399;box-shadow:0 0 4px #34d39966}.dot-warning.svelte-1rxbx0{background:#f59e0b}.dot-disabled.svelte-1rxbx0{background:#555}.dot-syncing.svelte-1rxbx0{background:#818cf8;animation:svelte-1rxbx0-pulse 1s infinite}@keyframes svelte-1rxbx0-pulse{0%,to{opacity:1}50%{opacity:.4}}.sync-label.svelte-1rxbx0{color:var(--text-dim, #888);white-space:nowrap}.sync-count.svelte-1rxbx0{color:var(--accent, #818cf8);font-weight:600}.sync-actions-row.svelte-1rxbx0{display:flex;gap:.3rem;margin-left:auto}.sync-message.svelte-1rxbx0{margin-top:.25rem;color:var(--text-dim, #888);line-height:1.25}.sync-message-warning.svelte-1rxbx0{color:#f59e0b}.btn-xs.svelte-1rxbx0{padding:.2rem .5rem;font-size:.75rem;border:1px solid var(--border, #2a2a3e);background:var(--surface-alt, #252538);color:var(--text-dim, #888);border-radius:4px;cursor:pointer;white-space:nowrap}.btn-xs.svelte-1rxbx0:hover{background:var(--border, #2a2a3e);color:var(--text, #e0e0e0)}.btn-xs.svelte-1rxbx0:disabled{opacity:.5;cursor:default}.btn-link.svelte-1rxbx0{border:none;background:transparent;color:var(--accent, #818cf8);text-decoration:underline}.btn-link.svelte-1rxbx0:hover{color:#a5b4fc;background:transparent}.browser-events.svelte-slao4o.svelte-slao4o{padding:8px 0}.browser-header.svelte-slao4o.svelte-slao4o{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:0 4px}.browser-header.svelte-slao4o h3.svelte-slao4o{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim, #8892b0);margin:0}.refresh-btn.svelte-slao4o.svelte-slao4o{background:var(--surface2, #1e2d50);border:none;border-radius:4px;padding:4px 8px;cursor:pointer;font-size:12px;transition:background .2s}.refresh-btn.svelte-slao4o.svelte-slao4o:hover{background:var(--surface, #16213e)}.empty-state.svelte-slao4o.svelte-slao4o{padding:24px;text-align:center}.empty-text.svelte-slao4o.svelte-slao4o,.loading.svelte-slao4o.svelte-slao4o{color:var(--text-dim, #8892b0);font-style:italic;font-size:12px}.event-list.svelte-slao4o.svelte-slao4o{display:flex;flex-direction:column;gap:4px}.event-item.svelte-slao4o.svelte-slao4o{display:flex;gap:8px;padding:6px 8px;background:var(--surface, #16213e);border-radius:6px;transition:background .15s}.event-item.pending.svelte-slao4o.svelte-slao4o{border-left:2px solid var(--accent, #0f9b8e)}.event-icon.svelte-slao4o.svelte-slao4o{font-size:16px;line-height:1.4;min-width:20px;text-align:center}.event-body.svelte-slao4o.svelte-slao4o{flex:1;min-width:0}.event-domain.svelte-slao4o.svelte-slao4o{font-size:11px;color:var(--accent, #0f9b8e);font-weight:500}.event-title.svelte-slao4o.svelte-slao4o{font-size:12px;color:var(--text, #e0e0e0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-meta.svelte-slao4o.svelte-slao4o{display:flex;gap:8px;margin-top:2px}.duration.svelte-slao4o.svelte-slao4o,.time.svelte-slao4o.svelte-slao4o{font-size:10px;color:var(--text-dim, #8892b0)}.status-badge.svelte-slao4o.svelte-slao4o{font-size:9px;padding:1px 4px;border-radius:3px;text-transform:uppercase}.status-accepted.svelte-slao4o.svelte-slao4o{background:#2ecc7133;color:#2ecc71}.status-dismissed.svelte-slao4o.svelte-slao4o{background:#e74c3c33;color:#e74c3c}.status-attached.svelte-slao4o.svelte-slao4o{background:#3498db33;color:#3498db}.event-text.svelte-slao4o.svelte-slao4o{font-size:11px;color:var(--text-dim, #8892b0);font-style:italic;margin-top:2px;padding:2px 6px;background:#ffffff08;border-radius:3px}.event-actions.svelte-slao4o.svelte-slao4o{display:flex;gap:2px;align-items:flex-start}.event-actions.svelte-slao4o button.svelte-slao4o{background:none;border:1px solid var(--surface2, #1e2d50);border-radius:4px;width:24px;height:24px;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s}.btn-accept.svelte-slao4o.svelte-slao4o:hover{background:#2ecc7133;border-color:#2ecc71}.btn-attach.svelte-slao4o.svelte-slao4o:hover{background:#3498db33;border-color:#3498db}.btn-dismiss.svelte-slao4o.svelte-slao4o:hover{background:#e74c3c33;border-color:#e74c3c}.today-screen.svelte-ii7vwz.svelte-ii7vwz{padding:24px;overflow-y:auto;flex:1}.today-header.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:baseline;gap:12px;margin-bottom:16px;min-height:20px}.today-date.svelte-ii7vwz.svelte-ii7vwz{font-size:13px;color:#666}.today-tabs.svelte-ii7vwz.svelte-ii7vwz{display:flex;gap:0;border-bottom:1px solid #2a2a3c;margin-bottom:16px}.today-tab.svelte-ii7vwz.svelte-ii7vwz{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;position:relative}.today-tab.svelte-ii7vwz.svelte-ii7vwz:hover{color:#a5b4fc}.today-tab.active.svelte-ii7vwz.svelte-ii7vwz{color:#e4e4ef;border-bottom-color:#818cf8;background:#6366f11f;font-weight:600}.tab-badge.svelte-ii7vwz.svelte-ii7vwz{background:#6366f1;color:#fff;font-size:10px;font-weight:700;border-radius:10px;padding:1px 6px;margin-left:6px;line-height:1.4;vertical-align:middle}.today-tab-content.svelte-ii7vwz.svelte-ii7vwz{flex:1}.today-empty.svelte-ii7vwz.svelte-ii7vwz{padding:48px 24px;text-align:center}.today-empty.svelte-ii7vwz p.svelte-ii7vwz{color:#666;font-size:14px;margin:0}.today-empty.svelte-ii7vwz .hint.svelte-ii7vwz{font-size:12px;color:#555;margin-top:8px}.tab-controls.svelte-ii7vwz.svelte-ii7vwz{margin-bottom:12px}.sort-controls.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:6px}.sort-btn.svelte-ii7vwz.svelte-ii7vwz{padding:4px 10px;border:1px solid #2a2a3c;background:#13131f;color:#888;border-radius:4px;font-size:12px;cursor:pointer;font-family:inherit}.sort-btn.svelte-ii7vwz.svelte-ii7vwz:hover{border-color:#3a3a5c;color:#ccc}.sort-btn.active.svelte-ii7vwz.svelte-ii7vwz{border-color:#6366f1;color:#a5b4fc;background:#6366f114}.sort-dir.svelte-ii7vwz.svelte-ii7vwz{font-size:12px;color:#8888a0;margin-left:4px}.feed-list.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;gap:2px}.feed-item.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer}.feed-item.svelte-ii7vwz.svelte-ii7vwz:hover{background:#1a1a28}.feed-icon.svelte-ii7vwz.svelte-ii7vwz{width:20px;text-align:center;color:#6366f1;font-size:14px;flex-shrink:0;margin-top:2px}.feed-body.svelte-ii7vwz.svelte-ii7vwz{flex:1;min-width:0}.feed-title-line.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap}.feed-type.svelte-ii7vwz.svelte-ii7vwz{font-size:13px;color:#8888a0}.feed-colon.svelte-ii7vwz.svelte-ii7vwz{color:#555}.feed-title.svelte-ii7vwz.svelte-ii7vwz{font-size:14px;color:#e4e4ef;font-weight:500}.feed-title.svelte-ii7vwz.svelte-ii7vwz:hover{text-decoration:underline}.feed-meta-line.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:8px;margin-top:2px}.feed-path.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#8ea0d8;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-event-type.svelte-ii7vwz.svelte-ii7vwz{font-size:10px;color:#a5b4fc;background:#6366f11a;padding:2px 8px;border-radius:8px;font-weight:500}.feed-time.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#555;margin-left:auto;flex-shrink:0}.feed-nav-btn.svelte-ii7vwz.svelte-ii7vwz{background:none;border:none;color:#555;cursor:pointer;padding:4px;border-radius:4px;flex-shrink:0;margin-top:2px}.feed-nav-btn.svelte-ii7vwz.svelte-ii7vwz:hover{color:#a5b4fc;background:#1e1e30}.link-btn.svelte-ii7vwz.svelte-ii7vwz{background:none;border:none;padding:0;color:#a5b4fc;font:inherit;cursor:pointer;text-align:left}.link-btn.svelte-ii7vwz.svelte-ii7vwz:hover{text-decoration:underline}.suggestions-list.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;gap:6px}.suggestion-card.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;align-items:stretch;padding:0;background:#1e1e32;border-radius:6px;margin-bottom:6px;gap:0;border:1px solid transparent}.suggestion-card.svelte-ii7vwz.svelte-ii7vwz:last-child{margin-bottom:0}.suggestion-card.expanded.svelte-ii7vwz.svelte-ii7vwz{border-color:#3a3a5c}.suggestion-main.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;cursor:pointer;gap:10px;min-height:38px}.suggestion-info.svelte-ii7vwz.svelte-ii7vwz{flex:1;display:flex;flex-direction:column;gap:2px}.suggestion-node.svelte-ii7vwz.svelte-ii7vwz{color:#a5b4fc;font-weight:600;font-size:13px;text-decoration:none;cursor:pointer}.suggestion-node.svelte-ii7vwz.svelte-ii7vwz:hover{text-decoration:underline}.suggestion-summary.svelte-ii7vwz.svelte-ii7vwz{font-size:14px;color:#e4e4ef}.suggestion-meta.svelte-ii7vwz.svelte-ii7vwz{font-size:12px;color:#8888a0;margin-top:2px}.suggestion-actions.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:6px;flex-shrink:0}.suggestion-min-input.svelte-ii7vwz.svelte-ii7vwz{width:54px;padding:3px 7px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:13px;text-align:center}.suggestion-min-label.svelte-ii7vwz.svelte-ii7vwz{font-size:12px;color:#8888a0}.suggestion-confidence-dot.svelte-ii7vwz.svelte-ii7vwz{width:9px;height:9px;border-radius:999px;background:#77798a;box-shadow:0 0 0 3px #77798a1f;flex:0 0 auto}.suggestion-confidence-dot.low.svelte-ii7vwz.svelte-ii7vwz{background:#ef4444;box-shadow:0 0 0 3px #ef44441f}.suggestion-confidence-dot.medium.svelte-ii7vwz.svelte-ii7vwz{background:#fbbf24;box-shadow:0 0 0 3px #fbbf241f}.suggestion-confidence-dot.high.svelte-ii7vwz.svelte-ii7vwz{background:#34d399;box-shadow:0 0 0 3px #34d3991f}.suggestion-detail.svelte-ii7vwz.svelte-ii7vwz{width:100%;padding:6px 10px 8px;border-top:1px solid #2a2a3c}.suggestion-detail-title.svelte-ii7vwz.svelte-ii7vwz{font-size:10px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;padding:4px 0}.suggestion-detail-event.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:7px;padding:2px 0;font-size:12px;color:#b0b0c0}.suggestion-event-time.svelte-ii7vwz.svelte-ii7vwz{color:#a0a0b8;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:48px}.suggestion-event-type.svelte-ii7vwz.svelte-ii7vwz{color:#8888a0;font-size:11px;background:#1a1a2e;padding:1px 6px;border-radius:3px}.suggestion-event-title.svelte-ii7vwz.svelte-ii7vwz{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-event-path.svelte-ii7vwz.svelte-ii7vwz{max-width:220px;color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn.svelte-ii7vwz.svelte-ii7vwz{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.btn.svelte-ii7vwz.svelte-ii7vwz:hover{background:#223}.btn-primary.svelte-ii7vwz.svelte-ii7vwz{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-ii7vwz.svelte-ii7vwz:hover{background:#4f46e5}.btn-sm.svelte-ii7vwz.svelte-ii7vwz{padding:4px 10px;font-size:12px}.btn-danger.svelte-ii7vwz.svelte-ii7vwz{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-ii7vwz.svelte-ii7vwz:hover{background:#3a2222}.ip-list.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;gap:2px}.ip-item.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer}.ip-item.svelte-ii7vwz.svelte-ii7vwz:hover{background:#1a1a28}.ip-icon.svelte-ii7vwz.svelte-ii7vwz{width:20px;text-align:center;color:#6366f1;font-size:13px;flex-shrink:0}.ip-body.svelte-ii7vwz.svelte-ii7vwz{flex:1;min-width:0}.ip-title.svelte-ii7vwz.svelte-ii7vwz{font-size:14px;color:#e4e4ef;display:block}.ip-path.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#8ea0d8;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.ip-type.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#666;flex-shrink:0}.ip-time.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#555;flex-shrink:0;margin-left:8px}.capture-list.svelte-ii7vwz.svelte-ii7vwz{display:flex;flex-direction:column;gap:6px}.capture-item.svelte-ii7vwz.svelte-ii7vwz{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #2a2a3c;border-radius:8px;background:#1a1a28;cursor:pointer}.capture-item.svelte-ii7vwz.svelte-ii7vwz:hover{border-color:#3a3a5c;background:#1e1e32}.capture-icon.svelte-ii7vwz.svelte-ii7vwz{font-size:18px;width:28px;text-align:center;flex-shrink:0}.capture-body.svelte-ii7vwz.svelte-ii7vwz{flex:1;min-width:0}.capture-title.svelte-ii7vwz.svelte-ii7vwz{font-size:14px;color:#e4e4ef;font-weight:500;display:block}.capture-meta.svelte-ii7vwz.svelte-ii7vwz{font-size:12px;color:#8888a0;display:block;margin-top:2px}.capture-time.svelte-ii7vwz.svelte-ii7vwz{font-size:11px;color:#555;flex-shrink:0}.plugin-page.svelte-xgfxht.svelte-xgfxht{padding:1.5rem;height:100%;display:flex;flex-direction:column}.loading.svelte-xgfxht.svelte-xgfxht{color:var(--text-dim, #888)}.empty-state.svelte-xgfxht.svelte-xgfxht{text-align:center;padding:3rem 1rem;color:var(--text-dim, #888)}.empty-state.svelte-xgfxht code.svelte-xgfxht{background:var(--surface-alt, #252538);padding:.15rem .4rem;border-radius:3px;font-size:.85rem}.plugin-frame-container.svelte-xgfxht.svelte-xgfxht{flex:1;display:flex;flex-direction:column;min-height:0}.plugin-error-bar.svelte-xgfxht.svelte-xgfxht{padding:.5rem 1rem;background:#f871711f;border:1px solid #f87171;border-bottom:none;border-radius:8px 8px 0 0;color:#f87171;font-size:.85rem;flex-shrink:0}.plugin-frame.svelte-xgfxht.svelte-xgfxht{flex:1;border:1px solid var(--border, #2a2a3e);border-radius:8px;background:#fff;width:100%;min-height:400px;display:block}.plugin-frame-container.svelte-xgfxht .plugin-frame.svelte-xgfxht{border-radius:0 0 8px 8px;border-top:none}.global-search.svelte-1dlr37h{position:relative;flex:1 1 360px;min-width:180px;max-width:520px}.global-search-input.svelte-1dlr37h{width:100%;height:32px;padding:0 12px;border:1px solid #2a2a3c;border-radius:6px;background:#10101a;color:#e4e4ef;font:inherit;font-size:13px}.global-search-input.svelte-1dlr37h:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 2px #6366f12e}.global-search-results.svelte-1dlr37h{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:160;max-height:min(360px,calc(100vh - 88px));overflow-y:auto;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;box-shadow:0 14px 36px #00000061;padding:4px}.global-search-result.svelte-1dlr37h{display:flex;flex-direction:column;gap:2px;width:100%;border:0;background:transparent;color:#e4e4ef;text-align:left;padding:8px 10px;border-radius:6px;cursor:pointer;font:inherit}.global-search-result.svelte-1dlr37h:hover,.global-search-result.selected.svelte-1dlr37h{background:#252545}.global-search-title.svelte-1dlr37h{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-search-meta.svelte-1dlr37h{font-size:11px;color:#a0a0bc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-search-snippet.svelte-1dlr37h{font-size:12px;color:#767690;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-search-empty.svelte-1dlr37h{padding:10px 12px;color:#8888a0;font-size:12px}.header.svelte-7x8q9h{padding:10px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:16px;flex-shrink:0;min-height:52px}.header-left.svelte-7x8q9h{display:flex;align-items:center;gap:8px;min-width:120px;flex:0 1 auto;overflow:hidden}.header-title.svelte-7x8q9h{font-size:15px;font-weight:600;color:#e4e4ef;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-title.placeholder.svelte-7x8q9h{color:#666;font-weight:500}.header-subtitle.svelte-7x8q9h{font-size:11px;color:#8888a0;background:#1e1e2e;padding:2px 8px;border-radius:10px;white-space:nowrap}.header-right.svelte-7x8q9h{flex:1;min-width:0;display:flex;align-items:center;justify-content:flex-end;gap:8px}@media (max-width: 760px){.header.svelte-7x8q9h{padding:8px 12px;gap:10px;align-items:flex-start;flex-wrap:wrap}.header-left.svelte-7x8q9h{flex:1 1 100%}.header-right.svelte-7x8q9h{flex:1 1 100%;justify-content:stretch}}.md-editor.svelte-1etjgc1{display:flex;flex-direction:column;flex:1;min-height:0;height:100%}.md-editor.mode-edit.svelte-1etjgc1{height:auto}.md-toolbar.svelte-1etjgc1{display:flex;align-items:center;gap:2px;padding:5px 10px;border-bottom:1px solid #2a2a3c;background:#16161f;flex-shrink:0;flex-wrap:wrap}.md-toolbar-group.svelte-1etjgc1{display:flex;align-items:center;gap:1px}.md-toolbar-sep.svelte-1etjgc1{width:1px;height:18px;background:#2a2a3c;margin:0 4px;flex-shrink:0}.md-toolbar-btn.svelte-1etjgc1{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:#999;cursor:pointer;transition:background .12s,color .12s;padding:0}.md-toolbar-btn.svelte-1etjgc1:hover{background:#2a2a3c;color:#e4e4ef}.md-toolbar-btn.svelte-1etjgc1:active{background:#333350}.md-toolbar-btn.svelte-1etjgc1:focus-visible{outline:2px solid #818cf8;outline-offset:1px}.md-toolbar-btn--internal.svelte-1etjgc1{color:#67e8f9}.md-toolbar-btn--internal.svelte-1etjgc1:hover{background:#67e8f91a;color:#a5f3fc}.md-btn-label.svelte-1etjgc1{font-size:13px;font-weight:700;font-family:SF Mono,Fira Code,monospace;line-height:1}.md-btn-bold.svelte-1etjgc1{font-weight:900}.md-btn-italic.svelte-1etjgc1{font-style:italic;font-family:Georgia,serif}.md-btn-sm.svelte-1etjgc1{font-size:10px}.md-btn-quote.svelte-1etjgc1{font-size:16px;font-family:Georgia,serif}.md-textarea.svelte-1etjgc1{flex:1;width:100%;min-height:0;border:none;outline:none;background:#13131f;color:#e4e4ef;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:14px;line-height:1.65;padding:16px 20px;resize:none;-moz-tab-size:2;tab-size:2;overflow-y:auto}.md-textarea.svelte-1etjgc1::placeholder{color:#444;font-style:italic}.markdown-body.svelte-jdvhib{color:#e4e4ef;font-size:15px;line-height:1.7;word-wrap:break-word;overflow-wrap:break-word;max-width:720px}.md-empty.svelte-jdvhib{color:#555;font-style:italic;padding:24px 0}.md-error.svelte-jdvhib{background:#3a2222;border:1px solid #5a2a2a;border-radius:8px;padding:16px;color:#f88}.md-error-detail.svelte-jdvhib{font-size:12px;color:#c66;margin-top:8px}.markdown-body h1{font-size:28px;font-weight:700;margin:32px 0 16px;padding-bottom:8px;border-bottom:1px solid #2a2a3c;color:#f0f0f8}.markdown-body h2{font-size:22px;font-weight:600;margin:28px 0 14px;padding-bottom:6px;border-bottom:1px solid #22223a;color:#e8e8f0}.markdown-body h3{font-size:18px;font-weight:600;margin:24px 0 12px;color:#ddd}.markdown-body h4{font-size:16px;font-weight:600;margin:20px 0 10px;color:#ccc}.markdown-body h5,.markdown-body h6{font-size:14px;font-weight:600;margin:16px 0 8px;color:#bbb}.markdown-body p{margin:12px 0}.markdown-body .md-link{color:#818cf8;text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s,color .15s;cursor:pointer}.markdown-body .md-link:hover{color:#a5b4fc;border-bottom-color:#818cf8}.markdown-body .md-link--internal{color:#67e8f9;font-weight:500}.markdown-body .md-link--internal:hover{color:#a5f3fc;border-bottom-color:#67e8f9}.markdown-body .md-link--blocked{color:#666;text-decoration:line-through;cursor:not-allowed}.markdown-body strong{font-weight:700;color:#f0f0f8}.markdown-body em{font-style:italic}.markdown-body del{text-decoration:line-through;color:#888}.markdown-body ul{padding-left:24px;margin:12px 0;list-style-type:disc}.markdown-body ol{padding-left:24px;margin:12px 0;list-style-type:decimal}.markdown-body li{margin:4px 0;line-height:1.6}.markdown-body li>ul,.markdown-body li>ol{margin:4px 0}.markdown-body .md-task-item{list-style:none;display:flex;align-items:flex-start;gap:8px;margin:4px 0}.markdown-body .md-task-checkbox{margin-top:3px;flex-shrink:0;accent-color:#818cf8}.markdown-body .md-task-text{flex:1}.markdown-body blockquote{margin:16px 0;padding:12px 16px;border-left:3px solid #818cf8;background:#818cf80f;border-radius:0 6px 6px 0;color:#bbb;font-style:italic}.markdown-body blockquote p{margin:4px 0}.markdown-body .md-code-inline{background:#1e1e38;color:#f59e0b;padding:2px 6px;border-radius:4px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:13px}.markdown-body .md-code-block{background:#0d1117;border:1px solid #21262d;border-radius:8px;padding:16px;margin:16px 0;overflow-x:auto;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:13px;line-height:1.55;color:#c9d1d9}.markdown-body .md-code-block code{background:none;padding:0;border-radius:0;font-size:inherit}.markdown-body .hljs{color:#c9d1d9}.markdown-body .hljs-comment{color:#8b949e}.markdown-body .hljs-keyword{color:#ff7b72}.markdown-body .hljs-string{color:#a5d6ff}.markdown-body .hljs-number{color:#79c0ff}.markdown-body .hljs-function{color:#d2a8ff}.markdown-body .hljs-class,.markdown-body .hljs-variable{color:#ffa657}.markdown-body .hljs-operator{color:#ff7b72}.markdown-body .hljs-punctuation{color:#c9d1d9}.markdown-body .hljs-tag{color:#7ee787}.markdown-body .hljs-attr{color:#79c0ff}.markdown-body .hljs-title{color:#d2a8ff}.markdown-body .hljs-built_in{color:#ffa657}.markdown-body .hljs-literal{color:#79c0ff}.markdown-body .hljs-type{color:#ffa657}.markdown-body .hljs-params{color:#c9d1d9}.markdown-body .hljs-property{color:#79c0ff}.markdown-body .hljs-regexp{color:#a5d6ff}.markdown-body .hljs-meta{color:#8b949e}.markdown-body .hljs-doctag{color:#ff7b72}.markdown-body .hljs-name{color:#7ee787}.markdown-body .hljs-section{color:#1f6feb;font-weight:700}.markdown-body .hljs-symbol{color:#79c0ff}.markdown-body .hljs-bullet{color:#f2cc60}.markdown-body .hljs-code{color:#c9d1d9}.markdown-body .hljs-emphasis{font-style:italic}.markdown-body .hljs-strong{font-weight:700}.markdown-body .hljs-addition{color:#aff5b4;background:#033a16}.markdown-body .hljs-deletion{color:#ffdcd7;background:#67060c}.markdown-body table{width:100%;border-collapse:collapse;margin:16px 0;font-size:14px}.markdown-body thead{background:#1a1a2e}.markdown-body th{padding:10px 14px;text-align:left;font-weight:600;color:#c4c4d4;border-bottom:2px solid #2a2a3c}.markdown-body td{padding:8px 14px;border-bottom:1px solid #1e1e30}.markdown-body tbody tr:hover{background:#818cf80a}.markdown-body hr{border:none;border-top:1px solid #2a2a3c;margin:24px 0}.markdown-body .md-image-blocked{display:inline-block;background:#1a1a2e;border:1px dashed #3a3a5c;border-radius:6px;padding:8px 14px;color:#666;font-size:13px;font-style:italic;margin:8px 0}.note-editor-panel.svelte-8tdyp9.svelte-8tdyp9{display:flex;flex-direction:column;flex:1;min-height:0;height:100%}.mode-switcher.svelte-8tdyp9.svelte-8tdyp9{display:flex;align-items:center;gap:2px;padding:5px 12px;border-bottom:1px solid #2a2a3c;background:#14141f;flex-shrink:0}.mode-btn.svelte-8tdyp9.svelte-8tdyp9{padding:4px 12px;border:1px solid transparent;border-radius:4px;background:transparent;color:#888;font-size:12px;font-family:inherit;cursor:pointer;transition:background .12s,color .12s,border-color .12s}.mode-btn.svelte-8tdyp9.svelte-8tdyp9:hover{color:#ccc;background:#1e1e30}.mode-btn.active.svelte-8tdyp9.svelte-8tdyp9{color:#e4e4ef;background:#22223a;border-color:#333350;font-weight:500}.mode-btn.svelte-8tdyp9.svelte-8tdyp9:focus-visible{outline:2px solid #818cf8;outline-offset:1px}.panel-content.svelte-8tdyp9.svelte-8tdyp9{flex:1;display:flex;min-height:0;overflow:hidden}.mode-preview.svelte-8tdyp9 .panel-content.svelte-8tdyp9{overflow-y:auto}.preview-pane.svelte-8tdyp9.svelte-8tdyp9{flex:1;padding:24px;overflow-y:auto}.split-pane.svelte-8tdyp9.svelte-8tdyp9{flex:1;display:flex;min-height:0;overflow:hidden}.split-editor.svelte-8tdyp9.svelte-8tdyp9{flex:1;display:flex;flex-direction:column;min-width:0;border-right:1px solid #2a2a3c;overflow:hidden}.split-preview.svelte-8tdyp9.svelte-8tdyp9{flex:1;min-width:0;overflow-y:auto;padding:20px 24px;background:#11111c}.svelte-5mstt.svelte-5mstt,.svelte-5mstt.svelte-5mstt:before,.svelte-5mstt.svelte-5mstt:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-5mstt.svelte-5mstt{display:flex;width:100vw;height:100vh;overflow:hidden;background:#13131f;color:#e4e4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}.capture-drop-overlay.svelte-5mstt.svelte-5mstt{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;pointer-events:none;display:flex;align-items:center;justify-content:center;background:#13131f6b;border:2px dashed #818cf8}.capture-drop-box.svelte-5mstt.svelte-5mstt{max-width:min(520px,calc(100vw - 48px));padding:14px 18px;border:1px solid #3a3a5c;border-radius:8px;background:#1a1a28;color:#e4e4ef;font-size:14px;font-weight:600;box-shadow:0 12px 32px #00000059;text-align:center}.sidebar.svelte-5mstt.svelte-5mstt{width:260px;min-width:200px;height:100vh;display:flex;flex-direction:column;background:#1a1a28;border-right:1px solid #2a2a3c;flex-shrink:0;overflow:hidden}.sidebar-brand.svelte-5mstt.svelte-5mstt{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-5mstt.svelte-5mstt{display:block;width:20px;height:20px;flex-shrink:0}.brand-name.svelte-5mstt.svelte-5mstt{font-size:16px;font-weight:600}.sidebar-nav.svelte-5mstt.svelte-5mstt{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-5mstt.svelte-5mstt{margin-bottom:16px}.nav-label.svelte-5mstt.svelte-5mstt{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-5mstt.svelte-5mstt{display:block;width:100%;padding:8px 20px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:0;font-family:inherit}.nav-item.svelte-5mstt.svelte-5mstt:hover{background:#223}.nav-item.selected.svelte-5mstt.svelte-5mstt{background:#2a2a4a;color:#fff;font-weight:500}.workspace-tree-area.svelte-5mstt.svelte-5mstt{min-height:32px}.workspace-tree-area.drop-valid.svelte-5mstt.svelte-5mstt{outline:2px dashed #4ade80;outline-offset:-2px;background:#4ade800d}.nav-empty.svelte-5mstt.svelte-5mstt{padding:8px 20px;color:#555;font-size:12px}.nav-label-row.svelte-5mstt.svelte-5mstt{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px;display:flex;align-items:center;justify-content:space-between}.nav-add-btn.svelte-5mstt.svelte-5mstt{background:none;border:none;color:#666;cursor:pointer;font-size:16px;padding:0 4px;font-family:inherit;line-height:1}.nav-add-btn.svelte-5mstt.svelte-5mstt:hover{color:#ccc}.context-menu-backdrop.svelte-5mstt.svelte-5mstt{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200}.context-menu.svelte-5mstt.svelte-5mstt{position:fixed;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:4px;min-width:180px;box-shadow:0 8px 24px #0006}.context-menu-section.svelte-5mstt.svelte-5mstt{padding:6px 12px;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666}.context-menu-item.svelte-5mstt.svelte-5mstt{display:flex;width:100%;padding:6px 12px;border:none;background:none;color:#ccc;font-size:13px;text-align:left;cursor:pointer;border-radius:4px;font-family:inherit;align-items:center;gap:6px}.context-menu-item.svelte-5mstt.svelte-5mstt:hover{background:#223;color:#fff}.context-menu-item.danger.svelte-5mstt.svelte-5mstt{color:#ff6b6b}.context-menu-item.danger.svelte-5mstt.svelte-5mstt:hover{background:#3a2222;color:#ff6b6b}.context-menu-divider.svelte-5mstt.svelte-5mstt{height:1px;background:#2a2a3c;margin:4px 0}.create-context.svelte-5mstt.svelte-5mstt{font-size:12px;color:#888;margin-bottom:12px}.sidebar-footer.svelte-5mstt.svelte-5mstt{padding:8px 12px;border-top:1px solid #2a2a3c;flex-shrink:0;display:flex;flex-direction:column;gap:4px}.sidebar-footer-row.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;justify-content:space-between}.version.svelte-5mstt.svelte-5mstt{font-size:11px;color:#555;text-align:center}.main.svelte-5mstt.svelte-5mstt{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header-actions.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.sidebar-settings-btn.svelte-5mstt.svelte-5mstt{background:transparent;border:none;border-radius:6px;padding:6px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#666;font-family:inherit;width:32px;height:32px}.sidebar-settings-btn.svelte-5mstt.svelte-5mstt:hover{background:#1e1e38;color:#a5b4fc}.sidebar-settings-btn.svelte-5mstt.svelte-5mstt:active{background:#252545;color:#818cf8}.error-banner.svelte-5mstt.svelte-5mstt{background:#3a2222;color:#f88;padding:8px 24px;font-size:12px;border-bottom:1px solid #4a2222;flex-shrink:0;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.dismiss-btn.svelte-5mstt.svelte-5mstt{background:none;border:none;color:#f66;cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:2px}.dismiss-btn.svelte-5mstt.svelte-5mstt:hover{color:#f44}.tabs.svelte-5mstt.svelte-5mstt{display:flex;align-items:stretch;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-5mstt.svelte-5mstt{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-5mstt.svelte-5mstt:hover{color:#a5b4fc}.tab.active.svelte-5mstt.svelte-5mstt{color:#e4e4ef;border-bottom-color:#818cf8;background:#6366f11f;font-weight:600}.tab-separator.svelte-5mstt.svelte-5mstt{width:1px;height:22px;margin:8px 10px 0;background:#2a2a3c;flex-shrink:0}.tab-content.svelte-5mstt.svelte-5mstt{flex:1;overflow-y:auto}.note-editor-header.svelte-5mstt.svelte-5mstt{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-5mstt.svelte-5mstt{font-size:16px;font-weight:500}.dirty-mark.svelte-5mstt.svelte-5mstt{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-5mstt.svelte-5mstt{margin-left:auto;display:flex;gap:8px}.note-rename-btn.svelte-5mstt.svelte-5mstt{opacity:0;margin-left:6px;color:#666}.note-editor-header.svelte-5mstt:hover .note-rename-btn.svelte-5mstt{opacity:1}.note-rename-btn.svelte-5mstt.svelte-5mstt:hover{color:#ccc}.note-rename-inline.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:8px;flex:1}.note-rename-input.svelte-5mstt.svelte-5mstt{flex:1;padding:6px 10px;border:1px solid #2a2a3c;border-radius:4px;background:#13131f;color:#e4e4ef;font-size:14px;font-family:inherit;outline:none}.note-rename-input.svelte-5mstt.svelte-5mstt:focus{border-color:#818cf8}.note-card.svelte-5mstt.svelte-5mstt{position:relative}.note-card-info.svelte-5mstt.svelte-5mstt{flex:1;min-width:0}.note-card-actions.svelte-5mstt.svelte-5mstt{display:flex;gap:4px;opacity:0;transition:opacity .12s}.note-card.svelte-5mstt:hover .note-card-actions.svelte-5mstt{opacity:1}.note-action-btn.svelte-5mstt.svelte-5mstt{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:4px;background:transparent;color:#666;cursor:pointer;transition:background .12s,color .12s}.note-action-btn.svelte-5mstt.svelte-5mstt:hover{background:#2a2a3c;color:#ccc}.note-action-danger.svelte-5mstt.svelte-5mstt:hover{background:#ef444426;color:#f87171}.form-group.svelte-5mstt.svelte-5mstt{margin-bottom:14px}.form-group.svelte-5mstt label.svelte-5mstt{display:block;font-size:12px;color:#888;margin-bottom:4px}.form-group.svelte-5mstt input.svelte-5mstt{width:100%;padding:8px 12px;border:1px solid #2a2a3c;border-radius:4px;background:#13131f;color:#e4e4ef;font-size:14px;font-family:inherit;outline:none;box-sizing:border-box}.form-group.svelte-5mstt input.svelte-5mstt:focus{border-color:#818cf8}.overview.svelte-5mstt.svelte-5mstt{padding:24px}.overview.svelte-5mstt h2.svelte-5mstt{font-size:24px;margin-bottom:16px}.meta-grid.svelte-5mstt.svelte-5mstt{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-5mstt.svelte-5mstt{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-5mstt.svelte-5mstt{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-5mstt.svelte-5mstt{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-5mstt.svelte-5mstt{padding:10px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.qa-btn.svelte-5mstt.svelte-5mstt:hover{background:#223}.qa-btn.svelte-5mstt.svelte-5mstt:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-5mstt.svelte-5mstt{margin-bottom:24px}.recent-section.svelte-5mstt h3.svelte-5mstt{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-5mstt.svelte-5mstt{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-5mstt.svelte-5mstt:hover{background:#1a1a28}.recent-date.svelte-5mstt.svelte-5mstt{font-size:11px;color:#555}.recent-entry.svelte-5mstt.svelte-5mstt{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-5mstt.svelte-5mstt{padding:24px}.tab-toolbar.svelte-5mstt.svelte-5mstt{margin-bottom:16px}.create-form.svelte-5mstt.svelte-5mstt{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-5mstt input.svelte-5mstt{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}.create-form.svelte-5mstt input.svelte-5mstt:focus{outline:none;border-color:#6366f1}.form-actions.svelte-5mstt.svelte-5mstt{display:flex;gap:8px}.notes-list.svelte-5mstt.svelte-5mstt{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-5mstt.svelte-5mstt{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-5mstt.svelte-5mstt:hover{border-color:#3a3a5c}.note-card-title.svelte-5mstt.svelte-5mstt{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-5mstt.svelte-5mstt{font-size:11px;color:#555}.worklog-tab.svelte-5mstt.svelte-5mstt{padding:24px}.worklog-toolbar.svelte-5mstt.svelte-5mstt{margin-bottom:16px}.worklog-entry.svelte-5mstt.svelte-5mstt{padding:12px 0;border-bottom:1px solid #1a1a28}.suggestions-title.svelte-5mstt.svelte-5mstt{font-size:13px;font-weight:600;color:#a5b4fc;margin-bottom:12px;text-transform:uppercase;letter-spacing:.5px}.suggestion-summary.svelte-5mstt.svelte-5mstt{font-size:14px;color:#e4e4ef}.suggestion-meta.svelte-5mstt.svelte-5mstt{font-size:12px;color:#8888a0;margin-top:2px}.suggestion-main.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;cursor:pointer;gap:10px;min-height:38px}.suggestion-card.expanded.svelte-5mstt.svelte-5mstt{border-color:#3a3a5c}.suggestion-detail.svelte-5mstt.svelte-5mstt{width:100%;padding:6px 10px 8px;border-top:1px solid #2a2a3c}.suggestion-detail-title.svelte-5mstt.svelte-5mstt{font-size:10px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;padding:4px 0}.suggestion-detail-event.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:7px;padding:2px 0;font-size:12px;color:#b0b0c0}.suggestion-event-time.svelte-5mstt.svelte-5mstt{color:#a0a0b8;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:48px}.suggestion-event-type.svelte-5mstt.svelte-5mstt{color:#8888a0;font-size:11px;background:#1a1a2e;padding:1px 6px;border-radius:3px}.suggestion-event-title.svelte-5mstt.svelte-5mstt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-event-path.svelte-5mstt.svelte-5mstt{max-width:220px;color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-card.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;align-items:stretch;padding:0;background:#1e1e32;border-radius:6px;margin-bottom:6px;gap:0;border:1px solid transparent}.suggestion-card.svelte-5mstt.svelte-5mstt:last-child{margin-bottom:0}.suggestion-info.svelte-5mstt.svelte-5mstt{flex:1;display:flex;flex-direction:column;gap:2px}.suggestion-node.svelte-5mstt.svelte-5mstt{color:#a5b4fc;font-weight:600;font-size:13px;text-decoration:none;cursor:pointer}.suggestion-node.svelte-5mstt.svelte-5mstt:hover{text-decoration:underline}.suggestion-actions.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:6px;flex-shrink:0}.suggestion-min-input.svelte-5mstt.svelte-5mstt{width:54px;padding:3px 7px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:13px;text-align:center}.suggestion-min-label.svelte-5mstt.svelte-5mstt{font-size:12px;color:#8888a0}.suggestion-confidence-dot.svelte-5mstt.svelte-5mstt{width:9px;height:9px;border-radius:999px;background:#77798a;box-shadow:0 0 0 3px #77798a1f;flex:0 0 auto}.suggestion-confidence-dot.low.svelte-5mstt.svelte-5mstt{background:#ef4444;box-shadow:0 0 0 3px #ef44441f}.suggestion-confidence-dot.medium.svelte-5mstt.svelte-5mstt{background:#fbbf24;box-shadow:0 0 0 3px #fbbf241f}.suggestion-confidence-dot.high.svelte-5mstt.svelte-5mstt{background:#34d399;box-shadow:0 0 0 3px #34d3991f}.inbox-screen.svelte-5mstt.svelte-5mstt{padding:24px;overflow-y:auto;flex:1}.inbox-screen.drop-valid.svelte-5mstt.svelte-5mstt{outline:2px dashed #4ade80;outline-offset:-4px;background:#4ade800a}.inbox-header.svelte-5mstt.svelte-5mstt{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.inbox-header.svelte-5mstt p.svelte-5mstt{margin:0;color:#a0a0b8;font-size:13px}.inbox-capture-status.svelte-5mstt.svelte-5mstt{color:#8ee6b1;font-size:12px}.inbox-list.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;gap:8px}.inbox-item.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #2a2a3c;border-radius:8px;background:#1a1a28;cursor:pointer}.inbox-item.svelte-5mstt.svelte-5mstt:hover{border-color:#3a3a5c;background:#1e1e32}.inbox-item-main.svelte-5mstt.svelte-5mstt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.inbox-item-title.svelte-5mstt.svelte-5mstt{color:#e4e4ef;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inbox-item-meta.svelte-5mstt.svelte-5mstt{color:#8888a0;font-size:12px}.inbox-item-actions.svelte-5mstt.svelte-5mstt{display:flex;gap:6px;flex-shrink:0;align-items:center}.inbox-icon-btn.svelte-5mstt.svelte-5mstt{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #2a2a3c;border-radius:6px;background:#13131f;color:#a0a0b8;cursor:pointer;transition:color .12s,border-color .12s,background .12s}.inbox-icon-slot.svelte-5mstt.svelte-5mstt{width:30px;height:30px;display:inline-block;flex:0 0 30px}.inbox-icon-btn.svelte-5mstt.svelte-5mstt:hover{color:#e4e4ef;border-color:#3a3a5c;background:#222238}.inbox-icon-btn-primary.svelte-5mstt.svelte-5mstt{color:#a5b4fc;border-color:#34346a}.inbox-icon-btn-primary.svelte-5mstt.svelte-5mstt:hover{color:#fff;border-color:#6366f1;background:#272750}.inbox-icon-btn-danger.svelte-5mstt.svelte-5mstt{color:#f87171;border-color:#4a252c}.inbox-icon-btn-danger.svelte-5mstt.svelte-5mstt:hover{color:#fff;border-color:#dc2626;background:#3a1f24}.inbox-tab.svelte-5mstt.svelte-5mstt{padding:24px}.inbox-controls.svelte-5mstt.svelte-5mstt{margin-bottom:12px}.inbox-sort-row.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.sort-btn.svelte-5mstt.svelte-5mstt{padding:4px 10px;border:1px solid #2a2a3c;background:#13131f;color:#888;border-radius:4px;font-size:12px;cursor:pointer;font-family:inherit}.sort-btn.svelte-5mstt.svelte-5mstt:hover{border-color:#3a3a5c;color:#ccc}.sort-btn.active.svelte-5mstt.svelte-5mstt{border-color:#6366f1;color:#a5b4fc;background:#6366f114}.sort-dir.svelte-5mstt.svelte-5mstt{font-size:12px;color:#8888a0;margin-left:2px}.inbox-controls-divider.svelte-5mstt.svelte-5mstt{width:1px;height:20px;background:#2a2a3c;margin:0 4px}.inbox-group.svelte-5mstt.svelte-5mstt{margin-bottom:16px}.inbox-group-header.svelte-5mstt.svelte-5mstt{font-size:12px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.5px;padding:8px 0 6px;margin-bottom:6px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:8px}.inbox-group-count.svelte-5mstt.svelte-5mstt{font-size:10px;color:#8888a0;background:#1e1e30;padding:1px 6px;border-radius:8px}.links-tab.svelte-5mstt.svelte-5mstt{padding:24px}.links-list.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;gap:8px}.link-card.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #2a2a3c;border-radius:8px;background:#1a1a28}.link-card.svelte-5mstt.svelte-5mstt:hover{border-color:#3a3a5c;background:#1e1e32}.link-main.svelte-5mstt.svelte-5mstt{flex:1;min-width:0;display:grid;grid-template-columns:minmax(160px,1fr) minmax(120px,220px) auto;gap:8px 12px;align-items:baseline}.link-title.svelte-5mstt.svelte-5mstt{color:#e4e4ef;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-url.svelte-5mstt.svelte-5mstt{color:#a5b4fc;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-date.svelte-5mstt.svelte-5mstt{color:#8888a0;font-size:12px;white-space:nowrap}.link-note.svelte-5mstt.svelte-5mstt{grid-column:1 / -1;color:#8888a0;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-actions.svelte-5mstt.svelte-5mstt{display:flex;gap:8px;flex-shrink:0}.link-status.svelte-5mstt.svelte-5mstt{margin-top:12px;color:#8ee6b1;font-size:12px}.trash-screen.svelte-5mstt.svelte-5mstt{padding:24px;overflow-y:auto;flex:1}.trash-header.svelte-5mstt.svelte-5mstt{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.trash-header.svelte-5mstt p.svelte-5mstt{margin:0;color:#8888a0;font-size:12px}.trash-browser.svelte-5mstt.svelte-5mstt{max-width:980px}.trash-section.svelte-5mstt.svelte-5mstt{min-width:0}.trash-section.svelte-5mstt h3.svelte-5mstt{margin:0 0 10px;font-size:13px;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px}.trash-section-head.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:10px;margin-bottom:10px;min-height:36px}.trash-section-head.svelte-5mstt h3.svelte-5mstt{margin:0 0 2px}.trash-section-head.svelte-5mstt p.svelte-5mstt{margin:0;color:#8888a0;font-size:12px}.trash-row.svelte-5mstt.svelte-5mstt{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border:1px solid #2a2a3c;border-radius:8px;background:#1a1a28;margin-bottom:8px}.trash-row.folder.svelte-5mstt.svelte-5mstt{background:#1b2132;border-color:#303856}.trash-row.selected.svelte-5mstt.svelte-5mstt{border-color:#6366f1;background:#20203a}.trash-row-icon.svelte-5mstt.svelte-5mstt{color:#a5b4fc;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:4px;border-radius:4px;background:transparent;border:none}.trash-row-icon.svelte-5mstt.svelte-5mstt:hover{background:#222238;color:#e4e4ef}.trash-row-main.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;gap:2px;min-width:0;padding:2px 0;cursor:pointer;background:transparent;border:none;color:inherit;font:inherit;text-align:left;width:100%;border-radius:4px}.trash-row-main.svelte-5mstt.svelte-5mstt:hover{background:#ffffff08}.trash-row-main.svelte-5mstt:hover .trash-row-title.svelte-5mstt{color:#a5b4fc}.trash-row-main.svelte-5mstt.svelte-5mstt:focus-visible{outline:2px solid #6366f1;outline-offset:2px}.trash-row-title.svelte-5mstt.svelte-5mstt{min-width:0;color:#e4e4ef;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trash-row-meta.svelte-5mstt.svelte-5mstt{color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trash-row-date.svelte-5mstt.svelte-5mstt{color:#666;font-size:11px}.trash-row-actions.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:6px;justify-content:flex-end}.trash-empty-line.svelte-5mstt.svelte-5mstt{color:#8888a0;font-size:13px;margin:0}.journal-screen.svelte-5mstt.svelte-5mstt{padding:24px;overflow-y:auto;flex:1}.journal-tabs.svelte-5mstt.svelte-5mstt{display:flex;gap:0;border-bottom:1px solid #2a2a3c;margin-bottom:16px}.journal-tab.svelte-5mstt.svelte-5mstt{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;position:relative}.journal-tab.svelte-5mstt.svelte-5mstt:hover{color:#a5b4fc}.journal-tab.active.svelte-5mstt.svelte-5mstt{color:#e4e4ef;border-bottom-color:#818cf8;background:#6366f11f;font-weight:600}.journal-header.svelte-5mstt.svelte-5mstt{margin-bottom:24px}.journal-summary.svelte-5mstt.svelte-5mstt{display:flex;flex-wrap:wrap;gap:24px;margin-bottom:24px;padding:16px;background:#1a1a2e;border-radius:8px;border:1px solid #2a2a3c}.summary-total.svelte-5mstt.svelte-5mstt{font-size:18px;font-weight:700;color:#e4e4ef;width:100%;margin-bottom:4px}.summary-section.svelte-5mstt.svelte-5mstt{flex:1;min-width:200px}.summary-label.svelte-5mstt.svelte-5mstt{font-size:12px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.summary-row.svelte-5mstt.svelte-5mstt{display:flex;gap:8px;font-size:13px;padding:4px 0;border-bottom:1px solid #2a2a3c}.summary-row.svelte-5mstt span.svelte-5mstt:first-child{flex:1;color:#e4e4ef}.summary-count.svelte-5mstt.svelte-5mstt{color:#8888a0}.journal-table-wrap.svelte-5mstt.svelte-5mstt{overflow-x:auto}.journal-table.svelte-5mstt.svelte-5mstt{width:100%;border-collapse:collapse;font-size:13px}.journal-table.svelte-5mstt th.svelte-5mstt{text-align:left;padding:8px 12px;border-bottom:2px solid #2a2a3c;color:#b0b0c8;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.journal-table.svelte-5mstt td.svelte-5mstt{padding:8px 12px;border-bottom:1px solid #1a1a28;color:#e4e4ef}.journal-table.svelte-5mstt tr:hover td.svelte-5mstt{background:#1e1e32}.journal-table.svelte-5mstt .link-btn.svelte-5mstt{color:#a5b4fc}.journal-path-cell.svelte-5mstt.svelte-5mstt{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#a0a0b8;font-size:12px}.journal-min-cell.svelte-5mstt.svelte-5mstt{text-align:right;font-variant-numeric:tabular-nums}.journal-date-cell.svelte-5mstt.svelte-5mstt{color:#b0b0c0;white-space:nowrap}.journal-bool-cell.svelte-5mstt.svelte-5mstt{text-align:center;color:#a0a0b8}.journal-row.svelte-5mstt.svelte-5mstt{cursor:pointer}.journal-row.svelte-5mstt:hover td.svelte-5mstt{background:#1e1e32}.journal-row.expanded.svelte-5mstt td.svelte-5mstt{background:#1a1a30;border-bottom:none}.journal-summary-cell.svelte-5mstt.svelte-5mstt{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-row-detail.svelte-5mstt td.svelte-5mstt{padding:0 12px 12px;background:#16162a}.journal-detail-body.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;gap:12px;padding:8px 0}.journal-detail-actions.svelte-5mstt.svelte-5mstt{display:flex;gap:8px;justify-content:flex-end}.journal-detail-section.svelte-5mstt.svelte-5mstt{font-size:13px}.journal-detail-label.svelte-5mstt.svelte-5mstt{font-size:11px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;display:block;margin-bottom:4px}.journal-detail-section.svelte-5mstt p.svelte-5mstt{margin:0;color:#c0c0d0}.journal-event-row.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;color:#b0b0c0}.journal-event-time.svelte-5mstt.svelte-5mstt{color:#a0a0b8;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:48px}.journal-event-type.svelte-5mstt.svelte-5mstt{color:#8888a0;font-size:11px;background:#1a1a2e;padding:1px 6px;border-radius:3px}.journal-event-title.svelte-5mstt.svelte-5mstt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-node-picker.svelte-5mstt input[type=text].svelte-5mstt{padding:6px 10px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:13px;font-family:inherit;width:240px}.journal-search-dropdown.svelte-5mstt.svelte-5mstt{position:absolute;top:100%;left:0;right:0;z-index:50;background:#1a1a28;border:1px solid #2a2a3c;border-radius:6px;margin-top:4px;max-height:240px;overflow-y:auto;min-width:260px}.journal-search-item.svelte-5mstt.svelte-5mstt{display:block;width:100%;padding:8px 12px;border:none;background:transparent;color:#e4e4ef;cursor:pointer;font-family:inherit;font-size:13px;text-align:left}.journal-search-item.svelte-5mstt.svelte-5mstt:hover{background:#2a2a4a}.journal-search-title.svelte-5mstt.svelte-5mstt{display:block;font-weight:500}.journal-search-path.svelte-5mstt.svelte-5mstt{display:block;font-size:11px;color:#8888a0;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-selected-node.svelte-5mstt.svelte-5mstt{cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:#1e1e3a;border:1px solid #3a3a5c;border-radius:4px;font-size:13px;color:#a5b4fc;white-space:nowrap;font-family:inherit}.journal-selected-node.svelte-5mstt.svelte-5mstt:hover{background:#2a2a4a}.journal-node-clear.svelte-5mstt.svelte-5mstt{color:#8888a0;font-size:14px;margin-left:4px}.journal-status-msg.svelte-5mstt.svelte-5mstt{font-size:12px;color:#34d399;padding:4px 8px;background:#1a2a1e;border-radius:4px}.journal-include-chk.svelte-5mstt.svelte-5mstt{width:16px;height:16px;accent-color:#6366f1;cursor:pointer}.link-btn.svelte-5mstt.svelte-5mstt{background:none;border:none;padding:0;color:#a5b4fc;font:inherit;cursor:pointer;text-align:left}.link-btn.svelte-5mstt.svelte-5mstt:hover{text-decoration:underline}.nav-badge.svelte-5mstt.svelte-5mstt{background:#6366f1;color:#fff;font-size:10px;font-weight:700;border-radius:10px;padding:1px 6px;margin-left:6px;line-height:1.4}.actions-tab.svelte-5mstt.svelte-5mstt{padding:24px}.action-card.svelte-5mstt.svelte-5mstt{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.action-info.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.action-title.svelte-5mstt.svelte-5mstt{font-weight:500}.action-type.svelte-5mstt.svelte-5mstt{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px;white-space:nowrap}.action-data.svelte-5mstt.svelte-5mstt{font-size:11px;color:#555;font-family:SF Mono,Fira Code,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.action-btns.svelte-5mstt.svelte-5mstt{display:flex;gap:4px;flex-shrink:0}.action-btns.svelte-5mstt .btn-danger.svelte-5mstt{color:#ff6b6b;border-color:#4a2222;padding:4px 8px}.action-btns.svelte-5mstt .btn-danger.svelte-5mstt:hover{background:#3a2222}.empty-state.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-5mstt p.svelte-5mstt{margin:0;font-size:14px;color:#666}.empty-state.svelte-5mstt .empty-icon.svelte-5mstt{margin-bottom:12px;color:#444}.empty-state.svelte-5mstt .hint.svelte-5mstt{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-5mstt .empty-actions.svelte-5mstt{display:flex;gap:8px;justify-content:center;margin-top:16px}.welcome.svelte-5mstt.svelte-5mstt{padding:48px 24px;text-align:center}.welcome.svelte-5mstt h2.svelte-5mstt{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-5mstt p.svelte-5mstt{color:#666;font-size:14px}.error-text.svelte-5mstt.svelte-5mstt{color:#f88}.modal-overlay.svelte-5mstt.svelte-5mstt{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-5mstt.svelte-5mstt{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-5mstt h3.svelte-5mstt{font-size:18px;margin-bottom:16px}.modal.svelte-5mstt textarea.svelte-5mstt{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit;min-height:60px;resize:vertical;box-sizing:border-box}.modal-worklog.svelte-5mstt.svelte-5mstt{width:460px}.form-group.svelte-5mstt.svelte-5mstt{margin-bottom:12px}.form-row.svelte-5mstt.svelte-5mstt{display:flex;gap:16px;margin-bottom:12px}.form-group.svelte-5mstt label.svelte-5mstt{display:block}.form-group.svelte-5mstt .label-text.svelte-5mstt,.form-group.svelte-5mstt .form-label.svelte-5mstt{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-5mstt input.svelte-5mstt,.form-group.svelte-5mstt select.svelte-5mstt{width:100%;padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.form-group.svelte-5mstt select.svelte-5mstt{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}.form-group.svelte-5mstt input.svelte-5mstt:focus,.form-group.svelte-5mstt select.svelte-5mstt:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-5mstt.svelte-5mstt{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.assign-search.svelte-5mstt.svelte-5mstt{position:relative}.assign-search-results.svelte-5mstt.svelte-5mstt{position:absolute;left:0;right:0;top:100%;z-index:110;margin-top:4px;background:#1a1a28;border:1px solid #2a2a3c;border-radius:6px;max-height:220px;overflow-y:auto}.assign-search-result.svelte-5mstt.svelte-5mstt{width:100%;display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border:0;border-bottom:1px solid #24243a;background:transparent;color:#e4e4ef;text-align:left;cursor:pointer;font-family:inherit}.assign-search-result.svelte-5mstt.svelte-5mstt:hover{background:#222238}.assign-search-result.svelte-5mstt span.svelte-5mstt:last-child{color:#8888a0;font-size:12px;flex-shrink:0}.assign-hint.svelte-5mstt.svelte-5mstt{color:#8888a0;font-size:11px;margin-top:4px}.assign-status.svelte-5mstt.svelte-5mstt{color:#8888a0;font-size:12px}.btn.svelte-5mstt.svelte-5mstt{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;display:inline-flex;align-items:center;gap:6px}.btn.svelte-5mstt svg,.inbox-icon-btn.svelte-5mstt svg{flex-shrink:0}.btn.svelte-5mstt.svelte-5mstt:hover{background:#223}.btn-primary.svelte-5mstt.svelte-5mstt{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-5mstt.svelte-5mstt:hover{background:#4f46e5}.btn.svelte-5mstt.svelte-5mstt:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-5mstt.svelte-5mstt{padding:4px 10px;font-size:12px}.btn-danger.svelte-5mstt.svelte-5mstt{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-5mstt.svelte-5mstt:hover{background:#3a2222}.settings-section select,.settings-section input[type=text],.settings-section input[type=url],.settings-section input[type=number],.settings-section input[type=password]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:100%;padding:.5rem .75rem;background:#13131f;border:1px solid #2a2a3e;border-radius:6px;color:#e0e0e0;font-size:.9rem;font-family:inherit;transition:border-color .15s,box-shadow .15s}.settings-section select{padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center;background-size:.85rem}.settings-section select:hover,.settings-section input:hover{border-color:#3a3a5e}.settings-section select:focus,.settings-section input:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 2px #6366f133}.settings-section select:disabled,.settings-section input:disabled{opacity:.45;cursor:not-allowed;border-color:#2a2a3e}.settings-section select option{background:#1e1e2e;color:#e0e0e0}.files-tab.svelte-5mstt.svelte-5mstt{padding:20px}.files-tab.svelte-5mstt .tab-toolbar.svelte-5mstt{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column}.back-btn.svelte-5mstt.svelte-5mstt{margin-bottom:4px;display:inline-flex;align-items:center;gap:4px}.import-summary.svelte-5mstt.svelte-5mstt{margin-bottom:16px}.summary-row.svelte-5mstt.svelte-5mstt{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-5mstt.svelte-5mstt{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}.rename-error.svelte-5mstt.svelte-5mstt{color:#ff6b6b;font-size:12px;margin-top:4px}.template-cards.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.template-card.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid #2a2a3c;background:#13131f;color:#ccc;border-radius:8px;cursor:pointer;font-size:13px;font-family:inherit;width:100%;text-align:left}.template-card.svelte-5mstt.svelte-5mstt:hover{background:#1e1e30;border-color:#3a3a5c}.template-card.selected.svelte-5mstt.svelte-5mstt{background:#2a2a50;border-color:#6366f1;color:#e4e4ef}.template-card-text.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;gap:2px;min-width:0}.template-card-title.svelte-5mstt.svelte-5mstt{font-weight:500}.template-card-desc.svelte-5mstt.svelte-5mstt{font-size:11px;color:#888}.activity-tab.svelte-5mstt.svelte-5mstt{padding:24px}.activity-events.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;gap:2px}.activity-event.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:13px;color:#b0b0c0;cursor:pointer}.activity-event.svelte-5mstt.svelte-5mstt:hover{background:#1a1a28;color:#e4e4ef}.activity-event-icon.svelte-5mstt.svelte-5mstt{width:18px;text-align:center;color:#6366f1;font-size:13px;flex-shrink:0}.activity-event-title.svelte-5mstt.svelte-5mstt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-event-path.svelte-5mstt.svelte-5mstt{max-width:240px;color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-event-type.svelte-5mstt.svelte-5mstt{font-size:11px;color:#666;flex-shrink:0}.activity-event-target.svelte-5mstt.svelte-5mstt{font-size:10px;color:#555;background:#1e1e2e;padding:1px 6px;border-radius:8px;flex-shrink:0}.activity-event-time.svelte-5mstt.svelte-5mstt{font-size:11px;color:#555;margin-left:8px;flex-shrink:0}.activity-feed.svelte-5mstt.svelte-5mstt{padding:24px;overflow-y:auto;flex:1}.activity-feed-events.svelte-5mstt.svelte-5mstt{display:flex;flex-direction:column;gap:2px}.activity-feed-event.svelte-5mstt.svelte-5mstt{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer}.activity-feed-event.svelte-5mstt.svelte-5mstt:hover{background:#1a1a28;color:#e4e4ef}.activity-feed-icon.svelte-5mstt.svelte-5mstt{width:20px;text-align:center;color:#6366f1;font-size:14px;flex-shrink:0;margin-top:1px}.activity-feed-body.svelte-5mstt.svelte-5mstt{flex:1;min-width:0}.activity-feed-title.svelte-5mstt.svelte-5mstt{font-size:14px;color:#e4e4ef}.activity-feed-meta.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:8px;margin-top:2px}.activity-feed-type.svelte-5mstt.svelte-5mstt{font-size:11px;color:#666}.activity-feed-target.svelte-5mstt.svelte-5mstt{font-size:10px;color:#555;background:#1e1e2e;padding:1px 6px;border-radius:8px}.activity-feed-time.svelte-5mstt.svelte-5mstt{font-size:11px;color:#555}.journal-filter-section.svelte-5mstt.svelte-5mstt{margin-bottom:12px;padding:12px 16px;background:#1a1a2e;border:1px solid #2a2a3c;border-radius:8px}.journal-filter-heading.svelte-5mstt.svelte-5mstt{font-size:11px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;margin-bottom:8px}.journal-filters-row.svelte-5mstt.svelte-5mstt{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:flex-end}.journal-filters-row.svelte-5mstt label.svelte-5mstt{display:flex;flex-direction:column;gap:3px;font-size:12px;color:#8888a0}.journal-filters-row.svelte-5mstt input[type=date].svelte-5mstt{padding:5px 8px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:12px;font-family:inherit}.journal-filters-row.svelte-5mstt .checkbox-label.svelte-5mstt{flex-direction:row;align-items:center;gap:6px;cursor:pointer}.journal-filters-row.svelte-5mstt .checkbox-label input.svelte-5mstt{width:auto}.journal-export-section.svelte-5mstt.svelte-5mstt{padding:8px 16px;background:#1a1a2e;border:1px solid #2a2a3c;border-radius:8px}.journal-export-heading.svelte-5mstt.svelte-5mstt{font-size:11px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;margin-bottom:6px}.journal-export-row.svelte-5mstt.svelte-5mstt{display:flex;gap:8px;align-items:center}.journal-toggle-col.svelte-5mstt.svelte-5mstt{width:32px;min-width:32px;text-align:center;padding:8px 4px!important}.journal-toggle-icon.svelte-5mstt.svelte-5mstt{color:#6366f1;font-size:12px}.worklog-entry.svelte-5mstt.svelte-5mstt{padding:8px 12px;background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;margin-bottom:6px;cursor:pointer}.worklog-entry.svelte-5mstt.svelte-5mstt:hover{border-color:#3a3a5c}.worklog-entry.expanded.svelte-5mstt.svelte-5mstt{border-color:#6366f1}.worklog-entry-head.svelte-5mstt.svelte-5mstt{display:flex;align-items:center;gap:8px;font-size:13px;color:#e4e4ef}.worklog-toggle.svelte-5mstt.svelte-5mstt{color:#6366f1;font-size:12px;width:16px;text-align:center;flex-shrink:0}.worklog-entry-summary.svelte-5mstt.svelte-5mstt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.worklog-entry-path.svelte-5mstt.svelte-5mstt{max-width:240px;color:#8ea0d8;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.worklog-entry-mins.svelte-5mstt.svelte-5mstt{color:#b0b0c8;font-variant-numeric:tabular-nums;white-space:nowrap}.worklog-entry-date.svelte-5mstt.svelte-5mstt{color:#b0b0c0;font-size:12px;white-space:nowrap}.worklog-entry-detail.svelte-5mstt.svelte-5mstt{margin-top:8px;padding-top:8px;border-top:1px solid #2a2a3c;display:flex;flex-direction:column;gap:8px}.worklog-entry-actions.svelte-5mstt.svelte-5mstt{display:flex;gap:8px;justify-content:flex-end}.wl-detail-section.svelte-5mstt.svelte-5mstt{font-size:13px}.wl-detail-label.svelte-5mstt.svelte-5mstt{font-size:11px;font-weight:600;color:#a5b4fc;text-transform:uppercase;letter-spacing:.3px;display:block;margin-bottom:2px}.wl-detail-section.svelte-5mstt p.svelte-5mstt{margin:0;color:#c0c0d0}.wl-tag-billable.svelte-5mstt.svelte-5mstt{font-size:10px;color:#34d399;background:#1a2a1e;padding:1px 6px;border-radius:8px;white-space:nowrap}.wl-tag-approx.svelte-5mstt.svelte-5mstt{font-size:10px;color:#fbbf24;background:#2a2a1a;padding:1px 6px;border-radius:8px;white-space:nowrap}.checkbox-label-inline.svelte-5mstt.svelte-5mstt{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#e4e4ef;cursor:pointer}.checkbox-label-inline.svelte-5mstt input.svelte-5mstt{width:auto}.note-editor-wrapper.svelte-5mstt.svelte-5mstt{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.verstak-toast.svelte-5mstt.svelte-5mstt{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#1e1e38;border:1px solid #3a3a5c;border-radius:8px;padding:12px 20px;color:#e4e4ef;font-size:13px;z-index:9999;box-shadow:0 4px 20px #0006;animation:svelte-5mstt-toast-in .2s ease-out}@keyframes svelte-5mstt-toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.modal-overlay.svelte-5mstt.svelte-5mstt{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9998}.modal-box.svelte-5mstt.svelte-5mstt{background:#1a1a2e;border:1px solid #2a2a3c;border-radius:10px;padding:24px;width:420px;max-width:90vw;display:flex;flex-direction:column;gap:14px}.modal-box.svelte-5mstt h3.svelte-5mstt{font-size:16px;font-weight:600;color:#e4e4ef;margin:0}.modal-box.svelte-5mstt label.svelte-5mstt{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#888}.modal-box.svelte-5mstt input[type=text].svelte-5mstt{padding:8px 12px;border:1px solid #2a2a3c;border-radius:6px;background:#13131f;color:#e4e4ef;font-size:13px;font-family:inherit;outline:none}.modal-box.svelte-5mstt input[type=text].svelte-5mstt:focus{border-color:#818cf8}.modal-actions.svelte-5mstt.svelte-5mstt{display:flex;gap:8px;justify-content:flex-end;margin-top:4px} diff --git a/cmd/verstak-gui/frontend-dist/index.html b/cmd/verstak-gui/frontend-dist/index.html index ea80683..5246b2a 100644 --- a/cmd/verstak-gui/frontend-dist/index.html +++ b/cmd/verstak-gui/frontend-dist/index.html @@ -19,8 +19,8 @@ background: #13131f; } - - + +
    diff --git a/cmd/verstak-gui/vault_layout_test.go b/cmd/verstak-gui/vault_layout_test.go index 87cdaa8..838068c 100644 --- a/cmd/verstak-gui/vault_layout_test.go +++ b/cmd/verstak-gui/vault_layout_test.go @@ -126,12 +126,17 @@ func TestVaultLayout_CreateProjectTree(t *testing.T) { t.Error("expected project folder on disk") } - // 4. Verify template created Overview.md - overviewPath := filepath.Join(serverFolder, "Overview.md") + // 4. Verify template created Overview.md inside Notes/ subfolder + overviewPath := filepath.Join(serverFolder, "Notes", "Overview.md") if _, err := os.Stat(overviewPath); os.IsNotExist(err) { - t.Log("note: Overview.md from template not created (may not be implemented)") + t.Errorf("expected Overview.md at %s", overviewPath) } + // Verify no Overview.md in project root + overviewRootPath := filepath.Join(serverFolder, "Overview.md") + if _, err := os.Stat(overviewRootPath); err == nil { + t.Error("Overview.md should not be in project root, only in Notes/") } + } func TestVaultLayout_CreateNoteInsideProject(t *testing.T) { app, vault := setupTestApp(t) @@ -150,16 +155,14 @@ func TestVaultLayout_CreateNoteInsideProject(t *testing.T) { t.Fatal("expected non-nil node and file record") } - // Verify the note .md file is inside the project folder - expectedPath := filepath.Join(vault, proj.FsPath, "Моя заметка.md") + // Verify the note .md file is inside the project's notes/ subfolder + // SafeDisplayNameToPathSegment preserves spaces: "Моя заметка" stays as-is + expectedPath := filepath.Join(vault, proj.FsPath, "Notes", "Моя заметка.md") if _, err := os.Stat(expectedPath); os.IsNotExist(err) { - // Try the safe-display-name variant - expectedPath2 := filepath.Join(vault, proj.FsPath, "Моя_заметка.md") - if _, err2 := os.Stat(expectedPath2); os.IsNotExist(err2) { - // Show what actually exists - entries, _ := os.ReadDir(filepath.Join(vault, proj.FsPath)) - t.Errorf("expected note file in project folder, found: %v", listNames(entries)) - } + // Show what actually exists in notes subfolder + notesDir := filepath.Join(vault, proj.FsPath, "Notes") + entries, _ := os.ReadDir(notesDir) + t.Errorf("expected note file at %s, found in notes/: %v", expectedPath, listNames(entries)) } } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 8e09b0f..03d8f83 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -7,6 +7,15 @@ "": { "name": "frontend", "version": "0.0.0", + "dependencies": { + "@types/dompurify": "^3.2.0", + "@types/markdown-it": "^14.1.2", + "dompurify": "^3.4.10", + "highlight.js": "^11.11.1", + "markdown-it": "^14.2.0", + "markdown-it-task-lists": "^2.1.1", + "marked": "^18.0.5" + }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^3.1.2", "svelte": "^4.2.19", @@ -878,6 +887,15 @@ "vite": "^5.0.0" } }, + "node_modules/@types/dompurify": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.2.0.tgz", + "integrity": "sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==", + "deprecated": "This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed.", + "dependencies": { + "dompurify": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", @@ -885,6 +903,31 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "optional": true + }, "node_modules/@vscode/emmet-helper": { "version": "2.8.4", "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.8.4.tgz", @@ -927,6 +970,11 @@ "node": ">=0.4.0" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", @@ -1026,6 +1074,14 @@ "node": ">=0.10.0" } }, + "node_modules/dompurify": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.10.tgz", + "integrity": "sha512-0xzNv0e7oYC6yyuOGZIABPM4qtg3QxLFniDNPP4ZP90wR8Yq3zgwpRbrNiT4N3IKqDbbYFEJLV+JWEs19aZ//w==", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/emmet": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz", @@ -1043,6 +1099,17 @@ "@emmetio/css-abbreviation": "^2.1.8" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -1132,6 +1199,14 @@ "dev": true, "license": "MIT" }, + "node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/is-reference": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", @@ -1159,6 +1234,24 @@ "node": ">=6" } }, + "node_modules/linkify-it": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz", + "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/locate-character": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", @@ -1183,6 +1276,48 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, + "node_modules/markdown-it": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", + "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.1", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-task-lists": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz", + "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==" + }, + "node_modules/marked": { + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.5.tgz", + "integrity": "sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", @@ -1190,6 +1325,11 @@ "dev": true, "license": "CC0-1.0" }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -1291,6 +1431,14 @@ "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "engines": { + "node": ">=6" + } + }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -1521,6 +1669,11 @@ "node": ">=20" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + }, "node_modules/vite": { "version": "5.4.21", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", diff --git a/frontend/package.json b/frontend/package.json index cba09d7..de708a4 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,5 +16,14 @@ "typescript": "^6.0.3", "typescript-language-server": "^5.3.0", "vite": "^5.4.21" + }, + "dependencies": { + "@types/dompurify": "^3.2.0", + "@types/markdown-it": "^14.1.2", + "dompurify": "^3.4.10", + "highlight.js": "^11.11.1", + "markdown-it": "^14.2.0", + "markdown-it-task-lists": "^2.1.1", + "marked": "^18.0.5" } } diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index d8ea29c..c3e31a3 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -16,6 +16,7 @@ import { actionIcon } from './lib/actionIcons.js' import { canPreviewFile, needsBase64Preview, needsTextPreview } from './lib/fileUtils.js' import { t } from './lib/i18n' + import NoteEditorPanel from './lib/components/notes/NoteEditorPanel.svelte' // ===== Wails v2 API call helper ===== function wailsCall(method, ...args) { @@ -76,6 +77,20 @@ let activeTab = 'overview' let notes = [] let noteEditor = null + let noteViewMode = 'edit' + let showLinkModal = false + let linkModalLabel = '' + let linkModalUrl = '' + // Simple internal link modal state (replaces broken ObjectPickerModal) + let showInternalLinkModal = false + let internalLinkLabel = '' + let internalLinkUrl = 'verstak://secret/sec_example' + let showVerstakToast = false + let verstakToastMessage = '' + // Note rename state + let renamingNoteId = null + let renamingNoteTitle = '' + let renamingNoteOriginalTitle = '' let files = [] let actions = [] let worklog = [] @@ -1271,6 +1286,28 @@ } } + function deleteNote(note) { + openConfirm({ + title: t('common.delete'), + message: t('note.deleteConfirm', { title: note.title }) || `Удалить заметку «${note.title}»?`, + confirmText: t('common.delete'), + danger: true, + onConfirm: async () => { + try { + await wailsCall('DeleteNote', note.id) + notes = notes.filter(n => n.id !== note.id) + if (noteEditor && noteEditor.id === note.id) { + noteEditor = null + } + // Refresh trash count + try { await refreshTrashCount() } catch {} + } catch (e) { + error = String(e) + } + } + }) + } + function closeNoteEditor() { if (noteEditor && noteEditor.dirty) { openConfirm({ @@ -1278,11 +1315,12 @@ message: t('note.unsavedMessage'), confirmText: t('note.unsavedClose'), danger: false, - onConfirm: () => { noteEditor = null } + onConfirm: () => { noteEditor = null; noteViewMode = 'edit' } }) return } noteEditor = null + noteViewMode = 'edit' } function updateNoteContent(e) { @@ -1300,6 +1338,158 @@ } } + // ===== Link modal ===== + function openLinkModal() { + linkModalLabel = '' + linkModalUrl = '' + showLinkModal = true + } + + function submitLinkModal() { + if (!noteEditor) { showLinkModal = false; return } + const label = linkModalLabel.trim() || linkModalUrl.trim() || 'link' + const url = linkModalUrl.trim() || '#' + const md = `[${label}](${url})` + noteEditor.content = noteEditor.content + (noteEditor.content.endsWith('\n') ? '' : '\n') + md + '\n' + noteEditor.dirty = true + showLinkModal = false + } + + // ===== Simple internal link modal ===== + function openInternalLinkModal() { + internalLinkLabel = '' + internalLinkUrl = 'verstak://secret/sec_example' + showInternalLinkModal = true + } + + function submitInternalLink() { + insertInternalLinkMarkdown() + } + + function cancelInternalLink() { + showInternalLinkModal = false + internalLinkLabel = '' + internalLinkUrl = 'verstak://secret/sec_example' + } + + // ===== Note rename ===== + function startRenameNote(noteId, currentTitle) { + renamingNoteId = noteId + renamingNoteTitle = currentTitle + renamingNoteOriginalTitle = currentTitle + } + + function cancelRenameNote() { + renamingNoteId = null + renamingNoteTitle = '' + renamingNoteOriginalTitle = '' + } + + async function submitRenameNote() { + if (!renamingNoteId || !renamingNoteTitle.trim()) { + cancelRenameNote() + return + } + if (renamingNoteTitle.trim() === renamingNoteOriginalTitle) { + cancelRenameNote() + return + } + try { + await wailsCall('RenameNote', renamingNoteId, renamingNoteTitle.trim()) + // Update note list + notes = notes.map(n => n.id === renamingNoteId ? { ...n, title: renamingNoteTitle.trim() } : n) + // Update editor header if this note is open + if (noteEditor && noteEditor.id === renamingNoteId) { + noteEditor.title = renamingNoteTitle.trim() + } + cancelRenameNote() + } catch (e) { + // Show error + error = String(e) + cancelRenameNote() + } + } + + // ===== Internal link modal (ObjectPicker) — legacy, kept for compat ===== + // Replaced by simple openInternalLinkModal above. + + // ===== Verstak link handler ===== + function handleVerstakLink(e) { + const { type, id } = e.detail + let msg = '' + switch (type) { + case 'secret': + msg = t('note.internal.secretNotImplemented') + break + case 'case': + msg = t('note.internal.caseNotImplemented') + break + case 'note': + msg = t('note.internal.noteNotImplemented') + break + case 'file': + msg = t('note.internal.fileNotImplemented') + break + default: + msg = `verstak://${type}/${id}` + } + showVerstakToastMessage(msg) + } + + function showVerstakToastMessage(msg) { + verstakToastMessage = msg + showVerstakToast = true + setTimeout(() => { showVerstakToast = false }, 3000) + } + + // ===== Note editor panel events ===== + function handleNoteContentChange(e) { + if (noteEditor) { + noteEditor.content = e.detail.content + noteEditor.dirty = true + } + } + + function handleNoteModeChange(e) { + noteViewMode = e.detail.mode + } + + function handleNoteInsertLink() { + openLinkModal() + } + + function handleNoteInsertInternalLink() { + openInternalLinkModal() + } + + // Insert markdown link at cursor position in the editor textarea. + function insertInternalLinkMarkdown() { + if (!noteEditor) { showInternalLinkModal = false; return } + const label = internalLinkLabel.trim() || internalLinkUrl + const href = internalLinkUrl.trim() || 'verstak://secret/sec_example' + const md = `[${label}](${href})` + // Try to insert at cursor via the hidden textarea used by MarkdownEditor. + // If textarea not available, append to content. + const ta = document.querySelector('.md-textarea') + if (ta) { + const start = ta.selectionStart + const end = ta.selectionEnd + const before = noteEditor.content.substring(0, start) + const after = noteEditor.content.substring(end) + noteEditor.content = before + md + after + noteEditor.dirty = true + // Restore cursor after inserted text + requestAnimationFrame(() => { + ta.focus() + ta.selectionStart = ta.selectionEnd = start + md.length + }) + } else { + noteEditor.content = noteEditor.content + (noteEditor.content.endsWith('\n') ? '' : '\n') + md + '\n' + noteEditor.dirty = true + } + showInternalLinkModal = false + } + // ===== Worklog ===== function openWorklogModal(entry = null) { editingWorklogEntry = entry @@ -2702,18 +2892,43 @@ {/if} {#if noteEditor} - -
    + +
    - {noteEditor.title} - {#if noteEditor.dirty}{/if} + {#if renamingNoteId === noteEditor.id} +
    + { if (e.key === 'Enter') submitRenameNote(); if (e.key === 'Escape') cancelRenameNote(); }} + class="note-rename-input" + /> + + +
    + {:else} + {noteEditor.title} + + {#if noteEditor.dirty}{/if} + {/if}
    - +
    {:else if selectedNode} @@ -2794,8 +3009,18 @@
    {#each notes as note}
    openNote(note)} on:keydown={onKeyActivate(() => openNote(note))}> -
    {note.title}
    -
    {formatDate(note.createdAt)}
    +
    +
    {note.title}
    +
    {formatDate(note.createdAt)}
    +
    +
    + + +
    {/each}
    @@ -3954,6 +4179,27 @@ .note-title { font-size: 16px; font-weight: 500; } .dirty-mark { color: #f59e0b; font-size: 10px; } .note-editor-actions { margin-left: auto; display: flex; gap: 8px; } +.note-rename-btn { opacity: 0; margin-left: 6px; color: #666; } +.note-editor-header:hover .note-rename-btn { opacity: 1; } +.note-rename-btn:hover { color: #ccc; } +.note-rename-inline { display: flex; align-items: center; gap: 8px; flex: 1; } +.note-rename-input { flex: 1; padding: 6px 10px; border: 1px solid #2a2a3c; border-radius: 4px; background: #13131f; color: #e4e4ef; font-size: 14px; font-family: inherit; outline: none; } +.note-rename-input:focus { border-color: #818cf8; } + +/* Note card actions */ +.note-card { position: relative; } +.note-card-info { flex: 1; min-width: 0; } +.note-card-actions { display: flex; gap: 4px; opacity: 0; transition: opacity 0.12s; } +.note-card:hover .note-card-actions { opacity: 1; } +.note-action-btn { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border: none; border-radius: 4px; background: transparent; color: #666; cursor: pointer; transition: background 0.12s, color 0.12s; } +.note-action-btn:hover { background: #2a2a3c; color: #ccc; } +.note-action-danger:hover { background: rgba(239, 68, 68, 0.15); color: #f87171; } + +/* Form groups in modals */ +.form-group { margin-bottom: 14px; } +.form-group label { display: block; font-size: 12px; color: #888; margin-bottom: 4px; } +.form-group input { width: 100%; padding: 8px 12px; border: 1px solid #2a2a3c; border-radius: 4px; background: #13131f; color: #e4e4ef; font-size: 14px; font-family: inherit; outline: none; box-sizing: border-box; } +.form-group input:focus { border-color: #818cf8; } .note-textarea { flex: 1; width: 100%; border: none; outline: none; background: #13131f; color: #e4e4ef; font-family: 'SF Mono', 'Fira Code', monospace; font-size: 14px; line-height: 1.6; padding: 24px; resize: none; } /* Overview */ @@ -4336,4 +4582,164 @@ .checkbox-label-inline { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #e4e4ef; cursor: pointer; } .checkbox-label-inline input { width: auto; } +/* ===== Note editor wrapper ===== */ +.note-editor-wrapper { + flex: 1; + display: flex; + flex-direction: column; + min-height: 0; + overflow: hidden; +} + +/* ===== Verstak toast ===== */ +.verstak-toast { + position: fixed; + bottom: 24px; + left: 50%; + transform: translateX(-50%); + background: #1e1e38; + border: 1px solid #3a3a5c; + border-radius: 8px; + padding: 12px 20px; + color: #e4e4ef; + font-size: 13px; + z-index: 9999; + box-shadow: 0 4px 20px rgba(0,0,0,0.4); + animation: toast-in 0.2s ease-out; +} + +@keyframes toast-in { + from { opacity: 0; transform: translateX(-50%) translateY(8px); } + to { opacity: 1; transform: translateX(-50%) translateY(0); } +} + +/* ===== Modal overlay ===== */ +.modal-overlay { + position: fixed; + inset: 0; + background: rgba(0,0,0,0.6); + display: flex; + align-items: center; + justify-content: center; + z-index: 9998; +} + +.modal-box { + background: #1a1a2e; + border: 1px solid #2a2a3c; + border-radius: 10px; + padding: 24px; + width: 420px; + max-width: 90vw; + display: flex; + flex-direction: column; + gap: 14px; +} + +.modal-box h3 { + font-size: 16px; + font-weight: 600; + color: #e4e4ef; + margin: 0; +} + +.modal-box label { + display: flex; + flex-direction: column; + gap: 4px; + font-size: 12px; + color: #888; +} + +.modal-box input[type="text"], +.modal-box select { + padding: 8px 12px; + border: 1px solid #2a2a3c; + border-radius: 6px; + background: #13131f; + color: #e4e4ef; + font-size: 13px; + font-family: inherit; + outline: none; +} + +.modal-box input[type="text"]:focus, +.modal-box select:focus { + border-color: #818cf8; +} + +.modal-actions { + display: flex; + gap: 8px; + justify-content: flex-end; + margin-top: 4px; +} + + + +{#if showLinkModal} + +{/if} + + +{#if showInternalLinkModal} + +{/if} + + +{#if renamingNoteId && renamingNoteId !== noteEditor?.id} + +{/if} + + +{#if showVerstakToast} + +{/if} + diff --git a/frontend/src/lib/components/notes/MarkdownEditor.svelte b/frontend/src/lib/components/notes/MarkdownEditor.svelte new file mode 100644 index 0000000..2636135 --- /dev/null +++ b/frontend/src/lib/components/notes/MarkdownEditor.svelte @@ -0,0 +1,373 @@ + + +
    + + + + + +
    + + diff --git a/frontend/src/lib/components/notes/MarkdownPreview.svelte b/frontend/src/lib/components/notes/MarkdownPreview.svelte new file mode 100644 index 0000000..7d4c558 --- /dev/null +++ b/frontend/src/lib/components/notes/MarkdownPreview.svelte @@ -0,0 +1,313 @@ + + +
    + {#if error} +
    +

    ⚠️ {t('note.preview.error')}

    +

    {error}

    +
    + {:else if !content?.trim()} +
    {t('note.preview.empty')}
    + {:else} + {@html html} + {/if} +
    + + diff --git a/frontend/src/lib/components/notes/NoteEditorPanel.svelte b/frontend/src/lib/components/notes/NoteEditorPanel.svelte new file mode 100644 index 0000000..9357d33 --- /dev/null +++ b/frontend/src/lib/components/notes/NoteEditorPanel.svelte @@ -0,0 +1,178 @@ + + +
    + +
    + + + +
    + + +
    + {#if viewMode === 'edit'} + + {:else if viewMode === 'preview'} +
    + +
    + {:else if viewMode === 'split'} +
    +
    + +
    +
    + +
    +
    + {/if} +
    +
    + + diff --git a/frontend/src/lib/components/notes/ObjectPickerModal.svelte b/frontend/src/lib/components/notes/ObjectPickerModal.svelte new file mode 100644 index 0000000..0a1a20b --- /dev/null +++ b/frontend/src/lib/components/notes/ObjectPickerModal.svelte @@ -0,0 +1,337 @@ + + +{#if visible} + +{/if} + + diff --git a/frontend/src/lib/i18n/locales/en.js b/frontend/src/lib/i18n/locales/en.js index 81d9907..bfe31c8 100644 --- a/frontend/src/lib/i18n/locales/en.js +++ b/frontend/src/lib/i18n/locales/en.js @@ -178,6 +178,46 @@ export default { 'note.unsavedTitle': 'Unsaved changes', 'note.unsavedMessage': 'Close the editor? All unsaved changes will be lost.', 'note.unsavedClose': 'Close', + + 'note.mode.edit': 'Edit', + 'note.mode.preview': 'Preview', + 'note.mode.split': 'Split', + + 'note.toolbar.bold': 'Bold (Ctrl+B)', + 'note.toolbar.italic': 'Italic (Ctrl+I)', + 'note.toolbar.heading': 'Heading', + 'note.toolbar.link': 'Link', + 'note.toolbar.code': 'Code', + 'note.toolbar.codeBlock': 'Code block', + 'note.toolbar.bulletList': 'Bullet list', + 'note.toolbar.numberedList': 'Numbered list', + 'note.toolbar.checkbox': 'Checkbox', + 'note.toolbar.quote': 'Quote', + 'note.toolbar.internalLink': 'Verstak internal link', + + 'note.internal.secretNotImplemented': 'Secrets vault is not yet implemented', + 'note.internal.caseNotImplemented': 'Case navigation is not yet implemented', + 'note.internal.noteNotImplemented': 'Note navigation is not yet implemented', + 'note.internal.fileNotImplemented': 'File navigation is not yet implemented', + + 'note.rename': 'Rename note', + 'note.deleteConfirm': 'Delete note "{title}"?', + 'note.renameError': 'Failed to rename note', + + 'note.internalLink.title': 'Insert internal link', + 'note.internalLink.label': 'Link text', + 'note.internalLink.url': 'Link address', + 'note.internalLink.labelPlaceholder': 'e.g. Admin panel', + 'note.internalLink.urlPlaceholder': 'verstak://secret/sec_...', + + 'note.preview.empty': 'Empty note. Switch to edit mode to start writing.', + 'note.preview.error': 'Markdown render error', + + 'link.label': 'Link text', + 'link.url': 'URL or verstak:// link', + 'link.urlPlaceholder': 'https://... or verstak://secret/sec_...', + 'link.insert': 'Insert', + 'file.addFile': '+ Add file', 'file.addFolder': '+ Add folder', 'file.newFile': '+ New file', diff --git a/frontend/src/lib/i18n/locales/ru.js b/frontend/src/lib/i18n/locales/ru.js index 9ab2048..59390e7 100644 --- a/frontend/src/lib/i18n/locales/ru.js +++ b/frontend/src/lib/i18n/locales/ru.js @@ -190,6 +190,45 @@ export default { 'note.unsavedMessage': 'Закрыть редактор? Все несохранённые изменения будут потеряны.', 'note.unsavedClose': 'Закрыть', + 'note.mode.edit': 'Редактор', + 'note.mode.preview': 'Просмотр', + 'note.mode.split': 'Разделённый', + + 'note.toolbar.bold': 'Жирный (Ctrl+B)', + 'note.toolbar.italic': 'Курсив (Ctrl+I)', + 'note.toolbar.heading': 'Заголовок', + 'note.toolbar.link': 'Ссылка', + 'note.toolbar.code': 'Код', + 'note.toolbar.codeBlock': 'Блок кода', + 'note.toolbar.bulletList': 'Маркированный список', + 'note.toolbar.numberedList': 'Нумерованный список', + 'note.toolbar.checkbox': 'Чекбокс', + 'note.toolbar.quote': 'Цитата', + 'note.toolbar.internalLink': 'Внутренняя ссылка Verstak', + + 'note.internal.secretNotImplemented': 'Сейф доступов ещё не реализован', + 'note.internal.caseNotImplemented': 'Переход к делу ещё не реализован', + 'note.internal.noteNotImplemented': 'Переход к заметке ещё не реализован', + 'note.internal.fileNotImplemented': 'Переход к файлу ещё не реализован', + + 'note.rename': 'Переименовать заметку', + 'note.deleteConfirm': 'Удалить заметку «{title}»?', + 'note.renameError': 'Не удалось переименовать заметку', + + 'note.internalLink.title': 'Вставить внутреннюю ссылку', + 'note.internalLink.label': 'Текст ссылки', + 'note.internalLink.url': 'Адрес ссылки', + 'note.internalLink.labelPlaceholder': 'Например: Админка', + 'note.internalLink.urlPlaceholder': 'verstak://secret/sec_...', + + 'note.preview.empty': 'Пустая заметка. Переключитесь в режим редактора, чтобы начать писать.', + 'note.preview.error': 'Ошибка рендеринга markdown', + + 'link.label': 'Текст ссылки', + 'link.url': 'URL или verstak:// ссылка', + 'link.urlPlaceholder': 'https://... или verstak://secret/sec_...', + 'link.insert': 'Вставить', + 'file.addFile': '+ Добавить файл', 'file.addFolder': '+ Добавить папку', 'file.newFile': '+ Новый файл', diff --git a/frontend/src/lib/markdown/internalLinks.ts b/frontend/src/lib/markdown/internalLinks.ts new file mode 100644 index 0000000..9bb3c5b --- /dev/null +++ b/frontend/src/lib/markdown/internalLinks.ts @@ -0,0 +1,51 @@ +import { parseVerstakUrl } from './markdown'; + +export type InternalLinkType = 'case' | 'note' | 'file' | 'secret' | 'unknown'; + +export interface InternalLinkInfo { + type: InternalLinkType; + id: string; + label: string; + icon: string; +} + +/** + * Parse a verstak:// href into structured info. + */ +export function getInternalLinkInfo(href: string): InternalLinkInfo | null { + const parsed = parseVerstakUrl(href); + if (!parsed) return null; + + const map: Record = { + case: { type: 'case', icon: '📁' }, + note: { type: 'note', icon: '📄' }, + file: { type: 'file', icon: '📎' }, + secret: { type: 'secret', icon: '🔐' }, + }; + + const entry = map[parsed.type]; + if (!entry) { + return { type: 'unknown', id: parsed.id, label: parsed.id, icon: '🔗' }; + } + + return { + type: entry.type, + id: parsed.id, + label: parsed.id, + icon: entry.icon, + }; +} + +/** + * Get a human-readable label for an internal link type. + * These should be overridden via i18n in the UI layer. + */ +export function getDefaultLabel(type: InternalLinkType, id: string): string { + switch (type) { + case 'secret': return 'Секрет'; + case 'case': return 'Дело'; + case 'note': return 'Заметка'; + case 'file': return 'Файл'; + default: return id; + } +} diff --git a/frontend/src/lib/markdown/markdown.ts b/frontend/src/lib/markdown/markdown.ts new file mode 100644 index 0000000..54c94ff --- /dev/null +++ b/frontend/src/lib/markdown/markdown.ts @@ -0,0 +1,178 @@ +import { marked } from 'marked'; +import DOMPurify from 'dompurify'; +import hljs from 'highlight.js/lib/core'; +import javascript from 'highlight.js/lib/languages/javascript'; +import typescript from 'highlight.js/lib/languages/typescript'; +import python from 'highlight.js/lib/languages/python'; +import go from 'highlight.js/lib/languages/go'; +import bash from 'highlight.js/lib/languages/bash'; +import json from 'highlight.js/lib/languages/json'; +import yaml from 'highlight.js/lib/languages/yaml'; +import markdown from 'highlight.js/lib/languages/markdown'; +import css from 'highlight.js/lib/languages/css'; +import sql from 'highlight.js/lib/languages/sql'; +import xml from 'highlight.js/lib/languages/xml'; + +// Register only the languages we need +hljs.registerLanguage('javascript', javascript); +hljs.registerLanguage('typescript', typescript); +hljs.registerLanguage('python', python); +hljs.registerLanguage('go', go); +hljs.registerLanguage('bash', bash); +hljs.registerLanguage('json', json); +hljs.registerLanguage('yaml', yaml); +hljs.registerLanguage('markdown', markdown); +hljs.registerLanguage('css', css); +hljs.registerLanguage('sql', sql); +hljs.registerLanguage('xml', xml); + +// ─── Allowed URL schemes ─────────────────────────────────────────── +const ALLOWED_SCHEMES = /^(https?|mailto|verstak):/i; +const ALLOWED_VERSTAK_TYPES = new Set(['case', 'note', 'file', 'secret']); + +// ─── DOMPurify hooks ─────────────────────────────────────────────── +DOMPurify.addHook('afterSanitizeAttributes', (node) => { + if (node.tagName === 'A') { + const href = (node.getAttribute('href') || '').trim(); + if (!ALLOWED_SCHEMES.test(href)) { + node.removeAttribute('href'); + node.setAttribute('data-blocked-href', href); + node.classList.add('md-link--blocked'); + node.setAttribute('role', 'link'); + node.setAttribute('aria-disabled', 'true'); + } + } + // Remove all images for now — no internal asset mechanism yet + if (node.tagName === 'IMG') { + node.remove(); + } +}); + +// ─── Marked renderer ─────────────────────────────────────────────── +const renderer = new marked.Renderer(); + +// Links: route verstak:// through internal handler, block unknown schemes +renderer.link = function ({ href, title, text }) { + const trimmedHref = (href || '').trim(); + + // Block dangerous schemes + if (!ALLOWED_SCHEMES.test(trimmedHref)) { + const escapedText = escapeHtml(text); + const escapedHref = escapeAttr(trimmedHref); + return `${escapedText}`; + } + + // Internal verstak:// links + if (trimmedHref.startsWith('verstak://')) { + const parsed = parseVerstakUrl(trimmedHref); + if (parsed && ALLOWED_VERSTAK_TYPES.has(parsed.type)) { + const escapedHref = escapeAttr(trimmedHref); + const escapedText = escapeHtml(text); + return `${escapedText}`; + } + // Unknown verstak type — render as blocked + const escapedText = escapeHtml(text); + const escapedHref = escapeAttr(trimmedHref); + return `${escapedText}`; + } + + // External links + const escapedHref = escapeAttr(trimmedHref); + const escapedText = escapeHtml(text); + const titleAttr = title ? ` title="${escapeAttr(title)}"` : ''; + return `${escapedText}`; +}; + +// Images: disabled — no internal asset mechanism +renderer.image = function ({ href, title, text }) { + const escapedAlt = escapeHtml(text); + return `[Image: ${escapedAlt}]`; +}; + +// Code blocks with highlight.js +renderer.code = function ({ text, lang }) { + const language = lang && hljs.getLanguage(lang) ? lang : 'plaintext'; + let highlighted; + try { + highlighted = hljs.highlight(text, { language }).value; + } catch { + highlighted = escapeHtml(text); + } + const escapedLang = escapeAttr(language); + return `
    ${highlighted}
    `; +}; + +// Inline code +renderer.codespan = function ({ text }) { + return `${escapeHtml(text)}`; +}; + +// Task lists +renderer.listitem = function ({ text, task, checked }) { + if (task) { + const checkedAttr = checked ? 'checked' : ''; + return `
  • ${text}
  • `; + } + return `
  • ${text}
  • `; +}; + +// ─── Marked options ──────────────────────────────────────────────── +marked.setOptions({ + renderer, + gfm: true, + breaks: false, + pedantic: false, +}); + +// ─── Public API ──────────────────────────────────────────────────── + +/** + * Render markdown string to sanitized HTML string. + */ +export function renderMarkdown(md) { + const raw = marked.parse(md); + return DOMPurify.sanitize(raw, { + ADD_ATTR: ['target', 'class', 'data-verstak-href', 'data-verstak-type', 'data-verstak-id', 'data-blocked-href', 'role', 'aria-disabled', 'checked'], + ADD_TAGS: ['input', 'span'], + ALLOW_UNKNOWN_PROTOCOLS: true, + }); +} + +/** + * Check if a URL is an internal verstak:// link. + */ +export function isInternalLink(href) { + return href.startsWith('verstak://'); +} + +/** + * Parse a verstak:// URL into its components. + * Returns { type, id } or null if invalid. + */ +export function parseVerstakUrl(href) { + const match = href.match(/^verstak:\/\/([a-zA-Z_]+)\/(.+)$/); + if (!match) return null; + return { type: match[1], id: match[2] }; +} + +/** + * Check if a verstak:// type is supported. + */ +export function isAllowedVerstakType(type) { + return ALLOWED_VERSTAK_TYPES.has(type); +} + +// ─── Helpers ─────────────────────────────────────────────────────── + +function escapeHtml(s) { + return s + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +function escapeAttr(s) { + return s.replace(/"/g, '"').replace(/'/g, '''); +} diff --git a/frontend/src/wailsjs/go/main/App.js b/frontend/src/wailsjs/go/main/App.js index 49e1cd9..559630b 100644 --- a/frontend/src/wailsjs/go/main/App.js +++ b/frontend/src/wailsjs/go/main/App.js @@ -46,6 +46,14 @@ export function SaveNote(arg1, arg2) { return window['go']['main']['App']['SaveNote'](arg1, arg2); } +export function RenameNote(arg1, arg2) { + return window['go']['main']['App']['RenameNote'](arg1, arg2); +} + +export function DeleteNote(arg1) { + return window['go']['main']['App']['DeleteNote'](arg1); +} + export function ListFiles(arg1) { return window['go']['main']['App']['ListFiles'](arg1); } diff --git a/internal/core/files/file.go b/internal/core/files/file.go index 139b382..ddfd6cb 100644 --- a/internal/core/files/file.go +++ b/internal/core/files/file.go @@ -610,6 +610,14 @@ func (s *Service) trashRecord(r Record) error { return err } +// TrashFile moves a single file record's physical file to .verstak/trash/ +// and marks the record as missing=1. This is the same mechanism used by +// deleteFileRecords, exposed as a public method for individual file trashing +// (e.g. from notes.Delete). +func (s *Service) TrashFile(rec *Record) error { + return s.trashRecord(*rec) +} + func (s *Service) deleteFileRecords(nodeID string) error { records, err := s.ListByNode(nodeID) if err != nil { diff --git a/internal/core/notes/note.go b/internal/core/notes/note.go index 395c4c3..19d3641 100644 --- a/internal/core/notes/note.go +++ b/internal/core/notes/note.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "path/filepath" + "strings" "time" "verstak/internal/core/files" @@ -13,6 +14,58 @@ import ( "verstak/internal/core/util" ) +// NotesFolder is the canonical name for the notes subdirectory inside a case/project. +const NotesFolder = "Notes" + +// noteFileRoot returns the absolute path to the notes subdirectory for a given parent. +// For parentless notes it returns /Notes. +func noteFileRoot(vaultRoot, parentFsPath string) string { + if parentFsPath != "" { + return filepath.Join(vaultRoot, parentFsPath, NotesFolder) + } + return filepath.Join(vaultRoot, NotesFolder) +} + +// assertContained verifies that targetPath is strictly under rootDir. +// It resolves symlinks in the target path to prevent symlink-based escapes. +// Returns an error if targetPath escapes rootDir via .. or symlinks. +func assertContained(rootDir, targetPath string) error { + cleanRoot := filepath.Clean(rootDir) + cleanTarget := filepath.Clean(targetPath) + + // Resolve symlinks in the target path to get the real path. + // If the path doesn't exist yet (e.g. for Create), we resolve as much + // as possible and check the unresolved remainder separately. + resolvedTarget, err := filepath.EvalSymlinks(cleanTarget) + if err != nil { + // Path doesn't exist — resolve the parent directory instead. + dir := filepath.Dir(cleanTarget) + resolvedDir, dirErr := filepath.EvalSymlinks(dir) + if dirErr != nil { + // Parent doesn't exist either — fall back to Clean-based check. + rel, relErr := filepath.Rel(cleanRoot, cleanTarget) + if relErr != nil { + return fmt.Errorf("path containment check failed: %w", relErr) + } + if strings.HasPrefix(rel, "..") { + return fmt.Errorf("path %q escapes root %q", cleanTarget, cleanRoot) + } + return nil + } + // Reconstruct target with resolved parent + original base name. + resolvedTarget = filepath.Join(resolvedDir, filepath.Base(cleanTarget)) + } + + rel, err := filepath.Rel(cleanRoot, resolvedTarget) + if err != nil { + return fmt.Errorf("path containment check failed: %w", err) + } + if strings.HasPrefix(rel, "..") { + return fmt.Errorf("path %q (resolved: %q) escapes root %q", cleanTarget, resolvedTarget, cleanRoot) + } + return nil +} + // Record represents a note entry (links a node to a file). type Record struct { NodeID string `json:"node_id"` @@ -47,25 +100,34 @@ func (s *Service) Create(parentID, title, section string) (*nodes.Node, *files.R } filename := seg + ".md" - var destDir string + // Determine the canonical notes directory + var parentFsPath string if parentID != "" { parent, err := s.nodes.GetActive(parentID) if err == nil && parent.FsPath != "" { - destDir = filepath.Join(s.vaultRoot, parent.FsPath) + parentFsPath = parent.FsPath } } - if destDir == "" { - destDir = s.vaultRoot - } + destDir := noteFileRoot(s.vaultRoot, parentFsPath) if err := os.MkdirAll(destDir, 0o750); err != nil { return nil, nil, fmt.Errorf("mkdir: %w", err) } dest := filepath.Join(destDir, filename) + + // Path containment check: the resolved file must stay under destDir + if err := assertContained(destDir, dest); err != nil { + return nil, nil, err + } + if _, err := os.Stat(dest); err == nil { filename = fmt.Sprintf("%s_%s.md", seg, node.ID[:8]) dest = filepath.Join(destDir, filename) + // Re-check containment after rename + if err := assertContained(destDir, dest); err != nil { + return nil, nil, err + } } if err := os.WriteFile(dest, []byte("# "+title+"\n\n"), 0o640); err != nil { @@ -155,9 +217,97 @@ func (s *Service) Save(nodeID, content string) error { return err } -// Delete soft-deletes the note node. +// Delete soft-deletes the note node and moves the backing .md file to the +// shared vault trash directory (/.verstak/trash/) using the same +// trashRecord mechanism as files.DeleteNodeAndChildren. This ensures the +// deleted note appears in the unified Trash UI and can be restored/permanently +// deleted through the existing trash workflow. func (s *Service) Delete(nodeID string) error { - return s.nodes.SoftDelete(nodeID) + // Load the note record to find the file. + rec, err := s.Load(nodeID) + if err != nil { + return fmt.Errorf("load note: %w", err) + } + + // Get the full file record for trashRecord. + fileRec, err := s.files.Get(rec.FileID) + if err != nil { + return fmt.Errorf("get file record: %w", err) + } + + // Soft-delete the node first. + if err := s.nodes.SoftDelete(nodeID); err != nil { + return fmt.Errorf("soft-delete node: %w", err) + } + + // Move the .md file to the shared trash using the existing trashRecord. + // This places the file in /.verstak/trash/_ + // and marks the file record as missing=1 so it can be restored later. + if err := s.files.TrashFile(fileRec); err != nil { + return fmt.Errorf("trash file: %w", err) + } + + return nil +} + +// Rename changes the note title and renames the backing .md file on disk. +// If a file with the target name already exists, the operation is rejected. +func (s *Service) Rename(nodeID, newTitle string) error { + if err := s.nodes.UpdateTitle(nodeID, newTitle); err != nil { + return fmt.Errorf("update title: %w", err) + } + + // Load the note record to find the file. + rec, err := s.Load(nodeID) + if err != nil { + return fmt.Errorf("load note: %w", err) + } + + // Get the current file record. + var oldPath, oldFilename, storageMode string + err = s.db.QueryRow( + `SELECT path, filename, storage_mode FROM files WHERE id = ?`, rec.FileID, + ).Scan(&oldPath, &oldFilename, &storageMode) + if err != nil { + return fmt.Errorf("query file: %w", err) + } + + // Build old and new absolute paths. + var oldAbs string + if storageMode == "vault" { + oldAbs = filepath.Join(s.vaultRoot, oldPath) + } else { + oldAbs = oldPath + } + oldDir := filepath.Dir(oldAbs) + + seg := templates.SafeDisplayNameToPathSegment(newTitle) + if seg == "" { + seg = "note" + } + newFilename := seg + ".md" + newAbs := filepath.Join(oldDir, newFilename) + + // Collision check: reject if target exists and is different from source. + if newAbs != oldAbs { + if _, err := os.Stat(newAbs); err == nil { + return fmt.Errorf("file %q already exists", newFilename) + } + if err := os.Rename(oldAbs, newAbs); err != nil { + return fmt.Errorf("rename file: %w", err) + } + // Update file record. + newRel, _ := filepath.Rel(s.vaultRoot, newAbs) + _, err = s.db.Exec( + `UPDATE files SET filename=?, path=?, updated_at=? WHERE id=?`, + newFilename, newRel, utcNow(), rec.FileID, + ) + if err != nil { + return fmt.Errorf("update file record: %w", err) + } + } + + return nil } // Load looks up the note record for a node. diff --git a/internal/core/notes/note_path_test.go b/internal/core/notes/note_path_test.go new file mode 100644 index 0000000..3e6b2fc --- /dev/null +++ b/internal/core/notes/note_path_test.go @@ -0,0 +1,137 @@ +package notes + +import ( + "os" + "path/filepath" + "testing" +) + +func TestAssertContained(t *testing.T) { + tests := []struct { + name string + root string + target string + wantErr bool + }{ + { + name: "file inside root", + root: "/tmp/vault/Notes", + target: "/tmp/vault/Notes/test.md", + wantErr: false, + }, + { + name: "file at root boundary", + root: "/tmp/vault/Notes", + target: "/tmp/vault/Notes", + wantErr: false, + }, + { + name: "path traversal via ..", + root: "/tmp/vault/Notes", + target: "/tmp/vault/Notes/../../../etc/passwd", + wantErr: true, + }, + { + name: "path traversal to parent", + root: "/tmp/vault/Notes", + target: "/tmp/vault/other/file.md", + wantErr: true, + }, + { + name: "completely different path", + root: "/tmp/vault/Notes", + target: "/etc/passwd", + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + root := filepath.Clean(tt.root) + target := filepath.Clean(tt.target) + err := assertContained(root, target) + if (err != nil) != tt.wantErr { + t.Errorf("assertContained(%q, %q) error = %v, wantErr %v", root, target, err, tt.wantErr) + } + }) + } +} + +func TestAssertContainedSymlinkEscape(t *testing.T) { + dir := t.TempDir() + + // Create a real directory structure. + notesDir := filepath.Join(dir, "vault", "Notes") + os.MkdirAll(notesDir, 0o750) + + // Create a directory outside the vault. + outsideDir := filepath.Join(dir, "outside") + os.MkdirAll(outsideDir, 0o750) + + // Create a file outside the vault. + outsideFile := filepath.Join(outsideDir, "secret.md") + os.WriteFile(outsideFile, []byte("secret"), 0o640) + + // Create a symlink inside Notes/ pointing outside. + symlinkPath := filepath.Join(notesDir, "escape.md") + if err := os.Symlink(outsideFile, symlinkPath); err != nil { + t.Skipf("cannot create symlink: %v", err) + } + + // assertContained should detect the symlink escape. + err := assertContained(notesDir, symlinkPath) + if err == nil { + t.Error("expected error for symlink escape, got nil") + } +} + +func TestAssertContainedNonExistentPath(t *testing.T) { + dir := t.TempDir() + notesDir := filepath.Join(dir, "vault", "Notes") + os.MkdirAll(notesDir, 0o750) + + // Non-existent file inside root — should pass. + err := assertContained(notesDir, filepath.Join(notesDir, "newfile.md")) + if err != nil { + t.Errorf("expected no error for non-existent file inside root: %v", err) + } + + // Non-existent file outside root — should fail. + err = assertContained(notesDir, filepath.Join(dir, "outside", "file.md")) + if err == nil { + t.Error("expected error for non-existent file outside root") + } +} + +func TestNoteFileRoot(t *testing.T) { + tests := []struct { + name string + vaultRoot string + parentFsPath string + want string + }{ + { + name: "parentless note", + vaultRoot: "/tmp/vault", + parentFsPath: "", + want: "/tmp/vault/Notes", + }, + { + name: "note inside project", + vaultRoot: "/tmp/vault", + parentFsPath: "Projects/MyProject", + want: "/tmp/vault/Projects/MyProject/Notes", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := noteFileRoot(tt.vaultRoot, tt.parentFsPath) + got = filepath.Clean(got) + want := filepath.Clean(tt.want) + if got != want { + t.Errorf("noteFileRoot(%q, %q) = %q, want %q", tt.vaultRoot, tt.parentFsPath, got, want) + } + }) + } +} diff --git a/internal/core/notes/note_rename_test.go b/internal/core/notes/note_rename_test.go new file mode 100644 index 0000000..65c7b38 --- /dev/null +++ b/internal/core/notes/note_rename_test.go @@ -0,0 +1,311 @@ +package notes + +import ( + "os" + "path/filepath" + "strings" + "testing" + + "verstak/internal/core/files" + "verstak/internal/core/nodes" + "verstak/internal/core/storage" +) + +func setupRenameService(t *testing.T) (*Service, *nodes.Repository, string) { + t.Helper() + dir := t.TempDir() + db, err := storage.Open(filepath.Join(dir, "test.db")) + if err != nil { + t.Fatalf("open db: %v", err) + } + t.Cleanup(func() { db.Close() }) + nodeRepo := nodes.NewRepository(db) + fileSvc := files.NewService(db, dir, nodeRepo) + svc := NewService(db, dir, nodeRepo, fileSvc) + return svc, nodeRepo, dir +} + +func TestRenameNote(t *testing.T) { + svc, nodeRepo, _ := setupRenameService(t) + + node, _, err := svc.Create("", "Original Title", "") + if err != nil { + t.Fatalf("Create: %v", err) + } + + // Rename + err = svc.Rename(node.ID, "New Title") + if err != nil { + t.Fatalf("Rename: %v", err) + } + + // Verify node title updated + updated, err := nodeRepo.GetActive(node.ID) + if err != nil { + t.Fatalf("GetActive: %v", err) + } + if updated.Title != "New Title" { + t.Errorf("title = %q, want %q", updated.Title, "New Title") + } + + // Verify slug updated + if !strings.Contains(updated.Slug, "new") { + t.Errorf("slug = %q, want containing 'new'", updated.Slug) + } +} + +func TestRenameNoteRenamesFile(t *testing.T) { + svc, nodeRepo, vaultRoot := setupRenameService(t) + + node, _, err := svc.Create("", "Original Title", "") + if err != nil { + t.Fatalf("Create: %v", err) + } + + // Write content. + content := "# Original Title\n\nSome content." + if err := svc.Save(node.ID, content); err != nil { + t.Fatalf("Save: %v", err) + } + + // Rename should rename the file on disk. + if err := svc.Rename(node.ID, "Renamed Title"); err != nil { + t.Fatalf("Rename: %v", err) + } + + // Verify node title updated. + updated, err := nodeRepo.GetActive(node.ID) + if err != nil { + t.Fatalf("GetActive: %v", err) + } + if updated.Title != "Renamed Title" { + t.Errorf("title = %q, want %q", updated.Title, "Renamed Title") + } + + // Verify old file no longer exists. + oldPath := filepath.Join(vaultRoot, "Notes", "Original Title.md") + if _, err := os.Stat(oldPath); !os.IsNotExist(err) { + t.Error("old file should not exist after rename") + } + + // Verify new file exists with correct content. + newPath := filepath.Join(vaultRoot, "Notes", "Renamed Title.md") + data, err := os.ReadFile(newPath) + if err != nil { + t.Fatalf("ReadFile: %v", err) + } + if string(data) != content { + t.Errorf("content = %q, want %q", string(data), content) + } +} + +func TestRenameNoteCollisionRejected(t *testing.T) { + svc, _, _ := setupRenameService(t) + + // Create two notes. + node1, _, err := svc.Create("", "Note Alpha", "") + if err != nil { + t.Fatalf("Create note1: %v", err) + } + _, _, err = svc.Create("", "Note Beta", "") + if err != nil { + t.Fatalf("Create note2: %v", err) + } + + // Renaming note1 to "Note Beta" should fail — file already exists. + err = svc.Rename(node1.ID, "Note Beta") + if err == nil { + t.Error("expected error for rename collision, got nil") + } + if !strings.Contains(err.Error(), "already exists") { + t.Errorf("expected 'already exists' error, got: %v", err) + } +} + +func TestRenameNoteEmptyTitle(t *testing.T) { + svc, _, _ := setupRenameService(t) + + node, _, err := svc.Create("", "Valid Title", "") + if err != nil { + t.Fatalf("Create: %v", err) + } + + // Try to rename with empty title — should fail + err = svc.Rename(node.ID, "") + if err == nil { + t.Error("expected error for empty title") + } +} + +func TestDeleteNoteSoftDeletesNode(t *testing.T) { + svc, nodeRepo, _ := setupRenameService(t) + + node, _, err := svc.Create("", "To Delete", "") + if err != nil { + t.Fatalf("Create: %v", err) + } + + // Delete + if err := svc.Delete(node.ID); err != nil { + t.Fatalf("Delete: %v", err) + } + + // Verify node is soft-deleted + _, err = nodeRepo.GetActive(node.ID) + if err == nil { + t.Error("expected deleted node to be inactive") + } +} + +func TestDeleteNoteDoesNotAffectOtherNotes(t *testing.T) { + svc, _, vaultRoot := setupRenameService(t) + + // Create two notes + node1, _, err := svc.Create("", "Note One", "") + if err != nil { + t.Fatalf("Create note1: %v", err) + } + node2, _, err := svc.Create("", "Note Two", "") + if err != nil { + t.Fatalf("Create note2: %v", err) + } + + // Save content to both + svc.Save(node1.ID, "content one") + svc.Save(node2.ID, "content two") + + // Delete note1 + if err := svc.Delete(node1.ID); err != nil { + t.Fatalf("Delete: %v", err) + } + + // Verify note2 content is still readable + content, err := svc.Read(node2.ID) + if err != nil { + t.Fatalf("Read note2: %v", err) + } + if content != "content two" { + t.Errorf("note2 content = %q, want %q", content, "content two") + } + + _ = vaultRoot +} + +func TestPathTraversalBlocked(t *testing.T) { + svc, _, vaultRoot := setupRenameService(t) + + // Try to create a note with path traversal in title + node, _, err := svc.Create("", "../../../etc/passwd", "") + if err != nil { + t.Fatalf("Create: %v", err) + } + + // Verify the file was created with sanitized name, not traversing + content, err := svc.Read(node.ID) + if err != nil { + t.Fatalf("Read: %v", err) + } + _ = content + + // Check that no file exists outside vault + suspicious := filepath.Join(vaultRoot, "..", "..", "..", "etc", "passwd.md") + if _, err := os.Stat(suspicious); err == nil { + t.Error("path traversal succeeded — file created outside vault") + } +} + +func TestDeleteNoteMovesFileToSharedTrash(t *testing.T) { + svc, _, vaultRoot := setupRenameService(t) + + node, _, err := svc.Create("", "To Delete", "") + if err != nil { + t.Fatalf("Create: %v", err) + } + + // Write content + content := "# To Delete\n\nThis content should survive deletion." + if err := svc.Save(node.ID, content); err != nil { + t.Fatalf("Save: %v", err) + } + + // Get the file record to know the trash file name. + rec, err := svc.Load(node.ID) + if err != nil { + t.Fatalf("Load: %v", err) + } + fileRec, err := svc.files.Get(rec.FileID) + if err != nil { + t.Fatalf("Get file: %v", err) + } + + // Delete (soft-delete + move to shared trash) + if err := svc.Delete(node.ID); err != nil { + t.Fatalf("Delete: %v", err) + } + + // Verify original file no longer exists at original location + origPath := filepath.Join(vaultRoot, "Notes", "To Delete.md") + if _, err := os.Stat(origPath); !os.IsNotExist(err) { + t.Error("original file should not exist at original location after delete") + } + + // Verify file exists in shared trash (not in trash/notes/) + trashDir := filepath.Join(vaultRoot, ".verstak", "trash") + trashFile := filepath.Join(trashDir, fileRec.ID+"_"+fileRec.Filename) + data, err := os.ReadFile(trashFile) + if err != nil { + t.Fatalf("ReadFile trash: %v", err) + } + if string(data) != content { + t.Errorf("trash content = %q, want %q", string(data), content) + } + + // Verify file record is marked missing=1 + updatedRec, err := svc.files.Get(rec.FileID) + if err != nil { + t.Fatalf("Get file after delete: %v", err) + } + if !updatedRec.Missing { + t.Error("file record should be marked missing=1 after delete") + } +} + +func TestDeleteNoteNoActiveNodeForOrphan(t *testing.T) { + svc, nodeRepo, vaultRoot := setupRenameService(t) + + node, _, err := svc.Create("", "Orphan Test", "") + if err != nil { + t.Fatalf("Create: %v", err) + } + + // Delete + if err := svc.Delete(node.ID); err != nil { + t.Fatalf("Delete: %v", err) + } + + // Node should not be active + _, err = nodeRepo.GetActive(node.ID) + if err == nil { + t.Error("deleted node should not be returned by GetActive") + } + + // File should be in shared trash, not in Notes/ + notesPath := filepath.Join(vaultRoot, "Notes", "Orphan Test.md") + if _, err := os.Stat(notesPath); !os.IsNotExist(err) { + t.Error("file should not remain in Notes/ after delete") + } + + // Verify file is in shared trash (not trash/notes/) + trashDir := filepath.Join(vaultRoot, ".verstak", "trash") + entries, _ := os.ReadDir(trashDir) + found := false + for _, e := range entries { + if e.Name() != "" { + found = true + break + } + } + if !found { + t.Error("file should exist in shared trash/") + } +} diff --git a/internal/core/notes/note_test.go b/internal/core/notes/note_test.go index b203e92..2db8d63 100644 --- a/internal/core/notes/note_test.go +++ b/internal/core/notes/note_test.go @@ -49,8 +49,8 @@ func TestCreateAndRead(t *testing.T) { t.Errorf("content = %q", content) } - // Verify file on disk (in vault root for parentless notes). - entries, _ := os.ReadDir(vaultRoot) + // Verify file on disk (in vault/notes/ for parentless notes). + entries, _ := os.ReadDir(filepath.Join(vaultRoot, "Notes")) var mdFiles int for _, e := range entries { if !e.IsDir() && filepath.Ext(e.Name()) == ".md" {