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/CHANGELOG.md +2 -0
- package/README.md +1 -1
- package/dist/index.cjs +385 -108
- package/dist/index.d.ts +29 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +385 -108
- package/dist/styles.css +111 -0
- package/package.json +3 -5
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.
|
|
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",
|