pptx-svelte-viewer 4.3.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,149 @@ 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
+ ## [4.4.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-svelte-viewer@4.4.0) - 2026-09-24
11
+
12
+ ### Features
13
+
14
+ - **shared,react,vue,angular,svelte,vanilla:** Element context menu format commands + Paste Special (by @ChristopherVR) ([ae48518](https://github.com/ChristopherVR/pptx-viewer/commit/ae485188df20eb0c309a6a4f2ee8b4302d7e7024))
15
+ - **shared,react,vue,angular,svelte,vanilla:** Render online video links as an iframe embed (by @ChristopherVR) ([6ba33e2](https://github.com/ChristopherVR/pptx-viewer/commit/6ba33e26119e20393984625c0e7a7958da5ec466))
16
+ - **shared,react,vue,angular,svelte,vanilla:** Apply Zoom returnToParent/transitionDur during slide-show playback (by @ChristopherVR) ([673afa5](https://github.com/ChristopherVR/pptx-viewer/commit/673afa5c7b62ff61378588b87ddbc1c7b433067e))
17
+ - **core,shared,react,vue,angular,svelte,vanilla:** P15/p14 transition direction, pattern and Through Black options (by @ChristopherVR) ([8b5ec7e](https://github.com/ChristopherVR/pptx-viewer/commit/8b5ec7ec976ad2779bec48d92a7177ad6fe92d38))
18
+
19
+ ### Bug Fixes
20
+
21
+ - **core:** Preserve blipFill and exact EMU on shape-with-image-fill save (by @ChristopherVR) ([8cd7a59](https://github.com/ChristopherVR/pptx-viewer/commit/8cd7a59e992e9ca6d4d6eb75756ff50294f346d8))
22
+ - **core:** Parse and re-emit ppaction://media hlinkClick on media pics (by @ChristopherVR) ([ea64525](https://github.com/ChristopherVR/pptx-viewer/commit/ea64525bfbac444c92337159082ccffe06181ce4))
23
+ - **core:** Stop merging authored runs and losing rPr/hlinkClick data (by @ChristopherVR) ([aad7ac3](https://github.com/ChristopherVR/pptx-viewer/commit/aad7ac3d5a31bd0ffbf8718bb5f7db02d09895b9))
24
+ - **core:** Pass untouched chart parts through unchanged on save (by @ChristopherVR) ([3094513](https://github.com/ChristopherVR/pptx-viewer/commit/3094513eec2ab008fcce78c6ac041fcd815169c1))
25
+ - **core:** Stop inventing a bare shape's p:txBody; keep bullet buFont hints (by @ChristopherVR) ([1773570](https://github.com/ChristopherVR/pptx-viewer/commit/1773570a5081cb478c4e38c7f735a1566934b4bf))
26
+ - **core:** Stop fabricating docProps identity, keep comment authors (by @ChristopherVR) ([47a60d8](https://github.com/ChristopherVR/pptx-viewer/commit/47a60d80ea0e3f14854b609abfaf466abb05e159))
27
+ - **shared,react:** Correct Box/Circle/Diamond/Plus entrance "In" mask reveal (by @ChristopherVR) ([cf6ddcf](https://github.com/ChristopherVR/pptx-viewer/commit/cf6ddcf8876cfed3743b6de5a3fb12695aeb5f10))
28
+ - **angular,svelte:** Fix two more hand-duplicated trigger label copies found via afterDelay rollout (by @ChristopherVR) ([4bbadd2](https://github.com/ChristopherVR/pptx-viewer/commit/4bbadd2b6814195208d934ea61e95847d8af9b14))
29
+ - **react,vue,angular,svelte,vanilla,shared:** Stop OLE actions nesting a <button> inside slide thumbnails (by @ChristopherVR) ([82da5a7](https://github.com/ChristopherVR/pptx-viewer/commit/82da5a73896a8498318882051078d65d38e5cb41))
30
+
31
+ ### Reverts
32
+
33
+ - **core:** Keep commentAuthors.xml deletion; it was correct behavior (by @ChristopherVR) ([93e4f73](https://github.com/ChristopherVR/pptx-viewer/commit/93e4f73d74ab6247acbc2df9aa2cef6ca9a4ce4d))
34
+
35
+ ### Refactor
36
+
37
+ - **shared,react,angular,svelte,vue:** Consolidate trigger options into shared, add afterDelay parity (by @ChristopherVR) ([819582f](https://github.com/ChristopherVR/pptx-viewer/commit/819582f5713c050c7e646385f17c40f9d8a41027))
38
+
39
+ ### Documentation
40
+
41
+ - **shared:** Record an inconclusive bounceEnd COM ground-truth attempt (by @ChristopherVR) ([6381b47](https://github.com/ChristopherVR/pptx-viewer/commit/6381b47521f45027cee9eb5c7de48036167bc90b))
42
+
43
+ ### Testing
44
+
45
+ - **core,shared:** Lock the COM-verified SVG srcRect stretch rule (by @ChristopherVR) ([f9029d4](https://github.com/ChristopherVR/pptx-viewer/commit/f9029d4dee1b89febc468e2ab3f568ff99f4f603))
46
+
47
+ ## [4.3.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-svelte-viewer@4.3.0) - 2026-09-24
48
+
49
+ ### Features
50
+
51
+ - **shared:** Trace glyph outlines for exact wordart envelope warps (work in progress) (by @ChristopherVR) ([c91f1cf](https://github.com/ChristopherVR/pptx-viewer/commit/c91f1cf2e7c089acf79f706ba49f887179a97499))
52
+ - **core:** Embed round-trip ooxml blobs for rich objects in .ppt export (work in progress) (by @ChristopherVR) ([2f9aea3](https://github.com/ChristopherVR/pptx-viewer/commit/2f9aea35b3887dfb5d3593ecad67a1605889ef00))
53
+ - **core:** Start a per-point diagramml layout engine for smartart (work in progress) (by @ChristopherVR) ([11c956f](https://github.com/ChristopherVR/pptx-viewer/commit/11c956f2c125c1572003129b0d9cd8d2b5ce5f28))
54
+ - **shared:** Add media fullScrn full-slide overlay decision function (by @ChristopherVR) ([8ae8ee1](https://github.com/ChristopherVR/pptx-viewer/commit/8ae8ee150518d89cb5328d98b775eb49983214a2))
55
+ - **core:** Route un-cached SmartArt through the per-point layout engine (by @ChristopherVR) ([e020656](https://github.com/ChristopherVR/pptx-viewer/commit/e020656b042dc9c86efb6588bfe22770870c4280))
56
+ - **core:** Parse InkML per-point T (time) channel into pointTimestamps (by @ChristopherVR) ([af3b954](https://github.com/ChristopherVR/pptx-viewer/commit/af3b9546cec6fc319ab579d035f22fc203de4059))
57
+ - **svelte:** Wire the fullScrn full-slide media overlay (by @ChristopherVR) ([066addc](https://github.com/ChristopherVR/pptx-viewer/commit/066addc7e6d6077f94eb7f45b607ecda15c425fb))
58
+ - **core:** Parse zoom return-to-parent and transition duration (work in progress) (by @ChristopherVR) ([5b0c9fb](https://github.com/ChristopherVR/pptx-viewer/commit/5b0c9fbf5bab3b599101b63f7782ebe88411cf79))
59
+ - **core:** Route measurably-better SmartArt layouts through the engine first (by @ChristopherVR) ([59e78c9](https://github.com/ChristopherVR/pptx-viewer/commit/59e78c99c7b9130ca00bb956654cadde2547b575))
60
+ - **core:** Implement the snake algorithm in the SmartArt layout engine (by @ChristopherVR) ([4b27704](https://github.com/ChristopherVR/pptx-viewer/commit/4b27704163ac689f5720de9d0ae1c481eea78fd6))
61
+ - **core:** Implement the cycle algorithm in the SmartArt layout engine (by @ChristopherVR) ([ad971a3](https://github.com/ChristopherVR/pptx-viewer/commit/ad971a3534392a595cb973c0b90609dd3a548921))
62
+ - **shared:** Add PowerPoint editor shortcuts to the shared keymap (by @ChristopherVR) ([9afcb56](https://github.com/ChristopherVR/pptx-viewer/commit/9afcb56d9d71d820d19dfbb78b4c4e7d00cd991e))
63
+ - **shared:** Add a shared PowerPoint font-size ladder stepper (by @ChristopherVR) ([8c86424](https://github.com/ChristopherVR/pptx-viewer/commit/8c864248a3a832996d8b0c0807c47a802d89a776))
64
+ - **svelte:** Wire PowerPoint editor shortcuts via the shared keymap (by @ChristopherVR) ([f58839d](https://github.com/ChristopherVR/pptx-viewer/commit/f58839d6d8b2cc02167d78a2e8e5457608627f9a))
65
+ - **core:** Parse p14:bounceEnd and play a Fly In bounce settle curve (by @ChristopherVR) ([2c44f37](https://github.com/ChristopherVR/pptx-viewer/commit/2c44f372b5a44ca8a9c87d2d86f84c0d1c49720a))
66
+ - **core:** Model onMediaBookmark triggers and fire them on playback (by @ChristopherVR) ([b153932](https://github.com/ChristopherVR/pptx-viewer/commit/b1539323ae4c063abe869f97c310506161973b10))
67
+ - **core:** Implement the pyra algorithm in the SmartArt layout engine (by @ChristopherVR) ([8dfb1d0](https://github.com/ChristopherVR/pptx-viewer/commit/8dfb1d0a58f75c98d6e24b5470dd82db54d0df76))
68
+ - **shared:** Add the 12 p15 preset transitions to the picker catalogue (by @ChristopherVR) ([9d4cd08](https://github.com/ChristopherVR/pptx-viewer/commit/9d4cd083326627015f290f110035594b547b839d))
69
+
70
+ ### Bug Fixes
71
+
72
+ - **core:** Declare every namespace prefix a saved part uses (by @ChristopherVR) ([bd0a7fc](https://github.com/ChristopherVR/pptx-viewer/commit/bd0a7fca02bbbc4ea8d71f5c2b2970411ab6e971))
73
+ - **core:** Keep run-level slide jumps as slide relationships on save (by @ChristopherVR) ([d2f6924](https://github.com/ChristopherVR/pptx-viewer/commit/d2f6924aeee390a40d11579e9ee6a1d8033ecf1a))
74
+ - **core:** Stop showing chart data labels PowerPoint hides (work in progress) (by @ChristopherVR) ([a8de727](https://github.com/ChristopherVR/pptx-viewer/commit/a8de727868334f822a032b5c11370199dafd6020))
75
+ - **core:** Write valid build lists and effect behaviours for animations (work in progress) (by @ChristopherVR) ([09af92c](https://github.com/ChristopherVR/pptx-viewer/commit/09af92c1085764a49b18b7dfca3d71207c46ec91))
76
+ - **shared:** Halve-width bug in clustered bar/column gap sizing (by @ChristopherVR) ([bfd1953](https://github.com/ChristopherVR/pptx-viewer/commit/bfd19533effd6393d802cd8cbd598cd45d420e19))
77
+ - **core:** Prune custom-show/section refs on slide delete without opts (by @ChristopherVR) ([4046345](https://github.com/ChristopherVR/pptx-viewer/commit/40463456981eae2128d5a18dd0d1b34993d50af4))
78
+ - **shared:** Recover per-paragraph rtl lost to the shape-level default (by @ChristopherVR) ([cc046bf](https://github.com/ChristopherVR/pptx-viewer/commit/cc046bffe37c8445bb99de188636eaacbe4b2c9e))
79
+ - **core:** Stop a bulleted paragraph's marker from shadowing its own algn (by @ChristopherVR) ([3a4307b](https://github.com/ChristopherVR/pptx-viewer/commit/3a4307b1c058b38d21c2518726417c6a72f881f2))
80
+ - **shared:** Combo per-series chart types and stray "-0" axis labels (by @ChristopherVR) ([06f2b41](https://github.com/ChristopherVR/pptx-viewer/commit/06f2b4173c1feb849284f67a3711e28ec9288f3e))
81
+ - **core:** Stop dropping empty self-closing image effect elements (by @ChristopherVR) ([2ee225e](https://github.com/ChristopherVR/pptx-viewer/commit/2ee225e43c93c69f7633f214b1c4e175227ebf8a))
82
+ - **core:** Stop untouched SmartArt colours corrupting on save (by @ChristopherVR) ([fc06842](https://github.com/ChristopherVR/pptx-viewer/commit/fc068425b770c251db1701b604e5ff7b81598b03))
83
+ - **shared:** Use sample (not population) variance for stdDev/stdErr error bars (by @ChristopherVR) ([982c16c](https://github.com/ChristopherVR/pptx-viewer/commit/982c16cb583354001e0455c1247a1bfd15154240))
84
+ - **core:** Fix TS18048 possibly-undefined scope in namespace declarations (by @ChristopherVR) ([a55c718](https://github.com/ChristopherVR/pptx-viewer/commit/a55c718d1738feb360caaf4594018b37faedcfe7))
85
+ - **core:** Resolve spcPct paragraph spacing against 1.2x font size (by @ChristopherVR) ([bca61b4](https://github.com/ChristopherVR/pptx-viewer/commit/bca61b44a1fd2d23505e457de53edb30cadb1e6c))
86
+ - **shared:** Render area-typed combo series as filled areas (by @ChristopherVR) ([54aa4be](https://github.com/ChristopherVR/pptx-viewer/commit/54aa4be9d599cf8413780aee7a0b4cf8672076fe))
87
+ - **core:** Reconcile animation write tests with valid build-list output (by @ChristopherVR) ([ef4e294](https://github.com/ChristopherVR/pptx-viewer/commit/ef4e294c64c58a64e00bdf40c6e582ab79977f9c))
88
+ - **core:** Read back .ppt gradient fills and stop dropping pattern fills (by @ChristopherVR) ([42ded86](https://github.com/ChristopherVR/pptx-viewer/commit/42ded865efef2e040771749f528386e485d0bb99))
89
+ - **shared:** Correct washout/lum brightness-contrast formula (by @ChristopherVR) ([dd28449](https://github.com/ChristopherVR/pptx-viewer/commit/dd2844911ea0c620e749683740580cd33fc10620))
90
+ - **shared:** Decouple metal bevel specular elevation from diffuse (by @ChristopherVR) ([981ef88](https://github.com/ChristopherVR/pptx-viewer/commit/981ef880aa529e759220c828ed7bf7fcd1a8e6de))
91
+ - **shared:** Drive ink replay timing from real InkML timestamps (by @ChristopherVR) ([ab67076](https://github.com/ChristopherVR/pptx-viewer/commit/ab67076f8e794aa4a5fbdece16f5d41a809660da))
92
+ - **shared:** Derive the WordArt can-preset glyph-spacing law from COM (by @ChristopherVR) ([440356d](https://github.com/ChristopherVR/pptx-viewer/commit/440356d62d17fae40ccf0394110161589b6d5e1e))
93
+ - **core:** Resolve a:tblBg fillRef against the theme format scheme (by @ChristopherVR) ([0174572](https://github.com/ChristopherVR/pptx-viewer/commit/01745725a8506b79b5dd812bd0ed46e2ecfd39ce))
94
+ - **core:** Resolve legacy VML-only OLE preview images (by @ChristopherVR) ([98ae67c](https://github.com/ChristopherVR/pptx-viewer/commit/98ae67cbbd3383e529894bd6ea0e93461488f5f4))
95
+ - **svelte:** Apply highlighter mix-blend-mode per stroke, not per element (by @ChristopherVR) ([cd41fe3](https://github.com/ChristopherVR/pptx-viewer/commit/cd41fe30cd345c09819dfa07414e0b9977725d0c))
96
+ - **shared:** Render the table style tblBg background beneath noFill layers (by @ChristopherVR) ([9e4f1e7](https://github.com/ChristopherVR/pptx-viewer/commit/9e4f1e7aea07a487b3052dad1d5628357bdfef46))
97
+ - **shared:** Scale tiled picture fills from the image's native size (work in progress) (by @ChristopherVR) ([92375c4](https://github.com/ChristopherVR/pptx-viewer/commit/92375c470c9c3995f48afc2f22871ffa9609c76c))
98
+ - **core:** Size table cell text from the master other-text style (work in progress) (by @ChristopherVR) ([481c564](https://github.com/ChristopherVR/pptx-viewer/commit/481c5645a5a0e3f930899217308177bea36a5bfa))
99
+ - **core:** Update the OLE in-place-editing compatibility warning (by @ChristopherVR) ([9dd216e](https://github.com/ChristopherVR/pptx-viewer/commit/9dd216edc58e29358e187f62c8ad742d523e578a))
100
+ - **core:** Stop the SmartArt engine dropping hideGeom item-role shapes (by @ChristopherVR) ([9c8c2dc](https://github.com/ChristopherVR/pptx-viewer/commit/9c8c2dce96e7fc1f6faf7ef813deb9095a15ba6b))
101
+ - **core:** Preserve untouched equation XML on save (by @ChristopherVR) ([640bd17](https://github.com/ChristopherVR/pptx-viewer/commit/640bd176246ef43dc510d301017da71d7b5b44ae))
102
+ - **core:** Keep a soft line break from becoming a paragraph break (by @ChristopherVR) ([fbdb209](https://github.com/ChristopherVR/pptx-viewer/commit/fbdb2094f61eadd60fd50656a61d13081d923c07))
103
+ - **core:** Stop reformatting and mutating untouched comment timestamps (by @ChristopherVR) ([bfc92de](https://github.com/ChristopherVR/pptx-viewer/commit/bfc92de9fff54052b9f71f1a72e1a5c4eb83d536))
104
+ - **core:** Write PowerPoint's real behaviour tree for entrance/exit presets (by @ChristopherVR) ([d510300](https://github.com/ChristopherVR/pptx-viewer/commit/d510300729453c1344232efa1cb786790aeeeeae))
105
+ - **core:** Write PowerPoint's real behaviour tree for emphasis presets (by @ChristopherVR) ([0662453](https://github.com/ChristopherVR/pptx-viewer/commit/0662453b747fb4d6099ccdf75531c296b39c055a))
106
+ - **shared:** Render real dates for datetime fields, not the field type (by @ChristopherVR) ([f3653c2](https://github.com/ChristopherVR/pptx-viewer/commit/f3653c2665b0675ad4a50bfee5dc2e8eae7ba3af))
107
+ - **shared:** Apply theme per-script fonts over a run's cascaded font (by @ChristopherVR) ([0a00208](https://github.com/ChristopherVR/pptx-viewer/commit/0a00208cc553eb91b2f96292b1690fdb252f743d))
108
+ - **shared:** Keep gradient/pattern text fills continuous, not per-word (by @ChristopherVR) ([cf05400](https://github.com/ChristopherVR/pptx-viewer/commit/cf054000044540c233e49e6aaae590ff059f15f9))
109
+ - **core:** Resolve buBlip picture-bullet images after slide parsing (by @ChristopherVR) ([beb20b5](https://github.com/ChristopherVR/pptx-viewer/commit/beb20b59eaa3ec93d7f8c164d5fea58bd32aaceb))
110
+ - **shared:** Apply brightness scaled by contrast in a:lum luminance (by @ChristopherVR) ([e55b28a](https://github.com/ChristopherVR/pptx-viewer/commit/e55b28a2042b506562f8edb9759210f2f15a8097))
111
+ - **core:** Parse and render table-style band fill alpha (by @ChristopherVR) ([69f124a](https://github.com/ChristopherVR/pptx-viewer/commit/69f124a84fb962b346718c75dac99f7708a30c06))
112
+ - **shared:** Stop clipping a table whose rows auto-grow past its frame (by @ChristopherVR) ([ad4ebb2](https://github.com/ChristopherVR/pptx-viewer/commit/ad4ebb2e91bd9c4c4adfe5c2bcc6fc9aa1aa3d9c))
113
+ - **core,shared:** Settle table-style fill alpha on one unit (by @ChristopherVR) ([afa50de](https://github.com/ChristopherVR/pptx-viewer/commit/afa50de2a7e5f314fed908a196244c886e67641a))
114
+ - **shared:** Stop a "repeat until next click" loop on the next click (by @ChristopherVR) ([c92d667](https://github.com/ChristopherVR/pptx-viewer/commit/c92d66751c94388a0aac9d0dd172fe880db89d54))
115
+ - **shared:** Honour presetSubtype for Blinds, Checkerboard, Wheel, Random Bars (by @ChristopherVR) ([000efbe](https://github.com/ChristopherVR/pptx-viewer/commit/000efbea966863276d6275ac3ca68ccae3b5e6f9))
116
+ - **shared:** Draw stock HLC/OHLC candles per PowerPoint semantics (by @ChristopherVR) ([7ecb42b](https://github.com/ChristopherVR/pptx-viewer/commit/7ecb42b628b32622f98780f6e18b9e9881bbf68a))
117
+ - **shared:** Correct trendline math, formatting and legend (by @ChristopherVR) ([91cc3c8](https://github.com/ChristopherVR/pptx-viewer/commit/91cc3c8a4c2008726f03f598984133882736f643))
118
+ - **shared:** Scale a scatter/bubble chart's X axis like Excel (by @ChristopherVR) ([16a3e4d](https://github.com/ChristopherVR/pptx-viewer/commit/16a3e4df35b97e2983e4ee394257a280a50b4bf9))
119
+ - **shared,core:** Map animation preset 30 to Float, not Spinner (by @ChristopherVR) ([e98152e](https://github.com/ChristopherVR/pptx-viewer/commit/e98152eee7a756ec205ee370525baec146f1dedb))
120
+ - **core:** Read the pyramid composite ctrX/w fill idiom as a fraction (by @ChristopherVR) ([9cf9fd9](https://github.com/ChristopherVR/pptx-viewer/commit/9cf9fd9aad6f856862fa431236d3697f42f87886))
121
+ - **core:** Stop pinning inherited bodyPr onto untouched shapes on save (by @ChristopherVR) ([7f35589](https://github.com/ChristopherVR/pptx-viewer/commit/7f35589094588355579da4b21c2e2ff654eaf847))
122
+ - **core:** Stop pinning master bullets and dropping bullet inherit markers (by @ChristopherVR) ([c406fa9](https://github.com/ChristopherVR/pptx-viewer/commit/c406fa986723ba69b5c29006fa509c90ee7cbbdd))
123
+ - **core:** Stop flattening master text-style aliases on every save (by @ChristopherVR) ([1cdd778](https://github.com/ChristopherVR/pptx-viewer/commit/1cdd778ec42288d548b442a89e5b3bcd4cfcec0b))
124
+ - **core:** Mirror the master/layout p:bgRef guard onto slide rewrite (by @ChristopherVR) ([670d106](https://github.com/ChristopherVR/pptx-viewer/commit/670d10694a18089a383084dbc00127f5c03d78d4))
125
+ - **shared:** Correct CSS mapping for vert/vert270/wordArt vertical text (by @ChristopherVR) ([fce308c](https://github.com/ChristopherVR/pptx-viewer/commit/fce308c093640f49adb05efb4e9aa6bb9f2cb1cd))
126
+ - **shared:** Honour numCol column-fill, @anchor and @rtlCol (by @ChristopherVR) ([f380f53](https://github.com/ChristopherVR/pptx-viewer/commit/f380f531f976c3769db27d45181c9aff1173e6e3))
127
+ - **shared:** Distribute the last line and single lines for algn="dist" (by @ChristopherVR) ([730ced1](https://github.com/ChristopherVR/pptx-viewer/commit/730ced1fff583a222f89d8ee28f775aa5eb2ff6e))
128
+ - **shared:** Size a paragraph's line-height strut on its smallest run (by @ChristopherVR) ([940137d](https://github.com/ChristopherVR/pptx-viewer/commit/940137d6cc16d468c8fcaeb154c97eb69384e6ca))
129
+ - **shared:** Centre anchorCtr as one shared box, not per-paragraph (by @ChristopherVR) ([5982d91](https://github.com/ChristopherVR/pptx-viewer/commit/5982d917abb062676596ac6976b7df9b70b26222))
130
+ - **core,shared:** Stop empty auto-numbered paragraphs consuming a number and marR being dropped (by @ChristopherVR) ([b163cad](https://github.com/ChristopherVR/pptx-viewer/commit/b163cad85630772903e01954d05987c9e6dbaa5d))
131
+ - **core:** Stretch SVG picture fills instead of squashing srcRect crops (by @ChristopherVR) ([096794f](https://github.com/ChristopherVR/pptx-viewer/commit/096794fbca013f1a1cc5432c8dec82ccc0f9a419))
132
+ - **shared:** Play exit preset 30 (Float Out) with the existing fade-out approximation (by @ChristopherVR) ([c128d23](https://github.com/ChristopherVR/pptx-viewer/commit/c128d230d2ab28bb63f3d7f15e688199721291f9))
133
+ - **angular,core,shared:** Finish View > Normal and zoom field wiring after rebase (by @ChristopherVR) ([df6bddf](https://github.com/ChristopherVR/pptx-viewer/commit/df6bddf25bcde10b0153ffb3f0bd33491b065291))
134
+
135
+ ### Documentation
136
+
137
+ - **core:** Restate the SmartArt interpreter gate with measured numbers (by @ChristopherVR) ([8d706b9](https://github.com/ChristopherVR/pptx-viewer/commit/8d706b99802292414adc9a9da663d9320b08bf81))
138
+
139
+ ### Testing
140
+
141
+ - **core:** Re-anchor coverage evidence to the renamed build-list tests (by @ChristopherVR) ([a1b26e5](https://github.com/ChristopherVR/pptx-viewer/commit/a1b26e592d7059e2bcf9384f97ec37b031338778))
142
+ - **core:** Cover attribute-less grayscl parsing in image colour effects (by @ChristopherVR) ([5588bec](https://github.com/ChristopherVR/pptx-viewer/commit/5588bec9a354bc54360c6f352ddb4fe8a5cb2ee1))
143
+ - **core:** Register the new table-row-autogrow.pptx fixture (by @ChristopherVR) ([e1cebe9](https://github.com/ChristopherVR/pptx-viewer/commit/e1cebe93462cf4e6e351824c931a80fdda3480f4))
144
+ - **core:** Cover the notes master save path for text-less anchor loss (by @ChristopherVR) ([8bed413](https://github.com/ChristopherVR/pptx-viewer/commit/8bed413605f9408ab28864659ca5e81da035c0e0))
145
+ - **core:** Add extractOwnBackgroundRefNode to mocked loader params (by @ChristopherVR) ([8056d5a](https://github.com/ChristopherVR/pptx-viewer/commit/8056d5a7a19e4aa198e1726cfce01719bfe67473))
146
+
147
+ ### Dependencies
148
+
149
+ - **deps:** Update emf-converter to 3.1.0 (by @ChristopherVR) ([5eac42f](https://github.com/ChristopherVR/pptx-viewer/commit/5eac42f20a2d783574ab5f40640238c0e42bf744))
150
+ - **deps:** Update emf-converter to 3.2.0 (by @ChristopherVR) ([bc37b25](https://github.com/ChristopherVR/pptx-viewer/commit/bc37b256dd8c0b93e03c451144562c6e466c25c9))
151
+ - **deps:** Update emf-converter to 3.3.0 (by @ChristopherVR) ([9c83a17](https://github.com/ChristopherVR/pptx-viewer/commit/9c83a17478fbc634e2da9c8cdcbadc956a8dd2eb))
152
+
10
153
  ## [4.2.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-svelte-viewer@4.2.0) - 2026-09-24
11
154
 
12
155
  ### Features
@@ -1,5 +1,5 @@
1
- import { T as V } from "./transition-overlay-BmUNA9xJ.js";
2
- import { B as U, C as ce, D as pe, E as de, F as ve, G as A, H as ue, L as Y, O as he, R as $, S as _e, T as ge, U as xe, V as R, W as fe, _ as me, b as be, g as ye, h as ke, k as we, v as Ce, w as Me, x as ze, y as Se, z as Pe } from "./export-CVIAWQ_T.js";
1
+ import { T as V } from "./transition-overlay-BfpjfjU4.js";
2
+ import { B as U, C as ce, D as pe, E as de, F as ve, G as A, H as ue, L as Y, O as he, R as $, S as _e, T as ge, U as xe, V as R, W as fe, _ as me, b as be, g as ye, h as ke, m as we, v as Ce, w as Me, x as ze, y as Se, z as Pe } from "./export-Bln1wHMQ.js";
3
3
  import "svelte/internal/disclose-version";
4
4
  import * as e from "svelte/internal/client";
5
5
  import { onMount as qe, untrack as O } from "svelte";
@@ -43,8 +43,8 @@ function W(s, t) {
43
43
  }
44
44
  function Ae(s) {
45
45
  let t = e.state(e.proxy([]));
46
- const a = O(() => me({
47
- deckId: Se(s.bridge),
46
+ const a = O(() => ye({
47
+ deckId: Ce(s.bridge),
48
48
  store: s.store,
49
49
  getMessages: () => s.getMessages(),
50
50
  setMessages: s.setMessages,
@@ -126,11 +126,11 @@ var De = class {
126
126
  async init() {
127
127
  this.initState = "checking", this.initError = void 0;
128
128
  try {
129
- if (!await (this.#t.checkAvailable ?? ce)()) {
129
+ if (!await (this.#t.checkAvailable ?? _e)()) {
130
130
  this.initState = "unavailable";
131
131
  return;
132
132
  }
133
- const s = await (this.#t.createSession ?? Ce)(this.#t.bridge, this.#t.config);
133
+ const s = await (this.#t.createSession ?? me)(this.#t.bridge, this.#t.config);
134
134
  e.set(this.#a, s);
135
135
  const { Chat: t } = await import("@ai-sdk/svelte");
136
136
  e.set(this.#e, new t({
@@ -140,7 +140,7 @@ var De = class {
140
140
  onToolCall: async ({ toolCall: a }) => {
141
141
  const { toolName: i, toolCallId: r, input: d } = a, z = e.get(this.#e);
142
142
  if (!z) return;
143
- this.#t.onToolTarget?.(he(i, d));
143
+ this.#t.onToolTarget?.(pe(i, d));
144
144
  const f = z.addToolOutput;
145
145
  try {
146
146
  f({
@@ -406,7 +406,7 @@ function Je(s, t) {
406
406
  var Qe = e.from_html('<span><span class="pptx-svelte-ai-focus-chip-label svelte-kjj0i7"> </span></span>'), Ye = e.from_html('<span class="pptx-svelte-ai-focus-pinned svelte-kjj0i7"> </span>'), $e = e.from_html('<button type="button" class="pptx-svelte-ai-focus-merge svelte-kjj0i7"><!> </button>'), J = e.from_html('<button type="button" class="pptx-svelte-ai-focus-btn svelte-kjj0i7"><!></button>'), et = e.from_html('<div class="pptx-svelte-ai-focus-hint svelte-kjj0i7"><!> <span class="svelte-kjj0i7"> </span> <button type="button" class="pptx-svelte-ai-focus-done svelte-kjj0i7"> </button></div>'), tt = e.from_html('<div class="pptx-svelte-ai-focus svelte-kjj0i7"><div class="pptx-svelte-ai-focus-row svelte-kjj0i7"><span class="pptx-svelte-ai-focus-scope svelte-kjj0i7"> </span> <!> <!> <div class="pptx-svelte-ai-focus-actions svelte-kjj0i7"><!> <button type="button"><!></button> <!></div></div> <!></div>');
407
407
  function at(s, t) {
408
408
  e.push(t, !0);
409
- const a = V(), i = e.derived(() => ze(t.targets, t.slides)), r = e.derived(() => Me(t.targets, t.slides));
409
+ const a = V(), i = e.derived(() => be(t.targets, t.slides)), r = e.derived(() => ce(t.targets, t.slides));
410
410
  var d = tt(), z = e.child(d), f = e.child(z), _ = e.only_child(f, !0), y = e.sibling(f, 2);
411
411
  e.each(y, 17, () => e.get(i), (n) => n.key, (n, c) => {
412
412
  var M = Qe();
@@ -430,7 +430,7 @@ function at(s, t) {
430
430
  "aria-hidden": "true"
431
431
  });
432
432
  var S = e.sibling(M);
433
- e.reset(c), e.template_effect((D) => e.set_text(S, ` ${D ?? ""}`), [() => a("pptx.ai.mergeSelectedTables")]), e.delegated("click", c, () => t.onsenddirective(ge(e.get(r).slideIndex, e.get(r).elementIdA, e.get(r).elementIdB))), e.append(n, c);
433
+ e.reset(c), e.template_effect((D) => e.set_text(S, ` ${D ?? ""}`), [() => a("pptx.ai.mergeSelectedTables")]), e.delegated("click", c, () => t.onsenddirective(Me(e.get(r).slideIndex, e.get(r).elementIdA, e.get(r).elementIdB))), e.append(n, c);
434
434
  };
435
435
  e.if(g, (n) => {
436
436
  e.get(r) && n(k);
@@ -532,7 +532,7 @@ function pt(s, t) {
532
532
  }
533
533
  e.user_effect(() => (document.addEventListener("mousedown", d), () => document.removeEventListener("mousedown", d)));
534
534
  var z = ct(), f = e.child(z), _ = e.child(f), y = e.child(_);
535
- ye(y, {
535
+ ke(y, {
536
536
  size: 14,
537
537
  "aria-hidden": "true"
538
538
  });
@@ -912,7 +912,7 @@ var At = e.from_html('<div class="pptx-svelte-ai-tool-error svelte-1878924"> </d
912
912
  function It(s, t) {
913
913
  e.push(t, !0);
914
914
  const a = V(), i = {
915
- view: ke,
915
+ view: we,
916
916
  text: Pe,
917
917
  shape: Pt,
918
918
  theme: zt,
@@ -926,7 +926,7 @@ function It(s, t) {
926
926
  animation: ft,
927
927
  notes: ue,
928
928
  tool: Q
929
- }, r = e.derived(() => t.part.state === "output-error"), d = e.derived(() => t.part.state === "output-available"), z = e.derived(() => !e.get(r) && !e.get(d)), f = e.derived(() => be(t.part.toolName, t.part.input, e.get(z) ? "present" : "past")), _ = e.derived(() => i[e.get(f).icon] ?? Q), y = e.derived(() => de(t.part.input)), m = e.derived(() => e.get(r) ? a("pptx.ai.toolFailed") : e.get(d) ? a("pptx.ai.toolDone") : a("pptx.ai.toolRunning"));
929
+ }, r = e.derived(() => t.part.state === "output-error"), d = e.derived(() => t.part.state === "output-available"), z = e.derived(() => !e.get(r) && !e.get(d)), f = e.derived(() => Se(t.part.toolName, t.part.input, e.get(z) ? "present" : "past")), _ = e.derived(() => i[e.get(f).icon] ?? Q), y = e.derived(() => ge(t.part.input)), m = e.derived(() => e.get(r) ? a("pptx.ai.toolFailed") : e.get(d) ? a("pptx.ai.toolDone") : a("pptx.ai.toolRunning"));
930
930
  var b = Et(), x = e.child(b), g = e.child(x);
931
931
  {
932
932
  let p = e.derived(() => e.get(r) ? "pptx-svelte-ai-tool-ic is-error" : "pptx-svelte-ai-tool-ic");
@@ -985,7 +985,7 @@ function It(s, t) {
985
985
  var j = Dt(), E = e.child(j), L = e.only_child(E, !0), F = e.sibling(E, 2), I = e.only_child(F);
986
986
  e.reset(j), e.template_effect((H, N) => {
987
987
  e.set_text(L, H), e.set_text(I, `${N ?? ""}: ${e.get(y) ?? ""}`);
988
- }, [() => a("pptx.ai.toolDetails"), () => we(t.part.toolName)]), e.append(p, j);
988
+ }, [() => a("pptx.ai.toolDetails"), () => he(t.part.toolName)]), e.append(p, j);
989
989
  };
990
990
  e.if(q, (p) => {
991
991
  e.get(y) && p(h);
@@ -1017,7 +1017,7 @@ function Bt(s, t) {
1017
1017
  }, f = (_) => {
1018
1018
  var y = Nt(), m = e.child(y);
1019
1019
  e.each(m, 17, () => t.messages, (k) => k.id, (k, w) => {
1020
- const T = e.derived(() => e.get(w).role === "user"), u = e.derived(() => pe(e.get(w)));
1020
+ const T = e.derived(() => e.get(w).role === "user"), u = e.derived(() => de(e.get(w)));
1021
1021
  var o = e.comment(), l = e.first_child(o), v = (C) => {
1022
1022
  var P = Ht(), n = e.child(P);
1023
1023
  let c;
@@ -1073,7 +1073,7 @@ function Bt(s, t) {
1073
1073
  var Ut = e.from_html('<li class="svelte-15p5728"> </li>'), Ot = e.from_html('<ul class="pptx-svelte-ai-proposal-summary svelte-15p5728"></ul>'), Rt = e.from_html('<div class="pptx-svelte-ai-proposal svelte-15p5728"><div class="pptx-svelte-ai-proposal-tag svelte-15p5728"> </div> <div class="pptx-svelte-ai-proposal-label svelte-15p5728"> </div> <!> <div class="pptx-svelte-ai-proposal-actions svelte-15p5728"><button type="button" class="pptx-svelte-ai-proposal-btn is-accept svelte-15p5728"><!> </button> <button type="button" class="pptx-svelte-ai-proposal-btn is-reject svelte-15p5728"><!> </button></div></div>');
1074
1074
  function Wt(s, t) {
1075
1075
  e.push(t, !0);
1076
- const a = V(), i = e.derived(() => t.proposal.summary.map(_e));
1076
+ const a = V(), i = e.derived(() => t.proposal.summary.map(ze));
1077
1077
  var r = Rt(), d = e.child(r), z = e.only_child(d, !0), f = e.sibling(d, 2), _ = e.only_child(f, !0), y = e.sibling(f, 2), m = (o) => {
1078
1078
  var l = Ot();
1079
1079
  e.each(l, 21, () => e.get(i), e.index, (v, C) => {