pptx-vanilla-viewer 0.1.1 → 0.1.3
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 +78 -0
- package/README.md +57 -21
- package/dist/index.cjs +161 -53
- package/dist/index.d.cts +294 -71
- package/dist/index.d.ts +294 -71
- package/dist/index.js +161 -53
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,81 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
All notable changes to this project are documented here.
|
|
4
|
+
This file is generated from [Conventional Commits](https://www.conventionalcommits.org)
|
|
5
|
+
by [git-cliff](https://git-cliff.org); do not edit it by hand.
|
|
6
|
+
|
|
7
|
+
## [0.1.2](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-vanilla-viewer@0.1.2) - 2026-07-10
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
- **core:** Add signature-node module and shared signature utilities (by @ChristopherVR) ([e7cb263](https://github.com/ChristopherVR/pptx-viewer/commit/e7cb26335f15e633cfc37371f16a6ad210be5e11))
|
|
12
|
+
- **vue:** Add pptx-vue-viewer package + bundled pptx-viewer-shared (by @ChristopherVR) ([1b7a958](https://github.com/ChristopherVR/pptx-viewer/commit/1b7a958ce91792a6d174f174932800bc8ff40ef9))
|
|
13
|
+
- **shared:** Add Three.js SmartArt 3D model + scene runtime (by @ChristopherVR) ([f949213](https://github.com/ChristopherVR/pptx-viewer/commit/f949213b33ed0dca4c52d5d1ab414c3dba67efe7))
|
|
14
|
+
- **shared:** Add canonical i18n translation dictionary (by @ChristopherVR) ([429e386](https://github.com/ChristopherVR/pptx-viewer/commit/429e386c7245fc5cf526ac72481fd5ab23b3e09d))
|
|
15
|
+
- **core,cli:** Add react, angular, vue to npm keywords (by @ChristopherVR) ([528ec61](https://github.com/ChristopherVR/pptx-viewer/commit/528ec6182bb77c07444dd0e93560b65e604b9524))
|
|
16
|
+
- **vanilla:** Add pptx-vanilla-viewer zero-framework binding (viewer core) (by @ChristopherVR) ([e5374a6](https://github.com/ChristopherVR/pptx-viewer/commit/e5374a66522daf27606c7f0d3d93a50d9da43146))
|
|
17
|
+
- **vanilla,svelte:** Opt-in 3D SmartArt renderer (by @ChristopherVR) ([15337c9](https://github.com/ChristopherVR/pptx-viewer/commit/15337c9bc1a31ad614a4aca88be3e71ba848413f))
|
|
18
|
+
- **vanilla:** PNG and PDF export (by @ChristopherVR) ([a314688](https://github.com/ChristopherVR/pptx-viewer/commit/a3146882c706e6591b30176fbd06f62c001fd31f))
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
- Enable vitest globals in all packages to fix expectTypeOf errors (by @ChristopherVR) ([6d90d72](https://github.com/ChristopherVR/pptx-viewer/commit/6d90d72ff0107ad0194f9c73ceeb3df244f4cfc6))
|
|
23
|
+
- **test:** Add i18n mocks to react tests and bump versions to 1.2.0 (by @ChristopherVR) ([2c1c962](https://github.com/ChristopherVR/pptx-viewer/commit/2c1c9628714b905b28592493abf02fb270107b65))
|
|
24
|
+
- **deps:** Pin @xmldom/xmldom to 0.8.x in core to fix build (by @ChristopherVR) ([2ed7b2e](https://github.com/ChristopherVR/pptx-viewer/commit/2ed7b2e777d4e740a3e4c9ca7e2b3d6fc2bbd21f))
|
|
25
|
+
- **core:** Declare jszip and fast-xml-parser as runtime dependencies (by @ChristopherVR) ([b6636be](https://github.com/ChristopherVR/pptx-viewer/commit/b6636be972206bb2c6acee0fed05c45b4759fbdc))
|
|
26
|
+
- **angular:** Bundle pptx-viewer-core and fix demo JIT + Vue demo alias (by @ChristopherVR) ([78838ec](https://github.com/ChristopherVR/pptx-viewer/commit/78838ec900fe2d8c90bc39333636d788c52c3161))
|
|
27
|
+
- Missing document links (by @ChristopherVR) ([f52bd6f](https://github.com/ChristopherVR/pptx-viewer/commit/f52bd6fd2fc4f564f018ecf5e84e64d24c8fd240))
|
|
28
|
+
- **core:** Correct install docs and drop the retired @christophervr/pptx-viewer alias (by @ChristopherVR) ([6544b4e](https://github.com/ChristopherVR/pptx-viewer/commit/6544b4eaf086945ecd8a18b877de5a483032aa14))
|
|
29
|
+
- **core,angular:** Revert xmldom to 0.8.x and fix shared import specifiers (by @ChristopherVR) ([29eda31](https://github.com/ChristopherVR/pptx-viewer/commit/29eda3119836559b63bc08733dd9dd6398a69c8d))
|
|
30
|
+
|
|
31
|
+
### Other
|
|
32
|
+
|
|
33
|
+
- **smartart:** Snapshot in-progress SmartArt session work (by @ChristopherVR) ([0cac22f](https://github.com/ChristopherVR/pptx-viewer/commit/0cac22f5b1a0ecc33960f4712ff2ef691beb3f65))
|
|
34
|
+
- Reconcile with origin/main before push (by @ChristopherVR) ([b8c46bc](https://github.com/ChristopherVR/pptx-viewer/commit/b8c46bc3622e301d3365f5c489144e5aa5401782))
|
|
35
|
+
- Reconcile with origin/main before push (by @ChristopherVR) ([10acef8](https://github.com/ChristopherVR/pptx-viewer/commit/10acef81a7f5d79e778e4e4464d956cc84682f7c))
|
|
36
|
+
- Reconcile with origin/main before push (by @ChristopherVR) ([0ecd3d9](https://github.com/ChristopherVR/pptx-viewer/commit/0ecd3d935f97c78e8b0a62bebc8bf610c42414ab))
|
|
37
|
+
|
|
38
|
+
### Refactor
|
|
39
|
+
|
|
40
|
+
- **react:** Consume theme + loader from pptx-viewer-shared (by @ChristopherVR) ([1b93d1f](https://github.com/ChristopherVR/pptx-viewer/commit/1b93d1fccff378b0ac402810a0cbddea46add29c))
|
|
41
|
+
- **core:** Consume emf-converter and mtx-decompressor from npm (by @ChristopherVR) ([2f6013d](https://github.com/ChristopherVR/pptx-viewer/commit/2f6013d5b8fab0aef5b32901841d94c0fa886f24))
|
|
42
|
+
- **shared:** Extract text-rendering pure logic (line-height, warp, effects) (by @ChristopherVR) ([11c8d22](https://github.com/ChristopherVR/pptx-viewer/commit/11c8d22e9910dda9c8dfa18e0f6d7683577c7b9f))
|
|
43
|
+
|
|
44
|
+
### Documentation
|
|
45
|
+
|
|
46
|
+
- Restructure root README, elevate limitations, fix outdated claims (by @ChristopherVR) ([86dcda9](https://github.com/ChristopherVR/pptx-viewer/commit/86dcda9b5e3129f2223341337055778db574e985))
|
|
47
|
+
- Rewrite limitations with technical explanations and remove inaccurate claims (by @ChristopherVR) ([ac4bc84](https://github.com/ChristopherVR/pptx-viewer/commit/ac4bc84ed9bd03f62e3ae29c35baf3f444a3c0bf))
|
|
48
|
+
- **readme:** Npm-friendly READMEs — hero image, capabilities & install first (by @ChristopherVR) ([c843d19](https://github.com/ChristopherVR/pptx-viewer/commit/c843d1934b846f901bba92e63d2b01f9479594d0))
|
|
49
|
+
- Streamline npm READMEs and add badges, screenshots, demo links (by @ChristopherVR) ([92e980d](https://github.com/ChristopherVR/pptx-viewer/commit/92e980d434900abd223c4d70c6cae19a623f9ca8))
|
|
50
|
+
- Sharpen npm descriptions and keywords for discoverability (by @ChristopherVR) ([8fea56d](https://github.com/ChristopherVR/pptx-viewer/commit/8fea56d7650f7dc2f3167dea97b94b612a03a4e7))
|
|
51
|
+
- **core:** Reword README in plain language (by @ChristopherVR) ([793c26e](https://github.com/ChristopherVR/pptx-viewer/commit/793c26ec7e2415c66f34c637cb541483bf395a11))
|
|
52
|
+
- Remove completed ROADMAP and PORTING trackers, scrub stale references (by @ChristopherVR) ([8a745a1](https://github.com/ChristopherVR/pptx-viewer/commit/8a745a1d2a1ee3932503d37dd022494ab9cfcc4b))
|
|
53
|
+
- **core:** Remove explicit jszip/fast-xml-parser mention from install section (by @ChristopherVR) ([6b72906](https://github.com/ChristopherVR/pptx-viewer/commit/6b72906c08447ba38a704ff4572c89d7cad7e60c))
|
|
54
|
+
- Correct stale vanilla/svelte docs and add both bindings to core guide (by @ChristopherVR) ([6815740](https://github.com/ChristopherVR/pptx-viewer/commit/6815740f71f85d3876e548d177bb2e709f1b91d1))
|
|
55
|
+
|
|
56
|
+
### Build & CI
|
|
57
|
+
|
|
58
|
+
- Independent per-package versioning, tags, and changelogs (by @ChristopherVR) ([79595d9](https://github.com/ChristopherVR/pptx-viewer/commit/79595d972d7c4102e8b1e1e3926f439486f76ba1))
|
|
59
|
+
- Publish pptx-vanilla-viewer and pptx-svelte-viewer from the release pipeline (by @ChristopherVR) ([50dd90a](https://github.com/ChristopherVR/pptx-viewer/commit/50dd90aa3a7a707d9c56d3755098b431c37457b5))
|
|
60
|
+
|
|
61
|
+
### Dependencies
|
|
62
|
+
|
|
63
|
+
- **deps:** Update all dependencies to latest (by @ChristopherVR) ([e3287c0](https://github.com/ChristopherVR/pptx-viewer/commit/e3287c03ff58b1a1ae103ed32a513468a454a084))
|
|
64
|
+
- **deps:** Bump all workspace manifest floors to latest (by @ChristopherVR) ([890c33d](https://github.com/ChristopherVR/pptx-viewer/commit/890c33d667a39480a69e6a3da893964382993b29))
|
|
65
|
+
- **deps:** Update dependencies within semver ranges (by @ChristopherVR) ([d472b58](https://github.com/ChristopherVR/pptx-viewer/commit/d472b58dfd47628b5c682bd5f4dc2014ec29b421))
|
|
66
|
+
- **deps:** Declare yjs, y-websocket, and y-webrtc across bindings (by @ChristopherVR) ([27a2849](https://github.com/ChristopherVR/pptx-viewer/commit/27a2849da755a0902296dcd59557c1329a1cbadf))
|
|
67
|
+
|
|
68
|
+
### Chores
|
|
69
|
+
|
|
70
|
+
- Add license files, NOTICE, and package metadata for npm publishing (by @ChristopherVR) ([9464bb8](https://github.com/ChristopherVR/pptx-viewer/commit/9464bb8b91734daf35131d3c7e52e60895fe0a1c))
|
|
71
|
+
- Bump all packages to v1.1.0 and remove remaining MyClawAssist refs (by @ChristopherVR) ([c386511](https://github.com/ChristopherVR/pptx-viewer/commit/c38651150c08011cee5e17e15f7ee8adc0014b80))
|
|
72
|
+
- Bump all packages to 1.x.1 patch versions (by @ChristopherVR) ([c75205a](https://github.com/ChristopherVR/pptx-viewer/commit/c75205a96cc7797d1647ac4705395b7707ac8910))
|
|
73
|
+
- Bump all packages to minor versions for SDK table support (by @ChristopherVR) ([2d4b635](https://github.com/ChristopherVR/pptx-viewer/commit/2d4b6351b0bf328f8a556cf593733fd8ad36c7b5))
|
|
74
|
+
- Bump dependencies to latest and minor-bump packages for parity work (by @ChristopherVR) ([da19fdf](https://github.com/ChristopherVR/pptx-viewer/commit/da19fdf9a4670d274d9973b67aa22d34217b8555))
|
|
75
|
+
- Roll TypeScript back to 5.9.x; quiet new oxlint vitest rules (by @ChristopherVR) ([713c020](https://github.com/ChristopherVR/pptx-viewer/commit/713c020ac2428db0fb1eb6cb30e56b2cff19a80f))
|
|
76
|
+
- Relicense from MIT to Apache-2.0 (by @ChristopherVR) ([e12f926](https://github.com/ChristopherVR/pptx-viewer/commit/e12f9266f02bebbfc218986b617c418fee43a56b))
|
|
77
|
+
- Bump vanilla + svelte to 0.1.1; clarify view-only in READMEs (by @ChristopherVR) ([0bc44ab](https://github.com/ChristopherVR/pptx-viewer/commit/0bc44ab3b083c7d8aeed51197584f8eee04fc9ee))
|
|
78
|
+
|
|
79
|
+
# Changelog
|
|
80
|
+
|
|
3
81
|
All notable changes to `pptx-vanilla-viewer` are documented in this file.
|
package/README.md
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
# pptx-vanilla-viewer
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/pptx-vanilla-viewer)
|
|
4
|
+
[](https://github.com/ChristopherVR/pptx-viewer/blob/main/LICENSE)
|
|
5
|
+
|
|
6
|
+
Show, edit, and present Microsoft PowerPoint (`.pptx`) files directly in the
|
|
7
|
+
browser with **zero framework**: no React, Vue, or Angular required, no
|
|
8
|
+
server, no conversion step, no PowerPoint install. Call one factory function,
|
|
9
|
+
`createPptxViewer(container, options)`, and slides render as real HTML and
|
|
10
|
+
CSS.
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
The rendering is done by the framework-agnostic [`pptx-viewer-core`](https://www.npmjs.com/package/pptx-viewer-core) engine, which turns a `.pptx` file into a structured slide model. This package is the plain-DOM layer that draws that model on screen, and the engine is **bundled in**, so you install just one package.
|
|
15
|
+
|
|
16
|
+
<samp>**[▶️ Try the live demo](https://christophervr.github.io/pptx-viewer/demo-vanilla/)** · **[📦 npm](https://www.npmjs.com/package/pptx-vanilla-viewer)** · **[📖 Full docs](https://christophervr.github.io/pptx-viewer/vanilla/)** · **[🧩 Core SDK](https://www.npmjs.com/package/pptx-viewer-core)**</samp>
|
|
17
|
+
|
|
18
|
+
## Install
|
|
17
19
|
|
|
18
20
|
```bash
|
|
19
21
|
npm install pptx-vanilla-viewer jszip fast-xml-parser
|
|
@@ -29,11 +31,13 @@ const viewer = createPptxViewer(document.getElementById('host')!, {
|
|
|
29
31
|
theme: { colors: { primary: '#e34f26' } },
|
|
30
32
|
locale: 'en',
|
|
31
33
|
initialSlide: 0,
|
|
34
|
+
editable: true, // select, drag, resize, rotate, inline text, undo/redo, save
|
|
32
35
|
showToolbar: true,
|
|
33
36
|
showThumbnails: true,
|
|
34
37
|
onLoad: ({ slideCount }) => console.log(`${slideCount} slides`),
|
|
35
38
|
onSlideChange: (index) => console.log('slide', index + 1),
|
|
36
39
|
onError: (message) => console.error(message),
|
|
40
|
+
onDirtyChange: (dirty) => console.log('unsaved edits:', dirty),
|
|
37
41
|
});
|
|
38
42
|
|
|
39
43
|
// Navigation / zoom
|
|
@@ -46,6 +50,14 @@ viewer.zoomToFit();
|
|
|
46
50
|
// Presentation mode (real Fullscreen API; Esc exits)
|
|
47
51
|
await viewer.enterPresentation();
|
|
48
52
|
|
|
53
|
+
// Editing (click/drag/resize/rotate/double-click-to-edit-text happen via the
|
|
54
|
+
// DOM; these are the programmatic entry points)
|
|
55
|
+
viewer.undo();
|
|
56
|
+
viewer.redo();
|
|
57
|
+
viewer.deleteSelected();
|
|
58
|
+
const bytes = await viewer.save(); // serialise the edited deck to .pptx bytes
|
|
59
|
+
await viewer.downloadPptx('quarterly-edited.pptx'); // save() + trigger a download
|
|
60
|
+
|
|
49
61
|
// Load a different file later
|
|
50
62
|
await viewer.loadFile(fileInput.files![0]);
|
|
51
63
|
await viewer.loadUrl('/other-deck.pptx');
|
|
@@ -61,9 +73,15 @@ The container should have a size (the viewer fills it: `width/height: 100%`).
|
|
|
61
73
|
|
|
62
74
|
## Keyboard
|
|
63
75
|
|
|
64
|
-
|
|
65
|
-
last slide, Esc exits presentation mode. The viewer root is
|
|
66
|
-
(`tabindex="0"`).
|
|
76
|
+
Navigation: arrow keys / PageUp / PageDown / Space, Home/End jump to the
|
|
77
|
+
first or last slide, Esc exits presentation mode. The viewer root is
|
|
78
|
+
focusable (`tabindex="0"`).
|
|
79
|
+
|
|
80
|
+
When `editable` is on and an element is selected: Ctrl/Cmd+Z undoes,
|
|
81
|
+
Ctrl/Cmd+Shift+Z (or Ctrl+Y) redoes, Delete/Backspace deletes the selection,
|
|
82
|
+
Ctrl/Cmd+D duplicates it, arrow keys nudge it by 1px (Shift+arrow for 10px),
|
|
83
|
+
and Escape deselects. Double-click a text-capable element to edit its text
|
|
84
|
+
inline.
|
|
67
85
|
|
|
68
86
|
## Styling and theming
|
|
69
87
|
|
|
@@ -76,6 +94,23 @@ All chrome colors come from the shared `--pptx-*` CSS custom properties. Pass
|
|
|
76
94
|
a `ViewerTheme` (`theme` option or `setTheme`) to override them; the
|
|
77
95
|
`vermilionLightTheme` / `vermilionDarkTheme` presets are re-exported.
|
|
78
96
|
|
|
97
|
+
## Editing
|
|
98
|
+
|
|
99
|
+
Pass `editable: true` (or call `setEditable(true)` at runtime) to turn on:
|
|
100
|
+
|
|
101
|
+
- Click to select an element, click empty space to deselect.
|
|
102
|
+
- Drag to move, with snap-to-sibling-edge guides.
|
|
103
|
+
- Resize via 8 handles (Shift locks aspect ratio on the corner handles) and
|
|
104
|
+
rotate via a rotate handle (Shift snaps to angle increments).
|
|
105
|
+
- Double-click a text-capable element for inline text editing.
|
|
106
|
+
- Undo/redo (100-entry history), delete, and duplicate (`Ctrl/Cmd+D`).
|
|
107
|
+
- The toolbar's Save button (shown only when `editable`), which calls
|
|
108
|
+
`downloadPptx()` to serialise and download the edited `.pptx`.
|
|
109
|
+
|
|
110
|
+
Use `viewer.getSelectedElementId()` and the `onSelectionChange` /
|
|
111
|
+
`onDirtyChange` callbacks to build your own chrome around the selection
|
|
112
|
+
state.
|
|
113
|
+
|
|
79
114
|
## i18n
|
|
80
115
|
|
|
81
116
|
All UI strings go through the shared `pptx.*` dictionary (English built in).
|
|
@@ -85,10 +120,11 @@ fall back to English, then to a humanised label.
|
|
|
85
120
|
|
|
86
121
|
## Element coverage
|
|
87
122
|
|
|
88
|
-
Dedicated renderers: text, shape, image/picture,
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
123
|
+
Dedicated renderers ship for every element type: text, shape, image/picture,
|
|
124
|
+
group, connector, table, chart, SmartArt (2D and opt-in 3D), media
|
|
125
|
+
(video/audio), ink, OLE, content parts, zoom links, and 3D models. Renderers
|
|
126
|
+
are dispatched through an open registry, so any of them can be overridden
|
|
127
|
+
without forking:
|
|
92
128
|
|
|
93
129
|
```ts
|
|
94
130
|
import { createPptxViewer, type ElementRenderer } from 'pptx-vanilla-viewer';
|