From 996322f3a9f38de06b046390ec4d9e36dd35fb59 Mon Sep 17 00:00:00 2001
From: mirivlad
Date: Mon, 1 Jun 2026 22:17:18 +0800
Subject: [PATCH] gui: actions CRUD + FromTemplate bindings + UI
- CreateAction / DeleteAction Wails bindings
- FromTemplate / ListTemplates bindings with recursive tree creation
- Plugin manager stored in App struct for template access
- Action creation modal (title, kind, data) in Overview and Actions tabs
- Delete action button on action cards
- Template selector in new-node dialog
---
cmd/verstak-gui/app.go | 80 ++++++++++
.../frontend-dist/assets/main-5x3eoU2l.css | 1 -
.../frontend-dist/assets/main-BnVt-oqm.css | 1 +
.../frontend-dist/assets/main-DZkGJWBF.js | 16 ++
.../frontend-dist/assets/main-DtITCkHU.js | 16 --
cmd/verstak-gui/frontend-dist/index.html | 4 +-
cmd/verstak-gui/main.go | 4 +-
frontend/src/App.svelte | 145 ++++++++++++++++--
8 files changed, 233 insertions(+), 34 deletions(-)
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-5x3eoU2l.css
create mode 100644 cmd/verstak-gui/frontend-dist/assets/main-BnVt-oqm.css
create mode 100644 cmd/verstak-gui/frontend-dist/assets/main-DZkGJWBF.js
delete mode 100644 cmd/verstak-gui/frontend-dist/assets/main-DtITCkHU.js
diff --git a/cmd/verstak-gui/app.go b/cmd/verstak-gui/app.go
index 5a2b804..4042f91 100644
--- a/cmd/verstak-gui/app.go
+++ b/cmd/verstak-gui/app.go
@@ -17,6 +17,7 @@ import (
"verstak/internal/core/files"
"verstak/internal/core/notes"
"verstak/internal/core/nodes"
+ "verstak/internal/core/plugins"
"verstak/internal/core/search"
"verstak/internal/core/storage"
"verstak/internal/core/worklog"
@@ -35,6 +36,7 @@ type App struct {
actions *actions.Service
worklog *worklog.Service
search *search.Service
+ plugins *plugins.Manager
vault string
}
@@ -392,6 +394,66 @@ func (a *App) DeleteNode(id string) error {
return a.nodes.SoftDelete(id)
}
+// ============================================================
+// Templates
+// ============================================================
+
+type TemplateDTO struct {
+ Name string `json:"name"`
+ Description string `json:"description"`
+ Icon string `json:"icon"`
+}
+
+func (a *App) ListTemplates() []TemplateDTO {
+ templates := a.plugins.Templates()
+ out := make([]TemplateDTO, 0, len(templates))
+ for _, t := range templates {
+ out = append(out, TemplateDTO{
+ Name: t.Name,
+ Description: t.Description,
+ Icon: t.Icon,
+ })
+ }
+ return out
+}
+
+func (a *App) FromTemplate(parentID, nodeType, title, section, template string) (*NodeDTO, error) {
+ var tmpl *plugins.TemplateDefinition
+ for _, t := range a.plugins.Templates() {
+ if t.Name == template {
+ tmpl = &t
+ break
+ }
+ }
+ if tmpl == nil {
+ return nil, fmt.Errorf("template %q not found", template)
+ }
+ root, err := a.nodes.Create(parentID, tmpl.RootType, title, section)
+ if err != nil {
+ return nil, err
+ }
+ var createTree func(parentID string, nodes []plugins.TreeNode) error
+ createTree = func(parentID string, nodes []plugins.TreeNode) error {
+ for _, tn := range nodes {
+ child, err := a.nodes.Create(parentID, tn.Type, tn.Title, "")
+ if err != nil {
+ return err
+ }
+ if len(tn.Children) > 0 {
+ if err := createTree(child.ID, tn.Children); err != nil {
+ return err
+ }
+ }
+ }
+ return nil
+ }
+ if err := createTree(root.ID, tmpl.Tree); err != nil {
+ return nil, err
+ }
+ dto := toNodeDTO(root)
+ return &dto, nil
+}
+
// ============================================================
// Notes
// ============================================================
@@ -658,6 +720,24 @@ func (a *App) ListActions(nodeID string) ([]ActionDTO, error) {
return result, nil
}
+func (a *App) CreateAction(nodeID, kind, title, data string) (*ActionDTO, error) {
+ rec, err := a.actions.Create(nodeID, kind, title, data, "", data, nil, kind == "run_command" || kind == "run_script", false)
+ if err != nil {
+ return nil, err
+ }
+ return &ActionDTO{
+ ID: rec.ID,
+ NodeID: rec.NodeID,
+ Title: rec.Title,
+ Type: rec.Kind,
+ Data: data,
+ }, nil
+}
+
+func (a *App) DeleteAction(id string) error {
+ return a.actions.Delete(id)
+}
+
func (a *App) RunAction(id string) error {
_, err := a.actions.Run(id)
return err
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-5x3eoU2l.css b/cmd/verstak-gui/frontend-dist/assets/main-5x3eoU2l.css
deleted file mode 100644
index d024ec2..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-5x3eoU2l.css
+++ /dev/null
@@ -1 +0,0 @@
-.file-row.svelte-1u905d2.svelte-1u905d2{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-1u905d2.svelte-1u905d2:hover{background:#1e1e30}.file-row--selected.svelte-1u905d2.svelte-1u905d2{background:#1e1e3a;outline:1px solid #3a3a6c}.file-row--selected.svelte-1u905d2.svelte-1u905d2:hover{background:#252545}.file-row.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-1u905d2.svelte-1u905d2{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-1u905d2.svelte-1u905d2{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-1u905d2.svelte-1u905d2{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-1u905d2.svelte-1u905d2{color:#444}.file-row-actions.svelte-1u905d2.svelte-1u905d2{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-1u905d2:hover .file-row-actions.svelte-1u905d2{opacity:1}.action-btn.svelte-1u905d2.svelte-1u905d2{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-1u905d2.svelte-1u905d2:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-1u905d2.svelte-1u905d2:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-backdrop.svelte-1u905d2.svelte-1u905d2{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.menu.svelte-1u905d2.svelte-1u905d2{position:absolute;right:12px;margin-top:4px;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-1u905d2.svelte-1u905d2{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-1u905d2.svelte-1u905d2:hover{background:#2a2a3c;color:#fff}.menu-item-danger.svelte-1u905d2.svelte-1u905d2{color:#ff6b6b}.menu-item-danger.svelte-1u905d2.svelte-1u905d2:hover{background:#3a2222}.menu-item.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-sep.svelte-1u905d2.svelte-1u905d2{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}.svelte-xaaokk.svelte-xaaokk,.svelte-xaaokk.svelte-xaaokk:before,.svelte-xaaokk.svelte-xaaokk:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-xaaokk.svelte-xaaokk{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}.sidebar.svelte-xaaokk.svelte-xaaokk{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-xaaokk.svelte-xaaokk{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-xaaokk.svelte-xaaokk{font-size:20px;line-height:1}.brand-name.svelte-xaaokk.svelte-xaaokk{font-size:16px;font-weight:600}.sidebar-nav.svelte-xaaokk.svelte-xaaokk{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-xaaokk.svelte-xaaokk{margin-bottom:16px}.nav-label.svelte-xaaokk.svelte-xaaokk{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-xaaokk.svelte-xaaokk{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-xaaokk.svelte-xaaokk:hover{background:#223}.nav-item.selected.svelte-xaaokk.svelte-xaaokk{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-xaaokk.svelte-xaaokk{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-xaaokk.svelte-xaaokk{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555}.main.svelte-xaaokk.svelte-xaaokk{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-xaaokk.svelte-xaaokk{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-xaaokk.svelte-xaaokk{font-size:14px;font-weight:500}.crumb.placeholder.svelte-xaaokk.svelte-xaaokk{color:#666}.crumb-type.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-xaaokk.svelte-xaaokk{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-xaaokk.svelte-xaaokk{background:none;border:none;color:#f66;cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:2px}.dismiss-btn.svelte-xaaokk.svelte-xaaokk:hover{color:#f44}.tabs.svelte-xaaokk.svelte-xaaokk{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-xaaokk.svelte-xaaokk{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-xaaokk.svelte-xaaokk:hover{color:#ccc}.tab.active.svelte-xaaokk.svelte-xaaokk{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-xaaokk.svelte-xaaokk{flex:1;overflow-y:auto}.note-editor.svelte-xaaokk.svelte-xaaokk{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-xaaokk.svelte-xaaokk{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-xaaokk.svelte-xaaokk{font-size:16px;font-weight:500}.dirty-mark.svelte-xaaokk.svelte-xaaokk{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-xaaokk.svelte-xaaokk{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-xaaokk.svelte-xaaokk{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-xaaokk.svelte-xaaokk{padding:24px}.overview.svelte-xaaokk h2.svelte-xaaokk{font-size:24px;margin-bottom:16px}.meta-grid.svelte-xaaokk.svelte-xaaokk{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-xaaokk.svelte-xaaokk{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-xaaokk.svelte-xaaokk{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-xaaokk.svelte-xaaokk{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-xaaokk.svelte-xaaokk{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-xaaokk.svelte-xaaokk:hover{background:#223}.qa-btn.svelte-xaaokk.svelte-xaaokk:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-xaaokk.svelte-xaaokk{margin-bottom:24px}.recent-section.svelte-xaaokk h3.svelte-xaaokk{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-xaaokk.svelte-xaaokk{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-xaaokk.svelte-xaaokk:hover{background:#1a1a28}.recent-date.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555}.recent-entry.svelte-xaaokk.svelte-xaaokk{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-xaaokk.svelte-xaaokk{padding:24px}.tab-toolbar.svelte-xaaokk.svelte-xaaokk{margin-bottom:16px}.create-form.svelte-xaaokk.svelte-xaaokk{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-xaaokk input.svelte-xaaokk{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-xaaokk input.svelte-xaaokk:focus{outline:none;border-color:#6366f1}.form-actions.svelte-xaaokk.svelte-xaaokk{display:flex;gap:8px}.notes-list.svelte-xaaokk.svelte-xaaokk{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-xaaokk.svelte-xaaokk{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-xaaokk.svelte-xaaokk:hover{border-color:#3a3a5c}.note-card-title.svelte-xaaokk.svelte-xaaokk{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555}.worklog-tab.svelte-xaaokk.svelte-xaaokk{padding:24px}.worklog-form.svelte-xaaokk.svelte-xaaokk{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-xaaokk input.svelte-xaaokk{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-xaaokk input.svelte-xaaokk:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-xaaokk input[type=text].svelte-xaaokk{flex:1}.worklog-form.svelte-xaaokk input[type=number].svelte-xaaokk{width:70px}.worklog-entry.svelte-xaaokk.svelte-xaaokk{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555;margin-top:2px}.action-card.svelte-xaaokk.svelte-xaaokk{background:#1a1a28;padding:12px 16px;border-radius:8px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.action-type.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.empty-state.svelte-xaaokk.svelte-xaaokk{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-xaaokk p.svelte-xaaokk{margin:0;font-size:14px;color:#666}.empty-state.svelte-xaaokk .empty-icon.svelte-xaaokk{margin-bottom:12px;color:#444}.empty-state.svelte-xaaokk .hint.svelte-xaaokk{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-xaaokk .empty-actions.svelte-xaaokk{display:flex;gap:8px;justify-content:center;margin-top:16px}.empty-note.svelte-xaaokk.svelte-xaaokk{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-xaaokk.svelte-xaaokk{padding:48px 24px;text-align:center}.welcome.svelte-xaaokk h2.svelte-xaaokk{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-xaaokk p.svelte-xaaokk{color:#666;font-size:14px}.error-text.svelte-xaaokk.svelte-xaaokk{color:#f88}.fab.svelte-xaaokk.svelte-xaaokk{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-xaaokk.svelte-xaaokk:hover{background:#4f46e5}.modal-overlay.svelte-xaaokk.svelte-xaaokk{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-xaaokk.svelte-xaaokk{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-xaaokk h3.svelte-xaaokk{font-size:18px;margin-bottom:16px}.form-group.svelte-xaaokk.svelte-xaaokk{margin-bottom:12px}.form-group.svelte-xaaokk label.svelte-xaaokk{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-xaaokk input.svelte-xaaokk,.form-group.svelte-xaaokk select.svelte-xaaokk{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-xaaokk select.svelte-xaaokk{-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-xaaokk input.svelte-xaaokk:focus,.form-group.svelte-xaaokk select.svelte-xaaokk:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-xaaokk.svelte-xaaokk{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-xaaokk.svelte-xaaokk{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-xaaokk.svelte-xaaokk:hover{background:#223}.btn-primary.svelte-xaaokk.svelte-xaaokk{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-xaaokk.svelte-xaaokk:hover{background:#4f46e5}.btn.svelte-xaaokk.svelte-xaaokk:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-xaaokk.svelte-xaaokk{padding:4px 10px;font-size:12px}.btn-danger.svelte-xaaokk.svelte-xaaokk{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-xaaokk.svelte-xaaokk:hover{background:#3a2222}.files-tab.svelte-xaaokk.svelte-xaaokk{padding:20px}.files-tab.svelte-xaaokk .tab-toolbar.svelte-xaaokk{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-xaaokk.svelte-xaaokk{display:flex;flex-direction:column}.back-btn.svelte-xaaokk.svelte-xaaokk{margin-bottom:4px;display:inline-flex;align-items:center;gap:4px}.import-summary.svelte-xaaokk.svelte-xaaokk{margin-bottom:16px}.summary-row.svelte-xaaokk.svelte-xaaokk{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-xaaokk.svelte-xaaokk{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}.rename-error.svelte-xaaokk.svelte-xaaokk{color:#ff6b6b;font-size:12px;margin-top:4px}.today-dashboard.svelte-xaaokk.svelte-xaaokk{padding:24px;overflow-y:auto;flex:1}.today-header.svelte-xaaokk.svelte-xaaokk{display:flex;align-items:baseline;gap:12px;margin-bottom:16px}.today-header.svelte-xaaokk h2.svelte-xaaokk{font-size:24px}.today-date.svelte-xaaokk.svelte-xaaokk{font-size:13px;color:#666}.today-summary.svelte-xaaokk.svelte-xaaokk{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.summary-chip.svelte-xaaokk.svelte-xaaokk{font-size:12px;color:#b0b0c0;background:#1a1a28;border:1px solid #2a2a3c;padding:4px 12px;border-radius:16px}.today-case.svelte-xaaokk.svelte-xaaokk{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;margin-bottom:12px;overflow:hidden}.today-case-header.svelte-xaaokk.svelte-xaaokk{padding:12px 16px;display:flex;align-items:center;gap:8px;border-bottom:1px solid #2a2a3c;cursor:pointer}.today-case-header.svelte-xaaokk.svelte-xaaokk:hover{background:#1e1e30}.today-case-title.svelte-xaaokk.svelte-xaaokk{font-weight:500}.today-case-type.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.today-case-count.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#6366f1;margin-left:4px}.today-case-time.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555;margin-left:auto}.today-events.svelte-xaaokk.svelte-xaaokk{padding:8px 16px}.today-event.svelte-xaaokk.svelte-xaaokk{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;color:#b0b0c0;cursor:pointer}.today-event.svelte-xaaokk.svelte-xaaokk:hover{color:#e4e4ef}.today-event-icon.svelte-xaaokk.svelte-xaaokk{width:18px;text-align:center;color:#6366f1;font-size:13px}.today-event-title.svelte-xaaokk.svelte-xaaokk{flex:1}.today-event-type.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#666}.today-event-time.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555;margin-left:auto}.today-events-empty.svelte-xaaokk.svelte-xaaokk{padding:8px 16px;font-size:13px;color:#666;font-style:italic}.today-empty.svelte-xaaokk.svelte-xaaokk{padding:48px 24px;text-align:center}.today-empty.svelte-xaaokk p.svelte-xaaokk{color:#666;font-size:14px;margin:0}.today-empty.svelte-xaaokk .hint.svelte-xaaokk{font-size:12px;color:#555;margin-top:8px}.today-timeline.svelte-xaaokk.svelte-xaaokk{margin-top:24px}.today-timeline.svelte-xaaokk h3.svelte-xaaokk{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:12px}.timeline-event.svelte-xaaokk.svelte-xaaokk{display:flex;align-items:center;gap:10px;font-size:13px;color:#b0b0c0;border-left:2px solid #2a2a3c;padding:6px 0 6px 16px;margin-left:4px;cursor:pointer}.timeline-event.svelte-xaaokk.svelte-xaaokk:hover{color:#e4e4ef}.timeline-dot.svelte-xaaokk.svelte-xaaokk{width:6px;height:6px;border-radius:50%;background:#6366f1;margin-left:-19px;flex-shrink:0}.timeline-title.svelte-xaaokk.svelte-xaaokk{flex:1}.timeline-type.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#666}.timeline-time.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555}.activity-tab.svelte-xaaokk.svelte-xaaokk{padding:24px}.activity-events.svelte-xaaokk.svelte-xaaokk{display:flex;flex-direction:column;gap:2px}.activity-event.svelte-xaaokk.svelte-xaaokk{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:13px;color:#b0b0c0;cursor:pointer}.activity-event.svelte-xaaokk.svelte-xaaokk:hover{background:#1a1a28;color:#e4e4ef}.activity-event-icon.svelte-xaaokk.svelte-xaaokk{width:18px;text-align:center;color:#6366f1;font-size:13px;flex-shrink:0}.activity-event-title.svelte-xaaokk.svelte-xaaokk{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-event-type.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#666;flex-shrink:0}.activity-event-target.svelte-xaaokk.svelte-xaaokk{font-size:10px;color:#555;background:#1e1e2e;padding:1px 6px;border-radius:8px;flex-shrink:0}.activity-event-time.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555;margin-left:8px;flex-shrink:0}.activity-feed.svelte-xaaokk.svelte-xaaokk{padding:24px;overflow-y:auto;flex:1}.activity-feed-header.svelte-xaaokk.svelte-xaaokk{margin-bottom:20px}.activity-feed-header.svelte-xaaokk h2.svelte-xaaokk{font-size:24px}.activity-feed-events.svelte-xaaokk.svelte-xaaokk{display:flex;flex-direction:column;gap:2px}.activity-feed-event.svelte-xaaokk.svelte-xaaokk{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer}.activity-feed-event.svelte-xaaokk.svelte-xaaokk:hover{background:#1a1a28;color:#e4e4ef}.activity-feed-icon.svelte-xaaokk.svelte-xaaokk{width:20px;text-align:center;color:#6366f1;font-size:14px;flex-shrink:0;margin-top:1px}.activity-feed-body.svelte-xaaokk.svelte-xaaokk{flex:1;min-width:0}.activity-feed-title.svelte-xaaokk.svelte-xaaokk{font-size:14px;color:#e4e4ef}.activity-feed-meta.svelte-xaaokk.svelte-xaaokk{display:flex;align-items:center;gap:8px;margin-top:2px}.activity-feed-type.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#666}.activity-feed-target.svelte-xaaokk.svelte-xaaokk{font-size:10px;color:#555;background:#1e1e2e;padding:1px 6px;border-radius:8px}.activity-feed-time.svelte-xaaokk.svelte-xaaokk{font-size:11px;color:#555}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-BnVt-oqm.css b/cmd/verstak-gui/frontend-dist/assets/main-BnVt-oqm.css
new file mode 100644
index 0000000..26d7c87
--- /dev/null
+++ b/cmd/verstak-gui/frontend-dist/assets/main-BnVt-oqm.css
@@ -0,0 +1 @@
+.file-row.svelte-1u905d2.svelte-1u905d2{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-1u905d2.svelte-1u905d2:hover{background:#1e1e30}.file-row--selected.svelte-1u905d2.svelte-1u905d2{background:#1e1e3a;outline:1px solid #3a3a6c}.file-row--selected.svelte-1u905d2.svelte-1u905d2:hover{background:#252545}.file-row.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:-2px}.file-row-icon.svelte-1u905d2.svelte-1u905d2{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#888}.file-row-body.svelte-1u905d2.svelte-1u905d2{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.file-row-name.svelte-1u905d2.svelte-1u905d2{font-size:13px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.file-row-meta.svelte-1u905d2.svelte-1u905d2{display:flex;align-items:center;gap:4px;font-size:11px;color:#666}.meta-sep.svelte-1u905d2.svelte-1u905d2{color:#444}.file-row-actions.svelte-1u905d2.svelte-1u905d2{display:flex;gap:2px;align-items:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.file-row.svelte-1u905d2:hover .file-row-actions.svelte-1u905d2{opacity:1}.action-btn.svelte-1u905d2.svelte-1u905d2{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-1u905d2.svelte-1u905d2:hover{background:#2a2a3c;color:#ccc}.action-btn-danger.svelte-1u905d2.svelte-1u905d2:hover{background:#3a2222;color:#ff6b6b}.action-btn.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-backdrop.svelte-1u905d2.svelte-1u905d2{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.menu.svelte-1u905d2.svelte-1u905d2{position:absolute;right:12px;margin-top:4px;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-1u905d2.svelte-1u905d2{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-1u905d2.svelte-1u905d2:hover{background:#2a2a3c;color:#fff}.menu-item-danger.svelte-1u905d2.svelte-1u905d2{color:#ff6b6b}.menu-item-danger.svelte-1u905d2.svelte-1u905d2:hover{background:#3a2222}.menu-item.svelte-1u905d2.svelte-1u905d2:focus-visible{outline:2px solid #5588ff;outline-offset:1px}.menu-sep.svelte-1u905d2.svelte-1u905d2{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}.svelte-oqcj5z.svelte-oqcj5z,.svelte-oqcj5z.svelte-oqcj5z:before,.svelte-oqcj5z.svelte-oqcj5z:after{box-sizing:border-box;margin:0;padding:0}.app.svelte-oqcj5z.svelte-oqcj5z{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}.sidebar.svelte-oqcj5z.svelte-oqcj5z{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-oqcj5z.svelte-oqcj5z{padding:16px 20px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #2a2a3c;flex-shrink:0}.logo.svelte-oqcj5z.svelte-oqcj5z{font-size:20px;line-height:1}.brand-name.svelte-oqcj5z.svelte-oqcj5z{font-size:16px;font-weight:600}.sidebar-nav.svelte-oqcj5z.svelte-oqcj5z{flex:1;overflow-y:auto;padding:12px 0}.nav-group.svelte-oqcj5z.svelte-oqcj5z{margin-bottom:16px}.nav-label.svelte-oqcj5z.svelte-oqcj5z{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#666;padding:4px 20px;margin-bottom:4px}.nav-item.svelte-oqcj5z.svelte-oqcj5z{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-oqcj5z.svelte-oqcj5z:hover{background:#223}.nav-item.selected.svelte-oqcj5z.svelte-oqcj5z{background:#2a2a4a;color:#fff;font-weight:500}.nav-empty.svelte-oqcj5z.svelte-oqcj5z{padding:8px 20px;color:#555;font-size:12px}.sidebar-footer.svelte-oqcj5z.svelte-oqcj5z{padding:12px 20px;border-top:1px solid #2a2a3c;flex-shrink:0}.version.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555}.main.svelte-oqcj5z.svelte-oqcj5z{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;overflow:hidden;background:#13131f}.header.svelte-oqcj5z.svelte-oqcj5z{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;flex-shrink:0;min-height:48px}.crumb.svelte-oqcj5z.svelte-oqcj5z{font-size:14px;font-weight:500}.crumb.placeholder.svelte-oqcj5z.svelte-oqcj5z{color:#666}.crumb-type.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555;background:#1e1e2e;padding:2px 8px;border-radius:10px;margin-left:8px}.error-banner.svelte-oqcj5z.svelte-oqcj5z{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-oqcj5z.svelte-oqcj5z{background:none;border:none;color:#f66;cursor:pointer;padding:2px;display:flex;align-items:center;border-radius:2px}.dismiss-btn.svelte-oqcj5z.svelte-oqcj5z:hover{color:#f44}.tabs.svelte-oqcj5z.svelte-oqcj5z{display:flex;border-bottom:1px solid #2a2a3c;flex-shrink:0;padding:0 24px}.tab.svelte-oqcj5z.svelte-oqcj5z{padding:10px 16px;border:none;background:none;color:#888;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit}.tab.svelte-oqcj5z.svelte-oqcj5z:hover{color:#ccc}.tab.active.svelte-oqcj5z.svelte-oqcj5z{color:#e4e4ef;border-bottom-color:#6366f1}.tab-content.svelte-oqcj5z.svelte-oqcj5z{flex:1;overflow-y:auto}.note-editor.svelte-oqcj5z.svelte-oqcj5z{flex:1;display:flex;flex-direction:column;height:100%}.note-editor-header.svelte-oqcj5z.svelte-oqcj5z{padding:12px 24px;border-bottom:1px solid #2a2a3c;display:flex;align-items:center;gap:12px;flex-shrink:0}.note-title.svelte-oqcj5z.svelte-oqcj5z{font-size:16px;font-weight:500}.dirty-mark.svelte-oqcj5z.svelte-oqcj5z{color:#f59e0b;font-size:10px}.note-editor-actions.svelte-oqcj5z.svelte-oqcj5z{margin-left:auto;display:flex;gap:8px}.note-textarea.svelte-oqcj5z.svelte-oqcj5z{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-oqcj5z.svelte-oqcj5z{padding:24px}.overview.svelte-oqcj5z h2.svelte-oqcj5z{font-size:24px;margin-bottom:16px}.meta-grid.svelte-oqcj5z.svelte-oqcj5z{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.meta-item.svelte-oqcj5z.svelte-oqcj5z{background:#1a1a28;padding:12px 16px;border-radius:8px}.meta-label.svelte-oqcj5z.svelte-oqcj5z{display:block;font-size:11px;color:#666;margin-bottom:4px;text-transform:uppercase}.quick-actions.svelte-oqcj5z.svelte-oqcj5z{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.qa-btn.svelte-oqcj5z.svelte-oqcj5z{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-oqcj5z.svelte-oqcj5z:hover{background:#223}.qa-btn.svelte-oqcj5z.svelte-oqcj5z:disabled{opacity:.4;cursor:not-allowed}.recent-section.svelte-oqcj5z.svelte-oqcj5z{margin-bottom:24px}.recent-section.svelte-oqcj5z h3.svelte-oqcj5z{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:8px}.recent-note.svelte-oqcj5z.svelte-oqcj5z{padding:8px 12px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between}.recent-note.svelte-oqcj5z.svelte-oqcj5z:hover{background:#1a1a28}.recent-date.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555}.recent-entry.svelte-oqcj5z.svelte-oqcj5z{padding:6px 0;font-size:13px;color:#888;border-bottom:1px solid #1a1a28}.notes-tab.svelte-oqcj5z.svelte-oqcj5z{padding:24px}.tab-toolbar.svelte-oqcj5z.svelte-oqcj5z{margin-bottom:16px}.create-form.svelte-oqcj5z.svelte-oqcj5z{background:#1a1a28;padding:16px;border-radius:8px;margin-bottom:16px}.create-form.svelte-oqcj5z input.svelte-oqcj5z{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-oqcj5z input.svelte-oqcj5z:focus{outline:none;border-color:#6366f1}.form-actions.svelte-oqcj5z.svelte-oqcj5z{display:flex;gap:8px}.notes-list.svelte-oqcj5z.svelte-oqcj5z{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.note-card.svelte-oqcj5z.svelte-oqcj5z{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;padding:16px;cursor:pointer}.note-card.svelte-oqcj5z.svelte-oqcj5z:hover{border-color:#3a3a5c}.note-card-title.svelte-oqcj5z.svelte-oqcj5z{font-size:14px;font-weight:500;margin-bottom:4px}.note-card-date.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555}.worklog-tab.svelte-oqcj5z.svelte-oqcj5z{padding:24px}.worklog-form.svelte-oqcj5z.svelte-oqcj5z{display:flex;gap:8px;margin-bottom:24px;align-items:center}.worklog-form.svelte-oqcj5z input.svelte-oqcj5z{padding:8px 12px;border:1px solid #2a2a3c;background:#13131f;color:#e4e4ef;border-radius:4px;font-size:14px;font-family:inherit}.worklog-form.svelte-oqcj5z input.svelte-oqcj5z:focus{outline:none;border-color:#6366f1}.worklog-form.svelte-oqcj5z input[type=text].svelte-oqcj5z{flex:1}.worklog-form.svelte-oqcj5z input[type=number].svelte-oqcj5z{width:70px}.worklog-entry.svelte-oqcj5z.svelte-oqcj5z{padding:12px 0;border-bottom:1px solid #1a1a28}.wl-meta.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555;margin-top:2px}.actions-tab.svelte-oqcj5z.svelte-oqcj5z{padding:24px}.action-card.svelte-oqcj5z.svelte-oqcj5z{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-oqcj5z.svelte-oqcj5z{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.action-title.svelte-oqcj5z.svelte-oqcj5z{font-weight:500}.action-type.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px;white-space:nowrap}.action-data.svelte-oqcj5z.svelte-oqcj5z{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-oqcj5z.svelte-oqcj5z{display:flex;gap:4px;flex-shrink:0}.action-btns.svelte-oqcj5z .btn-danger.svelte-oqcj5z{color:#ff6b6b;border-color:#4a2222;padding:4px 8px}.action-btns.svelte-oqcj5z .btn-danger.svelte-oqcj5z:hover{background:#3a2222}.empty-state.svelte-oqcj5z.svelte-oqcj5z{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center}.empty-state.svelte-oqcj5z p.svelte-oqcj5z{margin:0;font-size:14px;color:#666}.empty-state.svelte-oqcj5z .empty-icon.svelte-oqcj5z{margin-bottom:12px;color:#444}.empty-state.svelte-oqcj5z .hint.svelte-oqcj5z{font-size:12px;color:#555;margin-top:6px}.empty-state.svelte-oqcj5z .empty-actions.svelte-oqcj5z{display:flex;gap:8px;justify-content:center;margin-top:16px}.empty-note.svelte-oqcj5z.svelte-oqcj5z{font-size:12px;color:#444;margin-top:16px}.welcome.svelte-oqcj5z.svelte-oqcj5z{padding:48px 24px;text-align:center}.welcome.svelte-oqcj5z h2.svelte-oqcj5z{font-size:32px;font-weight:300;color:#8888a4;margin-bottom:16px}.welcome.svelte-oqcj5z p.svelte-oqcj5z{color:#666;font-size:14px}.error-text.svelte-oqcj5z.svelte-oqcj5z{color:#f88}.fab.svelte-oqcj5z.svelte-oqcj5z{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:#6366f1;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #6366f166}.fab.svelte-oqcj5z.svelte-oqcj5z:hover{background:#4f46e5}.modal-overlay.svelte-oqcj5z.svelte-oqcj5z{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-oqcj5z.svelte-oqcj5z{background:#1a1a28;border:1px solid #2a2a3c;border-radius:12px;padding:24px;width:400px;max-width:90vw}.modal.svelte-oqcj5z h3.svelte-oqcj5z{font-size:18px;margin-bottom:16px}.form-group.svelte-oqcj5z.svelte-oqcj5z{margin-bottom:12px}.form-group.svelte-oqcj5z label.svelte-oqcj5z{display:block;font-size:12px;color:#666;margin-bottom:4px}.form-group.svelte-oqcj5z input.svelte-oqcj5z,.form-group.svelte-oqcj5z select.svelte-oqcj5z{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-oqcj5z select.svelte-oqcj5z{-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-oqcj5z input.svelte-oqcj5z:focus,.form-group.svelte-oqcj5z select.svelte-oqcj5z:focus{outline:none;border-color:#6366f1}.modal-actions.svelte-oqcj5z.svelte-oqcj5z{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.btn.svelte-oqcj5z.svelte-oqcj5z{padding:8px 16px;border:1px solid #2a2a3c;background:#1a1a28;color:#ccc;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit}.btn.svelte-oqcj5z.svelte-oqcj5z:hover{background:#223}.btn-primary.svelte-oqcj5z.svelte-oqcj5z{background:#6366f1;border-color:#6366f1;color:#fff}.btn-primary.svelte-oqcj5z.svelte-oqcj5z:hover{background:#4f46e5}.btn.svelte-oqcj5z.svelte-oqcj5z:disabled{opacity:.4;cursor:not-allowed}.btn-sm.svelte-oqcj5z.svelte-oqcj5z{padding:4px 10px;font-size:12px}.btn-danger.svelte-oqcj5z.svelte-oqcj5z{color:#ff6b6b;border-color:#4a2222}.btn-danger.svelte-oqcj5z.svelte-oqcj5z:hover{background:#3a2222}.files-tab.svelte-oqcj5z.svelte-oqcj5z{padding:20px}.files-tab.svelte-oqcj5z .tab-toolbar.svelte-oqcj5z{display:flex;gap:8px;align-items:center;margin-bottom:16px}.file-list.svelte-oqcj5z.svelte-oqcj5z{display:flex;flex-direction:column}.back-btn.svelte-oqcj5z.svelte-oqcj5z{margin-bottom:4px;display:inline-flex;align-items:center;gap:4px}.import-summary.svelte-oqcj5z.svelte-oqcj5z{margin-bottom:16px}.summary-row.svelte-oqcj5z.svelte-oqcj5z{display:flex;justify-content:space-between;padding:6px 0;font-size:14px;border-bottom:1px solid #2a2a3c}.summary-warn.svelte-oqcj5z.svelte-oqcj5z{margin-top:8px;padding:8px 12px;background:#3a2a22;border-radius:6px;color:#fa6;font-size:13px}.rename-error.svelte-oqcj5z.svelte-oqcj5z{color:#ff6b6b;font-size:12px;margin-top:4px}.today-dashboard.svelte-oqcj5z.svelte-oqcj5z{padding:24px;overflow-y:auto;flex:1}.today-header.svelte-oqcj5z.svelte-oqcj5z{display:flex;align-items:baseline;gap:12px;margin-bottom:16px}.today-header.svelte-oqcj5z h2.svelte-oqcj5z{font-size:24px}.today-date.svelte-oqcj5z.svelte-oqcj5z{font-size:13px;color:#666}.today-summary.svelte-oqcj5z.svelte-oqcj5z{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.summary-chip.svelte-oqcj5z.svelte-oqcj5z{font-size:12px;color:#b0b0c0;background:#1a1a28;border:1px solid #2a2a3c;padding:4px 12px;border-radius:16px}.today-case.svelte-oqcj5z.svelte-oqcj5z{background:#1a1a28;border:1px solid #2a2a3c;border-radius:8px;margin-bottom:12px;overflow:hidden}.today-case-header.svelte-oqcj5z.svelte-oqcj5z{padding:12px 16px;display:flex;align-items:center;gap:8px;border-bottom:1px solid #2a2a3c;cursor:pointer}.today-case-header.svelte-oqcj5z.svelte-oqcj5z:hover{background:#1e1e30}.today-case-title.svelte-oqcj5z.svelte-oqcj5z{font-weight:500}.today-case-type.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#888;background:#223;padding:2px 8px;border-radius:10px}.today-case-count.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#6366f1;margin-left:4px}.today-case-time.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555;margin-left:auto}.today-events.svelte-oqcj5z.svelte-oqcj5z{padding:8px 16px}.today-event.svelte-oqcj5z.svelte-oqcj5z{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;color:#b0b0c0;cursor:pointer}.today-event.svelte-oqcj5z.svelte-oqcj5z:hover{color:#e4e4ef}.today-event-icon.svelte-oqcj5z.svelte-oqcj5z{width:18px;text-align:center;color:#6366f1;font-size:13px}.today-event-title.svelte-oqcj5z.svelte-oqcj5z{flex:1}.today-event-type.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#666}.today-event-time.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555;margin-left:auto}.today-events-empty.svelte-oqcj5z.svelte-oqcj5z{padding:8px 16px;font-size:13px;color:#666;font-style:italic}.today-empty.svelte-oqcj5z.svelte-oqcj5z{padding:48px 24px;text-align:center}.today-empty.svelte-oqcj5z p.svelte-oqcj5z{color:#666;font-size:14px;margin:0}.today-empty.svelte-oqcj5z .hint.svelte-oqcj5z{font-size:12px;color:#555;margin-top:8px}.today-timeline.svelte-oqcj5z.svelte-oqcj5z{margin-top:24px}.today-timeline.svelte-oqcj5z h3.svelte-oqcj5z{font-size:13px;color:#666;text-transform:uppercase;margin-bottom:12px}.timeline-event.svelte-oqcj5z.svelte-oqcj5z{display:flex;align-items:center;gap:10px;font-size:13px;color:#b0b0c0;border-left:2px solid #2a2a3c;padding:6px 0 6px 16px;margin-left:4px;cursor:pointer}.timeline-event.svelte-oqcj5z.svelte-oqcj5z:hover{color:#e4e4ef}.timeline-dot.svelte-oqcj5z.svelte-oqcj5z{width:6px;height:6px;border-radius:50%;background:#6366f1;margin-left:-19px;flex-shrink:0}.timeline-title.svelte-oqcj5z.svelte-oqcj5z{flex:1}.timeline-type.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#666}.timeline-time.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555}.activity-tab.svelte-oqcj5z.svelte-oqcj5z{padding:24px}.activity-events.svelte-oqcj5z.svelte-oqcj5z{display:flex;flex-direction:column;gap:2px}.activity-event.svelte-oqcj5z.svelte-oqcj5z{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:13px;color:#b0b0c0;cursor:pointer}.activity-event.svelte-oqcj5z.svelte-oqcj5z:hover{background:#1a1a28;color:#e4e4ef}.activity-event-icon.svelte-oqcj5z.svelte-oqcj5z{width:18px;text-align:center;color:#6366f1;font-size:13px;flex-shrink:0}.activity-event-title.svelte-oqcj5z.svelte-oqcj5z{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-event-type.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#666;flex-shrink:0}.activity-event-target.svelte-oqcj5z.svelte-oqcj5z{font-size:10px;color:#555;background:#1e1e2e;padding:1px 6px;border-radius:8px;flex-shrink:0}.activity-event-time.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555;margin-left:8px;flex-shrink:0}.activity-feed.svelte-oqcj5z.svelte-oqcj5z{padding:24px;overflow-y:auto;flex:1}.activity-feed-header.svelte-oqcj5z.svelte-oqcj5z{margin-bottom:20px}.activity-feed-header.svelte-oqcj5z h2.svelte-oqcj5z{font-size:24px}.activity-feed-events.svelte-oqcj5z.svelte-oqcj5z{display:flex;flex-direction:column;gap:2px}.activity-feed-event.svelte-oqcj5z.svelte-oqcj5z{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer}.activity-feed-event.svelte-oqcj5z.svelte-oqcj5z:hover{background:#1a1a28;color:#e4e4ef}.activity-feed-icon.svelte-oqcj5z.svelte-oqcj5z{width:20px;text-align:center;color:#6366f1;font-size:14px;flex-shrink:0;margin-top:1px}.activity-feed-body.svelte-oqcj5z.svelte-oqcj5z{flex:1;min-width:0}.activity-feed-title.svelte-oqcj5z.svelte-oqcj5z{font-size:14px;color:#e4e4ef}.activity-feed-meta.svelte-oqcj5z.svelte-oqcj5z{display:flex;align-items:center;gap:8px;margin-top:2px}.activity-feed-type.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#666}.activity-feed-target.svelte-oqcj5z.svelte-oqcj5z{font-size:10px;color:#555;background:#1e1e2e;padding:1px 6px;border-radius:8px}.activity-feed-time.svelte-oqcj5z.svelte-oqcj5z{font-size:11px;color:#555}
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-DZkGJWBF.js b/cmd/verstak-gui/frontend-dist/assets/main-DZkGJWBF.js
new file mode 100644
index 0000000..6d42c2a
--- /dev/null
+++ b/cmd/verstak-gui/frontend-dist/assets/main-DZkGJWBF.js
@@ -0,0 +1,16 @@
+var so=Object.defineProperty;var co=(l,e,t)=>e in l?so(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var ht=(l,e,t)=>co(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 s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function G(){}function kn(l){return l()}function Qt(){return Object.create(null)}function ce(l){l.forEach(kn)}function gn(l){return typeof l=="function"}function Ve(l,e){return l!=l?e==e:l!==e||l&&typeof l=="object"||typeof l=="function"}let $e;function tt(l,e){return l===e?!0:($e||($e=document.createElement("a")),$e.href=e,l===$e.href)}function ro(l){return Object.keys(l).length===0}function ao(l){return l??""}function r(l,e){l.appendChild(e)}function g(l,e,t){l.insertBefore(e,t||null)}function k(l){l.parentNode&&l.parentNode.removeChild(l)}function ve(l,e){for(let t=0;tl.removeEventListener(e,t,n)}function je(l){return function(e){return e.stopPropagation(),l.call(this,e)}}function Re(l){return function(e){e.target===this&&l.call(this,e)}}function c(l,e,t){t==null?l.removeAttribute(e):l.getAttribute(e)!==t&&l.setAttribute(e,t)}function yn(l){return l===""?null:+l}function fo(l){return Array.from(l.childNodes)}function H(l,e){e=""+e,l.data!==e&&(l.data=e)}function de(l,e){l.value=e??""}function Be(l,e,t){for(let n=0;n{const i=l.$$.callbacks[e];if(i){const s=uo(e,t,{cancelable:n});return i.slice().forEach(o=>{o.call(l,s)}),!s.defaultPrevented}return!0}}function _o(l,e){const t=l.$$.callbacks[e.type];t&&t.slice().forEach(n=>n.call(this,e))}const Fe=[],$t=[];let He=[];const el=[],po=Promise.resolve();let gt=!1;function mo(){gt||(gt=!0,po.then(zn))}function Oe(l){He.push(l)}const kt=new Set;let Ne=0;function zn(){if(Ne!==0)return;const l=Je;do{try{for(;Nel.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),He=e}const et=new Set;let De;function ze(){De={r:0,c:[],p:De}}function qe(){De.r||ce(De.c),De=De.p}function re(l,e){l&&l.i&&(et.delete(l),l.i(e))}function ue(l,e,t,n){if(l&&l.o){if(et.has(l))return;et.add(l),De.c.push(()=>{et.delete(l),n&&(t&&l.d(1),n())}),l.o(e)}else n&&n()}function ee(l){return(l==null?void 0:l.length)!==void 0?l:Array.from(l)}function bo(l,e){ue(l,1,1,()=>{e.delete(l.key)})}function ko(l,e,t,n,i,s,o,a,f,_,m,h){let p=l.length,v=s.length,w=p;const b={};for(;w--;)b[l[w].key]=w;const y=[],z=new Map,M=new Map,E=[];for(w=v;w--;){const S=h(i,s,w),T=t(S);let C=o.get(T);C?E.push(()=>C.p(S,e)):(C=_(T,S),C.c()),z.set(T,y[w]=C),T in b&&M.set(T,Math.abs(w-b[T]))}const q=new Set,N=new Set;function O(S){re(S,1),S.m(a,m),o.set(S.key,S),m=S.first,v--}for(;p&&v;){const S=y[v-1],T=l[p-1],C=S.key,D=T.key;S===T?(m=S.first,p--,v--):z.has(D)?!o.has(C)||q.has(C)?O(S):N.has(D)?p--:M.get(C)>M.get(D)?(N.add(C),O(S)):(q.add(D),p--):(f(T,o),p--)}for(;p--;){const S=l[p];z.has(S.key)||f(S,o)}for(;v;)O(y[v-1]);return ce(E),y}function Ie(l){l&&l.c()}function Me(l,e,t){const{fragment:n,after_update:i}=l.$$;n&&n.m(e,t),Oe(()=>{const s=l.$$.on_mount.map(kn).filter(gn);l.$$.on_destroy?l.$$.on_destroy.push(...s):ce(s),l.$$.on_mount=[]}),i.forEach(Oe)}function Le(l,e){const t=l.$$;t.fragment!==null&&(ho(t.after_update),ce(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function go(l,e){l.$$.dirty[0]===-1&&(Fe.push(l),mo(),l.$$.dirty.fill(0)),l.$$.dirty[e/31|0]|=1<{const w=v.length?v[0]:p;return _.ctx&&i(_.ctx[h],_.ctx[h]=w)&&(!_.skip_bound&&_.bound[h]&&_.bound[h](w),m&&go(l,h)),p}):[],_.update(),m=!0,ce(_.before_update),_.fragment=n?n(_.ctx):!1,e.target){if(e.hydrate){const h=fo(e.target);_.fragment&&_.fragment.l(h),h.forEach(k)}else _.fragment&&_.fragment.c();e.intro&&re(l.$$.fragment),Me(l,e.target,e.anchor),zn()}Ue(f)}class We{constructor(){ht(this,"$$");ht(this,"$$set")}$destroy(){Le(this,1),this.$destroy=G}$on(e,t){if(!gn(t))return G;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&&!ro(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const yo="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(yo);function wo(l){let e,t;return{c(){e=W("path"),t=W("polyline"),c(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),c(t,"points","14 2 14 8 20 8")},m(n,i){g(n,e,i),g(n,t,i)},d(n){n&&(k(e),k(t))}}}function jo(l){let e,t,n,i,s;return{c(){e=W("path"),t=W("polyline"),n=W("line"),i=W("line"),s=W("polyline"),c(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),c(t,"points","14 2 14 8 20 8"),c(n,"x1","16"),c(n,"y1","13"),c(n,"x2","8"),c(n,"y2","13"),c(i,"x1","16"),c(i,"y1","17"),c(i,"x2","8"),c(i,"y2","17"),c(s,"points","10 9 9 9 8 9")},m(o,a){g(o,e,a),g(o,t,a),g(o,n,a),g(o,i,a),g(o,s,a)},d(o){o&&(k(e),k(t),k(n),k(i),k(s))}}}function zo(l){let e,t;return{c(){e=W("polyline"),t=W("polyline"),c(e,"points","16 18 22 12 16 6"),c(t,"points","8 6 2 12 8 18")},m(n,i){g(n,e,i),g(n,t,i)},d(n){n&&(k(e),k(t))}}}function qo(l){let e,t,n,i;return{c(){e=W("path"),t=W("polyline"),n=W("line"),i=W("rect"),c(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),c(t,"points","7 3 12 8 17 3"),c(n,"x1","3"),c(n,"y1","8"),c(n,"x2","21"),c(n,"y2","8"),c(i,"x","10"),c(i,"y","12"),c(i,"width","4"),c(i,"height","4"),c(i,"rx","1")},m(s,o){g(s,e,o),g(s,t,o),g(s,n,o),g(s,i,o)},d(s){s&&(k(e),k(t),k(n),k(i))}}}function Co(l){let e,t,n,i,s;return{c(){e=W("path"),t=W("polyline"),n=W("line"),i=W("line"),s=W("line"),c(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),c(t,"points","14 2 14 8 20 8"),c(n,"x1","9"),c(n,"y1","12"),c(n,"x2","15"),c(n,"y2","12"),c(i,"x1","9"),c(i,"y1","15"),c(i,"x2","13"),c(i,"y2","15"),c(s,"x1","12"),c(s,"y1","15"),c(s,"x2","12"),c(s,"y2","18")},m(o,a){g(o,e,a),g(o,t,a),g(o,n,a),g(o,i,a),g(o,s,a)},d(o){o&&(k(e),k(t),k(n),k(i),k(s))}}}function To(l){let e,t,n,i,s,o;return{c(){e=W("path"),t=W("polyline"),n=W("line"),i=W("line"),s=W("line"),o=W("line"),c(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),c(t,"points","14 2 14 8 20 8"),c(n,"x1","8"),c(n,"y1","12"),c(n,"x2","16"),c(n,"y2","12"),c(i,"x1","8"),c(i,"y1","16"),c(i,"x2","16"),c(i,"y2","16"),c(s,"x1","8"),c(s,"y1","14"),c(s,"x2","12"),c(s,"y2","14"),c(o,"x1","12"),c(o,"y1","12"),c(o,"x2","12"),c(o,"y2","18")},m(a,f){g(a,e,f),g(a,t,f),g(a,n,f),g(a,i,f),g(a,s,f),g(a,o,f)},d(a){a&&(k(e),k(t),k(n),k(i),k(s),k(o))}}}function Mo(l){let e,t,n,i;return{c(){e=W("path"),t=W("polyline"),n=W("line"),i=W("line"),c(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),c(t,"points","14 2 14 8 20 8"),c(n,"x1","16"),c(n,"y1","13"),c(n,"x2","8"),c(n,"y2","13"),c(i,"x1","16"),c(i,"y1","17"),c(i,"x2","8"),c(i,"y2","17")},m(s,o){g(s,e,o),g(s,t,o),g(s,n,o),g(s,i,o)},d(s){s&&(k(e),k(t),k(n),k(i))}}}function Lo(l){let e,t,n,i,s;return{c(){e=W("path"),t=W("polyline"),n=W("line"),i=W("line"),s=W("line"),c(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),c(t,"points","14 2 14 8 20 8"),c(n,"x1","8"),c(n,"y1","12"),c(n,"x2","16"),c(n,"y2","12"),c(i,"x1","8"),c(i,"y1","16"),c(i,"x2","16"),c(i,"y2","16"),c(s,"x1","8"),c(s,"y1","14"),c(s,"x2","12"),c(s,"y2","14")},m(o,a){g(o,e,a),g(o,t,a),g(o,n,a),g(o,i,a),g(o,s,a)},d(o){o&&(k(e),k(t),k(n),k(i),k(s))}}}function So(l){let e,t,n;return{c(){e=W("path"),t=W("circle"),n=W("circle"),c(e,"d","M9 18V5l12-2v13"),c(t,"cx","6"),c(t,"cy","18"),c(t,"r","3"),c(n,"cx","18"),c(n,"cy","16"),c(n,"r","3")},m(i,s){g(i,e,s),g(i,t,s),g(i,n,s)},d(i){i&&(k(e),k(t),k(n))}}}function Do(l){let e,t;return{c(){e=W("rect"),t=W("polyline"),c(e,"x","2"),c(e,"y","4"),c(e,"width","20"),c(e,"height","16"),c(e,"rx","2"),c(t,"points","10 9 16 12 10 15 10 9")},m(n,i){g(n,e,i),g(n,t,i)},d(n){n&&(k(e),k(t))}}}function Io(l){let e,t,n;return{c(){e=W("rect"),t=W("circle"),n=W("polyline"),c(e,"x","3"),c(e,"y","3"),c(e,"width","18"),c(e,"height","18"),c(e,"rx","2"),c(e,"ry","2"),c(t,"cx","8.5"),c(t,"cy","8.5"),c(t,"r","1.5"),c(n,"points","21 15 16 10 5 21")},m(i,s){g(i,e,s),g(i,t,s),g(i,n,s)},d(i){i&&(k(e),k(t),k(n))}}}function Eo(l){let e;return{c(){e=W("path"),c(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){g(t,e,n)},d(t){t&&k(e)}}}function Ao(l){let e;function t(s,o){return s[0]==="folder"?Eo:s[0]==="image"?Io:s[0]==="video"?Do:s[0]==="audio"?So:s[0]==="pdf"?Lo:s[0]==="document"?Mo:s[0]==="spreadsheet"?To:s[0]==="presentation"?Co:s[0]==="archive"?qo:s[0]==="code"?zo:s[0]==="text"?jo:wo}let n=t(l),i=n(l);return{c(){e=W("svg"),i.c(),c(e,"width",l[1]),c(e,"height",l[1]),c(e,"viewBox","0 0 24 24"),c(e,"fill","none"),c(e,"stroke","currentColor"),c(e,"stroke-width","1.5"),c(e,"stroke-linecap","round"),c(e,"stroke-linejoin","round"),c(e,"xmlns","http://www.w3.org/2000/svg")},m(s,o){g(s,e,o),i.m(e,null)},p(s,[o]){n!==(n=t(s))&&(i.d(1),i=n(s),i&&(i.c(),i.m(e,null))),o&2&&c(e,"width",s[1]),o&2&&c(e,"height",s[1])},i:G,o:G,d(s){s&&k(e),i.d()}}}function No(l,e,t){let{kind:n="generic"}=e,{size:i=20}=e;return l.$$set=s=>{"kind"in s&&t(0,n=s.kind),"size"in s&&t(1,i=s.size)},[n,i]}class qn extends We{constructor(e){super(),Ke(this,e,No,Ao,Ve,{kind:0,size:1})}}function lt(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 yt={"image/jpeg":"Изображение JPEG","image/png":"Изображение PNG","image/gif":"Изображение GIF","image/webp":"Изображение WebP","image/svg+xml":"Изображение SVG","image/bmp":"Изображение BMP","image/tiff":"Изображение TIFF","image/avif":"Изображение AVIF","application/pdf":"PDF документ","application/msword":"Документ Word","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Документ Word","application/vnd.ms-excel":"Таблица Excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Таблица Excel","application/vnd.ms-powerpoint":"Презентация PowerPoint","application/vnd.openxmlformats-officedocument.presentationml.presentation":"Презентация PowerPoint","application/zip":"ZIP архив","application/gzip":"GZIP архив","application/x-tar":"TAR архив","application/x-7z-compressed":"7z архив","application/x-rar-compressed":"RAR архив","text/plain":"Текстовый файл","text/html":"HTML файл","text/css":"CSS файл","text/javascript":"JavaScript файл","application/json":"JSON файл","application/xml":"XML файл","application/x-yaml":"YAML файл","application/octet-stream":"Бинарный файл","application/x-msdos-program":"Исполняемый файл","inode/directory":"Папка"};function tl(l){return l?yt[l]||l:"Неизвестно"}function Fo(l){if(l.type==="folder")return"Папка";const e=(l.mime||"").toLowerCase();if(yt[e])return yt[e];const n=(l.name||"").toLowerCase().split(".").pop();return n?n.toUpperCase():"Файл"}function Cn(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 Ho=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],Bo=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],Oo=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],Po=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function Tn(l){const e=(l.mime||"").toLowerCase(),n=(l.name||"").toLowerCase().split(".").pop();return Ho.includes(e)||Po.includes(n)}function Mn(l){const e=(l.mime||"").toLowerCase(),n=(l.name||"").toLowerCase().split(".").pop();return Bo.includes(e)||Oo.includes(n)&&n!=="md"&&n!=="markdown"}function Ln(l){return(l.mime||"").toLowerCase().includes("pdf")}function Sn(l){const e=(l.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function Vo(l){return Tn(l)||Ln(l)}function Ro(l){return Mn(l)||Sn(l)}function Ko(l){let e,t,n,i=lt(l[0].size)+"",s;return{c(){e=u("span"),e.textContent="·",t=j(),n=u("span"),s=I(i),c(e,"class","meta-sep svelte-1u905d2")},m(o,a){g(o,e,a),g(o,t,a),g(o,n,a),r(n,s)},p(o,a){a&1&&i!==(i=lt(o[0].size)+"")&&H(s,i)},d(o){o&&(k(e),k(t),k(n))}}}function Wo(l){let e,t,n;return{c(){e=u("button"),e.innerHTML=' ',c(e,"class","action-btn svelte-1u905d2"),c(e,"title","Открыть папку"),c(e,"aria-label","Открыть папку")},m(i,s){g(i,e,s),t||(n=A(e,"click",je(l[27])),t=!0)},p:G,d(i){i&&k(e),t=!1,n()}}}function Go(l){let e,t,n,i,s;return{c(){e=u("button"),e.innerHTML=' ',t=j(),n=u("button"),n.innerHTML=' ',c(e,"class","action-btn svelte-1u905d2"),c(e,"title","Предпросмотр"),c(e,"aria-label","Предпросмотр"),c(n,"class","action-btn svelte-1u905d2"),c(n,"title","Открыть во внешней программе"),c(n,"aria-label","Открыть внешне")},m(o,a){g(o,e,a),g(o,t,a),g(o,n,a),i||(s=[A(e,"click",je(l[26])),A(n,"click",je(l[8]))],i=!0)},p:G,d(o){o&&(k(e),k(t),k(n)),i=!1,ce(s)}}}function ll(l){let e,t,n,i,s,o,a,f,_,m,h,p,v,w,b,y,z,M,E,q,N,O,S,T=l[5]&&Uo(l);return{c(){e=u("div"),t=j(),n=u("div"),i=u("button"),i.innerHTML=`
+ Открыть`,s=j(),o=u("button"),o.innerHTML=`
+ Открыть во внешней программе`,a=j(),T&&T.c(),f=j(),_=u("div"),m=j(),h=u("button"),h.innerHTML=`
+ Переименовать`,p=j(),v=u("button"),v.innerHTML=`
+ Дублировать`,w=j(),b=u("button"),b.innerHTML=`
+ Вырезать`,y=j(),z=u("button"),z.innerHTML=`
+ Копировать`,M=j(),E=u("div"),q=j(),N=u("button"),N.innerHTML=`
+ Удалить`,c(e,"class","menu-backdrop svelte-1u905d2"),c(e,"role","presentation"),c(i,"class","menu-item svelte-1u905d2"),c(i,"role","menuitem"),c(o,"class","menu-item svelte-1u905d2"),c(o,"role","menuitem"),c(_,"class","menu-sep svelte-1u905d2"),c(h,"class","menu-item svelte-1u905d2"),c(h,"role","menuitem"),c(v,"class","menu-item svelte-1u905d2"),c(v,"role","menuitem"),c(b,"class","menu-item svelte-1u905d2"),c(b,"role","menuitem"),c(z,"class","menu-item svelte-1u905d2"),c(z,"role","menuitem"),c(E,"class","menu-sep svelte-1u905d2"),c(N,"class","menu-item menu-item-danger svelte-1u905d2"),c(N,"role","menuitem"),c(n,"class","menu svelte-1u905d2"),c(n,"role","menu")},m(C,D){g(C,e,D),g(C,t,D),g(C,n,D),r(n,i),r(n,s),r(n,o),r(n,a),T&&T.m(n,null),r(n,f),r(n,_),r(n,m),r(n,h),r(n,p),r(n,v),r(n,w),r(n,b),r(n,y),r(n,z),r(n,M),r(n,E),r(n,q),r(n,N),O||(S=[A(e,"click",je(l[17])),A(i,"click",l[15]),A(o,"click",l[8]),A(h,"click",l[11]),A(v,"click",l[12]),A(b,"click",l[13]),A(z,"click",l[14]),A(N,"click",l[10]),A(n,"click",je(l[25]))],O=!0)},p(C,D){C[5]&&T.p(C,D)},d(C){C&&(k(e),k(t),k(n)),T&&T.d(),O=!1,ce(S)}}}function Uo(l){let e,t,n;return{c(){e=u("button"),e.innerHTML=`
+ Показать в проводнике`,c(e,"class","menu-item svelte-1u905d2"),c(e,"role","menuitem")},m(i,s){g(i,e,s),t||(n=A(e,"click",l[9]),t=!0)},p:G,d(i){i&&k(e),t=!1,n()}}}function Jo(l){let e,t,n,i,s,o,a=l[0].name+"",f,_,m,h,p,v,w,b,y,z,M,E,q,N,O,S,T,C,D,R,X,x;n=new qn({props:{kind:l[4],size:22}});let B=!l[5]&&Ko(l);function P(K,oe){return K[5]?Wo:Go}let U=P(l)(l),$=l[2]&&ll(l);return{c(){e=u("div"),t=u("div"),Ie(n.$$.fragment),i=j(),s=u("div"),o=u("div"),f=I(a),m=j(),h=u("div"),p=u("span"),p.textContent=`${l[6]}`,v=j(),B&&B.c(),w=j(),b=u("div"),U.c(),y=j(),z=u("button"),M=W("svg"),E=W("circle"),q=W("circle"),N=W("circle"),O=j(),S=u("button"),S.innerHTML=' ',C=j(),$&&$.c(),D=ye(),c(t,"class","file-row-icon svelte-1u905d2"),c(o,"class","file-row-name svelte-1u905d2"),c(o,"title",_=l[0].name),c(h,"class","file-row-meta svelte-1u905d2"),c(s,"class","file-row-body svelte-1u905d2"),c(E,"cx","12"),c(E,"cy","5"),c(E,"r","2"),c(q,"cx","12"),c(q,"cy","12"),c(q,"r","2"),c(N,"cx","12"),c(N,"cy","19"),c(N,"r","2"),c(M,"width","16"),c(M,"height","16"),c(M,"viewBox","0 0 24 24"),c(M,"fill","currentColor"),c(z,"class","action-btn svelte-1u905d2"),c(z,"title","Ещё"),c(z,"aria-label","Ещё"),c(z,"aria-expanded",l[2]),c(S,"class","action-btn action-btn-danger svelte-1u905d2"),c(S,"title","Удалить"),c(S,"aria-label","Удалить"),c(b,"class","file-row-actions svelte-1u905d2"),c(e,"class","file-row svelte-1u905d2"),c(e,"role","button"),c(e,"tabindex","0"),c(e,"draggable","true"),c(e,"aria-label",T=l[5]?`Папка ${l[0].name}`:`Файл ${l[0].name}`),xt(e,"file-row--selected",l[1])},m(K,oe){g(K,e,oe),r(e,t),Me(n,t,null),r(e,i),r(e,s),r(s,o),r(o,f),r(s,m),r(s,h),r(h,p),r(h,v),B&&B.m(h,null),r(e,w),r(e,b),U.m(b,null),r(b,y),r(b,z),r(z,M),r(M,E),r(M,q),r(M,N),r(b,O),r(b,S),g(K,C,oe),$&&$.m(K,oe),g(K,D,oe),R=!0,X||(x=[A(window,"click",l[17]),A(z,"click",je(l[16])),A(S,"click",je(l[10])),A(e,"click",l[7]),A(e,"contextmenu",l[21]),A(e,"dragstart",l[18]),A(e,"dragover",l[19]),A(e,"drop",l[20])],X=!0)},p(K,[oe]){(!R||oe&1)&&a!==(a=K[0].name+"")&&H(f,a),(!R||oe&1&&_!==(_=K[0].name))&&c(o,"title",_),K[5]||B.p(K,oe),U.p(K,oe),(!R||oe&4)&&c(z,"aria-expanded",K[2]),(!R||oe&1&&T!==(T=K[5]?`Папка ${K[0].name}`:`Файл ${K[0].name}`))&&c(e,"aria-label",T),(!R||oe&2)&&xt(e,"file-row--selected",K[1]),K[2]?$?$.p(K,oe):($=ll(K),$.c(),$.m(D.parentNode,D)):$&&($.d(1),$=null)},i(K){R||(re(n.$$.fragment,K),R=!0)},o(K){ue(n.$$.fragment,K),R=!1},d(K){K&&(k(e),k(C),k(D)),Le(n),B&&B.d(),U.d(),$&&$.d(K),X=!1,ce(x)}}}function Xo(l,e,t){let{item:n}=e,{selected:i=!1}=e,{onDragStart:s}=e,{onDragOver:o}=e,{onDrop:a}=e;const f=nt(),_=Cn(n),m=n.type==="folder",h=Fo(n);let p=!1,v=null;function w(F){F.ctrlKey||F.metaKey?f("toggleSelect",n.id):F.shiftKey?f("rangeSelect",n.id):v?(clearTimeout(v),v=null,m?f("navigate",n.id):f("preview",n)):v=setTimeout(()=>{v=null,f("selectOne",n.id)},250)}function b(){f("openExternal",n.fileId)}function y(){f("showInFolder",n.id)}function z(){t(2,p=!1),f("delete",{id:n.id,type:n.type})}function M(){t(2,p=!1),f("rename",{id:n.id,name:n.name})}function E(){t(2,p=!1),f("duplicate",n.id)}function q(){t(2,p=!1),f("cut",n.id)}function N(){t(2,p=!1),f("copy",n.id)}function O(){t(2,p=!1),m?f("navigate",n.id):f("preview",n)}function S(){t(2,p=!p)}function T(){t(2,p=!1)}function C(F){s&&s(F,n.id)}function D(F){o&&m&&o(F,n.id)}function R(F){a&&m&&a(F,n.id)}function X(F){F.preventDefault(),t(2,p=!0)}function x(F){_o.call(this,l,F)}const B=()=>f("preview",n),P=()=>f("navigate",n.id);return l.$$set=F=>{"item"in F&&t(0,n=F.item),"selected"in F&&t(1,i=F.selected),"onDragStart"in F&&t(22,s=F.onDragStart),"onDragOver"in F&&t(23,o=F.onDragOver),"onDrop"in F&&t(24,a=F.onDrop)},[n,i,p,f,_,m,h,w,b,y,z,M,E,q,N,O,S,T,C,D,R,X,s,o,a,x,B,P]}class Zo extends We{constructor(e){super(),Ke(this,e,Xo,Jo,Ve,{item:0,selected:1,onDragStart:22,onDragOver:23,onDrop:24})}}function nl(l,e,t){const n=l.slice();return n[4]=e[t],n[6]=t,n}function Yo(l){let e;return{c(){e=u("span"),e.textContent="/",c(e,"class","sep svelte-csi2lb")},m(t,n){g(t,e,n)},d(t){t&&k(e)}}}function Qo(l){let e,t=l[4].name+"",n,i,s;function o(){return l[2](l[6])}return{c(){e=u("button"),n=I(t),c(e,"class","crumb crumb--link svelte-csi2lb")},m(a,f){g(a,e,f),r(e,n),i||(s=A(e,"click",o),i=!0)},p(a,f){l=a,f&1&&t!==(t=l[4].name+"")&&H(n,t)},d(a){a&&k(e),i=!1,s()}}}function xo(l){let e,t=l[4].name+"",n;return{c(){e=u("span"),n=I(t),c(e,"class","crumb crumb--current svelte-csi2lb")},m(i,s){g(i,e,s),r(e,n)},p(i,s){s&1&&t!==(t=i[4].name+"")&&H(n,t)},d(i){i&&k(e)}}}function il(l){let e,t,n=l[6]>0&&Yo();function i(a,f){return a[6]===a[0].length-1?xo:Qo}let s=i(l),o=s(l);return{c(){n&&n.c(),e=j(),o.c(),t=ye()},m(a,f){n&&n.m(a,f),g(a,e,f),o.m(a,f),g(a,t,f)},p(a,f){s===(s=i(a))&&o?o.p(a,f):(o.d(1),o=s(a),o&&(o.c(),o.m(t.parentNode,t)))},d(a){a&&(k(e),k(t)),n&&n.d(a),o.d(a)}}}function $o(l){let e,t=ee(l[0]),n=[];for(let i=0;is(a);return l.$$set=a=>{"crumbs"in a&&t(0,n=a.crumbs)},[n,s,o]}class Dn extends We{constructor(e){super(),Ke(this,e,es,$o,Ve,{crumbs:0})}}function ts(l){let e,t,n,i,s,o;return{c(){e=u("div"),t=u("p"),t.textContent="Предпросмотр недоступен для этого типа файлов.",n=j(),i=u("button"),i.textContent="Открыть во внешней программе",c(i,"class","btn btn-sm svelte-1cw3u0m"),c(e,"class","preview-status svelte-1cw3u0m")},m(a,f){g(a,e,f),r(e,t),r(e,n),r(e,i),s||(o=A(i,"click",l[9]),s=!0)},p:G,d(a){a&&k(e),s=!1,o()}}}function ls(l){let e,t;function n(o,a){return a&2&&(e=null),e==null&&(e=!!(o[1]&&o[1].startsWith("data:"))),e?rs:cs}let i=n(l,-1),s=i(l);return{c(){s.c(),t=ye()},m(o,a){s.m(o,a),g(o,t,a)},p(o,a){i===(i=n(o,a))&&s?s.p(o,a):(s.d(1),s=i(o),s&&(s.c(),s.m(t.parentNode,t)))},d(o){o&&k(t),s.d(o)}}}function ns(l){let e,t,n;return{c(){e=u("pre"),t=u("code"),n=I(l[1]),c(e,"class","preview-text svelte-1cw3u0m")},m(i,s){g(i,e,s),r(e,t),r(t,n)},p(i,s){s&2&&H(n,i[1])},d(i){i&&k(e)}}}function is(l){let e,t,n,i;return{c(){e=u("div"),t=u("img"),tt(t.src,n=l[1])||c(t,"src",n),c(t,"alt",i=l[0].name),c(t,"class","preview-image svelte-1cw3u0m"),c(e,"class","preview-image-container svelte-1cw3u0m")},m(s,o){g(s,e,o),r(e,t)},p(s,o){o&2&&!tt(t.src,n=s[1])&&c(t,"src",n),o&1&&i!==(i=s[0].name)&&c(t,"alt",i)},d(s){s&&k(e)}}}function os(l){let e,t,n,i,s,o,a;return{c(){e=u("div"),t=u("p"),n=I(l[3]),i=j(),s=u("button"),s.textContent="Открыть во внешней программе",c(s,"class","btn btn-sm svelte-1cw3u0m"),c(e,"class","preview-status svelte-1cw3u0m")},m(f,_){g(f,e,_),r(e,t),r(t,n),r(e,i),r(e,s),o||(a=A(s,"click",l[9]),o=!0)},p(f,_){_&8&&H(n,f[3])},d(f){f&&k(e),o=!1,a()}}}function ss(l){let e;return{c(){e=u("div"),e.innerHTML="Загрузка...
",c(e,"class","preview-status svelte-1cw3u0m")},m(t,n){g(t,e,n)},p:G,d(t){t&&k(e)}}}function cs(l){let e,t,n,i,s,o;return{c(){e=u("div"),t=u("p"),t.textContent="Предпросмотр PDF недоступен.",n=j(),i=u("button"),i.textContent="Открыть во внешней программе",c(i,"class","btn btn-sm svelte-1cw3u0m"),c(e,"class","preview-status svelte-1cw3u0m")},m(a,f){g(a,e,f),r(e,t),r(e,n),r(e,i),s||(o=A(i,"click",l[9]),s=!0)},p:G,d(a){a&&k(e),s=!1,o()}}}function rs(l){let e,t,n;return{c(){e=u("div"),t=u("embed"),tt(t.src,n=l[1])||c(t,"src",n),c(t,"type","application/pdf"),c(t,"class","preview-pdf svelte-1cw3u0m"),c(e,"class","preview-pdf-container svelte-1cw3u0m")},m(i,s){g(i,e,s),r(e,t)},p(i,s){s&2&&!tt(t.src,n=i[1])&&c(t,"src",n)},d(i){i&&k(e)}}}function as(l){let e,t,n,i,s,o,a,f=l[0].name+"",_,m,h,p,v=lt(l[0].size)+"",w,b,y=tl(l[0].mime)+"",z,M,E,q,N,O,S,T,C,D,R,X;s=new qn({props:{kind:l[8],size:18}});function x(F,U){return F[2]?ss:F[3]?os:F[6]&&F[1]?is:F[5]&&F[1]?ns:F[4]?ls:ts}let B=x(l),P=B(l);return{c(){e=u("div"),t=u("div"),n=u("header"),i=u("div"),Ie(s.$$.fragment),o=j(),a=u("span"),_=I(f),h=j(),p=u("div"),w=I(v),b=I(" · "),z=I(y),M=j(),E=u("div"),q=u("button"),q.innerHTML=' ',N=j(),O=u("button"),O.innerHTML=' ',S=j(),T=u("div"),P.c(),c(a,"class","preview-name svelte-1cw3u0m"),c(a,"title",m=l[0].name),c(i,"class","preview-title svelte-1cw3u0m"),c(p,"class","preview-meta svelte-1cw3u0m"),c(q,"class","action-btn svelte-1cw3u0m"),c(q,"title","Открыть во внешней программе"),c(q,"aria-label","Открыть внешне"),c(O,"class","action-btn action-btn-close svelte-1cw3u0m"),c(O,"title","Close"),c(O,"aria-label","Close preview"),c(E,"class","preview-actions svelte-1cw3u0m"),c(n,"class","preview-header svelte-1cw3u0m"),c(T,"class","preview-body svelte-1cw3u0m"),c(t,"class","modal svelte-1cw3u0m"),c(e,"class","overlay svelte-1cw3u0m"),c(e,"role","dialog"),c(e,"aria-modal","true"),c(e,"aria-label",C=`Preview: ${l[0].name}`)},m(F,U){g(F,e,U),r(e,t),r(t,n),r(n,i),Me(s,i,null),r(i,o),r(i,a),r(a,_),r(n,h),r(n,p),r(p,w),r(p,b),r(p,z),r(n,M),r(n,E),r(E,q),r(E,N),r(E,O),r(t,S),r(t,T),P.m(T,null),D=!0,R||(X=[A(q,"click",l[9]),A(O,"click",l[10]),A(e,"click",Re(l[11]))],R=!0)},p(F,[U]){(!D||U&1)&&f!==(f=F[0].name+"")&&H(_,f),(!D||U&1&&m!==(m=F[0].name))&&c(a,"title",m),(!D||U&1)&&v!==(v=lt(F[0].size)+"")&&H(w,v),(!D||U&1)&&y!==(y=tl(F[0].mime)+"")&&H(z,y),B===(B=x(F))&&P?P.p(F,U):(P.d(1),P=B(F),P&&(P.c(),P.m(T,null))),(!D||U&1&&C!==(C=`Preview: ${F[0].name}`))&&c(e,"aria-label",C)},i(F){D||(re(s.$$.fragment,F),D=!0)},o(F){ue(s.$$.fragment,F),D=!1},d(F){F&&k(e),Le(s),P.d(),R=!1,ce(X)}}}function fs(l,e,t){let n,i,s,{item:o}=e,{content:a=""}=e,{loading:f=!1}=e,{error:_=""}=e;const m=nt(),h=Cn(o);function p(y){y.key==="Escape"&&m("close")}function v(){m("openExternal",o.fileId)}wn(()=>{window.addEventListener("keydown",p)}),jn(()=>{window.removeEventListener("keydown",p)});const w=()=>m("close"),b=()=>m("close");return l.$$set=y=>{"item"in y&&t(0,o=y.item),"content"in y&&t(1,a=y.content),"loading"in y&&t(2,f=y.loading),"error"in y&&t(3,_=y.error)},l.$$.update=()=>{l.$$.dirty&3&&t(6,n=Tn(o)&&a&&a.startsWith("data:")),l.$$.dirty&1&&t(5,i=Mn(o)||Sn(o)),l.$$.dirty&1&&t(4,s=Ln(o))},[o,a,f,_,s,i,n,m,h,v,w,b]}class us extends We{constructor(e){super(),Ke(this,e,fs,as,Ve,{item:0,content:1,loading:2,error:3})}}function ds(l){let e,t,n,i,s,o,a,f,_,m,h,p,v,w,b,y,z;return{c(){e=u("div"),t=u("div"),n=u("h3"),i=I(l[0]),s=j(),o=u("p"),a=I(l[1]),f=j(),_=u("div"),m=u("button"),h=I(l[2]),v=j(),w=u("button"),b=I(l[3]),c(n,"class","svelte-1fv6yyk"),c(o,"class","message svelte-1fv6yyk"),c(m,"class",p="btn "+(l[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk"),c(w,"class","btn svelte-1fv6yyk"),c(_,"class","actions svelte-1fv6yyk"),c(t,"class","modal svelte-1fv6yyk"),c(e,"class","overlay svelte-1fv6yyk"),c(e,"role","dialog"),c(e,"aria-modal","true"),c(e,"aria-label",l[0])},m(M,E){g(M,e,E),r(e,t),r(t,n),r(n,i),r(t,s),r(t,o),r(o,a),r(t,f),r(t,_),r(_,m),r(m,h),r(_,v),r(_,w),r(w,b),y||(z=[A(m,"click",l[6]),A(w,"click",l[7]),A(e,"click",Re(l[8]))],y=!0)},p(M,[E]){E&1&&H(i,M[0]),E&2&&H(a,M[1]),E&4&&H(h,M[2]),E&16&&p!==(p="btn "+(M[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk")&&c(m,"class",p),E&8&&H(b,M[3]),E&1&&c(e,"aria-label",M[0])},i:G,o:G,d(M){M&&k(e),y=!1,ce(z)}}}function _s(l,e,t){let{title:n="Подтверждение"}=e,{message:i=""}=e,{confirmText:s="Удалить"}=e,{cancelText:o="Отмена"}=e,{danger:a=!1}=e;const f=nt(),_=()=>f("confirm"),m=()=>f("cancel"),h=()=>f("cancel");return l.$$set=p=>{"title"in p&&t(0,n=p.title),"message"in p&&t(1,i=p.message),"confirmText"in p&&t(2,s=p.confirmText),"cancelText"in p&&t(3,o=p.cancelText),"danger"in p&&t(4,a=p.danger)},[n,i,s,o,a,f,_,m,h]}class ps extends We{constructor(e){super(),Ke(this,e,_s,ds,Ve,{title:0,message:1,confirmText:2,cancelText:3,danger:4})}}function ol(l,e,t){const n=l.slice();return n[181]=e[t],n}function sl(l,e,t){const n=l.slice();return n[184]=e[t],n}function cl(l,e,t){const n=l.slice();return n[187]=e[t],n}function rl(l,e,t){const n=l.slice();return n[206]=e[t],n}function al(l,e,t){const n=l.slice();return n[206]=e[t],n}function fl(l,e,t){const n=l.slice();return n[214]=e[t],n}function ul(l,e,t){const n=l.slice();return n[206]=e[t],n}function dl(l,e,t){const n=l.slice();return n[206]=e[t],n}function _l(l,e,t){const n=l.slice();return n[190]=e[t],n}function pl(l,e,t){const n=l.slice();return n[201]=e[t],n}function ml(l,e,t){const n=l.slice();return n[198]=e[t],n}function vl(l,e,t){const n=l.slice();return n[193]=e[t],n}function hl(l,e,t){const n=l.slice();return n[190]=e[t],n}function bl(l,e,t){const n=l.slice();return n[193]=e[t],n}function kl(l,e,t){const n=l.slice();return n[209]=e[t],n}function gl(l,e,t){const n=l.slice();return n[187]=e[t],n}function yl(l,e,t){const n=l.slice();return n[223]=e[t],n}function wl(l,e,t){const n=l.slice();return n[226]=e[t],n}function jl(l){let e,t=l[226].label+"",n,i,s,o,a;function f(){return l[99](l[226])}return{c(){e=u("button"),n=I(t),i=j(),c(e,"class",s="nav-item "+(l[7]===l[226].id?"selected":"")+" svelte-oqcj5z")},m(_,m){g(_,e,m),r(e,n),r(e,i),o||(a=A(e,"click",f),o=!0)},p(_,m){l=_,m[0]&1&&t!==(t=l[226].label+"")&&H(n,t),m[0]&129&&s!==(s="nav-item "+(l[7]===l[226].id?"selected":"")+" svelte-oqcj5z")&&c(e,"class",s)},d(_){_&&k(e),o=!1,a()}}}function zl(l){let e,t,n,i,s,o=l[1].length>0&&ql(l),a=ee(l[1]),f=[];for(let m=0;m0?o?o.p(m,h):(o=ql(m),o.c(),o.m(t,null)):o&&(o.d(1),o=null),h[0]&258|h[1]&2097152){a=ee(m[1]);let p;for(p=0;p ',c(i,"class","dismiss-btn svelte-oqcj5z"),c(i,"aria-label","Dismiss"),c(e,"class","error-banner svelte-oqcj5z")},m(a,f){g(a,e,f),r(e,t),r(e,n),r(e,i),s||(o=[A(i,"click",je(l[101])),A(e,"click",l[102])],s=!0)},p(a,f){f[0]&64&&H(t,a[6])},d(a){a&&k(e),s=!1,ce(o)}}}function bs(l){let e,t,n;function i(a,f){if(a[27])return qs;if(a[0].length>0)return zs;if(a[6])return js}let s=i(l),o=s&&s(l);return{c(){e=u("div"),t=u("h2"),t.textContent="Верстак",n=j(),o&&o.c(),c(t,"class","svelte-oqcj5z"),c(e,"class","welcome svelte-oqcj5z")},m(a,f){g(a,e,f),r(e,t),r(e,n),o&&o.m(e,null)},p(a,f){s===(s=i(a))&&o?o.p(a,f):(o&&o.d(1),o=s&&s(a),o&&(o.c(),o.m(e,null)))},i:G,o:G,d(a){a&&k(e),o&&o.d()}}}function ks(l){let e,t,n;function i(a,f){return a[3].length===0?Ts:Cs}let s=i(l),o=s(l);return{c(){e=u("div"),t=u("div"),t.innerHTML='Активность ',n=j(),o.c(),c(t,"class","activity-feed-header svelte-oqcj5z"),c(e,"class","activity-feed svelte-oqcj5z")},m(a,f){g(a,e,f),r(e,t),r(e,n),o.m(e,null)},p(a,f){s===(s=i(a))&&o?o.p(a,f):(o.d(1),o=s(a),o&&(o.c(),o.m(e,null)))},i:G,o:G,d(a){a&&k(e),o.d()}}}function gs(l){let e,t,n,i,s,o=l[2].date+"",a,f,_,m=l[2].summary&&Il(l);function h(w,b){return w[2].groups&&w[2].groups.length>0?Ls:Ms}let p=h(l),v=p(l);return{c(){e=u("div"),t=u("div"),n=u("h2"),n.textContent="Сегодня",i=j(),s=u("span"),a=I(o),f=j(),m&&m.c(),_=j(),v.c(),c(n,"class","svelte-oqcj5z"),c(s,"class","today-date svelte-oqcj5z"),c(t,"class","today-header svelte-oqcj5z"),c(e,"class","today-dashboard svelte-oqcj5z")},m(w,b){g(w,e,b),r(e,t),r(t,n),r(t,i),r(t,s),r(s,a),r(e,f),m&&m.m(e,null),r(e,_),v.m(e,null)},p(w,b){b[0]&4&&o!==(o=w[2].date+"")&&H(a,o),w[2].summary?m?m.p(w,b):(m=Il(w),m.c(),m.m(e,_)):m&&(m.d(1),m=null),p===(p=h(w))&&v?v.p(w,b):(v.d(1),v=p(w),v&&(v.c(),v.m(e,null)))},i:G,o:G,d(w){w&&k(e),m&&m.d(),v.d()}}}function ys(l){let e,t,n,i,s,o,a=ee(l[50]),f=[];for(let p=0;p{m[w]=null}),qe()),~i?(s=m[i],s?s.p(p,v):(s=m[i]=_[i](p),s.c()),re(s,1),s.m(n,null)):s=null)},i(p){o||(re(s),o=!0)},o(p){ue(s),o=!1},d(p){p&&(k(e),k(t),k(n)),ve(f,p),~i&&m[i].d()}}}function ws(l){let e,t,n,i=l[11].title+"",s,o,a,f,_,m,h,p,v,w,b,y=l[11].dirty&&nn();return{c(){e=u("div"),t=u("div"),n=u("span"),s=I(i),o=j(),y&&y.c(),a=j(),f=u("div"),_=u("button"),_.textContent="Сохранить",m=j(),h=u("button"),h.textContent="Закрыть",p=j(),v=u("textarea"),c(n,"class","note-title svelte-oqcj5z"),c(_,"class","btn btn-primary svelte-oqcj5z"),c(h,"class","btn svelte-oqcj5z"),c(f,"class","note-editor-actions svelte-oqcj5z"),c(t,"class","note-editor-header svelte-oqcj5z"),c(v,"class","note-textarea svelte-oqcj5z"),c(v,"placeholder","Начните писать..."),c(e,"class","note-editor svelte-oqcj5z")},m(z,M){g(z,e,M),r(e,t),r(t,n),r(n,s),r(t,o),y&&y.m(t,null),r(t,a),r(t,f),r(f,_),r(f,m),r(f,h),r(e,p),r(e,v),de(v,l[11].content),w||(b=[A(_,"click",l[85]),A(h,"click",l[83]),A(v,"input",l[103]),A(v,"input",l[84])],w=!0)},p(z,M){M[0]&2048&&i!==(i=z[11].title+"")&&H(s,i),z[11].dirty?y||(y=nn(),y.c(),y.m(t,a)):y&&(y.d(1),y=null),M[0]&2048&&de(v,z[11].content)},i:G,o:G,d(z){z&&k(e),y&&y.d(),w=!1,ce(b)}}}function js(l){let e,t,n;return{c(){e=u("p"),t=I("Ошибка: "),n=I(l[6]),c(e,"class","error-text svelte-oqcj5z")},m(i,s){g(i,e,s),r(e,t),r(e,n)},p(i,s){s[0]&64&&H(n,i[6])},d(i){i&&k(e)}}}function zs(l){let e,t,n;return{c(){e=u("p"),e.textContent="Выберите раздел в боковой панели.",t=j(),n=u("p"),n.textContent="Или создайте новое дело кнопкой «+».",c(e,"class","svelte-oqcj5z"),c(n,"class","hint svelte-oqcj5z")},m(i,s){g(i,e,s),g(i,t,s),g(i,n,s)},p:G,d(i){i&&(k(e),k(t),k(n))}}}function qs(l){let e;return{c(){e=u("p"),e.textContent="Загрузка...",c(e,"class","svelte-oqcj5z")},m(t,n){g(t,e,n)},p:G,d(t){t&&k(e)}}}function Cs(l){let e,t=ee(l[3]),n=[];for(let i=0;iАктивность пока не зафиксирована
',c(e,"class","empty-state svelte-oqcj5z")},m(t,n){g(t,e,n)},p:G,d(t){t&&k(e)}}}function Sl(l){let e,t=l[206].targetType+"",n;return{c(){e=u("span"),n=I(t),c(e,"class","activity-feed-target svelte-oqcj5z")},m(i,s){g(i,e,s),r(e,n)},p(i,s){s[0]&8&&t!==(t=i[206].targetType+"")&&H(n,t)},d(i){i&&k(e)}}}function Dl(l){let e,t,n=Pe(l[206].eventType)+"",i,s,o,a,f=l[206].title+"",_,m,h,p,v=Ce(l[206].eventType)+"",w,b,y,z,M=ke(l[206].createdAt)+"",E,q,N=be(l[206].createdAt)+"",O,S,T,C,D=l[206].targetType&&Sl(l);function R(){return l[136](l[206])}function X(...x){return l[137](l[206],...x)}return{c(){e=u("div"),t=u("span"),i=I(n),s=j(),o=u("div"),a=u("span"),_=I(f),m=j(),h=u("div"),p=u("span"),w=I(v),b=j(),D&&D.c(),y=j(),z=u("span"),E=I(M),q=j(),O=I(N),S=j(),c(t,"class","activity-feed-icon svelte-oqcj5z"),c(a,"class","activity-feed-title svelte-oqcj5z"),c(p,"class","activity-feed-type svelte-oqcj5z"),c(z,"class","activity-feed-time svelte-oqcj5z"),c(h,"class","activity-feed-meta svelte-oqcj5z"),c(o,"class","activity-feed-body svelte-oqcj5z"),c(e,"class","activity-feed-event svelte-oqcj5z"),c(e,"role","button"),c(e,"tabindex","0")},m(x,B){g(x,e,B),r(e,t),r(t,i),r(e,s),r(e,o),r(o,a),r(a,_),r(o,m),r(o,h),r(h,p),r(p,w),r(h,b),D&&D.m(h,null),r(h,y),r(h,z),r(z,E),r(z,q),r(z,O),r(e,S),T||(C=[A(e,"click",R),A(e,"keydown",X)],T=!0)},p(x,B){l=x,B[0]&8&&n!==(n=Pe(l[206].eventType)+"")&&H(i,n),B[0]&8&&f!==(f=l[206].title+"")&&H(_,f),B[0]&8&&v!==(v=Ce(l[206].eventType)+"")&&H(w,v),l[206].targetType?D?D.p(l,B):(D=Sl(l),D.c(),D.m(h,y)):D&&(D.d(1),D=null),B[0]&8&&M!==(M=ke(l[206].createdAt)+"")&&H(E,M),B[0]&8&&N!==(N=be(l[206].createdAt)+"")&&H(O,N)},d(x){x&&k(e),D&&D.d(),T=!1,ce(C)}}}function Il(l){let e,t,n,i=l[2].summary.changedCases>0&&El(l),s=l[2].summary.notes>0&&Al(l),o=l[2].summary.files>0&&Nl(l);return{c(){e=u("div"),i&&i.c(),t=j(),s&&s.c(),n=j(),o&&o.c(),c(e,"class","today-summary svelte-oqcj5z")},m(a,f){g(a,e,f),i&&i.m(e,null),r(e,t),s&&s.m(e,null),r(e,n),o&&o.m(e,null)},p(a,f){a[2].summary.changedCases>0?i?i.p(a,f):(i=El(a),i.c(),i.m(e,t)):i&&(i.d(1),i=null),a[2].summary.notes>0?s?s.p(a,f):(s=Al(a),s.c(),s.m(e,n)):s&&(s.d(1),s=null),a[2].summary.files>0?o?o.p(a,f):(o=Nl(a),o.c(),o.m(e,null)):o&&(o.d(1),o=null)},d(a){a&&k(e),i&&i.d(),s&&s.d(),o&&o.d()}}}function El(l){let e,t=l[2].summary.changedCases+"",n,i,s=Te(l[2].summary.changedCases,"дело","дела","дел")+"",o;return{c(){e=u("span"),n=I(t),i=j(),o=I(s),c(e,"class","summary-chip svelte-oqcj5z")},m(a,f){g(a,e,f),r(e,n),r(e,i),r(e,o)},p(a,f){f[0]&4&&t!==(t=a[2].summary.changedCases+"")&&H(n,t),f[0]&4&&s!==(s=Te(a[2].summary.changedCases,"дело","дела","дел")+"")&&H(o,s)},d(a){a&&k(e)}}}function Al(l){let e,t=l[2].summary.notes+"",n,i,s=Te(l[2].summary.notes,"заметка","заметки","заметок")+"",o;return{c(){e=u("span"),n=I(t),i=j(),o=I(s),c(e,"class","summary-chip svelte-oqcj5z")},m(a,f){g(a,e,f),r(e,n),r(e,i),r(e,o)},p(a,f){f[0]&4&&t!==(t=a[2].summary.notes+"")&&H(n,t),f[0]&4&&s!==(s=Te(a[2].summary.notes,"заметка","заметки","заметок")+"")&&H(o,s)},d(a){a&&k(e)}}}function Nl(l){let e,t=l[2].summary.files+"",n,i,s=Te(l[2].summary.files,"файл","файла","файлов")+"",o;return{c(){e=u("span"),n=I(t),i=j(),o=I(s),c(e,"class","summary-chip svelte-oqcj5z")},m(a,f){g(a,e,f),r(e,n),r(e,i),r(e,o)},p(a,f){f[0]&4&&t!==(t=a[2].summary.files+"")&&H(n,t),f[0]&4&&s!==(s=Te(a[2].summary.files,"файл","файла","файлов")+"")&&H(o,s)},d(a){a&&k(e)}}}function Ms(l){let e;return{c(){e=u("div"),e.innerHTML='Сегодня пока тихо
Здесь появятся дела, заметки, файлы и действия, с которыми вы работали сегодня.
',c(e,"class","today-empty svelte-oqcj5z")},m(t,n){g(t,e,n)},p:G,d(t){t&&k(e)}}}function Ls(l){let e,t,n=ee(l[2].groups),i=[];for(let o=0;o0&&Pl(l);return{c(){for(let o=0;o0?s?s.p(o,a):(s=Pl(o),s.c(),s.m(t.parentNode,t)):s&&(s.d(1),s=null)},d(o){o&&(k(e),k(t)),ve(i,o),s&&s.d(o)}}}function Fl(l){let e,t=l[214].events.length+"",n,i,s=Te(l[214].events.length,"событие","события","событий")+"",o;return{c(){e=u("span"),n=I(t),i=j(),o=I(s),c(e,"class","today-case-count svelte-oqcj5z")},m(a,f){g(a,e,f),r(e,n),r(e,i),r(e,o)},p(a,f){f[0]&4&&t!==(t=a[214].events.length+"")&&H(n,t),f[0]&4&&s!==(s=Te(a[214].events.length,"событие","события","событий")+"")&&H(o,s)},d(a){a&&k(e)}}}function Ss(l){let e;return{c(){e=u("div"),e.textContent="Изменён сегодня",c(e,"class","today-events-empty svelte-oqcj5z")},m(t,n){g(t,e,n)},p:G,d(t){t&&k(e)}}}function Ds(l){let e,t=ee(l[214].events),n=[];for(let i=0;i0?Ds:Ss}let O=N(l),S=O(l);return{c(){e=u("div"),t=u("div"),n=u("span"),s=I(i),o=j(),a=u("span"),_=I(f),m=j(),M&&M.c(),h=j(),p=u("span"),w=I(v),b=j(),S.c(),c(n,"class","today-case-title svelte-oqcj5z"),c(a,"class","today-case-type svelte-oqcj5z"),c(p,"class","today-case-time svelte-oqcj5z"),c(t,"class","today-case-header svelte-oqcj5z"),c(t,"role","button"),c(t,"tabindex","0"),c(e,"class","today-case svelte-oqcj5z")},m(T,C){g(T,e,C),r(e,t),r(t,n),r(n,s),r(t,o),r(t,a),r(a,_),r(t,m),M&&M.m(t,null),r(t,h),r(t,p),r(p,w),r(e,b),S.m(e,null),y||(z=[A(t,"click",E),A(t,"keydown",q)],y=!0)},p(T,C){l=T,C[0]&4&&i!==(i=l[214].nodeTitle+"")&&H(s,i),C[0]&4&&f!==(f=hn(l[214].nodeKind)+"")&&H(_,f),l[214].events?M?M.p(l,C):(M=Fl(l),M.c(),M.m(t,h)):M&&(M.d(1),M=null),C[0]&4&&v!==(v=be(l[214].lastActivityAt)+"")&&H(w,v),O===(O=N(l))&&S?S.p(l,C):(S.d(1),S=O(l),S&&(S.c(),S.m(e,null)))},d(T){T&&k(e),M&&M.d(),S.d(),y=!1,ce(z)}}}function Pl(l){let e,t,n,i=ee(l[2].events),s=[];for(let o=0;o0&&Jl(l);const N=[Gs,Ws],O=[];function S(D,R){return D[31]?0:1}p=S(l),v=O[p]=N[p](l);let T=l[28]&&!l[30]&&Zl(),C=l[35]&&Yl(l);return{c(){e=u("div"),t=u("div"),n=u("button"),i=I("+ Добавить файл"),s=j(),o=u("button"),a=I("+ Добавить папку"),f=j(),_=u("button"),_.textContent="+ Новый файл",m=j(),q&&q.c(),h=j(),v.c(),w=j(),T&&T.c(),b=j(),C&&C.c(),y=ye(),c(n,"class","btn btn-primary svelte-oqcj5z"),n.disabled=l[28],c(o,"class","btn svelte-oqcj5z"),o.disabled=l[28],c(_,"class","btn svelte-oqcj5z"),c(t,"class","tab-toolbar svelte-oqcj5z"),c(e,"class","files-tab svelte-oqcj5z")},m(D,R){g(D,e,R),r(e,t),r(t,n),r(n,i),r(t,s),r(t,o),r(o,a),r(t,f),r(t,_),r(t,m),q&&q.m(t,null),r(e,h),O[p].m(e,null),r(e,w),T&&T.m(e,null),g(D,b,R),C&&C.m(D,R),g(D,y,R),z=!0,M||(E=[A(n,"click",l[87]),A(o,"click",l[88]),A(_,"click",l[59])],M=!0)},p(D,R){(!z||R[0]&268435456)&&(n.disabled=D[28]),(!z||R[0]&268435456)&&(o.disabled=D[28]),D[39].items.length>0?q?q.p(D,R):(q=Jl(D),q.c(),q.m(t,null)):q&&(q.d(1),q=null);let X=p;p=S(D),p===X?O[p].p(D,R):(ze(),ue(O[X],1,1,()=>{O[X]=null}),qe(),v=O[p],v?v.p(D,R):(v=O[p]=N[p](D),v.c()),re(v,1),v.m(e,w)),D[28]&&!D[30]?T||(T=Zl(),T.c(),T.m(e,null)):T&&(T.d(1),T=null),D[35]?C?(C.p(D,R),R[1]&16&&re(C,1)):(C=Yl(D),C.c(),re(C,1),C.m(y.parentNode,y)):C&&(ze(),ue(C,1,1,()=>{C=null}),qe())},i(D){z||(re(v),re(C),z=!0)},o(D){ue(v),ue(C),z=!1},d(D){D&&(k(e),k(b),k(y)),q&&q.d(),O[p].d(),T&&T.d(),C&&C.d(D),M=!1,ce(E)}}}function Fs(l){let e,t,n,i,s,o,a,f=l[21]&&Ql(l);function _(p,v){return p[10].length===0&&!p[21]?Qs:Ys}let m=_(l),h=m(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent="+ Добавить заметку",i=j(),f&&f.c(),s=j(),h.c(),c(n,"class","btn btn-primary svelte-oqcj5z"),c(t,"class","tab-toolbar svelte-oqcj5z"),c(e,"class","notes-tab svelte-oqcj5z")},m(p,v){g(p,e,v),r(e,t),r(t,n),r(e,i),f&&f.m(e,null),r(e,s),h.m(e,null),o||(a=A(n,"click",l[79]),o=!0)},p(p,v){p[21]?f?f.p(p,v):(f=Ql(p),f.c(),f.m(e,s)):f&&(f.d(1),f=null),m===(m=_(p))&&h?h.p(p,v):(h.d(1),h=m(p),h&&(h.c(),h.m(e,null)))},i:G,o:G,d(p){p&&k(e),f&&f.d(),h.d(),o=!1,a()}}}function Hs(l){let e,t,n=l[8].title+"",i,s,o,a,f,_,m=l[8].type+"",h,p,v,w,b,y=(l[8].section||"—")+"",z,M,E,q,N,O=ke(l[8].createdAt)+"",S,T,C,D,R,X,x,B,P,F,U,$,K,oe,ie=l[10].length>0&&$l(l),te=l[13].length>0&&tn(l);return{c(){e=u("div"),t=u("h2"),i=I(n),s=j(),o=u("div"),a=u("div"),f=u("span"),f.textContent="Тип",_=u("span"),h=I(m),p=j(),v=u("div"),w=u("span"),w.textContent="Раздел",b=u("span"),z=I(y),M=j(),E=u("div"),q=u("span"),q.textContent="Создано",N=u("span"),S=I(O),T=j(),C=u("div"),D=u("button"),D.innerHTML=`
+ Новая заметка`,R=j(),X=u("button"),X.innerHTML=`
+ Добавить файл`,x=j(),B=u("button"),B.innerHTML=`
+ Добавить действие`,P=j(),F=u("button"),F.innerHTML=`
+ Записать время`,U=j(),ie&&ie.c(),$=j(),te&&te.c(),c(t,"class","svelte-oqcj5z"),c(f,"class","meta-label svelte-oqcj5z"),c(_,"class","svelte-oqcj5z"),c(a,"class","meta-item svelte-oqcj5z"),c(w,"class","meta-label svelte-oqcj5z"),c(b,"class","svelte-oqcj5z"),c(v,"class","meta-item svelte-oqcj5z"),c(q,"class","meta-label svelte-oqcj5z"),c(N,"class","svelte-oqcj5z"),c(E,"class","meta-item svelte-oqcj5z"),c(o,"class","meta-grid svelte-oqcj5z"),c(D,"class","qa-btn svelte-oqcj5z"),c(X,"class","qa-btn svelte-oqcj5z"),c(B,"class","qa-btn svelte-oqcj5z"),c(F,"class","qa-btn svelte-oqcj5z"),c(C,"class","quick-actions svelte-oqcj5z"),c(e,"class","overview svelte-oqcj5z")},m(Z,J){g(Z,e,J),r(e,t),r(t,i),r(e,s),r(e,o),r(o,a),r(a,f),r(a,_),r(_,h),r(o,p),r(o,v),r(v,w),r(v,b),r(b,z),r(o,M),r(o,E),r(E,q),r(E,N),r(N,S),r(e,T),r(e,C),r(C,D),r(C,R),r(C,X),r(C,x),r(C,B),r(C,P),r(C,F),r(e,U),ie&&ie.m(e,null),r(e,$),te&&te.m(e,null),K||(oe=[A(D,"click",l[105]),A(X,"click",l[106]),A(B,"click",l[93]),A(F,"click",l[107])],K=!0)},p(Z,J){J[0]&256&&n!==(n=Z[8].title+"")&&H(i,n),J[0]&256&&m!==(m=Z[8].type+"")&&H(h,m),J[0]&256&&y!==(y=(Z[8].section||"—")+"")&&H(z,y),J[0]&256&&O!==(O=ke(Z[8].createdAt)+"")&&H(S,O),Z[10].length>0?ie?ie.p(Z,J):(ie=$l(Z),ie.c(),ie.m(e,$)):ie&&(ie.d(1),ie=null),Z[13].length>0?te?te.p(Z,J):(te=tn(Z),te.c(),te.m(e,null)):te&&(te.d(1),te=null)},i:G,o:G,d(Z){Z&&k(e),ie&&ie.d(),te&&te.d(),K=!1,ce(oe)}}}function Bs(l){let e,t=ee(l[4]),n=[];for(let i=0;iАктивность пока не зафиксирована',c(e,"class","empty-state svelte-oqcj5z")},m(t,n){g(t,e,n)},p:G,d(t){t&&k(e)}}}function Kl(l){let e,t=l[206].targetType+"",n;return{c(){e=u("span"),n=I(t),c(e,"class","activity-event-target svelte-oqcj5z")},m(i,s){g(i,e,s),r(e,n)},p(i,s){s[0]&16&&t!==(t=i[206].targetType+"")&&H(n,t)},d(i){i&&k(e)}}}function Wl(l){let e,t,n=Pe(l[206].eventType)+"",i,s,o,a=l[206].title+"",f,_,m,h=Ce(l[206].eventType)+"",p,v,w,b,y=be(l[206].createdAt)+"",z,M,E=l[206].targetType&&Kl(l);return{c(){e=u("div"),t=u("span"),i=I(n),s=j(),o=u("span"),f=I(a),_=j(),m=u("span"),p=I(h),v=j(),E&&E.c(),w=j(),b=u("span"),z=I(y),M=j(),c(t,"class","activity-event-icon svelte-oqcj5z"),c(o,"class","activity-event-title svelte-oqcj5z"),c(m,"class","activity-event-type svelte-oqcj5z"),c(b,"class","activity-event-time svelte-oqcj5z"),c(e,"class","activity-event svelte-oqcj5z")},m(q,N){g(q,e,N),r(e,t),r(t,i),r(e,s),r(e,o),r(o,f),r(e,_),r(e,m),r(m,p),r(e,v),E&&E.m(e,null),r(e,w),r(e,b),r(b,z),r(e,M)},p(q,N){N[0]&16&&n!==(n=Pe(q[206].eventType)+"")&&H(i,n),N[0]&16&&a!==(a=q[206].title+"")&&H(f,a),N[0]&16&&h!==(h=Ce(q[206].eventType)+"")&&H(p,h),q[206].targetType?E?E.p(q,N):(E=Kl(q),E.c(),E.m(e,w)):E&&(E.d(1),E=null),N[0]&16&&y!==(y=be(q[206].createdAt)+"")&&H(z,y)},d(q){q&&k(e),E&&E.d()}}}function Ps(l){let e,t=ee(l[13]),n=[];for(let i=0;iЗаписей работы пока нет',c(e,"class","empty-state svelte-oqcj5z")},m(t,n){g(t,e,n)},p:G,d(t){t&&k(e)}}}function Gl(l){let e,t,n=l[190].summary+"",i,s,o,a=l[190].minutes+"",f,_,m=ke(l[190].createdAt)+"",h,p;return{c(){e=u("div"),t=u("div"),i=I(n),s=j(),o=u("div"),f=I(a),_=I(" мин · "),h=I(m),p=j(),c(t,"class","svelte-oqcj5z"),c(o,"class","wl-meta svelte-oqcj5z"),c(e,"class","worklog-entry svelte-oqcj5z")},m(v,w){g(v,e,w),r(e,t),r(t,i),r(e,s),r(e,o),r(o,f),r(o,_),r(o,h),r(e,p)},p(v,w){w[0]&8192&&n!==(n=v[190].summary+"")&&H(i,n),w[0]&8192&&a!==(a=v[190].minutes+"")&&H(f,a),w[0]&8192&&m!==(m=ke(v[190].createdAt)+"")&&H(h,m)},d(v){v&&k(e)}}}function Rs(l){let e,t=ee(l[12]),n=[];for(let i=0;iДействий пока нет',c(e,"class","empty-state svelte-oqcj5z")},m(t,n){g(t,e,n)},p:G,d(t){t&&k(e)}}}function Ul(l){let e,t,n,i=l[201].title+"",s,o,a,f=l[97](l[201].type)+"",_,m,h,p=l[201].data+"",v,w,b,y,z,M,E,q,N;function O(){return l[126](l[201])}function S(){return l[127](l[201])}return{c(){e=u("div"),t=u("div"),n=u("span"),s=I(i),o=j(),a=u("span"),_=I(f),m=j(),h=u("span"),v=I(p),w=j(),b=u("div"),y=u("button"),y.textContent="Запустить",z=j(),M=u("button"),M.innerHTML=' ',E=j(),c(n,"class","action-title svelte-oqcj5z"),c(a,"class","action-type svelte-oqcj5z"),c(h,"class","action-data svelte-oqcj5z"),c(t,"class","action-info svelte-oqcj5z"),c(y,"class","btn btn-sm svelte-oqcj5z"),c(M,"class","btn btn-sm btn-danger svelte-oqcj5z"),c(b,"class","action-btns svelte-oqcj5z"),c(e,"class","action-card svelte-oqcj5z")},m(T,C){g(T,e,C),r(e,t),r(t,n),r(n,s),r(t,o),r(t,a),r(a,_),r(t,m),r(t,h),r(h,v),r(e,w),r(e,b),r(b,y),r(b,z),r(b,M),r(e,E),q||(N=[A(y,"click",O),A(M,"click",S)],q=!0)},p(T,C){l=T,C[0]&4096&&i!==(i=l[201].title+"")&&H(s,i),C[0]&4096&&f!==(f=l[97](l[201].type)+"")&&H(_,f),C[0]&4096&&p!==(p=l[201].data+"")&&H(v,p)},d(T){T&&k(e),q=!1,ce(N)}}}function Jl(l){let e,t,n=l[39].items.length+"",i,s,o;return{c(){e=u("button"),t=I("Вставить "),i=I(n),c(e,"class","btn svelte-oqcj5z")},m(a,f){g(a,e,f),r(e,t),r(e,i),s||(o=A(e,"click",l[64]),s=!0)},p(a,f){f[1]&256&&n!==(n=a[39].items.length+"")&&H(i,n)},d(a){a&&k(e),s=!1,o()}}}function Ws(l){let e,t,n,i,s,o,a;const f=[Js,Us],_=[];function m(w,b){return w[33].length>0?0:1}e=m(l),t=_[e]=f[e](l);const h=[Zs,Xs],p=[];function v(w,b){return w[34].length===0?0:1}return i=v(l),s=p[i]=h[i](l),{c(){t.c(),n=j(),s.c(),o=ye()},m(w,b){_[e].m(w,b),g(w,n,b),p[i].m(w,b),g(w,o,b),a=!0},p(w,b){let y=e;e=m(w),e===y?_[e].p(w,b):(ze(),ue(_[y],1,1,()=>{_[y]=null}),qe(),t=_[e],t?t.p(w,b):(t=_[e]=f[e](w),t.c()),re(t,1),t.m(n.parentNode,n));let z=i;i=v(w),i===z?p[i].p(w,b):(ze(),ue(p[z],1,1,()=>{p[z]=null}),qe(),s=p[i],s?s.p(w,b):(s=p[i]=h[i](w),s.c()),re(s,1),s.m(o.parentNode,o))},i(w){a||(re(t),re(s),a=!0)},o(w){ue(t),ue(s),a=!1},d(w){w&&(k(n),k(o)),_[e].d(w),p[i].d(w)}}}function Gs(l){let e;return{c(){e=u("div"),e.innerHTML='Загрузка...
',c(e,"class","empty-state svelte-oqcj5z")},m(t,n){g(t,e,n)},p:G,i:G,o:G,d(t){t&&k(e)}}}function Us(l){let e,t;return e=new Dn({props:{crumbs:[{name:"Файлы"}]}}),{c(){Ie(e.$$.fragment)},m(n,i){Me(e,n,i),t=!0},p:G,i(n){t||(re(e.$$.fragment,n),t=!0)},o(n){ue(e.$$.fragment,n),t=!1},d(n){Le(e,n)}}}function Js(l){let e,t,n,i,s,o;return e=new Dn({props:{crumbs:[{name:"Файлы"},...l[33]]}}),e.$on("navigate",l[112]),{c(){Ie(e.$$.fragment),t=j(),n=u("button"),n.innerHTML=`
+ Back`,c(n,"class","btn btn-sm back-btn svelte-oqcj5z")},m(a,f){Me(e,a,f),g(a,t,f),g(a,n,f),i=!0,s||(o=A(n,"click",l[55]),s=!0)},p(a,f){const _={};f[1]&4&&(_.crumbs=[{name:"Файлы"},...a[33]]),e.$set(_)},i(a){i||(re(e.$$.fragment,a),i=!0)},o(a){ue(e.$$.fragment,a),i=!1},d(a){a&&(k(t),k(n)),Le(e,a),s=!1,o()}}}function Xs(l){let e,t=[],n=new Map,i,s=ee(l[34]);const o=a=>a[198].id;for(let a=0;a0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов",o,a,f,_,m,h,p,v,w,b;return{c(){e=u("div"),t=u("div"),t.innerHTML=' ',n=j(),i=u("p"),o=I(s),a=j(),f=u("p"),f.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",_=j(),m=u("div"),h=u("button"),h.textContent="Добавить файл",p=j(),v=u("button"),v.textContent="Добавить папку",c(t,"class","empty-icon svelte-oqcj5z"),c(i,"class","svelte-oqcj5z"),c(f,"class","hint svelte-oqcj5z"),c(h,"class","btn btn-primary svelte-oqcj5z"),c(v,"class","btn svelte-oqcj5z"),c(m,"class","empty-actions svelte-oqcj5z"),c(e,"class","empty-state svelte-oqcj5z")},m(y,z){g(y,e,z),r(e,t),r(e,n),r(e,i),r(i,o),r(e,a),r(e,f),r(e,_),r(e,m),r(m,h),r(m,p),r(m,v),w||(b=[A(h,"click",l[87]),A(v,"click",l[88])],w=!0)},p(y,z){z[1]&4&&s!==(s=y[33].length>0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов")&&H(o,s)},i:G,o:G,d(y){y&&k(e),w=!1,ce(b)}}}function Xl(l,e){let t,n,i;return n=new Zo({props:{item:e[198],selected:e[40].includes(e[198].id),onDragStart:e[68],onDragOver:e[69],onDrop:e[70]}}),n.$on("navigate",e[113]),n.$on("preview",e[114]),n.$on("openExternal",e[115]),n.$on("showInFolder",e[116]),n.$on("delete",e[117]),n.$on("rename",e[118]),n.$on("duplicate",e[119]),n.$on("cut",e[120]),n.$on("copy",e[121]),n.$on("selectOne",e[122]),n.$on("toggleSelect",e[123]),n.$on("rangeSelect",e[124]),{key:l,first:null,c(){t=ye(),Ie(n.$$.fragment),this.first=t},m(s,o){g(s,t,o),Me(n,s,o),i=!0},p(s,o){e=s;const a={};o[1]&8&&(a.item=e[198]),o[1]&520&&(a.selected=e[40].includes(e[198].id)),n.$set(a)},i(s){i||(re(n.$$.fragment,s),i=!0)},o(s){ue(n.$$.fragment,s),i=!1},d(s){s&&k(t),Le(n,s)}}}function Zl(l){let e;return{c(){e=u("div"),e.innerHTML='Сканирование...
',c(e,"class","empty-state svelte-oqcj5z")},m(t,n){g(t,e,n)},d(t){t&&k(e)}}}function Yl(l){let e,t;return e=new us({props:{item:l[35],content:l[36],loading:l[37],error:l[38]}}),e.$on("close",l[58]),e.$on("openExternal",l[125]),{c(){Ie(e.$$.fragment)},m(n,i){Me(e,n,i),t=!0},p(n,i){const s={};i[1]&16&&(s.item=n[35]),i[1]&32&&(s.content=n[36]),i[1]&64&&(s.loading=n[37]),i[1]&128&&(s.error=n[38]),e.$set(s)},i(n){t||(re(e.$$.fragment,n),t=!0)},o(n){ue(e.$$.fragment,n),t=!1},d(n){Le(e,n)}}}function Ql(l){let e,t,n,i,s,o,a,f,_;return{c(){e=u("div"),t=u("input"),n=j(),i=u("div"),s=u("button"),s.textContent="Создать",o=j(),a=u("button"),a.textContent="Отмена",c(t,"type","text"),c(t,"placeholder","Название заметки"),c(t,"class","svelte-oqcj5z"),c(s,"class","btn btn-primary svelte-oqcj5z"),c(a,"class","btn svelte-oqcj5z"),c(i,"class","form-actions svelte-oqcj5z"),c(e,"class","create-form svelte-oqcj5z")},m(m,h){g(m,e,h),r(e,t),de(t,l[22]),r(e,n),r(e,i),r(i,s),r(i,o),r(i,a),f||(_=[A(t,"input",l[109]),A(t,"keydown",l[110]),A(s,"click",l[81]),A(a,"click",l[80])],f=!0)},p(m,h){h[0]&4194304&&t.value!==m[22]&&de(t,m[22])},d(m){m&&k(e),f=!1,ce(_)}}}function Ys(l){let e,t=ee(l[10]),n=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',c(e,"class","empty-state svelte-oqcj5z")},m(t,n){g(t,e,n)},p:G,d(t){t&&k(e)}}}function xl(l){let e,t,n=l[193].title+"",i,s,o,a=ke(l[193].createdAt)+"",f,_,m,h;function p(){return l[111](l[193])}return{c(){e=u("div"),t=u("div"),i=I(n),s=j(),o=u("div"),f=I(a),_=j(),c(t,"class","note-card-title svelte-oqcj5z"),c(o,"class","note-card-date svelte-oqcj5z"),c(e,"class","note-card svelte-oqcj5z")},m(v,w){g(v,e,w),r(e,t),r(t,i),r(e,s),r(e,o),r(o,f),r(e,_),m||(h=A(e,"click",p),m=!0)},p(v,w){l=v,w[0]&1024&&n!==(n=l[193].title+"")&&H(i,n),w[0]&1024&&a!==(a=ke(l[193].createdAt)+"")&&H(f,a)},d(v){v&&k(e),m=!1,h()}}}function $l(l){let e,t,n,i=ee(l[10].slice(0,5)),s=[];for(let o=0;o0&&rn(l);return{c(){e=u("div"),t=u("div"),n=u("h3"),n.textContent="Новое дело",i=j(),s=u("div"),o=u("label"),o.textContent="Название",a=j(),f=u("input"),_=j(),m=u("div"),h=u("label"),h.textContent="Раздел",p=j(),v=u("select");for(let C=0;Cl[140].call(v)),c(m,"class","form-group svelte-oqcj5z"),c(z,"class","btn btn-primary svelte-oqcj5z"),c(E,"class","btn svelte-oqcj5z"),c(y,"class","modal-actions svelte-oqcj5z"),c(t,"class","modal svelte-oqcj5z"),c(e,"class","modal-overlay svelte-oqcj5z")},m(C,D){g(C,e,D),r(e,t),r(t,n),r(t,i),r(t,s),r(s,o),r(s,a),r(s,f),de(f,l[17]),r(t,_),r(t,m),r(m,h),r(m,p),r(m,v);for(let R=0;R0?T?T.p(C,D):(T=rn(C),T.c(),T.m(t,b)):T&&(T.d(1),T=null)},d(C){C&&k(e),ve(S,C),T&&T.d(),q=!1,ce(N)}}}function cn(l){let e,t=l[187].label+"",n,i;return{c(){e=u("option"),n=I(t),e.__value=i=l[187].id,de(e,e.__value),c(e,"class","svelte-oqcj5z")},m(s,o){g(s,e,o),r(e,n)},p(s,o){o[0]&1&&t!==(t=s[187].label+"")&&H(n,t),o[0]&1&&i!==(i=s[187].id)&&(e.__value=i,de(e,e.__value))},d(s){s&&k(e)}}}function rn(l){let e,t,n,i,s,o,a,f=ee(l[20]),_=[];for(let m=0;ml[141].call(i)),c(e,"class","form-group svelte-oqcj5z")},m(m,h){g(m,e,h),r(e,t),r(e,n),r(e,i),r(i,s);for(let p=0;p<_.length;p+=1)_[p]&&_[p].m(i,null);Be(i,l[19],!0),o||(a=A(i,"change",l[141]),o=!0)},p(m,h){if(h[0]&1048576){f=ee(m[20]);let p;for(p=0;pl[144].call(v)),c(m,"class","form-group svelte-oqcj5z"),c(y,"class","svelte-oqcj5z"),c(q,"type","text"),c(q,"placeholder",N=l[25]==="open_url"?"https://example.com":l[25]==="open_folder"||l[25]==="open_file"?"/path/to/file":"команда"),c(q,"class","svelte-oqcj5z"),c(b,"class","form-group svelte-oqcj5z"),c(T,"class","btn btn-primary svelte-oqcj5z"),c(D,"class","btn svelte-oqcj5z"),c(S,"class","modal-actions svelte-oqcj5z"),c(t,"class","modal svelte-oqcj5z"),c(e,"class","modal-overlay svelte-oqcj5z")},m(P,F){g(P,e,F),r(e,t),r(t,n),r(t,i),r(t,s),r(s,o),r(s,a),r(s,f),de(f,l[24]),r(t,_),r(t,m),r(m,h),r(m,p),r(m,v);for(let U=0;U⚒ Верстак ',i=j(),s=u("nav"),o=u("div"),a=u("div"),a.textContent="Разделы",f=j();for(let V=0;V{ie[pe]=null}),qe(),N=ie[q],N?N.p(V,fe):(N=ie[q]=oe[q](V),N.c()),re(N,1),N.m(b,O)),!V[11]&&!V[8]&&V[7]!=="today"&&V[7]!=="inbox"&&V[7]!=="activity"?Z?Z.p(V,fe):(Z=on(V),Z.c(),Z.m(b,S)):Z&&(Z.d(1),Z=null),V[16]?J?J.p(V,fe):(J=sn(V),J.c(),J.m(b,T)):J&&(J.d(1),J=null),V[23]?le?le.p(V,fe):(le=fn(V),le.c(),le.m(b,C)):le&&(le.d(1),le=null),V[30]&&V[29]?ne?ne.p(V,fe):(ne=dn(V),ne.c(),ne.m(b,D)):ne&&(ne.d(1),ne=null),V[46]?_e?_e.p(V,fe):(_e=pn(V),_e.c(),_e.m(b,R)):_e&&(_e.d(1),_e=null),V[41]?ae?(ae.p(V,fe),fe[1]&1024&&re(ae,1)):(ae=vn(V),ae.c(),re(ae,1),ae.m(b,null)):ae&&(ze(),ue(ae,1,1,()=>{ae=null}),qe())},i(V){X||(re(N),re(ae),X=!0)},o(V){ue(N),ue(ae),X=!1},d(V){V&&k(e),ve(B,V),P&&P.d(),$.d(),K&&K.d(),ie[q].d(),Z&&Z.d(),J&&J.d(),le&&le.d(),ne&&ne.d(),_e&&_e.d(),ae&&ae.d()}}}function Q(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 Ce(l){return{note_created:"Заметка создана",note_updated:"Заметка изменена",file_added:"Файл добавлен",file_deleted:"Файл удалён",file_renamed:"Файл переименован",file_copied:"Файл скопирован",file_moved:"Файл перемещён",folder_added:"Папка добавлена",folder_deleted:"Папка удалена",folder_renamed:"Папка переименована",node_created:"Дело создано",node_updated:"Дело изменено"}[l]||l}function Pe(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 be(l){if(!l)return"";try{return new Date(l).toLocaleTimeString("ru-RU",{hour:"2-digit",minute:"2-digit"})}catch{return""}}function ke(l){if(!l)return"";try{return new Date(l).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return l}}function hn(l){return{project:"Проект",client:"Клиент",document:"Документ",recipe:"Рецепт",archive:"Архив",case:"Дело"}[l]||l||"Дело"}function Te(l,e,t,n){return l=Math.abs(l)%100,l>=5&&l<=20?n:(l%=10,l===1?e:l>=2&&l<=4?t:n)}const bn=l=>l.id!=="today"&&l.id!=="inbox"&&l.id!=="activity";function $s(l,e,t){let n=[],i=[],s=null,o=[],a=0,f=!0,_=[],m="",h="",p="",v=null,w="overview",b=[],y=null,z=[],M=[],E=[],q="",N="",O=!1,S="",T="clients",C="",D=[],R=!1,X="",x=!1,B="",P="open_url",F="",U=[{id:"open_url",label:"Открыть URL"},{id:"open_file",label:"Открыть файл"},{id:"open_folder",label:"Открыть папку"},{id:"run_command",label:"Запустить команду"},{id:"run_script",label:"Запустить скрипт"},{id:"open_terminal",label:"Открыть терминал"},{id:"launch_app",label:"Запустить приложение"}],$=!0,K=!1,oe=null,ie=!1,te="",Z=!1,J=null,le=[],ne=[],_e=null,ae="",V=!1,fe="",pe={items:[],mode:"copy"},Y=[],we=[],it=!1,jt="",zt="",qt=!1,Ct="Удалить",Xe=null,Ze=null,Ye=!1,Qe="",Ee="",Ae="";const In=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let ot=null;wn(async()=>{try{t(5,m=await Q("VerstakVersion")||"verstak-gui/v2"),t(0,n=await Q("ListSections")||[])}catch(d){t(6,h=String(d)),t(0,n=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"activity",label:"Активность"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",ni),ot=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",Bt),t(27,$=!1)}),jn(()=>{ot&&ot(),window.removeEventListener("keydown",Bt)});async function st(d){t(7,p=d),t(8,v=null),t(9,w="overview"),t(10,b=[]),z=[],t(12,M=[]),t(13,E=[]),t(16,O=!1),t(6,h=""),t(2,s=null),t(3,o=[]),a=0,f=!0,t(1,i=[]);try{d==="today"?t(2,s=await Q("ListTodayView")||{cases:[]}):d==="activity"?(t(3,o=await Q("ListActivityFeed",50,0)||[]),a=o.length,f=o.length===50):t(1,i=await Q("ListNodesBySection",d)||[])}catch(L){t(6,h=String(L)),t(1,i=[]),t(2,s={cases:[]}),t(3,o=[])}}async function ct(d){t(8,v=d),t(9,w="overview"),t(10,b=[]),z=[],t(12,M=[]),t(13,E=[]),t(34,ne=[]),t(33,le=[]),t(32,J=null),t(35,_e=null),t(36,ae=""),t(40,Y=[]),we=[],t(11,y=null),t(16,O=!1),t(21,R=!1),t(6,h=""),t(4,_=[]),await Tt(d.id)}async function Tt(d){try{t(10,b=await Q("ListNotes",d)||[])}catch{}try{z=await Q("ListFiles",d)||[]}catch{}try{t(12,M=await Q("ListActions",d)||[])}catch{}try{t(13,E=await Q("ListWorklog",d)||[])}catch{}try{t(4,_=await Q("ListActivityByNode",d,50,0)||[])}catch{}}async function he(d){t(31,Z=!0);try{let L=await Q("ListItems",d)||[];L.sort((se,me)=>se.type!==me.type?se.type==="folder"?-1:1:(se.name||"").localeCompare(me.name||"")),t(34,ne=L)}catch{t(34,ne=[])}t(31,Z=!1)}async function rt(d){if(v){try{const L=await Q("GetNodeDetail",d);L&&t(33,le=[...le,{id:d,name:L.title}])}catch{t(33,le=[...le,{id:d,name:"..."}])}t(32,J=d),await he(d)}}function Mt(){if(le.length<2)t(33,le=[]),t(32,J=null),he(v.id);else{const d=le[le.length-2];t(33,le=le.slice(0,-1)),t(32,J=d.id),he(d.id)}}function Lt(d){const L=le[d];t(33,le=le.slice(0,d+1)),t(32,J=L.id),he(L.id)}async function at(d){t(35,_e=d),t(36,ae=""),t(38,fe=""),t(37,V=!0);try{Vo(d)?t(36,ae=await Q("GetFileBase64",d.fileId)||""):Ro(d)&&t(36,ae=await Q("ReadFileText",d.fileId)||"")}catch(L){t(38,fe=String(L))}t(37,V=!1)}function ft(){t(35,_e=null),t(36,ae=""),t(38,fe="")}async function En(){const d=prompt("Введите имя файла:");if(!(!d||!d.trim()))try{const L=J||v.id;await Q("CreateEmptyFile",L,d.trim()),await he(L)}catch(L){t(6,h=String(L))}}async function St(d){try{await Q("DuplicateNode",d);const L=J||v.id;await he(L)}catch(L){t(6,h=String(L))}}function Dt(d){const L=ne.find(se=>se.id===d);L&&Pt(L.id,L.name)}function It(d){t(39,pe={items:[d],mode:"cut"})}function Et(d){t(39,pe={items:[d],mode:"copy"})}async function At(){if(pe.items.length===0)return;const d=J||v.id;try{if(pe.mode==="copy")for(const L of pe.items)await Q("DuplicateNode",L);else for(const L of pe.items)await Q("MoveNode",L,d);t(39,pe={items:[],mode:"copy"}),await he(d)}catch(L){t(6,h=String(L))}}function Nt(d){Y.includes(d)?t(40,Y=Y.filter(L=>L!==d)):t(40,Y=[...Y,d])}function Ft(d){t(40,Y=[d])}function An(){t(40,Y=ne.map(d=>d.id))}function Ht(d){if(ne.length===0)return;const L=Y.length>0?Y[Y.length-1]:ne[0].id,se=ne.findIndex(Se=>Se.id===L),me=ne.findIndex(Se=>Se.id===d);if(se===-1||me===-1)return;const Ge=Math.min(se,me),vt=Math.max(se,me),oo=ne.slice(Ge,vt+1).map(Se=>Se.id),Yt=new Set(Y);oo.forEach(Se=>Yt.add(Se)),t(40,Y=[...Yt])}function Nn(){t(40,Y=[])}function ut(d){return d.length>0?d:ne.map(L=>L.id)}async function Fn(){var se;const d=ut(Y),L=d.length===1&&((se=ne.find(me=>me.id===d[0]))==null?void 0:se.type)==="folder"?"папку":`файлов (${d.length})`;xe({title:"Удаление",message:`Удалить ${L}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{for(const Ge of d)try{await Q("DeleteFileOrFolder",Ge)}catch(vt){t(6,h=String(vt))}t(40,Y=[]);const me=J||v.id;await he(me)}})}function Hn(){const d=ut(Y);t(39,pe={items:d,mode:"cut"}),t(40,Y=[])}function Bn(){const d=ut(Y);t(39,pe={items:d,mode:"copy"}),t(40,Y=[])}function On(d,L){const se=Y.includes(L)?Y:[L];we=se,d.dataTransfer.effectAllowed="move",d.dataTransfer.setData("text/plain",se.join(","))}function Pn(d,L){const se=ne.find(me=>me.id===L);se&&se.type==="folder"&&(d.preventDefault(),d.dataTransfer.dropEffect="move")}async function Vn(d,L){if(d.preventDefault(),we.length!==0){for(const se of we)try{await Q("MoveNode",se,L)}catch(me){t(6,h=String(me))}we=[],t(40,Y=[]),await he(J||v.id)}}function Bt(d){if(w==="files"&&!(d.target.tagName==="INPUT"||d.target.tagName==="TEXTAREA"))if(d.ctrlKey||d.metaKey)d.key==="c"||d.key==="C"?(d.preventDefault(),Bn()):d.key==="x"||d.key==="X"?(d.preventDefault(),Hn()):d.key==="v"||d.key==="V"?(d.preventDefault(),At()):d.key==="a"||d.key==="A"?(d.preventDefault(),An()):d.key==="o"||d.key==="O"?(d.preventDefault(),Rn()):d.key==="Enter"&&(d.preventDefault(),Ot());else if(d.key==="Enter")d.preventDefault(),Ot();else if(d.key==="Delete"||d.key==="Backspace"){if(_e){d.preventDefault(),ft();return}if(Y.length>0){d.preventDefault(),Fn();return}if(d.key==="Backspace"&&le.length>0){d.preventDefault(),Mt();return}}else if(d.key==="Escape"){if(_e){ft();return}if(Y.length>0){Nn();return}}else d.key==="F2"&&(d.preventDefault(),Kn())}function Ot(){if(Y.length===1){const d=ne.find(L=>L.id===Y[0]);d&&(d.type==="folder"?rt(d.id):at(d))}}function Rn(){if(Y.length===1){const d=ne.find(L=>L.id===Y[0]);d&&d.fileId&&Q("OpenFile",d.fileId)}}function Pt(d,L){Qe=d,t(47,Ee=L),t(48,Ae=""),t(46,Ye=!0)}function Kn(){if(Y.length===1){const d=ne.find(L=>L.id===Y[0]);d&&Pt(d.id,d.name)}}async function Vt(){const d=Ee.trim();if(!d){t(48,Ae="Имя не может быть пустым");return}try{await Q("ValidateName",d)}catch{t(48,Ae="Недопустимое имя");return}t(46,Ye=!1),Qe="";try{await Q("RenameNode",Qe,d);const L=J||v.id;await he(L)}catch(L){t(6,h=String(L))}}function Wn(){t(46,Ye=!1),Qe="",t(47,Ee=""),t(48,Ae="")}function Gn(d){d.key==="Enter"?Vt():t(48,Ae="")}function xe(d){t(42,jt=d.title||"Подтверждение"),t(43,zt=d.message||""),t(44,qt=d.danger!==void 0?d.danger:!0),t(45,Ct=d.confirmText||"Удалить"),Xe=d.onConfirm||null,Ze=d.onCancel||null,t(41,it=!0)}function Rt(){t(41,it=!1),Xe=null,Ze=null}function Un(){Xe&&Xe(),Rt()}function Jn(){Ze&&Ze(),Rt()}function Xn(){t(16,O=!0),t(17,S=""),t(18,T=p||"clients"),t(19,C=""),Q("ListTemplates").then(d=>{t(20,D=d||[])}).catch(()=>{t(20,D=[])})}function Zn(){t(16,O=!1),t(17,S="")}async function Kt(){if(S.trim())try{let d;C?d=await Q("FromTemplate","","case",S.trim(),T,C):d=await Q("CreateNode","","case",S.trim(),T),t(16,O=!1),t(17,S=""),t(19,C=""),await st(T)}catch(d){t(6,h=String(d))}}function Wt(){t(21,R=!0),t(22,X="")}function Yn(){t(21,R=!1),t(22,X="")}async function Gt(){if(!(!X.trim()||!v))try{const d=await Q("CreateNote",v.id,X.trim());t(10,b=[...b,d&&d.id?d:{id:Date.now().toString(),title:X.trim(),createdAt:new Date().toISOString()}]),t(21,R=!1),t(22,X="")}catch{const L={id:Date.now().toString(),title:X.trim(),createdAt:new Date().toISOString()};t(10,b=[...b,L]),t(21,R=!1),t(22,X="")}}async function dt(d){if(y&&y.dirty){xe({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:async()=>{await Ut(d)}});return}await Ut(d)}async function Ut(d){try{const L=await Q("ReadNote",d.id);t(11,y={id:d.id,title:d.title,content:L||"",dirty:!1})}catch{t(11,y={id:d.id,title:d.title,content:"# "+d.title+`
+
+`,dirty:!1})}}function Qn(){if(y&&y.dirty){xe({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:()=>{t(11,y=null)}});return}t(11,y=null)}function xn(d){y&&(t(11,y.content=d.target.value,y),t(11,y.dirty=!0,y))}async function $n(){if(y)try{await Q("SaveNote",y.id,y.content),t(11,y.dirty=!1,y)}catch{t(11,y.dirty=!1,y)}}async function ei(){const d=parseInt(q,10);if(!(!N.trim()||isNaN(d)||d<=0||!v)){try{const L=await Q("CreateWorklog",v.id,N.trim(),d);t(13,E=[...E,L&&L.id?L:{id:Date.now().toString(),nodeId:v.id,summary:N.trim(),minutes:d,createdAt:new Date().toISOString()}])}catch{t(13,E=[...E,{id:Date.now().toString(),nodeId:v.id,summary:N.trim(),minutes:d,createdAt:new Date().toISOString()}])}t(15,N=""),t(14,q="")}}async function Jt(){const d=await Q("PickFile");d&&await _t(v.id,d)}async function ti(){const d=await Q("PickDirectory");d&&await _t(v.id,d)}async function _t(d,L){t(28,K=!0);try{const se=await Q("PreviewImport",L);t(29,oe=se),te=L,t(30,ie=!0)}catch(se){t(6,h=String(se))}t(28,K=!1)}async function pt(d){try{const L=d==="copy"?await Q("AddPathCopy",v.id,te):await Q("AddPathLink",v.id,te);t(30,ie=!1),t(29,oe=null),t(33,le=[]),t(32,J=null),await Promise.all([Tt(v.id),he(v.id)])}catch(L){t(6,h=String(L))}}function li(){t(30,ie=!1),t(29,oe=null)}async function Xt({id:d,type:L}){xe({title:"Удаление",message:`Удалить ${L==="folder"?"папку":"файл"}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{try{await Q("DeleteFileOrFolder",d),z=z.filter(Ge=>Ge.nodeId!==d);const me=J||v.id;await he(me)}catch(me){t(6,h=String(me))}}})}async function ni(d){if(!d||d.length===0)return;if(!v){t(6,h="Сначала выберите дело для добавления файлов");return}const L=d[0];await _t(v.id,L)}function ii(d){return w===d?"tab active":"tab"}function oi(){t(23,x=!0),t(24,B=""),t(25,P="open_url"),t(26,F="")}function si(){t(23,x=!1),t(24,B=""),t(26,F="")}async function mt(){if(!(!B.trim()||!F.trim()||!v))try{const d=await Q("CreateAction",v.id,P,B.trim(),F.trim());d&&d.id&&t(12,M=[...M,d]),t(23,x=!1),t(24,B=""),t(26,F="")}catch(d){t(6,h=String(d))}}async function Zt(d){try{await Q("DeleteAction",d),t(12,M=M.filter(L=>L.id!==d))}catch(L){t(6,h=String(L))}}function ci(d){const L=U.find(se=>se.id===d);return L?L.label:d}async function ge(d){try{const L=await Q("GetNodeDetail",d);L&&ct(L)}catch(L){t(6,h=String(L))}}const ri=d=>st(d.id),ai=d=>ct(d),fi=()=>t(6,h=""),ui=()=>t(6,h="");function di(){y.content=this.value,t(11,y)}const _i=d=>{t(9,w=d.id),d.id==="files"&&v&&ne.length===0&&!J&&he(v.id)},pi=()=>{t(9,w="notes"),Wt()},mi=()=>{t(9,w="files"),Jt()},vi=()=>t(9,w="worklog"),hi=d=>dt(d);function bi(){X=this.value,t(22,X)}const ki=d=>d.key==="Enter"&&Gt(),gi=d=>dt(d),yi=d=>{const L=d.detail;L===0?(t(33,le=[]),t(32,J=null),he(v.id)):Lt(L-1)},wi=d=>rt(d.detail),ji=d=>at(d.detail),zi=d=>Q("OpenFile",d.detail),qi=d=>Q("OpenFolder",d.detail),Ci=d=>Xt(d.detail),Ti=d=>Dt(d.detail.id),Mi=d=>St(d.detail),Li=d=>It(d.detail),Si=d=>Et(d.detail),Di=d=>Ft(d.detail),Ii=d=>Nt(d.detail),Ei=d=>Ht(d.detail),Ai=d=>Q("OpenFile",d.detail),Ni=d=>Q("RunAction",d.id),Fi=d=>Zt(d.id);function Hi(){N=this.value,t(15,N)}function Bi(){q=yn(this.value),t(14,q)}const Oi=d=>ge(d.nodeId),Pi=(d,L)=>L.key==="Enter"&&ge(d.nodeId),Vi=d=>ge(d.nodeId),Ri=(d,L)=>L.key==="Enter"&&ge(d.nodeId),Ki=d=>ge(d.nodeId),Wi=(d,L)=>L.key==="Enter"&&ge(d.nodeId),Gi=d=>ge(d.nodeId),Ui=(d,L)=>L.key==="Enter"&&ge(d.nodeId);function Ji(){S=this.value,t(17,S)}const Xi=d=>d.key==="Enter"&&Kt();function Zi(){T=bt(this),t(18,T),t(0,n)}function Yi(){C=bt(this),t(19,C),t(20,D)}function Qi(){B=this.value,t(24,B)}const xi=d=>d.key==="Enter"&&mt();function $i(){P=bt(this),t(25,P),t(49,U)}function eo(){F=this.value,t(26,F)}const to=d=>d.key==="Enter"&&mt(),lo=()=>pt("copy"),no=()=>pt("link");function io(){Ee=this.value,t(47,Ee)}return[n,i,s,o,_,m,h,p,v,w,b,y,M,E,q,N,O,S,T,C,D,R,X,x,B,P,F,$,K,oe,ie,Z,J,le,ne,_e,ae,V,fe,pe,Y,it,jt,zt,qt,Ct,Ye,Ee,Ae,U,In,st,ct,he,rt,Mt,Lt,at,ft,En,St,Dt,It,Et,At,Nt,Ft,Ht,On,Pn,Vn,Vt,Wn,Gn,Un,Jn,Xn,Zn,Kt,Wt,Yn,Gt,dt,Qn,xn,$n,ei,Jt,ti,pt,li,Xt,ii,oi,si,mt,Zt,ci,ge,ri,ai,fi,ui,di,_i,pi,mi,vi,hi,bi,ki,gi,yi,wi,ji,zi,qi,Ci,Ti,Mi,Li,Si,Di,Ii,Ei,Ai,Ni,Fi,Hi,Bi,Oi,Pi,Vi,Ri,Ki,Wi,Gi,Ui,Ji,Xi,Zi,Yi,Qi,xi,$i,eo,to,lo,no,io]}class ec extends We{constructor(e){super(),Ke(this,e,$s,xs,Ve,{},null,[-1,-1,-1,-1,-1,-1,-1,-1])}}new ec({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/assets/main-DtITCkHU.js b/cmd/verstak-gui/frontend-dist/assets/main-DtITCkHU.js
deleted file mode 100644
index 86bdd7b..0000000
--- a/cmd/verstak-gui/frontend-dist/assets/main-DtITCkHU.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var Hi=Object.defineProperty;var ji=(l,e,t)=>e in l?Hi(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var dt=(l,e,t)=>ji(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 s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=t(i);fetch(i.href,s)}})();function q(){}function ln(l){return l()}function Vt(){return Object.create(null)}function se(l){l.forEach(ln)}function nn(l){return typeof l=="function"}function Be(l,e){return l!=l?e==e:l!==e||l&&typeof l=="object"||typeof l=="function"}let Xe;function Ye(l,e){return l===e?!0:(Xe||(Xe=document.createElement("a")),Xe.href=e,l===Xe.href)}function Bi(l){return Object.keys(l).length===0}function Oi(l){return l??""}function f(l,e){l.appendChild(e)}function g(l,e,t){l.insertBefore(e,t||null)}function h(l){l.parentNode&&l.parentNode.removeChild(l)}function ue(l,e){for(let t=0;tl.removeEventListener(e,t,n)}function ge(l){return function(e){return e.stopPropagation(),l.call(this,e)}}function Ke(l){return function(e){e.target===this&&l.call(this,e)}}function a(l,e,t){t==null?l.removeAttribute(e):l.getAttribute(e)!==t&&l.setAttribute(e,t)}function on(l){return l===""?null:+l}function Pi(l){return Array.from(l.childNodes)}function O(l,e){e=""+e,l.data!==e&&(l.data=e)}function _e(l,e){l.value=e??""}function Rt(l,e,t){for(let n=0;n{const i=l.$$.callbacks[e];if(i){const s=Vi(e,t,{cancelable:n});return i.slice().forEach(o=>{o.call(l,s)}),!s.defaultPrevented}return!0}}function Ri(l,e){const t=l.$$.callbacks[e.type];t&&t.slice().forEach(n=>n.call(this,e))}const Ae=[],Kt=[];let He=[];const xt=[],Wi=Promise.resolve();let _t=!1;function Ki(){_t||(_t=!0,Wi.then(rn))}function Qe(l){He.push(l)}const kt=new Set;let Fe=0;function rn(){if(Fe!==0)return;const l=We;do{try{for(;Fel.indexOf(n)===-1?e.push(n):t.push(n)),t.forEach(n=>n()),He=e}const Ze=new Set;let De;function ye(){De={r:0,c:[],p:De}}function we(){De.r||se(De.c),De=De.p}function ie(l,e){l&&l.i&&(Ze.delete(l),l.i(e))}function re(l,e,t,n){if(l&&l.o){if(Ze.has(l))return;Ze.add(l),De.c.push(()=>{Ze.delete(l),n&&(t&&l.d(1),n())}),l.o(e)}else n&&n()}function te(l){return(l==null?void 0:l.length)!==void 0?l:Array.from(l)}function Gi(l,e){re(l,1,1,()=>{e.delete(l.key)})}function Ui(l,e,t,n,i,s,o,r,c,k,m,v){let _=l.length,p=s.length,b=_;const y={};for(;b--;)y[l[b].key]=b;const w=[],T=new Map,S=new Map,A=[];for(b=p;b--;){const I=v(i,s,b),F=t(I);let L=o.get(F);L?A.push(()=>L.p(I,e)):(L=k(F,I),L.c()),T.set(F,w[b]=L),F in y&&S.set(F,Math.abs(b-y[F]))}const M=new Set,j=new Set;function B(I){ie(I,1),I.m(r,m),o.set(I.key,I),m=I.first,p--}for(;_&&p;){const I=w[p-1],F=l[_-1],L=I.key,N=F.key;I===F?(m=I.first,_--,p--):T.has(N)?!o.has(L)||M.has(L)?B(I):j.has(N)?_--:S.get(L)>S.get(N)?(j.add(L),B(I)):(M.add(N),_--):(c(F,o),_--)}for(;_--;){const I=l[_];T.has(I.key)||c(I,o)}for(;p;)B(w[p-1]);return se(A),w}function Ie(l){l&&l.c()}function Me(l,e,t){const{fragment:n,after_update:i}=l.$$;n&&n.m(e,t),Qe(()=>{const s=l.$$.on_mount.map(ln).filter(nn);l.$$.on_destroy?l.$$.on_destroy.push(...s):se(s),l.$$.on_mount=[]}),i.forEach(Qe)}function Le(l,e){const t=l.$$;t.fragment!==null&&(qi(t.after_update),se(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Ji(l,e){l.$$.dirty[0]===-1&&(Ae.push(l),Ki(),l.$$.dirty.fill(0)),l.$$.dirty[e/31|0]|=1<{const b=p.length?p[0]:_;return k.ctx&&i(k.ctx[v],k.ctx[v]=b)&&(!k.skip_bound&&k.bound[v]&&k.bound[v](b),m&&Ji(l,v)),_}):[],k.update(),m=!0,se(k.before_update),k.fragment=n?n(k.ctx):!1,e.target){if(e.hydrate){const v=Pi(e.target);k.fragment&&k.fragment.l(v),v.forEach(h)}else k.fragment&&k.fragment.c();e.intro&&ie(l.$$.fragment),Me(l,e.target,e.anchor),rn()}Re(c)}class Pe{constructor(){dt(this,"$$");dt(this,"$$set")}$destroy(){Le(this,1),this.$destroy=q}$on(e,t){if(!nn(t))return q;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&&!Bi(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Xi="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Xi);function Zi(l){let e,t;return{c(){e=x("path"),t=x("polyline"),a(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),a(t,"points","14 2 14 8 20 8")},m(n,i){g(n,e,i),g(n,t,i)},d(n){n&&(h(e),h(t))}}}function Yi(l){let e,t,n,i,s;return{c(){e=x("path"),t=x("polyline"),n=x("line"),i=x("line"),s=x("polyline"),a(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),a(t,"points","14 2 14 8 20 8"),a(n,"x1","16"),a(n,"y1","13"),a(n,"x2","8"),a(n,"y2","13"),a(i,"x1","16"),a(i,"y1","17"),a(i,"x2","8"),a(i,"y2","17"),a(s,"points","10 9 9 9 8 9")},m(o,r){g(o,e,r),g(o,t,r),g(o,n,r),g(o,i,r),g(o,s,r)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function Qi(l){let e,t;return{c(){e=x("polyline"),t=x("polyline"),a(e,"points","16 18 22 12 16 6"),a(t,"points","8 6 2 12 8 18")},m(n,i){g(n,e,i),g(n,t,i)},d(n){n&&(h(e),h(t))}}}function $i(l){let e,t,n,i;return{c(){e=x("path"),t=x("polyline"),n=x("line"),i=x("rect"),a(e,"d","M21 8v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8"),a(t,"points","7 3 12 8 17 3"),a(n,"x1","3"),a(n,"y1","8"),a(n,"x2","21"),a(n,"y2","8"),a(i,"x","10"),a(i,"y","12"),a(i,"width","4"),a(i,"height","4"),a(i,"rx","1")},m(s,o){g(s,e,o),g(s,t,o),g(s,n,o),g(s,i,o)},d(s){s&&(h(e),h(t),h(n),h(i))}}}function eo(l){let e,t,n,i,s;return{c(){e=x("path"),t=x("polyline"),n=x("line"),i=x("line"),s=x("line"),a(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),a(t,"points","14 2 14 8 20 8"),a(n,"x1","9"),a(n,"y1","12"),a(n,"x2","15"),a(n,"y2","12"),a(i,"x1","9"),a(i,"y1","15"),a(i,"x2","13"),a(i,"y2","15"),a(s,"x1","12"),a(s,"y1","15"),a(s,"x2","12"),a(s,"y2","18")},m(o,r){g(o,e,r),g(o,t,r),g(o,n,r),g(o,i,r),g(o,s,r)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function to(l){let e,t,n,i,s,o;return{c(){e=x("path"),t=x("polyline"),n=x("line"),i=x("line"),s=x("line"),o=x("line"),a(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),a(t,"points","14 2 14 8 20 8"),a(n,"x1","8"),a(n,"y1","12"),a(n,"x2","16"),a(n,"y2","12"),a(i,"x1","8"),a(i,"y1","16"),a(i,"x2","16"),a(i,"y2","16"),a(s,"x1","8"),a(s,"y1","14"),a(s,"x2","12"),a(s,"y2","14"),a(o,"x1","12"),a(o,"y1","12"),a(o,"x2","12"),a(o,"y2","18")},m(r,c){g(r,e,c),g(r,t,c),g(r,n,c),g(r,i,c),g(r,s,c),g(r,o,c)},d(r){r&&(h(e),h(t),h(n),h(i),h(s),h(o))}}}function lo(l){let e,t,n,i;return{c(){e=x("path"),t=x("polyline"),n=x("line"),i=x("line"),a(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),a(t,"points","14 2 14 8 20 8"),a(n,"x1","16"),a(n,"y1","13"),a(n,"x2","8"),a(n,"y2","13"),a(i,"x1","16"),a(i,"y1","17"),a(i,"x2","8"),a(i,"y2","17")},m(s,o){g(s,e,o),g(s,t,o),g(s,n,o),g(s,i,o)},d(s){s&&(h(e),h(t),h(n),h(i))}}}function no(l){let e,t,n,i,s;return{c(){e=x("path"),t=x("polyline"),n=x("line"),i=x("line"),s=x("line"),a(e,"d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"),a(t,"points","14 2 14 8 20 8"),a(n,"x1","8"),a(n,"y1","12"),a(n,"x2","16"),a(n,"y2","12"),a(i,"x1","8"),a(i,"y1","16"),a(i,"x2","16"),a(i,"y2","16"),a(s,"x1","8"),a(s,"y1","14"),a(s,"x2","12"),a(s,"y2","14")},m(o,r){g(o,e,r),g(o,t,r),g(o,n,r),g(o,i,r),g(o,s,r)},d(o){o&&(h(e),h(t),h(n),h(i),h(s))}}}function io(l){let e,t,n;return{c(){e=x("path"),t=x("circle"),n=x("circle"),a(e,"d","M9 18V5l12-2v13"),a(t,"cx","6"),a(t,"cy","18"),a(t,"r","3"),a(n,"cx","18"),a(n,"cy","16"),a(n,"r","3")},m(i,s){g(i,e,s),g(i,t,s),g(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function oo(l){let e,t;return{c(){e=x("rect"),t=x("polyline"),a(e,"x","2"),a(e,"y","4"),a(e,"width","20"),a(e,"height","16"),a(e,"rx","2"),a(t,"points","10 9 16 12 10 15 10 9")},m(n,i){g(n,e,i),g(n,t,i)},d(n){n&&(h(e),h(t))}}}function so(l){let e,t,n;return{c(){e=x("rect"),t=x("circle"),n=x("polyline"),a(e,"x","3"),a(e,"y","3"),a(e,"width","18"),a(e,"height","18"),a(e,"rx","2"),a(e,"ry","2"),a(t,"cx","8.5"),a(t,"cy","8.5"),a(t,"r","1.5"),a(n,"points","21 15 16 10 5 21")},m(i,s){g(i,e,s),g(i,t,s),g(i,n,s)},d(i){i&&(h(e),h(t),h(n))}}}function ao(l){let e;return{c(){e=x("path"),a(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){g(t,e,n)},d(t){t&&h(e)}}}function ro(l){let e;function t(s,o){return s[0]==="folder"?ao:s[0]==="image"?so:s[0]==="video"?oo:s[0]==="audio"?io:s[0]==="pdf"?no:s[0]==="document"?lo:s[0]==="spreadsheet"?to:s[0]==="presentation"?eo:s[0]==="archive"?$i:s[0]==="code"?Qi:s[0]==="text"?Yi:Zi}let n=t(l),i=n(l);return{c(){e=x("svg"),i.c(),a(e,"width",l[1]),a(e,"height",l[1]),a(e,"viewBox","0 0 24 24"),a(e,"fill","none"),a(e,"stroke","currentColor"),a(e,"stroke-width","1.5"),a(e,"stroke-linecap","round"),a(e,"stroke-linejoin","round"),a(e,"xmlns","http://www.w3.org/2000/svg")},m(s,o){g(s,e,o),i.m(e,null)},p(s,[o]){n!==(n=t(s))&&(i.d(1),i=n(s),i&&(i.c(),i.m(e,null))),o&2&&a(e,"width",s[1]),o&2&&a(e,"height",s[1])},i:q,o:q,d(s){s&&h(e),i.d()}}}function co(l,e,t){let{kind:n="generic"}=e,{size:i=20}=e;return l.$$set=s=>{"kind"in s&&t(0,n=s.kind),"size"in s&&t(1,i=s.size)},[n,i]}class cn extends Pe{constructor(e){super(),Oe(this,e,co,ro,Be,{kind:0,size:1})}}function $e(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 pt={"image/jpeg":"Изображение JPEG","image/png":"Изображение PNG","image/gif":"Изображение GIF","image/webp":"Изображение WebP","image/svg+xml":"Изображение SVG","image/bmp":"Изображение BMP","image/tiff":"Изображение TIFF","image/avif":"Изображение AVIF","application/pdf":"PDF документ","application/msword":"Документ Word","application/vnd.openxmlformats-officedocument.wordprocessingml.document":"Документ Word","application/vnd.ms-excel":"Таблица Excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"Таблица Excel","application/vnd.ms-powerpoint":"Презентация PowerPoint","application/vnd.openxmlformats-officedocument.presentationml.presentation":"Презентация PowerPoint","application/zip":"ZIP архив","application/gzip":"GZIP архив","application/x-tar":"TAR архив","application/x-7z-compressed":"7z архив","application/x-rar-compressed":"RAR архив","text/plain":"Текстовый файл","text/html":"HTML файл","text/css":"CSS файл","text/javascript":"JavaScript файл","application/json":"JSON файл","application/xml":"XML файл","application/x-yaml":"YAML файл","application/octet-stream":"Бинарный файл","application/x-msdos-program":"Исполняемый файл","inode/directory":"Папка"};function qt(l){return l?pt[l]||l:"Неизвестно"}function fo(l){if(l.type==="folder")return"Папка";const e=(l.mime||"").toLowerCase();if(pt[e])return pt[e];const n=(l.name||"").toLowerCase().split(".").pop();return n?n.toUpperCase():"Файл"}function fn(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 uo=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/tiff","image/avif","image/svg+xml"],ko=["text/plain","text/html","text/css","text/javascript","application/json","application/xml","application/x-yaml","text/x-shellscript"],_o=["txt","log","conf","ini","yaml","yml","json","xml","csv","sh","py","js","ts","css","html","md","markdown","cfg"],po=["jpg","jpeg","png","gif","webp","bmp","tiff","tif","avif","svg"];function un(l){const e=(l.mime||"").toLowerCase(),n=(l.name||"").toLowerCase().split(".").pop();return uo.includes(e)||po.includes(n)}function dn(l){const e=(l.mime||"").toLowerCase(),n=(l.name||"").toLowerCase().split(".").pop();return ko.includes(e)||_o.includes(n)&&n!=="md"&&n!=="markdown"}function kn(l){return(l.mime||"").toLowerCase().includes("pdf")}function _n(l){const e=(l.name||"").toLowerCase();return e.endsWith(".md")||e.endsWith(".markdown")}function mo(l){return un(l)||kn(l)}function vo(l){return dn(l)||_n(l)}function ho(l){let e,t,n,i=$e(l[0].size)+"",s;return{c(){e=u("span"),e.textContent="·",t=C(),n=u("span"),s=E(i),a(e,"class","meta-sep svelte-1u905d2")},m(o,r){g(o,e,r),g(o,t,r),g(o,n,r),f(n,s)},p(o,r){r&1&&i!==(i=$e(o[0].size)+"")&&O(s,i)},d(o){o&&(h(e),h(t),h(n))}}}function bo(l){let e,t,n;return{c(){e=u("button"),e.innerHTML=' ',a(e,"class","action-btn svelte-1u905d2"),a(e,"title","Открыть папку"),a(e,"aria-label","Открыть папку")},m(i,s){g(i,e,s),t||(n=H(e,"click",ge(l[27])),t=!0)},p:q,d(i){i&&h(e),t=!1,n()}}}function go(l){let e,t,n,i,s;return{c(){e=u("button"),e.innerHTML=' ',t=C(),n=u("button"),n.innerHTML=' ',a(e,"class","action-btn svelte-1u905d2"),a(e,"title","Предпросмотр"),a(e,"aria-label","Предпросмотр"),a(n,"class","action-btn svelte-1u905d2"),a(n,"title","Открыть во внешней программе"),a(n,"aria-label","Открыть внешне")},m(o,r){g(o,e,r),g(o,t,r),g(o,n,r),i||(s=[H(e,"click",ge(l[26])),H(n,"click",ge(l[8]))],i=!0)},p:q,d(o){o&&(h(e),h(t),h(n)),i=!1,se(s)}}}function Gt(l){let e,t,n,i,s,o,r,c,k,m,v,_,p,b,y,w,T,S,A,M,j,B,I,F=l[5]&&yo(l);return{c(){e=u("div"),t=C(),n=u("div"),i=u("button"),i.innerHTML=`
- Открыть`,s=C(),o=u("button"),o.innerHTML=`
- Открыть во внешней программе`,r=C(),F&&F.c(),c=C(),k=u("div"),m=C(),v=u("button"),v.innerHTML=`
- Переименовать`,_=C(),p=u("button"),p.innerHTML=`
- Дублировать`,b=C(),y=u("button"),y.innerHTML=`
- Вырезать`,w=C(),T=u("button"),T.innerHTML=`
- Копировать`,S=C(),A=u("div"),M=C(),j=u("button"),j.innerHTML=`
- Удалить`,a(e,"class","menu-backdrop svelte-1u905d2"),a(e,"role","presentation"),a(i,"class","menu-item svelte-1u905d2"),a(i,"role","menuitem"),a(o,"class","menu-item svelte-1u905d2"),a(o,"role","menuitem"),a(k,"class","menu-sep svelte-1u905d2"),a(v,"class","menu-item svelte-1u905d2"),a(v,"role","menuitem"),a(p,"class","menu-item svelte-1u905d2"),a(p,"role","menuitem"),a(y,"class","menu-item svelte-1u905d2"),a(y,"role","menuitem"),a(T,"class","menu-item svelte-1u905d2"),a(T,"role","menuitem"),a(A,"class","menu-sep svelte-1u905d2"),a(j,"class","menu-item menu-item-danger svelte-1u905d2"),a(j,"role","menuitem"),a(n,"class","menu svelte-1u905d2"),a(n,"role","menu")},m(L,N){g(L,e,N),g(L,t,N),g(L,n,N),f(n,i),f(n,s),f(n,o),f(n,r),F&&F.m(n,null),f(n,c),f(n,k),f(n,m),f(n,v),f(n,_),f(n,p),f(n,b),f(n,y),f(n,w),f(n,T),f(n,S),f(n,A),f(n,M),f(n,j),B||(I=[H(e,"click",ge(l[17])),H(i,"click",l[15]),H(o,"click",l[8]),H(v,"click",l[11]),H(p,"click",l[12]),H(y,"click",l[13]),H(T,"click",l[14]),H(j,"click",l[10]),H(n,"click",ge(l[25]))],B=!0)},p(L,N){L[5]&&F.p(L,N)},d(L){L&&(h(e),h(t),h(n)),F&&F.d(),B=!1,se(I)}}}function yo(l){let e,t,n;return{c(){e=u("button"),e.innerHTML=`
- Показать в проводнике`,a(e,"class","menu-item svelte-1u905d2"),a(e,"role","menuitem")},m(i,s){g(i,e,s),t||(n=H(e,"click",l[9]),t=!0)},p:q,d(i){i&&h(e),t=!1,n()}}}function wo(l){let e,t,n,i,s,o,r=l[0].name+"",c,k,m,v,_,p,b,y,w,T,S,A,M,j,B,I,F,L,N,X,ee,Z;n=new cn({props:{kind:l[4],size:22}});let V=!l[5]&&ho(l);function le(R,$){return R[5]?bo:go}let K=le(l)(l),W=l[2]&&Gt(l);return{c(){e=u("div"),t=u("div"),Ie(n.$$.fragment),i=C(),s=u("div"),o=u("div"),c=E(r),m=C(),v=u("div"),_=u("span"),_.textContent=`${l[6]}`,p=C(),V&&V.c(),b=C(),y=u("div"),K.c(),w=C(),T=u("button"),S=x("svg"),A=x("circle"),M=x("circle"),j=x("circle"),B=C(),I=u("button"),I.innerHTML=' ',L=C(),W&&W.c(),N=he(),a(t,"class","file-row-icon svelte-1u905d2"),a(o,"class","file-row-name svelte-1u905d2"),a(o,"title",k=l[0].name),a(v,"class","file-row-meta svelte-1u905d2"),a(s,"class","file-row-body svelte-1u905d2"),a(A,"cx","12"),a(A,"cy","5"),a(A,"r","2"),a(M,"cx","12"),a(M,"cy","12"),a(M,"r","2"),a(j,"cx","12"),a(j,"cy","19"),a(j,"r","2"),a(S,"width","16"),a(S,"height","16"),a(S,"viewBox","0 0 24 24"),a(S,"fill","currentColor"),a(T,"class","action-btn svelte-1u905d2"),a(T,"title","Ещё"),a(T,"aria-label","Ещё"),a(T,"aria-expanded",l[2]),a(I,"class","action-btn action-btn-danger svelte-1u905d2"),a(I,"title","Удалить"),a(I,"aria-label","Удалить"),a(y,"class","file-row-actions svelte-1u905d2"),a(e,"class","file-row svelte-1u905d2"),a(e,"role","button"),a(e,"tabindex","0"),a(e,"draggable","true"),a(e,"aria-label",F=l[5]?`Папка ${l[0].name}`:`Файл ${l[0].name}`),Wt(e,"file-row--selected",l[1])},m(R,$){g(R,e,$),f(e,t),Me(n,t,null),f(e,i),f(e,s),f(s,o),f(o,c),f(s,m),f(s,v),f(v,_),f(v,p),V&&V.m(v,null),f(e,b),f(e,y),K.m(y,null),f(y,w),f(y,T),f(T,S),f(S,A),f(S,M),f(S,j),f(y,B),f(y,I),g(R,L,$),W&&W.m(R,$),g(R,N,$),X=!0,ee||(Z=[H(window,"click",l[17]),H(T,"click",ge(l[16])),H(I,"click",ge(l[10])),H(e,"click",l[7]),H(e,"contextmenu",l[21]),H(e,"dragstart",l[18]),H(e,"dragover",l[19]),H(e,"drop",l[20])],ee=!0)},p(R,[$]){(!X||$&1)&&r!==(r=R[0].name+"")&&O(c,r),(!X||$&1&&k!==(k=R[0].name))&&a(o,"title",k),R[5]||V.p(R,$),K.p(R,$),(!X||$&4)&&a(T,"aria-expanded",R[2]),(!X||$&1&&F!==(F=R[5]?`Папка ${R[0].name}`:`Файл ${R[0].name}`))&&a(e,"aria-label",F),(!X||$&2)&&Wt(e,"file-row--selected",R[1]),R[2]?W?W.p(R,$):(W=Gt(R),W.c(),W.m(N.parentNode,N)):W&&(W.d(1),W=null)},i(R){X||(ie(n.$$.fragment,R),X=!0)},o(R){re(n.$$.fragment,R),X=!1},d(R){R&&(h(e),h(L),h(N)),Le(n),V&&V.d(),K.d(),W&&W.d(R),ee=!1,se(Z)}}}function Co(l,e,t){let{item:n}=e,{selected:i=!1}=e,{onDragStart:s}=e,{onDragOver:o}=e,{onDrop:r}=e;const c=et(),k=fn(n),m=n.type==="folder",v=fo(n);let _=!1,p=null;function b(P){P.ctrlKey||P.metaKey?c("toggleSelect",n.id):P.shiftKey?c("rangeSelect",n.id):p?(clearTimeout(p),p=null,m?c("navigate",n.id):c("preview",n)):p=setTimeout(()=>{p=null,c("selectOne",n.id)},250)}function y(){c("openExternal",n.fileId)}function w(){c("showInFolder",n.id)}function T(){t(2,_=!1),c("delete",{id:n.id,type:n.type})}function S(){t(2,_=!1),c("rename",{id:n.id,name:n.name})}function A(){t(2,_=!1),c("duplicate",n.id)}function M(){t(2,_=!1),c("cut",n.id)}function j(){t(2,_=!1),c("copy",n.id)}function B(){t(2,_=!1),m?c("navigate",n.id):c("preview",n)}function I(){t(2,_=!_)}function F(){t(2,_=!1)}function L(P){s&&s(P,n.id)}function N(P){o&&m&&o(P,n.id)}function X(P){r&&m&&r(P,n.id)}function ee(P){P.preventDefault(),t(2,_=!0)}function Z(P){Ri.call(this,l,P)}const V=()=>c("preview",n),le=()=>c("navigate",n.id);return l.$$set=P=>{"item"in P&&t(0,n=P.item),"selected"in P&&t(1,i=P.selected),"onDragStart"in P&&t(22,s=P.onDragStart),"onDragOver"in P&&t(23,o=P.onDragOver),"onDrop"in P&&t(24,r=P.onDrop)},[n,i,_,c,k,m,v,b,y,w,T,S,A,M,j,B,I,F,L,N,X,ee,s,o,r,Z,V,le]}class To extends Pe{constructor(e){super(),Oe(this,e,Co,wo,Be,{item:0,selected:1,onDragStart:22,onDragOver:23,onDrop:24})}}function Ut(l,e,t){const n=l.slice();return n[4]=e[t],n[6]=t,n}function Mo(l){let e;return{c(){e=u("span"),e.textContent="/",a(e,"class","sep svelte-csi2lb")},m(t,n){g(t,e,n)},d(t){t&&h(e)}}}function Lo(l){let e,t=l[4].name+"",n,i,s;function o(){return l[2](l[6])}return{c(){e=u("button"),n=E(t),a(e,"class","crumb crumb--link svelte-csi2lb")},m(r,c){g(r,e,c),f(e,n),i||(s=H(e,"click",o),i=!0)},p(r,c){l=r,c&1&&t!==(t=l[4].name+"")&&O(n,t)},d(r){r&&h(e),i=!1,s()}}}function So(l){let e,t=l[4].name+"",n;return{c(){e=u("span"),n=E(t),a(e,"class","crumb crumb--current svelte-csi2lb")},m(i,s){g(i,e,s),f(e,n)},p(i,s){s&1&&t!==(t=i[4].name+"")&&O(n,t)},d(i){i&&h(e)}}}function Jt(l){let e,t,n=l[6]>0&&Mo();function i(r,c){return r[6]===r[0].length-1?So:Lo}let s=i(l),o=s(l);return{c(){n&&n.c(),e=C(),o.c(),t=he()},m(r,c){n&&n.m(r,c),g(r,e,c),o.m(r,c),g(r,t,c)},p(r,c){s===(s=i(r))&&o?o.p(r,c):(o.d(1),o=s(r),o&&(o.c(),o.m(t.parentNode,t)))},d(r){r&&(h(e),h(t)),n&&n.d(r),o.d(r)}}}function Do(l){let e,t=te(l[0]),n=[];for(let i=0;is(r);return l.$$set=r=>{"crumbs"in r&&t(0,n=r.crumbs)},[n,s,o]}class pn extends Pe{constructor(e){super(),Oe(this,e,Io,Do,Be,{crumbs:0})}}function No(l){let e,t,n,i,s,o;return{c(){e=u("div"),t=u("p"),t.textContent="Предпросмотр недоступен для этого типа файлов.",n=C(),i=u("button"),i.textContent="Открыть во внешней программе",a(i,"class","btn btn-sm svelte-1cw3u0m"),a(e,"class","preview-status svelte-1cw3u0m")},m(r,c){g(r,e,c),f(e,t),f(e,n),f(e,i),s||(o=H(i,"click",l[9]),s=!0)},p:q,d(r){r&&h(e),s=!1,o()}}}function Eo(l){let e,t;function n(o,r){return r&2&&(e=null),e==null&&(e=!!(o[1]&&o[1].startsWith("data:"))),e?Oo:Bo}let i=n(l,-1),s=i(l);return{c(){s.c(),t=he()},m(o,r){s.m(o,r),g(o,t,r)},p(o,r){i===(i=n(o,r))&&s?s.p(o,r):(s.d(1),s=i(o),s&&(s.c(),s.m(t.parentNode,t)))},d(o){o&&h(t),s.d(o)}}}function Fo(l){let e,t,n;return{c(){e=u("pre"),t=u("code"),n=E(l[1]),a(e,"class","preview-text svelte-1cw3u0m")},m(i,s){g(i,e,s),f(e,t),f(t,n)},p(i,s){s&2&&O(n,i[1])},d(i){i&&h(e)}}}function Ao(l){let e,t,n,i;return{c(){e=u("div"),t=u("img"),Ye(t.src,n=l[1])||a(t,"src",n),a(t,"alt",i=l[0].name),a(t,"class","preview-image svelte-1cw3u0m"),a(e,"class","preview-image-container svelte-1cw3u0m")},m(s,o){g(s,e,o),f(e,t)},p(s,o){o&2&&!Ye(t.src,n=s[1])&&a(t,"src",n),o&1&&i!==(i=s[0].name)&&a(t,"alt",i)},d(s){s&&h(e)}}}function Ho(l){let e,t,n,i,s,o,r;return{c(){e=u("div"),t=u("p"),n=E(l[3]),i=C(),s=u("button"),s.textContent="Открыть во внешней программе",a(s,"class","btn btn-sm svelte-1cw3u0m"),a(e,"class","preview-status svelte-1cw3u0m")},m(c,k){g(c,e,k),f(e,t),f(t,n),f(e,i),f(e,s),o||(r=H(s,"click",l[9]),o=!0)},p(c,k){k&8&&O(n,c[3])},d(c){c&&h(e),o=!1,r()}}}function jo(l){let e;return{c(){e=u("div"),e.innerHTML="Загрузка...
",a(e,"class","preview-status svelte-1cw3u0m")},m(t,n){g(t,e,n)},p:q,d(t){t&&h(e)}}}function Bo(l){let e,t,n,i,s,o;return{c(){e=u("div"),t=u("p"),t.textContent="Предпросмотр PDF недоступен.",n=C(),i=u("button"),i.textContent="Открыть во внешней программе",a(i,"class","btn btn-sm svelte-1cw3u0m"),a(e,"class","preview-status svelte-1cw3u0m")},m(r,c){g(r,e,c),f(e,t),f(e,n),f(e,i),s||(o=H(i,"click",l[9]),s=!0)},p:q,d(r){r&&h(e),s=!1,o()}}}function Oo(l){let e,t,n;return{c(){e=u("div"),t=u("embed"),Ye(t.src,n=l[1])||a(t,"src",n),a(t,"type","application/pdf"),a(t,"class","preview-pdf svelte-1cw3u0m"),a(e,"class","preview-pdf-container svelte-1cw3u0m")},m(i,s){g(i,e,s),f(e,t)},p(i,s){s&2&&!Ye(t.src,n=i[1])&&a(t,"src",n)},d(i){i&&h(e)}}}function Po(l){let e,t,n,i,s,o,r,c=l[0].name+"",k,m,v,_,p=$e(l[0].size)+"",b,y,w=qt(l[0].mime)+"",T,S,A,M,j,B,I,F,L,N,X,ee;s=new cn({props:{kind:l[8],size:18}});function Z(P,K){return P[2]?jo:P[3]?Ho:P[6]&&P[1]?Ao:P[5]&&P[1]?Fo:P[4]?Eo:No}let V=Z(l),le=V(l);return{c(){e=u("div"),t=u("div"),n=u("header"),i=u("div"),Ie(s.$$.fragment),o=C(),r=u("span"),k=E(c),v=C(),_=u("div"),b=E(p),y=E(" · "),T=E(w),S=C(),A=u("div"),M=u("button"),M.innerHTML=' ',j=C(),B=u("button"),B.innerHTML=' ',I=C(),F=u("div"),le.c(),a(r,"class","preview-name svelte-1cw3u0m"),a(r,"title",m=l[0].name),a(i,"class","preview-title svelte-1cw3u0m"),a(_,"class","preview-meta svelte-1cw3u0m"),a(M,"class","action-btn svelte-1cw3u0m"),a(M,"title","Открыть во внешней программе"),a(M,"aria-label","Открыть внешне"),a(B,"class","action-btn action-btn-close svelte-1cw3u0m"),a(B,"title","Close"),a(B,"aria-label","Close preview"),a(A,"class","preview-actions svelte-1cw3u0m"),a(n,"class","preview-header svelte-1cw3u0m"),a(F,"class","preview-body svelte-1cw3u0m"),a(t,"class","modal svelte-1cw3u0m"),a(e,"class","overlay svelte-1cw3u0m"),a(e,"role","dialog"),a(e,"aria-modal","true"),a(e,"aria-label",L=`Preview: ${l[0].name}`)},m(P,K){g(P,e,K),f(e,t),f(t,n),f(n,i),Me(s,i,null),f(i,o),f(i,r),f(r,k),f(n,v),f(n,_),f(_,b),f(_,y),f(_,T),f(n,S),f(n,A),f(A,M),f(A,j),f(A,B),f(t,I),f(t,F),le.m(F,null),N=!0,X||(ee=[H(M,"click",l[9]),H(B,"click",l[10]),H(e,"click",Ke(l[11]))],X=!0)},p(P,[K]){(!N||K&1)&&c!==(c=P[0].name+"")&&O(k,c),(!N||K&1&&m!==(m=P[0].name))&&a(r,"title",m),(!N||K&1)&&p!==(p=$e(P[0].size)+"")&&O(b,p),(!N||K&1)&&w!==(w=qt(P[0].mime)+"")&&O(T,w),V===(V=Z(P))&&le?le.p(P,K):(le.d(1),le=V(P),le&&(le.c(),le.m(F,null))),(!N||K&1&&L!==(L=`Preview: ${P[0].name}`))&&a(e,"aria-label",L)},i(P){N||(ie(s.$$.fragment,P),N=!0)},o(P){re(s.$$.fragment,P),N=!1},d(P){P&&h(e),Le(s),le.d(),X=!1,se(ee)}}}function zo(l,e,t){let n,i,s,{item:o}=e,{content:r=""}=e,{loading:c=!1}=e,{error:k=""}=e;const m=et(),v=fn(o);function _(w){w.key==="Escape"&&m("close")}function p(){m("openExternal",o.fileId)}sn(()=>{window.addEventListener("keydown",_)}),an(()=>{window.removeEventListener("keydown",_)});const b=()=>m("close"),y=()=>m("close");return l.$$set=w=>{"item"in w&&t(0,o=w.item),"content"in w&&t(1,r=w.content),"loading"in w&&t(2,c=w.loading),"error"in w&&t(3,k=w.error)},l.$$.update=()=>{l.$$.dirty&3&&t(6,n=un(o)&&r&&r.startsWith("data:")),l.$$.dirty&1&&t(5,i=dn(o)||_n(o)),l.$$.dirty&1&&t(4,s=kn(o))},[o,r,c,k,s,i,n,m,v,p,b,y]}class Vo extends Pe{constructor(e){super(),Oe(this,e,zo,Po,Be,{item:0,content:1,loading:2,error:3})}}function Ro(l){let e,t,n,i,s,o,r,c,k,m,v,_,p,b,y,w,T;return{c(){e=u("div"),t=u("div"),n=u("h3"),i=E(l[0]),s=C(),o=u("p"),r=E(l[1]),c=C(),k=u("div"),m=u("button"),v=E(l[2]),p=C(),b=u("button"),y=E(l[3]),a(n,"class","svelte-1fv6yyk"),a(o,"class","message svelte-1fv6yyk"),a(m,"class",_="btn "+(l[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk"),a(b,"class","btn svelte-1fv6yyk"),a(k,"class","actions svelte-1fv6yyk"),a(t,"class","modal svelte-1fv6yyk"),a(e,"class","overlay svelte-1fv6yyk"),a(e,"role","dialog"),a(e,"aria-modal","true"),a(e,"aria-label",l[0])},m(S,A){g(S,e,A),f(e,t),f(t,n),f(n,i),f(t,s),f(t,o),f(o,r),f(t,c),f(t,k),f(k,m),f(m,v),f(k,p),f(k,b),f(b,y),w||(T=[H(m,"click",l[6]),H(b,"click",l[7]),H(e,"click",Ke(l[8]))],w=!0)},p(S,[A]){A&1&&O(i,S[0]),A&2&&O(r,S[1]),A&4&&O(v,S[2]),A&16&&_!==(_="btn "+(S[4]?"btn-danger":"btn-primary")+" svelte-1fv6yyk")&&a(m,"class",_),A&8&&O(y,S[3]),A&1&&a(e,"aria-label",S[0])},i:q,o:q,d(S){S&&h(e),w=!1,se(T)}}}function Wo(l,e,t){let{title:n="Подтверждение"}=e,{message:i=""}=e,{confirmText:s="Удалить"}=e,{cancelText:o="Отмена"}=e,{danger:r=!1}=e;const c=et(),k=()=>c("confirm"),m=()=>c("cancel"),v=()=>c("cancel");return l.$$set=_=>{"title"in _&&t(0,n=_.title),"message"in _&&t(1,i=_.message),"confirmText"in _&&t(2,s=_.confirmText),"cancelText"in _&&t(3,o=_.cancelText),"danger"in _&&t(4,r=_.danger)},[n,i,s,o,r,c,k,m,v]}class Ko extends Pe{constructor(e){super(),Oe(this,e,Wo,Ro,Be,{title:0,message:1,confirmText:2,cancelText:3,danger:4})}}function Xt(l,e,t){const n=l.slice();return n[162]=e[t],n}function Zt(l,e,t){const n=l.slice();return n[181]=e[t],n}function Yt(l,e,t){const n=l.slice();return n[181]=e[t],n}function Qt(l,e,t){const n=l.slice();return n[189]=e[t],n}function $t(l,e,t){const n=l.slice();return n[181]=e[t],n}function el(l,e,t){const n=l.slice();return n[181]=e[t],n}function tl(l,e,t){const n=l.slice();return n[165]=e[t],n}function ll(l,e,t){const n=l.slice();return n[176]=e[t],n}function nl(l,e,t){const n=l.slice();return n[173]=e[t],n}function il(l,e,t){const n=l.slice();return n[168]=e[t],n}function ol(l,e,t){const n=l.slice();return n[165]=e[t],n}function sl(l,e,t){const n=l.slice();return n[168]=e[t],n}function al(l,e,t){const n=l.slice();return n[184]=e[t],n}function rl(l,e,t){const n=l.slice();return n[162]=e[t],n}function cl(l,e,t){const n=l.slice();return n[198]=e[t],n}function fl(l,e,t){const n=l.slice();return n[201]=e[t],n}function ul(l){let e,t=l[201].label+"",n,i,s,o,r;function c(){return l[87](l[201])}return{c(){e=u("button"),n=E(t),i=C(),a(e,"class",s="nav-item "+(l[7]===l[201].id?"selected":"")+" svelte-xaaokk")},m(k,m){g(k,e,m),f(e,n),f(e,i),o||(r=H(e,"click",c),o=!0)},p(k,m){l=k,m[0]&1&&t!==(t=l[201].label+"")&&O(n,t),m[0]&129&&s!==(s="nav-item "+(l[7]===l[201].id?"selected":"")+" svelte-xaaokk")&&a(e,"class",s)},d(k){k&&h(e),o=!1,r()}}}function dl(l){let e,t,n,i,s,o=l[1].length>0&&kl(l),r=te(l[1]),c=[];for(let m=0;m0?o?o.p(m,v):(o=kl(m),o.c(),o.m(t,null)):o&&(o.d(1),o=null),v[0]&258|v[1]&16384){r=te(m[1]);let _;for(_=0;_ ',a(i,"class","dismiss-btn svelte-xaaokk"),a(i,"aria-label","Dismiss"),a(e,"class","error-banner svelte-xaaokk")},m(r,c){g(r,e,c),f(e,t),f(e,n),f(e,i),s||(o=[H(i,"click",ge(l[89])),H(e,"click",l[90])],s=!0)},p(r,c){c[0]&64&&O(t,r[6])},d(r){r&&h(e),s=!1,se(o)}}}function Uo(l){let e,t,n;function i(r,c){if(r[21])return es;if(r[0].length>0)return $o;if(r[6])return Qo}let s=i(l),o=s&&s(l);return{c(){e=u("div"),t=u("h2"),t.textContent="Верстак",n=C(),o&&o.c(),a(t,"class","svelte-xaaokk"),a(e,"class","welcome svelte-xaaokk")},m(r,c){g(r,e,c),f(e,t),f(e,n),o&&o.m(e,null)},p(r,c){s===(s=i(r))&&o?o.p(r,c):(o&&o.d(1),o=s&&s(r),o&&(o.c(),o.m(e,null)))},i:q,o:q,d(r){r&&h(e),o&&o.d()}}}function Jo(l){let e,t,n;function i(r,c){return r[3].length===0?ls:ts}let s=i(l),o=s(l);return{c(){e=u("div"),t=u("div"),t.innerHTML='Активность ',n=C(),o.c(),a(t,"class","activity-feed-header svelte-xaaokk"),a(e,"class","activity-feed svelte-xaaokk")},m(r,c){g(r,e,c),f(e,t),f(e,n),o.m(e,null)},p(r,c){s===(s=i(r))&&o?o.p(r,c):(o.d(1),o=s(r),o&&(o.c(),o.m(e,null)))},i:q,o:q,d(r){r&&h(e),o.d()}}}function Xo(l){let e,t,n,i,s,o=l[2].date+"",r,c,k,m=l[2].summary&&gl(l);function v(b,y){return b[2].groups&&b[2].groups.length>0?is:ns}let _=v(l),p=_(l);return{c(){e=u("div"),t=u("div"),n=u("h2"),n.textContent="Сегодня",i=C(),s=u("span"),r=E(o),c=C(),m&&m.c(),k=C(),p.c(),a(n,"class","svelte-xaaokk"),a(s,"class","today-date svelte-xaaokk"),a(t,"class","today-header svelte-xaaokk"),a(e,"class","today-dashboard svelte-xaaokk")},m(b,y){g(b,e,y),f(e,t),f(t,n),f(t,i),f(t,s),f(s,r),f(e,c),m&&m.m(e,null),f(e,k),p.m(e,null)},p(b,y){y[0]&4&&o!==(o=b[2].date+"")&&O(r,o),b[2].summary?m?m.p(b,y):(m=gl(b),m.c(),m.m(e,k)):m&&(m.d(1),m=null),_===(_=v(b))&&p?p.p(b,y):(p.d(1),p=_(b),p&&(p.c(),p.m(e,null)))},i:q,o:q,d(b){b&&h(e),m&&m.d(),p.d()}}}function Zo(l){let e,t,n,i,s,o,r=te(l[43]),c=[];for(let _=0;_{m[b]=null}),we()),~i?(s=m[i],s?s.p(_,p):(s=m[i]=k[i](_),s.c()),ie(s,1),s.m(n,null)):s=null)},i(_){o||(ie(s),o=!0)},o(_){re(s),o=!1},d(_){_&&(h(e),h(t),h(n)),ue(c,_),~i&&m[i].d()}}}function Yo(l){let e,t,n,i=l[11].title+"",s,o,r,c,k,m,v,_,p,b,y,w=l[11].dirty&&ql();return{c(){e=u("div"),t=u("div"),n=u("span"),s=E(i),o=C(),w&&w.c(),r=C(),c=u("div"),k=u("button"),k.textContent="Сохранить",m=C(),v=u("button"),v.textContent="Закрыть",_=C(),p=u("textarea"),a(n,"class","note-title svelte-xaaokk"),a(k,"class","btn btn-primary svelte-xaaokk"),a(v,"class","btn svelte-xaaokk"),a(c,"class","note-editor-actions svelte-xaaokk"),a(t,"class","note-editor-header svelte-xaaokk"),a(p,"class","note-textarea svelte-xaaokk"),a(p,"placeholder","Начните писать..."),a(e,"class","note-editor svelte-xaaokk")},m(T,S){g(T,e,S),f(e,t),f(t,n),f(n,s),f(t,o),w&&w.m(t,null),f(t,r),f(t,c),f(c,k),f(c,m),f(c,v),f(e,_),f(e,p),_e(p,l[11].content),b||(y=[H(k,"click",l[78]),H(v,"click",l[76]),H(p,"input",l[91]),H(p,"input",l[77])],b=!0)},p(T,S){S[0]&2048&&i!==(i=T[11].title+"")&&O(s,i),T[11].dirty?w||(w=ql(),w.c(),w.m(t,r)):w&&(w.d(1),w=null),S[0]&2048&&_e(p,T[11].content)},i:q,o:q,d(T){T&&h(e),w&&w.d(),b=!1,se(y)}}}function Qo(l){let e,t,n;return{c(){e=u("p"),t=E("Ошибка: "),n=E(l[6]),a(e,"class","error-text svelte-xaaokk")},m(i,s){g(i,e,s),f(e,t),f(e,n)},p(i,s){s[0]&64&&O(n,i[6])},d(i){i&&h(e)}}}function $o(l){let e,t,n;return{c(){e=u("p"),e.textContent="Выберите раздел в боковой панели.",t=C(),n=u("p"),n.textContent="Или создайте новое дело кнопкой «+».",a(e,"class","svelte-xaaokk"),a(n,"class","hint svelte-xaaokk")},m(i,s){g(i,e,s),g(i,t,s),g(i,n,s)},p:q,d(i){i&&(h(e),h(t),h(n))}}}function es(l){let e;return{c(){e=u("p"),e.textContent="Загрузка...",a(e,"class","svelte-xaaokk")},m(t,n){g(t,e,n)},p:q,d(t){t&&h(e)}}}function ts(l){let e,t=te(l[3]),n=[];for(let i=0;iАктивность пока не зафиксирована',a(e,"class","empty-state svelte-xaaokk")},m(t,n){g(t,e,n)},p:q,d(t){t&&h(e)}}}function hl(l){let e,t=l[181].targetType+"",n;return{c(){e=u("span"),n=E(t),a(e,"class","activity-feed-target svelte-xaaokk")},m(i,s){g(i,e,s),f(e,n)},p(i,s){s[0]&8&&t!==(t=i[181].targetType+"")&&O(n,t)},d(i){i&&h(e)}}}function bl(l){let e,t,n=je(l[181].eventType)+"",i,s,o,r,c=l[181].title+"",k,m,v,_,p=Ce(l[181].eventType)+"",b,y,w,T,S=ve(l[181].createdAt)+"",A,M,j=me(l[181].createdAt)+"",B,I,F,L,N=l[181].targetType&&hl(l);function X(){return l[123](l[181])}function ee(...Z){return l[124](l[181],...Z)}return{c(){e=u("div"),t=u("span"),i=E(n),s=C(),o=u("div"),r=u("span"),k=E(c),m=C(),v=u("div"),_=u("span"),b=E(p),y=C(),N&&N.c(),w=C(),T=u("span"),A=E(S),M=C(),B=E(j),I=C(),a(t,"class","activity-feed-icon svelte-xaaokk"),a(r,"class","activity-feed-title svelte-xaaokk"),a(_,"class","activity-feed-type svelte-xaaokk"),a(T,"class","activity-feed-time svelte-xaaokk"),a(v,"class","activity-feed-meta svelte-xaaokk"),a(o,"class","activity-feed-body svelte-xaaokk"),a(e,"class","activity-feed-event svelte-xaaokk"),a(e,"role","button"),a(e,"tabindex","0")},m(Z,V){g(Z,e,V),f(e,t),f(t,i),f(e,s),f(e,o),f(o,r),f(r,k),f(o,m),f(o,v),f(v,_),f(_,b),f(v,y),N&&N.m(v,null),f(v,w),f(v,T),f(T,A),f(T,M),f(T,B),f(e,I),F||(L=[H(e,"click",X),H(e,"keydown",ee)],F=!0)},p(Z,V){l=Z,V[0]&8&&n!==(n=je(l[181].eventType)+"")&&O(i,n),V[0]&8&&c!==(c=l[181].title+"")&&O(k,c),V[0]&8&&p!==(p=Ce(l[181].eventType)+"")&&O(b,p),l[181].targetType?N?N.p(l,V):(N=hl(l),N.c(),N.m(v,w)):N&&(N.d(1),N=null),V[0]&8&&S!==(S=ve(l[181].createdAt)+"")&&O(A,S),V[0]&8&&j!==(j=me(l[181].createdAt)+"")&&O(B,j)},d(Z){Z&&h(e),N&&N.d(),F=!1,se(L)}}}function gl(l){let e,t,n,i=l[2].summary.changedCases>0&&yl(l),s=l[2].summary.notes>0&&wl(l),o=l[2].summary.files>0&&Cl(l);return{c(){e=u("div"),i&&i.c(),t=C(),s&&s.c(),n=C(),o&&o.c(),a(e,"class","today-summary svelte-xaaokk")},m(r,c){g(r,e,c),i&&i.m(e,null),f(e,t),s&&s.m(e,null),f(e,n),o&&o.m(e,null)},p(r,c){r[2].summary.changedCases>0?i?i.p(r,c):(i=yl(r),i.c(),i.m(e,t)):i&&(i.d(1),i=null),r[2].summary.notes>0?s?s.p(r,c):(s=wl(r),s.c(),s.m(e,n)):s&&(s.d(1),s=null),r[2].summary.files>0?o?o.p(r,c):(o=Cl(r),o.c(),o.m(e,null)):o&&(o.d(1),o=null)},d(r){r&&h(e),i&&i.d(),s&&s.d(),o&&o.d()}}}function yl(l){let e,t=l[2].summary.changedCases+"",n,i,s=Te(l[2].summary.changedCases,"дело","дела","дел")+"",o;return{c(){e=u("span"),n=E(t),i=C(),o=E(s),a(e,"class","summary-chip svelte-xaaokk")},m(r,c){g(r,e,c),f(e,n),f(e,i),f(e,o)},p(r,c){c[0]&4&&t!==(t=r[2].summary.changedCases+"")&&O(n,t),c[0]&4&&s!==(s=Te(r[2].summary.changedCases,"дело","дела","дел")+"")&&O(o,s)},d(r){r&&h(e)}}}function wl(l){let e,t=l[2].summary.notes+"",n,i,s=Te(l[2].summary.notes,"заметка","заметки","заметок")+"",o;return{c(){e=u("span"),n=E(t),i=C(),o=E(s),a(e,"class","summary-chip svelte-xaaokk")},m(r,c){g(r,e,c),f(e,n),f(e,i),f(e,o)},p(r,c){c[0]&4&&t!==(t=r[2].summary.notes+"")&&O(n,t),c[0]&4&&s!==(s=Te(r[2].summary.notes,"заметка","заметки","заметок")+"")&&O(o,s)},d(r){r&&h(e)}}}function Cl(l){let e,t=l[2].summary.files+"",n,i,s=Te(l[2].summary.files,"файл","файла","файлов")+"",o;return{c(){e=u("span"),n=E(t),i=C(),o=E(s),a(e,"class","summary-chip svelte-xaaokk")},m(r,c){g(r,e,c),f(e,n),f(e,i),f(e,o)},p(r,c){c[0]&4&&t!==(t=r[2].summary.files+"")&&O(n,t),c[0]&4&&s!==(s=Te(r[2].summary.files,"файл","файла","файлов")+"")&&O(o,s)},d(r){r&&h(e)}}}function ns(l){let e;return{c(){e=u("div"),e.innerHTML='Сегодня пока тихо
Здесь появятся дела, заметки, файлы и действия, с которыми вы работали сегодня.
',a(e,"class","today-empty svelte-xaaokk")},m(t,n){g(t,e,n)},p:q,d(t){t&&h(e)}}}function is(l){let e,t,n=te(l[2].groups),i=[];for(let o=0;o0&&Dl(l);return{c(){for(let o=0;o0?s?s.p(o,r):(s=Dl(o),s.c(),s.m(t.parentNode,t)):s&&(s.d(1),s=null)},d(o){o&&(h(e),h(t)),ue(i,o),s&&s.d(o)}}}function Tl(l){let e,t=l[189].events.length+"",n,i,s=Te(l[189].events.length,"событие","события","событий")+"",o;return{c(){e=u("span"),n=E(t),i=C(),o=E(s),a(e,"class","today-case-count svelte-xaaokk")},m(r,c){g(r,e,c),f(e,n),f(e,i),f(e,o)},p(r,c){c[0]&4&&t!==(t=r[189].events.length+"")&&O(n,t),c[0]&4&&s!==(s=Te(r[189].events.length,"событие","события","событий")+"")&&O(o,s)},d(r){r&&h(e)}}}function os(l){let e;return{c(){e=u("div"),e.textContent="Изменён сегодня",a(e,"class","today-events-empty svelte-xaaokk")},m(t,n){g(t,e,n)},p:q,d(t){t&&h(e)}}}function ss(l){let e,t=te(l[189].events),n=[];for(let i=0;i0?ss:os}let B=j(l),I=B(l);return{c(){e=u("div"),t=u("div"),n=u("span"),s=E(i),o=C(),r=u("span"),k=E(c),m=C(),S&&S.c(),v=C(),_=u("span"),b=E(p),y=C(),I.c(),a(n,"class","today-case-title svelte-xaaokk"),a(r,"class","today-case-type svelte-xaaokk"),a(_,"class","today-case-time svelte-xaaokk"),a(t,"class","today-case-header svelte-xaaokk"),a(t,"role","button"),a(t,"tabindex","0"),a(e,"class","today-case svelte-xaaokk")},m(F,L){g(F,e,L),f(e,t),f(t,n),f(n,s),f(t,o),f(t,r),f(r,k),f(t,m),S&&S.m(t,null),f(t,v),f(t,_),f(_,b),f(e,y),I.m(e,null),w||(T=[H(t,"click",A),H(t,"keydown",M)],w=!0)},p(F,L){l=F,L[0]&4&&i!==(i=l[189].nodeTitle+"")&&O(s,i),L[0]&4&&c!==(c=en(l[189].nodeKind)+"")&&O(k,c),l[189].events?S?S.p(l,L):(S=Tl(l),S.c(),S.m(t,v)):S&&(S.d(1),S=null),L[0]&4&&p!==(p=me(l[189].lastActivityAt)+"")&&O(b,p),B===(B=j(l))&&I?I.p(l,L):(I.d(1),I=B(l),I&&(I.c(),I.m(e,null)))},d(F){F&&h(e),S&&S.d(),I.d(),w=!1,se(T)}}}function Dl(l){let e,t,n,i=te(l[2].events),s=[];for(let o=0;o0&&jl(l);const j=[gs,bs],B=[];function I(N,X){return N[25]?0:1}_=I(l),p=B[_]=j[_](l);let F=l[22]&&!l[24]&&Ol(),L=l[29]&&Pl(l);return{c(){e=u("div"),t=u("div"),n=u("button"),i=E("+ Добавить файл"),s=C(),o=u("button"),r=E("+ Добавить папку"),c=C(),k=u("button"),k.textContent="+ Новый файл",m=C(),M&&M.c(),v=C(),p.c(),b=C(),F&&F.c(),y=C(),L&&L.c(),w=he(),a(n,"class","btn btn-primary svelte-xaaokk"),n.disabled=l[22],a(o,"class","btn svelte-xaaokk"),o.disabled=l[22],a(k,"class","btn svelte-xaaokk"),a(t,"class","tab-toolbar svelte-xaaokk"),a(e,"class","files-tab svelte-xaaokk")},m(N,X){g(N,e,X),f(e,t),f(t,n),f(n,i),f(t,s),f(t,o),f(o,r),f(t,c),f(t,k),f(t,m),M&&M.m(t,null),f(e,v),B[_].m(e,null),f(e,b),F&&F.m(e,null),g(N,y,X),L&&L.m(N,X),g(N,w,X),T=!0,S||(A=[H(n,"click",l[80]),H(o,"click",l[81]),H(k,"click",l[52])],S=!0)},p(N,X){(!T||X[0]&4194304)&&(n.disabled=N[22]),(!T||X[0]&4194304)&&(o.disabled=N[22]),N[33].items.length>0?M?M.p(N,X):(M=jl(N),M.c(),M.m(t,null)):M&&(M.d(1),M=null);let ee=_;_=I(N),_===ee?B[_].p(N,X):(ye(),re(B[ee],1,1,()=>{B[ee]=null}),we(),p=B[_],p?p.p(N,X):(p=B[_]=j[_](N),p.c()),ie(p,1),p.m(e,b)),N[22]&&!N[24]?F||(F=Ol(),F.c(),F.m(e,null)):F&&(F.d(1),F=null),N[29]?L?(L.p(N,X),X[0]&536870912&&ie(L,1)):(L=Pl(N),L.c(),ie(L,1),L.m(w.parentNode,w)):L&&(ye(),re(L,1,1,()=>{L=null}),we())},i(N){T||(ie(p),ie(L),T=!0)},o(N){re(p),re(L),T=!1},d(N){N&&(h(e),h(y),h(w)),M&&M.d(),B[_].d(),F&&F.d(),L&&L.d(N),S=!1,se(A)}}}function us(l){let e,t,n,i,s,o,r,c=l[19]&&zl(l);function k(_,p){return _[10].length===0&&!_[19]?Ls:Ms}let m=k(l),v=m(l);return{c(){e=u("div"),t=u("div"),n=u("button"),n.textContent="+ Добавить заметку",i=C(),c&&c.c(),s=C(),v.c(),a(n,"class","btn btn-primary svelte-xaaokk"),a(t,"class","tab-toolbar svelte-xaaokk"),a(e,"class","notes-tab svelte-xaaokk")},m(_,p){g(_,e,p),f(e,t),f(t,n),f(e,i),c&&c.m(e,null),f(e,s),v.m(e,null),o||(r=H(n,"click",l[72]),o=!0)},p(_,p){_[19]?c?c.p(_,p):(c=zl(_),c.c(),c.m(e,s)):c&&(c.d(1),c=null),m===(m=k(_))&&v?v.p(_,p):(v.d(1),v=m(_),v&&(v.c(),v.m(e,null)))},i:q,o:q,d(_){_&&h(e),c&&c.d(),v.d(),o=!1,r()}}}function ds(l){let e,t,n=l[8].title+"",i,s,o,r,c,k,m=l[8].type+"",v,_,p,b,y,w=(l[8].section||"—")+"",T,S,A,M,j,B=ve(l[8].createdAt)+"",I,F,L,N,X,ee,Z,V,le,P,K,W,R,$,ne=l[10].length>0&&Rl(l),G=l[13].length>0&&Kl(l);return{c(){e=u("div"),t=u("h2"),i=E(n),s=C(),o=u("div"),r=u("div"),c=u("span"),c.textContent="Тип",k=u("span"),v=E(m),_=C(),p=u("div"),b=u("span"),b.textContent="Раздел",y=u("span"),T=E(w),S=C(),A=u("div"),M=u("span"),M.textContent="Создано",j=u("span"),I=E(B),F=C(),L=u("div"),N=u("button"),N.innerHTML=`
- Новая заметка`,X=C(),ee=u("button"),ee.innerHTML=`
- Добавить файл`,Z=C(),V=u("button"),V.innerHTML=`
- Добавить действие`,le=C(),P=u("button"),P.innerHTML=`
- Записать время`,K=C(),ne&&ne.c(),W=C(),G&&G.c(),a(t,"class","svelte-xaaokk"),a(c,"class","meta-label svelte-xaaokk"),a(k,"class","svelte-xaaokk"),a(r,"class","meta-item svelte-xaaokk"),a(b,"class","meta-label svelte-xaaokk"),a(y,"class","svelte-xaaokk"),a(p,"class","meta-item svelte-xaaokk"),a(M,"class","meta-label svelte-xaaokk"),a(j,"class","svelte-xaaokk"),a(A,"class","meta-item svelte-xaaokk"),a(o,"class","meta-grid svelte-xaaokk"),a(N,"class","qa-btn svelte-xaaokk"),a(ee,"class","qa-btn svelte-xaaokk"),a(V,"class","qa-btn svelte-xaaokk"),V.disabled=!0,a(V,"title","Следующий этап"),a(P,"class","qa-btn svelte-xaaokk"),a(L,"class","quick-actions svelte-xaaokk"),a(e,"class","overview svelte-xaaokk")},m(U,Y){g(U,e,Y),f(e,t),f(t,i),f(e,s),f(e,o),f(o,r),f(r,c),f(r,k),f(k,v),f(o,_),f(o,p),f(p,b),f(p,y),f(y,T),f(o,S),f(o,A),f(A,M),f(A,j),f(j,I),f(e,F),f(e,L),f(L,N),f(L,X),f(L,ee),f(L,Z),f(L,V),f(L,le),f(L,P),f(e,K),ne&&ne.m(e,null),f(e,W),G&&G.m(e,null),R||($=[H(N,"click",l[93]),H(ee,"click",l[94]),H(P,"click",l[95])],R=!0)},p(U,Y){Y[0]&256&&n!==(n=U[8].title+"")&&O(i,n),Y[0]&256&&m!==(m=U[8].type+"")&&O(v,m),Y[0]&256&&w!==(w=(U[8].section||"—")+"")&&O(T,w),Y[0]&256&&B!==(B=ve(U[8].createdAt)+"")&&O(I,B),U[10].length>0?ne?ne.p(U,Y):(ne=Rl(U),ne.c(),ne.m(e,W)):ne&&(ne.d(1),ne=null),U[13].length>0?G?G.p(U,Y):(G=Kl(U),G.c(),G.m(e,null)):G&&(G.d(1),G=null)},i:q,o:q,d(U){U&&h(e),ne&&ne.d(),G&&G.d(),R=!1,se($)}}}function ks(l){let e,t=te(l[4]),n=[];for(let i=0;iАктивность пока не зафиксирована',a(e,"class","empty-state svelte-xaaokk")},m(t,n){g(t,e,n)},p:q,d(t){t&&h(e)}}}function El(l){let e,t=l[181].targetType+"",n;return{c(){e=u("span"),n=E(t),a(e,"class","activity-event-target svelte-xaaokk")},m(i,s){g(i,e,s),f(e,n)},p(i,s){s[0]&16&&t!==(t=i[181].targetType+"")&&O(n,t)},d(i){i&&h(e)}}}function Fl(l){let e,t,n=je(l[181].eventType)+"",i,s,o,r=l[181].title+"",c,k,m,v=Ce(l[181].eventType)+"",_,p,b,y,w=me(l[181].createdAt)+"",T,S,A=l[181].targetType&&El(l);return{c(){e=u("div"),t=u("span"),i=E(n),s=C(),o=u("span"),c=E(r),k=C(),m=u("span"),_=E(v),p=C(),A&&A.c(),b=C(),y=u("span"),T=E(w),S=C(),a(t,"class","activity-event-icon svelte-xaaokk"),a(o,"class","activity-event-title svelte-xaaokk"),a(m,"class","activity-event-type svelte-xaaokk"),a(y,"class","activity-event-time svelte-xaaokk"),a(e,"class","activity-event svelte-xaaokk")},m(M,j){g(M,e,j),f(e,t),f(t,i),f(e,s),f(e,o),f(o,c),f(e,k),f(e,m),f(m,_),f(e,p),A&&A.m(e,null),f(e,b),f(e,y),f(y,T),f(e,S)},p(M,j){j[0]&16&&n!==(n=je(M[181].eventType)+"")&&O(i,n),j[0]&16&&r!==(r=M[181].title+"")&&O(c,r),j[0]&16&&v!==(v=Ce(M[181].eventType)+"")&&O(_,v),M[181].targetType?A?A.p(M,j):(A=El(M),A.c(),A.m(e,b)):A&&(A.d(1),A=null),j[0]&16&&w!==(w=me(M[181].createdAt)+"")&&O(T,w)},d(M){M&&h(e),A&&A.d()}}}function ps(l){let e,t=te(l[13]),n=[];for(let i=0;iЗаписей работы пока нет',a(e,"class","empty-state svelte-xaaokk")},m(t,n){g(t,e,n)},p:q,d(t){t&&h(e)}}}function Al(l){let e,t,n=l[165].summary+"",i,s,o,r=l[165].minutes+"",c,k,m=ve(l[165].createdAt)+"",v,_;return{c(){e=u("div"),t=u("div"),i=E(n),s=C(),o=u("div"),c=E(r),k=E(" мин · "),v=E(m),_=C(),a(t,"class","svelte-xaaokk"),a(o,"class","wl-meta svelte-xaaokk"),a(e,"class","worklog-entry svelte-xaaokk")},m(p,b){g(p,e,b),f(e,t),f(t,i),f(e,s),f(e,o),f(o,c),f(o,k),f(o,v),f(e,_)},p(p,b){b[0]&8192&&n!==(n=p[165].summary+"")&&O(i,n),b[0]&8192&&r!==(r=p[165].minutes+"")&&O(c,r),b[0]&8192&&m!==(m=ve(p[165].createdAt)+"")&&O(v,m)},d(p){p&&h(e)}}}function vs(l){let e,t=te(l[12]),n=[];for(let i=0;iДействий пока нет',a(e,"class","empty-state svelte-xaaokk")},m(t,n){g(t,e,n)},p:q,d(t){t&&h(e)}}}function Hl(l){let e,t,n=l[176].title+"",i,s,o=l[176].type+"",r,c,k,m,v,_;function p(){return l[114](l[176])}return{c(){e=u("div"),t=u("span"),i=E(n),s=u("span"),r=E(o),c=C(),k=u("button"),k.textContent="Запустить",m=C(),a(t,"class","svelte-xaaokk"),a(s,"class","action-type svelte-xaaokk"),a(k,"class","btn btn-sm svelte-xaaokk"),a(e,"class","action-card svelte-xaaokk")},m(b,y){g(b,e,y),f(e,t),f(t,i),f(e,s),f(s,r),f(e,c),f(e,k),f(e,m),v||(_=H(k,"click",p),v=!0)},p(b,y){l=b,y[0]&4096&&n!==(n=l[176].title+"")&&O(i,n),y[0]&4096&&o!==(o=l[176].type+"")&&O(r,o)},d(b){b&&h(e),v=!1,_()}}}function jl(l){let e,t,n=l[33].items.length+"",i,s,o;return{c(){e=u("button"),t=E("Вставить "),i=E(n),a(e,"class","btn svelte-xaaokk")},m(r,c){g(r,e,c),f(e,t),f(e,i),s||(o=H(e,"click",l[57]),s=!0)},p(r,c){c[1]&4&&n!==(n=r[33].items.length+"")&&O(i,n)},d(r){r&&h(e),s=!1,o()}}}function bs(l){let e,t,n,i,s,o,r;const c=[ws,ys],k=[];function m(b,y){return b[27].length>0?0:1}e=m(l),t=k[e]=c[e](l);const v=[Ts,Cs],_=[];function p(b,y){return b[28].length===0?0:1}return i=p(l),s=_[i]=v[i](l),{c(){t.c(),n=C(),s.c(),o=he()},m(b,y){k[e].m(b,y),g(b,n,y),_[i].m(b,y),g(b,o,y),r=!0},p(b,y){let w=e;e=m(b),e===w?k[e].p(b,y):(ye(),re(k[w],1,1,()=>{k[w]=null}),we(),t=k[e],t?t.p(b,y):(t=k[e]=c[e](b),t.c()),ie(t,1),t.m(n.parentNode,n));let T=i;i=p(b),i===T?_[i].p(b,y):(ye(),re(_[T],1,1,()=>{_[T]=null}),we(),s=_[i],s?s.p(b,y):(s=_[i]=v[i](b),s.c()),ie(s,1),s.m(o.parentNode,o))},i(b){r||(ie(t),ie(s),r=!0)},o(b){re(t),re(s),r=!1},d(b){b&&(h(n),h(o)),k[e].d(b),_[i].d(b)}}}function gs(l){let e;return{c(){e=u("div"),e.innerHTML='Загрузка...
',a(e,"class","empty-state svelte-xaaokk")},m(t,n){g(t,e,n)},p:q,i:q,o:q,d(t){t&&h(e)}}}function ys(l){let e,t;return e=new pn({props:{crumbs:[{name:"Файлы"}]}}),{c(){Ie(e.$$.fragment)},m(n,i){Me(e,n,i),t=!0},p:q,i(n){t||(ie(e.$$.fragment,n),t=!0)},o(n){re(e.$$.fragment,n),t=!1},d(n){Le(e,n)}}}function ws(l){let e,t,n,i,s,o;return e=new pn({props:{crumbs:[{name:"Файлы"},...l[27]]}}),e.$on("navigate",l[100]),{c(){Ie(e.$$.fragment),t=C(),n=u("button"),n.innerHTML=`
- Back`,a(n,"class","btn btn-sm back-btn svelte-xaaokk")},m(r,c){Me(e,r,c),g(r,t,c),g(r,n,c),i=!0,s||(o=H(n,"click",l[48]),s=!0)},p(r,c){const k={};c[0]&134217728&&(k.crumbs=[{name:"Файлы"},...r[27]]),e.$set(k)},i(r){i||(ie(e.$$.fragment,r),i=!0)},o(r){re(e.$$.fragment,r),i=!1},d(r){r&&(h(t),h(n)),Le(e,r),s=!1,o()}}}function Cs(l){let e,t=[],n=new Map,i,s=te(l[28]);const o=r=>r[173].id;for(let r=0;r0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов",o,r,c,k,m,v,_,p,b,y;return{c(){e=u("div"),t=u("div"),t.innerHTML=' ',n=C(),i=u("p"),o=E(s),r=C(),c=u("p"),c.textContent="Добавьте файл или папку, чтобы сохранить материалы проекта.",k=C(),m=u("div"),v=u("button"),v.textContent="Добавить файл",_=C(),p=u("button"),p.textContent="Добавить папку",a(t,"class","empty-icon svelte-xaaokk"),a(i,"class","svelte-xaaokk"),a(c,"class","hint svelte-xaaokk"),a(v,"class","btn btn-primary svelte-xaaokk"),a(p,"class","btn svelte-xaaokk"),a(m,"class","empty-actions svelte-xaaokk"),a(e,"class","empty-state svelte-xaaokk")},m(w,T){g(w,e,T),f(e,t),f(e,n),f(e,i),f(i,o),f(e,r),f(e,c),f(e,k),f(e,m),f(m,v),f(m,_),f(m,p),b||(y=[H(v,"click",l[80]),H(p,"click",l[81])],b=!0)},p(w,T){T[0]&134217728&&s!==(s=w[27].length>0?"В этой папке пока нет файлов":"В этом проекте пока нет файлов")&&O(o,s)},i:q,o:q,d(w){w&&h(e),b=!1,se(y)}}}function Bl(l,e){let t,n,i;return n=new To({props:{item:e[173],selected:e[34].includes(e[173].id),onDragStart:e[61],onDragOver:e[62],onDrop:e[63]}}),n.$on("navigate",e[101]),n.$on("preview",e[102]),n.$on("openExternal",e[103]),n.$on("showInFolder",e[104]),n.$on("delete",e[105]),n.$on("rename",e[106]),n.$on("duplicate",e[107]),n.$on("cut",e[108]),n.$on("copy",e[109]),n.$on("selectOne",e[110]),n.$on("toggleSelect",e[111]),n.$on("rangeSelect",e[112]),{key:l,first:null,c(){t=he(),Ie(n.$$.fragment),this.first=t},m(s,o){g(s,t,o),Me(n,s,o),i=!0},p(s,o){e=s;const r={};o[0]&268435456&&(r.item=e[173]),o[0]&268435456|o[1]&8&&(r.selected=e[34].includes(e[173].id)),n.$set(r)},i(s){i||(ie(n.$$.fragment,s),i=!0)},o(s){re(n.$$.fragment,s),i=!1},d(s){s&&h(t),Le(n,s)}}}function Ol(l){let e;return{c(){e=u("div"),e.innerHTML='Сканирование...
',a(e,"class","empty-state svelte-xaaokk")},m(t,n){g(t,e,n)},d(t){t&&h(e)}}}function Pl(l){let e,t;return e=new Vo({props:{item:l[29],content:l[30],loading:l[31],error:l[32]}}),e.$on("close",l[51]),e.$on("openExternal",l[113]),{c(){Ie(e.$$.fragment)},m(n,i){Me(e,n,i),t=!0},p(n,i){const s={};i[0]&536870912&&(s.item=n[29]),i[0]&1073741824&&(s.content=n[30]),i[1]&1&&(s.loading=n[31]),i[1]&2&&(s.error=n[32]),e.$set(s)},i(n){t||(ie(e.$$.fragment,n),t=!0)},o(n){re(e.$$.fragment,n),t=!1},d(n){Le(e,n)}}}function zl(l){let e,t,n,i,s,o,r,c,k;return{c(){e=u("div"),t=u("input"),n=C(),i=u("div"),s=u("button"),s.textContent="Создать",o=C(),r=u("button"),r.textContent="Отмена",a(t,"type","text"),a(t,"placeholder","Название заметки"),a(t,"class","svelte-xaaokk"),a(s,"class","btn btn-primary svelte-xaaokk"),a(r,"class","btn svelte-xaaokk"),a(i,"class","form-actions svelte-xaaokk"),a(e,"class","create-form svelte-xaaokk")},m(m,v){g(m,e,v),f(e,t),_e(t,l[20]),f(e,n),f(e,i),f(i,s),f(i,o),f(i,r),c||(k=[H(t,"input",l[97]),H(t,"keydown",l[98]),H(s,"click",l[74]),H(r,"click",l[73])],c=!0)},p(m,v){v[0]&1048576&&t.value!==m[20]&&_e(t,m[20])},d(m){m&&h(e),c=!1,se(k)}}}function Ms(l){let e,t=te(l[10]),n=[];for(let i=0;iНет заметокСоздайте первую заметку для этого дела.
',a(e,"class","empty-state svelte-xaaokk")},m(t,n){g(t,e,n)},p:q,d(t){t&&h(e)}}}function Vl(l){let e,t,n=l[168].title+"",i,s,o,r=ve(l[168].createdAt)+"",c,k,m,v;function _(){return l[99](l[168])}return{c(){e=u("div"),t=u("div"),i=E(n),s=C(),o=u("div"),c=E(r),k=C(),a(t,"class","note-card-title svelte-xaaokk"),a(o,"class","note-card-date svelte-xaaokk"),a(e,"class","note-card svelte-xaaokk")},m(p,b){g(p,e,b),f(e,t),f(t,i),f(e,s),f(e,o),f(o,c),f(e,k),m||(v=H(e,"click",_),m=!0)},p(p,b){l=p,b[0]&1024&&n!==(n=l[168].title+"")&&O(i,n),b[0]&1024&&r!==(r=ve(l[168].createdAt)+"")&&O(c,r)},d(p){p&&h(e),m=!1,v()}}}function Rl(l){let e,t,n,i=te(l[10].slice(0,5)),s=[];for(let o=0;ol[127].call(p)),a(m,"class","form-group svelte-xaaokk"),a(w,"class","btn btn-primary svelte-xaaokk"),a(S,"class","btn svelte-xaaokk"),a(y,"class","modal-actions svelte-xaaokk"),a(t,"class","modal svelte-xaaokk"),a(e,"class","modal-overlay svelte-xaaokk")},m(I,F){g(I,e,F),f(e,t),f(t,n),f(t,i),f(t,s),f(s,o),f(s,r),f(s,c),_e(c,l[17]),f(t,k),f(t,m),f(m,v),f(m,_),f(m,p);for(let L=0;L⚒ Верстак ',i=C(),s=u("nav"),o=u("div"),r=u("div"),r.textContent="Разделы",c=C();for(let z=0;z{$[pe]=null}),we(),j=$[M],j?j.p(z,ce):(j=$[M]=R[M](z),j.c()),ie(j,1),j.m(y,B)),!z[11]&&!z[8]&&z[7]!=="today"&&z[7]!=="inbox"&&z[7]!=="activity"?G?G.p(z,ce):(G=Gl(z),G.c(),G.m(y,I)):G&&(G.d(1),G=null),z[16]?U?U.p(z,ce):(U=Ul(z),U.c(),U.m(y,F)):U&&(U.d(1),U=null),z[24]&&z[23]?Y?Y.p(z,ce):(Y=Xl(z),Y.c(),Y.m(y,L)):Y&&(Y.d(1),Y=null),z[40]?J?J.p(z,ce):(J=Yl(z),J.c(),J.m(y,N)):J&&(J.d(1),J=null),z[35]?ae?(ae.p(z,ce),ce[1]&16&&ie(ae,1)):(ae=$l(z),ae.c(),ie(ae,1),ae.m(y,null)):ae&&(ye(),re(ae,1,1,()=>{ae=null}),we())},i(z){X||(ie(j),ie(ae),X=!0)},o(z){re(j),re(ae),X=!1},d(z){z&&h(e),ue(Z,z),V&&V.d(),K.d(),W&&W.d(),$[M].d(),G&&G.d(),U&&U.d(),Y&&Y.d(),J&&J.d(),ae&&ae.d()}}}function Q(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 Ce(l){return{note_created:"Заметка создана",note_updated:"Заметка изменена",file_added:"Файл добавлен",file_deleted:"Файл удалён",file_renamed:"Файл переименован",file_copied:"Файл скопирован",file_moved:"Файл перемещён",folder_added:"Папка добавлена",folder_deleted:"Папка удалена",folder_renamed:"Папка переименована",node_created:"Дело создано",node_updated:"Дело изменено"}[l]||l}function je(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 me(l){if(!l)return"";try{return new Date(l).toLocaleTimeString("ru-RU",{hour:"2-digit",minute:"2-digit"})}catch{return""}}function ve(l){if(!l)return"";try{return new Date(l).toLocaleDateString("ru-RU",{day:"numeric",month:"short"})}catch{return l}}function en(l){return{project:"Проект",client:"Клиент",document:"Документ",recipe:"Рецепт",archive:"Архив",case:"Дело"}[l]||l||"Дело"}function Te(l,e,t,n){return l=Math.abs(l)%100,l>=5&&l<=20?n:(l%=10,l===1?e:l>=2&&l<=4?t:n)}const tn=l=>l.id!=="today"&&l.id!=="inbox"&&l.id!=="activity";function Ds(l,e,t){let n=[],i=[],s=null,o=[],r=0,c=!0,k=[],m="",v="",_="",p=null,b="overview",y=[],w=null,T=[],S=[],A=[],M="",j="",B=!1,I="",F="clients",L=!1,N="",X=!0,ee=!1,Z=null,V=!1,le="",P=!1,K=null,W=[],R=[],$=null,ne="",G=!1,U="",Y={items:[],mode:"copy"},J=[],ae=[],z=!1,ce="",pe="",de=!1,ze="Удалить",xe=null,qe=null,Ge=!1,Ue="",Ne="",Ee="";const mn=[{id:"overview",label:"Обзор"},{id:"notes",label:"Заметки"},{id:"files",label:"Файлы"},{id:"actions",label:"Действия"},{id:"worklog",label:"Журнал"},{id:"activity",label:"Активность"}];let tt=null;sn(async()=>{try{t(5,m=await Q("VerstakVersion")||"verstak-gui/v2"),t(0,n=await Q("ListSections")||[])}catch(d){t(6,v=String(d)),t(0,n=[{id:"today",label:"Сегодня"},{id:"inbox",label:"Неразобранное"},{id:"activity",label:"Активность"},{id:"clients",label:"Клиенты"},{id:"projects",label:"Проекты"},{id:"recipes",label:"Рецепты"},{id:"documents",label:"Документы"},{id:"archive",label:"Архив"}])}window.runtime&&window.runtime.EventsOn&&(window.runtime.EventsOn("files-dropped",Rn),tt=()=>window.runtime.EventsOff("files-dropped")),window.addEventListener("keydown",Dt),t(21,X=!1)}),an(()=>{tt&&tt(),window.removeEventListener("keydown",Dt)});async function lt(d){t(7,_=d),t(8,p=null),t(9,b="overview"),t(10,y=[]),T=[],t(12,S=[]),t(13,A=[]),t(16,B=!1),t(6,v=""),t(2,s=null),t(3,o=[]),r=0,c=!0,t(1,i=[]);try{d==="today"?t(2,s=await Q("ListTodayView")||{cases:[]}):d==="activity"?(t(3,o=await Q("ListActivityFeed",50,0)||[]),r=o.length,c=o.length===50):t(1,i=await Q("ListNodesBySection",d)||[])}catch(D){t(6,v=String(D)),t(1,i=[]),t(2,s={cases:[]}),t(3,o=[])}}async function nt(d){t(8,p=d),t(9,b="overview"),t(10,y=[]),T=[],t(12,S=[]),t(13,A=[]),t(28,R=[]),t(27,W=[]),t(26,K=null),t(29,$=null),t(30,ne=""),t(34,J=[]),ae=[],t(11,w=null),t(16,B=!1),t(19,L=!1),t(6,v=""),t(4,k=[]),await vt(d.id)}async function vt(d){try{t(10,y=await Q("ListNotes",d)||[])}catch{}try{T=await Q("ListFiles",d)||[]}catch{}try{t(12,S=await Q("ListActions",d)||[])}catch{}try{t(13,A=await Q("ListWorklog",d)||[])}catch{}try{t(4,k=await Q("ListActivityByNode",d,50,0)||[])}catch{}}async function ke(d){t(25,P=!0);try{let D=await Q("ListItems",d)||[];D.sort((oe,fe)=>oe.type!==fe.type?oe.type==="folder"?-1:1:(oe.name||"").localeCompare(fe.name||"")),t(28,R=D)}catch{t(28,R=[])}t(25,P=!1)}async function it(d){if(p){try{const D=await Q("GetNodeDetail",d);D&&t(27,W=[...W,{id:d,name:D.title}])}catch{t(27,W=[...W,{id:d,name:"..."}])}t(26,K=d),await ke(d)}}function ht(){if(W.length<2)t(27,W=[]),t(26,K=null),ke(p.id);else{const d=W[W.length-2];t(27,W=W.slice(0,-1)),t(26,K=d.id),ke(d.id)}}function bt(d){const D=W[d];t(27,W=W.slice(0,d+1)),t(26,K=D.id),ke(D.id)}async function ot(d){t(29,$=d),t(30,ne=""),t(32,U=""),t(31,G=!0);try{mo(d)?t(30,ne=await Q("GetFileBase64",d.fileId)||""):vo(d)&&t(30,ne=await Q("ReadFileText",d.fileId)||"")}catch(D){t(32,U=String(D))}t(31,G=!1)}function st(){t(29,$=null),t(30,ne=""),t(32,U="")}async function vn(){const d=prompt("Введите имя файла:");if(!(!d||!d.trim()))try{const D=K||p.id;await Q("CreateEmptyFile",D,d.trim()),await ke(D)}catch(D){t(6,v=String(D))}}async function gt(d){try{await Q("DuplicateNode",d);const D=K||p.id;await ke(D)}catch(D){t(6,v=String(D))}}function yt(d){const D=R.find(oe=>oe.id===d);D&&Nt(D.id,D.name)}function wt(d){t(33,Y={items:[d],mode:"cut"})}function Ct(d){t(33,Y={items:[d],mode:"copy"})}async function Tt(){if(Y.items.length===0)return;const d=K||p.id;try{if(Y.mode==="copy")for(const D of Y.items)await Q("DuplicateNode",D);else for(const D of Y.items)await Q("MoveNode",D,d);t(33,Y={items:[],mode:"copy"}),await ke(d)}catch(D){t(6,v=String(D))}}function Mt(d){J.includes(d)?t(34,J=J.filter(D=>D!==d)):t(34,J=[...J,d])}function Lt(d){t(34,J=[d])}function hn(){t(34,J=R.map(d=>d.id))}function St(d){if(R.length===0)return;const D=J.length>0?J[J.length-1]:R[0].id,oe=R.findIndex(Se=>Se.id===D),fe=R.findIndex(Se=>Se.id===d);if(oe===-1||fe===-1)return;const Ve=Math.min(oe,fe),ut=Math.max(oe,fe),Ai=R.slice(Ve,ut+1).map(Se=>Se.id),zt=new Set(J);Ai.forEach(Se=>zt.add(Se)),t(34,J=[...zt])}function bn(){t(34,J=[])}function at(d){return d.length>0?d:R.map(D=>D.id)}async function gn(){var oe;const d=at(J),D=d.length===1&&((oe=R.find(fe=>fe.id===d[0]))==null?void 0:oe.type)==="folder"?"папку":`файлов (${d.length})`;Je({title:"Удаление",message:`Удалить ${D}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{for(const Ve of d)try{await Q("DeleteFileOrFolder",Ve)}catch(ut){t(6,v=String(ut))}t(34,J=[]);const fe=K||p.id;await ke(fe)}})}function yn(){const d=at(J);t(33,Y={items:d,mode:"cut"}),t(34,J=[])}function wn(){const d=at(J);t(33,Y={items:d,mode:"copy"}),t(34,J=[])}function Cn(d,D){const oe=J.includes(D)?J:[D];ae=oe,d.dataTransfer.effectAllowed="move",d.dataTransfer.setData("text/plain",oe.join(","))}function Tn(d,D){const oe=R.find(fe=>fe.id===D);oe&&oe.type==="folder"&&(d.preventDefault(),d.dataTransfer.dropEffect="move")}async function Mn(d,D){if(d.preventDefault(),ae.length!==0){for(const oe of ae)try{await Q("MoveNode",oe,D)}catch(fe){t(6,v=String(fe))}ae=[],t(34,J=[]),await ke(K||p.id)}}function Dt(d){if(b==="files"&&!(d.target.tagName==="INPUT"||d.target.tagName==="TEXTAREA"))if(d.ctrlKey||d.metaKey)d.key==="c"||d.key==="C"?(d.preventDefault(),wn()):d.key==="x"||d.key==="X"?(d.preventDefault(),yn()):d.key==="v"||d.key==="V"?(d.preventDefault(),Tt()):d.key==="a"||d.key==="A"?(d.preventDefault(),hn()):d.key==="o"||d.key==="O"?(d.preventDefault(),Ln()):d.key==="Enter"&&(d.preventDefault(),It());else if(d.key==="Enter")d.preventDefault(),It();else if(d.key==="Delete"||d.key==="Backspace"){if($){d.preventDefault(),st();return}if(J.length>0){d.preventDefault(),gn();return}if(d.key==="Backspace"&&W.length>0){d.preventDefault(),ht();return}}else if(d.key==="Escape"){if($){st();return}if(J.length>0){bn();return}}else d.key==="F2"&&(d.preventDefault(),Sn())}function It(){if(J.length===1){const d=R.find(D=>D.id===J[0]);d&&(d.type==="folder"?it(d.id):ot(d))}}function Ln(){if(J.length===1){const d=R.find(D=>D.id===J[0]);d&&d.fileId&&Q("OpenFile",d.fileId)}}function Nt(d,D){Ue=d,t(41,Ne=D),t(42,Ee=""),t(40,Ge=!0)}function Sn(){if(J.length===1){const d=R.find(D=>D.id===J[0]);d&&Nt(d.id,d.name)}}async function Et(){const d=Ne.trim();if(!d){t(42,Ee="Имя не может быть пустым");return}try{await Q("ValidateName",d)}catch{t(42,Ee="Недопустимое имя");return}t(40,Ge=!1),Ue="";try{await Q("RenameNode",Ue,d);const D=K||p.id;await ke(D)}catch(D){t(6,v=String(D))}}function Dn(){t(40,Ge=!1),Ue="",t(41,Ne=""),t(42,Ee="")}function In(d){d.key==="Enter"?Et():t(42,Ee="")}function Je(d){t(36,ce=d.title||"Подтверждение"),t(37,pe=d.message||""),t(38,de=d.danger!==void 0?d.danger:!0),t(39,ze=d.confirmText||"Удалить"),xe=d.onConfirm||null,qe=d.onCancel||null,t(35,z=!0)}function Ft(){t(35,z=!1),xe=null,qe=null}function Nn(){xe&&xe(),Ft()}function En(){qe&&qe(),Ft()}function Fn(){t(16,B=!0),t(17,I=""),t(18,F=_||"clients")}function An(){t(16,B=!1),t(17,I="")}async function At(){if(I.trim())try{const d=await Q("CreateNode","","case",I.trim(),F);t(16,B=!1),t(17,I=""),await lt(F)}catch(d){t(6,v=String(d))}}function Ht(){t(19,L=!0),t(20,N="")}function Hn(){t(19,L=!1),t(20,N="")}async function jt(){if(!(!N.trim()||!p))try{const d=await Q("CreateNote",p.id,N.trim());t(10,y=[...y,d&&d.id?d:{id:Date.now().toString(),title:N.trim(),createdAt:new Date().toISOString()}]),t(19,L=!1),t(20,N="")}catch{const D={id:Date.now().toString(),title:N.trim(),createdAt:new Date().toISOString()};t(10,y=[...y,D]),t(19,L=!1),t(20,N="")}}async function rt(d){if(w&&w.dirty){Je({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:async()=>{await Bt(d)}});return}await Bt(d)}async function Bt(d){try{const D=await Q("ReadNote",d.id);t(11,w={id:d.id,title:d.title,content:D||"",dirty:!1})}catch{t(11,w={id:d.id,title:d.title,content:"# "+d.title+`
-
-`,dirty:!1})}}function jn(){if(w&&w.dirty){Je({title:"Несохранённые изменения",message:"Закрыть редактор? Все несохранённые изменения будут потеряны.",confirmText:"Закрыть",danger:!1,onConfirm:()=>{t(11,w=null)}});return}t(11,w=null)}function Bn(d){w&&(t(11,w.content=d.target.value,w),t(11,w.dirty=!0,w))}async function On(){if(w)try{await Q("SaveNote",w.id,w.content),t(11,w.dirty=!1,w)}catch{t(11,w.dirty=!1,w)}}async function Pn(){const d=parseInt(M,10);if(!(!j.trim()||isNaN(d)||d<=0||!p)){try{const D=await Q("CreateWorklog",p.id,j.trim(),d);t(13,A=[...A,D&&D.id?D:{id:Date.now().toString(),nodeId:p.id,summary:j.trim(),minutes:d,createdAt:new Date().toISOString()}])}catch{t(13,A=[...A,{id:Date.now().toString(),nodeId:p.id,summary:j.trim(),minutes:d,createdAt:new Date().toISOString()}])}t(15,j=""),t(14,M="")}}async function Ot(){const d=await Q("PickFile");d&&await ct(p.id,d)}async function zn(){const d=await Q("PickDirectory");d&&await ct(p.id,d)}async function ct(d,D){t(22,ee=!0);try{const oe=await Q("PreviewImport",D);t(23,Z=oe),le=D,t(24,V=!0)}catch(oe){t(6,v=String(oe))}t(22,ee=!1)}async function ft(d){try{const D=d==="copy"?await Q("AddPathCopy",p.id,le):await Q("AddPathLink",p.id,le);t(24,V=!1),t(23,Z=null),t(27,W=[]),t(26,K=null),await Promise.all([vt(p.id),ke(p.id)])}catch(D){t(6,v=String(D))}}function Vn(){t(24,V=!1),t(23,Z=null)}async function Pt({id:d,type:D}){Je({title:"Удаление",message:`Удалить ${D==="folder"?"папку":"файл"}?`,confirmText:"Удалить",danger:!0,onConfirm:async()=>{try{await Q("DeleteFileOrFolder",d),T=T.filter(Ve=>Ve.nodeId!==d);const fe=K||p.id;await ke(fe)}catch(fe){t(6,v=String(fe))}}})}async function Rn(d){if(!d||d.length===0)return;if(!p){t(6,v="Сначала выберите дело для добавления файлов");return}const D=d[0];await ct(p.id,D)}function Wn(d){return b===d?"tab active":"tab"}async function be(d){try{const D=await Q("GetNodeDetail",d);D&&nt(D)}catch(D){t(6,v=String(D))}}const Kn=d=>lt(d.id),xn=d=>nt(d),qn=()=>t(6,v=""),Gn=()=>t(6,v="");function Un(){w.content=this.value,t(11,w)}const Jn=d=>{t(9,b=d.id),d.id==="files"&&p&&R.length===0&&!K&&ke(p.id)},Xn=()=>{t(9,b="notes"),Ht()},Zn=()=>{t(9,b="files"),Ot()},Yn=()=>t(9,b="worklog"),Qn=d=>rt(d);function $n(){N=this.value,t(20,N)}const ei=d=>d.key==="Enter"&&jt(),ti=d=>rt(d),li=d=>{const D=d.detail;D===0?(t(27,W=[]),t(26,K=null),ke(p.id)):bt(D-1)},ni=d=>it(d.detail),ii=d=>ot(d.detail),oi=d=>Q("OpenFile",d.detail),si=d=>Q("OpenFolder",d.detail),ai=d=>Pt(d.detail),ri=d=>yt(d.detail.id),ci=d=>gt(d.detail),fi=d=>wt(d.detail),ui=d=>Ct(d.detail),di=d=>Lt(d.detail),ki=d=>Mt(d.detail),_i=d=>St(d.detail),pi=d=>Q("OpenFile",d.detail),mi=d=>Q("RunAction",d.id);function vi(){j=this.value,t(15,j)}function hi(){M=on(this.value),t(14,M)}const bi=d=>be(d.nodeId),gi=(d,D)=>D.key==="Enter"&&be(d.nodeId),yi=d=>be(d.nodeId),wi=(d,D)=>D.key==="Enter"&&be(d.nodeId),Ci=d=>be(d.nodeId),Ti=(d,D)=>D.key==="Enter"&&be(d.nodeId),Mi=d=>be(d.nodeId),Li=(d,D)=>D.key==="Enter"&&be(d.nodeId);function Si(){I=this.value,t(17,I)}const Di=d=>d.key==="Enter"&&At();function Ii(){F=zi(this),t(18,F),t(0,n)}const Ni=()=>ft("copy"),Ei=()=>ft("link");function Fi(){Ne=this.value,t(41,Ne)}return[n,i,s,o,k,m,v,_,p,b,y,w,S,A,M,j,B,I,F,L,N,X,ee,Z,V,P,K,W,R,$,ne,G,U,Y,J,z,ce,pe,de,ze,Ge,Ne,Ee,mn,lt,nt,ke,it,ht,bt,ot,st,vn,gt,yt,wt,Ct,Tt,Mt,Lt,St,Cn,Tn,Mn,Et,Dn,In,Nn,En,Fn,An,At,Ht,Hn,jt,rt,jn,Bn,On,Pn,Ot,zn,ft,Vn,Pt,Wn,be,Kn,xn,qn,Gn,Un,Jn,Xn,Zn,Yn,Qn,$n,ei,ti,li,ni,ii,oi,si,ai,ri,ci,fi,ui,di,ki,_i,pi,mi,vi,hi,bi,gi,yi,wi,Ci,Ti,Mi,Li,Si,Di,Ii,Ni,Ei,Fi]}class Is extends Pe{constructor(e){super(),Oe(this,e,Ds,Ss,Be,{},null,[-1,-1,-1,-1,-1,-1,-1])}}new Is({target:document.getElementById("app")});
diff --git a/cmd/verstak-gui/frontend-dist/index.html b/cmd/verstak-gui/frontend-dist/index.html
index b8bfaac..b99768f 100644
--- a/cmd/verstak-gui/frontend-dist/index.html
+++ b/cmd/verstak-gui/frontend-dist/index.html
@@ -16,8 +16,8 @@
background: #13131f;
}
-
-
+
+
diff --git a/cmd/verstak-gui/main.go b/cmd/verstak-gui/main.go
index 69838f1..47d7156 100644
--- a/cmd/verstak-gui/main.go
+++ b/cmd/verstak-gui/main.go
@@ -50,7 +50,8 @@ func main() {
activitySvc := activity.NewService(db)
worklogSvc := worklog.NewService(db)
searchSvc := search.NewService(db)
- plugins.NewManager(abs).Discover()
+ pm := plugins.NewManager(abs)
+ pm.Discover()
app := &App{
db: db,
@@ -61,6 +62,7 @@ func main() {
actions: actionSvc,
worklog: worklogSvc,
search: searchSvc,
+ plugins: pm,
vault: abs,
}
diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index 7fba784..bdf2f49 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -47,8 +47,23 @@
let showCreateNode = false
let newNodeTitle = ''
let newNodeSection = 'clients'
+ let newNodeTemplate = ''
+ let templates = []
let showCreateNote = false
let newNoteTitle = ''
+ let showCreateAction = false
+ let newActionTitle = ''
+ let newActionKind = 'open_url'
+ let newActionData = ''
+ let actionKinds = [
+ { id: 'open_url', label: 'Открыть URL' },
+ { id: 'open_file', label: 'Открыть файл' },
+ { id: 'open_folder', label: 'Открыть папку' },
+ { id: 'run_command', label: 'Запустить команду' },
+ { id: 'run_script', label: 'Запустить скрипт' },
+ { id: 'open_terminal', label: 'Открыть терминал' },
+ { id: 'launch_app', label: 'Запустить приложение' },
+ ]
let loading = true
let importing = false
let importSummary = null
@@ -586,14 +601,22 @@
showCreateNode = true
newNodeTitle = ''
newNodeSection = selectedSection || 'clients'
+ newNodeTemplate = ''
+ wailsCall('ListTemplates').then(t => { templates = t || [] }).catch(() => { templates = [] })
}
function cancelCreateNode() { showCreateNode = false; newNodeTitle = '' }
async function submitCreateNode() {
if (!newNodeTitle.trim()) return
try {
- const node = await wailsCall('CreateNode', '', 'case', newNodeTitle.trim(), newNodeSection)
+ let node
+ if (newNodeTemplate) {
+ node = await wailsCall('FromTemplate', '', 'case', newNodeTitle.trim(), newNodeSection, newNodeTemplate)
+ } else {
+ node = await wailsCall('CreateNode', '', 'case', newNodeTitle.trim(), newNodeSection)
+ }
showCreateNode = false
newNodeTitle = ''
+ newNodeTemplate = ''
await selectSection(newNodeSection)
} catch (e) { error = String(e) }
}
@@ -820,6 +843,37 @@
if (n >= 2 && n <= 4) return few
return many
}
+ // ===== Actions =====
+ function openCreateAction() {
+ showCreateAction = true
+ newActionTitle = ''
+ newActionKind = 'open_url'
+ newActionData = ''
+ }
+ function cancelCreateAction() { showCreateAction = false; newActionTitle = ''; newActionData = '' }
+ async function submitCreateAction() {
+ if (!newActionTitle.trim() || !newActionData.trim() || !selectedNode) return
+ try {
+ const action = await wailsCall('CreateAction', selectedNode.id, newActionKind, newActionTitle.trim(), newActionData.trim())
+ if (action && action.id) {
+ actions = [...actions, action]
+ }
+ showCreateAction = false
+ newActionTitle = ''
+ newActionData = ''
+ } catch (e) { error = String(e) }
+ }
+ async function deleteAction(id) {
+ try {
+ await wailsCall('DeleteAction', id)
+ actions = actions.filter(a => a.id !== id)
+ } catch (e) { error = String(e) }
+ }
+ function actionKindLabel(kind) {
+ const k = actionKinds.find(k => k.id === kind)
+ return k ? k.label : kind
+ }
+
async function openNodeById(id) {
try {
const node = await wailsCall('GetNodeDetail', id)
@@ -929,7 +983,7 @@
Добавить файл
-
+
Добавить действие
@@ -1081,16 +1135,30 @@
{/if}
{:else if activeTab === 'actions'}
- {#if actions.length === 0}
-
- {:else}
- {#each actions as action}
-
- {action.title} {action.type}
- wailsCall('RunAction', action.id)}>Запустить
-
- {/each}
- {/if}
+
+
+ + Добавить действие
+
+ {#if actions.length === 0}
+
+ {:else}
+ {#each actions as action}
+
+
+ {action.title}
+ {actionKindLabel(action.type)}
+ {action.data}
+
+
+
wailsCall('RunAction', action.id)}>Запустить
+
deleteAction(action.id)}>
+
+
+
+
+ {/each}
+ {/if}
+
{:else if activeTab === 'worklog'}
@@ -1253,6 +1321,17 @@
{/each}
+ {#if templates.length > 0}
+
+ Шаблон (опционально)
+
+ Без шаблона
+ {#each templates as t}
+ {t.name}{t.description ? ' — ' + t.description : ''}
+ {/each}
+
+
+ {/if}
Создать
Отмена
@@ -1261,6 +1340,37 @@
{/if}
+ {#if showCreateAction}
+
+
+
Новое действие
+
+ Название
+ e.key === 'Enter' && submitCreateAction()} autofocus />
+
+
+ Тип
+
+ {#each actionKinds as k}
+ {k.label}
+ {/each}
+
+
+
+ {newActionKind === 'open_url' ? 'URL' : newActionKind === 'open_folder' || newActionKind === 'open_file' ? 'Путь' : 'Команда'}
+ e.key === 'Enter' && submitCreateAction()} />
+
+
+ Создать
+ Отмена
+
+
+
+ {/if}
+
{#if showImportDialog && importSummary}
@@ -1405,8 +1515,15 @@
.wl-meta { font-size: 11px; color: #555; margin-top: 2px; }
/* Actions */
-.action-card { background: #1a1a28; padding: 12px 16px; border-radius: 8px; display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
-.action-type { font-size: 11px; color: #888; background: #222233; padding: 2px 8px; border-radius: 10px; }
+.actions-tab { padding: 24px; }
+.action-card { background: #1a1a28; padding: 12px 16px; border-radius: 8px; display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
+.action-info { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
+.action-title { font-weight: 500; }
+.action-type { font-size: 11px; color: #888; background: #222233; padding: 2px 8px; border-radius: 10px; white-space: nowrap; }
+.action-data { 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 { display: flex; gap: 4px; flex-shrink: 0; }
+.action-btns .btn-danger { color: #ff6b6b; border-color: #4a2222; padding: 4px 8px; }
+.action-btns .btn-danger:hover { background: #3a2222; }
/* Empty states */
.empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; text-align: center; }