pptx-vanilla-viewer 2.17.1 → 2.19.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 (41) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +63 -24
  3. package/dist/ai-panel-L5ABJ666.js +1 -0
  4. package/dist/ai-panel-Z4NVDEBL.cjs +1 -0
  5. package/dist/chunk-57VHQAFK.js +4 -0
  6. package/dist/chunk-IBLM4JHG.js +2503 -0
  7. package/dist/chunk-JUKBJGYQ.cjs +4 -0
  8. package/dist/chunk-O2ZDCV67.cjs +2503 -0
  9. package/dist/chunk-TZV7ZBUY.js +152 -0
  10. package/dist/chunk-XGPJF4IL.cjs +152 -0
  11. package/dist/i18n/de.cjs +3765 -0
  12. package/dist/i18n/de.d.cts +3 -0
  13. package/dist/i18n/de.d.mts +3 -0
  14. package/dist/i18n/de.mjs +3738 -0
  15. package/dist/i18n/es.cjs +3765 -0
  16. package/dist/i18n/es.d.cts +3 -0
  17. package/dist/i18n/es.d.mts +3 -0
  18. package/dist/i18n/es.mjs +3738 -0
  19. package/dist/i18n/fr.cjs +3765 -0
  20. package/dist/i18n/fr.d.cts +3 -0
  21. package/dist/i18n/fr.d.mts +3 -0
  22. package/dist/i18n/fr.mjs +3738 -0
  23. package/dist/i18n/zh-CN.cjs +3803 -0
  24. package/dist/i18n/zh-CN.d.cts +3 -0
  25. package/dist/i18n/zh-CN.d.mts +3 -0
  26. package/dist/i18n/zh-CN.mjs +3776 -0
  27. package/dist/index.cjs +78 -80
  28. package/dist/index.d.ts +7 -12651
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +78 -80
  31. package/dist/internals.cjs +1 -0
  32. package/dist/internals.d.ts +2 -0
  33. package/dist/internals.js +1 -0
  34. package/dist/styles.css +17 -16
  35. package/dist/transition-overlay-CFF7agjg.d.ts +12860 -0
  36. package/dist/transition-overlay-CFF7agjg.d.ts.map +1 -0
  37. package/package.json +51 -6
  38. package/dist/ai-panel-3SXCA56Y.cjs +0 -1
  39. package/dist/ai-panel-QMFZSLXF.js +0 -1
  40. package/dist/chunk-MVGP6Q7E.js +0 -2638
  41. package/dist/chunk-SLYBMMV5.cjs +0 -2638
package/CHANGELOG.md CHANGED
@@ -7,6 +7,50 @@ A release listed with no entries carried no Conventional Commit in this package'
7
7
  scope: scripts/release-plan.mjs re-releases a package whenever any of its files
8
8
  change, not only on conventional ones.
9
9
 
10
+ ## [2.18.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-vanilla-viewer@2.18.0) - 2026-09-14
11
+
12
+ ### Features
13
+
14
+ - **i18n:** Add Simplified Chinese reference locale (by @yunfeizhu) ([4f65031](https://github.com/ChristopherVR/pptx-viewer/commit/4f650313634f2dd3f9ca30a01f742ea4a5349b0f))
15
+ - **core:** Preserve smart art diagram parts (by @ChristopherVR) ([187e0e1](https://github.com/ChristopherVR/pptx-viewer/commit/187e0e17c4e8446fb1b745bb77e96fd44710ed34))
16
+
17
+ ### Bug Fixes
18
+
19
+ - **vanilla:** CSS not matching React (by @ChristopherVR) ([352a654](https://github.com/ChristopherVR/pptx-viewer/commit/352a654bae27ef1d2da9247d01589d735ea62b7b))
20
+ - **shared:** Retain list state after upstream rebase (by @ChristopherVR) ([268a1f1](https://github.com/ChristopherVR/pptx-viewer/commit/268a1f132b664a6fec4df127a3588cf0e7748ff1))
21
+ - **core:** Retain original duplicate shape ids (by @ChristopherVR) ([74d595c](https://github.com/ChristopherVR/pptx-viewer/commit/74d595cbc380af69faf6cd47932475d33b139943))
22
+ - **shared:** Restore paragraph remap helpers (by @ChristopherVR) ([e07554c](https://github.com/ChristopherVR/pptx-viewer/commit/e07554c9bffbd86a4a1c273a35572f2a3a77e0bf))
23
+ - **shared:** Expose freeform geometry helpers (by @ChristopherVR) ([96e54a5](https://github.com/ChristopherVR/pptx-viewer/commit/96e54a523e185a09e94d8d15ed5cf8b06b47a8b8))
24
+ - **core:** Evaluate connector and cloud preset geometry (by @ChristopherVR) ([5f34ed5](https://github.com/ChristopherVR/pptx-viewer/commit/5f34ed520cc1c86721b059d5b9a5e7e1e6277b49))
25
+ - **core:** Evaluate connector and cloud preset geometry (by @ChristopherVR) ([8e2608a](https://github.com/ChristopherVR/pptx-viewer/commit/8e2608a397160c8640bb6801da6cfdc273beb60a))
26
+ - **shared:** Remove code scanning findings (by @ChristopherVR) ([ccf02f2](https://github.com/ChristopherVR/pptx-viewer/commit/ccf02f2d1065e4fda3233fe517e06d95ec1a5c0e))
27
+ - **core:** Avoid namespace scan backtracking (by @ChristopherVR) ([2c3f038](https://github.com/ChristopherVR/pptx-viewer/commit/2c3f038420d96af57c01a26da5fbc5752c1147c9))
28
+
29
+ ### Documentation
30
+
31
+ - **repo:** Sync guides and references with implementation (by @ChristopherVR) ([70440f6](https://github.com/ChristopherVR/pptx-viewer/commit/70440f6f10297ba7847662361c6d6f23d35ad9e2))
32
+
33
+ ### Testing
34
+
35
+ - **core:** Stabilize the Vitest 5 suite (by @ChristopherVR) ([83b4cc5](https://github.com/ChristopherVR/pptx-viewer/commit/83b4cc53b4846da72494e4b81d8530546e9ad888))
36
+ - **repo:** Stabilize Vitest 5 concurrency (by @ChristopherVR) ([6b151b3](https://github.com/ChristopherVR/pptx-viewer/commit/6b151b352ba8c7b78013696e91c3040fb95a929f))
37
+
38
+ ### Dependencies
39
+
40
+ - **deps:** Bump the minor-and-patch group with 2 updates (by @dependabot[bot]) ([7bed5e5](https://github.com/ChristopherVR/pptx-viewer/commit/7bed5e56a34cbffbe7e8604a76344a33a05e7f12))
41
+ - **deps:** Bump lucide from 1.46.0 to 1.44.0 (by @dependabot[bot]) ([a516c68](https://github.com/ChristopherVR/pptx-viewer/commit/a516c682a15cc85b5537002003eade5be523d484))
42
+ - **deps:** Rebase lint-staged update (by @ChristopherVR) ([c2a649e](https://github.com/ChristopherVR/pptx-viewer/commit/c2a649ee2df1e29a963aec29cb109d9c70ead6ff))
43
+
44
+ ### Chores
45
+
46
+ - **deps-dev:** Bump vitest from 4.1.11 to 5.0.0 (by @dependabot[bot]) ([5f8fe4f](https://github.com/ChristopherVR/pptx-viewer/commit/5f8fe4f851d33a02545556fd63238a55cf5f868a))
47
+
48
+ ## [2.17.1](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-vanilla-viewer@2.17.1) - 2026-09-14
49
+
50
+ ### Bug Fixes
51
+
52
+ - **i18n:** Localize inspector and ribbon controls (by @yunfeizhu) ([a657a76](https://github.com/ChristopherVR/pptx-viewer/commit/a657a766d653106f04d50f7b13a94a6c12c77f1e))
53
+
10
54
  ## [2.17.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-vanilla-viewer@2.17.0) - 2026-09-13
11
55
 
12
56
  ### Features
package/README.md CHANGED
@@ -21,8 +21,17 @@ The rendering is done by the framework-agnostic [`pptx-viewer-core`](https://www
21
21
  npm install pptx-vanilla-viewer
22
22
  ```
23
23
 
24
+ Install `three` only when you enable a 3D SmartArt or 3D chart option. The viewer falls back to
25
+ SVG when it is absent. Install `yjs` with `y-websocket` or `y-webrtc` only for collaboration.
26
+
24
27
  ## Usage
25
28
 
29
+ For a copy-paste Vite project, including the `index.html`, `src/main.js`, and `public/` file
30
+ layout, see [the Vanilla Getting Started guide](https://christophervr.github.io/pptx-viewer/vanilla/getting-started/).
31
+ Place a local deck in `public/` and reference it with a root URL such as `/presentation.pptx`.
32
+ The viewer opens a successfully loaded `source` automatically; `onLoad` is for your application
33
+ code and does not need to click internal viewer controls.
34
+
26
35
  ```ts
27
36
  import { createPptxViewer } from 'pptx-vanilla-viewer';
28
37
 
@@ -94,30 +103,32 @@ See the [cross-binding defaults](../../docs/guide/viewport-fit.md).
94
103
  All options are optional except the container element itself. Beyond the ones
95
104
  shown above:
96
105
 
97
- | Option | Type | Default | Description |
98
- | -------------------------------------- | ----------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------- |
99
- | `source` | `string \| ArrayBuffer \| Uint8Array \| Blob \| File` | - | The presentation to open (URL or bytes). Omit to start empty and call `loadFile`/`loadUrl`. |
100
- | `fonts` | `ViewerFontSource[]` | - | Licensed font sources supplied by the host application. |
101
- | `theme` | `ViewerTheme` | - | Chrome theme (colors, radius, CSS vars). |
102
- | `fileName` | `string` | - | Display name shown in the title bar. |
103
- | `locale` / `messages` | `string` / `TranslationMessages` | `'en'` | UI locale and per-locale `pptx.*` dictionaries (see [i18n](#i18n)). |
104
- | `initialSlide` | `number` | `0` | Zero-based slide shown after load. |
105
- | `editable` | `boolean` | `false` | Enable editing (see [Editing](#editing)). |
106
- | `showToolbar` | `boolean` | `true` | Whole ribbon/title-bar/status-bar chrome. |
107
- | `showThumbnails` | `boolean` | `true` | Thumbnail sidebar. |
108
- | `showFormatToolbar` | `boolean` | `true` | Editing format toolbar row (visible only while editing). |
109
- | `showInspector` | `boolean` | `true` | Property inspector panel (visible only while editing). |
110
- | `hiddenActions` | `ToolbarActionId[]` | - | Hide individual buttons/tabs (see [Toolbar customization](#toolbar-customization)). |
111
- | `registry` | `ElementRendererRegistry` | - | Custom element-renderer registry (see [Element coverage](#element-coverage)). |
112
- | `smartArt3D` | `boolean` | `false` | Opt-in Three.js 3D SmartArt renderer (optional `three` peer, lazily imported). |
113
- | `autosave` | `boolean` | `false` | Debounced crash-recovery autosave to IndexedDB. |
114
- | `autosaveIntervalMs` | `number` | `2000` | Autosave debounce window. |
115
- | `autosaveFilePath` | `string` | `'presentation.pptx'` | IndexedDB recovery key for autosave snapshots. |
116
- | `collaboration` | `CollaborationConfig` | - | Start a Yjs collaboration session immediately (y-websocket or serverless y-webrtc). |
117
- | `shareDefaults` | `{ roomId?, userName?, serverUrl? }` | - | Prefilled values for the Share/Broadcast dialogs. |
118
- | `availableThemes` / `availableLocales` | catalog entries | - | Choices offered by File > Options. |
119
- | `onThemeChange` / `onLocaleChange` | `(key: string) => void` | - | Host hooks for the File > Options pickers (host owns persistence when supplied). |
120
- | `accountAuth` | `AccountAuthConfig` | - | Optional sign-in hook point for File > Account. |
106
+ | Option | Type | Default | Description |
107
+ | -------------------------------------------------------------------------- | ----------------------------------------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
108
+ | `source` | `string \| ArrayBuffer \| Uint8Array \| Blob \| File` | - | The presentation to open (URL or bytes). Omit to start empty and call `loadFile`/`loadUrl`. |
109
+ | `fonts` | `ViewerFontSource[]` | - | Licensed font sources supplied by the host application. |
110
+ | `theme` | `ViewerTheme` | - | Chrome theme (colors, radius, CSS vars). |
111
+ | `fileName` | `string` | - | Display name shown in the title bar. |
112
+ | `locale` / `messages` | `string` / `TranslationMessages` | `'en'` | UI locale and per-locale `pptx.*` dictionaries (see [i18n](#i18n)). |
113
+ | `initialSlide` | `number` | `0` | Zero-based slide shown after load. |
114
+ | `editable` | `boolean` | `false` | Enable editing (see [Editing](#editing)). |
115
+ | `showToolbar` | `boolean` | `true` | Whole ribbon/title-bar/status-bar chrome. |
116
+ | `showThumbnails` | `boolean` | `true` | Thumbnail sidebar. |
117
+ | `showFormatToolbar` | `boolean` | `true` | Editing format toolbar row (visible only while editing). |
118
+ | `showInspector` | `boolean` | `true` | Property inspector panel (visible only while editing). |
119
+ | `hiddenActions` | `ToolbarActionId[]` | - | Hide individual buttons/tabs (see [Toolbar customization](#toolbar-customization)). |
120
+ | `registry` | `ElementRendererRegistry` | - | Custom element-renderer registry (see [Element coverage](#element-coverage)). |
121
+ | `smartArt3D` | `boolean` | `false` | Opt-in Three.js 3D SmartArt renderer (optional `three` peer, lazily imported). |
122
+ | `surfaceChart3D`, `barChart3D`, `lineChart3D`, `areaChart3D`, `pieChart3D` | `boolean` | `false` | Independently opt in to interactive Three.js renderers for the matching 3D chart kinds; each falls back to SVG when WebGL is unavailable. |
123
+ | `ai` | `PptxAiConfig` | - | Optional AI assistant configuration. The SDK peer loads only when its panel is opened. |
124
+ | `autosave` | `boolean` | `true` | Debounced crash-recovery autosave to IndexedDB. |
125
+ | `autosaveIntervalMs` | `number` | File > Options cadence | Autosave debounce window. |
126
+ | `autosaveFilePath` | `string` | `'presentation.pptx'` | IndexedDB recovery key for autosave snapshots. |
127
+ | `collaboration` | `CollaborationConfig` | - | Start a Yjs collaboration session immediately (y-websocket or serverless y-webrtc). |
128
+ | `shareDefaults` | `{ roomId?, userName?, serverUrl? }` | - | Prefilled values for the Share/Broadcast dialogs. |
129
+ | `availableThemes` / `availableLocales` | catalog entries | - | Choices offered by File > Options. |
130
+ | `onThemeChange` / `onLocaleChange` | `(key: string) => void` | - | Host hooks for the File > Options pickers (host owns persistence when supplied). |
131
+ | `accountAuth` | `AccountAuthConfig` | - | Optional sign-in hook point for File > Account. |
121
132
 
122
133
  Callbacks: `onLoad`, `onError`, `onSlideChange`, `onZoomChange`,
123
134
  `onPresentationChange`, `onChange` (any document mutation), `onDirtyChange`,
@@ -329,6 +340,34 @@ Be aware of what this buys you and what it doesn't:
329
340
  not reusing the bundled editor logic; `createPptxViewer` remains the
330
341
  supported path for a complete, batteries-included editor.
331
342
 
343
+ ### Internal building blocks & slide-transition helpers
344
+
345
+ Most of this package's cross-framework logic (colour/geometry/connector/animation/chart math,
346
+ slide transitions, and more) lives in `pptx-viewer-shared`, an internal package that is **never
347
+ published to npm**. The framework-neutral slide-transition resolver/keyframes
348
+ (`resolveSlideTransition`, `resolveTransitionDurationMs`, `SLIDE_TRANSITION_KEYFRAMES`) and
349
+ `playTransitionOverlay` (the DOM-level driver behind presentation mode's slide-change animation)
350
+ are re-exported from the `pptx-vanilla-viewer/internals` subpath, not covered by semver, so you
351
+ never need `pptx-viewer-shared` yourself:
352
+
353
+ ```ts
354
+ import { resolveSlideTransition, playTransitionOverlay } from 'pptx-vanilla-viewer/internals';
355
+ ```
356
+
357
+ ## Reference translations
358
+
359
+ Optional French, Spanish, German, and Simplified Chinese dictionaries ship with
360
+ this package. Import only the language you need:
361
+
362
+ ```ts
363
+ import { translationsZhCN } from 'pptx-vanilla-viewer/i18n/zh-CN';
364
+ ```
365
+
366
+ The other subpaths are `i18n/fr` (`translationsFr`), `i18n/es`
367
+ (`translationsEs`), and `i18n/de` (`translationsDe`). See the
368
+ [localization guide](https://christophervr.github.io/pptx-viewer/guide/localization)
369
+ for registration and runtime switching. Existing English imports are unchanged.
370
+
332
371
  ## License
333
372
 
334
373
  Apache-2.0. See `LICENSE` and `NOTICE`.
@@ -0,0 +1 @@
1
+ import {w,K as K$1,o,m,n,f,t,j,k,l,s,r,q as q$1,c}from'./chunk-TZV7ZBUY.js';import'./chunk-IBLM4JHG.js';import'./chunk-62D2TNHX.js';function K(o){let{doc:t,t:n,controller:i}=o,a=w(t,"div","pptxv-ai-focus"),h=(p,m,l)=>{let s=w(t,"button","pptxv-ai-focus-btn");return s.type="button",s.title=m,s.setAttribute("aria-label",m),s.appendChild(K$1(t,p)),s.addEventListener("click",l),s},x=()=>{a.replaceChildren();let p=i.getEffectiveTargets(),m=i.hasPicks(),l$1=i.isPinned(),s=i.isPicking(),g=w(t,"div","pptxv-ai-focus-row"),f=w(t,"span","pptxv-ai-focus-label");f.textContent=n("pptx.ai.focusScope"),g.appendChild(f);for(let r of j(p,o.getSlides())){let b=w(t,"span","pptxv-ai-focus-chip");(m||l$1)&&b.classList.add("is-strong"),b.title=r.title,b.textContent=r.label,g.appendChild(b);}if(l$1){let r=w(t,"span","pptxv-ai-focus-pinned");r.textContent=n("pptx.ai.pinnedFocus"),g.appendChild(r);}let C=w(t,"div","pptxv-ai-focus-actions"),d=k(p,o.getSlides());if(d){let r=w(t,"button","pptxv-ai-focus-merge");r.type="button",r.append(K$1(t,"git-merge"),t.createTextNode(n("pptx.ai.mergeSelectedTables"))),r.addEventListener("click",()=>o.onSendDirective(l(d.slideIndex,d.elementIdA,d.elementIdB))),C.appendChild(r);}let y=h("crosshair",n("pptx.ai.pickElement"),()=>s?i.stopPicking():i.startPicking());if(y.setAttribute("aria-pressed",String(s)),y.classList.toggle("is-active",s),C.appendChild(y),m?C.appendChild(h("close",n("pptx.ai.pickClear"),()=>i.clearPicks())):l$1?C.appendChild(h("pin-off",n("pptx.ai.clearFocus"),()=>i.clearPinnedFocus())):C.appendChild(h("pin",n("pptx.ai.pinFocus"),()=>i.pinFocus())),g.appendChild(C),a.appendChild(g),s){let r=w(t,"div","pptxv-ai-focus-pick"),b=K$1(t,"crosshair");b.classList.add("pptxv-ai-focus-pick-icon");let k=w(t,"span","pptxv-ai-focus-pick-hint");k.textContent=n("pptx.ai.pickElementHint");let T=w(t,"button","pptxv-ai-focus-pick-done");T.type="button",T.textContent=n("pptx.ai.pickDone"),T.addEventListener("click",()=>i.stopPicking()),r.append(b,k,T),a.appendChild(r);}},c=i.subscribe(x);return x(),{el:a,destroy(){c(),a.remove();}}}function O(o){let{doc:t,t:n$1}=o,i=w(t,"button","pptxv-ai-chats");i.type="button",i.append(K$1(t,"history"),t.createTextNode(n$1("pptx.ai.chats")));let a=w(t,"div","pptxv-ai-history");a.hidden=true;let h=w(t,"div","pptxv-ai-history-head"),x=w(t,"span","pptxv-ai-history-title");x.textContent=n$1("pptx.ai.historyTitle");let c=w(t,"button","pptxv-ai-history-new");c.type="button",c.append(K$1(t,"plus"),t.createTextNode(n$1("pptx.ai.newChat"))),h.append(x,c);let p=w(t,"div","pptxv-ai-history-body"),m=w(t,"p","pptxv-ai-history-hint");m.textContent=n$1("pptx.ai.historyHint"),a.append(h,p,m);let l=n({deckId:o.deckId,store:o.store,getMessages:o.getMessages,setMessages:o.setMessages,untitledLabel:n$1("pptx.ai.untitledChat"),onChatsChanged:()=>s()});function s(){p.replaceChildren();let f=l.chats();if(f.length===0){let d=w(t,"p","pptxv-ai-history-empty");d.textContent=n$1("pptx.ai.historyEmpty"),p.appendChild(d);return}let C=w(t,"ul","pptxv-ai-history-list");for(let d of f){let y=w(t,"li","pptxv-ai-history-row"),r=w(t,"button","pptxv-ai-history-resume");r.type="button",r.classList.toggle("is-active",d.id===l.activeChatId());let b=w(t,"span","pptxv-ai-history-text"),k=w(t,"span","pptxv-ai-history-name");k.textContent=d.title||n$1("pptx.ai.untitledChat");let T=w(t,"span","pptxv-ai-history-meta");T.textContent=n$1("pptx.ai.messageCount",{count:d.messageCount}),b.append(k,T),r.append(K$1(t,"comment"),b),r.addEventListener("click",()=>{l.resumeChat(d.id),a.hidden=true;});let P=w(t,"button","pptxv-ai-history-delete");P.type="button",P.title=n$1("pptx.ai.deleteChat"),P.setAttribute("aria-label",n$1("pptx.ai.deleteChat")),P.appendChild(K$1(t,"trash")),P.addEventListener("click",()=>{l.deleteChat(d.id);}),y.append(r,P),C.appendChild(y);}p.appendChild(C);}s(),i.addEventListener("click",()=>{a.hidden=!a.hidden;}),c.addEventListener("click",()=>{l.newChat(),a.hidden=true;});let g=f=>{a.hidden||!(f.target instanceof Node)||!a.contains(f.target)&&!i.contains(f.target)&&(a.hidden=true);};return t.addEventListener("mousedown",g),{button:i,el:a,notifyMessagesChanged:()=>l.notifyMessagesChanged(),destroy(){t.removeEventListener("mousedown",g),l.dispose(),i.remove(),a.remove();}}}var _={view:"eye",text:"text-box",shape:"shapes",theme:"font-color",table:"table",slide:"layout",chart:"chart",move:"move-right",delete:"trash",search:"search",nav:"move-right",animation:"play",notes:"sticky-note",tool:"wrench"};function W(o,t,n){let i=t.state==="output-error",a=t.state==="output-available",h=!i&&!a,x=s(t.toolName,t.input,h?"present":"past"),c=w(o,"div","pptxv-ai-tool"),p=w(o,"div","pptxv-ai-tool-head"),m=K$1(o,_[x.icon]??"wrench");m.classList.add("pptxv-ai-tool-icon");let l=w(o,"span","pptxv-ai-tool-name");l.textContent=x.label;let s$1=w(o,"span","pptxv-ai-tool-state");if(i?(s$1.classList.add("is-error"),s$1.append(K$1(o,"alert"),o.createTextNode(n("pptx.ai.toolFailed")))):a?(s$1.classList.add("is-done"),s$1.append(K$1(o,"check"),o.createTextNode(n("pptx.ai.toolDone")))):(s$1.classList.add("is-running"),s$1.textContent=n("pptx.ai.toolRunning")),p.append(m,l,s$1),c.appendChild(p),i&&t.errorText){let f=w(o,"div","pptxv-ai-tool-error");f.textContent=t.errorText,c.appendChild(f);}let g=r(t.input);if(g){let f=w(o,"details","pptxv-ai-tool-details"),C=w(o,"summary");C.textContent=n("pptx.ai.toolDetails");let d=w(o,"div","pptxv-ai-tool-raw");d.textContent=`${q$1(t.toolName)}: ${g}`,f.append(C,d),c.appendChild(f);}return c}function q(o,t,n,i){t.replaceChildren();for(let a of n){if(a.role==="system")continue;let h=a.role==="user",x=f(a);if(x.length===0&&!h)continue;let c=w(o,"div",`pptxv-ai-msg pptxv-ai-msg-${a.role}`),p=w(o,"div","pptxv-ai-msg-avatar");p.setAttribute("aria-label",i(h?"pptx.ai.you":"pptx.ai.assistant")),p.appendChild(K$1(o,h?"comment":"sparkles"));let m=w(o,"div","pptxv-ai-msg-body");for(let l of x)if(l.kind==="text"){let s=w(o,"div","pptxv-ai-msg-text");s.textContent=l.text,m.appendChild(s);}else m.appendChild(W(o,l,i));c.append(p,m),t.appendChild(c);}}function G(o,t,n,i,a){if(t.replaceChildren(),t.hidden=n.length===0,n.length===0)return;let h=w(o,"div","pptxv-ai-proposals-header"),x=w(o,"span","pptxv-ai-proposals-title");if(x.textContent=i("pptx.ai.pendingChanges",{count:n.length}),h.appendChild(x),n.length>1){let c=w(o,"button","pptxv-ai-proposal-btn is-accept-all");c.type="button",c.textContent=i("pptx.ai.acceptAll"),c.addEventListener("click",()=>a.acceptAll()),h.appendChild(c);}t.appendChild(h);for(let c of n)t.appendChild(tt(o,c,i,a));}function tt(o,t,n,i){let a=w(o,"div","pptxv-ai-proposal");a.dataset.proposalId=t.id;let h=w(o,"div","pptxv-ai-proposal-eyebrow");h.textContent=n("pptx.ai.proposedChange"),a.appendChild(h);let x=w(o,"div","pptxv-ai-proposal-label");if(x.textContent=t.label,a.appendChild(x),t.summary.length>0){let l=w(o,"ul","pptxv-ai-proposal-summary");for(let s of t.summary){let g=w(o,"li");g.textContent=c(s),l.appendChild(g);}a.appendChild(l);}let c$1=w(o,"div","pptxv-ai-proposal-actions"),p=w(o,"button","pptxv-ai-proposal-btn is-accept");p.type="button",p.append(K$1(o,"check"),o.createTextNode(n("pptx.ai.accept"))),p.addEventListener("click",()=>i.accept(t.id));let m=w(o,"button","pptxv-ai-proposal-btn is-reject");return m.type="button",m.append(K$1(o,"close"),o.createTextNode(n("pptx.ai.reject"))),m.addEventListener("click",()=>i.reject(t.id)),c$1.append(p,m),a.appendChild(c$1),a}async function wt(o$1){let{doc:t$1,host:n,t:i}=o$1;n.replaceChildren();let a=w(t$1,"div","pptxv-ai-header"),h=w(t$1,"span","pptxv-ai-title");h.textContent=i("pptx.ai.title");let x=w(t$1,"button","pptxv-ai-close");x.type="button",x.title=i("pptx.ai.close"),x.setAttribute("aria-label",i("pptx.ai.close")),x.appendChild(K$1(t$1,"close")),x.addEventListener("click",()=>o$1.onClose?.()),a.append(K$1(t$1,"sparkles"),h,x);let c,p=o$1.controller,m$1=p?K({doc:t$1,t:i,controller:p,getSlides:()=>o$1.bridge.getSlides(),onSendDirective:u=>{c?.sendMessage(u);}}):null,l=w(t$1,"div","pptxv-ai-messages");l.setAttribute("role","log"),l.setAttribute("aria-live","polite");let s=w(t$1,"div","pptxv-ai-empty");s.textContent=i("pptx.ai.emptyHint"),l.appendChild(s);let g=w(t$1,"div","pptxv-ai-proposals");g.hidden=true;let f$1=w(t$1,"div","pptxv-ai-error");f$1.setAttribute("role","alert"),f$1.hidden=true;let C=w(t$1,"form","pptxv-ai-composer"),d=w(t$1,"textarea","pptxv-ai-input");d.rows=2,d.placeholder=i("pptx.ai.placeholder"),d.setAttribute("aria-label",i("pptx.ai.placeholder"));let y=w(t$1,"button","pptxv-ai-send");y.type="submit",y.setAttribute("aria-label",i("pptx.ai.send")),y.appendChild(K$1(t$1,"send")),C.append(d,y),n.append(a,...m$1?[m$1.el]:[],l,g,f$1,C);try{c=await(o$1.createChat??o)({bridge:o$1.bridge,config:o$1.config});}catch{return s.textContent=i("pptx.ai.unavailableTitle"),d.disabled=true,y.disabled=true,m$1?.destroy(),{destroy:()=>n.replaceChildren()}}let r=c,b=O({doc:t$1,t:i,deckId:m(o$1.bridge),store:o$1.historyStore,getMessages:()=>r.getSnapshot().messages,setMessages:u=>r.setMessages(u)});a.insertBefore(b.button,x),n.appendChild(b.el);let k=r.subscribe(()=>b.notifyMessagesChanged()),T=new Set,P=u=>{if(!p)return;let A=u.messages.flatMap(Y=>f(Y).filter(Z=>Z.kind==="tool")).at(-1);if(!A||A.kind!=="tool"||A.state==="input-streaming"||T.has(A.toolCallId))return;T.add(A.toolCallId);let L=t(A.toolName,A.input);L&&L.slideIndex!==void 0&&o$1.goToSlide?.(L.slideIndex),p.flashToolTarget(L);},M=u=>{q(t$1,l,u.messages,i),s.hidden=u.messages.length>0,u.messages.length===0&&l.appendChild(s),G(t$1,g,r.proposals.list(),i,{accept:A=>{p?.flashToolTarget(null),r.proposals.apply(A),M(r.getSnapshot());},reject:A=>{r.proposals.revert(A),M(r.getSnapshot());},acceptAll:()=>{p?.flashToolTarget(null),r.proposals.acceptAll(),M(r.getSnapshot());}});let w=u.status==="submitted"||u.status==="streaming";n.classList.toggle("is-busy",w),y.setAttribute("aria-label",i(w?"pptx.ai.stop":"pptx.ai.send")),f$1.hidden=!u.error,f$1.textContent=u.error?i("pptx.ai.errorPrefix"):"",l.scrollTop=l.scrollHeight,P(u);},S=()=>{if(n.classList.contains("is-busy")){r.stop();return}let u=d.value.trim();u&&(d.value="",r.sendMessage(u));};C.addEventListener("submit",u=>{u.preventDefault(),S();}),d.addEventListener("keydown",u=>{u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),S());});let I=p?.getPrefill().nonce??0,J=()=>{if(!p)return;let u=p.getPrefill();u.nonce!==I&&(I=u.nonce,d.value=u.text,d.focus());},Q=p?.subscribe(J),X=r.subscribe(M);return M(r.getSnapshot()),{changeAnimator:r.changeAnimator,destroy(){X(),k(),b.destroy(),Q?.(),m$1?.destroy(),n.replaceChildren();}}}export{wt as createAiPanel};
@@ -0,0 +1 @@
1
+ 'use strict';var chunkXGPJF4IL_cjs=require('./chunk-XGPJF4IL.cjs');require('./chunk-O2ZDCV67.cjs'),require('./chunk-B5PFHICE.cjs');function K(o){let{doc:t,t:n,controller:i}=o,a=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-focus"),h=(p,m,l)=>{let s=chunkXGPJF4IL_cjs.w(t,"button","pptxv-ai-focus-btn");return s.type="button",s.title=m,s.setAttribute("aria-label",m),s.appendChild(chunkXGPJF4IL_cjs.K(t,p)),s.addEventListener("click",l),s},x=()=>{a.replaceChildren();let p=i.getEffectiveTargets(),m=i.hasPicks(),l=i.isPinned(),s=i.isPicking(),g=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-focus-row"),f=chunkXGPJF4IL_cjs.w(t,"span","pptxv-ai-focus-label");f.textContent=n("pptx.ai.focusScope"),g.appendChild(f);for(let r of chunkXGPJF4IL_cjs.j(p,o.getSlides())){let b=chunkXGPJF4IL_cjs.w(t,"span","pptxv-ai-focus-chip");(m||l)&&b.classList.add("is-strong"),b.title=r.title,b.textContent=r.label,g.appendChild(b);}if(l){let r=chunkXGPJF4IL_cjs.w(t,"span","pptxv-ai-focus-pinned");r.textContent=n("pptx.ai.pinnedFocus"),g.appendChild(r);}let C=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-focus-actions"),d=chunkXGPJF4IL_cjs.k(p,o.getSlides());if(d){let r=chunkXGPJF4IL_cjs.w(t,"button","pptxv-ai-focus-merge");r.type="button",r.append(chunkXGPJF4IL_cjs.K(t,"git-merge"),t.createTextNode(n("pptx.ai.mergeSelectedTables"))),r.addEventListener("click",()=>o.onSendDirective(chunkXGPJF4IL_cjs.l(d.slideIndex,d.elementIdA,d.elementIdB))),C.appendChild(r);}let y=h("crosshair",n("pptx.ai.pickElement"),()=>s?i.stopPicking():i.startPicking());if(y.setAttribute("aria-pressed",String(s)),y.classList.toggle("is-active",s),C.appendChild(y),m?C.appendChild(h("close",n("pptx.ai.pickClear"),()=>i.clearPicks())):l?C.appendChild(h("pin-off",n("pptx.ai.clearFocus"),()=>i.clearPinnedFocus())):C.appendChild(h("pin",n("pptx.ai.pinFocus"),()=>i.pinFocus())),g.appendChild(C),a.appendChild(g),s){let r=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-focus-pick"),b=chunkXGPJF4IL_cjs.K(t,"crosshair");b.classList.add("pptxv-ai-focus-pick-icon");let k=chunkXGPJF4IL_cjs.w(t,"span","pptxv-ai-focus-pick-hint");k.textContent=n("pptx.ai.pickElementHint");let T=chunkXGPJF4IL_cjs.w(t,"button","pptxv-ai-focus-pick-done");T.type="button",T.textContent=n("pptx.ai.pickDone"),T.addEventListener("click",()=>i.stopPicking()),r.append(b,k,T),a.appendChild(r);}},c=i.subscribe(x);return x(),{el:a,destroy(){c(),a.remove();}}}function O(o){let{doc:t,t:n}=o,i=chunkXGPJF4IL_cjs.w(t,"button","pptxv-ai-chats");i.type="button",i.append(chunkXGPJF4IL_cjs.K(t,"history"),t.createTextNode(n("pptx.ai.chats")));let a=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-history");a.hidden=true;let h=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-history-head"),x=chunkXGPJF4IL_cjs.w(t,"span","pptxv-ai-history-title");x.textContent=n("pptx.ai.historyTitle");let c=chunkXGPJF4IL_cjs.w(t,"button","pptxv-ai-history-new");c.type="button",c.append(chunkXGPJF4IL_cjs.K(t,"plus"),t.createTextNode(n("pptx.ai.newChat"))),h.append(x,c);let p=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-history-body"),m=chunkXGPJF4IL_cjs.w(t,"p","pptxv-ai-history-hint");m.textContent=n("pptx.ai.historyHint"),a.append(h,p,m);let l=chunkXGPJF4IL_cjs.n({deckId:o.deckId,store:o.store,getMessages:o.getMessages,setMessages:o.setMessages,untitledLabel:n("pptx.ai.untitledChat"),onChatsChanged:()=>s()});function s(){p.replaceChildren();let f=l.chats();if(f.length===0){let d=chunkXGPJF4IL_cjs.w(t,"p","pptxv-ai-history-empty");d.textContent=n("pptx.ai.historyEmpty"),p.appendChild(d);return}let C=chunkXGPJF4IL_cjs.w(t,"ul","pptxv-ai-history-list");for(let d of f){let y=chunkXGPJF4IL_cjs.w(t,"li","pptxv-ai-history-row"),r=chunkXGPJF4IL_cjs.w(t,"button","pptxv-ai-history-resume");r.type="button",r.classList.toggle("is-active",d.id===l.activeChatId());let b=chunkXGPJF4IL_cjs.w(t,"span","pptxv-ai-history-text"),k=chunkXGPJF4IL_cjs.w(t,"span","pptxv-ai-history-name");k.textContent=d.title||n("pptx.ai.untitledChat");let T=chunkXGPJF4IL_cjs.w(t,"span","pptxv-ai-history-meta");T.textContent=n("pptx.ai.messageCount",{count:d.messageCount}),b.append(k,T),r.append(chunkXGPJF4IL_cjs.K(t,"comment"),b),r.addEventListener("click",()=>{l.resumeChat(d.id),a.hidden=true;});let P=chunkXGPJF4IL_cjs.w(t,"button","pptxv-ai-history-delete");P.type="button",P.title=n("pptx.ai.deleteChat"),P.setAttribute("aria-label",n("pptx.ai.deleteChat")),P.appendChild(chunkXGPJF4IL_cjs.K(t,"trash")),P.addEventListener("click",()=>{l.deleteChat(d.id);}),y.append(r,P),C.appendChild(y);}p.appendChild(C);}s(),i.addEventListener("click",()=>{a.hidden=!a.hidden;}),c.addEventListener("click",()=>{l.newChat(),a.hidden=true;});let g=f=>{a.hidden||!(f.target instanceof Node)||!a.contains(f.target)&&!i.contains(f.target)&&(a.hidden=true);};return t.addEventListener("mousedown",g),{button:i,el:a,notifyMessagesChanged:()=>l.notifyMessagesChanged(),destroy(){t.removeEventListener("mousedown",g),l.dispose(),i.remove(),a.remove();}}}var _={view:"eye",text:"text-box",shape:"shapes",theme:"font-color",table:"table",slide:"layout",chart:"chart",move:"move-right",delete:"trash",search:"search",nav:"move-right",animation:"play",notes:"sticky-note",tool:"wrench"};function W(o,t,n){let i=t.state==="output-error",a=t.state==="output-available",h=!i&&!a,x=chunkXGPJF4IL_cjs.s(t.toolName,t.input,h?"present":"past"),c=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-tool"),p=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-tool-head"),m=chunkXGPJF4IL_cjs.K(o,_[x.icon]??"wrench");m.classList.add("pptxv-ai-tool-icon");let l=chunkXGPJF4IL_cjs.w(o,"span","pptxv-ai-tool-name");l.textContent=x.label;let s=chunkXGPJF4IL_cjs.w(o,"span","pptxv-ai-tool-state");if(i?(s.classList.add("is-error"),s.append(chunkXGPJF4IL_cjs.K(o,"alert"),o.createTextNode(n("pptx.ai.toolFailed")))):a?(s.classList.add("is-done"),s.append(chunkXGPJF4IL_cjs.K(o,"check"),o.createTextNode(n("pptx.ai.toolDone")))):(s.classList.add("is-running"),s.textContent=n("pptx.ai.toolRunning")),p.append(m,l,s),c.appendChild(p),i&&t.errorText){let f=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-tool-error");f.textContent=t.errorText,c.appendChild(f);}let g=chunkXGPJF4IL_cjs.r(t.input);if(g){let f=chunkXGPJF4IL_cjs.w(o,"details","pptxv-ai-tool-details"),C=chunkXGPJF4IL_cjs.w(o,"summary");C.textContent=n("pptx.ai.toolDetails");let d=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-tool-raw");d.textContent=`${chunkXGPJF4IL_cjs.q(t.toolName)}: ${g}`,f.append(C,d),c.appendChild(f);}return c}function q(o,t,n,i){t.replaceChildren();for(let a of n){if(a.role==="system")continue;let h=a.role==="user",x=chunkXGPJF4IL_cjs.f(a);if(x.length===0&&!h)continue;let c=chunkXGPJF4IL_cjs.w(o,"div",`pptxv-ai-msg pptxv-ai-msg-${a.role}`),p=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-msg-avatar");p.setAttribute("aria-label",i(h?"pptx.ai.you":"pptx.ai.assistant")),p.appendChild(chunkXGPJF4IL_cjs.K(o,h?"comment":"sparkles"));let m=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-msg-body");for(let l of x)if(l.kind==="text"){let s=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-msg-text");s.textContent=l.text,m.appendChild(s);}else m.appendChild(W(o,l,i));c.append(p,m),t.appendChild(c);}}function G(o,t,n,i,a){if(t.replaceChildren(),t.hidden=n.length===0,n.length===0)return;let h=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-proposals-header"),x=chunkXGPJF4IL_cjs.w(o,"span","pptxv-ai-proposals-title");if(x.textContent=i("pptx.ai.pendingChanges",{count:n.length}),h.appendChild(x),n.length>1){let c=chunkXGPJF4IL_cjs.w(o,"button","pptxv-ai-proposal-btn is-accept-all");c.type="button",c.textContent=i("pptx.ai.acceptAll"),c.addEventListener("click",()=>a.acceptAll()),h.appendChild(c);}t.appendChild(h);for(let c of n)t.appendChild(tt(o,c,i,a));}function tt(o,t,n,i){let a=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-proposal");a.dataset.proposalId=t.id;let h=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-proposal-eyebrow");h.textContent=n("pptx.ai.proposedChange"),a.appendChild(h);let x=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-proposal-label");if(x.textContent=t.label,a.appendChild(x),t.summary.length>0){let l=chunkXGPJF4IL_cjs.w(o,"ul","pptxv-ai-proposal-summary");for(let s of t.summary){let g=chunkXGPJF4IL_cjs.w(o,"li");g.textContent=chunkXGPJF4IL_cjs.c(s),l.appendChild(g);}a.appendChild(l);}let c=chunkXGPJF4IL_cjs.w(o,"div","pptxv-ai-proposal-actions"),p=chunkXGPJF4IL_cjs.w(o,"button","pptxv-ai-proposal-btn is-accept");p.type="button",p.append(chunkXGPJF4IL_cjs.K(o,"check"),o.createTextNode(n("pptx.ai.accept"))),p.addEventListener("click",()=>i.accept(t.id));let m=chunkXGPJF4IL_cjs.w(o,"button","pptxv-ai-proposal-btn is-reject");return m.type="button",m.append(chunkXGPJF4IL_cjs.K(o,"close"),o.createTextNode(n("pptx.ai.reject"))),m.addEventListener("click",()=>i.reject(t.id)),c.append(p,m),a.appendChild(c),a}async function wt(o){let{doc:t,host:n,t:i}=o;n.replaceChildren();let a=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-header"),h=chunkXGPJF4IL_cjs.w(t,"span","pptxv-ai-title");h.textContent=i("pptx.ai.title");let x=chunkXGPJF4IL_cjs.w(t,"button","pptxv-ai-close");x.type="button",x.title=i("pptx.ai.close"),x.setAttribute("aria-label",i("pptx.ai.close")),x.appendChild(chunkXGPJF4IL_cjs.K(t,"close")),x.addEventListener("click",()=>o.onClose?.()),a.append(chunkXGPJF4IL_cjs.K(t,"sparkles"),h,x);let c,p=o.controller,m=p?K({doc:t,t:i,controller:p,getSlides:()=>o.bridge.getSlides(),onSendDirective:u=>{c?.sendMessage(u);}}):null,l=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-messages");l.setAttribute("role","log"),l.setAttribute("aria-live","polite");let s=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-empty");s.textContent=i("pptx.ai.emptyHint"),l.appendChild(s);let g=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-proposals");g.hidden=true;let f=chunkXGPJF4IL_cjs.w(t,"div","pptxv-ai-error");f.setAttribute("role","alert"),f.hidden=true;let C=chunkXGPJF4IL_cjs.w(t,"form","pptxv-ai-composer"),d=chunkXGPJF4IL_cjs.w(t,"textarea","pptxv-ai-input");d.rows=2,d.placeholder=i("pptx.ai.placeholder"),d.setAttribute("aria-label",i("pptx.ai.placeholder"));let y=chunkXGPJF4IL_cjs.w(t,"button","pptxv-ai-send");y.type="submit",y.setAttribute("aria-label",i("pptx.ai.send")),y.appendChild(chunkXGPJF4IL_cjs.K(t,"send")),C.append(d,y),n.append(a,...m?[m.el]:[],l,g,f,C);try{c=await(o.createChat??chunkXGPJF4IL_cjs.o)({bridge:o.bridge,config:o.config});}catch{return s.textContent=i("pptx.ai.unavailableTitle"),d.disabled=true,y.disabled=true,m?.destroy(),{destroy:()=>n.replaceChildren()}}let r=c,b=O({doc:t,t:i,deckId:chunkXGPJF4IL_cjs.m(o.bridge),store:o.historyStore,getMessages:()=>r.getSnapshot().messages,setMessages:u=>r.setMessages(u)});a.insertBefore(b.button,x),n.appendChild(b.el);let k=r.subscribe(()=>b.notifyMessagesChanged()),T=new Set,P=u=>{if(!p)return;let A=u.messages.flatMap(Y=>chunkXGPJF4IL_cjs.f(Y).filter(Z=>Z.kind==="tool")).at(-1);if(!A||A.kind!=="tool"||A.state==="input-streaming"||T.has(A.toolCallId))return;T.add(A.toolCallId);let L=chunkXGPJF4IL_cjs.t(A.toolName,A.input);L&&L.slideIndex!==void 0&&o.goToSlide?.(L.slideIndex),p.flashToolTarget(L);},M=u=>{q(t,l,u.messages,i),s.hidden=u.messages.length>0,u.messages.length===0&&l.appendChild(s),G(t,g,r.proposals.list(),i,{accept:A=>{p?.flashToolTarget(null),r.proposals.apply(A),M(r.getSnapshot());},reject:A=>{r.proposals.revert(A),M(r.getSnapshot());},acceptAll:()=>{p?.flashToolTarget(null),r.proposals.acceptAll(),M(r.getSnapshot());}});let w=u.status==="submitted"||u.status==="streaming";n.classList.toggle("is-busy",w),y.setAttribute("aria-label",i(w?"pptx.ai.stop":"pptx.ai.send")),f.hidden=!u.error,f.textContent=u.error?i("pptx.ai.errorPrefix"):"",l.scrollTop=l.scrollHeight,P(u);},S=()=>{if(n.classList.contains("is-busy")){r.stop();return}let u=d.value.trim();u&&(d.value="",r.sendMessage(u));};C.addEventListener("submit",u=>{u.preventDefault(),S();}),d.addEventListener("keydown",u=>{u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),S());});let I=p?.getPrefill().nonce??0,J=()=>{if(!p)return;let u=p.getPrefill();u.nonce!==I&&(I=u.nonce,d.value=u.text,d.focus());},Q=p?.subscribe(J),X=r.subscribe(M);return M(r.getSnapshot()),{changeAnimator:r.changeAnimator,destroy(){X(),k(),b.destroy(),Q?.(),m?.destroy(),n.replaceChildren();}}}exports.createAiPanel=wt;
@@ -0,0 +1,4 @@
1
+ import {tc,Eh,Zl,Hh,Ih,Ch,gg,fg,hg,Ar,ad,dg,eg}from'./chunk-IBLM4JHG.js';var R="data-pptx-text-style-override";function z(n,o,r){Ar(n.ownerDocument,o,r?.textStyle);let a=ad(o,r?.textStyle),e=n.querySelector(`:scope > style[${R}]`);if(!a){e?.remove();return}e||(e=n.ownerDocument.createElement("style"),e.setAttribute(R,""),n.prepend(e)),e.textContent=a;}var w="pptx-vanilla-presentation-keyframes",k="pptx-vanilla-slide-keyframes";function K(n){if(n.getElementById(w))return;let o=n.createElement("style");o.id=w,o.textContent=`${tc}
2
+ ${Eh}
3
+ ${Zl}`,(n.head??n.documentElement).appendChild(o);}function X(n,o){let r=n.getElementById(k);if(!o){r?.remove();return}r||(r=n.createElement("style"),r.id=k,(n.head??n.documentElement).appendChild(r)),r.textContent=o;}function Z(n,o,r,a){n.querySelectorAll("[data-element-id]").forEach(e=>{let t=e.dataset.elementId;if(!t)return;let i=o.get(t);e.style.animation=i?.cssAnimation??"",e.style.visibility=i?.visible===false?"hidden":"",e.style.cursor=r.has(t)||a.has(t)?"pointer":"",z(e,t,i);}),n.querySelectorAll("[data-anim-id]").forEach(e=>{let t=e.dataset.animId;if(!t)return;let i=o.get(t);e.style.animation=i?.cssAnimation??"",e.style.visibility=i?.visible===false?"hidden":"";});}function M(n,o,r,a,e){let t=n.createElement("div");t.className="pptxv-transition-layer",t.dataset.pptxTransitionLayer=e,t.dataset.pptxTransitionFragments=r.keyframesName,t.style.position="absolute",t.style.inset="0",t.style.overflow="hidden",t.style.pointerEvents="none",t.style.zIndex=String(a);for(let i of r.fragments)t.appendChild(B(n,o,r,i));return t}function B(n,o,r,a){let e=n.createElement("div");e.dataset.pptxTransitionFragment=a.id,e.style.position="absolute",e.style.inset="0",e.style.clipPath=a.clipPath,e.style.transformOrigin=a.transformOrigin,e.style.animationName=r.keyframesName,e.style.animationDuration=`${r.durationMs}ms`,e.style.animationTimingFunction=r.easing,e.style.animationDelay=`${a.delayMs}ms`,e.style.animationFillMode="forwards",e.style.willChange="transform, opacity";for(let[t,i]of Object.entries(a.vars))e.style.setProperty(t,i);return e.appendChild(o.cloneNode(true)),e}function u(n,o,r,a,e){let t=n.createElement("div");return t.className="pptxv-transition-layer",t.dataset.pptxTransitionLayer=e,t.style.position="absolute",t.style.inset="0",t.style.overflow="hidden",t.style.zIndex=String(r),t.style.willChange="transform, opacity, clip-path, filter",a!=="none"&&(t.style.animation=a),t.appendChild(o),t}function T(n,o){n.style.background="none",n.style.backgroundColor="transparent";let r=new Set(o),a=new Set;for(let e of n.querySelectorAll("[data-element-id]")){let t=e.dataset.elementId;if(!(t===void 0||!r.has(t))){for(let i=e;i&&i!==n;)a.add(i),i=i.parentElement;for(let i of e.querySelectorAll("[data-element-id]"))a.add(i);}}for(let e of [...n.querySelectorAll("[data-element-id]")])a.has(e)||e.remove();return n}function q(n,o,r,a){return (a?.crossfadeGroups??[]).map((e,t)=>{let i=n.createElement("div");i.dataset.pptxMorphCrossfade=e.incoming.id,i.style.cssText=dg,i.style.zIndex=String(4+t);let m=(p,l,s,y,g)=>{let d=u(n,T(p,[l]),y,g??"none",s);return s==="outgoing"?d.dataset.pptxMorphOutgoing="true":d.dataset.pptxMorphLifted="true",d.style.mixBlendMode=eg,d};return i.append(m(o.cloneNode(true),e.outgoing.id,"outgoing",0,e.outgoingAnimation),m(r.cloneNode(true),e.incoming.id,"lifted",1,e.incomingAnimation)),i})}function se(n){let{doc:o,stageWrap:r,outgoing:a,incoming:e,transition:t}=n;K(o);let i=Hh(t),m=Ih(t),p=Ch(t.type,m,t.direction,t.spokes,t.pattern),l=o.createElement("div");l.className="pptxv-transition-overlay",l.dataset.pptxTransitionOverlay="",l.dataset.pptxTransitionOverlay="",l.style.position="absolute",l.style.inset="0",l.style.overflow="hidden",l.style.pointerEvents="none",l.style.zIndex="30";let s=t.type==="morph"?gg(n.outgoingSlide,n.incomingSlide,m,fg(t.morphOption)):void 0,y=s||i.outgoingOnTop?2:1,g=s||i.outgoingOnTop?1:2,d=!s&&p?.outgoing?M(o,a,p.outgoing,y,"outgoing"):u(o,a,y,s?"none":i.outgoing,"outgoing"),x=!s&&p?.incoming?M(o,e,p.incoming,g,"incoming"):u(o,e,g,s?"none":i.incoming,"incoming"),S=s&&s.overlayIncomingElements.length>0?T(e.cloneNode(true),s.overlayIncomingElements.map(c=>c.id)):void 0,f=S?u(o,S,3,"none","lifted"):void 0,$=q(o,a,e,s);if(s){x.dataset.pptxMorphIncoming="true",d.dataset.pptxMorphOutgoing="true",T(a,s.outgoingElements.map(Y=>Y.id)),f&&(f.dataset.pptxMorphLifted="true");let c=o.createElement("style");c.textContent=[hg(s,"data-pptx-morph-incoming","incoming"),hg(s,"data-pptx-morph-outgoing","outgoing"),hg(s,"data-pptx-morph-lifted","lifted")].join(`
4
+ `),l.appendChild(c);}l.append(d,x),f&&l.appendChild(f);for(let c of $)l.appendChild(c);r.appendChild(l);let h=false,v=()=>{h||(h=true,clearTimeout(G),l.remove(),n.onDone());},G=setTimeout(v,Math.max(0,m)+50);return v}export{K as a,X as b,Z as c,se as d};