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.
Files changed (116) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/README.md +1 -1
  3. package/dist/{AiChatPanel-B2RV7TSP.cjs → AiChatPanel-CrBPDB11.cjs} +9 -9
  4. package/dist/AiChatPanel-CrBPDB11.cjs.br +0 -0
  5. package/dist/AiChatPanel-CrBPDB11.cjs.gz +0 -0
  6. package/dist/{AiChatPanel-CMgMfd90.js → AiChatPanel-cLMgIUKT.js} +99 -99
  7. package/dist/AiChatPanel-cLMgIUKT.js.br +0 -0
  8. package/dist/AiChatPanel-cLMgIUKT.js.gz +0 -0
  9. package/dist/ai-8VTpsXre.cjs +13 -0
  10. package/dist/ai-8VTpsXre.cjs.br +2 -0
  11. package/dist/ai-8VTpsXre.cjs.gz +0 -0
  12. package/dist/ai-Cc4rHzx2.js +4 -0
  13. package/dist/ai-Cc4rHzx2.js.br +0 -0
  14. package/dist/ai-Cc4rHzx2.js.gz +0 -0
  15. package/dist/ai.cjs +5 -0
  16. package/dist/ai.cjs.br +0 -0
  17. package/dist/ai.cjs.gz +0 -0
  18. package/dist/ai.d.ts +32 -0
  19. package/dist/ai.js +5 -0
  20. package/dist/ai.js.br +0 -0
  21. package/dist/ai.js.gz +0 -0
  22. package/dist/i18n/de.cjs +421 -1
  23. package/dist/i18n/de.cjs.br +0 -0
  24. package/dist/i18n/de.cjs.gz +0 -0
  25. package/dist/i18n/de.mjs +421 -1
  26. package/dist/i18n/de.mjs.br +0 -0
  27. package/dist/i18n/de.mjs.gz +0 -0
  28. package/dist/i18n/es.cjs +421 -1
  29. package/dist/i18n/es.cjs.br +0 -0
  30. package/dist/i18n/es.cjs.gz +0 -0
  31. package/dist/i18n/es.mjs +421 -1
  32. package/dist/i18n/es.mjs.br +0 -0
  33. package/dist/i18n/es.mjs.gz +0 -0
  34. package/dist/i18n/fr.cjs +421 -1
  35. package/dist/i18n/fr.cjs.br +0 -0
  36. package/dist/i18n/fr.cjs.gz +0 -0
  37. package/dist/i18n/fr.mjs +421 -1
  38. package/dist/i18n/fr.mjs.br +0 -0
  39. package/dist/i18n/fr.mjs.gz +0 -0
  40. package/dist/i18n/zh-CN.cjs +421 -1
  41. package/dist/i18n/zh-CN.cjs.br +0 -0
  42. package/dist/i18n/zh-CN.cjs.gz +0 -0
  43. package/dist/i18n/zh-CN.mjs +421 -1
  44. package/dist/i18n/zh-CN.mjs.br +0 -0
  45. package/dist/i18n/zh-CN.mjs.gz +0 -0
  46. package/dist/index.cjs +47 -47
  47. package/dist/index.cjs.br +0 -0
  48. package/dist/index.cjs.gz +0 -0
  49. package/dist/index.d.ts +127 -22
  50. package/dist/index.js +5 -4
  51. package/dist/index.js.br +0 -0
  52. package/dist/index.js.gz +0 -0
  53. package/dist/internals.cjs +1 -1
  54. package/dist/internals.cjs.br +0 -0
  55. package/dist/internals.cjs.gz +0 -0
  56. package/dist/internals.d.ts +10 -0
  57. package/dist/internals.js +1 -1
  58. package/dist/internals.js.br +0 -0
  59. package/dist/internals.js.gz +0 -0
  60. package/dist/useAiPanelController-B4pdPnXc.js +39 -0
  61. package/dist/useAiPanelController-B4pdPnXc.js.br +0 -0
  62. package/dist/useAiPanelController-B4pdPnXc.js.gz +0 -0
  63. package/dist/useAiPanelController-aOhIHxkq.cjs +46 -0
  64. package/dist/useAiPanelController-aOhIHxkq.cjs.br +0 -0
  65. package/dist/useAiPanelController-aOhIHxkq.cjs.gz +0 -0
  66. package/dist/useController-CYBNpWy-.cjs +2200 -0
  67. package/dist/useController-CYBNpWy-.cjs.br +0 -0
  68. package/dist/useController-CYBNpWy-.cjs.gz +0 -0
  69. package/dist/useController-DFsGhUrb.js +2175 -0
  70. package/dist/useController-DFsGhUrb.js.br +0 -0
  71. package/dist/useController-DFsGhUrb.js.gz +0 -0
  72. package/dist/useViewerSettingsDialog-CUlY9pTL.js +9226 -0
  73. package/dist/useViewerSettingsDialog-CUlY9pTL.js.br +0 -0
  74. package/dist/useViewerSettingsDialog-CUlY9pTL.js.gz +0 -0
  75. package/dist/useViewerSettingsDialog-D3eAqpfN.cjs +10009 -0
  76. package/dist/useViewerSettingsDialog-D3eAqpfN.cjs.br +0 -0
  77. package/dist/useViewerSettingsDialog-D3eAqpfN.cjs.gz +0 -0
  78. package/dist/viewer/index.cjs +3 -3
  79. package/dist/viewer/index.cjs.br +0 -0
  80. package/dist/viewer/index.cjs.gz +0 -0
  81. package/dist/viewer/index.d.ts +283 -79
  82. package/dist/viewer/index.js +3 -3
  83. package/dist/viewer/index.js.br +0 -0
  84. package/dist/viewer/index.js.gz +0 -0
  85. package/dist/{viewer-X0IUMFQ0.js → viewer-DIyyXtzz.js} +8505 -8412
  86. package/dist/viewer-DIyyXtzz.js.br +0 -0
  87. package/dist/viewer-DIyyXtzz.js.gz +0 -0
  88. package/dist/viewer-U2e6K7pU.cjs +29235 -0
  89. package/dist/viewer-U2e6K7pU.cjs.br +0 -0
  90. package/dist/viewer-U2e6K7pU.cjs.gz +0 -0
  91. package/dist/{y-webrtc-jAFe0kDI.js → y-webrtc-CSP7EHTG.js} +52 -52
  92. package/dist/y-webrtc-CSP7EHTG.js.br +0 -0
  93. package/dist/y-webrtc-CSP7EHTG.js.gz +0 -0
  94. package/dist/{y-webrtc-jyWscPMg.cjs → y-webrtc-DydN-o2m.cjs} +1 -1
  95. package/dist/y-webrtc-DydN-o2m.cjs.br +0 -0
  96. package/dist/y-webrtc-DydN-o2m.cjs.gz +0 -0
  97. package/package.json +8 -3
  98. package/dist/AiChatPanel-B2RV7TSP.cjs.br +0 -0
  99. package/dist/AiChatPanel-B2RV7TSP.cjs.gz +0 -0
  100. package/dist/AiChatPanel-CMgMfd90.js.br +0 -0
  101. package/dist/AiChatPanel-CMgMfd90.js.gz +0 -0
  102. package/dist/useViewerSettingsDialog-BKSbIcob.cjs +0 -12195
  103. package/dist/useViewerSettingsDialog-BKSbIcob.cjs.br +0 -0
  104. package/dist/useViewerSettingsDialog-BKSbIcob.cjs.gz +0 -0
  105. package/dist/useViewerSettingsDialog-DGB1V16A.js +0 -11386
  106. package/dist/useViewerSettingsDialog-DGB1V16A.js.br +0 -0
  107. package/dist/useViewerSettingsDialog-DGB1V16A.js.gz +0 -0
  108. package/dist/viewer-CWU-Lo5I.cjs +0 -29148
  109. package/dist/viewer-CWU-Lo5I.cjs.br +0 -0
  110. package/dist/viewer-CWU-Lo5I.cjs.gz +0 -0
  111. package/dist/viewer-X0IUMFQ0.js.br +0 -0
  112. package/dist/viewer-X0IUMFQ0.js.gz +0 -0
  113. package/dist/y-webrtc-jAFe0kDI.js.br +0 -0
  114. package/dist/y-webrtc-jAFe0kDI.js.gz +0 -0
  115. package/dist/y-webrtc-jyWscPMg.cjs.br +0 -0
  116. package/dist/y-webrtc-jyWscPMg.cjs.gz +0 -0
@@ -1,8 +1,8 @@
1
- import { Mr as e } from "./useViewerSettingsDialog-DGB1V16A.js";
2
- import { l as t, x as a } from "./viewer-X0IUMFQ0.js";
3
- import { Fragment as r, Suspense as s, computed as l, createBlock as o, createCommentVNode as i, createElementBlock as n, 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 V, Navigation as K, 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 ie, createAiChatSession as ne, 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";
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(t, { emit: r }) {
19
- const s = t, o = r, { t: i } = e(), d = y(""), u = y(null), g = l(() => d.value.trim().length > 0);
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, t) => (v(), n("div", ke, [p("div", we, [_(p("textarea", {
29
+ }), (e, a) => (v(), i("div", ke, [p("div", we, [_(p("textarea", {
30
30
  ref_key: "textareaRef",
31
31
  ref: u,
32
- "onUpdate:modelValue": t[0] || (t[0] = (e) => d.value = e),
32
+ "onUpdate:modelValue": a[0] || (a[0] = (e) => d.value = e),
33
33
  rows: 1,
34
- placeholder: P(i)("pptx.ai.placeholder"),
35
- "aria-label": P(i)("pptx.ai.placeholder"),
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(), n("button", {
38
+ }, null, 40, Ce), [[T, d.value]]), s.isStreaming ? (v(), i("button", {
39
39
  key: 0,
40
40
  type: "button",
41
- title: P(i)("pptx.ai.stop"),
42
- "aria-label": P(i)("pptx.ai.stop"),
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: t[1] || (t[1] = (e) => o("stop"))
45
- }, [c(P(Y), { class: "w-4 h-4" })], 8, Pe)) : (v(), n("button", {
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(i)("pptx.ai.send"),
50
- "aria-label": P(i)("pptx.ai.send"),
51
- class: x(P(a)("shrink-0 rounded-sm p-1.5 transition-colors", g.value ? "bg-primary text-primary-foreground hover:bg-primary/90" : "text-muted-foreground/50")),
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(t, { emit: s }) {
83
- const u = t, m = s, { t: g } = e(), f = l(() => ue(u.targets, u.slides)), b = l(() => ge(u.targets, u.slides));
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(), n("div", Ie, [p("div", je, [
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), n(r, null, h(f.value, (e) => (v(), n("span", {
90
+ (v(!0), i(r, null, h(f.value, (e) => (v(), i("span", {
91
91
  key: e.key,
92
- class: x(P(a)("inline-flex max-w-[10rem] items-center rounded-full px-2 py-0.5 text-[11px]", t.hasPicks || t.isPinned ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground")),
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
- t.isPinned ? (v(), n("span", Me, C(P(g)("pptx.ai.pinnedFocus")), 1)) : i("", !0),
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(), n("button", {
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)])) : i("", !0),
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": t.pickMode,
108
- class: x(P(a)("rounded-sm p-1 flex items-center justify-center max-md:min-w-[44px]! max-md:min-h-[44px]!", t.pickMode ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent")),
109
- onClick: s[0] || (s[0] = (e) => t.pickMode ? m("stop-pick") : m("start-pick"))
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
- t.hasPicks ? (v(), n("button", {
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(), n("button", {
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: t.isPinned ? P(g)("pptx.ai.clearFocus") : P(g)("pptx.ai.pinFocus"),
122
- "aria-label": t.isPinned ? P(g)("pptx.ai.clearFocus") : P(g)("pptx.ai.pinFocus"),
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) => t.isPinned ? m("clear-pin") : m("pin"))
125
- }, [t.isPinned ? (v(), o(P($), {
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
- ]), t.pickMode ? (v(), n("div", Le, [
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
- ])) : i("", !0)]));
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" }, Ve = {
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
- }, Ke = {
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(), i = y(null);
166
+ const s = t, l = a, { t: o } = e(), n = y(null);
167
167
  function u(e) {
168
- i.value && !i.value.contains(e.target) && l("close");
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(), n("div", {
170
+ return b(() => document.addEventListener("mousedown", u)), f(() => document.removeEventListener("mousedown", u)), (e, t) => (v(), i("div", {
171
171
  ref_key: "root",
172
- ref: i,
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(), n("p", Ve, C(P(o)("pptx.ai.historyEmpty")), 1)) : (v(), n("ul", Ke, [(v(!0), n(r, null, h(s.chats, (e) => (v(), n("li", {
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(t) {
211
- const r = t, { t: s } = e(), c = {
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: V,
219
+ move: K,
220
220
  delete: te,
221
221
  search: G,
222
- nav: K,
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, t) => (v(), n("div", Xe, [
227
+ return (e, a) => (v(), i("div", Xe, [
228
228
  p("div", Ye, [
229
- (v(), o(k(b.value), { class: x(P(a)("w-3.5 h-3.5 shrink-0", u.value ? "text-destructive" : "text-muted-foreground")) }, null, 8, ["class"])),
230
- p("span", { class: x(P(a)("truncate", u.value ? "text-destructive" : "text-foreground")) }, C(f.value.label), 3),
231
- p("span", { class: x(P(a)("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), {
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(), n("div", Ze, C(r.part.errorText), 1)) : i("", !0),
243
- y.value ? (v(), n("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)])) : i("", !0)
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" }, it = {
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
- }, nt = {
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(t) {
268
- const s = t, { t: l } = e(), u = y(null);
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, t) => 0 === s.messages.length ? (v(), n("div", st, [
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(), n("div", it, [
276
- (v(!0), n(r, null, h(s.messages, (e) => (v(), n(r, { key: e.id }, ["user" === e.role || P(ve)(e).length > 0 ? (v(), n("div", nt, [p("div", {
277
- class: x(P(a)("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")),
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), n(r, null, h(P(ve)(e), (e, t) => (v(), n(r, { key: "tool" === e.kind && e.toolCallId || t }, ["text" === e.kind ? (v(), n("p", ct, C(e.text), 1)) : (v(), o(rt, {
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))])])) : i("", !0)], 64))), 128)),
289
- s.isStreaming ? (v(), n("div", ut, [t[0] || (t[0] = p("span", { class: "inline-flex gap-1" }, [
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)])) : i("", !0),
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(), n("div", xt, [
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(), n("ul", bt, [(v(!0), n(r, null, h(m.value, (e, t) => (v(), n("li", {
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))])) : i("", !0),
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
- }, i = e({
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 = i.addToolOutput;
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
- }), n = l(() => "submitted" === i.status.value || "streaming" === i.status.value), p = /* @__PURE__ */ new Set();
373
- return S(i.messages, (e) => {
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: i.messages,
377
- status: i.status,
378
- error: i.error,
379
- isStreaming: n,
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 && i.sendMessage({ text: t });
383
+ 0 !== t.length && n.sendMessage({ text: t });
384
384
  },
385
385
  stop: () => {
386
- i.stop();
386
+ n.stop();
387
387
  },
388
- clearError: () => i.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 = ie({
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 V() {
444
+ function K() {
445
445
  u.aiPanel.flashToolTarget(null), M();
446
446
  }
447
- return (e, t) => (v(), n("div", ht, [
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"])) : i("", !0),
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(), n("div", Tt, [
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
- ])) : i("", !0),
517
- P(w).length > 0 ? (v(), n("div", _t, [p("div", At, [p("span", Et, C(P(m)("pptx.ai.pendingChanges", { count: P(w).length })), 1), P(w).length > 1 ? (v(), n("button", {
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: V
522
- }, C(P(m)("pptx.ai.acceptAll")), 1)) : i("", !0)]), (v(!0), n(r, null, h(P(w), (e) => (v(), o(yt, {
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))])) : i("", !0),
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(a, { emit: r }) {
559
- const d = a, u = r, { t: m } = e(), { state: x, session: f, initError: b } = function(e, t) {
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 i = await ne(e, t);
569
+ const n = await ie(e, t);
570
570
  if (o !== l) return;
571
- r.value = i, a.value = "ready";
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 = t({
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(), n("div", {
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(), n("div", Nt, [c(P(H), { class: "w-5 h-5 animate-spin" })])) : "unavailable" === P(x) || "error" === P(x) ? (v(), n("div", Lt, [
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
- })) : i("", !0)], 4));
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
+ });
@@ -0,0 +1,2 @@
1
+ �`,��� �Ve‚V�Cb�,[���S�8jP���Pv�l.U������KѦ�8O(Mv�Baɴ7���S�:w��Ve��*�Ģ�8��Qw��R�j)����ڱ�ph!/zb��
2
+ �Ǯ��;=�]���� �&�V$�Vr���'p�NZY��.V{�D,-F��#�$��$@vN@QłH��bE�!��Tf��UߴB�>$H���Ha�;��ž�e/���Oյ����+��K�oh�!��|��:��.
Binary file
@@ -0,0 +1,4 @@
1
+ import { defineAsyncComponent as o } from "vue";
2
+ import { createAiAssistantRegistry as r } from "ooxml-ui/pptx/ai/host";
3
+ var t = r({ owner: "pptx-vue-viewer" }), p = o(() => import("./AiChatPanel-cLMgIUKT.js"));
4
+ export { t as n, p as t };
Binary file
Binary file
package/dist/ai.cjs ADDED
@@ -0,0 +1,5 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const e = require("./ai-8VTpsXre.cjs");
3
+ exports.createAiAssistant = function(t) {
4
+ return e.aiAssistants.register(t, e.AiChatPanelLazy);
5
+ };
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
@@ -0,0 +1,5 @@
1
+ import { n as r, t } from "./ai-Cc4rHzx2.js";
2
+ function e(e) {
3
+ return r.register(e, t);
4
+ }
5
+ export { e as createAiAssistant };
package/dist/ai.js.br ADDED
Binary file
package/dist/ai.js.gz ADDED
Binary file