pptx-vue-viewer 4.53.0 → 4.55.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/CHANGELOG.md +121 -0
- package/README.md +1 -1
- package/dist/{AiChatPanel-B2RV7TSP.cjs → AiChatPanel-CrBPDB11.cjs} +9 -9
- package/dist/AiChatPanel-CrBPDB11.cjs.br +0 -0
- package/dist/AiChatPanel-CrBPDB11.cjs.gz +0 -0
- package/dist/{AiChatPanel-CMgMfd90.js → AiChatPanel-cLMgIUKT.js} +99 -99
- package/dist/AiChatPanel-cLMgIUKT.js.br +0 -0
- package/dist/AiChatPanel-cLMgIUKT.js.gz +0 -0
- package/dist/ai-8VTpsXre.cjs +13 -0
- package/dist/ai-8VTpsXre.cjs.br +2 -0
- package/dist/ai-8VTpsXre.cjs.gz +0 -0
- package/dist/ai-Cc4rHzx2.js +4 -0
- package/dist/ai-Cc4rHzx2.js.br +0 -0
- package/dist/ai-Cc4rHzx2.js.gz +0 -0
- package/dist/ai.cjs +5 -0
- package/dist/ai.cjs.br +0 -0
- package/dist/ai.cjs.gz +0 -0
- package/dist/ai.d.ts +32 -0
- package/dist/ai.js +5 -0
- package/dist/ai.js.br +0 -0
- package/dist/ai.js.gz +0 -0
- package/dist/i18n/de.cjs +421 -1
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +421 -1
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +421 -1
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +421 -1
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +421 -1
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +421 -1
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +421 -1
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +421 -1
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/index.cjs +47 -47
- package/dist/index.cjs.br +0 -0
- package/dist/index.cjs.gz +0 -0
- package/dist/index.d.ts +127 -22
- package/dist/index.js +5 -4
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/internals.cjs +1 -1
- package/dist/internals.cjs.br +0 -0
- package/dist/internals.cjs.gz +0 -0
- package/dist/internals.d.ts +10 -0
- package/dist/internals.js +1 -1
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/useAiPanelController-B4pdPnXc.js +39 -0
- package/dist/useAiPanelController-B4pdPnXc.js.br +0 -0
- package/dist/useAiPanelController-B4pdPnXc.js.gz +0 -0
- package/dist/useAiPanelController-aOhIHxkq.cjs +46 -0
- package/dist/useAiPanelController-aOhIHxkq.cjs.br +0 -0
- package/dist/useAiPanelController-aOhIHxkq.cjs.gz +0 -0
- package/dist/useController-CYBNpWy-.cjs +2200 -0
- package/dist/useController-CYBNpWy-.cjs.br +0 -0
- package/dist/useController-CYBNpWy-.cjs.gz +0 -0
- package/dist/useController-DFsGhUrb.js +2175 -0
- package/dist/useController-DFsGhUrb.js.br +0 -0
- package/dist/useController-DFsGhUrb.js.gz +0 -0
- package/dist/useViewerSettingsDialog-CUlY9pTL.js +9226 -0
- package/dist/useViewerSettingsDialog-CUlY9pTL.js.br +0 -0
- package/dist/useViewerSettingsDialog-CUlY9pTL.js.gz +0 -0
- package/dist/useViewerSettingsDialog-D3eAqpfN.cjs +10009 -0
- package/dist/useViewerSettingsDialog-D3eAqpfN.cjs.br +0 -0
- package/dist/useViewerSettingsDialog-D3eAqpfN.cjs.gz +0 -0
- package/dist/viewer/index.cjs +3 -3
- package/dist/viewer/index.cjs.br +0 -0
- package/dist/viewer/index.cjs.gz +0 -0
- package/dist/viewer/index.d.ts +283 -79
- package/dist/viewer/index.js +3 -3
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/{viewer-X0IUMFQ0.js → viewer-DIyyXtzz.js} +8505 -8412
- package/dist/viewer-DIyyXtzz.js.br +0 -0
- package/dist/viewer-DIyyXtzz.js.gz +0 -0
- package/dist/viewer-U2e6K7pU.cjs +29235 -0
- package/dist/viewer-U2e6K7pU.cjs.br +0 -0
- package/dist/viewer-U2e6K7pU.cjs.gz +0 -0
- package/dist/{y-webrtc-jAFe0kDI.js → y-webrtc-CSP7EHTG.js} +52 -52
- package/dist/y-webrtc-CSP7EHTG.js.br +0 -0
- package/dist/y-webrtc-CSP7EHTG.js.gz +0 -0
- package/dist/{y-webrtc-jyWscPMg.cjs → y-webrtc-DydN-o2m.cjs} +1 -1
- package/dist/y-webrtc-DydN-o2m.cjs.br +0 -0
- package/dist/y-webrtc-DydN-o2m.cjs.gz +0 -0
- package/package.json +8 -3
- package/dist/AiChatPanel-B2RV7TSP.cjs.br +0 -0
- package/dist/AiChatPanel-B2RV7TSP.cjs.gz +0 -0
- package/dist/AiChatPanel-CMgMfd90.js.br +0 -0
- package/dist/AiChatPanel-CMgMfd90.js.gz +0 -0
- package/dist/useViewerSettingsDialog-BKSbIcob.cjs +0 -12195
- package/dist/useViewerSettingsDialog-BKSbIcob.cjs.br +0 -0
- package/dist/useViewerSettingsDialog-BKSbIcob.cjs.gz +0 -0
- package/dist/useViewerSettingsDialog-DGB1V16A.js +0 -11386
- package/dist/useViewerSettingsDialog-DGB1V16A.js.br +0 -0
- package/dist/useViewerSettingsDialog-DGB1V16A.js.gz +0 -0
- package/dist/viewer-CWU-Lo5I.cjs +0 -29148
- package/dist/viewer-CWU-Lo5I.cjs.br +0 -0
- package/dist/viewer-CWU-Lo5I.cjs.gz +0 -0
- package/dist/viewer-X0IUMFQ0.js.br +0 -0
- package/dist/viewer-X0IUMFQ0.js.gz +0 -0
- package/dist/y-webrtc-jAFe0kDI.js.br +0 -0
- package/dist/y-webrtc-jAFe0kDI.js.gz +0 -0
- package/dist/y-webrtc-jyWscPMg.cjs.br +0 -0
- package/dist/y-webrtc-jyWscPMg.cjs.gz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Fragment as r, Suspense as s, computed as l, createBlock as o, createCommentVNode as
|
|
4
|
-
import { Bot as A, ChartColumn as E, Check as M, Crosshair as F, Eye as B, Film as D, GitMerge as N, History as L, LayoutTemplate as R, LoaderCircle as H, MessageSquare as W, MessageSquarePlus as z, Move as
|
|
5
|
-
import { createAiChatHistoryController as
|
|
1
|
+
import { n as e } from "./useController-DFsGhUrb.js";
|
|
2
|
+
import { n as t, t as a } from "./useAiPanelController-B4pdPnXc.js";
|
|
3
|
+
import { Fragment as r, Suspense as s, computed as l, createBlock as o, createCommentVNode as n, createElementBlock as i, createElementVNode as p, createTextVNode as d, createVNode as c, defineComponent as u, nextTick as m, normalizeClass as x, normalizeStyle as g, onBeforeUnmount as f, onMounted as b, openBlock as v, ref as y, renderList as h, resolveDynamicComponent as k, shallowRef as w, toDisplayString as C, unref as P, vModelText as T, watch as S, withAsyncContext as I, withCtx as j, withDirectives as _ } from "vue";
|
|
4
|
+
import { Bot as A, ChartColumn as E, Check as M, Crosshair as F, Eye as B, Film as D, GitMerge as N, History as L, LayoutTemplate as R, LoaderCircle as H, MessageSquare as W, MessageSquarePlus as z, Move as K, Navigation as V, Palette as O, Pin as U, PinOff as $, Plus as q, Search as G, Send as J, Shapes as Q, Sparkles as X, Square as Y, StickyNote as Z, Table as ee, Trash2 as te, TriangleAlert as ae, Type as re, User as se, Wrench as le, X as oe } from "lucide-vue-next";
|
|
5
|
+
import { createAiChatHistoryController as ne, createAiChatSession as ie, deckIdFromBridge as pe, describeToolActivity as de, extractReadyToolCalls as ce, focusTargetChips as ue, humanizeDiffLine as me, isAiAvailable as xe, isTwoTableFocus as ge, mergeTablesDirective as fe, summarizeToolArgs as be, toRenderableParts as ve, toolCanvasTarget as ye, toolLabel as he } from "ooxml-ui/pptx/ai";
|
|
6
6
|
var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end gap-1.5 rounded-md border border-input bg-background px-2 py-1.5 focus-within:border-ring" }, Ce = ["placeholder", "aria-label"], Pe = ["title", "aria-label"], Te = [
|
|
7
7
|
"disabled",
|
|
8
8
|
"title",
|
|
@@ -15,8 +15,8 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
15
15
|
prefillNonce: {}
|
|
16
16
|
},
|
|
17
17
|
emits: ["send", "stop"],
|
|
18
|
-
setup(
|
|
19
|
-
const s =
|
|
18
|
+
setup(a, { emit: r }) {
|
|
19
|
+
const s = a, o = r, { t: n } = e(), d = y(""), u = y(null), g = l(() => d.value.trim().length > 0);
|
|
20
20
|
function f() {
|
|
21
21
|
const e = d.value.trim();
|
|
22
22
|
0 === e.length || s.isStreaming || (o("send", e), d.value = "");
|
|
@@ -26,29 +26,29 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
26
26
|
}
|
|
27
27
|
return S(() => s.prefillNonce, (e) => {
|
|
28
28
|
void 0 !== e && 0 !== e && (s.prefillText && (d.value = s.prefillText), m(() => u.value?.focus()));
|
|
29
|
-
}), (e,
|
|
29
|
+
}), (e, a) => (v(), i("div", ke, [p("div", we, [_(p("textarea", {
|
|
30
30
|
ref_key: "textareaRef",
|
|
31
31
|
ref: u,
|
|
32
|
-
"onUpdate:modelValue":
|
|
32
|
+
"onUpdate:modelValue": a[0] || (a[0] = (e) => d.value = e),
|
|
33
33
|
rows: 1,
|
|
34
|
-
placeholder: P(
|
|
35
|
-
"aria-label": P(
|
|
34
|
+
placeholder: P(n)("pptx.ai.placeholder"),
|
|
35
|
+
"aria-label": P(n)("pptx.ai.placeholder"),
|
|
36
36
|
class: "max-h-32 min-h-[1.5rem] flex-1 resize-none bg-transparent text-[13px] text-foreground outline-none placeholder:text-muted-foreground",
|
|
37
37
|
onKeydown: b
|
|
38
|
-
}, null, 40, Ce), [[T, d.value]]), s.isStreaming ? (v(),
|
|
38
|
+
}, null, 40, Ce), [[T, d.value]]), s.isStreaming ? (v(), i("button", {
|
|
39
39
|
key: 0,
|
|
40
40
|
type: "button",
|
|
41
|
-
title: P(
|
|
42
|
-
"aria-label": P(
|
|
41
|
+
title: P(n)("pptx.ai.stop"),
|
|
42
|
+
"aria-label": P(n)("pptx.ai.stop"),
|
|
43
43
|
class: "shrink-0 rounded-sm p-1.5 text-muted-foreground transition-colors hover:bg-accent",
|
|
44
|
-
onClick:
|
|
45
|
-
}, [c(P(Y), { class: "w-4 h-4" })], 8, Pe)) : (v(),
|
|
44
|
+
onClick: a[1] || (a[1] = (e) => o("stop"))
|
|
45
|
+
}, [c(P(Y), { class: "w-4 h-4" })], 8, Pe)) : (v(), i("button", {
|
|
46
46
|
key: 1,
|
|
47
47
|
type: "button",
|
|
48
48
|
disabled: !g.value,
|
|
49
|
-
title: P(
|
|
50
|
-
"aria-label": P(
|
|
51
|
-
class: x(P(
|
|
49
|
+
title: P(n)("pptx.ai.send"),
|
|
50
|
+
"aria-label": P(n)("pptx.ai.send"),
|
|
51
|
+
class: x(P(t)("shrink-0 rounded-sm p-1.5 transition-colors", g.value ? "bg-primary text-primary-foreground hover:bg-primary/90" : "text-muted-foreground/50")),
|
|
52
52
|
onClick: f
|
|
53
53
|
}, [c(P(J), { class: "w-4 h-4" })], 10, Te))])]));
|
|
54
54
|
}
|
|
@@ -79,50 +79,50 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
79
79
|
"clear-picks",
|
|
80
80
|
"send-directive"
|
|
81
81
|
],
|
|
82
|
-
setup(
|
|
83
|
-
const u =
|
|
82
|
+
setup(a, { emit: s }) {
|
|
83
|
+
const u = a, m = s, { t: g } = e(), f = l(() => ue(u.targets, u.slides)), b = l(() => ge(u.targets, u.slides));
|
|
84
84
|
function y() {
|
|
85
85
|
const e = b.value;
|
|
86
86
|
e && m("send-directive", fe(e.slideIndex, e.elementIdA, e.elementIdB));
|
|
87
87
|
}
|
|
88
|
-
return (e, s) => (v(),
|
|
88
|
+
return (e, s) => (v(), i("div", Ie, [p("div", je, [
|
|
89
89
|
p("span", _e, C(P(g)("pptx.ai.focusScope")), 1),
|
|
90
|
-
(v(!0),
|
|
90
|
+
(v(!0), i(r, null, h(f.value, (e) => (v(), i("span", {
|
|
91
91
|
key: e.key,
|
|
92
|
-
class: x(P(
|
|
92
|
+
class: x(P(t)("inline-flex max-w-[10rem] items-center rounded-full px-2 py-0.5 text-[11px]", a.hasPicks || a.isPinned ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground")),
|
|
93
93
|
title: e.title
|
|
94
94
|
}, [p("span", Ee, C(e.label), 1)], 10, Ae))), 128)),
|
|
95
|
-
|
|
95
|
+
a.isPinned ? (v(), i("span", Me, C(P(g)("pptx.ai.pinnedFocus")), 1)) : n("", !0),
|
|
96
96
|
p("div", Fe, [
|
|
97
|
-
b.value ? (v(),
|
|
97
|
+
b.value ? (v(), i("button", {
|
|
98
98
|
key: 0,
|
|
99
99
|
type: "button",
|
|
100
100
|
class: "inline-flex items-center gap-1 rounded-sm bg-primary/90 px-1.5 py-0.5 text-[11px] font-medium text-primary-foreground hover:bg-primary",
|
|
101
101
|
onClick: y
|
|
102
|
-
}, [c(P(N), { class: "w-3 h-3" }), d(" " + C(P(g)("pptx.ai.mergeSelectedTables")), 1)])) :
|
|
102
|
+
}, [c(P(N), { class: "w-3 h-3" }), d(" " + C(P(g)("pptx.ai.mergeSelectedTables")), 1)])) : n("", !0),
|
|
103
103
|
p("button", {
|
|
104
104
|
type: "button",
|
|
105
105
|
title: P(g)("pptx.ai.pickElement"),
|
|
106
106
|
"aria-label": P(g)("pptx.ai.pickAria"),
|
|
107
|
-
"aria-pressed":
|
|
108
|
-
class: x(P(
|
|
109
|
-
onClick: s[0] || (s[0] = (e) =>
|
|
107
|
+
"aria-pressed": a.pickMode,
|
|
108
|
+
class: x(P(t)("rounded-sm p-1 flex items-center justify-center max-md:min-w-[44px]! max-md:min-h-[44px]!", a.pickMode ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent")),
|
|
109
|
+
onClick: s[0] || (s[0] = (e) => a.pickMode ? m("stop-pick") : m("start-pick"))
|
|
110
110
|
}, [c(P(F), { class: "w-3.5 h-3.5" })], 10, Be),
|
|
111
|
-
|
|
111
|
+
a.hasPicks ? (v(), i("button", {
|
|
112
112
|
key: 1,
|
|
113
113
|
type: "button",
|
|
114
114
|
title: P(g)("pptx.ai.pickClear"),
|
|
115
115
|
"aria-label": P(g)("pptx.ai.pickClear"),
|
|
116
116
|
class: "rounded-sm p-1 text-muted-foreground hover:bg-accent flex items-center justify-center max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
117
117
|
onClick: s[1] || (s[1] = (e) => m("clear-picks"))
|
|
118
|
-
}, [c(P(oe), { class: "w-3.5 h-3.5" })], 8, De)) : (v(),
|
|
118
|
+
}, [c(P(oe), { class: "w-3.5 h-3.5" })], 8, De)) : (v(), i("button", {
|
|
119
119
|
key: 2,
|
|
120
120
|
type: "button",
|
|
121
|
-
title:
|
|
122
|
-
"aria-label":
|
|
121
|
+
title: a.isPinned ? P(g)("pptx.ai.clearFocus") : P(g)("pptx.ai.pinFocus"),
|
|
122
|
+
"aria-label": a.isPinned ? P(g)("pptx.ai.clearFocus") : P(g)("pptx.ai.pinFocus"),
|
|
123
123
|
class: "rounded-sm p-1 text-muted-foreground hover:bg-accent flex items-center justify-center max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
124
|
-
onClick: s[2] || (s[2] = (e) =>
|
|
125
|
-
}, [
|
|
124
|
+
onClick: s[2] || (s[2] = (e) => a.isPinned ? m("clear-pin") : m("pin"))
|
|
125
|
+
}, [a.isPinned ? (v(), o(P($), {
|
|
126
126
|
key: 0,
|
|
127
127
|
class: "w-3.5 h-3.5"
|
|
128
128
|
})) : (v(), o(P(U), {
|
|
@@ -130,7 +130,7 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
130
130
|
class: "w-3.5 h-3.5"
|
|
131
131
|
}))], 8, Ne))
|
|
132
132
|
])
|
|
133
|
-
]),
|
|
133
|
+
]), a.pickMode ? (v(), i("div", Le, [
|
|
134
134
|
c(P(F), { class: "w-3.5 h-3.5 shrink-0 animate-pulse text-primary" }),
|
|
135
135
|
p("span", Re, C(P(g)("pptx.ai.pickElementHint")), 1),
|
|
136
136
|
p("button", {
|
|
@@ -138,12 +138,12 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
138
138
|
class: "ml-auto rounded-sm bg-primary px-2 py-0.5 text-[11px] font-medium text-primary-foreground hover:bg-primary/90",
|
|
139
139
|
onClick: s[3] || (s[3] = (e) => m("stop-pick"))
|
|
140
140
|
}, C(P(g)("pptx.ai.pickDone")), 1)
|
|
141
|
-
])) :
|
|
141
|
+
])) : n("", !0)]));
|
|
142
142
|
}
|
|
143
|
-
}), We = { class: "flex items-center justify-between border-b border-border px-2.5 py-1.5" }, ze = { class: "text-[11px] font-semibold uppercase tracking-wide text-muted-foreground" },
|
|
143
|
+
}), We = { class: "flex items-center justify-between border-b border-border px-2.5 py-1.5" }, ze = { class: "text-[11px] font-semibold uppercase tracking-wide text-muted-foreground" }, Ke = {
|
|
144
144
|
key: 0,
|
|
145
145
|
class: "px-3 py-4 text-center text-[12px] text-muted-foreground"
|
|
146
|
-
},
|
|
146
|
+
}, Ve = {
|
|
147
147
|
key: 1,
|
|
148
148
|
class: "max-h-64 overflow-y-auto py-1"
|
|
149
149
|
}, Oe = ["onClick"], Ue = { class: "min-w-0 flex-1" }, $e = { class: "block truncate text-[12px] font-medium text-foreground" }, qe = { class: "block text-[10px] text-muted-foreground" }, Ge = [
|
|
@@ -163,13 +163,13 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
163
163
|
"close"
|
|
164
164
|
],
|
|
165
165
|
setup(t, { emit: a }) {
|
|
166
|
-
const s = t, l = a, { t: o } = e(),
|
|
166
|
+
const s = t, l = a, { t: o } = e(), n = y(null);
|
|
167
167
|
function u(e) {
|
|
168
|
-
|
|
168
|
+
n.value && !n.value.contains(e.target) && l("close");
|
|
169
169
|
}
|
|
170
|
-
return b(() => document.addEventListener("mousedown", u)), f(() => document.removeEventListener("mousedown", u)), (e, t) => (v(),
|
|
170
|
+
return b(() => document.addEventListener("mousedown", u)), f(() => document.removeEventListener("mousedown", u)), (e, t) => (v(), i("div", {
|
|
171
171
|
ref_key: "root",
|
|
172
|
-
ref:
|
|
172
|
+
ref: n,
|
|
173
173
|
class: "absolute right-2 top-10 z-40 w-64 rounded-md border border-border bg-popover shadow-xl"
|
|
174
174
|
}, [
|
|
175
175
|
p("div", We, [p("span", ze, C(P(o)("pptx.ai.historyTitle")), 1), p("button", {
|
|
@@ -179,7 +179,7 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
179
179
|
l("new-chat"), l("close");
|
|
180
180
|
})
|
|
181
181
|
}, [c(P(q), { class: "w-3 h-3" }), d(" " + C(P(o)("pptx.ai.newChat")), 1)])]),
|
|
182
|
-
0 === s.chats.length ? (v(),
|
|
182
|
+
0 === s.chats.length ? (v(), i("p", Ke, C(P(o)("pptx.ai.historyEmpty")), 1)) : (v(), i("ul", Ve, [(v(!0), i(r, null, h(s.chats, (e) => (v(), i("li", {
|
|
183
183
|
key: e.id,
|
|
184
184
|
class: "group flex items-center gap-1 px-1"
|
|
185
185
|
}, [p("button", {
|
|
@@ -207,8 +207,8 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
207
207
|
}, tt = { class: "cursor-pointer list-none text-[10px] text-muted-foreground/70 hover:text-muted-foreground" }, at = { class: "mt-0.5 break-words font-mono text-[10px] text-muted-foreground/80" }, rt = u({
|
|
208
208
|
__name: "AiToolCallCard",
|
|
209
209
|
props: { part: {} },
|
|
210
|
-
setup(
|
|
211
|
-
const r =
|
|
210
|
+
setup(a) {
|
|
211
|
+
const r = a, { t: s } = e(), c = {
|
|
212
212
|
view: B,
|
|
213
213
|
text: re,
|
|
214
214
|
shape: Q,
|
|
@@ -216,19 +216,19 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
216
216
|
table: ee,
|
|
217
217
|
slide: R,
|
|
218
218
|
chart: E,
|
|
219
|
-
move:
|
|
219
|
+
move: K,
|
|
220
220
|
delete: te,
|
|
221
221
|
search: G,
|
|
222
|
-
nav:
|
|
222
|
+
nav: V,
|
|
223
223
|
animation: D,
|
|
224
224
|
notes: Z,
|
|
225
225
|
tool: le
|
|
226
226
|
}, u = l(() => "output-error" === r.part.state), m = l(() => "output-available" === r.part.state), g = l(() => !u.value && !m.value), f = l(() => de(r.part.toolName, r.part.input, g.value ? "present" : "past")), b = l(() => c[f.value.icon] ?? le), y = l(() => be(r.part.input)), h = l(() => u.value ? s("pptx.ai.toolFailed") : m.value ? s("pptx.ai.toolDone") : s("pptx.ai.toolRunning"));
|
|
227
|
-
return (e,
|
|
227
|
+
return (e, a) => (v(), i("div", Xe, [
|
|
228
228
|
p("div", Ye, [
|
|
229
|
-
(v(), o(k(b.value), { class: x(P(
|
|
230
|
-
p("span", { class: x(P(
|
|
231
|
-
p("span", { class: x(P(
|
|
229
|
+
(v(), o(k(b.value), { class: x(P(t)("w-3.5 h-3.5 shrink-0", u.value ? "text-destructive" : "text-muted-foreground")) }, null, 8, ["class"])),
|
|
230
|
+
p("span", { class: x(P(t)("truncate", u.value ? "text-destructive" : "text-foreground")) }, C(f.value.label), 3),
|
|
231
|
+
p("span", { class: x(P(t)("ml-auto inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 text-[10px]", u.value ? "bg-destructive/15 text-destructive" : m.value ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground")) }, [g.value ? (v(), o(P(H), {
|
|
232
232
|
key: 0,
|
|
233
233
|
class: "w-3 h-3 animate-spin"
|
|
234
234
|
})) : m.value ? (v(), o(P(M), {
|
|
@@ -239,17 +239,17 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
239
239
|
class: "w-3 h-3"
|
|
240
240
|
})), d(" " + C(h.value), 1)], 2)
|
|
241
241
|
]),
|
|
242
|
-
u.value && r.part.errorText ? (v(),
|
|
243
|
-
y.value ? (v(),
|
|
242
|
+
u.value && r.part.errorText ? (v(), i("div", Ze, C(r.part.errorText), 1)) : n("", !0),
|
|
243
|
+
y.value ? (v(), i("details", et, [p("summary", tt, C(P(s)("pptx.ai.toolDetails")), 1), p("div", at, C(P(he)(r.part.toolName)) + ": " + C(y.value), 1)])) : n("", !0)
|
|
244
244
|
]));
|
|
245
245
|
}
|
|
246
246
|
}), st = {
|
|
247
247
|
key: 0,
|
|
248
248
|
class: "flex flex-1 flex-col items-center justify-center gap-2 px-6 text-center"
|
|
249
|
-
}, lt = { class: "text-sm font-medium text-foreground" }, ot = { class: "text-[12px] text-muted-foreground" },
|
|
249
|
+
}, lt = { class: "text-sm font-medium text-foreground" }, ot = { class: "text-[12px] text-muted-foreground" }, nt = {
|
|
250
250
|
key: 1,
|
|
251
251
|
class: "flex-1 space-y-3 overflow-y-auto px-3 py-3"
|
|
252
|
-
},
|
|
252
|
+
}, it = {
|
|
253
253
|
key: 0,
|
|
254
254
|
class: "flex gap-2"
|
|
255
255
|
}, pt = ["aria-label"], dt = { class: "min-w-0 flex-1 space-y-1.5" }, ct = {
|
|
@@ -264,17 +264,17 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
264
264
|
messages: {},
|
|
265
265
|
isStreaming: { type: Boolean }
|
|
266
266
|
},
|
|
267
|
-
setup(
|
|
268
|
-
const s =
|
|
267
|
+
setup(a) {
|
|
268
|
+
const s = a, { t: l } = e(), u = y(null);
|
|
269
269
|
return S(() => [s.messages, s.isStreaming], () => {
|
|
270
270
|
m(() => u.value?.scrollIntoView({ block: "end" }));
|
|
271
|
-
}, { deep: !0 }), (e,
|
|
271
|
+
}, { deep: !0 }), (e, a) => 0 === s.messages.length ? (v(), i("div", st, [
|
|
272
272
|
c(P(X), { class: "w-7 h-7 text-primary/70" }),
|
|
273
273
|
p("p", lt, C(P(l)("pptx.ai.emptyTitle")), 1),
|
|
274
274
|
p("p", ot, C(P(l)("pptx.ai.emptyHint")), 1)
|
|
275
|
-
])) : (v(),
|
|
276
|
-
(v(!0),
|
|
277
|
-
class: x(P(
|
|
275
|
+
])) : (v(), i("div", nt, [
|
|
276
|
+
(v(!0), i(r, null, h(s.messages, (e) => (v(), i(r, { key: e.id }, ["user" === e.role || P(ve)(e).length > 0 ? (v(), i("div", it, [p("div", {
|
|
277
|
+
class: x(P(t)("mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full", "user" === e.role ? "bg-secondary text-muted-foreground" : "bg-primary/15 text-primary")),
|
|
278
278
|
"aria-label": "user" === e.role ? P(l)("pptx.ai.you") : P(l)("pptx.ai.assistant")
|
|
279
279
|
}, ["user" === e.role ? (v(), o(P(se), {
|
|
280
280
|
key: 0,
|
|
@@ -282,15 +282,15 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
282
282
|
})) : (v(), o(P(A), {
|
|
283
283
|
key: 1,
|
|
284
284
|
class: "w-3.5 h-3.5"
|
|
285
|
-
}))], 10, pt), p("div", dt, [(v(!0),
|
|
285
|
+
}))], 10, pt), p("div", dt, [(v(!0), i(r, null, h(P(ve)(e), (e, t) => (v(), i(r, { key: "tool" === e.kind && e.toolCallId || t }, ["text" === e.kind ? (v(), i("p", ct, C(e.text), 1)) : (v(), o(rt, {
|
|
286
286
|
key: 1,
|
|
287
287
|
part: e
|
|
288
|
-
}, null, 8, ["part"]))], 64))), 128))])])) :
|
|
289
|
-
s.isStreaming ? (v(),
|
|
288
|
+
}, null, 8, ["part"]))], 64))), 128))])])) : n("", !0)], 64))), 128)),
|
|
289
|
+
s.isStreaming ? (v(), i("div", ut, [a[0] || (a[0] = p("span", { class: "inline-flex gap-1" }, [
|
|
290
290
|
p("span", { class: "h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-0.2s]" }),
|
|
291
291
|
p("span", { class: "h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-0.1s]" }),
|
|
292
292
|
p("span", { class: "h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground" })
|
|
293
|
-
], -1)), d(" " + C(P(l)("pptx.ai.thinking")), 1)])) :
|
|
293
|
+
], -1)), d(" " + C(P(l)("pptx.ai.thinking")), 1)])) : n("", !0),
|
|
294
294
|
p("div", {
|
|
295
295
|
ref_key: "endRef",
|
|
296
296
|
ref: u
|
|
@@ -306,13 +306,13 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
306
306
|
emits: ["accept", "reject"],
|
|
307
307
|
setup(t, { emit: a }) {
|
|
308
308
|
const s = t, o = a, { t: u } = e(), m = l(() => s.proposal.summary.map(me));
|
|
309
|
-
return (e, t) => (v(),
|
|
309
|
+
return (e, t) => (v(), i("div", xt, [
|
|
310
310
|
p("div", gt, C(P(u)("pptx.ai.proposedChange")), 1),
|
|
311
311
|
p("div", ft, C(s.proposal.label), 1),
|
|
312
|
-
m.value.length > 0 ? (v(),
|
|
312
|
+
m.value.length > 0 ? (v(), i("ul", bt, [(v(!0), i(r, null, h(m.value, (e, t) => (v(), i("li", {
|
|
313
313
|
key: t,
|
|
314
314
|
class: "break-words"
|
|
315
|
-
}, C(e), 1))), 128))])) :
|
|
315
|
+
}, C(e), 1))), 128))])) : n("", !0),
|
|
316
316
|
p("div", vt, [p("button", {
|
|
317
317
|
type: "button",
|
|
318
318
|
class: "inline-flex items-center gap-1 rounded-sm bg-primary px-2 py-1 text-[11px] font-medium text-primary-foreground transition-colors hover:bg-primary/90",
|
|
@@ -347,12 +347,12 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
347
347
|
const u = t, { t: m } = e(), { useChat: x } = ([a, s] = I(() => import("@ai-sdk/vue")), a = await a, s(), a), { messages: g, error: b, isStreaming: k, proposals: w, send: T, stop: j, clearError: _, applyProposal: A, rejectProposal: E, acceptAllProposals: M } = function(e, t, a, r = {}) {
|
|
348
348
|
const s = y(t.proposals.list()), o = () => {
|
|
349
349
|
s.value = t.proposals.list();
|
|
350
|
-
},
|
|
350
|
+
}, n = e({
|
|
351
351
|
transport: t.transport,
|
|
352
352
|
sendAutomaticallyWhen: t.sendAutomaticallyWhen,
|
|
353
353
|
onError: (e) => a.onError?.(e),
|
|
354
354
|
onToolCall: async ({ toolCall: e }) => {
|
|
355
|
-
const { toolName: a, toolCallId: r, input: s } = e, l =
|
|
355
|
+
const { toolName: a, toolCallId: r, input: s } = e, l = n.addToolOutput;
|
|
356
356
|
try {
|
|
357
357
|
l({
|
|
358
358
|
tool: a,
|
|
@@ -369,23 +369,23 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
369
369
|
}
|
|
370
370
|
o();
|
|
371
371
|
}
|
|
372
|
-
}),
|
|
373
|
-
return S(
|
|
372
|
+
}), i = l(() => "submitted" === n.status.value || "streaming" === n.status.value), p = /* @__PURE__ */ new Set();
|
|
373
|
+
return S(n.messages, (e) => {
|
|
374
374
|
for (const t of ce(e)) p.has(t.toolCallId) || (p.add(t.toolCallId), r.onToolTarget?.(ye(t.toolName, t.input)));
|
|
375
375
|
}, { deep: !0 }), {
|
|
376
|
-
messages:
|
|
377
|
-
status:
|
|
378
|
-
error:
|
|
379
|
-
isStreaming:
|
|
376
|
+
messages: n.messages,
|
|
377
|
+
status: n.status,
|
|
378
|
+
error: n.error,
|
|
379
|
+
isStreaming: i,
|
|
380
380
|
proposals: s,
|
|
381
381
|
send: (e) => {
|
|
382
382
|
const t = e.trim();
|
|
383
|
-
0 !== t.length &&
|
|
383
|
+
0 !== t.length && n.sendMessage({ text: t });
|
|
384
384
|
},
|
|
385
385
|
stop: () => {
|
|
386
|
-
|
|
386
|
+
n.stop();
|
|
387
387
|
},
|
|
388
|
-
clearError: () =>
|
|
388
|
+
clearError: () => n.clearError(),
|
|
389
389
|
applyProposal: (e) => {
|
|
390
390
|
t.proposals.apply(e), o();
|
|
391
391
|
},
|
|
@@ -399,7 +399,7 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
399
399
|
}(x, u.session, u.config, { onToolTarget: (e) => {
|
|
400
400
|
e && void 0 !== e.slideIndex && u.bridge.goToSlide(e.slideIndex), u.aiPanel.flashToolTarget(e);
|
|
401
401
|
} }), F = function(e) {
|
|
402
|
-
const t = y([]), a =
|
|
402
|
+
const t = y([]), a = ne({
|
|
403
403
|
deckId: e.deckId,
|
|
404
404
|
store: e.store,
|
|
405
405
|
getMessages: () => e.messages.value,
|
|
@@ -441,10 +441,10 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
441
441
|
function W(e) {
|
|
442
442
|
u.aiPanel.flashToolTarget(null), A(e);
|
|
443
443
|
}
|
|
444
|
-
function
|
|
444
|
+
function K() {
|
|
445
445
|
u.aiPanel.flashToolTarget(null), M();
|
|
446
446
|
}
|
|
447
|
-
return (e, t) => (v(),
|
|
447
|
+
return (e, t) => (v(), i("div", ht, [
|
|
448
448
|
p("div", kt, [p("button", {
|
|
449
449
|
type: "button",
|
|
450
450
|
class: "inline-flex items-center gap-1 rounded-sm px-1.5 py-1 text-[12px] text-muted-foreground hover:bg-accent max-md:min-h-[44px]!",
|
|
@@ -475,7 +475,7 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
475
475
|
}),
|
|
476
476
|
onNewChat: t[5] || (t[5] = (e) => P(F).newChat()),
|
|
477
477
|
onClose: t[6] || (t[6] = (e) => B.value = !1)
|
|
478
|
-
}, null, 8, ["chats", "active-chat-id"])) :
|
|
478
|
+
}, null, 8, ["chats", "active-chat-id"])) : n("", !0),
|
|
479
479
|
c(He, {
|
|
480
480
|
targets: R.value,
|
|
481
481
|
slides: u.bridge.getSlides(),
|
|
@@ -505,7 +505,7 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
505
505
|
messages: P(g),
|
|
506
506
|
"is-streaming": P(k)
|
|
507
507
|
}, null, 8, ["messages", "is-streaming"]),
|
|
508
|
-
P(b) ? (v(),
|
|
508
|
+
P(b) ? (v(), i("div", Tt, [
|
|
509
509
|
c(P(ae), { class: "mt-0.5 w-3.5 h-3.5 shrink-0" }),
|
|
510
510
|
p("div", St, [p("div", It, C(P(m)("pptx.ai.errorPrefix")), 1), p("div", jt, C(P(b).message), 1)]),
|
|
511
511
|
p("button", {
|
|
@@ -513,18 +513,18 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
513
513
|
class: "shrink-0 rounded-sm px-1.5 py-0.5 text-[11px] underline-offset-2 hover:underline",
|
|
514
514
|
onClick: t[7] || (t[7] = (...e) => P(_) && P(_)(...e))
|
|
515
515
|
}, C(P(m)("pptx.ai.retry")), 1)
|
|
516
|
-
])) :
|
|
517
|
-
P(w).length > 0 ? (v(),
|
|
516
|
+
])) : n("", !0),
|
|
517
|
+
P(w).length > 0 ? (v(), i("div", _t, [p("div", At, [p("span", Et, C(P(m)("pptx.ai.pendingChanges", { count: P(w).length })), 1), P(w).length > 1 ? (v(), i("button", {
|
|
518
518
|
key: 0,
|
|
519
519
|
type: "button",
|
|
520
520
|
class: "rounded-sm bg-primary/90 px-2 py-0.5 text-[11px] font-medium text-primary-foreground hover:bg-primary",
|
|
521
|
-
onClick:
|
|
522
|
-
}, C(P(m)("pptx.ai.acceptAll")), 1)) :
|
|
521
|
+
onClick: K
|
|
522
|
+
}, C(P(m)("pptx.ai.acceptAll")), 1)) : n("", !0)]), (v(!0), i(r, null, h(P(w), (e) => (v(), o(yt, {
|
|
523
523
|
key: e.id,
|
|
524
524
|
proposal: e,
|
|
525
525
|
onAccept: W,
|
|
526
526
|
onReject: P(E)
|
|
527
|
-
}, null, 8, ["proposal", "onReject"]))), 128))])) :
|
|
527
|
+
}, null, 8, ["proposal", "onReject"]))), 128))])) : n("", !0),
|
|
528
528
|
c(Se, {
|
|
529
529
|
"is-streaming": P(k),
|
|
530
530
|
"prefill-text": u.aiPanel.prefill.value.text,
|
|
@@ -555,8 +555,8 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
555
555
|
aiPanel: {}
|
|
556
556
|
},
|
|
557
557
|
emits: ["close"],
|
|
558
|
-
setup(
|
|
559
|
-
const d =
|
|
558
|
+
setup(t, { emit: r }) {
|
|
559
|
+
const d = t, u = r, { t: m } = e(), { state: x, session: f, initError: b } = function(e, t) {
|
|
560
560
|
const a = y("checking"), r = w(null), s = w(void 0);
|
|
561
561
|
let l = 0;
|
|
562
562
|
return (async () => {
|
|
@@ -566,9 +566,9 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
566
566
|
const s = await xe();
|
|
567
567
|
if (o !== l) return;
|
|
568
568
|
if (!s) return void (a.value = "unavailable");
|
|
569
|
-
const
|
|
569
|
+
const n = await ie(e, t);
|
|
570
570
|
if (o !== l) return;
|
|
571
|
-
r.value =
|
|
571
|
+
r.value = n, a.value = "ready";
|
|
572
572
|
} catch (e) {
|
|
573
573
|
if (o !== l) return;
|
|
574
574
|
s.value = e instanceof Error ? e : new Error(String(e)), a.value = "error";
|
|
@@ -578,12 +578,12 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
578
578
|
session: r,
|
|
579
579
|
initError: s
|
|
580
580
|
};
|
|
581
|
-
}(d.bridge, d.config), h = l(() => d.panelWidth ? { width: `${d.panelWidth}px` } : void 0), k =
|
|
581
|
+
}(d.bridge, d.config), h = l(() => d.panelWidth ? { width: `${d.panelWidth}px` } : void 0), k = a({
|
|
582
582
|
activeSlideIndex: y(0),
|
|
583
583
|
selectedElementIds: y([]),
|
|
584
584
|
selectedElement: () => null
|
|
585
585
|
}), T = l(() => d.aiPanel ?? k);
|
|
586
|
-
return (e, t) => (v(),
|
|
586
|
+
return (e, t) => (v(), i("div", {
|
|
587
587
|
"data-pptx-ai-panel": "",
|
|
588
588
|
class: "absolute right-0 top-0 z-30 flex h-full w-80 flex-col border-l border-border bg-card shadow-xl max-md:inset-x-0 max-md:top-auto max-md:bottom-0 max-md:h-[75dvh] max-md:w-full max-md:rounded-t-2xl max-md:border-l-0 max-md:border-t max-md:shadow-2xl",
|
|
589
589
|
style: g(h.value)
|
|
@@ -597,7 +597,7 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
597
597
|
class: "ml-auto flex items-center justify-center rounded-sm p-1 text-muted-foreground transition-colors hover:bg-accent max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
598
598
|
onClick: t[0] || (t[0] = (e) => u("close"))
|
|
599
599
|
}, [c(P(oe), { class: "w-4 h-4" })], 8, Dt)
|
|
600
|
-
]), "checking" === P(x) ? (v(),
|
|
600
|
+
]), "checking" === P(x) ? (v(), i("div", Nt, [c(P(H), { class: "w-5 h-5 animate-spin" })])) : "unavailable" === P(x) || "error" === P(x) ? (v(), i("div", Lt, [
|
|
601
601
|
c(P(ae), { class: "w-6 h-6 text-muted-foreground" }),
|
|
602
602
|
p("p", Rt, C(P(m)("pptx.ai.unavailableTitle")), 1),
|
|
603
603
|
p("p", Ht, C(P(b)?.message ?? P(m)("pptx.ai.unavailableHint")), 1)
|
|
@@ -615,7 +615,7 @@ var ke = { class: "border-t border-border p-2" }, we = { class: "flex items-end
|
|
|
615
615
|
"ai-panel"
|
|
616
616
|
])]),
|
|
617
617
|
_: 1
|
|
618
|
-
})) :
|
|
618
|
+
})) : n("", !0)], 4));
|
|
619
619
|
}
|
|
620
620
|
});
|
|
621
621
|
export { zt as default };
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
let e = require("vue");
|
|
2
|
+
var t = (0, require("ooxml-ui/pptx/ai/host").createAiAssistantRegistry)({ owner: "pptx-vue-viewer" }), r = (0, e.defineAsyncComponent)(() => Promise.resolve().then(() => require("./AiChatPanel-CrBPDB11.cjs")));
|
|
3
|
+
Object.defineProperty(exports, "AiChatPanelLazy", {
|
|
4
|
+
enumerable: !0,
|
|
5
|
+
get: function() {
|
|
6
|
+
return r;
|
|
7
|
+
}
|
|
8
|
+
}), Object.defineProperty(exports, "aiAssistants", {
|
|
9
|
+
enumerable: !0,
|
|
10
|
+
get: function() {
|
|
11
|
+
return t;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/ai.cjs
ADDED
package/dist/ai.cjs.br
ADDED
|
Binary file
|
package/dist/ai.cjs.gz
ADDED
|
Binary file
|
package/dist/ai.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { PptxAiAssistant } from 'ooxml-ui/pptx/ai/host';
|
|
2
|
+
import { PptxAiBridge } from 'ooxml-ui/pptx/ai';
|
|
3
|
+
import { PptxAiConfig } from 'ooxml-ui/pptx/ai';
|
|
4
|
+
import { PptxAiConnection } from 'ooxml-ui/pptx/ai';
|
|
5
|
+
import { PptxAiContextStrategy } from 'ooxml-ui/pptx/ai';
|
|
6
|
+
import { PptxAiToolName } from 'ooxml-ui/pptx/ai';
|
|
7
|
+
import { PptxAiWritePolicy } from 'ooxml-ui/pptx/ai';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Create an AI assistant for the viewer's `ai` prop from a `PptxAiConfig`.
|
|
11
|
+
*
|
|
12
|
+
* The handle is opaque and loads nothing. It keeps `config` by reference; create a new
|
|
13
|
+
* handle to change it. Every handle carries the same async chat panel component, so
|
|
14
|
+
* replacing the handle never remounts the chat.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createAiAssistant(config: PptxAiConfig): PptxAiAssistant;
|
|
17
|
+
|
|
18
|
+
export { PptxAiAssistant }
|
|
19
|
+
|
|
20
|
+
export { PptxAiBridge }
|
|
21
|
+
|
|
22
|
+
export { PptxAiConfig }
|
|
23
|
+
|
|
24
|
+
export { PptxAiConnection }
|
|
25
|
+
|
|
26
|
+
export { PptxAiContextStrategy }
|
|
27
|
+
|
|
28
|
+
export { PptxAiToolName }
|
|
29
|
+
|
|
30
|
+
export { PptxAiWritePolicy }
|
|
31
|
+
|
|
32
|
+
export { }
|
package/dist/ai.js
ADDED
package/dist/ai.js.br
ADDED
|
Binary file
|
package/dist/ai.js.gz
ADDED
|
Binary file
|