pptx-svelte-viewer 3.5.0 → 3.5.1

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 CHANGED
@@ -7,6 +7,38 @@ 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
+ ## [3.5.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-svelte-viewer@3.5.0) - 2026-09-02
11
+
12
+ ### Features
13
+
14
+ - **shared:** Animate morph stacking, flips, and crop reveal like PowerPoint (by @nikko82) ([a9bba84](https://github.com/ChristopherVR/pptx-viewer/commit/a9bba842827274a9dc7cdb0b8934fe7509b560e6))
15
+ - **shared:** Minimum-cost media pairing and named text twins for morphs (by @nikko82) ([3abda95](https://github.com/ChristopherVR/pptx-viewer/commit/3abda95e72133e1fe886f2bc98d76a5c23a645c6))
16
+ - **shared:** Step an inert stacking-swap counterpart together with the mover (by @nikko82) ([e4f9438](https://github.com/ChristopherVR/pptx-viewer/commit/e4f9438771bcec15c78ebba5eb3b4e2c173152e0))
17
+ - **react,vue,angular,svelte,vanilla:** Replay the leaving slide's transition on backward steps (by @nikko82) ([e23838e](https://github.com/ChristopherVR/pptx-viewer/commit/e23838ebc6253c413fe87cd75e96244311349214))
18
+ - **shared:** I18n keys for the wave-4 parity UI (by @ChristopherVR) ([6cc9a86](https://github.com/ChristopherVR/pptx-viewer/commit/6cc9a8646c3f6174ec70928e00137412fea1778a))
19
+ - **core:** Master/layout CRUD, legacy comment threading, extended ppaction verbs (by @ChristopherVR) ([033b024](https://github.com/ChristopherVR/pptx-viewer/commit/033b024a70d041cf884aafb47dbc35e9d2ed10f6))
20
+ - **shared:** Master-view CRUD, recent colours, action options, handout-master print chrome (by @ChristopherVR) ([3cc928f](https://github.com/ChristopherVR/pptx-viewer/commit/3cc928fea1e07293ca24faabcf6058b0c43713b2))
21
+ - **svelte:** Wave-4 parity UI (chart subtypes, read-only banner, compat toasts, rescale, sldRg, guides) (by @ChristopherVR) ([90bc190](https://github.com/ChristopherVR/pptx-viewer/commit/90bc190e9100cd0725c9c8ecd38d1de006271bf8))
22
+ - **shared:** Show entry slide, compat toast placement, master-view failure copy (by @ChristopherVR) ([79a42ba](https://github.com/ChristopherVR/pptx-viewer/commit/79a42ba93d0fd76d4fb509710c14eae22609c5de))
23
+ - **svelte:** Wave-4 show entry, custom-show actions, master CRUD, mentions (by @ChristopherVR) ([00c6546](https://github.com/ChristopherVR/pptx-viewer/commit/00c6546272c998e8dba336d9e058d2104eb3ace0))
24
+ - **svelte:** Slide master view insert/duplicate/delete/rename commands (by @ChristopherVR) ([5980f71](https://github.com/ChristopherVR/pptx-viewer/commit/5980f718fe4d54f9c878b8a15c303bd5af9603cf))
25
+ - **shared:** Resolve OLE action verbs against the clicked element (by @ChristopherVR) ([680c70c](https://github.com/ChristopherVR/pptx-viewer/commit/680c70c7d4cbb1f37d0c132b99544309e3563629))
26
+ - **svelte:** Recent-colours row under every picker and OLE verb actions (by @ChristopherVR) ([87a93b8](https://github.com/ChristopherVR/pptx-viewer/commit/87a93b8d5edc39c58d43afc86e12dd0481e49bcd))
27
+ - **shared:** Map F5 and Shift+F5 to the start-show actions (by @ChristopherVR) ([94852ed](https://github.com/ChristopherVR/pptx-viewer/commit/94852edbe44a6fb712e15dd8892ff4dcd1e9e7b0))
28
+ - **svelte:** Start the slide show on F5 and Shift+F5 (by @ChristopherVR) ([8040342](https://github.com/ChristopherVR/pptx-viewer/commit/80403429e3a1edc18916d382d4e3d35d44ba9646))
29
+
30
+ ### Bug Fixes
31
+
32
+ - **shared:** Play an un-authored morph at PowerPoint's 0.5s fallback (by @nikko82) ([0a70ef2](https://github.com/ChristopherVR/pptx-viewer/commit/0a70ef2db656e830ad429e9fd0a6efeb43ff7bde))
33
+ - **shared:** Close the open code-scanning findings at their root (by @ChristopherVR) ([455f853](https://github.com/ChristopherVR/pptx-viewer/commit/455f853f028ba1cb4142285558bbeef715d130d7))
34
+ - **shared:** Write morph stacking-order journeys in the stage's z space (by @ChristopherVR) ([867b05b](https://github.com/ChristopherVR/pptx-viewer/commit/867b05b4e9bfea62361e7d1361ae4cb84787c191))
35
+ - **shared:** Take the nearest named text twin and drop its dead name veto (by @ChristopherVR) ([c6e8062](https://github.com/ChristopherVR/pptx-viewer/commit/c6e8062919e9b9ccc1d1b18c4504270fd8138f51))
36
+ - **shared:** Sample the morph crop track from the one easing definition (by @ChristopherVR) ([349e8bd](https://github.com/ChristopherVR/pptx-viewer/commit/349e8bd5eb1908077f3693e6ee4573cf88ad253c))
37
+
38
+ ### Testing
39
+
40
+ - **shared:** Cover the morph media assignment solver (by @ChristopherVR) ([cbf671f](https://github.com/ChristopherVR/pptx-viewer/commit/cbf671f7a7a2037006f19ddaabc502211069ded5))
41
+
10
42
  ## [3.4.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-svelte-viewer@3.4.0) - 2026-09-02
11
43
 
12
44
  ### Features
@@ -1,4 +1,4 @@
1
- import { B as ce, C as pe, D as de, E as ve, F as ue, H as A, I as he, L as O, N as $, O as ge, P as ee, R as W, S as _e, T as xe, U as V, V as fe, _ as me, b as be, g as ye, h as ke, k as we, v as Ce, w as Me, x as Se, y as Pe, z as Ne } from "./export-C0RzyaUT.js";
1
+ import { B as ce, C as pe, D as de, E as ve, F as ue, H as A, I as he, L as O, N as $, O as ge, P as ee, R as W, S as _e, T as xe, U as V, V as fe, _ as me, b as be, g as ye, h as ke, k as we, v as Ce, w as Me, x as Se, y as Pe, z as Ne } from "./export-Bk-Ju0nY.js";
2
2
  import "svelte/internal/disclose-version";
3
3
  import * as e from "svelte/internal/client";
4
4
  import { onMount as qe, untrack as R } from "svelte";
@@ -105137,24 +105137,6 @@ var mV = `
105137
105137
  to { transform: translate(100%, 100%); }
105138
105138
  }
105139
105139
 
105140
- /* ── Wipe (clip-path reveal) ────────────────────────────────────────── */
105141
- @keyframes pptx-tr-wipe-from-left {
105142
- from { clip-path: inset(0 100% 0 0); }
105143
- to { clip-path: inset(0 0 0 0); }
105144
- }
105145
- @keyframes pptx-tr-wipe-from-right {
105146
- from { clip-path: inset(0 0 0 100%); }
105147
- to { clip-path: inset(0 0 0 0); }
105148
- }
105149
- @keyframes pptx-tr-wipe-from-top {
105150
- from { clip-path: inset(0 0 100% 0); }
105151
- to { clip-path: inset(0 0 0 0); }
105152
- }
105153
- @keyframes pptx-tr-wipe-from-bottom {
105154
- from { clip-path: inset(100% 0 0 0); }
105155
- to { clip-path: inset(0 0 0 0); }
105156
- }
105157
-
105158
105140
  /* ── Split ──────────────────────────────────────────────────────────── */
105159
105141
  @keyframes pptx-tr-split-h-out {
105160
105142
  from { clip-path: inset(0 50%); }
@@ -105287,6 +105269,102 @@ var mV = `
105287
105269
  to { clip-path: circle(75% at 50% 50%); transform: rotate(0deg); }
105288
105270
  }
105289
105271
 
105272
+
105273
+ /* ── Wipe (soft mask reveal) ──────────────────────────────────────────── */
105274
+ /* PowerPoint feathers the wipe edge with a WIDE, smooth gradient - the fade
105275
+ * zone spans roughly a slide width in real renders, not a narrow band. The
105276
+ * incoming layer is masked with a 3x-oversized gradient (fade zone = one slide
105277
+ * width) whose position sweeps it across the slide; the band fully exits both
105278
+ * edges, so the start is fully hidden and the end fully opaque. */
105279
+ @keyframes pptx-tr-wipe-from-left {
105280
+ from {
105281
+ -webkit-mask-image: linear-gradient(to right, #000 33.3%, transparent 66.7%);
105282
+ -webkit-mask-size: 300% 100%;
105283
+ -webkit-mask-repeat: no-repeat;
105284
+ -webkit-mask-position: 100% 0;
105285
+ mask-image: linear-gradient(to right, #000 33.3%, transparent 66.7%);
105286
+ mask-size: 300% 100%;
105287
+ mask-repeat: no-repeat;
105288
+ mask-position: 100% 0;
105289
+ }
105290
+ to {
105291
+ -webkit-mask-image: linear-gradient(to right, #000 33.3%, transparent 66.7%);
105292
+ -webkit-mask-size: 300% 100%;
105293
+ -webkit-mask-repeat: no-repeat;
105294
+ -webkit-mask-position: 0% 0;
105295
+ mask-image: linear-gradient(to right, #000 33.3%, transparent 66.7%);
105296
+ mask-size: 300% 100%;
105297
+ mask-repeat: no-repeat;
105298
+ mask-position: 0% 0;
105299
+ }
105300
+ }
105301
+ @keyframes pptx-tr-wipe-from-right {
105302
+ from {
105303
+ -webkit-mask-image: linear-gradient(to left, #000 33.3%, transparent 66.7%);
105304
+ -webkit-mask-size: 300% 100%;
105305
+ -webkit-mask-repeat: no-repeat;
105306
+ -webkit-mask-position: 0% 0;
105307
+ mask-image: linear-gradient(to left, #000 33.3%, transparent 66.7%);
105308
+ mask-size: 300% 100%;
105309
+ mask-repeat: no-repeat;
105310
+ mask-position: 0% 0;
105311
+ }
105312
+ to {
105313
+ -webkit-mask-image: linear-gradient(to left, #000 33.3%, transparent 66.7%);
105314
+ -webkit-mask-size: 300% 100%;
105315
+ -webkit-mask-repeat: no-repeat;
105316
+ -webkit-mask-position: 100% 0;
105317
+ mask-image: linear-gradient(to left, #000 33.3%, transparent 66.7%);
105318
+ mask-size: 300% 100%;
105319
+ mask-repeat: no-repeat;
105320
+ mask-position: 100% 0;
105321
+ }
105322
+ }
105323
+ @keyframes pptx-tr-wipe-from-top {
105324
+ from {
105325
+ -webkit-mask-image: linear-gradient(to bottom, #000 33.3%, transparent 66.7%);
105326
+ -webkit-mask-size: 100% 300%;
105327
+ -webkit-mask-repeat: no-repeat;
105328
+ -webkit-mask-position: 0 100%;
105329
+ mask-image: linear-gradient(to bottom, #000 33.3%, transparent 66.7%);
105330
+ mask-size: 100% 300%;
105331
+ mask-repeat: no-repeat;
105332
+ mask-position: 0 100%;
105333
+ }
105334
+ to {
105335
+ -webkit-mask-image: linear-gradient(to bottom, #000 33.3%, transparent 66.7%);
105336
+ -webkit-mask-size: 100% 300%;
105337
+ -webkit-mask-repeat: no-repeat;
105338
+ -webkit-mask-position: 0 0%;
105339
+ mask-image: linear-gradient(to bottom, #000 33.3%, transparent 66.7%);
105340
+ mask-size: 100% 300%;
105341
+ mask-repeat: no-repeat;
105342
+ mask-position: 0 0%;
105343
+ }
105344
+ }
105345
+ @keyframes pptx-tr-wipe-from-bottom {
105346
+ from {
105347
+ -webkit-mask-image: linear-gradient(to top, #000 33.3%, transparent 66.7%);
105348
+ -webkit-mask-size: 100% 300%;
105349
+ -webkit-mask-repeat: no-repeat;
105350
+ -webkit-mask-position: 0 0%;
105351
+ mask-image: linear-gradient(to top, #000 33.3%, transparent 66.7%);
105352
+ mask-size: 100% 300%;
105353
+ mask-repeat: no-repeat;
105354
+ mask-position: 0 0%;
105355
+ }
105356
+ to {
105357
+ -webkit-mask-image: linear-gradient(to top, #000 33.3%, transparent 66.7%);
105358
+ -webkit-mask-size: 100% 300%;
105359
+ -webkit-mask-repeat: no-repeat;
105360
+ -webkit-mask-position: 0 100%;
105361
+ mask-image: linear-gradient(to top, #000 33.3%, transparent 66.7%);
105362
+ mask-size: 100% 300%;
105363
+ mask-repeat: no-repeat;
105364
+ mask-position: 0 100%;
105365
+ }
105366
+ }
105367
+
105290
105368
  ${RYe}
105291
105369
 
105292
105370
  /* ── Cube (rotate off one edge onto the next face) ──────────────────── */
@@ -105597,10 +105675,10 @@ function Fv(e, t, n, i, a) {
105597
105675
  return {
105598
105676
  outgoing: "none",
105599
105677
  incoming: {
105600
- left: `pptx-tr-wipe-from-left ${o} ${Be} forwards`,
105601
- right: `pptx-tr-wipe-from-right ${o} ${Be} forwards`,
105602
- up: `pptx-tr-wipe-from-top ${o} ${Be} forwards`,
105603
- down: `pptx-tr-wipe-from-bottom ${o} ${Be} forwards`
105678
+ left: `pptx-tr-wipe-from-right ${o} ${Be} forwards`,
105679
+ right: `pptx-tr-wipe-from-left ${o} ${Be} forwards`,
105680
+ up: `pptx-tr-wipe-from-bottom ${o} ${Be} forwards`,
105681
+ down: `pptx-tr-wipe-from-top ${o} ${Be} forwards`
105604
105682
  }[c],
105605
105683
  outgoingOnTop: !1
105606
105684
  };
@@ -121512,7 +121590,7 @@ function cdt(e) {
121512
121590
  var ddt = r.from_html('<div class="pptx-svelte-ai-dock svelte-1h57n9l"><!></div>');
121513
121591
  function pdt(e, t) {
121514
121592
  var n = ddt(), i = r.child(n);
121515
- r.await(i, () => import("./AiChatPanel-2KybLFhz.js"), null, (a, o) => {
121593
+ r.await(i, () => import("./AiChatPanel-DnrMMtf7.js"), null, (a, o) => {
121516
121594
  var s = r.derived(() => {
121517
121595
  var { default: p } = r.get(o);
121518
121596
  return { AiChatPanel: p };
@@ -137905,7 +137983,7 @@ function l2t(e, t) {
137905
137983
  var c2t = r.from_html('<button type="button"></button>'), XD = r.from_html('<p class="svelte-dgy1er"> </p>'), d2t = r.from_html('<p class="notice svelte-dgy1er"> </p>'), p2t = r.from_html('<p class="svelte-dgy1er"> </p> <button type="button" class="primary svelte-dgy1er"> </button>', 1), u2t = r.from_html('<section class="card svelte-dgy1er"><h2 class="svelte-dgy1er"> </h2> <!></section>'), h2t = r.from_html('<div class="pptx-svelte-account svelte-dgy1er"><section class="card svelte-dgy1er"><h2 class="svelte-dgy1er"> </h2> <div class="profile-row svelte-dgy1er"><span class="avatar svelte-dgy1er"> </span> <label class="name-field svelte-dgy1er"><span> </span> <input type="text" class="svelte-dgy1er"/></label></div> <span class="swatches-label svelte-dgy1er"> </span> <div class="swatch-row svelte-dgy1er" role="group"></div></section> <section class="card svelte-dgy1er"><h2 class="svelte-dgy1er"> </h2> <!> <button type="button" class="secondary svelte-dgy1er"> </button> <!> <p class="muted svelte-dgy1er"> </p></section> <section class="card svelte-dgy1er"><h2 class="svelte-dgy1er"> </h2> <p class="svelte-dgy1er">pptx-svelte-viewer</p> <p class="muted svelte-dgy1er"> </p></section> <!></div>');
137906
137984
  function f2t(e, t) {
137907
137985
  r.push(t, !0);
137908
- const n = he(), i = "3.4.0";
137986
+ const n = he(), i = "3.5.0";
137909
137987
  let a = r.state(r.proxy(ih().profile ?? { ...A3 })), o = r.state(void 0), s = r.state(!1);
137910
137988
  async function l() {
137911
137989
  r.set(o, await Zot(), !0);
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as e, G as a, J as t, K as o, Q as i, W as r, X as n, Y as l, Z as S, a as d, at as m, c as p, ct as T, dt as v, et as P, ft as g, it as u, l as h, lt as c, mt as A, nt as C, o as N, ot as f, pt as k, q as D, rt as E, s as x, st as b, t as B, tt as I, u as O, ut as _ } from "./export-C0RzyaUT.js";
1
+ import { $ as e, G as a, J as t, K as o, Q as i, W as r, X as n, Y as l, Z as S, a as d, at as m, c as p, ct as T, dt as v, et as P, ft as g, it as u, l as h, lt as c, mt as A, nt as C, o as N, ot as f, pt as k, q as D, rt as E, s as x, st as b, t as B, tt as I, u as O, ut as _ } from "./export-Bk-Ju0nY.js";
2
2
  import { i as R } from "./translator-YCJ___7k.js";
3
3
  import "./i18n.js";
4
4
  export {
@@ -1,4 +1,4 @@
1
- import { A as e, M as a, c as s, d as t, f as i, gt as l, ht as S, i as n, j as o, l as v, m as d, n as p, o as b, p as g, r as c, s as x, t as m, u as w } from "../export-C0RzyaUT.js";
1
+ import { A as e, M as a, c as s, d as t, f as i, gt as l, ht as S, i as n, j as o, l as v, m as d, n as p, o as b, p as g, r as c, s as x, t as m, u as w } from "../export-Bk-Ju0nY.js";
2
2
  var T = a, A = o, P = e;
3
3
  export {
4
4
  m as PowerPointViewer,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-svelte-viewer",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "description": "Svelte 5 PowerPoint viewer and editor component: render, edit, present, and export PPTX slides in the browser.",
5
5
  "keywords": [
6
6
  "office",