@inkandswitch/patchwork-pkg-base 0.0.99 → 0.0.101

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 (58) hide show
  1. package/module-settings-url +1 -1
  2. package/package.json +1 -1
  3. package/packages/chat/dist/index.js +1 -1
  4. package/packages/comments-view/dist/assets/{main-51fB7vpU.js → main-wSSvAVfi.js} +22 -4
  5. package/packages/comments-view/dist/assets/main-wSSvAVfi.js.map +1 -0
  6. package/packages/comments-view/dist/index.js +3 -3
  7. package/packages/drafts/dist/assets/main-CG9HOCai.js +11 -0
  8. package/packages/embed/dist/assets/{tool-Cg7zrpH9.js → tool-D58NGTZ7.js} +4 -2
  9. package/packages/embed/dist/assets/tool-D58NGTZ7.js.map +1 -0
  10. package/packages/embed/dist/index.js +1 -1
  11. package/packages/folder/dist/index.js +1 -1
  12. package/packages/folder/dist/{tool-JSQNX2I6.js → tool-WAWTPB4A.js} +2 -2
  13. package/packages/folder/dist/{tool-JSQNX2I6.js.map → tool-WAWTPB4A.js.map} +1 -1
  14. package/packages/history-view/dist/assets/{HistoryTimeline-OAiVykO2.js → HistoryTimeline-COYNGORP.js} +4 -4
  15. package/packages/history-view/dist/assets/{HistoryTimeline-OAiVykO2.js.map → HistoryTimeline-COYNGORP.js.map} +1 -1
  16. package/packages/history-view/dist/assets/{index-CWHr7XoV.js → index-C1gYt7m5.js} +2 -2
  17. package/packages/history-view/dist/assets/{index-CWHr7XoV.js.map → index-C1gYt7m5.js.map} +1 -1
  18. package/packages/history-view/dist/index.js +1 -1
  19. package/packages/llm-host/dist/LlmConfigTray-DdZHZT4F.js +615 -0
  20. package/packages/llm-host/dist/index.js +1 -1
  21. package/packages/packages/dist/index.js +17 -0
  22. package/packages/patternwitch/tool.js +21 -0
  23. package/packages/sideboard/dist/{chunk-QLI3ZN4W.js → chunk-73XN2I2U.js} +3 -3
  24. package/packages/sideboard/dist/chunk-NS3ADG2Z.js +2 -0
  25. package/packages/sideboard/dist/chunk-NS3ADG2Z.js.map +7 -0
  26. package/packages/sideboard/dist/{chunk-3HE5SPGR.js → chunk-OFWMAVKQ.js} +2 -2
  27. package/packages/sideboard/dist/{create-new-menu-PDAHMB7O.js → create-new-menu-4VNS2UFI.js} +2 -2
  28. package/packages/sideboard/dist/document-list-panel-SCICIJCF.js +2 -0
  29. package/packages/sideboard/dist/index.css +1 -1
  30. package/packages/sideboard/dist/index.css.map +2 -2
  31. package/packages/sideboard/dist/index.js +1 -1
  32. package/packages/sideboard/dist/{item-menu-VIMMKF26.js → item-menu-3JUJN3MS.js} +2 -2
  33. package/packages/sideboard/dist/sideboard/sideboard.js +1 -1
  34. package/packages/sync-indicator/dist/assets/SyncIndicator-B2ag1OoZ.js +1 -1
  35. package/packages/theming/dist/{active-theme-ZEJCS5RM.js → active-theme-BMSIQXBV.js} +2 -2
  36. package/packages/theming/dist/{chunk-FLDRNDLY.js → chunk-Z3JB7ERH.js} +2 -2
  37. package/packages/theming/dist/main.js +3 -3
  38. package/packages/theming/dist/{theme-L3L6DYF3.css → theme-7OG2K56L.css} +2 -0
  39. package/packages/theming/dist/{theme-titlebar-HAEXLVMW.js → theme-titlebar-YIFJINPJ.js} +2 -2
  40. package/packages/theming/dist/{theme-tray-XYB4LGZ6.js → theme-tray-7J247NRY.js} +33 -13
  41. package/packages/theming/dist/theme-tray-7J247NRY.js.map +7 -0
  42. package/packages/theming/dist/tool.js +1 -1
  43. package/plugin-registry-url +1 -1
  44. package/packages/comments-view/dist/assets/main-51fB7vpU.js.map +0 -1
  45. package/packages/embed/dist/assets/tool-Cg7zrpH9.js.map +0 -1
  46. package/packages/llm-host/dist/LlmConfigTray-CkM9XUX1.js +0 -600
  47. package/packages/sideboard/dist/chunk-6LWWNFKU.js +0 -2
  48. package/packages/sideboard/dist/chunk-6LWWNFKU.js.map +0 -7
  49. package/packages/sideboard/dist/document-list-panel-C7R2SL7S.js +0 -2
  50. package/packages/theming/dist/theme-tray-XYB4LGZ6.js.map +0 -7
  51. /package/packages/sideboard/dist/{chunk-QLI3ZN4W.js.map → chunk-73XN2I2U.js.map} +0 -0
  52. /package/packages/sideboard/dist/{chunk-3HE5SPGR.js.map → chunk-OFWMAVKQ.js.map} +0 -0
  53. /package/packages/sideboard/dist/{create-new-menu-PDAHMB7O.js.map → create-new-menu-4VNS2UFI.js.map} +0 -0
  54. /package/packages/sideboard/dist/{document-list-panel-C7R2SL7S.js.map → document-list-panel-SCICIJCF.js.map} +0 -0
  55. /package/packages/sideboard/dist/{item-menu-VIMMKF26.js.map → item-menu-3JUJN3MS.js.map} +0 -0
  56. /package/packages/theming/dist/{active-theme-ZEJCS5RM.js.map → active-theme-BMSIQXBV.js.map} +0 -0
  57. /package/packages/theming/dist/{chunk-FLDRNDLY.js.map → chunk-Z3JB7ERH.js.map} +0 -0
  58. /package/packages/theming/dist/{theme-titlebar-HAEXLVMW.js.map → theme-titlebar-YIFJINPJ.js.map} +0 -0
@@ -99,7 +99,7 @@ const plugins = [
99
99
  } = await __vitePreload(async () => {
100
100
  const {
101
101
  renderHistoryTimeline: renderHistoryTimeline2
102
- } = await import("./HistoryTimeline-OAiVykO2.js");
102
+ } = await import("./HistoryTimeline-COYNGORP.js");
103
103
  return {
104
104
  renderHistoryTimeline: renderHistoryTimeline2
105
105
  };
@@ -112,4 +112,4 @@ export {
112
112
  __vitePreload as _,
113
113
  plugins as p
114
114
  };
115
- //# sourceMappingURL=index-CWHr7XoV.js.map
115
+ //# sourceMappingURL=index-C1gYt7m5.js.map
@@ -1 +1 @@
1
- {"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAMA,UAAyB;AAAA,EACpC;AAAA,IACEC,MAAM;AAAA,IACNC,IAAI;AAAA,IACJC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,UAAU;AAAA,IACV,MAAMC,OAAO;AACX,aAAO;AAAA,QACLC,MAAMA,CAACC,QAA6B;AAClC,cAAI,CAACA,IAAIC,kBAAmB;AAC5BC,iBAAOC,OAAOH,KAAK;AAAA,YACjB,CAAC,YAAY,GAAG;AAAA,cAAEP,MAAM;AAAA;AAAA,YACxBW,SAASJ,IAAII,WAAW;AAAA,YACxBH,mBAAmBD,IAAIC;AAAAA,YACvBI,WAAWL,IAAIK,aAAa;AAAA,YAC5BC,YAAYN,IAAIM,cAAc,KAAK,KAAK;AAAA,YACxCC,OAAOP,IAAIO,SAAS;AAAA,YACpBC,WAAWR,IAAIQ,aAAa;AAAA,UAAC,CACP;AAAA,QAC1B;AAAA,QACAC,UAAUA,CAACT,QAA6B;AACtC,iBAAO,6BAA6BA,IAAIC,iBAAiB;AAAA,QAC3D;AAAA;AAAA,IAEJ;AAAA;AAAA;AAAA;AAAA,EAIF;AAAA,IACER,MAAM;AAAA,IACNC,IAAI;AAAA,IACJgB,MAAM,CAAC,cAAc;AAAA,IACrBf,MAAM;AAAA,IACNC,MAAM;AAAA,IACN,MAAME,OAAO;AACX,YAAM;AAAA,QAAEa;AAAAA,UAA0B;AAAA;AAAA;QAAM,iBAAO,+BAA2B;AAAA;AAAA;QAAA;AAAA;AAC1E,aAAOA;AAAAA,IACT;AAAA;AACD","names":["plugins","type","id","name","icon","unlisted","load","init","doc","sourceDocumentUrl","Object","assign","version","updatedAt","throttleMs","heads","groupings","getTitle","tags","renderHistoryTimeline"],"ignoreList":[],"sources":["../../src/index.tsx"],"sourcesContent":["import { Plugin } from \"@inkandswitch/patchwork-plugins\";\nimport { HistoryGroupingsDoc } from \"./types\";\n\nexport const plugins: Plugin<any>[] = [\n {\n type: \"patchwork:datatype\",\n id: \"patchwork:history-change-groups\",\n name: \"Document History Change Groups\",\n icon: \"History\",\n unlisted: true,\n async load() {\n return {\n init: (doc: HistoryGroupingsDoc) => {\n if (!doc.sourceDocumentUrl) return;\n Object.assign(doc, {\n [\"@patchwork\"]: { type: \"patchwork:history-change-groups\" },\n version: doc.version || 1,\n sourceDocumentUrl: doc.sourceDocumentUrl,\n updatedAt: doc.updatedAt || 0,\n throttleMs: doc.throttleMs || 30 * 60 * 1000,\n heads: doc.heads || [],\n groupings: doc.groupings || {},\n } as HistoryGroupingsDoc);\n },\n getTitle: (doc: HistoryGroupingsDoc) => {\n return `History Change Groups for ${doc.sourceDocumentUrl}`;\n },\n };\n },\n },\n // A `patchwork:component` that takes no document: the view reads everything\n // off `element`, so it can be slotted in without an account doc.\n {\n type: \"patchwork:component\",\n id: \"history-view\",\n tags: [\"context-tool\"],\n name: \"History\",\n icon: \"History\",\n async load() {\n const { renderHistoryTimeline } = await import(\"./history/HistoryTimeline\");\n return renderHistoryTimeline;\n },\n },\n];\n"],"file":"index-CWHr7XoV.js"}
1
+ {"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAMA,UAAyB;AAAA,EACpC;AAAA,IACEC,MAAM;AAAA,IACNC,IAAI;AAAA,IACJC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,UAAU;AAAA,IACV,MAAMC,OAAO;AACX,aAAO;AAAA,QACLC,MAAMA,CAACC,QAA6B;AAClC,cAAI,CAACA,IAAIC,kBAAmB;AAC5BC,iBAAOC,OAAOH,KAAK;AAAA,YACjB,CAAC,YAAY,GAAG;AAAA,cAAEP,MAAM;AAAA;AAAA,YACxBW,SAASJ,IAAII,WAAW;AAAA,YACxBH,mBAAmBD,IAAIC;AAAAA,YACvBI,WAAWL,IAAIK,aAAa;AAAA,YAC5BC,YAAYN,IAAIM,cAAc,KAAK,KAAK;AAAA,YACxCC,OAAOP,IAAIO,SAAS;AAAA,YACpBC,WAAWR,IAAIQ,aAAa;AAAA,UAAC,CACP;AAAA,QAC1B;AAAA,QACAC,UAAUA,CAACT,QAA6B;AACtC,iBAAO,6BAA6BA,IAAIC,iBAAiB;AAAA,QAC3D;AAAA;AAAA,IAEJ;AAAA;AAAA;AAAA;AAAA,EAIF;AAAA,IACER,MAAM;AAAA,IACNC,IAAI;AAAA,IACJgB,MAAM,CAAC,cAAc;AAAA,IACrBf,MAAM;AAAA,IACNC,MAAM;AAAA,IACN,MAAME,OAAO;AACX,YAAM;AAAA,QAAEa;AAAAA,UAA0B;AAAA;AAAA;QAAM,iBAAO,+BAA2B;AAAA;AAAA;QAAA;AAAA;AAC1E,aAAOA;AAAAA,IACT;AAAA;AACD","names":["plugins","type","id","name","icon","unlisted","load","init","doc","sourceDocumentUrl","Object","assign","version","updatedAt","throttleMs","heads","groupings","getTitle","tags","renderHistoryTimeline"],"ignoreList":[],"sources":["../../src/index.tsx"],"sourcesContent":["import { Plugin } from \"@inkandswitch/patchwork-plugins\";\nimport { HistoryGroupingsDoc } from \"./types\";\n\nexport const plugins: Plugin<any>[] = [\n {\n type: \"patchwork:datatype\",\n id: \"patchwork:history-change-groups\",\n name: \"Document History Change Groups\",\n icon: \"History\",\n unlisted: true,\n async load() {\n return {\n init: (doc: HistoryGroupingsDoc) => {\n if (!doc.sourceDocumentUrl) return;\n Object.assign(doc, {\n [\"@patchwork\"]: { type: \"patchwork:history-change-groups\" },\n version: doc.version || 1,\n sourceDocumentUrl: doc.sourceDocumentUrl,\n updatedAt: doc.updatedAt || 0,\n throttleMs: doc.throttleMs || 30 * 60 * 1000,\n heads: doc.heads || [],\n groupings: doc.groupings || {},\n } as HistoryGroupingsDoc);\n },\n getTitle: (doc: HistoryGroupingsDoc) => {\n return `History Change Groups for ${doc.sourceDocumentUrl}`;\n },\n };\n },\n },\n // A `patchwork:component` that takes no document: the view reads everything\n // off `element`, so it can be slotted in without an account doc.\n {\n type: \"patchwork:component\",\n id: \"history-view\",\n tags: [\"context-tool\"],\n name: \"History\",\n icon: \"History\",\n async load() {\n const { renderHistoryTimeline } = await import(\"./history/HistoryTimeline\");\n return renderHistoryTimeline;\n },\n },\n];\n"],"file":"index-C1gYt7m5.js"}
@@ -1,4 +1,4 @@
1
- import { p } from "./assets/index-CWHr7XoV.js";
1
+ import { p } from "./assets/index-C1gYt7m5.js";
2
2
  export {
3
3
  p as plugins
4
4
  };
@@ -0,0 +1,615 @@
1
+ const xe = (e, t) => e === t, B = {
2
+ equals: xe
3
+ };
4
+ let fe = ge;
5
+ const E = 1, H = 2, ae = {
6
+ owned: null,
7
+ cleanups: null,
8
+ context: null,
9
+ owner: null
10
+ };
11
+ var a = null;
12
+ let F = null, Ee = null, f = null, m = null, x = null, I = 0;
13
+ function de(e, t) {
14
+ const n = f, o = a, s = e.length === 0, r = t === void 0 ? o : t, l = s ? ae : {
15
+ owned: null,
16
+ cleanups: null,
17
+ context: r ? r.context : null,
18
+ owner: r
19
+ }, i = s ? e : () => e(() => C(() => L(l)));
20
+ a = l, f = null;
21
+ try {
22
+ return T(i, !0);
23
+ } finally {
24
+ f = n, a = o;
25
+ }
26
+ }
27
+ function $(e, t) {
28
+ t = t ? Object.assign({}, B, t) : B;
29
+ const n = {
30
+ value: e,
31
+ observers: null,
32
+ observerSlots: null,
33
+ comparator: t.equals || void 0
34
+ }, o = (s) => (typeof s == "function" && (s = s(n.value)), pe(n, s));
35
+ return [he.bind(n), o];
36
+ }
37
+ function D(e, t, n) {
38
+ const o = K(e, t, !1, E);
39
+ N(o);
40
+ }
41
+ function Se(e, t, n) {
42
+ fe = Pe;
43
+ const o = K(e, t, !1, E);
44
+ n || (o.user = !0), x ? x.push(o) : N(o);
45
+ }
46
+ function _(e, t, n) {
47
+ n = n ? Object.assign({}, B, n) : B;
48
+ const o = K(e, t, !0, 0);
49
+ return o.observers = null, o.observerSlots = null, o.comparator = n.equals || void 0, N(o), he.bind(o);
50
+ }
51
+ function C(e) {
52
+ if (f === null) return e();
53
+ const t = f;
54
+ f = null;
55
+ try {
56
+ return e();
57
+ } finally {
58
+ f = t;
59
+ }
60
+ }
61
+ function re(e) {
62
+ return a === null || (a.cleanups === null ? a.cleanups = [e] : a.cleanups.push(e)), e;
63
+ }
64
+ function Ce() {
65
+ return a;
66
+ }
67
+ function ke(e, t) {
68
+ const n = a, o = f;
69
+ a = e, f = null;
70
+ try {
71
+ return T(t, !0);
72
+ } catch (s) {
73
+ Q(s);
74
+ } finally {
75
+ a = n, f = o;
76
+ }
77
+ }
78
+ function he() {
79
+ if (this.sources && this.state)
80
+ if (this.state === E) N(this);
81
+ else {
82
+ const e = m;
83
+ m = null, T(() => U(this), !1), m = e;
84
+ }
85
+ if (f) {
86
+ const e = this.observers;
87
+ if (!e || e[e.length - 1] !== f) {
88
+ const t = e ? e.length : 0;
89
+ f.sources ? (f.sources.push(this), f.sourceSlots.push(t)) : (f.sources = [this], f.sourceSlots = [t]), e ? (e.push(f), this.observerSlots.push(f.sources.length - 1)) : (this.observers = [f], this.observerSlots = [f.sources.length - 1]);
90
+ }
91
+ }
92
+ return this.value;
93
+ }
94
+ function pe(e, t, n) {
95
+ let o = e.value;
96
+ return (!e.comparator || !e.comparator(o, t)) && (e.value = t, e.observers && e.observers.length && T(() => {
97
+ for (let s = 0; s < e.observers.length; s += 1) {
98
+ const r = e.observers[s], l = F && F.running;
99
+ l && F.disposed.has(r), (l ? !r.tState : !r.state) && (r.pure ? m.push(r) : x.push(r), r.observers && me(r)), l || (r.state = E);
100
+ }
101
+ if (m.length > 1e6)
102
+ throw m = [], new Error();
103
+ }, !1)), t;
104
+ }
105
+ function N(e) {
106
+ if (!e.fn) return;
107
+ L(e);
108
+ const t = I;
109
+ Ae(e, e.value, t);
110
+ }
111
+ function Ae(e, t, n) {
112
+ let o;
113
+ const s = a, r = f;
114
+ f = a = e;
115
+ try {
116
+ o = e.fn(t);
117
+ } catch (l) {
118
+ return e.pure && (e.state = E, e.owned && e.owned.forEach(L), e.owned = null), e.updatedAt = n + 1, Q(l);
119
+ } finally {
120
+ f = r, a = s;
121
+ }
122
+ (!e.updatedAt || e.updatedAt <= n) && (e.updatedAt != null && "observers" in e ? pe(e, o) : e.value = o, e.updatedAt = n);
123
+ }
124
+ function K(e, t, n, o = E, s) {
125
+ const r = {
126
+ fn: e,
127
+ state: o,
128
+ updatedAt: null,
129
+ owned: null,
130
+ sources: null,
131
+ sourceSlots: null,
132
+ cleanups: null,
133
+ value: t,
134
+ owner: a,
135
+ context: a ? a.context : null,
136
+ pure: n
137
+ };
138
+ return a === null || a !== ae && (a.owned ? a.owned.push(r) : a.owned = [r]), r;
139
+ }
140
+ function V(e) {
141
+ if (e.state === 0) return;
142
+ if (e.state === H) return U(e);
143
+ if (e.suspense && C(e.suspense.inFallback)) return e.suspense.effects.push(e);
144
+ const t = [e];
145
+ for (; (e = e.owner) && (!e.updatedAt || e.updatedAt < I); )
146
+ e.state && t.push(e);
147
+ for (let n = t.length - 1; n >= 0; n--)
148
+ if (e = t[n], e.state === E)
149
+ N(e);
150
+ else if (e.state === H) {
151
+ const o = m;
152
+ m = null, T(() => U(e, t[0]), !1), m = o;
153
+ }
154
+ }
155
+ function T(e, t) {
156
+ if (m) return e();
157
+ let n = !1;
158
+ t || (m = []), x ? n = !0 : x = [], I++;
159
+ try {
160
+ const o = e();
161
+ return Te(n), o;
162
+ } catch (o) {
163
+ n || (x = null), m = null, Q(o);
164
+ }
165
+ }
166
+ function Te(e) {
167
+ if (m && (ge(m), m = null), e) return;
168
+ const t = x;
169
+ x = null, t.length && T(() => fe(t), !1);
170
+ }
171
+ function ge(e) {
172
+ for (let t = 0; t < e.length; t++) V(e[t]);
173
+ }
174
+ function Pe(e) {
175
+ let t, n = 0;
176
+ for (t = 0; t < e.length; t++) {
177
+ const o = e[t];
178
+ o.user ? e[n++] = o : V(o);
179
+ }
180
+ for (t = 0; t < n; t++) V(e[t]);
181
+ }
182
+ function U(e, t) {
183
+ e.state = 0;
184
+ for (let n = 0; n < e.sources.length; n += 1) {
185
+ const o = e.sources[n];
186
+ if (o.sources) {
187
+ const s = o.state;
188
+ s === E ? o !== t && (!o.updatedAt || o.updatedAt < I) && V(o) : s === H && U(o, t);
189
+ }
190
+ }
191
+ }
192
+ function me(e) {
193
+ for (let t = 0; t < e.observers.length; t += 1) {
194
+ const n = e.observers[t];
195
+ n.state || (n.state = H, n.pure ? m.push(n) : x.push(n), n.observers && me(n));
196
+ }
197
+ }
198
+ function L(e) {
199
+ let t;
200
+ if (e.sources)
201
+ for (; e.sources.length; ) {
202
+ const n = e.sources.pop(), o = e.sourceSlots.pop(), s = n.observers;
203
+ if (s && s.length) {
204
+ const r = s.pop(), l = n.observerSlots.pop();
205
+ o < s.length && (r.sourceSlots[l] = o, s[o] = r, n.observerSlots[o] = l);
206
+ }
207
+ }
208
+ if (e.tOwned) {
209
+ for (t = e.tOwned.length - 1; t >= 0; t--) L(e.tOwned[t]);
210
+ delete e.tOwned;
211
+ }
212
+ if (e.owned) {
213
+ for (t = e.owned.length - 1; t >= 0; t--) L(e.owned[t]);
214
+ e.owned = null;
215
+ }
216
+ if (e.cleanups) {
217
+ for (t = e.cleanups.length - 1; t >= 0; t--) e.cleanups[t]();
218
+ e.cleanups = null;
219
+ }
220
+ e.state = 0;
221
+ }
222
+ function $e(e) {
223
+ return e instanceof Error ? e : new Error(typeof e == "string" ? e : "Unknown error", {
224
+ cause: e
225
+ });
226
+ }
227
+ function Q(e, t = a) {
228
+ throw $e(e);
229
+ }
230
+ function le(e, t) {
231
+ return C(() => e(t || {}));
232
+ }
233
+ const Le = (e) => `Stale read from <${e}>.`;
234
+ function Ne(e) {
235
+ const t = e.keyed, n = _(() => e.when, void 0, void 0), o = t ? n : _(n, void 0, {
236
+ equals: (s, r) => !s == !r
237
+ });
238
+ return _(() => {
239
+ const s = o();
240
+ if (s) {
241
+ const r = e.children;
242
+ return typeof r == "function" && r.length > 0 ? C(() => r(t ? s : () => {
243
+ if (!C(o)) throw Le("Show");
244
+ return n();
245
+ })) : r;
246
+ }
247
+ return e.fallback;
248
+ }, void 0, void 0);
249
+ }
250
+ function Me(e, t, n) {
251
+ let o = n.length, s = t.length, r = o, l = 0, i = 0, c = t[s - 1].nextSibling, h = null;
252
+ for (; l < s || i < r; ) {
253
+ if (t[l] === n[i]) {
254
+ l++, i++;
255
+ continue;
256
+ }
257
+ for (; t[s - 1] === n[r - 1]; )
258
+ s--, r--;
259
+ if (s === l) {
260
+ const p = r < o ? i ? n[i - 1].nextSibling : n[r - i] : c;
261
+ for (; i < r; ) e.insertBefore(n[i++], p);
262
+ } else if (r === i)
263
+ for (; l < s; )
264
+ (!h || !h.has(t[l])) && t[l].remove(), l++;
265
+ else if (t[l] === n[r - 1] && n[i] === t[s - 1]) {
266
+ const p = t[--s].nextSibling;
267
+ e.insertBefore(n[i++], t[l++].nextSibling), e.insertBefore(n[--r], p), t[s] = n[r];
268
+ } else {
269
+ if (!h) {
270
+ h = /* @__PURE__ */ new Map();
271
+ let v = i;
272
+ for (; v < r; ) h.set(n[v], v++);
273
+ }
274
+ const p = h.get(t[l]);
275
+ if (p != null)
276
+ if (i < p && p < r) {
277
+ let v = l, b = 1, S;
278
+ for (; ++v < s && v < r && !((S = h.get(t[v])) == null || S !== p + b); )
279
+ b++;
280
+ if (b > p - i) {
281
+ const R = t[l];
282
+ for (; i < p; ) e.insertBefore(n[i++], R);
283
+ } else e.replaceChild(n[i++], t[l++]);
284
+ } else l++;
285
+ else t[l++].remove();
286
+ }
287
+ }
288
+ }
289
+ const ce = "_$DX_DELEGATE";
290
+ function Oe(e, t, n, o = {}) {
291
+ let s;
292
+ return de((r) => {
293
+ s = r, t === document ? e() : j(t, e(), t.firstChild ? null : void 0, n);
294
+ }, o.owner), () => {
295
+ s(), t.textContent = "";
296
+ };
297
+ }
298
+ function we(e, t, n, o) {
299
+ let s;
300
+ const r = () => {
301
+ const i = o ? document.createElementNS("http://www.w3.org/1998/Math/MathML", "template") : document.createElement("template");
302
+ return i.innerHTML = e, n ? i.content.firstChild.firstChild : o ? i.firstChild : i.content.firstChild;
303
+ }, l = t ? () => C(() => document.importNode(s || (s = r()), !0)) : () => (s || (s = r())).cloneNode(!0);
304
+ return l.cloneNode = l, l;
305
+ }
306
+ function _e(e, t = window.document) {
307
+ const n = t[ce] || (t[ce] = /* @__PURE__ */ new Set());
308
+ for (let o = 0, s = e.length; o < s; o++) {
309
+ const r = e[o];
310
+ n.has(r) || (n.add(r), t.addEventListener(r, He));
311
+ }
312
+ }
313
+ function Be(e, t, n) {
314
+ n == null ? e.removeAttribute(t) : e.setAttribute(t, n);
315
+ }
316
+ function P(e, t, n) {
317
+ n != null ? e.style.setProperty(t, n) : e.style.removeProperty(t);
318
+ }
319
+ function q(e, t, n) {
320
+ return C(() => e(t, n));
321
+ }
322
+ function j(e, t, n, o) {
323
+ if (n !== void 0 && !o && (o = []), typeof t != "function") return G(e, t, o, n);
324
+ D((s) => G(e, t(), s, n), o);
325
+ }
326
+ function He(e) {
327
+ let t = e.target;
328
+ const n = `$$${e.type}`, o = e.target, s = e.currentTarget, r = (c) => Object.defineProperty(e, "target", {
329
+ configurable: !0,
330
+ value: c
331
+ }), l = () => {
332
+ const c = t[n];
333
+ if (c && !t.disabled) {
334
+ const h = t[`${n}Data`];
335
+ if (h !== void 0 ? c.call(t, h, e) : c.call(t, e), e.cancelBubble) return;
336
+ }
337
+ return t.host && typeof t.host != "string" && !t.host._$host && t.contains(e.target) && r(t.host), !0;
338
+ }, i = () => {
339
+ for (; l() && (t = t._$host || t.parentNode || t.host); ) ;
340
+ };
341
+ if (Object.defineProperty(e, "currentTarget", {
342
+ configurable: !0,
343
+ get() {
344
+ return t || document;
345
+ }
346
+ }), e.composedPath) {
347
+ const c = e.composedPath();
348
+ r(c[0]);
349
+ for (let h = 0; h < c.length - 2 && (t = c[h], !!l()); h++) {
350
+ if (t._$host) {
351
+ t = t._$host, i();
352
+ break;
353
+ }
354
+ if (t.parentNode === s)
355
+ break;
356
+ }
357
+ } else i();
358
+ r(o);
359
+ }
360
+ function G(e, t, n, o, s) {
361
+ for (; typeof n == "function"; ) n = n();
362
+ if (t === n) return n;
363
+ const r = typeof t, l = o !== void 0;
364
+ if (e = l && n[0] && n[0].parentNode || e, r === "string" || r === "number") {
365
+ if (r === "number" && (t = t.toString(), t === n))
366
+ return n;
367
+ if (l) {
368
+ let i = n[0];
369
+ i && i.nodeType === 3 ? i.data !== t && (i.data = t) : i = document.createTextNode(t), n = A(e, n, o, i);
370
+ } else
371
+ n !== "" && typeof n == "string" ? n = e.firstChild.data = t : n = e.textContent = t;
372
+ } else if (t == null || r === "boolean")
373
+ n = A(e, n, o);
374
+ else {
375
+ if (r === "function")
376
+ return D(() => {
377
+ let i = t();
378
+ for (; typeof i == "function"; ) i = i();
379
+ n = G(e, i, n, o);
380
+ }), () => n;
381
+ if (Array.isArray(t)) {
382
+ const i = [], c = n && Array.isArray(n);
383
+ if (W(i, t, n, s))
384
+ return D(() => n = G(e, i, n, o, !0)), () => n;
385
+ if (i.length === 0) {
386
+ if (n = A(e, n, o), l) return n;
387
+ } else c ? n.length === 0 ? ue(e, i, o) : Me(e, n, i) : (n && A(e), ue(e, i));
388
+ n = i;
389
+ } else if (t.nodeType) {
390
+ if (Array.isArray(n)) {
391
+ if (l) return n = A(e, n, o, t);
392
+ A(e, n, null, t);
393
+ } else n == null || n === "" || !e.firstChild ? e.appendChild(t) : e.replaceChild(t, e.firstChild);
394
+ n = t;
395
+ }
396
+ }
397
+ return n;
398
+ }
399
+ function W(e, t, n, o) {
400
+ let s = !1;
401
+ for (let r = 0, l = t.length; r < l; r++) {
402
+ let i = t[r], c = n && n[e.length], h;
403
+ if (!(i == null || i === !0 || i === !1)) if ((h = typeof i) == "object" && i.nodeType)
404
+ e.push(i);
405
+ else if (Array.isArray(i))
406
+ s = W(e, i, c) || s;
407
+ else if (h === "function")
408
+ if (o) {
409
+ for (; typeof i == "function"; ) i = i();
410
+ s = W(e, Array.isArray(i) ? i : [i], Array.isArray(c) ? c : [c]) || s;
411
+ } else
412
+ e.push(i), s = !0;
413
+ else {
414
+ const p = String(i);
415
+ c && c.nodeType === 3 && c.data === p ? e.push(c) : e.push(document.createTextNode(p));
416
+ }
417
+ }
418
+ return s;
419
+ }
420
+ function ue(e, t, n = null) {
421
+ for (let o = 0, s = t.length; o < s; o++) e.insertBefore(t[o], n);
422
+ }
423
+ function A(e, t, n, o) {
424
+ if (n === void 0) return e.textContent = "";
425
+ const s = o || document.createTextNode("");
426
+ if (t.length) {
427
+ let r = !1;
428
+ for (let l = t.length - 1; l >= 0; l--) {
429
+ const i = t[l];
430
+ if (s !== i) {
431
+ const c = i.parentNode === e;
432
+ !r && !l ? c ? e.replaceChild(s, i) : e.insertBefore(s, n) : c && i.remove();
433
+ } else r = !0;
434
+ }
435
+ } else e.insertBefore(s, n);
436
+ return [s];
437
+ }
438
+ const De = "http://www.w3.org/2000/svg";
439
+ function Ve(e, t = !1, n = void 0) {
440
+ return t ? document.createElementNS(De, e) : document.createElement(e, {
441
+ is: n
442
+ });
443
+ }
444
+ function Ue(e) {
445
+ const {
446
+ useShadow: t
447
+ } = e, n = document.createTextNode(""), o = () => e.mount || document.body, s = Ce();
448
+ let r;
449
+ return Se(() => {
450
+ r || (r = ke(s, () => _(() => e.children)));
451
+ const l = o();
452
+ if (l instanceof HTMLHeadElement) {
453
+ const [i, c] = $(!1), h = () => c(!0);
454
+ de((p) => j(l, () => i() ? p() : r(), null)), re(h);
455
+ } else {
456
+ const i = Ve(e.isSVG ? "g" : "div", e.isSVG), c = t && i.attachShadow ? i.attachShadow({
457
+ mode: "open"
458
+ }) : i;
459
+ Object.defineProperty(i, "_$host", {
460
+ get() {
461
+ return n.parentNode;
462
+ },
463
+ configurable: !0
464
+ }), j(c, r), l.appendChild(i), e.ref && e.ref(i), re(() => l.contains(i) && l.removeChild(i));
465
+ }
466
+ }, void 0, {}), n;
467
+ }
468
+ var je = /* @__PURE__ */ we("<div class=llm-config-tray-popover><div>"), Ge = /* @__PURE__ */ we('<div class=llm-config-tray><button class=llm-config-tray-button title="LLM model &amp; config"aria-label="LLM model &amp; config"><svg class=llm-config-tray-robot viewBox="0 0 16 16"width=14 height=14 fill=none stroke=currentColor stroke-width=1.25 stroke-linecap=round aria-hidden=true><path d="M8 2.75V4.5"></path><circle cx=8 cy=2 r=0.9 fill=currentColor stroke=none></circle><rect x=2.75 y=4.5 width=10.5 height=8.5 rx=2.25></rect><path d="M1.25 7.75v2.5M14.75 7.75v2.5"></path><circle cx=6 cy=8.25 r=1 fill=currentColor stroke=none></circle><circle cx=10 cy=8.25 r=1 fill=currentColor stroke=none></circle><path d="M6.5 10.75h3">');
469
+ const Ie = () => import("./patchwork-llm-h1ZevlV6.js");
470
+ function Re(e) {
471
+ const t = document.createElement("style");
472
+ t.textContent = `
473
+ .llm-config-tray { position: relative; display: inline-flex; align-items: center; }
474
+ .llm-config-tray-button {
475
+ display: inline-flex; align-items: center; gap: var(--studio-space-2xs, 0.25rem);
476
+ height: 1.75rem; padding: 0 var(--studio-space-xs, 0.375rem);
477
+ border: 1px solid var(--studio-chrome-offset-20, var(--studio-fill-offset-20, #d4d4d4));
478
+ border-radius: var(--studio-radius-sm, 4px);
479
+ background: var(--studio-chrome, var(--studio-fill, white));
480
+ color: var(--studio-chrome-line, var(--studio-line, black));
481
+ font: 500 0.75rem/1 var(--studio-family-sans, system-ui, sans-serif); cursor: pointer;
482
+ }
483
+ .llm-config-tray-button:hover {
484
+ background: var(--studio-chrome-offset-10, var(--studio-fill-offset-10, #f2f2f2));
485
+ }
486
+ .llm-config-tray-popover {
487
+ position: fixed; z-index: 2147483000; box-sizing: border-box;
488
+ max-width: min(92vw, 520px); max-height: 80vh; overflow: auto;
489
+ background: var(--studio-fill, white); color: var(--studio-line, black);
490
+ border: 1px solid var(--studio-fill-offset-20, #d4d4d4);
491
+ border-radius: var(--studio-radius-md, 8px);
492
+ box-shadow: var(--studio-shadow-lg, 0 8px 32px rgba(0,0,0,0.24));
493
+ padding: var(--studio-space-sm, 0.5rem);
494
+ /* Grow out of the tray button. \`scale\`, not \`transform\`: the inline
495
+ transform flips the popover above the button. Closing is instant. */
496
+ transform-origin: top right;
497
+ transition:
498
+ opacity 150ms var(--studio-ease-out, cubic-bezier(0.23, 1, 0.32, 1)),
499
+ scale 150ms var(--studio-ease-out, cubic-bezier(0.23, 1, 0.32, 1));
500
+ }
501
+ @starting-style {
502
+ .llm-config-tray-popover { opacity: 0; scale: 0.97; }
503
+ }
504
+ .llm-config-tray-popover[data-side="above"] { transform-origin: bottom right; }
505
+ .llm-config-tray-robot { display: block; }
506
+ `, e.append(t);
507
+ const [n, o] = $(!1), [s, r] = $(), [l, i] = $({}), [c, h] = $(null);
508
+ let p, v, b, S = null;
509
+ function R(u, {
510
+ readScopedConfig: d,
511
+ readConfig: y,
512
+ writeScopeOverride: g,
513
+ writeConfig: O
514
+ }) {
515
+ return u ? {
516
+ read: () => {
517
+ try {
518
+ return d(u);
519
+ } catch {
520
+ return y();
521
+ }
522
+ },
523
+ write: (k) => g(u, k)
524
+ } : {
525
+ read: () => y(),
526
+ write: (k) => O(k)
527
+ };
528
+ }
529
+ async function ve() {
530
+ const u = s(), d = l() || {}, y = await Ie();
531
+ await y.ensureConfig(u, e), b && (b.replaceChildren(), S = y.dom({
532
+ source: R(u, y),
533
+ scope: u,
534
+ toolName: u?.toolName || d.toolName,
535
+ toolPrompt: d.toolPrompt,
536
+ toolTools: d.toolTools
537
+ }), b.append(S));
538
+ }
539
+ function ye() {
540
+ const u = p.getBoundingClientRect(), d = Math.max(0, u.top - 16), y = Math.max(0, window.innerHeight - u.bottom - 16), g = d >= Math.min(window.innerHeight * 0.8, y);
541
+ h({
542
+ left: Math.max(8, u.right - Math.min(520, window.innerWidth * 0.92)),
543
+ top: g ? u.top - 8 : u.bottom + 8,
544
+ maxHeight: Math.min(window.innerHeight * 0.8, g ? d : y),
545
+ above: g
546
+ });
547
+ }
548
+ function X(u, d) {
549
+ r(u?.toolId ? u : void 0), i(d || {}), ye(), o(!0), queueMicrotask(ve);
550
+ }
551
+ function M() {
552
+ try {
553
+ S?.destroy?.();
554
+ } catch {
555
+ }
556
+ S = null, o(!1);
557
+ }
558
+ const Y = (u) => {
559
+ const d = u.detail;
560
+ !d || d.component !== "llm-config-tray" || X(d.scope, d);
561
+ };
562
+ document.addEventListener("patchwork:open-tool", Y);
563
+ const J = (u) => {
564
+ if (!n()) return;
565
+ const d = u.composedPath();
566
+ v && d.includes(v) || p && d.includes(p) || M();
567
+ }, Z = (u) => {
568
+ u.key === "Escape" && n() && M();
569
+ };
570
+ document.addEventListener("click", J), document.addEventListener("keydown", Z);
571
+ const be = Oe(() => (() => {
572
+ var u = Ge(), d = u.firstChild;
573
+ d.$$click = (g) => {
574
+ g.stopPropagation(), n() ? M() : X(void 0, {});
575
+ };
576
+ var y = p;
577
+ return typeof y == "function" ? q(y, d) : p = d, j(u, le(Ne, {
578
+ get when() {
579
+ return n();
580
+ },
581
+ get children() {
582
+ return le(Ue, {
583
+ get mount() {
584
+ return document.body;
585
+ },
586
+ get children() {
587
+ var g = je(), O = g.firstChild;
588
+ g.$$click = (w) => w.stopPropagation();
589
+ var k = v;
590
+ typeof k == "function" ? q(k, g) : v = g;
591
+ var z = b;
592
+ return typeof z == "function" ? q(z, O) : b = O, D((w) => {
593
+ var ee = c()?.above ? "above" : "below", te = `${c()?.left ?? 0}px`, ne = `${c()?.top ?? 0}px`, oe = `${c()?.maxHeight ?? 0}px`, ie = c()?.above ? "translateY(-100%)" : "none", se = c() ? "visible" : "hidden";
594
+ return ee !== w.e && Be(g, "data-side", w.e = ee), te !== w.t && P(g, "left", w.t = te), ne !== w.a && P(g, "top", w.a = ne), oe !== w.o && P(g, "max-height", w.o = oe), ie !== w.i && P(g, "transform", w.i = ie), se !== w.n && P(g, "visibility", w.n = se), w;
595
+ }, {
596
+ e: void 0,
597
+ t: void 0,
598
+ a: void 0,
599
+ o: void 0,
600
+ i: void 0,
601
+ n: void 0
602
+ }), g;
603
+ }
604
+ });
605
+ }
606
+ }), null), u;
607
+ })(), e);
608
+ return () => {
609
+ M(), be(), t.remove(), document.removeEventListener("patchwork:open-tool", Y), document.removeEventListener("click", J), document.removeEventListener("keydown", Z);
610
+ };
611
+ }
612
+ _e(["click"]);
613
+ export {
614
+ Re as LlmConfigTray
615
+ };
@@ -8,7 +8,7 @@ const a = [
8
8
  icon: "Bot",
9
9
  tags: ["system-tray"],
10
10
  async load() {
11
- const { LlmConfigTray: t } = await import("./LlmConfigTray-CkM9XUX1.js");
11
+ const { LlmConfigTray: t } = await import("./LlmConfigTray-DdZHZT4F.js");
12
12
  return t;
13
13
  }
14
14
  },
@@ -831,6 +831,14 @@
831
831
  background: color-mix(in oklch, var(--pw-packages-line), transparent 55%);
832
832
  backdrop-filter: blur(2px);
833
833
  overflow-y: auto;
834
+ /* Same enter as threepane's frame popover: the wash fades, the card lifts in.
835
+ Closing is instant. */
836
+ transition: opacity 150ms ease;
837
+ }
838
+ @starting-style {
839
+ .pw-modal {
840
+ opacity: 0;
841
+ }
834
842
  }
835
843
  .pw-install {
836
844
  width: min(34rem, 100%);
@@ -843,6 +851,15 @@
843
851
  border: 1px solid var(--pw-packages-border-strong);
844
852
  border-radius: var(--studio-radius-lg, 12px);
845
853
  box-shadow: 0 12px 40px color-mix(in oklch, var(--pw-packages-line), transparent 78%);
854
+ transition:
855
+ opacity 200ms var(--studio-ease-out, cubic-bezier(0.23, 1, 0.32, 1)),
856
+ transform 200ms var(--studio-ease-out, cubic-bezier(0.23, 1, 0.32, 1));
857
+ }
858
+ @starting-style {
859
+ .pw-install {
860
+ opacity: 0;
861
+ transform: translateY(8px) scale(0.98);
862
+ }
846
863
  }
847
864
  .pw-install__head {
848
865
  display: flex;