pptx-vanilla-viewer 0.13.0 → 0.14.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/dist/styles.css CHANGED
@@ -157,6 +157,12 @@
157
157
  flex-direction: column;
158
158
  gap: 8px;
159
159
  }
160
+ /* Virtualized rail: block layout for the absolute-positioned window. :where()
161
+ keeps specificity at one class so the mobile and presenting display:none
162
+ rules below still win (a naked two-class rule, or the inline style this
163
+ replaces, would override them). */
164
+ .pptxv-thumbs:where(.pptxv-thumbs-virtualized) { display: block; }
165
+ .pptxv-thumbs[hidden] { display: none; }
160
166
  .pptxv-thumb {
161
167
  display: flex;
162
168
  align-items: flex-start;
@@ -1722,6 +1728,111 @@
1722
1728
  }
1723
1729
 
1724
1730
 
1731
+ /* ── Docked Animation panel ──────────────────────────────────────────── */
1732
+ .pptxv-inspector-animation {
1733
+ display: grid;
1734
+ gap: 6px;
1735
+ flex: none;
1736
+ padding: 8px 10px;
1737
+ border-top: 1px solid var(--pptx-border);
1738
+ max-height: 40%;
1739
+ overflow-y: auto;
1740
+ font-size: 11px;
1741
+ }
1742
+ .pptxv-inspector-animation[hidden] { display: none; }
1743
+ .pptxv-anim-header { display: flex; align-items: center; justify-content: space-between; }
1744
+ .pptxv-anim-preview-btn {
1745
+ padding: 2px 6px;
1746
+ border: none;
1747
+ border-radius: var(--pptx-radius);
1748
+ background: transparent;
1749
+ color: var(--pptx-primary);
1750
+ font-size: 10px;
1751
+ cursor: pointer;
1752
+ }
1753
+ .pptxv-anim-preview-btn:hover { background: var(--pptx-accent); }
1754
+ .pptxv-anim-field { display: grid; gap: 2px; font-size: 11px; }
1755
+ .pptxv-anim-field > span { color: var(--pptx-muted-foreground); }
1756
+ .pptxv-anim-field :is(select, input) {
1757
+ min-width: 0;
1758
+ width: 100%;
1759
+ padding: 3px;
1760
+ border: 1px solid var(--pptx-border);
1761
+ border-radius: var(--pptx-radius);
1762
+ background: var(--pptx-muted);
1763
+ color: var(--pptx-foreground);
1764
+ }
1765
+ .pptxv-anim-options { display: grid; gap: 6px; }
1766
+ .pptxv-anim-options[hidden] { display: none; }
1767
+ .pptxv-anim-direction { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
1768
+ .pptxv-anim-direction > span { flex-basis: 100%; }
1769
+ .pptxv-anim-direction-btn {
1770
+ padding: 3px 6px;
1771
+ border: 1px solid var(--pptx-border);
1772
+ border-radius: var(--pptx-radius);
1773
+ background: var(--pptx-muted);
1774
+ color: var(--pptx-muted-foreground);
1775
+ font-size: 10px;
1776
+ cursor: pointer;
1777
+ }
1778
+ .pptxv-anim-direction-btn:hover:not(:disabled) { background: var(--pptx-accent); color: var(--pptx-accent-foreground); }
1779
+ .pptxv-anim-direction-btn.is-active {
1780
+ border-color: var(--pptx-primary);
1781
+ background: color-mix(in srgb, var(--pptx-primary) 20%, transparent);
1782
+ color: var(--pptx-primary);
1783
+ }
1784
+ .pptxv-anim-timeline { display: grid; gap: 4px; }
1785
+ .pptxv-anim-timeline[hidden] { display: none; }
1786
+ .pptxv-anim-bar {
1787
+ position: relative;
1788
+ height: 22px;
1789
+ overflow: hidden;
1790
+ border: 1px solid var(--pptx-border);
1791
+ border-radius: var(--pptx-radius);
1792
+ background: color-mix(in srgb, var(--pptx-muted) 50%, transparent);
1793
+ }
1794
+ .pptxv-anim-bar-seg { position: absolute; top: 2px; bottom: 2px; border-radius: 2px; }
1795
+ .pptxv-anim-bar-seg.is-entrance { background: rgb(34 197 94 / 0.6); }
1796
+ .pptxv-anim-bar-seg.is-emphasis { background: rgb(234 179 8 / 0.6); }
1797
+ .pptxv-anim-bar-seg.is-exit { background: rgb(239 68 68 / 0.6); }
1798
+ .pptxv-anim-bar-seg.is-none { background: color-mix(in srgb, var(--pptx-muted-foreground) 40%, transparent); }
1799
+ .pptxv-anim-bar-seg.is-selected { outline: 1px solid var(--pptx-ring); }
1800
+
1801
+ /* ── Comments tab: threads, replies, edit-in-place ───────────────────── */
1802
+ .pptxv-inspector-comment-badge {
1803
+ margin-left: 6px;
1804
+ padding: 1px 6px;
1805
+ border-radius: 999px;
1806
+ background: rgb(34 197 94 / 0.25);
1807
+ color: rgb(34 197 94);
1808
+ font-size: 9px;
1809
+ font-weight: 500;
1810
+ }
1811
+ .pptxv-inspector-comment.is-reply {
1812
+ border-bottom: none;
1813
+ padding: 4px 0 4px 8px;
1814
+ border-left: 2px solid color-mix(in srgb, var(--pptx-primary) 40%, transparent);
1815
+ }
1816
+ .pptxv-inspector-comment-replies { margin-top: 4px; display: grid; gap: 2px; }
1817
+ .pptxv-inspector-comment-replies-toggle {
1818
+ margin-top: 4px;
1819
+ padding: 0;
1820
+ border: none;
1821
+ background: transparent;
1822
+ color: var(--pptx-muted-foreground);
1823
+ font-size: 10px;
1824
+ text-align: left;
1825
+ cursor: pointer;
1826
+ }
1827
+ .pptxv-inspector-comment-replies-toggle:hover { color: var(--pptx-foreground); }
1828
+ .pptxv-inspector-comment-edit,
1829
+ .pptxv-inspector-comment-reply-form { display: grid; gap: 4px; margin-top: 4px; }
1830
+ .pptxv-inspector-comment-reply-form {
1831
+ padding-left: 8px;
1832
+ border-left: 2px solid color-mix(in srgb, var(--pptx-primary) 40%, transparent);
1833
+ }
1834
+
1835
+
1725
1836
  .pptxv-account { display: flex; flex-direction: column; gap: 28px; max-width: 640px; margin-top: 24px; }
1726
1837
  .pptxv-account-section { padding: 20px; border: 1px solid var(--pptx-border); border-radius: 8px; background: var(--pptx-card); color: var(--pptx-card-foreground); }
1727
1838
  .pptxv-account-section h2 { margin: 0 0 14px; font-size: 14px; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-vanilla-viewer",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "Zero-framework PowerPoint viewer: render PPTX slides in the browser with plain DOM, no React/Vue/Angular required.",
5
5
  "keywords": [
6
6
  "javascript",
@@ -56,8 +56,10 @@
56
56
  },
57
57
  "dependencies": {
58
58
  "dompurify": "^3.4.12",
59
+ "fast-xml-parser": "^5.10.1",
59
60
  "html2canvas-pro": "^2.2.4",
60
61
  "jspdf": "^4.2.1",
62
+ "jszip": "^3.10.1",
61
63
  "lucide": "^1.25.0"
62
64
  },
63
65
  "devDependencies": {
@@ -71,10 +73,6 @@
71
73
  "y-websocket": "^3.0.0",
72
74
  "yjs": "^13.6.31"
73
75
  },
74
- "peerDependencies": {
75
- "fast-xml-parser": "^5.10.1",
76
- "jszip": "^3.10.1"
77
- },
78
76
  "optionalDependencies": {
79
77
  "y-webrtc": "^10.3.0",
80
78
  "y-websocket": "^3.0.0",