@hiai-gg/docsmint 0.5.0 → 0.5.2

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.
Files changed (75) hide show
  1. package/dist/backend/index.js +47 -8
  2. package/dist/backend-account-runtime-cleanup.js +20 -3
  3. package/dist/backend-api-key-facade.js +20 -3
  4. package/dist/backend-pipeline-cancellation.js +20 -3
  5. package/dist/frontend/{CategoryDialog-DyytjQn6.js → CategoryDialog-DmlX0Z97.js} +1 -1
  6. package/dist/frontend/DatePicker-D6E-EEtZ.js +340 -0
  7. package/dist/frontend/{FolderNode-DAGPgi-M.js → FolderNode-D3rN3yLV.js} +1 -1
  8. package/dist/frontend/{HiaiDocsExtensionProvider-CMiTXi2J.js → HiaiDocsExtensionProvider-OSn96BBw.js} +1 -1
  9. package/dist/frontend/{SettingsDialog-DEx1eEZm.js → SettingsDialog-Bd_S2RKW.js} +104 -96
  10. package/dist/frontend/ShareDialog-BC-Jl6v1.js +257 -0
  11. package/dist/frontend/{Sidebar-BdB8CfXS.js → Sidebar-BnZgNl_8.js} +679 -657
  12. package/dist/frontend/api/attachments.js +1 -1
  13. package/dist/frontend/app-shell.js +3 -3
  14. package/dist/frontend/{attachments-C2DBzU-r.js → attachments-B8AuDjno.js} +8 -5
  15. package/dist/frontend/components/category-dialog.js +1 -1
  16. package/dist/frontend/components/editor/document-editor.js +240 -228
  17. package/dist/frontend/components/folder-node.js +1 -1
  18. package/dist/frontend/components/save-as-dialog.js +1 -1
  19. package/dist/frontend/components/settings.js +1 -1
  20. package/dist/frontend/components/share-dialog.js +1 -1
  21. package/dist/frontend/components/sidebar.js +1 -1
  22. package/dist/frontend/{context-KLiM3QQ0.js → context-D0zPFXZ4.js} +2 -0
  23. package/dist/frontend/dashboard.js +1106 -1068
  24. package/dist/frontend/{dropdown-menu-Cre80-CJ.js → dropdown-menu-CJ_7V3N0.js} +43 -43
  25. package/dist/frontend/extension.d.ts +3 -2
  26. package/dist/frontend/extension.js +1 -1
  27. package/dist/frontend/{floating-layer-anchor-BDs7vO-M.js → floating-layer-anchor-S5RSefGN.js} +1 -1
  28. package/dist/frontend/frontend.css +1 -1
  29. package/dist/frontend/search.js +421 -405
  30. package/dist/frontend/{select-value-GXwx90Pr.js → select-value-JCAp2PmU.js} +466 -466
  31. package/dist/frontend/shared-document.js +1 -1
  32. package/dist/frontend-ssr/api/attachments.js +1 -1
  33. package/dist/frontend-ssr/app-shell.js +4 -4
  34. package/dist/frontend-ssr/assets/{CategoryDialog-CLAGMZPz.js → CategoryDialog-Cnlmr1sz.js} +2 -2
  35. package/dist/frontend-ssr/assets/{CreateSnapshotDialog-DNAjd4eD.js → CreateSnapshotDialog-b6O0nUVp.js} +1 -1
  36. package/dist/frontend-ssr/assets/{DatePicker-Cp6Qmgdb.js → DatePicker-D84cJ-Eq.js} +1 -1
  37. package/dist/frontend-ssr/assets/{FolderNode-Ty6fMbDu.js → FolderNode-CnFVWuQi.js} +2 -2
  38. package/dist/frontend-ssr/assets/{HiaiDocsExtensionProvider-B_MrN08c.js → HiaiDocsExtensionProvider-BRKWmcDd.js} +1 -1
  39. package/dist/frontend-ssr/assets/{SettingsDialog-BymUxBgg.js → SettingsDialog-BPdUl6pd.js} +23 -9
  40. package/dist/frontend-ssr/assets/ShareDialog-BZd28sg-.js +45 -0
  41. package/dist/frontend-ssr/assets/{Sidebar-DzbIUZFc.js → Sidebar-DwYZH0Tr.js} +49 -14
  42. package/dist/frontend-ssr/assets/{TagCreateDialog-B7wDbVqG.js → TagCreateDialog-DUPMitlL.js} +1 -1
  43. package/dist/frontend-ssr/assets/{attachments-CXgatN0B.js → attachments-Cj3fQyUp.js} +11 -4
  44. package/dist/frontend-ssr/assets/{confirm-dialog-B3C0WeMn.js → confirm-dialog-XuyaL8sr.js} +1 -1
  45. package/dist/frontend-ssr/assets/{context-BtCMqdVe.js → context-Bi_mO-NS.js} +2 -0
  46. package/dist/frontend-ssr/assets/{dropdown-menu-CGkf8-rb.js → dropdown-menu-Dn_vQq9b.js} +1 -1
  47. package/dist/frontend-ssr/assets/{floating-layer-anchor-CYIE8Oj6.js → floating-layer-anchor-BIAu-252.js} +1 -1
  48. package/dist/frontend-ssr/assets/{messages-D-auzk9H.js → messages-BAQzILs4.js} +1 -1
  49. package/dist/frontend-ssr/assets/{select-value-6Lk0ToYd.js → select-value-DBhbkNcc.js} +1 -1
  50. package/dist/frontend-ssr/components/category-dialog.js +1 -1
  51. package/dist/frontend-ssr/components/create-snapshot-dialog.js +1 -1
  52. package/dist/frontend-ssr/components/editor/document-editor.js +37 -23
  53. package/dist/frontend-ssr/components/editor/document-title.js +1 -1
  54. package/dist/frontend-ssr/components/editor/markdown-toggle.js +1 -1
  55. package/dist/frontend-ssr/components/folder-node.js +1 -1
  56. package/dist/frontend-ssr/components/save-as-dialog.js +2 -2
  57. package/dist/frontend-ssr/components/settings.js +1 -1
  58. package/dist/frontend-ssr/components/share-dialog.js +1 -1
  59. package/dist/frontend-ssr/components/sidebar.js +1 -1
  60. package/dist/frontend-ssr/components/tag-create-dialog.js +1 -1
  61. package/dist/frontend-ssr/components/version-history.js +2 -2
  62. package/dist/frontend-ssr/dashboard.js +280 -81
  63. package/dist/frontend-ssr/extension.js +1 -1
  64. package/dist/frontend-ssr/i18n.js +1 -1
  65. package/dist/frontend-ssr/search.js +4 -4
  66. package/dist/frontend-ssr/shared-document.js +1 -1
  67. package/dist/lifecycle-runtime.js +18 -3
  68. package/dist/types.d.ts +5 -0
  69. package/package.json +1 -1
  70. package/packages/cli/src/index.ts +1 -1
  71. package/packages/db/src/schema.ts +17 -2
  72. package/packages/mcp-server/src/index.ts +1 -1
  73. package/dist/frontend/DatePicker-BkaaNS1l.js +0 -256
  74. package/dist/frontend/ShareDialog-ChZogJtW.js +0 -166
  75. package/dist/frontend-ssr/assets/ShareDialog-C-9VDKSz.js +0 -56
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hiai-gg/docsmint",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "type": "module",
5
5
  "browser": {
6
6
  "./dist/backend-launcher.js": false,
@@ -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.0";
27
+ const VERSION = "0.5.2";
28
28
 
29
29
  const program = new Command();
30
30
  program
@@ -32,6 +32,8 @@ import { relations, sql } from "drizzle-orm";
32
32
  // ============================================
33
33
  export const documentVisibilityEnum = pgEnum("document_visibility", ["private", "shared", "public"]);
34
34
  export const shareRoleEnum = pgEnum("share_role", ["viewer", "commenter", "editor"]);
35
+ export const shareAccessModeEnum = pgEnum("share_access_mode", ["public", "restricted"]);
36
+ export const shareGrantStatusEnum = pgEnum("share_grant_status", ["pending", "accepted", "revoked"]);
35
37
  export const embeddingStatusEnum = pgEnum("embedding_status", [
36
38
  "pending",
37
39
  "processing",
@@ -455,6 +457,9 @@ export const shareLinks = pgTable(
455
457
  token: text("token").notNull().unique(),
456
458
  passwordHash: text("password_hash"),
457
459
  role: shareRoleEnum("role").notNull().default("viewer"),
460
+ accessMode: shareAccessModeEnum("access_mode").notNull().default("public"),
461
+ allowPasswordFallback: boolean("allow_password_fallback").notNull().default(false),
462
+ policyVersion: integer("policy_version").notNull().default(1),
458
463
  expiresAt: timestamp("expires_at"),
459
464
  createdBy: uuid("created_by")
460
465
  .notNull()
@@ -506,9 +511,16 @@ export const guestAccess = pgTable(
506
511
  .references(() => shareLinks.id, { onDelete: "cascade" }),
507
512
  workspaceId: text("workspace_id"),
508
513
  guestEmail: text("guest_email").notNull(),
514
+ role: shareRoleEnum("role").notNull().default("viewer"),
515
+ status: shareGrantStatusEnum("status").notNull().default("pending"),
509
516
  grantedAt: timestamp("granted_at").defaultNow().notNull(),
517
+ acceptedAt: timestamp("accepted_at"),
518
+ revokedAt: timestamp("revoked_at"),
510
519
  },
511
- (table) => [index("guest_access_share_link_idx").on(table.shareLinkId)]
520
+ (table) => [
521
+ index("guest_access_share_link_idx").on(table.shareLinkId),
522
+ uniqueIndex("guest_access_share_link_email_unique_idx").on(table.shareLinkId, table.guestEmail),
523
+ ]
512
524
  );
513
525
 
514
526
  export const guestAccessRelations = relations(guestAccess, ({ one }) => ({
@@ -535,7 +547,10 @@ export const attachments = pgTable(
535
547
  storageKey: text("storage_key").notNull(),
536
548
  createdAt: timestamp("created_at").defaultNow().notNull(),
537
549
  },
538
- (table) => [index("attachments_document_id_idx").on(table.documentId)]
550
+ (table) => [
551
+ index("attachments_document_id_idx").on(table.documentId),
552
+ uniqueIndex("attachments_storage_key_unique").on(table.storageKey),
553
+ ]
539
554
  );
540
555
 
541
556
  export const attachmentRelations = relations(attachments, ({ one }) => ({
@@ -35,7 +35,7 @@ interface McpToolResult {
35
35
 
36
36
  const server = new McpServer({
37
37
  name: "hiai-docs",
38
- version: "0.5.0",
38
+ version: "0.5.2",
39
39
  });
40
40
 
41
41
  /**
@@ -1,256 +0,0 @@
1
- import { t as e } from "./Icon-Db-o32_E.js";
2
- import { n as t } from "./folder-Cx60MRpi.js";
3
- import { t as n } from "./dist-DQa_OHOa.js";
4
- import { $ as r, G as i, H as a, J as o, K as s, Q as c, U as ee, W as l, X as u, Y as d, Z as f, at as p, ct as m, dt as h, et as g, it as _, lt as v, nt as y, ot as te, q as ne, rt as re, st as b, tt as x, ut as S } from "./messages-DIovIZrK.js";
5
- import { t as C } from "./utils-BPDRytUU.js";
6
- import "svelte/internal/disclose-version";
7
- import * as w from "svelte/internal/client";
8
- import "svelte/internal/flags/legacy";
9
- //#region ../node_modules/.bun/lucide-svelte@0.577.0+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/calendar.svelte
10
- function T(t, n) {
11
- let r = w.legacy_rest_props(n, [
12
- "children",
13
- "$$slots",
14
- "$$events",
15
- "$$legacy"
16
- ]), i = [
17
- ["path", { d: "M8 2v4" }],
18
- ["path", { d: "M16 2v4" }],
19
- ["rect", {
20
- width: "18",
21
- height: "18",
22
- x: "3",
23
- y: "4",
24
- rx: "2"
25
- }],
26
- ["path", { d: "M3 10h18" }]
27
- ];
28
- e(t, w.spread_props({ name: "calendar" }, () => r, {
29
- get iconNode() {
30
- return i;
31
- },
32
- children: (e, t) => {
33
- var r = w.comment(), i = w.first_child(r);
34
- w.slot(i, n, "default", {}, null), w.append(e, r);
35
- },
36
- $$slots: { default: !0 }
37
- }));
38
- }
39
- //#endregion
40
- //#region ../node_modules/.bun/lucide-svelte@0.577.0+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/chevron-left.svelte
41
- function E(t, n) {
42
- let r = w.legacy_rest_props(n, [
43
- "children",
44
- "$$slots",
45
- "$$events",
46
- "$$legacy"
47
- ]), i = [["path", { d: "m15 18-6-6 6-6" }]];
48
- e(t, w.spread_props({ name: "chevron-left" }, () => r, {
49
- get iconNode() {
50
- return i;
51
- },
52
- children: (e, t) => {
53
- var r = w.comment(), i = w.first_child(r);
54
- w.slot(i, n, "default", {}, null), w.append(e, r);
55
- },
56
- $$slots: { default: !0 }
57
- }));
58
- }
59
- //#endregion
60
- //#region ../node_modules/.bun/lucide-svelte@0.577.0+ff5f301bb2db9a0d/node_modules/lucide-svelte/dist/icons/folder-kanban.svelte
61
- function D(t, n) {
62
- let r = w.legacy_rest_props(n, [
63
- "children",
64
- "$$slots",
65
- "$$events",
66
- "$$legacy"
67
- ]), i = [
68
- ["path", { d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z" }],
69
- ["path", { d: "M8 10v4" }],
70
- ["path", { d: "M12 10v2" }],
71
- ["path", { d: "M16 10v6" }]
72
- ];
73
- e(t, w.spread_props({ name: "folder-kanban" }, () => r, {
74
- get iconNode() {
75
- return i;
76
- },
77
- children: (e, t) => {
78
- var r = w.comment(), i = w.first_child(r);
79
- w.slot(i, n, "default", {}, null), w.append(e, r);
80
- },
81
- $$slots: { default: !0 }
82
- }));
83
- }
84
- //#endregion
85
- //#region ../node_modules/.bun/@hiai-gg+hiai-ui@0.0.8+3149ccaa93f654b8/node_modules/@hiai-gg/hiai-ui/dist/components/ui/badge/badge.svelte
86
- var O = /* @__PURE__ */ new Set([
87
- "$$slots",
88
- "$$events",
89
- "$$legacy",
90
- "ref",
91
- "class",
92
- "variant",
93
- "children"
94
- ]), k = w.from_html("<div><!></div>");
95
- function A(e, t) {
96
- w.push(t, !0);
97
- let n = w.prop(t, "ref", 15, null), r = w.prop(t, "variant", 3, "default"), i = w.rest_props(t, O);
98
- var a = k();
99
- w.attribute_effect(a, (e) => ({
100
- class: e,
101
- ...i
102
- }), [() => C(j({ variant: r() }), t.class)]);
103
- var o = w.child(a), s = (e) => {
104
- var n = w.comment(), r = w.first_child(n);
105
- w.snippet(r, () => t.children), w.append(e, n);
106
- };
107
- w.if(o, (e) => {
108
- t.children && e(s);
109
- }), w.reset(a), w.bind_this(a, (e) => n(e), () => n()), w.append(e, a), w.pop();
110
- }
111
- //#endregion
112
- //#region ../node_modules/.bun/@hiai-gg+hiai-ui@0.0.8+3149ccaa93f654b8/node_modules/@hiai-gg/hiai-ui/dist/components/ui/badge/index.js
113
- var j = n({
114
- base: "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
115
- variants: { variant: {
116
- default: "border-transparent bg-primary text-primary-foreground shadow",
117
- secondary: "border-transparent bg-secondary text-secondary-foreground",
118
- destructive: "border-transparent bg-destructive text-destructive-foreground shadow",
119
- outline: "text-foreground"
120
- } },
121
- defaultVariants: { variant: "default" }
122
- }), M = w.from_html("<span class=\"dp-weekday svelte-zmry26\"> </span>"), N = w.from_html("<span class=\"dp-empty svelte-zmry26\"></span>"), P = w.from_html("<button type=\"button\"> </button>"), F = w.from_html("<button type=\"button\" class=\"dp-clear svelte-zmry26\"> </button>"), I = w.from_html("<div class=\"dp-popover svelte-zmry26\" role=\"dialog\"><div class=\"dp-header svelte-zmry26\"><button type=\"button\" class=\"dp-nav svelte-zmry26\"><!></button> <span class=\"dp-title svelte-zmry26\"> </span> <button type=\"button\" class=\"dp-nav svelte-zmry26\"><!></button></div> <div class=\"dp-weekdays svelte-zmry26\"></div> <div class=\"dp-grid svelte-zmry26\"></div> <!></div>"), L = w.from_html("<div class=\"datepicker svelte-zmry26\"><button type=\"button\" aria-haspopup=\"dialog\" class=\"dp-trigger svelte-zmry26\"><!> <span> </span></button> <!></div>");
123
- function R(e, n) {
124
- w.push(n, !0);
125
- let C = w.prop(n, "value", 15, ""), D = w.prop(n, "ariaLabel", 19, () => l()), O = w.prop(n, "placeholder", 19, () => s()), k = w.state(!1), A = w.state(null), j = [
126
- r(),
127
- c(),
128
- f(),
129
- u(),
130
- d(),
131
- o(),
132
- ne()
133
- ], R = [
134
- h(),
135
- S(),
136
- v(),
137
- m(),
138
- b(),
139
- te(),
140
- p(),
141
- _(),
142
- re(),
143
- y(),
144
- x(),
145
- g()
146
- ];
147
- function z(e) {
148
- return String(e).padStart(2, "0");
149
- }
150
- function B(e) {
151
- let t = /^(\d{4})-(\d{2})-(\d{2})$/.exec(e);
152
- return t ? {
153
- y: Number(t[1]),
154
- m: Number(t[2]) - 1,
155
- d: Number(t[3])
156
- } : null;
157
- }
158
- let V = /* @__PURE__ */ new Date(), H = w.state(w.proxy(V.getFullYear())), U = w.state(w.proxy(V.getMonth()));
159
- w.user_effect(() => {
160
- if (w.get(k)) {
161
- let e = B(C());
162
- e && (w.set(H, e.y, !0), w.set(U, e.m, !0));
163
- }
164
- });
165
- let W = w.derived(() => B(C()));
166
- function G() {
167
- let e = (new Date(w.get(H), w.get(U), 1).getDay() + 6) % 7, t = new Date(w.get(H), w.get(U) + 1, 0).getDate(), n = [];
168
- for (let t = 0; t < e; t++) n.push(null);
169
- for (let e = 1; e <= t; e++) n.push(e);
170
- return n;
171
- }
172
- function K(e) {
173
- return e === V.getDate() && w.get(U) === V.getMonth() && w.get(H) === V.getFullYear();
174
- }
175
- function q(e) {
176
- return w.get(W) !== null && w.get(W).y === w.get(H) && w.get(W).m === w.get(U) && w.get(W).d === e;
177
- }
178
- function J(e) {
179
- C(`${w.get(H)}-${z(w.get(U) + 1)}-${z(e)}`), w.set(k, !1), n.onchange?.();
180
- }
181
- function Y() {
182
- C(""), w.set(k, !1), n.onchange?.();
183
- }
184
- function ie() {
185
- w.get(U) === 0 ? (w.set(U, 11), w.set(H, w.get(H) - 1)) : w.set(U, w.get(U) - 1);
186
- }
187
- function ae() {
188
- w.get(U) === 11 ? (w.set(U, 0), w.set(H, w.get(H) + 1)) : w.set(U, w.get(U) + 1);
189
- }
190
- w.user_effect(() => {
191
- if (!w.get(k)) return;
192
- function e(e) {
193
- w.get(A) && !w.get(A).contains(e.target) && w.set(k, !1);
194
- }
195
- function t(e) {
196
- e.key === "Escape" && w.set(k, !1);
197
- }
198
- return document.addEventListener("pointerdown", e), document.addEventListener("keydown", t), () => {
199
- document.removeEventListener("pointerdown", e), document.removeEventListener("keydown", t);
200
- };
201
- });
202
- var X = L(), Z = w.child(X), Q = w.child(Z);
203
- T(Q, { class: "size-3.5 shrink-0 opacity-70" });
204
- var $ = w.sibling(Q, 2), oe = w.child($, !0);
205
- w.reset($), w.reset(Z);
206
- var se = w.sibling(Z, 2), ce = (e) => {
207
- var n = I(), r = w.child(n), o = w.child(r);
208
- E(w.child(o), { class: "size-4" }), w.reset(o);
209
- var s = w.sibling(o, 2), c = w.child(s);
210
- w.reset(s);
211
- var l = w.sibling(s, 2);
212
- t(w.child(l), { class: "size-4" }), w.reset(l), w.reset(r);
213
- var u = w.sibling(r, 2);
214
- w.each(u, 20, () => j, (e) => e, (e, t) => {
215
- var n = M(), r = w.child(n, !0);
216
- w.reset(n), w.template_effect(() => w.set_text(r, t)), w.append(e, n);
217
- }), w.reset(u);
218
- var d = w.sibling(u, 2);
219
- w.each(d, 21, G, w.index, (e, t) => {
220
- var n = w.comment(), r = w.first_child(n), i = (e) => {
221
- var t = N();
222
- w.append(e, t);
223
- }, a = (e) => {
224
- var n = P();
225
- let r;
226
- var i = w.child(n, !0);
227
- w.reset(n), w.template_effect((e) => {
228
- r = w.set_class(n, 1, "dp-day svelte-zmry26", null, r, e), w.set_text(i, w.get(t));
229
- }, [() => ({
230
- selected: q(w.get(t)),
231
- today: K(w.get(t))
232
- })]), w.delegated("click", n, () => J(w.get(t))), w.append(e, n);
233
- };
234
- w.if(r, (e) => {
235
- w.get(t) === null ? e(i) : e(a, -1);
236
- }), w.append(e, n);
237
- }), w.reset(d);
238
- var f = w.sibling(d, 2), p = (e) => {
239
- var t = F(), n = w.child(t, !0);
240
- w.reset(t), w.template_effect((e) => w.set_text(n, e), [() => i()]), w.delegated("click", t, Y), w.append(e, t);
241
- };
242
- w.if(f, (e) => {
243
- C() && e(p);
244
- }), w.reset(n), w.template_effect((e, t) => {
245
- w.set_attribute(n, "aria-label", D()), w.set_attribute(o, "aria-label", e), w.set_text(c, `${R[w.get(U)] ?? ""} ${w.get(H) ?? ""}`), w.set_attribute(l, "aria-label", t);
246
- }, [() => ee(), () => a()]), w.delegated("click", o, ie), w.delegated("click", l, ae), w.append(e, n);
247
- };
248
- w.if(se, (e) => {
249
- w.get(k) && e(ce);
250
- }), w.reset(X), w.bind_this(X, (e) => w.set(A, e), () => w.get(A)), w.template_effect(() => {
251
- w.set_attribute(Z, "id", n.id), w.set_attribute(Z, "aria-label", D()), w.set_attribute(Z, "aria-expanded", w.get(k)), w.set_class($, 1, w.clsx(C() ? "" : "dp-placeholder"), "svelte-zmry26"), w.set_text(oe, C() || O());
252
- }), w.delegated("click", Z, () => w.set(k, !w.get(k))), w.append(e, X), w.pop();
253
- }
254
- w.delegate(["click"]);
255
- //#endregion
256
- export { T as a, E as i, A as n, D as r, R as t };
@@ -1,166 +0,0 @@
1
- import { $n as e, Ar as t, Br as n, Dr as r, Fr as i, Hr as a, Ir as o, Lr as s, Mr as c, Nr as l, Or as u, Pr as d, Rr as f, Ur as p, Vr as m, Zn as h, jr as g, kr as _, or as v, zr as y } from "./messages-DIovIZrK.js";
2
- import { a as b } from "./route-context-DYQlUfzL.js";
3
- import { n as x } from "./share-D7JtkC85.js";
4
- import { h as S, u as C } from "./keyboard.svelte-CApmX0vl.js";
5
- import { t as w } from "./clipboard-Cgzxc0_R.js";
6
- import "svelte/internal/disclose-version";
7
- import * as T from "svelte/internal/client";
8
- //#region src/lib/components/ShareDialog.svelte
9
- var E = T.from_html("<input type=\"password\" class=\"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"/>"), D = T.from_html("<button> </button>"), ee = T.from_html("<span class=\"inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs\"> <button class=\"text-muted-foreground hover:text-foreground\">&times;</button></span>"), te = T.from_html("<div class=\"flex flex-wrap gap-1.5\"></div>"), O = T.from_html("<p class=\"text-xs text-destructive\"> </p>"), k = T.from_html("<div class=\"space-y-4\"><div class=\"flex items-center justify-between\"><span class=\"text-sm font-medium\"> </span> <button role=\"switch\"><span></span></button></div> <!> <div class=\"space-y-2\"><span class=\"text-sm font-medium\"> </span> <div class=\"flex gap-2\"></div></div> <div class=\"space-y-2\"><span class=\"text-sm font-medium\"> </span> <div class=\"flex gap-2\"><input type=\"email\" placeholder=\"guest@email.com\" class=\"flex h-9 flex-1 rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"/> <button class=\"rounded-md border border-border px-3 py-1.5 text-sm font-medium hover:bg-accent\"> </button></div> <!></div> <!> <button class=\"w-full rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50\"> </button></div>"), A = T.from_html("<div class=\"space-y-4\"><p class=\"text-sm text-muted-foreground\"> </p> <div class=\"flex items-center gap-2\"><code class=\"flex-1 truncate rounded-md bg-muted px-3 py-2 text-sm\"> </code> <button class=\"rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90\"> </button></div> <button class=\"w-full rounded-md border border-border px-4 py-2 text-sm font-medium hover:bg-accent\"> </button></div>"), j = T.from_html("<div class=\"fixed inset-0 layer-modal flex items-center justify-center\"><button class=\"absolute inset-0 bg-black/50\"></button> <div class=\"relative z-10 w-full max-w-md rounded-lg border border-border bg-background p-6 shadow-lg\" role=\"dialog\" aria-modal=\"true\"><div class=\"mb-4 flex items-center justify-between\"><h2 class=\"text-lg font-semibold\"> </h2> <button class=\"rounded-md p-1 text-muted-foreground hover:bg-accent hover:text-foreground\">&#10005;</button></div> <!></div></div>");
10
- function M(M, N) {
11
- T.push(N, !0);
12
- let P = T.prop(N, "open", 15, !1), F = T.prop(N, "documentId", 3, ""), I = T.prop(N, "documentTitle", 3, ""), L = T.prop(N, "folderId", 3, ""), R = T.prop(N, "folderName", 3, ""), z = T.prop(N, "categoryId", 3, ""), B = T.prop(N, "categoryName", 3, ""), V = T.state(!1), H = T.state(""), U = T.state("7d"), W = T.state(""), G = T.state(T.proxy([])), K = T.state(""), q = T.state(!1), J = T.state(!1), Y = T.state(""), X = b();
13
- T.user_effect(() => (C({
14
- id: "share-dialog-escape",
15
- keys: "escape",
16
- description: "Close share dialog",
17
- scope: "dialog",
18
- enabled: P(),
19
- overrideInput: !0,
20
- handler: () => {
21
- P() && Q();
22
- }
23
- }), () => {
24
- S("share-dialog-escape");
25
- }));
26
- function Z() {
27
- let e = T.get(W).trim();
28
- e?.includes("@") && !T.get(G).includes(e) && (T.set(G, [...T.get(G), e], !0), T.set(W, ""));
29
- }
30
- function ne(e) {
31
- T.set(G, T.get(G).filter((t) => t !== e), !0);
32
- }
33
- async function re() {
34
- T.set(J, !0), T.set(Y, "");
35
- try {
36
- let e = await x({
37
- documentId: F() || void 0,
38
- folderId: L() || void 0,
39
- categoryId: z() || void 0,
40
- password: T.get(V) ? T.get(H) : void 0,
41
- expiresIn: T.get(U),
42
- guestEmails: T.get(G).length > 0 ? T.get(G) : void 0
43
- }, X.fetch);
44
- T.set(K, `${window.location.origin}/s/${e.token}`);
45
- } catch (e) {
46
- T.set(Y, e instanceof Error ? e.message : v(), !0), console.error("ShareDialog: createShareLink failed", e);
47
- } finally {
48
- T.set(J, !1);
49
- }
50
- }
51
- async function ie() {
52
- T.get(K) && (await w(T.get(K)), T.set(q, !0), setTimeout(() => {
53
- T.set(q, !1);
54
- }, 2e3));
55
- }
56
- function Q() {
57
- P(!1), T.set(K, ""), T.set(V, !1), T.set(H, ""), T.set(U, "7d"), T.set(G, [], !0), T.set(Y, "");
58
- }
59
- var $ = T.comment(), ae = T.first_child($), oe = (v) => {
60
- var b = j(), x = T.child(b), S = T.sibling(x, 2), C = T.child(S), w = T.child(C), M = T.child(w);
61
- T.reset(w);
62
- var N = T.sibling(w, 2);
63
- T.reset(C);
64
- var P = T.sibling(C, 2), F = (e) => {
65
- var r = k(), u = T.child(r), p = T.child(u), h = T.child(p, !0);
66
- T.reset(p);
67
- var _ = T.sibling(p, 2), v = T.child(_);
68
- T.reset(_), T.reset(u);
69
- var b = T.sibling(u, 2), x = (e) => {
70
- var t = E();
71
- T.remove_input_defaults(t), T.template_effect((e) => T.set_attribute(t, "placeholder", e), [() => f()]), T.bind_value(t, () => T.get(H), (e) => T.set(H, e)), T.append(e, t);
72
- };
73
- T.if(b, (e) => {
74
- T.get(V) && e(x);
75
- });
76
- var S = T.sibling(b, 2), C = T.child(S), w = T.child(C, !0);
77
- T.reset(C);
78
- var A = T.sibling(C, 2);
79
- T.each(A, 21, () => [
80
- ["1h", i()],
81
- ["1d", d()],
82
- ["7d", l()],
83
- ["30d", c()],
84
- ["never", o()]
85
- ], T.index, (e, t) => {
86
- var n = T.derived(() => T.to_array(T.get(t), 2));
87
- let r = () => T.get(n)[0], i = () => T.get(n)[1];
88
- var a = D(), o = T.child(a, !0);
89
- T.reset(a), T.template_effect(() => {
90
- T.set_class(a, 1, `rounded-md border px-2.5 py-1 text-xs font-medium transition-colors
91
- ${T.get(U) === r() ? "border-primary bg-primary text-primary-foreground" : "border-border text-muted-foreground hover:bg-accent"}`), T.set_text(o, i());
92
- }), T.delegated("click", a, () => {
93
- T.set(U, r(), !0);
94
- }), T.append(e, a);
95
- }), T.reset(A), T.reset(S);
96
- var j = T.sibling(S, 2), M = T.child(j), N = T.child(M, !0);
97
- T.reset(M);
98
- var P = T.sibling(M, 2), F = T.child(P);
99
- T.remove_input_defaults(F);
100
- var I = T.sibling(F, 2), L = T.child(I, !0);
101
- T.reset(I), T.reset(P);
102
- var R = T.sibling(P, 2), z = (e) => {
103
- var t = te();
104
- T.each(t, 21, () => T.get(G), T.index, (e, t) => {
105
- var n = ee(), r = T.child(n), i = T.sibling(r);
106
- T.reset(n), T.template_effect(() => T.set_text(r, `${T.get(t) ?? ""} `)), T.delegated("click", i, () => ne(T.get(t))), T.append(e, n);
107
- }), T.reset(t), T.append(e, t);
108
- };
109
- T.if(R, (e) => {
110
- T.get(G).length > 0 && e(z);
111
- }), T.reset(j);
112
- var B = T.sibling(j, 2), K = (e) => {
113
- var t = O(), n = T.child(t, !0);
114
- T.reset(t), T.template_effect(() => T.set_text(n, T.get(Y))), T.append(e, t);
115
- };
116
- T.if(B, (e) => {
117
- T.get(Y) && e(K);
118
- });
119
- var q = T.sibling(B, 2), X = T.child(q, !0);
120
- T.reset(q), T.reset(r), T.template_effect((e, t, n, r, i, a) => {
121
- T.set_text(h, e), T.set_class(_, 1, `relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${T.get(V) ? "bg-primary" : "bg-input"}`), T.set_attribute(_, "aria-checked", T.get(V)), T.set_attribute(_, "aria-label", t), T.set_class(v, 1, `inline-block h-4 w-4 rounded-full bg-white shadow transition-transform ${T.get(V) ? "translate-x-4" : "translate-x-0.5"}`), T.set_text(w, n), T.set_text(N, r), T.set_text(L, i), q.disabled = T.get(J), T.set_text(X, a);
122
- }, [
123
- () => n(),
124
- () => y(),
125
- () => s(),
126
- () => g(),
127
- () => t(),
128
- () => T.get(J) ? m() : a()
129
- ]), T.delegated("click", _, () => {
130
- T.set(V, !T.get(V));
131
- }), T.delegated("keydown", F, (e) => {
132
- e.key === "Enter" && (e.preventDefault(), Z());
133
- }), T.bind_value(F, () => T.get(W), (e) => T.set(W, e)), T.delegated("click", I, Z), T.delegated("click", q, re), T.append(e, r);
134
- }, L = (e) => {
135
- var t = A(), n = T.child(t), i = T.child(n, !0);
136
- T.reset(n);
137
- var a = T.sibling(n, 2), o = T.child(a), s = T.child(o, !0);
138
- T.reset(o);
139
- var c = T.sibling(o, 2), l = T.child(c, !0);
140
- T.reset(c), T.reset(a);
141
- var d = T.sibling(a, 2), f = T.child(d, !0);
142
- T.reset(d), T.reset(t), T.template_effect((e, t, n) => {
143
- T.set_text(i, e), T.set_text(s, T.get(K)), T.set_text(l, t), T.set_text(f, n);
144
- }, [
145
- () => r(),
146
- () => T.get(q) ? u() : _(),
147
- () => h()
148
- ]), T.delegated("click", c, ie), T.delegated("click", d, Q), T.append(e, t);
149
- };
150
- T.if(P, (e) => {
151
- T.get(K) ? e(L, -1) : e(F);
152
- }), T.reset(S), T.reset(b), T.template_effect((e, t, n) => {
153
- T.set_attribute(x, "aria-label", e), T.set_text(M, `${t ?? ""} "${(B() || R() || I()) ?? ""}"`), T.set_attribute(N, "aria-label", n);
154
- }, [
155
- () => e(),
156
- () => p(),
157
- () => e()
158
- ]), T.delegated("click", x, Q), T.delegated("click", N, Q), T.append(v, b);
159
- };
160
- T.if(ae, (e) => {
161
- P() && e(oe);
162
- }), T.append(M, $), T.pop();
163
- }
164
- T.delegate(["click", "keydown"]);
165
- //#endregion
166
- export { M as t };
@@ -1,56 +0,0 @@
1
- import { Bn as share_guest_access, Gn as share_expires_never, Hn as share_expires_7d, Jn as share_password_protection, Kn as share_expires, Un as share_expires_1d, Vn as share_expires_30d, Wn as share_expires_1h, Xn as share_create_title, Yn as share_create_link, pn as action_close, qn as share_toggle_password, zn as share_add } from "./messages-D-auzk9H.js";
2
- import { a as getDocsmintRequestAdapter } from "./route-context-BPRerEtZ.js";
3
- import "./keyboard.svelte-BgF47N3L.js";
4
- import * as $ from "svelte/internal/server";
5
- //#region src/lib/components/ShareDialog.svelte
6
- function ShareDialog($$renderer, $$props) {
7
- $$renderer.component(($$renderer) => {
8
- let { open = false, documentId = "", documentTitle = "", folderId = "", folderName = "", categoryId = "", categoryName = "" } = $$props;
9
- let usePassword = false;
10
- let expiresIn = "7d";
11
- let guestEmail = "";
12
- let guestEmails = [];
13
- let creating = false;
14
- getDocsmintRequestAdapter();
15
- if (open) {
16
- $$renderer.push("<!--[0-->");
17
- $$renderer.push(`<div class="fixed inset-0 layer-modal flex items-center justify-center"><button class="absolute inset-0 bg-black/50"${$.attr("aria-label", action_close())}></button> <div class="relative z-10 w-full max-w-md rounded-lg border border-border bg-background p-6 shadow-lg" role="dialog" aria-modal="true"><div class="mb-4 flex items-center justify-between"><h2 class="text-lg font-semibold">${$.escape(share_create_title())} "${$.escape(categoryName || folderName || documentTitle)}"</h2> <button class="rounded-md p-1 text-muted-foreground hover:bg-accent hover:text-foreground"${$.attr("aria-label", action_close())}>✕</button></div> `);
18
- {
19
- $$renderer.push("<!--[0-->");
20
- $$renderer.push(`<div class="space-y-4"><div class="flex items-center justify-between"><span class="text-sm font-medium">${$.escape(share_password_protection())}</span> <button${$.attr_class(`relative inline-flex h-5 w-9 items-center rounded-full transition-colors bg-input`)} role="switch"${$.attr("aria-checked", usePassword)}${$.attr("aria-label", share_toggle_password())}><span${$.attr_class(`inline-block h-4 w-4 rounded-full bg-white shadow transition-transform translate-x-0.5`)}></span></button></div> `);
21
- $$renderer.push("<!--[-1-->");
22
- $$renderer.push(`<!--]--> <div class="space-y-2"><span class="text-sm font-medium">${$.escape(share_expires())}</span> <div class="flex gap-2"><!--[-->`);
23
- const each_array = $.ensure_array_like([
24
- ["1h", share_expires_1h()],
25
- ["1d", share_expires_1d()],
26
- ["7d", share_expires_7d()],
27
- ["30d", share_expires_30d()],
28
- ["never", share_expires_never()]
29
- ]);
30
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
31
- let [val, label] = each_array[$$index];
32
- $$renderer.push(`<button${$.attr_class(`rounded-md border px-2.5 py-1 text-xs font-medium transition-colors ${expiresIn === val ? "border-primary bg-primary text-primary-foreground" : "border-border text-muted-foreground hover:bg-accent"}`)}>${$.escape(label)}</button>`);
33
- }
34
- $$renderer.push(`<!--]--></div></div> <div class="space-y-2"><span class="text-sm font-medium">${$.escape(share_guest_access())}</span> <div class="flex gap-2"><input type="email"${$.attr("value", guestEmail)} placeholder="guest@email.com" class="flex h-9 flex-1 rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"/> <button class="rounded-md border border-border px-3 py-1.5 text-sm font-medium hover:bg-accent">${$.escape(share_add())}</button></div> `);
35
- if (guestEmails.length > 0) {
36
- $$renderer.push("<!--[0-->");
37
- $$renderer.push(`<div class="flex flex-wrap gap-1.5"><!--[-->`);
38
- const each_array_1 = $.ensure_array_like(guestEmails);
39
- for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
40
- let email = each_array_1[$$index_1];
41
- $$renderer.push(`<span class="inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs">${$.escape(email)} <button class="text-muted-foreground hover:text-foreground">×</button></span>`);
42
- }
43
- $$renderer.push(`<!--]--></div>`);
44
- } else $$renderer.push("<!--[-1-->");
45
- $$renderer.push(`<!--]--></div> `);
46
- $$renderer.push("<!--[-1-->");
47
- $$renderer.push(`<!--]--> <button${$.attr("disabled", creating, true)} class="w-full rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50">${$.escape(share_create_link())}</button></div>`);
48
- }
49
- $$renderer.push(`<!--]--></div></div>`);
50
- } else $$renderer.push("<!--[-1-->");
51
- $$renderer.push(`<!--]-->`);
52
- $.bind_props($$props, { open });
53
- });
54
- }
55
- //#endregion
56
- export { ShareDialog as t };