@hiai-gg/docsmint 0.3.9 → 0.4.0
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/FolderNode--l1g8bcL.js +298 -0
- package/dist/frontend/{SettingsDialog-BHh68rTB.js → SettingsDialog-LyZUxxku.js} +132 -132
- package/dist/frontend/Sidebar-BsJsD1mJ.js +2021 -0
- package/dist/frontend/api/categories.js +1 -1
- package/dist/frontend/api/documents.js +1 -1
- package/dist/frontend/api/folders.js +1 -1
- package/dist/frontend/app-shell.js +118 -111
- package/dist/frontend/{categories-izQovv2w.js → categories-Drnns7N6.js} +14 -14
- package/dist/frontend/components/folder-node.js +1 -1
- package/dist/frontend/components/save-as-dialog.js +2 -2
- package/dist/frontend/components/settings.js +1 -1
- package/dist/frontend/components/sidebar.js +1 -1
- package/dist/frontend/dashboard.js +524 -522
- package/dist/frontend/{documents-BsDkvzCm.js → documents-Bc7b_MSZ.js} +15 -15
- package/dist/frontend/{folders-CTuV_JtU.js → folders-ONG03Dkv.js} +10 -10
- package/dist/frontend/route-context-BqQQ5c4i.js +29 -0
- package/dist/frontend/search.js +309 -309
- package/dist/frontend/{tag-store.svelte-CqrUXo0o.js → tag-store.svelte-CG7RrlDT.js} +1 -1
- package/dist/frontend-ssr/api/categories.js +1 -1
- package/dist/frontend-ssr/api/documents.js +1 -1
- package/dist/frontend-ssr/api/folders.js +1 -1
- package/dist/frontend-ssr/app-shell.js +12 -3
- package/dist/frontend-ssr/assets/{FolderNode-BZ0Q2QUS.js → FolderNode-CpHrpOED.js} +5 -3
- package/dist/frontend-ssr/assets/{SettingsDialog-B8L_YqNA.js → SettingsDialog-Dg97vv83.js} +4 -3
- package/dist/frontend-ssr/assets/{Sidebar-EHuUAx3W.js → Sidebar-CrDk_HYY.js} +28 -24
- package/dist/frontend-ssr/assets/{categories-AOqgcsn4.js → categories-CTCtdv7V.js} +10 -10
- package/dist/frontend-ssr/assets/{documents-BnOTRdTY.js → documents-PObdTOiT.js} +8 -8
- package/dist/frontend-ssr/assets/{folders-CTfbS24J.js → folders-BX30gHv6.js} +10 -10
- package/dist/frontend-ssr/assets/route-context-uca_b2Px.js +36 -0
- package/dist/frontend-ssr/assets/{tag-store.svelte-DPodKj6Z.js → tag-store.svelte-DvgUduhd.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 +32 -24
- package/dist/frontend-ssr/search.js +6 -4
- 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/FolderNode-C6FJv99G.js +0 -298
- package/dist/frontend/Sidebar-Cu3JrKDC.js +0 -2021
|
@@ -10,25 +10,26 @@ import { t as Folder } from "./assets/folder-DChhG7qN.js";
|
|
|
10
10
|
import { t as Rotate_ccw } from "./assets/rotate-ccw-BlgWwaiq.js";
|
|
11
11
|
import { a as Dropdown_menu, i as Dropdown_menu_content, n as Dropdown_menu_separator, o as Ellipsis_vertical, r as Dropdown_menu_item, t as Dropdown_menu_trigger } from "./assets/dropdown-menu-Bj5rbqbB.js";
|
|
12
12
|
import { t as Loader_circle } from "./assets/loader-circle-DZsrZ-er.js";
|
|
13
|
+
import { n as getDocsmintRouteAdapter, o as resolveDocsmintRoute, r as navigateDocsmintRoute, t as getDocsmintRequestAdapter } from "./assets/route-context-uca_b2Px.js";
|
|
13
14
|
import { n as formatRelativeTime } from "./assets/utils-DvZnctjz.js";
|
|
14
15
|
import { t as cn } from "./assets/utils-DtlPPXpJ.js";
|
|
15
16
|
import { a as Dialog, i as Dialog_description, n as Dialog_header, o as Button, r as Dialog_footer, t as Dialog_title } from "./assets/dialog-BOV1u6zP.js";
|
|
16
17
|
import { t as Label } from "./assets/label-Bj8-TfFN.js";
|
|
17
18
|
import { n as apiFetch } from "./assets/client-DZMkDkDn.js";
|
|
18
|
-
import "./assets/categories-
|
|
19
|
+
import "./assets/categories-CTCtdv7V.js";
|
|
19
20
|
import { t as getFrontendExtensions } from "./assets/context-jz1GGEUi.js";
|
|
20
21
|
import { t as resolveExtensions } from "./assets/resolve-BqHozBXl.js";
|
|
21
22
|
import { a as Select, i as Select_content, n as Select_trigger, r as Select_item, t as Select_value } from "./assets/select-value-6Lk0ToYd.js";
|
|
22
|
-
import { c as updateDocument, i as getDocument } from "./assets/documents-
|
|
23
|
-
import { c as updateFolder, i as duplicateDocument } from "./assets/folders-
|
|
23
|
+
import { c as updateDocument, i as getDocument } from "./assets/documents-PObdTOiT.js";
|
|
24
|
+
import { c as updateFolder, i as duplicateDocument } from "./assets/folders-BX30gHv6.js";
|
|
24
25
|
import { t as copyToClipboard } from "./assets/clipboard-CXOaoz2W.js";
|
|
25
26
|
import { t as ShareDialog } from "./assets/ShareDialog-vMvJLRfn.js";
|
|
26
27
|
import { d as refreshFolders, n as bumpSubfoldersRefresh } from "./assets/subfolders-refresh-store.svelte-DAh4gT16.js";
|
|
27
|
-
import { n as refreshDocs } from "./assets/tag-store.svelte-
|
|
28
|
+
import { n as refreshDocs } from "./assets/tag-store.svelte-DvgUduhd.js";
|
|
28
29
|
import { t as ConfirmDialog } from "./assets/ConfirmDialog-DjMFKc0V.js";
|
|
29
30
|
import * as $ from "svelte/internal/server";
|
|
30
|
-
import { goto, invalidateAll } from "$app/navigation";
|
|
31
31
|
import { page } from "$app/state";
|
|
32
|
+
import { invalidateAll } from "$app/navigation";
|
|
32
33
|
//#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/arrow-left.svelte
|
|
33
34
|
function Arrow_left($$renderer, $$props) {
|
|
34
35
|
const $$sanitized_props = $.sanitize_props($$props);
|
|
@@ -1153,15 +1154,17 @@ function stripMarkdown(markdown) {
|
|
|
1153
1154
|
function DocumentCard($$renderer, $$props) {
|
|
1154
1155
|
$$renderer.component(($$renderer) => {
|
|
1155
1156
|
const { document: doc, onDelete, onDuplicate, onShare, duplicateBusy = false } = $$props;
|
|
1157
|
+
const route = getDocsmintRouteAdapter();
|
|
1158
|
+
const request = getDocsmintRequestAdapter();
|
|
1156
1159
|
function navigateToDoc() {
|
|
1157
|
-
|
|
1160
|
+
navigateDocsmintRoute(route, `/docs/${doc.id}`);
|
|
1158
1161
|
}
|
|
1159
1162
|
let showMoveDialog = false;
|
|
1160
1163
|
async function handleMove(parentId, categoryId) {
|
|
1161
1164
|
await updateDocument(doc.id, {
|
|
1162
1165
|
folderId: parentId,
|
|
1163
1166
|
categoryId
|
|
1164
|
-
});
|
|
1167
|
+
}, request.fetch);
|
|
1165
1168
|
await invalidateAll();
|
|
1166
1169
|
}
|
|
1167
1170
|
let contentCopied = false;
|
|
@@ -1173,7 +1176,7 @@ function DocumentCard($$renderer, $$props) {
|
|
|
1173
1176
|
let text = "";
|
|
1174
1177
|
contentCopying = true;
|
|
1175
1178
|
try {
|
|
1176
|
-
text = (await getDocument(doc.id)).content ?? "";
|
|
1179
|
+
text = (await getDocument(doc.id, request.fetch)).content ?? "";
|
|
1177
1180
|
} catch (err) {
|
|
1178
1181
|
console.error("DocumentCard: failed to fetch full document for copy", err);
|
|
1179
1182
|
text = doc.excerpt || doc.content || "";
|
|
@@ -1227,7 +1230,7 @@ function DocumentCard($$renderer, $$props) {
|
|
|
1227
1230
|
align: "end",
|
|
1228
1231
|
children: ($$renderer) => {
|
|
1229
1232
|
Dropdown_menu_item($$renderer, {
|
|
1230
|
-
onclick: () =>
|
|
1233
|
+
onclick: () => navigateDocsmintRoute(route, `/docs/${doc.id}`),
|
|
1231
1234
|
children: ($$renderer) => {
|
|
1232
1235
|
Arrow_up_right($$renderer, { class: "size-4" });
|
|
1233
1236
|
$$renderer.push(`<!----> ${$.escape(doc_open())}`);
|
|
@@ -1404,15 +1407,17 @@ function DocumentCard($$renderer, $$props) {
|
|
|
1404
1407
|
function FolderCard($$renderer, $$props) {
|
|
1405
1408
|
$$renderer.component(($$renderer) => {
|
|
1406
1409
|
const { folder, onDelete, onRename, onShare } = $$props;
|
|
1410
|
+
const route = getDocsmintRouteAdapter();
|
|
1411
|
+
const request = getDocsmintRequestAdapter();
|
|
1407
1412
|
function navigateToFolder() {
|
|
1408
|
-
|
|
1413
|
+
navigateDocsmintRoute(route, `/folders/${folder.id}`);
|
|
1409
1414
|
}
|
|
1410
1415
|
let showMoveDialog = false;
|
|
1411
1416
|
async function handleMove(parentId, categoryId) {
|
|
1412
1417
|
await updateFolder(folder.id, {
|
|
1413
1418
|
parentId,
|
|
1414
1419
|
categoryId
|
|
1415
|
-
});
|
|
1420
|
+
}, request.fetch);
|
|
1416
1421
|
await invalidateAll();
|
|
1417
1422
|
}
|
|
1418
1423
|
let $$settled = true;
|
|
@@ -1452,7 +1457,7 @@ function FolderCard($$renderer, $$props) {
|
|
|
1452
1457
|
align: "end",
|
|
1453
1458
|
children: ($$renderer) => {
|
|
1454
1459
|
Dropdown_menu_item($$renderer, {
|
|
1455
|
-
onclick: () =>
|
|
1460
|
+
onclick: () => navigateDocsmintRoute(route, `/folders/${folder.id}`),
|
|
1456
1461
|
children: ($$renderer) => {
|
|
1457
1462
|
Folder($$renderer, { class: "size-4" });
|
|
1458
1463
|
$$renderer.push(`<!----> ${$.escape(doc_open())}`);
|
|
@@ -1555,6 +1560,7 @@ function FolderCard($$renderer, $$props) {
|
|
|
1555
1560
|
function ImportProgress($$renderer, $$props) {
|
|
1556
1561
|
$$renderer.component(($$renderer) => {
|
|
1557
1562
|
const { open = true, items, onClose } = $$props;
|
|
1563
|
+
const route = getDocsmintRouteAdapter();
|
|
1558
1564
|
const total = $.derived(() => items.length);
|
|
1559
1565
|
const done = $.derived(() => items.filter((i) => i.status === "done").length);
|
|
1560
1566
|
const failed = $.derived(() => items.filter((i) => i.status === "error").length);
|
|
@@ -1599,7 +1605,7 @@ function ImportProgress($$renderer, $$props) {
|
|
|
1599
1605
|
$$renderer.push(`<!----> `);
|
|
1600
1606
|
if (item.documentId) {
|
|
1601
1607
|
$$renderer.push("<!--[0-->");
|
|
1602
|
-
$$renderer.push(`<a${$.attr("href", `/docs/${item.documentId}`)} class="inline-flex items-center gap-1 rounded bg-primary/10 px-2 py-0.5 text-xs font-semibold text-primary transition-colors hover:bg-primary/20"><span>View</span> `);
|
|
1608
|
+
$$renderer.push(`<a${$.attr("href", resolveDocsmintRoute(route, `/docs/${item.documentId}`))} class="inline-flex items-center gap-1 rounded bg-primary/10 px-2 py-0.5 text-xs font-semibold text-primary transition-colors hover:bg-primary/20"><span>View</span> `);
|
|
1603
1609
|
Chevron_right($$renderer, { class: "size-3" });
|
|
1604
1610
|
$$renderer.push(`<!----></a>`);
|
|
1605
1611
|
} else {
|
|
@@ -1642,6 +1648,8 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
1642
1648
|
};
|
|
1643
1649
|
const { data, extensionContext = { pathname: "/" } } = $$props;
|
|
1644
1650
|
const frontendExtensions = getFrontendExtensions();
|
|
1651
|
+
const route = getDocsmintRouteAdapter();
|
|
1652
|
+
const request = getDocsmintRequestAdapter();
|
|
1645
1653
|
const dashboardWidgets = $.derived(() => resolveExtensions(frontendExtensions.dashboardWidgets, extensionContext));
|
|
1646
1654
|
const activeFolderId = $.derived(() => page.url.searchParams.get("folder") || null);
|
|
1647
1655
|
const activeCategoryId = $.derived(() => page.url.searchParams.get("category") || null);
|
|
@@ -1692,7 +1700,7 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
1692
1700
|
if (activeCategoryId()) params.set("category", activeCategoryId());
|
|
1693
1701
|
const qs = params.toString();
|
|
1694
1702
|
if (qs) url += `?${qs}`;
|
|
1695
|
-
|
|
1703
|
+
return navigateDocsmintRoute(route, url);
|
|
1696
1704
|
}
|
|
1697
1705
|
function handleRenameFolder(id) {
|
|
1698
1706
|
const folder = activeFolderId() ? data.activeFolder?.children?.find((c) => c.id === id) : data.rootFolders.find((f) => f.id === id);
|
|
@@ -1712,11 +1720,11 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
1712
1720
|
parentId: activeFolderId() || null,
|
|
1713
1721
|
categoryId: activeFolderId() ? null : activeCategoryId() || null
|
|
1714
1722
|
})
|
|
1715
|
-
});
|
|
1723
|
+
}, request.fetch);
|
|
1716
1724
|
else if (folderDialogMode === "edit" && folderDialogTarget) await apiFetch(`/api/folders/${folderDialogTarget.id}`, {
|
|
1717
1725
|
method: "PATCH",
|
|
1718
1726
|
body: JSON.stringify({ name })
|
|
1719
|
-
});
|
|
1727
|
+
}, request.fetch);
|
|
1720
1728
|
showFolderDialog = false;
|
|
1721
1729
|
refreshFolders();
|
|
1722
1730
|
await invalidateAll();
|
|
@@ -1730,7 +1738,7 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
1730
1738
|
if (!id || deleteFolderBusy) return;
|
|
1731
1739
|
deleteFolderBusy = true;
|
|
1732
1740
|
try {
|
|
1733
|
-
await apiFetch(`/api/folders/${id}`, { method: "DELETE" });
|
|
1741
|
+
await apiFetch(`/api/folders/${id}`, { method: "DELETE" }, request.fetch);
|
|
1734
1742
|
showDeleteFolderDialog = false;
|
|
1735
1743
|
deleteFolderTargetId = null;
|
|
1736
1744
|
await invalidateAll();
|
|
@@ -1745,7 +1753,7 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
1745
1753
|
async function handleDeleteDocument(id) {
|
|
1746
1754
|
if (!confirm(`${action_delete()}?`)) return;
|
|
1747
1755
|
try {
|
|
1748
|
-
await apiFetch(`/api/documents/${id}`, { method: "DELETE" });
|
|
1756
|
+
await apiFetch(`/api/documents/${id}`, { method: "DELETE" }, request.fetch);
|
|
1749
1757
|
await invalidateAll();
|
|
1750
1758
|
refreshDocs();
|
|
1751
1759
|
} catch (e) {
|
|
@@ -1756,7 +1764,7 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
1756
1764
|
if (duplicatingDocumentId) return;
|
|
1757
1765
|
duplicatingDocumentId = id;
|
|
1758
1766
|
try {
|
|
1759
|
-
const duplicate = await duplicateDocument(id);
|
|
1767
|
+
const duplicate = await duplicateDocument(id, request.fetch);
|
|
1760
1768
|
optimisticDocuments = [...optimisticDocuments.filter((doc) => doc.id !== duplicate.id), duplicate];
|
|
1761
1769
|
await invalidateAll();
|
|
1762
1770
|
const currentDocuments = data.activeFolder?.documents ?? data.recentDocs;
|
|
@@ -1785,7 +1793,7 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
1785
1793
|
else params.delete("dateFrom");
|
|
1786
1794
|
if (dateTo) params.set("dateTo", dateTo);
|
|
1787
1795
|
else params.delete("dateTo");
|
|
1788
|
-
|
|
1796
|
+
return navigateDocsmintRoute(route, `/?${params.toString()}`, {
|
|
1789
1797
|
replaceState: true,
|
|
1790
1798
|
keepFocus: true,
|
|
1791
1799
|
noScroll: true
|
|
@@ -1868,8 +1876,8 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
1868
1876
|
class: "size-8 shrink-0",
|
|
1869
1877
|
onclick: () => {
|
|
1870
1878
|
const parentId = data.activeFolder?.parentId;
|
|
1871
|
-
if (parentId)
|
|
1872
|
-
else
|
|
1879
|
+
if (parentId) return navigateDocsmintRoute(route, `/?folder=${parentId}`);
|
|
1880
|
+
else return navigateDocsmintRoute(route, "/");
|
|
1873
1881
|
},
|
|
1874
1882
|
title: action_back(),
|
|
1875
1883
|
children: ($$renderer) => {
|
|
@@ -1902,7 +1910,7 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
1902
1910
|
variant: "ghost",
|
|
1903
1911
|
size: "icon",
|
|
1904
1912
|
class: "size-8 shrink-0",
|
|
1905
|
-
onclick: () =>
|
|
1913
|
+
onclick: () => navigateDocsmintRoute(route, "/"),
|
|
1906
1914
|
title: action_back(),
|
|
1907
1915
|
children: ($$renderer) => {
|
|
1908
1916
|
Arrow_left($$renderer, { class: "size-4" });
|
|
@@ -2054,7 +2062,7 @@ function HiaiDocsDashboardHost($$renderer, $$props) {
|
|
|
2054
2062
|
const params = new URLSearchParams(page.url.searchParams);
|
|
2055
2063
|
if (val && val !== "all") params.set("category", val);
|
|
2056
2064
|
else params.delete("category");
|
|
2057
|
-
|
|
2065
|
+
return navigateDocsmintRoute(route, `/?${params.toString()}`);
|
|
2058
2066
|
},
|
|
2059
2067
|
children: ($$renderer) => {
|
|
2060
2068
|
if (Select$1.Trigger) {
|
|
@@ -5,13 +5,13 @@ import { t as Chevron_down } from "./assets/chevron-down-CSSNGNh_.js";
|
|
|
5
5
|
import { t as Folder } from "./assets/folder-DChhG7qN.js";
|
|
6
6
|
import { t as Rotate_ccw } from "./assets/rotate-ccw-BlgWwaiq.js";
|
|
7
7
|
import { n as Search, t as Tag } from "./assets/tag-GZEuGWk1.js";
|
|
8
|
-
import "./assets/
|
|
8
|
+
import { n as getDocsmintRouteAdapter, r as navigateDocsmintRoute, t as getDocsmintRequestAdapter } from "./assets/route-context-uca_b2Px.js";
|
|
9
|
+
import "./assets/categories-CTCtdv7V.js";
|
|
9
10
|
import { t as getFrontendExtensions } from "./assets/context-jz1GGEUi.js";
|
|
10
11
|
import { t as resolveExtensions } from "./assets/resolve-BqHozBXl.js";
|
|
11
12
|
import "./assets/select-value-6Lk0ToYd.js";
|
|
12
|
-
import "./assets/tag-store.svelte-
|
|
13
|
+
import "./assets/tag-store.svelte-DvgUduhd.js";
|
|
13
14
|
import * as $ from "svelte/internal/server";
|
|
14
|
-
import { goto } from "$app/navigation";
|
|
15
15
|
//#region ../node_modules/.bun/lucide-svelte@1.0.1+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/sliders-horizontal.svelte
|
|
16
16
|
function Sliders_horizontal($$renderer, $$props) {
|
|
17
17
|
const $$sanitized_props = $.sanitize_props($$props);
|
|
@@ -104,6 +104,8 @@ function HiaiDocsSearchHost($$renderer, $$props) {
|
|
|
104
104
|
$$renderer.component(($$renderer) => {
|
|
105
105
|
const { data, extensionContext = { pathname: "/search" } } = $$props;
|
|
106
106
|
const frontendExtensions = getFrontendExtensions();
|
|
107
|
+
const route = getDocsmintRouteAdapter();
|
|
108
|
+
getDocsmintRequestAdapter();
|
|
107
109
|
let query = "";
|
|
108
110
|
let activeFolder = "";
|
|
109
111
|
let activeTags = [];
|
|
@@ -157,7 +159,7 @@ function HiaiDocsSearchHost($$renderer, $$props) {
|
|
|
157
159
|
}
|
|
158
160
|
function applyDateRange() {
|
|
159
161
|
currentPage = 1;
|
|
160
|
-
|
|
162
|
+
navigateDocsmintRoute(route, buildUrl({
|
|
161
163
|
dateFrom,
|
|
162
164
|
dateTo,
|
|
163
165
|
page: "1"
|
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.
|
|
27
|
+
const VERSION = "0.4.0";
|
|
28
28
|
|
|
29
29
|
const program = new Command();
|
|
30
30
|
program
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
import { n as e, t } from "./folder-DeWhnD7O.js";
|
|
2
|
-
import { a as n, i as r, o as i, r as a, t as o } from "./dropdown-menu-CRSby3e9.js";
|
|
3
|
-
import { Gt as s, Ni as c, Yn as l, _i as u, mi as d, pi as f, wi as p } from "./messages-C5Q890i2.js";
|
|
4
|
-
import { t as m } from "./utils-DrfHTcei.js";
|
|
5
|
-
import { t as h } from "./dndzone-BzsOINtP.js";
|
|
6
|
-
import { s as g } from "./folders-CTuV_JtU.js";
|
|
7
|
-
import { l as ee, p as _ } from "./subfolders-refresh-store.svelte-B2dKVmgz.js";
|
|
8
|
-
import "svelte/internal/disclose-version";
|
|
9
|
-
import * as v from "svelte/internal/client";
|
|
10
|
-
import { goto as y } from "$app/navigation";
|
|
11
|
-
import { page as b } from "$app/state";
|
|
12
|
-
import { flip as x } from "svelte/animate";
|
|
13
|
-
//#region src/lib/components/sidebar/FolderNode.svelte
|
|
14
|
-
var S = v.from_html("<button><!></button>"), C = v.from_html("<!> <!> <!> <!> <!> <!>", 1), w = v.from_html("<!> <!>", 1), T = v.from_html("<div><!></div>"), E = v.from_html("<p class=\"px-2 py-1 text-xs text-muted-foreground\">Loading subfolders…</p>"), D = v.from_html("<p class=\"px-2 py-1 text-xs text-destructive\"> </p>"), O = v.from_html("<div class=\"group/doc flex w-full min-w-0 items-center gap-1\"><!> <!> <!></div>"), k = v.from_html("<div class=\"ml-0.5 space-y-0.5 border-l border-border pl-0.5\"><div><!> <!> <!></div> <div></div></div>"), A = v.from_html("<div role=\"group\"><div class=\"group/folder flex w-full min-w-0 items-center gap-1\"><button type=\"button\"><!> <!> <span class=\"min-w-0 truncate\"> </span></button> <!></div> <!></div>");
|
|
15
|
-
function j(M, N) {
|
|
16
|
-
v.push(N, !0);
|
|
17
|
-
let te = v.prop(N, "depth", 3, 0), P = v.prop(N, "isDraggingFolder", 3, !1), F = v.prop(N, "isDraggingDoc", 3, !1), I = v.prop(N, "draggedDocId", 3, null), L = v.state(v.proxy([])), R = v.state(!1), z = v.state(!1), B = v.state(null), V = v.state(v.proxy([])), H = v.derived(() => N.expandedFolderIds.has(N.folder.id)), U = v.derived(() => N.folderDocsMap[N.folder.id] ?? []);
|
|
18
|
-
async function W() {
|
|
19
|
-
v.set(z, !0), v.set(B, null);
|
|
20
|
-
try {
|
|
21
|
-
let e = await g(N.folder.id);
|
|
22
|
-
v.set(L, e.map((e) => (_(e.id, e.parentId ?? null, e.categoryId ?? null, e.order ?? 0), {
|
|
23
|
-
id: e.id,
|
|
24
|
-
name: e.name,
|
|
25
|
-
categoryId: e.categoryId ?? null,
|
|
26
|
-
parentId: e.parentId,
|
|
27
|
-
order: e.order ?? 0
|
|
28
|
-
})), !0), v.set(V, v.get(L), !0), v.set(R, !0);
|
|
29
|
-
} catch (e) {
|
|
30
|
-
console.error("FolderNode: failed to load subfolders", e), v.set(B, e instanceof Error ? e.message : "Failed to load subfolders", !0);
|
|
31
|
-
} finally {
|
|
32
|
-
v.set(z, !1);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function G() {
|
|
36
|
-
let e = v.get(H);
|
|
37
|
-
N.onToggleFolder(N.folder.id), e || W();
|
|
38
|
-
}
|
|
39
|
-
v.user_effect(() => {
|
|
40
|
-
ee(N.folder.id) !== 0 && (!v.get(R) && !v.get(H) || W());
|
|
41
|
-
});
|
|
42
|
-
function K(e) {
|
|
43
|
-
e.stopPropagation(), v.set(V, Array.isArray(e.detail.items) ? e.detail.items : [], !0), N.onConsiderSubfolders(N.folder.id)(e);
|
|
44
|
-
}
|
|
45
|
-
function q(e) {
|
|
46
|
-
e.stopPropagation(), v.set(V, Array.isArray(e.detail.items) ? e.detail.items : [], !0), N.onFinalizeSubfolders(N.folder.id)(e);
|
|
47
|
-
}
|
|
48
|
-
var J = A(), Y = v.child(J), X = v.child(Y), Z = v.child(X);
|
|
49
|
-
{
|
|
50
|
-
let t = v.derived(() => m("size-3.5 shrink-0 transition-transform", v.get(H) && "rotate-90"));
|
|
51
|
-
e(Z, { get class() {
|
|
52
|
-
return v.get(t);
|
|
53
|
-
} });
|
|
54
|
-
}
|
|
55
|
-
var Q = v.sibling(Z, 2);
|
|
56
|
-
t(Q, { class: "size-4 shrink-0 text-muted-foreground" });
|
|
57
|
-
var $ = v.sibling(Q, 2), ne = v.child($, !0);
|
|
58
|
-
v.reset($), v.reset(X), n(v.sibling(X, 2), {
|
|
59
|
-
children: (e, t) => {
|
|
60
|
-
var n = w(), m = v.first_child(n);
|
|
61
|
-
o(m, {
|
|
62
|
-
child: (e, t) => {
|
|
63
|
-
let n = () => (t?.()).props;
|
|
64
|
-
var r = S();
|
|
65
|
-
v.attribute_effect(r, (e, t) => ({
|
|
66
|
-
...n(),
|
|
67
|
-
type: "button",
|
|
68
|
-
class: "inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground opacity-0 transition-opacity hover:bg-accent hover:text-accent-foreground group-hover/folder:opacity-100 focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
69
|
-
"aria-label": e,
|
|
70
|
-
title: t
|
|
71
|
-
}), [() => s(), () => s()]), i(v.child(r), { class: "size-3.5" }), v.reset(r), v.append(e, r);
|
|
72
|
-
},
|
|
73
|
-
$$slots: { child: !0 }
|
|
74
|
-
}), r(v.sibling(m, 2), {
|
|
75
|
-
align: "end",
|
|
76
|
-
children: (e, t) => {
|
|
77
|
-
var n = C(), r = v.first_child(n);
|
|
78
|
-
a(r, {
|
|
79
|
-
onSelect: () => y("/folders/" + N.folder.id),
|
|
80
|
-
children: (e, t) => {
|
|
81
|
-
v.next();
|
|
82
|
-
var n = v.text();
|
|
83
|
-
v.template_effect((e) => v.set_text(n, e), [() => l()]), v.append(e, n);
|
|
84
|
-
},
|
|
85
|
-
$$slots: { default: !0 }
|
|
86
|
-
});
|
|
87
|
-
var i = v.sibling(r, 2);
|
|
88
|
-
a(i, {
|
|
89
|
-
onSelect: () => y(`/docs/new?folder=${N.folder.id}`),
|
|
90
|
-
children: (e, t) => {
|
|
91
|
-
v.next();
|
|
92
|
-
var n = v.text();
|
|
93
|
-
v.template_effect((e) => v.set_text(n, e), [() => c()]), v.append(e, n);
|
|
94
|
-
},
|
|
95
|
-
$$slots: { default: !0 }
|
|
96
|
-
});
|
|
97
|
-
var o = v.sibling(i, 2);
|
|
98
|
-
a(o, {
|
|
99
|
-
onSelect: () => N.onCreateSubfolder(N.folder.id),
|
|
100
|
-
children: (e, t) => {
|
|
101
|
-
v.next();
|
|
102
|
-
var n = v.text();
|
|
103
|
-
v.template_effect((e) => v.set_text(n, e), [() => u()]), v.append(e, n);
|
|
104
|
-
},
|
|
105
|
-
$$slots: { default: !0 }
|
|
106
|
-
});
|
|
107
|
-
var s = v.sibling(o, 2);
|
|
108
|
-
a(s, {
|
|
109
|
-
onSelect: () => N.onShare(N.folder.id, N.folder.name),
|
|
110
|
-
children: (e, t) => {
|
|
111
|
-
v.next();
|
|
112
|
-
var n = v.text();
|
|
113
|
-
v.template_effect((e) => v.set_text(n, e), [() => p()]), v.append(e, n);
|
|
114
|
-
},
|
|
115
|
-
$$slots: { default: !0 }
|
|
116
|
-
});
|
|
117
|
-
var m = v.sibling(s, 2);
|
|
118
|
-
a(m, {
|
|
119
|
-
onSelect: () => N.onRename(N.folder.id, N.folder.name),
|
|
120
|
-
children: (e, t) => {
|
|
121
|
-
v.next();
|
|
122
|
-
var n = v.text();
|
|
123
|
-
v.template_effect((e) => v.set_text(n, e), [() => d()]), v.append(e, n);
|
|
124
|
-
},
|
|
125
|
-
$$slots: { default: !0 }
|
|
126
|
-
}), a(v.sibling(m, 2), {
|
|
127
|
-
class: "text-destructive focus:text-destructive",
|
|
128
|
-
onSelect: () => N.onDelete(N.folder.id, N.folder.name),
|
|
129
|
-
children: (e, t) => {
|
|
130
|
-
v.next();
|
|
131
|
-
var n = v.text();
|
|
132
|
-
v.template_effect((e) => v.set_text(n, e), [() => f()]), v.append(e, n);
|
|
133
|
-
},
|
|
134
|
-
$$slots: { default: !0 }
|
|
135
|
-
}), v.append(e, n);
|
|
136
|
-
},
|
|
137
|
-
$$slots: { default: !0 }
|
|
138
|
-
}), v.append(e, n);
|
|
139
|
-
},
|
|
140
|
-
$$slots: { default: !0 }
|
|
141
|
-
}), v.reset(Y);
|
|
142
|
-
var re = v.sibling(Y, 2), ie = (e) => {
|
|
143
|
-
var t = k(), n = v.child(t), r = v.child(n);
|
|
144
|
-
v.each(r, 25, () => v.get(V), (e) => e.id, (e, t) => {
|
|
145
|
-
let n = v.derived(() => j);
|
|
146
|
-
var r = T(), i = v.child(r);
|
|
147
|
-
{
|
|
148
|
-
let e = v.derived(() => te() + 1);
|
|
149
|
-
v.component(i, () => v.get(n), (n, r) => {
|
|
150
|
-
r(n, {
|
|
151
|
-
get folder() {
|
|
152
|
-
return v.get(t);
|
|
153
|
-
},
|
|
154
|
-
get depth() {
|
|
155
|
-
return v.get(e);
|
|
156
|
-
},
|
|
157
|
-
get folderDocsMap() {
|
|
158
|
-
return N.folderDocsMap;
|
|
159
|
-
},
|
|
160
|
-
get expandedFolderIds() {
|
|
161
|
-
return N.expandedFolderIds;
|
|
162
|
-
},
|
|
163
|
-
get isDraggingGlobal() {
|
|
164
|
-
return N.isDraggingGlobal;
|
|
165
|
-
},
|
|
166
|
-
get isDraggingFolder() {
|
|
167
|
-
return P();
|
|
168
|
-
},
|
|
169
|
-
get isDraggingDoc() {
|
|
170
|
-
return F();
|
|
171
|
-
},
|
|
172
|
-
get dragDisabled() {
|
|
173
|
-
return N.dragDisabled;
|
|
174
|
-
},
|
|
175
|
-
get folderFlipDurationMs() {
|
|
176
|
-
return N.folderFlipDurationMs;
|
|
177
|
-
},
|
|
178
|
-
get documentFlipDurationMs() {
|
|
179
|
-
return N.documentFlipDurationMs;
|
|
180
|
-
},
|
|
181
|
-
get draggedDocId() {
|
|
182
|
-
return I();
|
|
183
|
-
},
|
|
184
|
-
get onToggleFolder() {
|
|
185
|
-
return N.onToggleFolder;
|
|
186
|
-
},
|
|
187
|
-
get onScheduleFolderExpand() {
|
|
188
|
-
return N.onScheduleFolderExpand;
|
|
189
|
-
},
|
|
190
|
-
get onClearExpandTimer() {
|
|
191
|
-
return N.onClearExpandTimer;
|
|
192
|
-
},
|
|
193
|
-
get onRename() {
|
|
194
|
-
return N.onRename;
|
|
195
|
-
},
|
|
196
|
-
get onShare() {
|
|
197
|
-
return N.onShare;
|
|
198
|
-
},
|
|
199
|
-
get onDelete() {
|
|
200
|
-
return N.onDelete;
|
|
201
|
-
},
|
|
202
|
-
get onCreateSubfolder() {
|
|
203
|
-
return N.onCreateSubfolder;
|
|
204
|
-
},
|
|
205
|
-
get onConsiderDocs() {
|
|
206
|
-
return N.onConsiderDocs;
|
|
207
|
-
},
|
|
208
|
-
get onFinalizeDocs() {
|
|
209
|
-
return N.onFinalizeDocs;
|
|
210
|
-
},
|
|
211
|
-
get onConsiderSubfolders() {
|
|
212
|
-
return N.onConsiderSubfolders;
|
|
213
|
-
},
|
|
214
|
-
get onFinalizeSubfolders() {
|
|
215
|
-
return N.onFinalizeSubfolders;
|
|
216
|
-
},
|
|
217
|
-
get onDropOnFolder() {
|
|
218
|
-
return N.onDropOnFolder;
|
|
219
|
-
},
|
|
220
|
-
get docRowInner() {
|
|
221
|
-
return N.docRowInner;
|
|
222
|
-
},
|
|
223
|
-
get copyButton() {
|
|
224
|
-
return N.copyButton;
|
|
225
|
-
},
|
|
226
|
-
get docMenu() {
|
|
227
|
-
return N.docMenu;
|
|
228
|
-
}
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
v.reset(r), v.animation(r, () => x, () => ({ duration: N.folderFlipDurationMs })), v.append(e, r);
|
|
233
|
-
});
|
|
234
|
-
var i = v.sibling(r, 2), a = (e) => {
|
|
235
|
-
var t = E();
|
|
236
|
-
v.append(e, t);
|
|
237
|
-
};
|
|
238
|
-
v.if(i, (e) => {
|
|
239
|
-
v.get(z) && e(a);
|
|
240
|
-
});
|
|
241
|
-
var o = v.sibling(i, 2), s = (e) => {
|
|
242
|
-
var t = D(), n = v.child(t, !0);
|
|
243
|
-
v.reset(t), v.template_effect(() => v.set_text(n, v.get(B))), v.append(e, t);
|
|
244
|
-
};
|
|
245
|
-
v.if(o, (e) => {
|
|
246
|
-
v.get(B) && e(s);
|
|
247
|
-
}), v.reset(n), v.action(n, (e, t) => h?.(e, t), () => ({
|
|
248
|
-
items: v.get(V),
|
|
249
|
-
flipDurationMs: N.folderFlipDurationMs,
|
|
250
|
-
type: "folder",
|
|
251
|
-
dropTargetStyle: {},
|
|
252
|
-
dragDisabled: N.dragDisabled
|
|
253
|
-
}));
|
|
254
|
-
var c = v.sibling(n, 2), l = v.derived(() => N.onConsiderDocs({
|
|
255
|
-
kind: "folder",
|
|
256
|
-
id: N.folder.id
|
|
257
|
-
})), u = v.derived(() => N.onFinalizeDocs({
|
|
258
|
-
kind: "folder",
|
|
259
|
-
id: N.folder.id
|
|
260
|
-
}));
|
|
261
|
-
v.each(c, 29, () => v.get(U), (e) => e.id, (e, t) => {
|
|
262
|
-
var n = O(), r = v.child(n);
|
|
263
|
-
v.snippet(r, () => N.docRowInner, () => v.get(t));
|
|
264
|
-
var i = v.sibling(r, 2);
|
|
265
|
-
v.snippet(i, () => N.copyButton, () => v.get(t));
|
|
266
|
-
var a = v.sibling(i, 2);
|
|
267
|
-
v.snippet(a, () => N.docMenu, () => v.get(t)), v.reset(n), v.animation(n, () => x, () => ({ duration: N.documentFlipDurationMs })), v.append(e, n);
|
|
268
|
-
}), v.reset(c), v.action(c, (e, t) => h?.(e, t), () => ({
|
|
269
|
-
items: v.get(U),
|
|
270
|
-
flipDurationMs: N.documentFlipDurationMs,
|
|
271
|
-
type: "doc",
|
|
272
|
-
dropTargetStyle: {},
|
|
273
|
-
dragDisabled: N.dragDisabled,
|
|
274
|
-
useCursorForDetection: !0,
|
|
275
|
-
centreDraggedOnCursor: !0
|
|
276
|
-
})), v.reset(t), v.template_effect((e, t) => {
|
|
277
|
-
v.set_class(n, 1, e), v.set_class(c, 1, t);
|
|
278
|
-
}, [() => v.clsx(m("min-h-[8px] space-y-0.5 transition-all duration-150", P() && v.get(V).length === 0 && "min-h-[36px] bg-accent/20 rounded border border-dashed border-muted-foreground/20")), () => v.clsx(m("min-h-[8px] space-y-0.5 transition-all duration-150", F() && v.get(U).length === 0 && "min-h-[36px] bg-accent/20 rounded border border-dashed border-muted-foreground/20"))]), v.event("consider", n, K), v.event("finalize", n, q), v.event("consider", c, function(...e) {
|
|
279
|
-
v.get(l)?.apply(this, e);
|
|
280
|
-
}), v.event("finalize", c, function(...e) {
|
|
281
|
-
v.get(u)?.apply(this, e);
|
|
282
|
-
}), v.append(e, t);
|
|
283
|
-
};
|
|
284
|
-
v.if(re, (e) => {
|
|
285
|
-
v.get(H) && e(ie);
|
|
286
|
-
}), v.reset(J), v.template_effect((e) => {
|
|
287
|
-
v.set_attribute(J, "aria-label", N.folder.name), v.set_attribute(X, "aria-expanded", v.get(H)), v.set_class(X, 1, e), v.set_text(ne, N.folder.name);
|
|
288
|
-
}, [() => v.clsx(m("flex min-w-0 flex-1 items-center gap-1.5 rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-accent hover:text-accent-foreground", b.params.id === N.folder.id && "bg-accent text-accent-foreground font-medium", I() && "hover:bg-accent/40 border border-dashed border-primary/30"))]), v.event("mouseenter", J, () => {
|
|
289
|
-
N.isDraggingGlobal && !v.get(H) && N.onScheduleFolderExpand(N.folder.id);
|
|
290
|
-
}), v.event("mouseleave", J, () => {
|
|
291
|
-
N.isDraggingGlobal && N.onClearExpandTimer();
|
|
292
|
-
}), v.delegated("click", X, G), v.event("dragover", X, (e) => {
|
|
293
|
-
I() && (e.preventDefault(), e.dataTransfer && (e.dataTransfer.dropEffect = "move"));
|
|
294
|
-
}), v.event("drop", X, (e) => N.onDropOnFolder(e, N.folder.id)), v.append(M, J), v.pop();
|
|
295
|
-
}
|
|
296
|
-
v.delegate(["click"]);
|
|
297
|
-
//#endregion
|
|
298
|
-
export { j as t };
|