@hiai-gg/docsmint 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend/index.js +1 -1
- package/dist/frontend/{CategoryDialog-DmlX0Z97.js → CategoryDialog-BYAFjX7E.js} +152 -138
- package/dist/frontend/{FolderNode-D3rN3yLV.js → FolderNode-DAAn_T8_.js} +1 -1
- package/dist/frontend/SettingsDialog-CyZSOjLE.js +1024 -0
- package/dist/frontend/{Sidebar-BnZgNl_8.js → Sidebar-B-zCJT9i.js} +4 -4
- package/dist/frontend/app-shell.js +160 -126
- package/dist/frontend/components/category-dialog.js +1 -1
- package/dist/frontend/components/folder-node.js +1 -1
- package/dist/frontend/components/save-as-dialog.js +1 -1
- package/dist/frontend/components/settings.js +1 -1
- package/dist/frontend/components/sidebar.js +1 -1
- package/dist/frontend/dashboard.js +1 -1
- package/dist/frontend/folder-refresh.js +1 -1
- package/dist/frontend/frontend.css +1 -1
- package/dist/frontend/search.js +593 -575
- package/dist/frontend/{subfolders-refresh-store.svelte-B2dKVmgz.js → subfolders-refresh-store.svelte-DxP21a1c.js} +1 -0
- package/dist/frontend-ssr/app-shell.js +57 -3
- package/dist/frontend-ssr/assets/{CategoryDialog-Cnlmr1sz.js → CategoryDialog-BLxVoynx.js} +26 -9
- package/dist/frontend-ssr/assets/{FolderNode-CnFVWuQi.js → FolderNode-kmilhDjO.js} +1 -1
- package/dist/frontend-ssr/assets/{SettingsDialog-BPdUl6pd.js → SettingsDialog-DVp0OxPO.js} +2 -2
- package/dist/frontend-ssr/assets/{Sidebar-DwYZH0Tr.js → Sidebar-CO9LZRPa.js} +4 -4
- package/dist/frontend-ssr/assets/{subfolders-refresh-store.svelte-DAh4gT16.js → subfolders-refresh-store.svelte-CXHxQWKh.js} +1 -0
- package/dist/frontend-ssr/components/category-dialog.js +1 -1
- package/dist/frontend-ssr/components/folder-node.js +1 -1
- package/dist/frontend-ssr/components/save-as-dialog.js +1 -1
- package/dist/frontend-ssr/components/settings.js +1 -1
- package/dist/frontend-ssr/components/sidebar.js +1 -1
- package/dist/frontend-ssr/dashboard.js +1 -1
- package/dist/frontend-ssr/folder-refresh.js +1 -1
- package/dist/frontend-ssr/search.js +52 -33
- package/package.json +1 -1
- package/packages/cli/src/index.ts +1 -1
- package/packages/mcp-server/src/index.ts +1 -1
- package/dist/frontend/SettingsDialog-Bd_S2RKW.js +0 -1024
|
@@ -3,6 +3,7 @@ import * as e from "svelte/internal/client";
|
|
|
3
3
|
var t = e.proxy({}), n = e.proxy({}), r = e.proxy({}), i = e.state(0), a = e.state(null), o = e.proxy({}), s = e.state(0);
|
|
4
4
|
function c() {
|
|
5
5
|
e.update(s);
|
|
6
|
+
for (let e of Object.keys(n)) t[e] = (t[e] ?? 0) + 1;
|
|
6
7
|
}
|
|
7
8
|
function l() {
|
|
8
9
|
return e.get(s);
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { E as scroll_to_top_aria } from "./assets/messages-BAQzILs4.js";
|
|
2
2
|
import { t as Icon } from "./assets/Icon-QwirKi9Y.js";
|
|
3
|
-
import { n as searchPreferences, r as editorPreferences } from "./assets/SettingsDialog-
|
|
4
|
-
import { t as Sidebar } from "./assets/Sidebar-
|
|
3
|
+
import { n as searchPreferences, r as editorPreferences } from "./assets/SettingsDialog-DVp0OxPO.js";
|
|
4
|
+
import { t as Sidebar } from "./assets/Sidebar-CO9LZRPa.js";
|
|
5
5
|
import { o as provideDocsmintRequestAdapter, r as provideDocsmintRouteAdapter } from "./assets/route-context-BPRerEtZ.js";
|
|
6
|
+
import { d as refreshFolders } from "./assets/subfolders-refresh-store.svelte-CXHxQWKh.js";
|
|
7
|
+
import { n as refreshDocs, r as refreshTags } from "./assets/tag-store.svelte-BM1lUI_P.js";
|
|
6
8
|
import { t as HiaiDocsExtensionProvider } from "./assets/HiaiDocsExtensionProvider-BRKWmcDd.js";
|
|
7
9
|
import * as $ from "svelte/internal/server";
|
|
8
10
|
import { getContext, onDestroy, setContext, untrack } from "svelte";
|
|
@@ -211,6 +213,49 @@ function ScrollToTop($$renderer, $$props) {
|
|
|
211
213
|
});
|
|
212
214
|
}
|
|
213
215
|
//#endregion
|
|
216
|
+
//#region src/lib/hosts/mutation-refresh.ts
|
|
217
|
+
var noImpact = {
|
|
218
|
+
documents: false,
|
|
219
|
+
folders: false,
|
|
220
|
+
tags: false
|
|
221
|
+
};
|
|
222
|
+
function mutationRefreshImpact(input, init) {
|
|
223
|
+
const method = (init?.method ?? (input instanceof Request ? input.method : "GET")).toUpperCase();
|
|
224
|
+
if (![
|
|
225
|
+
"POST",
|
|
226
|
+
"PUT",
|
|
227
|
+
"PATCH",
|
|
228
|
+
"DELETE"
|
|
229
|
+
].includes(method)) return noImpact;
|
|
230
|
+
const rawUrl = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
|
|
231
|
+
const pathname = new URL(rawUrl, "http://docsmint.local").pathname;
|
|
232
|
+
if (/\/keys(?:\/|$)/.test(pathname)) return noImpact;
|
|
233
|
+
if (/^\/api\/(?:v1\/)?tags(?:\/|$)/.test(pathname)) return {
|
|
234
|
+
documents: true,
|
|
235
|
+
folders: false,
|
|
236
|
+
tags: true
|
|
237
|
+
};
|
|
238
|
+
if (/^\/api\/(?:v1\/)?documents\/[^/]+\/tags(?:\/|$)/.test(pathname)) return {
|
|
239
|
+
documents: true,
|
|
240
|
+
folders: false,
|
|
241
|
+
tags: true
|
|
242
|
+
};
|
|
243
|
+
if (/^\/api\/(?:v1\/)?(?:folders|categories)(?:\/|$)/.test(pathname)) return {
|
|
244
|
+
documents: true,
|
|
245
|
+
folders: true,
|
|
246
|
+
tags: false
|
|
247
|
+
};
|
|
248
|
+
if (/^\/api\/(?:v1\/)?(?:documents|import|imports)(?:\/|$)/.test(pathname)) return {
|
|
249
|
+
documents: true,
|
|
250
|
+
folders: true,
|
|
251
|
+
tags: false
|
|
252
|
+
};
|
|
253
|
+
return noImpact;
|
|
254
|
+
}
|
|
255
|
+
function hasMutationRefreshImpact(impact) {
|
|
256
|
+
return impact.documents || impact.folders || impact.tags;
|
|
257
|
+
}
|
|
258
|
+
//#endregion
|
|
214
259
|
//#region src/lib/hosts/realtime-context.ts
|
|
215
260
|
var REALTIME_ADAPTER = Symbol("docsmint-realtime-adapter");
|
|
216
261
|
function provideDocsmintRealtimeAdapter(adapter) {
|
|
@@ -232,7 +277,16 @@ function DocsmintAppShellHost($$renderer, $$props) {
|
|
|
232
277
|
resolve: (path) => route.resolve(path),
|
|
233
278
|
navigate: (path, options) => route.navigate?.(path, options)
|
|
234
279
|
});
|
|
235
|
-
provideDocsmintRequestAdapter({ fetch: (...args) =>
|
|
280
|
+
provideDocsmintRequestAdapter({ fetch: async (...args) => {
|
|
281
|
+
const response = await request.fetch(...args);
|
|
282
|
+
const impact = mutationRefreshImpact(args[0], args[1]);
|
|
283
|
+
if (response.ok && hasMutationRefreshImpact(impact)) {
|
|
284
|
+
if (impact.documents) refreshDocs();
|
|
285
|
+
if (impact.folders) refreshFolders();
|
|
286
|
+
if (impact.tags) refreshTags();
|
|
287
|
+
}
|
|
288
|
+
return response;
|
|
289
|
+
} });
|
|
236
290
|
const realtimeAdapter = untrack(() => realtime);
|
|
237
291
|
if (realtimeAdapter) provideDocsmintRealtimeAdapter(realtimeAdapter);
|
|
238
292
|
editorPreferences.init();
|
|
@@ -9,6 +9,16 @@ import { t as Label } from "./label-Bj8-TfFN.js";
|
|
|
9
9
|
import { a as listApiKeys, n as categoryIdFromScopes, o as revealCategoryApiKey, r as createCategoryApiKey, s as revokeApiKey, t as apiKeyClipboardValue } from "./api-keys-DIbclwj5.js";
|
|
10
10
|
import { a as Select, i as Select_content, n as Select_trigger, r as Select_item, t as Select_value } from "./select-value-DBhbkNcc.js";
|
|
11
11
|
import * as $ from "svelte/internal/server";
|
|
12
|
+
//#region src/lib/components/sidebar/category-api-key-flow.ts
|
|
13
|
+
async function issueCategoryKeyAfterSavingAccess(input) {
|
|
14
|
+
if (!input.draft.name.trim()) throw new Error("Name is required");
|
|
15
|
+
if (input.draft.apiMode !== "category") throw new Error("Select Category API access");
|
|
16
|
+
if (!input.draft.apiPermissionRead && !input.draft.apiPermissionEdit && !input.draft.apiPermissionWrite) throw new Error("Select at least one permission");
|
|
17
|
+
const saved = await input.save(input.draft);
|
|
18
|
+
if (!saved || saved.id !== input.categoryId) throw new Error("Failed to save Category API access");
|
|
19
|
+
return input.issue(input.categoryId);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
12
22
|
//#region src/lib/components/sidebar/category-dialog-feedback.ts
|
|
13
23
|
function categoryDialogErrorMessage(error, fallback) {
|
|
14
24
|
if (typeof error === "object" && error !== null && "status" in error && error.status === 409) return "A category with this name already exists.";
|
|
@@ -47,10 +57,22 @@ function CategoryDialog($$renderer, $$props) {
|
|
|
47
57
|
categoryKeys = (await listApiKeys(request.fetch)).keys.filter((key) => categoryIdFromScopes(key.scopes) === categoryId);
|
|
48
58
|
}
|
|
49
59
|
async function issueCategoryKey() {
|
|
50
|
-
if (!category?.id) return;
|
|
60
|
+
if (!category?.id || !onSave) return;
|
|
51
61
|
keyBusy = true;
|
|
62
|
+
error = null;
|
|
52
63
|
try {
|
|
53
|
-
const issued = await
|
|
64
|
+
const issued = await issueCategoryKeyAfterSavingAccess({
|
|
65
|
+
categoryId: category.id,
|
|
66
|
+
draft: {
|
|
67
|
+
name: trimmedName(),
|
|
68
|
+
apiMode: normalizeApiMode(apiMode),
|
|
69
|
+
apiPermissionRead,
|
|
70
|
+
apiPermissionEdit,
|
|
71
|
+
apiPermissionWrite
|
|
72
|
+
},
|
|
73
|
+
save: async (payload) => onSave(payload),
|
|
74
|
+
issue: async (categoryId) => createCategoryApiKey(categoryId, void 0, request.fetch)
|
|
75
|
+
});
|
|
54
76
|
issuedKeys = {
|
|
55
77
|
...issuedKeys,
|
|
56
78
|
[issued.id]: issued.key
|
|
@@ -462,23 +484,18 @@ function CategoryDialog($$renderer, $$props) {
|
|
|
462
484
|
},
|
|
463
485
|
$$slots: { default: true }
|
|
464
486
|
});
|
|
465
|
-
$$renderer.push(`<!----><p class="text-xs text-muted-foreground">
|
|
487
|
+
$$renderer.push(`<!----><p class="text-xs text-muted-foreground">The current permissions are saved before the key is issued.</p></div> `);
|
|
466
488
|
Button($$renderer, {
|
|
467
489
|
type: "button",
|
|
468
490
|
size: "sm",
|
|
469
491
|
onclick: issueCategoryKey,
|
|
470
|
-
disabled: busy || keyBusy ||
|
|
492
|
+
disabled: busy || keyBusy || !trimmedName() || !hasAnyPermission(),
|
|
471
493
|
children: ($$renderer) => {
|
|
472
494
|
$$renderer.push(`<!---->Create key`);
|
|
473
495
|
},
|
|
474
496
|
$$slots: { default: true }
|
|
475
497
|
});
|
|
476
498
|
$$renderer.push(`<!----></div> `);
|
|
477
|
-
if (category.apiMode !== "category") {
|
|
478
|
-
$$renderer.push("<!--[0-->");
|
|
479
|
-
$$renderer.push(`<p class="text-xs text-muted-foreground">Save Category API access first, then reopen settings to issue a key.</p>`);
|
|
480
|
-
} else $$renderer.push("<!--[-1-->");
|
|
481
|
-
$$renderer.push(`<!--]--> `);
|
|
482
499
|
if (latestIssuedKey()) {
|
|
483
500
|
$$renderer.push("<!--[0-->");
|
|
484
501
|
$$renderer.push(`<div class="rounded-lg border border-primary/30 bg-primary/10 p-3 text-primary"><p class="text-xs font-medium">Copy now — this raw key is shown once.</p> <code class="mt-1 block break-all rounded bg-background/80 p-2 text-xs text-foreground">${$.escape(latestIssuedKey())}</code> `);
|
|
@@ -5,7 +5,7 @@ import { a as Dropdown_menu, i as Dropdown_menu_content, o as Ellipsis_vertical,
|
|
|
5
5
|
import { a as getDocsmintRequestAdapter, n as navigateDocsmintRoute, t as getDocsmintRouteAdapter } from "./route-context-BPRerEtZ.js";
|
|
6
6
|
import { t as cn } from "./utils-DvZnctjz.js";
|
|
7
7
|
import "./dndzone-DMvTO_Jz.js";
|
|
8
|
-
import "./subfolders-refresh-store.svelte-
|
|
8
|
+
import "./subfolders-refresh-store.svelte-CXHxQWKh.js";
|
|
9
9
|
import * as $ from "svelte/internal/server";
|
|
10
10
|
import { page } from "$app/state";
|
|
11
11
|
import "svelte/animate";
|
|
@@ -840,7 +840,7 @@ function SettingsDialog($$renderer, $$props) {
|
|
|
840
840
|
});
|
|
841
841
|
$$renderer.push(`<!----> <p class="text-xs text-muted-foreground">${$.escape(settings_email_change_warning())}</p> `);
|
|
842
842
|
$$renderer.push("<!--[-1-->");
|
|
843
|
-
$$renderer.push(`<!--]--></div> <div class="flex items-center justify-between gap-4 rounded-md border p-3"><span><span class="block text-sm font-medium">GraphRAG search</span> <span class="block text-xs text-muted-foreground">Use graph expansion for related documents. Disable it for faster standard RAG search.</span></span> <button type="button" role="switch"${$.attr_class("preference-switch svelte-1eaqpj", void 0, { "enabled": searchPreferences.graphSearchEnabled })}${$.attr("aria-checked", searchPreferences.graphSearchEnabled)} aria-label="Use GraphRAG search"><span class="svelte-1eaqpj"></span></button></div> <!--[-->`);
|
|
843
|
+
$$renderer.push(`<!--]--></div> <details class="profile-advanced border-t pt-4 svelte-1eaqpj"><summary class="flex cursor-pointer items-center justify-between gap-3 rounded-md px-1 py-2 svelte-1eaqpj"><span><span class="block text-sm font-medium">Advanced</span> <span class="block text-xs text-muted-foreground">Search and additional profile controls</span></span> <span class="profile-advanced-chevron svelte-1eaqpj" aria-hidden="true">⌄</span></summary> <div class="mt-3 space-y-3"><div class="flex items-center justify-between gap-4 rounded-md border p-3"><span><span class="block text-sm font-medium">GraphRAG search</span> <span class="block text-xs text-muted-foreground">Use graph expansion for related documents. Disable it for faster standard RAG search.</span></span> <button type="button" role="switch"${$.attr_class("preference-switch svelte-1eaqpj", void 0, { "enabled": searchPreferences.graphSearchEnabled })}${$.attr("aria-checked", searchPreferences.graphSearchEnabled)} aria-label="Use GraphRAG search"><span class="svelte-1eaqpj"></span></button></div> <!--[-->`);
|
|
844
844
|
const each_array_1 = $.ensure_array_like(profileActions());
|
|
845
845
|
for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
|
|
846
846
|
const ProfileAction = each_array_1[$$index_1].component;
|
|
@@ -853,7 +853,7 @@ function SettingsDialog($$renderer, $$props) {
|
|
|
853
853
|
$$renderer.push("<!--]-->");
|
|
854
854
|
}
|
|
855
855
|
}
|
|
856
|
-
$$renderer.push(`<!--]
|
|
856
|
+
$$renderer.push(`<!--]--></div></details> `);
|
|
857
857
|
$$renderer.push("<!--[-1-->");
|
|
858
858
|
$$renderer.push(`<!--]--> `);
|
|
859
859
|
Button($$renderer, {
|
|
@@ -6,7 +6,7 @@ import { t as Chevron_right } from "./chevron-right-DKD7WXjz.js";
|
|
|
6
6
|
import { t as Clock } from "./clock-CzsE58TH.js";
|
|
7
7
|
import { t as Copy } from "./copy-DkkCPkBL.js";
|
|
8
8
|
import { t as Folder } from "./folder-DYIE-XPP.js";
|
|
9
|
-
import { t as SettingsDialog } from "./SettingsDialog-
|
|
9
|
+
import { t as SettingsDialog } from "./SettingsDialog-DVp0OxPO.js";
|
|
10
10
|
import { n as Search, t as Tag } from "./tag-BmiVU_Ej.js";
|
|
11
11
|
import { a as Dropdown_menu, i as Dropdown_menu_content, o as Ellipsis_vertical, r as Dropdown_menu_item, t as Dropdown_menu_trigger } from "./dropdown-menu-Dn_vQq9b.js";
|
|
12
12
|
import { t as Loader_circle } from "./loader-circle-CIEWGyfP.js";
|
|
@@ -24,10 +24,10 @@ import { c as updateDocument, r as deleteDocument, s as listDocuments, t as clea
|
|
|
24
24
|
import { c as updateFolder, r as deleteFolder, s as listFolders, t as createFolder } from "./folders-BX30gHv6.js";
|
|
25
25
|
import { t as DeleteDialog } from "./DeleteDialog-DG9Lm38J.js";
|
|
26
26
|
import { t as ShareDialog } from "./ShareDialog-BZd28sg-.js";
|
|
27
|
-
import { t as CategoryDialog } from "./CategoryDialog-
|
|
27
|
+
import { t as CategoryDialog } from "./CategoryDialog-BLxVoynx.js";
|
|
28
28
|
import { n as createDocumentPlacementWriter, t as createDocumentDropCoordinator } from "./document-drop-coordinator-CEaYACsC.js";
|
|
29
|
-
import { a as getFolderFromRegistry, c as getPendingDocumentPlacement, d as refreshFolders, f as registerDocument, n as bumpSubfoldersRefresh, p as registerFolder, r as getDocumentFromRegistry, t as acknowledgeDocumentPlacement, u as publishDocumentPlacement } from "./subfolders-refresh-store.svelte-
|
|
30
|
-
import { t as FolderNode } from "./FolderNode-
|
|
29
|
+
import { a as getFolderFromRegistry, c as getPendingDocumentPlacement, d as refreshFolders, f as registerDocument, n as bumpSubfoldersRefresh, p as registerFolder, r as getDocumentFromRegistry, t as acknowledgeDocumentPlacement, u as publishDocumentPlacement } from "./subfolders-refresh-store.svelte-CXHxQWKh.js";
|
|
30
|
+
import { t as FolderNode } from "./FolderNode-kmilhDjO.js";
|
|
31
31
|
import { i as setSelectedTag, n as refreshDocs, r as refreshTags, t as getSelectedTag } from "./tag-store.svelte-BM1lUI_P.js";
|
|
32
32
|
import { t as ConfirmDialog } from "./ConfirmDialog-BhAelejz.js";
|
|
33
33
|
import { i as deleteTag, o as listTags } from "./tags-BQsI_6OW.js";
|
|
@@ -9,6 +9,7 @@ var pendingDocumentPlacements = {};
|
|
|
9
9
|
var globalFolderRefreshNonce = 0;
|
|
10
10
|
function refreshFolders() {
|
|
11
11
|
globalFolderRefreshNonce++;
|
|
12
|
+
for (const folderId of Object.keys(foldersRegistry)) refreshNonces[folderId] = (refreshNonces[folderId] ?? 0) + 1;
|
|
12
13
|
}
|
|
13
14
|
function getGlobalFolderRefreshNonce() {
|
|
14
15
|
return globalFolderRefreshNonce;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as CategoryDialog } from "../assets/CategoryDialog-
|
|
1
|
+
import { t as CategoryDialog } from "../assets/CategoryDialog-BLxVoynx.js";
|
|
2
2
|
export { CategoryDialog };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as FolderNode } from "../assets/FolderNode-
|
|
1
|
+
import { t as FolderNode } from "../assets/FolderNode-kmilhDjO.js";
|
|
2
2
|
export { FolderNode };
|
|
@@ -7,7 +7,7 @@ import { a as Dialog, i as Dialog_description, n as Dialog_header, o as Button,
|
|
|
7
7
|
import { t as Label } from "../assets/label-Bj8-TfFN.js";
|
|
8
8
|
import "../assets/categories-av9xjeg5.js";
|
|
9
9
|
import { a as Select, i as Select_content, n as Select_trigger, r as Select_item, t as Select_value } from "../assets/select-value-DBhbkNcc.js";
|
|
10
|
-
import { d as refreshFolders } from "../assets/subfolders-refresh-store.svelte-
|
|
10
|
+
import { d as refreshFolders } from "../assets/subfolders-refresh-store.svelte-CXHxQWKh.js";
|
|
11
11
|
import * as $ from "svelte/internal/server";
|
|
12
12
|
//#region src/lib/components/SaveAsDialog.svelte
|
|
13
13
|
function SaveAsDialog($$renderer, $$props) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SettingsDialog } from "../assets/SettingsDialog-
|
|
1
|
+
import { t as SettingsDialog } from "../assets/SettingsDialog-DVp0OxPO.js";
|
|
2
2
|
export { SettingsDialog };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Sidebar } from "../assets/Sidebar-
|
|
1
|
+
import { t as Sidebar } from "../assets/Sidebar-CO9LZRPa.js";
|
|
2
2
|
export { Sidebar };
|
|
@@ -25,7 +25,7 @@ import { c as updateDocument, i as getDocument } from "./assets/documents-CZ-wQo
|
|
|
25
25
|
import { c as updateFolder, i as duplicateDocument } from "./assets/folders-BX30gHv6.js";
|
|
26
26
|
import { t as copyToClipboard } from "./assets/clipboard-CXOaoz2W.js";
|
|
27
27
|
import { t as ShareDialog } from "./assets/ShareDialog-BZd28sg-.js";
|
|
28
|
-
import { d as refreshFolders, n as bumpSubfoldersRefresh } from "./assets/subfolders-refresh-store.svelte-
|
|
28
|
+
import { d as refreshFolders, n as bumpSubfoldersRefresh } from "./assets/subfolders-refresh-store.svelte-CXHxQWKh.js";
|
|
29
29
|
import { n as refreshDocs } from "./assets/tag-store.svelte-BM1lUI_P.js";
|
|
30
30
|
import { t as ConfirmDialog } from "./assets/ConfirmDialog-BhAelejz.js";
|
|
31
31
|
import * as $ from "svelte/internal/server";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as getFolderFromRegistry, c as getPendingDocumentPlacement, d as refreshFolders, f as registerDocument, i as getDocumentPlacementNonce, l as getSubfoldersRefresh, m as supersedePendingDocumentPlacement, n as bumpSubfoldersRefresh, o as getGlobalFolderRefreshNonce, p as registerFolder, r as getDocumentFromRegistry, s as getLatestDocumentPlacement, t as acknowledgeDocumentPlacement, u as publishDocumentPlacement } from "./assets/subfolders-refresh-store.svelte-
|
|
1
|
+
import { a as getFolderFromRegistry, c as getPendingDocumentPlacement, d as refreshFolders, f as registerDocument, i as getDocumentPlacementNonce, l as getSubfoldersRefresh, m as supersedePendingDocumentPlacement, n as bumpSubfoldersRefresh, o as getGlobalFolderRefreshNonce, p as registerFolder, r as getDocumentFromRegistry, s as getLatestDocumentPlacement, t as acknowledgeDocumentPlacement, u as publishDocumentPlacement } from "./assets/subfolders-refresh-store.svelte-CXHxQWKh.js";
|
|
2
2
|
export { acknowledgeDocumentPlacement, bumpSubfoldersRefresh, getDocumentFromRegistry, getDocumentPlacementNonce, getFolderFromRegistry, getGlobalFolderRefreshNonce, getLatestDocumentPlacement, getPendingDocumentPlacement, getSubfoldersRefresh, publishDocumentPlacement, refreshFolders, registerDocument, registerFolder, supersedePendingDocumentPlacement };
|
|
@@ -95,6 +95,24 @@ function Sliders_horizontal($$renderer, $$props) {
|
|
|
95
95
|
]));
|
|
96
96
|
}
|
|
97
97
|
//#endregion
|
|
98
|
+
//#region src/lib/hosts/search-folder-options.ts
|
|
99
|
+
function effectiveCategoryId(folder, byId) {
|
|
100
|
+
const seen = /* @__PURE__ */ new Set();
|
|
101
|
+
let current = folder;
|
|
102
|
+
while (current && !seen.has(current.id)) {
|
|
103
|
+
seen.add(current.id);
|
|
104
|
+
if (current.categoryId) return current.categoryId;
|
|
105
|
+
current = current.parentId ? byId.get(current.parentId) : void 0;
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
/** Folder names visible under the currently selected search category. */
|
|
110
|
+
function folderNamesForSearchCategory(fallbackNames, folders, categoryId) {
|
|
111
|
+
if (!categoryId) return [...fallbackNames];
|
|
112
|
+
const byId = new Map(folders.map((folder) => [folder.id, folder]));
|
|
113
|
+
return [...new Set(folders.filter((folder) => effectiveCategoryId(folder, byId) === categoryId).map((folder) => folder.name))];
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
98
116
|
//#region src/lib/hosts/HiaiDocsSearchHost.svelte
|
|
99
117
|
function HiaiDocsSearchHost($$renderer, $$props) {
|
|
100
118
|
$$renderer.component(($$renderer) => {
|
|
@@ -132,6 +150,7 @@ function HiaiDocsSearchHost($$renderer, $$props) {
|
|
|
132
150
|
if (!queryLower()) return [];
|
|
133
151
|
return allCategories.filter((c) => c.name.toLowerCase().includes(queryLower()));
|
|
134
152
|
});
|
|
153
|
+
const visibleFolderNames = $.derived(() => folderNamesForSearchCategory(folders, allFolders, activeCategoryId));
|
|
135
154
|
$.derived(() => matchingDocs().length > 0 || matchingFolders().length > 0 || matchingCategories().length > 0);
|
|
136
155
|
function buildUrl(overrides) {
|
|
137
156
|
const params = new URLSearchParams();
|
|
@@ -170,22 +189,22 @@ function HiaiDocsSearchHost($$renderer, $$props) {
|
|
|
170
189
|
$$renderer.push(`<!----> ${$.escape(search_clear_all_filters())}</button>`);
|
|
171
190
|
} else $$renderer.push("<!--[-1-->");
|
|
172
191
|
$$renderer.push(`<!--]--> `);
|
|
173
|
-
if (
|
|
192
|
+
if (categories.length > 0) {
|
|
174
193
|
$$renderer.push("<!--[0-->");
|
|
175
194
|
$$renderer.push(`<div><button type="button" class="mb-2 flex w-full items-center justify-between text-xs font-semibold uppercase tracking-wider text-muted-foreground transition-colors hover:text-foreground"><span class="flex items-center gap-1.5">`);
|
|
176
|
-
|
|
177
|
-
$$renderer.push(`<!----> ${$.escape(
|
|
195
|
+
Folder_kanban($$renderer, { class: "size-3.5" });
|
|
196
|
+
$$renderer.push(`<!----> ${$.escape(categories_title())}</span> `);
|
|
178
197
|
$$renderer.push("<!--[0-->");
|
|
179
198
|
Chevron_down($$renderer, { class: "size-3" });
|
|
180
199
|
$$renderer.push(`<!--]--></button> `);
|
|
181
200
|
{
|
|
182
201
|
$$renderer.push("<!--[0-->");
|
|
183
202
|
$$renderer.push(`<div class="space-y-0.5"><!--[-->`);
|
|
184
|
-
const each_array = $.ensure_array_like(
|
|
203
|
+
const each_array = $.ensure_array_like(categories);
|
|
185
204
|
for (let $$index_4 = 0, $$length = each_array.length; $$index_4 < $$length; $$index_4++) {
|
|
186
|
-
let
|
|
187
|
-
$$renderer.push(`<button${$.attr_class(`flex w-full items-center justify-between rounded-md px-2.5 py-1.5 text-sm transition-colors ${
|
|
188
|
-
if (
|
|
205
|
+
let category = each_array[$$index_4];
|
|
206
|
+
$$renderer.push(`<button${$.attr_class(`flex w-full items-center justify-between rounded-md px-2.5 py-1.5 text-sm transition-colors ${activeCategoryId === category.id ? "bg-primary/10 font-medium text-primary" : "text-muted-foreground hover:bg-muted hover:text-foreground"}`)}><span class="truncate">${$.escape(category.name)}</span> `);
|
|
207
|
+
if (activeCategoryId === category.id) {
|
|
189
208
|
$$renderer.push("<!--[0-->");
|
|
190
209
|
X($$renderer, { class: "size-3 shrink-0" });
|
|
191
210
|
} else $$renderer.push("<!--[-1-->");
|
|
@@ -196,40 +215,22 @@ function HiaiDocsSearchHost($$renderer, $$props) {
|
|
|
196
215
|
$$renderer.push(`<!--]--></div>`);
|
|
197
216
|
} else $$renderer.push("<!--[-1-->");
|
|
198
217
|
$$renderer.push(`<!--]--> `);
|
|
199
|
-
if (
|
|
200
|
-
$$renderer.push("<!--[0-->");
|
|
201
|
-
$$renderer.push(`<div><h4 class="mb-2 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground">`);
|
|
202
|
-
Tag($$renderer, { class: "size-3.5" });
|
|
203
|
-
$$renderer.push(`<!----> ${$.escape(search_tags())}</h4> <div class="flex flex-wrap gap-1.5"><!--[-->`);
|
|
204
|
-
const each_array_1 = $.ensure_array_like(tags);
|
|
205
|
-
for (let $$index_5 = 0, $$length = each_array_1.length; $$index_5 < $$length; $$index_5++) {
|
|
206
|
-
let tag = each_array_1[$$index_5];
|
|
207
|
-
$$renderer.push(`<button${$.attr_class(`inline-flex items-center rounded-full px-2.5 py-1 text-xs font-medium transition-colors ${activeTags.includes(tag.name) ? "bg-primary text-primary-foreground" : "bg-secondary text-secondary-foreground hover:bg-secondary/80"}`)}>`);
|
|
208
|
-
if (tag.color) {
|
|
209
|
-
$$renderer.push("<!--[0-->");
|
|
210
|
-
$$renderer.push(`<span class="mr-1.5 inline-block size-2 rounded-full"${$.attr_style(`background-color: ${$.stringify(tag.color)}`)}></span>`);
|
|
211
|
-
} else $$renderer.push("<!--[-1-->");
|
|
212
|
-
$$renderer.push(`<!--]--> ${$.escape(tag.name)}</button>`);
|
|
213
|
-
}
|
|
214
|
-
$$renderer.push(`<!--]--></div></div>`);
|
|
215
|
-
} else $$renderer.push("<!--[-1-->");
|
|
216
|
-
$$renderer.push(`<!--]--> `);
|
|
217
|
-
if (categories.length > 0) {
|
|
218
|
+
if (visibleFolderNames().length > 0) {
|
|
218
219
|
$$renderer.push("<!--[0-->");
|
|
219
220
|
$$renderer.push(`<div><button type="button" class="mb-2 flex w-full items-center justify-between text-xs font-semibold uppercase tracking-wider text-muted-foreground transition-colors hover:text-foreground"><span class="flex items-center gap-1.5">`);
|
|
220
|
-
|
|
221
|
-
$$renderer.push(`<!----> ${$.escape(
|
|
221
|
+
Folder($$renderer, { class: "size-3.5" });
|
|
222
|
+
$$renderer.push(`<!----> ${$.escape(search_folders())}</span> `);
|
|
222
223
|
$$renderer.push("<!--[0-->");
|
|
223
224
|
Chevron_down($$renderer, { class: "size-3" });
|
|
224
225
|
$$renderer.push(`<!--]--></button> `);
|
|
225
226
|
{
|
|
226
227
|
$$renderer.push("<!--[0-->");
|
|
227
228
|
$$renderer.push(`<div class="space-y-0.5"><!--[-->`);
|
|
228
|
-
const
|
|
229
|
-
for (let $$
|
|
230
|
-
let
|
|
231
|
-
$$renderer.push(`<button${$.attr_class(`flex w-full items-center justify-between rounded-md px-2.5 py-1.5 text-sm transition-colors ${
|
|
232
|
-
if (
|
|
229
|
+
const each_array_1 = $.ensure_array_like(visibleFolderNames());
|
|
230
|
+
for (let $$index_5 = 0, $$length = each_array_1.length; $$index_5 < $$length; $$index_5++) {
|
|
231
|
+
let folder = each_array_1[$$index_5];
|
|
232
|
+
$$renderer.push(`<button${$.attr_class(`flex w-full items-center justify-between rounded-md px-2.5 py-1.5 text-sm transition-colors ${activeFolder === folder ? "bg-primary/10 font-medium text-primary" : "text-muted-foreground hover:bg-muted hover:text-foreground"}`)}><span class="truncate">${$.escape(folder)}</span> `);
|
|
233
|
+
if (activeFolder === folder) {
|
|
233
234
|
$$renderer.push("<!--[0-->");
|
|
234
235
|
X($$renderer, { class: "size-3 shrink-0" });
|
|
235
236
|
} else $$renderer.push("<!--[-1-->");
|
|
@@ -239,6 +240,24 @@ function HiaiDocsSearchHost($$renderer, $$props) {
|
|
|
239
240
|
}
|
|
240
241
|
$$renderer.push(`<!--]--></div>`);
|
|
241
242
|
} else $$renderer.push("<!--[-1-->");
|
|
243
|
+
$$renderer.push(`<!--]--> `);
|
|
244
|
+
if (tags.length > 0) {
|
|
245
|
+
$$renderer.push("<!--[0-->");
|
|
246
|
+
$$renderer.push(`<div><h4 class="mb-2 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground">`);
|
|
247
|
+
Tag($$renderer, { class: "size-3.5" });
|
|
248
|
+
$$renderer.push(`<!----> ${$.escape(search_tags())}</h4> <div class="flex flex-wrap gap-1.5"><!--[-->`);
|
|
249
|
+
const each_array_2 = $.ensure_array_like(tags);
|
|
250
|
+
for (let $$index_6 = 0, $$length = each_array_2.length; $$index_6 < $$length; $$index_6++) {
|
|
251
|
+
let tag = each_array_2[$$index_6];
|
|
252
|
+
$$renderer.push(`<button${$.attr_class(`inline-flex items-center rounded-full px-2.5 py-1 text-xs font-medium transition-colors ${activeTags.includes(tag.name) ? "bg-primary text-primary-foreground" : "bg-secondary text-secondary-foreground hover:bg-secondary/80"}`)}>`);
|
|
253
|
+
if (tag.color) {
|
|
254
|
+
$$renderer.push("<!--[0-->");
|
|
255
|
+
$$renderer.push(`<span class="mr-1.5 inline-block size-2 rounded-full"${$.attr_style(`background-color: ${$.stringify(tag.color)}`)}></span>`);
|
|
256
|
+
} else $$renderer.push("<!--[-1-->");
|
|
257
|
+
$$renderer.push(`<!--]--> ${$.escape(tag.name)}</button>`);
|
|
258
|
+
}
|
|
259
|
+
$$renderer.push(`<!--]--></div></div>`);
|
|
260
|
+
} else $$renderer.push("<!--[-1-->");
|
|
242
261
|
$$renderer.push(`<!--]--> <div><h4 class="mb-2 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wider text-muted-foreground">`);
|
|
243
262
|
Calendar($$renderer, { class: "size-3.5" });
|
|
244
263
|
$$renderer.push(`<!----> ${$.escape(search_date_range())}</h4> <div class="space-y-2"><div><label for="dateFrom" class="text-xs text-muted-foreground">${$.escape(search_date_from())}</label> <div class="mt-0.5">`);
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@ import { registerSearch } from "./commands/search.js";
|
|
|
24
24
|
import { registerSnapshot } from "./commands/snapshot.js";
|
|
25
25
|
import { registerUpdate } from "./commands/update.js";
|
|
26
26
|
|
|
27
|
-
const VERSION = "0.5.
|
|
27
|
+
const VERSION = "0.5.3";
|
|
28
28
|
|
|
29
29
|
const program = new Command();
|
|
30
30
|
program
|