pptx-angular-viewer 4.8.0 → 4.10.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 (24) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/fesm2022/{pptx-angular-viewer-chart-3d-view-scene-CM71j9A9.mjs → pptx-angular-viewer-chart-3d-view-scene-CkW1D-mg.mjs} +36 -22
  3. package/fesm2022/pptx-angular-viewer-chart-3d-view-scene-CkW1D-mg.mjs.map +1 -0
  4. package/fesm2022/{pptx-angular-viewer-chat-history-idb-7dyn_ZbD.mjs → pptx-angular-viewer-chat-history-idb-BboVG09q.mjs} +2 -2
  5. package/fesm2022/{pptx-angular-viewer-chat-history-idb-7dyn_ZbD.mjs.map → pptx-angular-viewer-chat-history-idb-BboVG09q.mjs.map} +1 -1
  6. package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-Cf08ueRA.mjs → pptx-angular-viewer-pptx-angular-viewer-BWuuwItt.mjs} +11005 -2724
  7. package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-Cf08ueRA.mjs.map → pptx-angular-viewer-pptx-angular-viewer-BWuuwItt.mjs.map} +1 -1
  8. package/fesm2022/{pptx-angular-viewer-view-scene-Bn9SJZk9.mjs → pptx-angular-viewer-view-scene-BJXZicXV.mjs} +150 -65
  9. package/fesm2022/pptx-angular-viewer-view-scene-BJXZicXV.mjs.map +1 -0
  10. package/fesm2022/pptx-angular-viewer.mjs +1 -1
  11. package/i18n/de.cjs +276 -9
  12. package/i18n/de.mjs +276 -9
  13. package/i18n/es.cjs +276 -9
  14. package/i18n/es.mjs +276 -9
  15. package/i18n/fr.cjs +276 -9
  16. package/i18n/fr.mjs +276 -9
  17. package/i18n/zh-CN.cjs +279 -12
  18. package/i18n/zh-CN.mjs +279 -12
  19. package/package.json +5 -4
  20. package/pptx-angular-viewer.css +1 -1
  21. package/types/pptx-angular-viewer.d.ts +877 -208
  22. package/types/pptx-angular-viewer.d.ts.map +1 -1
  23. package/fesm2022/pptx-angular-viewer-chart-3d-view-scene-CM71j9A9.mjs.map +0 -1
  24. package/fesm2022/pptx-angular-viewer-view-scene-Bn9SJZk9.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,137 @@ 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.9.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-angular-viewer@4.9.0) - 2026-09-25
11
+
12
+ ### Features
13
+
14
+ - **shared:** Draw horizontal 3D bars without right-angle axes on the perspective box (by @claude) ([e0c1aad](https://github.com/ChristopherVR/pptx-viewer/commit/e0c1aad3797be9fe75e2b02cd225d19106d38eb0))
15
+ - **shared:** Draw right-angle-axes 3D line, area and surface charts obliquely (by @claude) ([e74306a](https://github.com/ChristopherVR/pptx-viewer/commit/e74306a1a2cf6a69cd3f9672c560cc80550cff16))
16
+ - **core:** Write the slide master's placeholders and theme into .ppt (by @ChristopherVR) ([95b2e26](https://github.com/ChristopherVR/pptx-viewer/commit/95b2e26e31a5f8a5da931394f19b460c38177981))
17
+ - **shared:** Ribbon group/control ids and the style gallery framework (by @ChristopherVR) ([adda887](https://github.com/ChristopherVR/pptx-viewer/commit/adda8870353bdb2f476ff63532fe8c726f9cab50))
18
+ - **locales:** Translate the ribbon gallery and contextual tab strings (by @ChristopherVR) ([dad9566](https://github.com/ChristopherVR/pptx-viewer/commit/dad95669edd0a8298f8b4f5a6c685e785312cdc1))
19
+ - **core:** Keep a text reflection's end position and direction (by @ChristopherVR) ([afb807d](https://github.com/ChristopherVR/pptx-viewer/commit/afb807d81d18c017367d1af5bd01ddf5bb9a036e))
20
+ - **shared:** Fill the ribbon style galleries (by @ChristopherVR) ([2a743b9](https://github.com/ChristopherVR/pptx-viewer/commit/2a743b97996e32f2cef891329c9ea86b070e2a0f))
21
+ - **locales:** Translate the table, chart, SmartArt and theme gallery names (by @ChristopherVR) ([a80c0a8](https://github.com/ChristopherVR/pptx-viewer/commit/a80c0a875ab180f7804fd08fa1f7e9be71ac15a4))
22
+ - **angular:** Ribbon style galleries, contextual tabs and group customisation (by @ChristopherVR) ([127100f](https://github.com/ChristopherVR/pptx-viewer/commit/127100fce46b653be3387825fa7dc91d33d71127))
23
+ - **locales:** Translate the Shape Effects, WordArt and list gallery tiles (by @ChristopherVR) ([7b665fe](https://github.com/ChristopherVR/pptx-viewer/commit/7b665fed8d6bfca94ab43721aaab597509f9c9f2))
24
+ - **shared:** Picture Styles gallery with PowerPoint's 28 styles (by @ChristopherVR) ([2d56881](https://github.com/ChristopherVR/pptx-viewer/commit/2d56881a23e1a49b631e8554d42a2bdc9366f527))
25
+ - **locales:** Translate the Picture Styles gallery names (by @ChristopherVR) ([0e1eab2](https://github.com/ChristopherVR/pptx-viewer/commit/0e1eab2bd66ed087cc71f75f66506b99cbc17d79))
26
+ - **shared:** Find the gallery theme preset a deck's theme matches (by @ChristopherVR) ([15d0e41](https://github.com/ChristopherVR/pptx-viewer/commit/15d0e41ad8b560325e366dbc36aa4303af2d9e36))
27
+ - **shared:** Play entrances and exits from the deck's behaviour tree (by @ChristopherVR) ([18c512e](https://github.com/ChristopherVR/pptx-viewer/commit/18c512ecf11aeaa19140124f2c85c66f525af010))
28
+ - **shared:** Offer only the directions PowerPoint has for a preset (by @ChristopherVR) ([999208d](https://github.com/ChristopherVR/pptx-viewer/commit/999208d9906bd26b6b7d1d36ce143acaf6630957))
29
+ - **shared:** Preview entrances and exits with PowerPoint's own tree (by @ChristopherVR) ([b3cc6c6](https://github.com/ChristopherVR/pptx-viewer/commit/b3cc6c67383c236c3d9ed386a20f8c7e478bd2a5))
30
+ - **angular:** Offer PowerPoint's directions and preview from its tree (by @ChristopherVR) ([1f8ebd1](https://github.com/ChristopherVR/pptx-viewer/commit/1f8ebd11b7c15d346227f2f5a7cdf699b8dfff26))
31
+
32
+ ### Bug Fixes
33
+
34
+ - **shared:** Break East Asian text across runs like PowerPoint (by @ChristopherVR) ([56ea24e](https://github.com/ChristopherVR/pptx-viewer/commit/56ea24eb3afb76a32689ee917f3ccb2759d8039f))
35
+ - **shared:** Size data-label boxes from the measured text (by @ChristopherVR) ([328d0f0](https://github.com/ChristopherVR/pptx-viewer/commit/328d0f074b794a4a0e4c58815c7b4ccf3d9dce99))
36
+ - **shared:** Place bestFit pie labels where PowerPoint does (by @ChristopherVR) ([63e1dc3](https://github.com/ChristopherVR/pptx-viewer/commit/63e1dc35dbddc50fe2cf9337e55b4bdff0df1be7))
37
+ - **core:** Keep paragraph markup on a rewritten slide (by @ChristopherVR) ([ff79c00](https://github.com/ChristopherVR/pptx-viewer/commit/ff79c002df8e79eb4f9967c0261b7259fee44223))
38
+ - **core:** Recompute Words and Paragraphs in docProps/app.xml on save (by @ChristopherVR) ([85ef0d6](https://github.com/ChristopherVR/pptx-viewer/commit/85ef0d6c9879670b8fb85b3c072c8105397d3d55))
39
+ - **core:** Write .ppt group members the way PowerPoint reads them (by @ChristopherVR) ([8cf3852](https://github.com/ChristopherVR/pptx-viewer/commit/8cf3852a1cde14e089dbdbca8fcba50005c982c2))
40
+ - **core:** Write DIFAT sectors for compound files past 109 FAT sectors (by @ChristopherVR) ([9e26fe8](https://github.com/ChristopherVR/pptx-viewer/commit/9e26fe8775a14d7e3ae2b69fbc982167a76cadf3))
41
+ - **core:** Write a new p:style between spPr and txBody (by @ChristopherVR) ([c7a45b9](https://github.com/ChristopherVR/pptx-viewer/commit/c7a45b9c077c94355d62a2e1e6196d1c33598458))
42
+ - **shared:** Write Shape Styles presets with PowerPoint's zero references (by @ChristopherVR) ([fdea69d](https://github.com/ChristopherVR/pptx-viewer/commit/fdea69d93436881bf7038e1b32792d7fe8b87e89))
43
+ - **shared:** Name every Shape Effects, WordArt and list gallery tile (by @ChristopherVR) ([0e16dae](https://github.com/ChristopherVR/pptx-viewer/commit/0e16dae2cf34c1c611746b8ad1b4eaa2cd806d85))
44
+ - **angular:** Escape clears the selection once no chrome is left to close (by @ChristopherVR) ([76edabb](https://github.com/ChristopherVR/pptx-viewer/commit/76edabb0e4e55a292df63e93502d5c1900a48fa8))
45
+ - **shared:** Stop 3D SmartArt and charts rotating while dragged (by @claude) ([1f4e09e](https://github.com/ChristopherVR/pptx-viewer/commit/1f4e09e3c797acf365cb4d34aaa9b5a9e72ed157))
46
+ - **core:** Parse every behaviour of an effect with its own timing (by @ChristopherVR) ([12ea267](https://github.com/ChristopherVR/pptx-viewer/commit/12ea26750633b1315e8b05cc78386fcc5c289151))
47
+ - **core:** Rebuild an edited effect's behaviour tree on save (by @ChristopherVR) ([d6e22c7](https://github.com/ChristopherVR/pptx-viewer/commit/d6e22c70e67126d38f7880de658b3258db3c66ad))
48
+ - **shared:** Reveal wipes, splits and mask reveals the way PowerPoint does (by @ChristopherVR) ([87ff378](https://github.com/ChristopherVR/pptx-viewer/commit/87ff378d591a3caf0d78a0b6f18d6312319fe559))
49
+
50
+ ### Documentation
51
+
52
+ - Drop orbit wording from 3D view and chart flag docs (by @claude) ([a1fa63d](https://github.com/ChristopherVR/pptx-viewer/commit/a1fa63d34f0c61a16f10c1e2c3c53f178dcec947))
53
+
54
+ ### Testing
55
+
56
+ - **e2e:** Pin East Asian breaks to PowerPoint's own lines (by @ChristopherVR) ([a358b4f](https://github.com/ChristopherVR/pptx-viewer/commit/a358b4fdd5beeccdf81be9eb50166138430e292d))
57
+ - **e2e:** Pin pie bestFit labels and label boxes to PowerPoint (by @ChristopherVR) ([3480d42](https://github.com/ChristopherVR/pptx-viewer/commit/3480d429183f8b44ae8427a17f6823fb596aceb7))
58
+ - **e2e:** Pick a Picture Styles tile from Picture Format in every binding (by @ChristopherVR) ([27c37ad](https://github.com/ChristopherVR/pptx-viewer/commit/27c37adffae73f7901af3230cc0aa127c8012277))
59
+ - **e2e:** Pin behaviour-tree playback and PowerPoint's wipe edge (by @ChristopherVR) ([4cbb061](https://github.com/ChristopherVR/pptx-viewer/commit/4cbb061eaca3042229cd601b4cacffa8d97f076e))
60
+
61
+ ### Styling
62
+
63
+ - **shared:** Clear the lint warnings in the ribbon gallery modules (by @ChristopherVR) ([f178627](https://github.com/ChristopherVR/pptx-viewer/commit/f1786274cfe55be4189724b10e3e2b3c8c1e75f2))
64
+
65
+ ### Chores
66
+
67
+ - **npm:** Surface every package in an npm search for pptx-viewer (by @ChristopherVR) ([ac67fda](https://github.com/ChristopherVR/pptx-viewer/commit/ac67fdafcfaf664412f59eee9a0627182340782f))
68
+
69
+ ## [4.8.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-angular-viewer@4.8.0) - 2026-09-25
70
+
71
+ ### Features
72
+
73
+ - **core:** Resolve p:style references on demand for style galleries (by @ChristopherVR) ([e4303f7](https://github.com/ChristopherVR/pptx-viewer/commit/e4303f74a42c745929e9c4296f34686124c10bf9))
74
+ - **core:** Size smartart engine nodes from their own text (by @ChristopherVR) ([34c33cb](https://github.com/ChristopherVR/pptx-viewer/commit/34c33cbb48f225cda606a397f19b31ac841b82e2))
75
+ - **core:** Lay org-chart assistants out in the smartart engine (by @ChristopherVR) ([722a465](https://github.com/ChristopherVR/pptx-viewer/commit/722a465d5225e6d96bdae5cc3a4570c843e89c7b))
76
+ - **core:** Fit meet the team and process list grids in the smartart engine (by @ChristopherVR) ([6ee431c](https://github.com/ChristopherVR/pptx-viewer/commit/6ee431c4f1b3af4469c8824c02a7a5ec1be0abed))
77
+ - **core:** Keep c:grouping standard distinct from clustered (by @claude) ([c3472e2](https://github.com/ChristopherVR/pptx-viewer/commit/c3472e2cbf2bec39d8f8bbbcae2ec59084acc41f))
78
+ - **shared:** Lay out right-angle-axes 3D bar charts as PowerPoint does (by @claude) ([0985f9d](https://github.com/ChristopherVR/pptx-viewer/commit/0985f9d36253eabcc681115cfbb07c6253fcb868))
79
+ - **shared:** Draw cylinder, cone and pyramid 3D bars as PowerPoint does (by @claude) ([668aa8d](https://github.com/ChristopherVR/pptx-viewer/commit/668aa8d3446d3a6b5f72f421bf01e00affdaf00e))
80
+ - **shared:** Draw perspective 3D line and area charts as PowerPoint does (by @claude) ([0ab4a7d](https://github.com/ChristopherVR/pptx-viewer/commit/0ab4a7da69f3993a74a24b0c804685681fd707f2))
81
+ - **shared:** Draw 3D surface charts in value bands as PowerPoint does (by @claude) ([cc87ef4](https://github.com/ChristopherVR/pptx-viewer/commit/cc87ef4cba6574f6aee68dc5178b25c46082d1cf))
82
+ - **shared:** Draw 3D pie charts as PowerPoint does (by @claude) ([553a935](https://github.com/ChristopherVR/pptx-viewer/commit/553a935c2257b7ef0280dbd82abcbf22a1d790a5))
83
+ - **core:** Write SmartArt drawing-shape 3D properties back on save (by @claude) ([45ec2db](https://github.com/ChristopherVR/pptx-viewer/commit/45ec2db46147c9a022e2bdc9ba1e1e5c64f4d94f))
84
+ - **shared:** Render SmartArt bevel and scene quick styles in 3D (by @claude) ([3bdf7e9](https://github.com/ChristopherVR/pptx-viewer/commit/3bdf7e959fed36302350bcbfd2c664d07b0cad86))
85
+ - **shared:** Draw 3D columns without right-angle axes on the perspective box (by @claude) ([e65a8c9](https://github.com/ChristopherVR/pptx-viewer/commit/e65a8c9dba2bcb21ccd81fb471a7b2c019b40d51))
86
+ - **core:** Keep smartart quick-style 3d across structural edits (by @claude) ([a815448](https://github.com/ChristopherVR/pptx-viewer/commit/a815448a7ce291f1989fd3306df523670a2d3d1a))
87
+ - **shared:** Render structurally edited smartart with its quick-style 3d (by @claude) ([2c31bed](https://github.com/ChristopherVR/pptx-viewer/commit/2c31bede6f30886fe1f5f78cb55ad59492485838))
88
+ - **core:** Read SmartArt label colour from fontRef and keep fill alpha (by @claude) ([866c7ee](https://github.com/ChristopherVR/pptx-viewer/commit/866c7ee9227ecbc58f0ab8b691513dc072824c1f))
89
+ - **shared:** Light, extrude and fade SmartArt 3D scenes as PowerPoint does (by @claude) ([b6864d8](https://github.com/ChristopherVR/pptx-viewer/commit/b6864d8d9ca181e953d6cdd389629052f6712d5b))
90
+ - **shared:** Draw a turned SmartArt diagram past its element box (by @claude) ([f46c9b7](https://github.com/ChristopherVR/pptx-viewer/commit/f46c9b7af800e213ee0d7f29cca61d9b2a29c0c4))
91
+ - **core:** Rasterise fallback-less svg pictures for .ppt export in node (by @ChristopherVR) ([b2f86e8](https://github.com/ChristopherVR/pptx-viewer/commit/b2f86e8a675c899778275c163d1fd974df31f3ea))
92
+
93
+ ### Bug Fixes
94
+
95
+ - **shared:** Hang CJK punctuation and drop kinsoku like PowerPoint (by @ChristopherVR) ([770b708](https://github.com/ChristopherVR/pptx-viewer/commit/770b7081432d08acfa00a17de9bc83da22efc18b))
96
+ - **shared:** Draw data-label callouts on line, area, pie, xy and radar (by @ChristopherVR) ([a60aa17](https://github.com/ChristopherVR/pptx-viewer/commit/a60aa17d713848297264ffdd27e89ba9192321ed))
97
+ - **core:** Author the strips exit at presetID 18 (by @ChristopherVR) ([eb1daca](https://github.com/ChristopherVR/pptx-viewer/commit/eb1daca918d26168e07e52e8eb6e421d1af58bfe))
98
+ - **shared:** Play strips as a diagonal corner-to-corner sweep (by @ChristopherVR) ([1e15f73](https://github.com/ChristopherVR/pptx-viewer/commit/1e15f73c5624b0578ea4f1125ea573dfbc1bab73))
99
+ - **shared:** Play wedge as two sweeping wedges and circle exit as an iris (by @ChristopherVR) ([c7fe573](https://github.com/ChristopherVR/pptx-viewer/commit/c7fe5738e03c7b02efaead29621c743e071ecb1e))
100
+ - **shared:** Play the slide filter through a window, cover/push as a cut (by @ChristopherVR) ([a252b87](https://github.com/ChristopherVR/pptx-viewer/commit/a252b8753c2743eb9f91ca1f5b2f4ace86b5cac3))
101
+ - **shared:** Restore arc-length glyph placement for wordart envelopes (by @ChristopherVR) ([4264ab0](https://github.com/ChristopherVR/pptx-viewer/commit/4264ab0917b91f7bd6a7cf278d334135bec27883))
102
+ - **core:** Embed every picture format in the .ppt export (by @ChristopherVR) ([956f1dc](https://github.com/ChristopherVR/pptx-viewer/commit/956f1dc065eabb6977ee6581261662bd38b88162))
103
+ - **core:** Write placeholder text and master text styles in .ppt export (by @ChristopherVR) ([81681c8](https://github.com/ChristopherVR/pptx-viewer/commit/81681c8e52fec68f2d039bd3473023eb76d4a5cd))
104
+ - **core:** Keep an authored pPr lvl="0" on a rewritten slide (by @ChristopherVR) ([97a8cff](https://github.com/ChristopherVR/pptx-viewer/commit/97a8cff45834f963644067aac5bd4a5d2ae0a440))
105
+ - **core:** Stop the first run's b and err leaking onto later runs (by @ChristopherVR) ([4738cd4](https://github.com/ChristopherVR/pptx-viewer/commit/4738cd43c77aadee833d7ab41e071ab7506c3157))
106
+ - **core:** Do not invent an outline width on a rewritten slide (by @ChristopherVR) ([089362a](https://github.com/ChristopherVR/pptx-viewer/commit/089362ac0746031ea28d0bd1ac92bcce093eb4bd))
107
+ - **core:** Refresh app.xml notes and untitled titles like PowerPoint (by @ChristopherVR) ([52a8a53](https://github.com/ChristopherVR/pptx-viewer/commit/52a8a5395de8497553f8aceb9aa980b0bf25d838))
108
+ - **core:** Write each ruby run property set back as authored (by @ChristopherVR) ([94e7b76](https://github.com/ChristopherVR/pptx-viewer/commit/94e7b7656c32642a47748f6ad95c00955cb3fddb))
109
+ - **shared:** Composite pptx-three-view frames as premultiplied alpha (by @claude) ([074fd9e](https://github.com/ChristopherVR/pptx-viewer/commit/074fd9edf2df8d32e9b54327e53fb27b489c4267))
110
+ - **shared:** Size the chart title band from the title font (by @claude) ([c5f0254](https://github.com/ChristopherVR/pptx-viewer/commit/c5f0254036f578f80ab25ed68e250f0d34984523))
111
+ - **shared:** One html2canvas clone pass that snapshots 3D views (by @claude) ([56a8a81](https://github.com/ChristopherVR/pptx-viewer/commit/56a8a81a53ffb2bd9cd8863d6c2cb8d703104804))
112
+ - **react,vue,angular,svelte,vanilla:** Use the shared html2canvas clone pass (by @claude) ([ca9f608](https://github.com/ChristopherVR/pptx-viewer/commit/ca9f6089ed304dcc71abe216b984c41237cefbfb))
113
+ - **shared:** Read SmartArt label contrast from a gradient fill (by @claude) ([d43c866](https://github.com/ChristopherVR/pptx-viewer/commit/d43c866ec2eeb655d02dc586c546c02c93877558))
114
+ - **shared:** Fit the perspective 3D chart box to PowerPoint's height and centring (by @claude) ([157008a](https://github.com/ChristopherVR/pptx-viewer/commit/157008a988c95edba606c6bab5c11308967d0785))
115
+ - **shared:** Size standard-grouping 3D columns as PowerPoint does (by @claude) ([907223f](https://github.com/ChristopherVR/pptx-viewer/commit/907223f735c83b65afd42d5147848f8a28839e1c))
116
+ - **shared:** Shade exploded 3D pie cut faces as PowerPoint does (by @claude) ([5ad3905](https://github.com/ChristopherVR/pptx-viewer/commit/5ad3905503872041e5afc7da528cad0cae354a96))
117
+ - **core:** Follow ecma-376 for the trapezoid preset inset (by @claude) ([eca6c9f](https://github.com/ChristopherVR/pptx-viewer/commit/eca6c9f739a9d6a46d410801ba9bcb0a685f58da))
118
+ - **core:** Keep smartart drawing fill alpha and preset adjustments (by @claude) ([d8d2f37](https://github.com/ChristopherVR/pptx-viewer/commit/d8d2f37b85937e125021afc17b9245148edf9186))
119
+ - **shared:** Paint smartart drawing fill alpha in 2d and 3d (by @claude) ([070cda5](https://github.com/ChristopherVR/pptx-viewer/commit/070cda5a4927c68ea9352c6e7d40e6526d5080fe))
120
+ - **angular:** Bind smartart drawing fill-opacity (by @claude) ([404539c](https://github.com/ChristopherVR/pptx-viewer/commit/404539c23543b0775fa97640b72a2c78e8575aa0))
121
+ - **core:** Drop the old preset's guides when a shape's geometry changes (by @ChristopherVR) ([118d8a0](https://github.com/ChristopherVR/pptx-viewer/commit/118d8a0651c18b4e5585286628946818f9c241c5))
122
+ - **core:** Relabel entrance/exit presets from PowerPoint COM ids (by @ChristopherVR) ([ade27dc](https://github.com/ChristopherVR/pptx-viewer/commit/ade27dce6d771ea7dee6068ae7da0a7aa067b6cf))
123
+ - **core:** Write PowerPoint's captured behaviour tree for every preset (by @ChristopherVR) ([b9fa2d6](https://github.com/ChristopherVR/pptx-viewer/commit/b9fa2d68f90c646ccd9abdc1584a78b5e3c2c39b))
124
+ - **shared:** Play steps without accel/decel linearly like PowerPoint (by @ChristopherVR) ([5c1158b](https://github.com/ChristopherVR/pptx-viewer/commit/5c1158b2240c96a234a312ea56aa07404b330fcc))
125
+ - **animation:** Ripple letters inside a by-paragraph text build (by @ChristopherVR) ([1676539](https://github.com/ChristopherVR/pptx-viewer/commit/16765398bd7e0d6966ee59c9cb97d0936bafcc80))
126
+ - **core:** Open PowerPoint's own password-protected .ppt files (by @ChristopherVR) ([ca38faa](https://github.com/ChristopherVR/pptx-viewer/commit/ca38faae35c761b0a3ae98ca79084251641026dc))
127
+ - **core:** Keep the node canvas import opaque to browser bundlers (by @ChristopherVR) ([22f61ea](https://github.com/ChristopherVR/pptx-viewer/commit/22f61ea3f6811d3c82530593eccad0afd957c0f1))
128
+
129
+ ### Documentation
130
+
131
+ - **core:** Record the eleventh smartart engine wave's measured numbers (by @ChristopherVR) ([8395cb8](https://github.com/ChristopherVR/pptx-viewer/commit/8395cb847ff5984c47908b270193622373e30fe0))
132
+
133
+ ### Testing
134
+
135
+ - **core:** Declare the new callout, CJK and org-chart assistant fixtures (by @ChristopherVR) ([1ff7f05](https://github.com/ChristopherVR/pptx-viewer/commit/1ff7f05d254f151a42005a0e4591897e7c508889))
136
+ - **core:** Lock the ECMA-376 trapezoid inset against the short side (by @claude) ([26462a0](https://github.com/ChristopherVR/pptx-viewer/commit/26462a034bb4752497244ff42e787af60f24406d))
137
+ - **angular:** Expect the window slide keyframe for the slide filter (by @ChristopherVR) ([ea9f030](https://github.com/ChristopherVR/pptx-viewer/commit/ea9f030e0c66a1253e77532a67a069036390549a))
138
+ - **core:** Declare the by-paragraph letter ripple fixture (by @ChristopherVR) ([532a448](https://github.com/ChristopherVR/pptx-viewer/commit/532a448c1b952051c5926e0ad25ef2d534a45818))
139
+ - **core:** Pin the browser canvas ahead of the node svg rasteriser (by @ChristopherVR) ([8ae3fed](https://github.com/ChristopherVR/pptx-viewer/commit/8ae3fedd58b236b77dc56533010683b9cd91a7a2))
140
+
10
141
  ## [4.7.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-angular-viewer@4.7.0) - 2026-09-25
11
142
 
12
143
  ### Features
@@ -1,4 +1,4 @@
1
- import { s as shade, c as createSvgEl, a as appendChartLegendSvg, r as renderChartLineSvg, b as renderChartTextSvg, C as CHART_3D_DRAG_THRESHOLD_PX, d as buildBarChart3DHoverTooltip, i as isChartInteractionArmed, e as roundDragValue, o as obliqueBarTaper, p as perspBoxMatrix, D as DEFAULT_PALETTE, f as buildPerspCamera, g as perspToScreen, h as pieRimPoint, j as computePieChartLayout, k as perspScreenToPlaneY, l as resolvePieSliceShareValue, m as createSurfaceChart3DScene, n as createPieChart3DScene, q as createAreaChart3DScene, u as createLineChart3DScene, v as createBarChart3DScene, w as widenPieViewModel } from './pptx-angular-viewer-pptx-angular-viewer-Cf08ueRA.mjs';
1
+ import { s as shade, c as createSvgEl, a as appendChartLegendSvg, r as renderChartLineSvg, b as renderChartTextSvg, C as CHART_3D_DRAG_THRESHOLD_PX, d as buildBarChart3DHoverTooltip, i as isChartInteractionArmed, e as roundDragValue, o as obliqueBarTaper, p as perspBoxMatrix, D as DEFAULT_PALETTE, f as buildPerspCamera, g as perspToScreen, h as pieRimPoint, j as computePieChartLayout, k as perspScreenToPlaneY, l as resolvePieSliceShareValue, m as createSurfaceChart3DScene, n as createPieChart3DScene, q as createAreaChart3DScene, u as createLineChart3DScene, v as createBarChart3DScene, w as widenPieViewModel } from './pptx-angular-viewer-pptx-angular-viewer-BWuuwItt.mjs';
2
2
 
3
3
  /**
4
4
  * chart-3d-shading.ts: PowerPoint's flat chart-space shading for a 3D chart's
@@ -647,7 +647,9 @@ function valueY(layout, v) {
647
647
  function buildPerspBarPrisms(chartData, layout, override) {
648
648
  const nCat = layout.categoryX.length;
649
649
  const nSer = chartData.series.length;
650
- const slot = nCat > 0 ? 1 / nCat : 1;
650
+ // Slots divide the category axis: box x for columns, box y for horizontal bars.
651
+ const catExtent = layout.horizontal ? layout.view.box.h : layout.view.box.w;
652
+ const slot = nCat > 0 ? catExtent / nCat : catExtent;
651
653
  const gapWidth = (chartData.barGapWidth ?? DEFAULT_GAP_WIDTH) / 100;
652
654
  const slots = layout.grouping === 'clustered' ? nSer : 1;
653
655
  const barW = slot / (slots + gapWidth);
@@ -683,9 +685,13 @@ function buildPerspBarPrisms(chartData, layout, override) {
683
685
  }
684
686
  const slotIndex = layout.grouping === 'clustered' ? s : 0;
685
687
  const row = layout.grouping === 'standard' ? s : 0;
686
- const x0 = c * slot + (gapWidth * barW) / 2 + slotIndex * barW;
687
- const y0 = valueY(layout, Math.min(from, to));
688
- const y1 = Math.max(valueY(layout, Math.max(from, to)), y0 + 1e-6);
688
+ const c0 = c * slot + (gapWidth * barW) / 2 + slotIndex * barW;
689
+ const v0 = valueY(layout, Math.min(from, to));
690
+ const v1 = Math.max(valueY(layout, Math.max(from, to)), v0 + 1e-6);
691
+ // Column: category along x, value up y. Horizontal: value along x, category up y.
692
+ const [x0, x1, y0, y1] = layout.horizontal
693
+ ? [v0, v1, c0, c0 + barW]
694
+ : [c0, c0 + barW, v0, v1];
689
695
  const z0 = row * layout.rowDepth + (layout.rowDepth - depth) / 2;
690
696
  prisms.push({
691
697
  seriesIndex: s,
@@ -693,8 +699,8 @@ function buildPerspBarPrisms(chartData, layout, override) {
693
699
  color: layout.colors[s],
694
700
  outline: [
695
701
  [x0, y0],
696
- [x0 + barW, y0],
697
- [x0 + barW, y1],
702
+ [x1, y0],
703
+ [x1, y1],
698
704
  [x0, y1],
699
705
  ],
700
706
  z0,
@@ -707,7 +713,7 @@ function buildPerspBarPrisms(chartData, layout, override) {
707
713
 
708
714
  /** Ribbon thickness, as a fraction of the box height. */
709
715
  const RIBBON_THICKNESS = 0.012;
710
- /** Box y of a value, clipped to the axis. */
716
+ /** Position of a value along the value axis (box y, or box x for horizontal bars), clipped to the axis. */
711
717
  function perspValueY(layout, v) {
712
718
  const clamped = Math.min(Math.max(v, layout.range.min), layout.range.max);
713
719
  return (clamped - layout.range.min) * layout.valueScale;
@@ -1184,12 +1190,11 @@ function buildBarMarkSet(three, chartData, layout) {
1184
1190
  if (!prism) {
1185
1191
  return [0, perspValueY(layout, value), 0];
1186
1192
  }
1187
- const xs = prism.outline.map(([x]) => x);
1188
- return [
1189
- (Math.min(...xs) + Math.max(...xs)) / 2,
1190
- perspValueY(layout, value),
1191
- (prism.z0 + prism.z1) / 2,
1192
- ];
1193
+ const along = prism.outline.map(([x, y]) => (layout.horizontal ? y : x));
1194
+ const mid = (Math.min(...along) + Math.max(...along)) / 2;
1195
+ const v = perspValueY(layout, value);
1196
+ const z = (prism.z0 + prism.z1) / 2;
1197
+ return layout.horizontal ? [v, mid, z] : [mid, v, z];
1193
1198
  },
1194
1199
  draggable: layout.grouping === 'clustered' || layout.grouping === 'standard',
1195
1200
  preview(point, value) {
@@ -1238,7 +1243,7 @@ function mountPerspChartView(input, ctx) {
1238
1243
  marks.group.add(marker);
1239
1244
  const overlay = renderChart3DChromeOverlaySvg(ctx.document, vm, {
1240
1245
  labels: layout.labels,
1241
- reverseLegend: false,
1246
+ reverseLegend: layout.horizontal && layout.grouping === 'clustered',
1242
1247
  legend: layout.kind === 'surface'
1243
1248
  ? surfaceLegend(chartData, layout, palette, vm.areaFill ?? '#ffffff', vm.legend[0]?.textStyle)
1244
1249
  : undefined,
@@ -1268,15 +1273,24 @@ function mountPerspChartView(input, ctx) {
1268
1273
  if (!marks.draggable || start === undefined) {
1269
1274
  return null;
1270
1275
  }
1276
+ // Screen px per value unit along the value axis at this point (up for
1277
+ // columns, right for horizontal bars); the pointer delta is projected
1278
+ // onto it, so either direction drags.
1271
1279
  const unit = layout.range.majorUnit || 1;
1272
- const [x, y, z] = marks.anchor(point, start);
1273
- const y0 = perspToScreen(layout.view, [x, y, z]).y;
1274
- const y1 = perspToScreen(layout.view, [x, y + unit * layout.valueScale, z]).y;
1275
- const pxPerValue = (y0 - y1) / unit || 1;
1280
+ const a = marks.anchor(point, start);
1281
+ const step = unit * layout.valueScale;
1282
+ const b = layout.horizontal
1283
+ ? [a[0] + step, a[1], a[2]]
1284
+ : [a[0], a[1] + step, a[2]];
1285
+ const s0 = perspToScreen(layout.view, a);
1286
+ const s1 = perspToScreen(layout.view, b);
1287
+ const ux = (s1.x - s0.x) / unit;
1288
+ const uy = (s1.y - s0.y) / unit;
1289
+ const len2 = ux * ux + uy * uy || 1;
1276
1290
  const span = layout.range.max - layout.range.min;
1277
1291
  return {
1278
- preview(_dx, dy) {
1279
- const value = roundDragValue(start - dy / pxPerValue, {
1292
+ preview(dx, dy) {
1293
+ const value = roundDragValue(start + (dx * ux + dy * uy) / len2, {
1280
1294
  min: layout.range.min,
1281
1295
  max: layout.range.max,
1282
1296
  span,
@@ -1700,4 +1714,4 @@ async function mountChart3DView(spec, ctx) {
1700
1714
  }
1701
1715
 
1702
1716
  export { buildObliqueCamera, mountChart3DView };
1703
- //# sourceMappingURL=pptx-angular-viewer-chart-3d-view-scene-CM71j9A9.mjs.map
1717
+ //# sourceMappingURL=pptx-angular-viewer-chart-3d-view-scene-CkW1D-mg.mjs.map