pptx-vanilla-viewer 3.49.0 → 3.50.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 +110 -0
- package/README.md +3 -3
- package/dist/i18n/de.cjs +1138 -221
- package/dist/i18n/de.mjs +1138 -221
- package/dist/i18n/es.cjs +1138 -221
- package/dist/i18n/es.mjs +1138 -221
- package/dist/i18n/fr.cjs +1138 -221
- package/dist/i18n/fr.mjs +1138 -221
- package/dist/i18n/zh-CN.cjs +1138 -221
- package/dist/i18n/zh-CN.mjs +1138 -221
- package/dist/index.cjs +74 -306
- package/dist/index.d.ts +36 -47
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -302
- package/dist/styles.css +7 -239
- package/package.json +3 -3
package/dist/styles.css
CHANGED
|
@@ -1206,6 +1206,8 @@
|
|
|
1206
1206
|
margin-bottom: 8px;
|
|
1207
1207
|
}
|
|
1208
1208
|
.pptxv-inspector-row-label { color: var(--_pptx-muted-foreground); }
|
|
1209
|
+
.pptxv-inspector-fields-section { display: flex; flex-direction: column; gap: 4px; padding: 4px 0; border-bottom: 1px solid var(--_pptx-border); }
|
|
1210
|
+
.pptxv-inspector-fields-section:last-child { border-bottom: none; }
|
|
1209
1211
|
/* Fill & Stroke: one group per target (picker, theme grid, recent colours). */
|
|
1210
1212
|
.pptxv-inspector-color-group { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
|
|
1211
1213
|
.pptxv-inspector-color-group > .pptxv-inspector-row { margin-bottom: 0; }
|
|
@@ -1247,17 +1249,6 @@
|
|
|
1247
1249
|
}
|
|
1248
1250
|
.pptxv-smartart-layout-button:hover { background: var(--_pptx-accent); color: var(--_pptx-accent-foreground); }
|
|
1249
1251
|
.pptxv-smartart-layout-button.is-active { border-color: var(--_pptx-primary); background: color-mix(in srgb, var(--_pptx-primary) 16%, transparent); color: var(--_pptx-primary); }
|
|
1250
|
-
.pptxv-smartart-nodes { display: flex; max-height: 208px; flex-direction: column; gap: 5px; overflow-y: auto; }
|
|
1251
|
-
/* One row per node: index, text, fill, font colour, bold, italic; the
|
|
1252
|
-
hierarchy actions (inspector-extras-css.ts) wrap onto a second row under
|
|
1253
|
-
the text. With two columns the six controls used to scatter over four. */
|
|
1254
|
-
.pptxv-smartart-node { display: grid; grid-template-columns: 20px minmax(0, 1fr) repeat(4, auto); align-items: center; gap: 5px; }
|
|
1255
|
-
.pptxv-smartart-node > input[type='color'] { width: 22px; height: 22px; }
|
|
1256
|
-
.pptxv-smartart-node > button { min-width: 22px; height: 22px; padding: 0 4px; border: 1px solid var(--_pptx-border); border-radius: var(--_pptx-radius); background: transparent; color: var(--_pptx-foreground); font: inherit; font-weight: 600; cursor: pointer; }
|
|
1257
|
-
.pptxv-smartart-node-index { color: var(--_pptx-muted-foreground); text-align: center; }
|
|
1258
|
-
.pptxv-smartart-node-input { min-width: 0; height: 26px; box-sizing: border-box; padding: 2px 6px; border: 1px solid var(--_pptx-border); border-radius: var(--_pptx-radius); background: var(--_pptx-background); color: var(--_pptx-foreground); font: inherit; }
|
|
1259
|
-
.pptxv-smartart-node-input:focus-visible { outline: 2px solid var(--_pptx-ring); outline-offset: -1px; }
|
|
1260
|
-
|
|
1261
1252
|
/* Select / checkbox / range fields (text/image/table inspector sections). */
|
|
1262
1253
|
.pptxv-field-select,
|
|
1263
1254
|
.pptxv-field-checkbox,
|
|
@@ -1725,26 +1716,9 @@
|
|
|
1725
1716
|
.pptxv-dropdown-item:hover { background: var(--_pptx-accent); color: var(--_pptx-accent-foreground); }
|
|
1726
1717
|
.pptxv-dropdown-item.is-selected { font-weight: 600; color: var(--_pptx-primary); }
|
|
1727
1718
|
|
|
1728
|
-
/* B6: "Recent colours" row (ui/recent-colors-row.ts) under the
|
|
1729
|
-
inspector's colour inputs. */
|
|
1730
|
-
.pptxv-recent-colors
|
|
1731
|
-
.pptxv-recent-colors-label {
|
|
1732
|
-
margin-bottom: 4px;
|
|
1733
|
-
color: var(--_pptx-muted-foreground);
|
|
1734
|
-
font-size: 10px;
|
|
1735
|
-
text-transform: uppercase;
|
|
1736
|
-
letter-spacing: 0.04em;
|
|
1737
|
-
}
|
|
1738
|
-
.pptxv-swatch-grid { display: grid; grid-template-columns: repeat(5, 20px); gap: 4px; margin-bottom: 6px; }
|
|
1739
|
-
.pptxv-swatch {
|
|
1740
|
-
width: 20px;
|
|
1741
|
-
height: 20px;
|
|
1742
|
-
padding: 0;
|
|
1743
|
-
border: 1px solid var(--_pptx-border);
|
|
1744
|
-
border-radius: 50%;
|
|
1745
|
-
cursor: pointer;
|
|
1746
|
-
}
|
|
1747
|
-
.pptxv-swatch:hover { transform: scale(1.15); }
|
|
1719
|
+
/* B6: "Recent colours" row (ui/recent-colors-row.ts, the shared colour grid) under the
|
|
1720
|
+
property inspector's colour inputs. */
|
|
1721
|
+
.pptxv-recent-colors { margin-top: 4px; }
|
|
1748
1722
|
|
|
1749
1723
|
/* ── Find & Replace docked panel ─────────────────────────────────────── */
|
|
1750
1724
|
.pptxv-findreplace {
|
|
@@ -1946,134 +1920,6 @@
|
|
|
1946
1920
|
.pptxv-version-history{position:absolute;z-index:210;inset:0 0 0 auto;display:flex;width:min(320px,100%);flex-direction:column;border-left:1px solid var(--_pptx-border);background:var(--_pptx-background);color:var(--_pptx-foreground);box-shadow:-18px 0 48px #0005}.pptxv-version-history>header{display:flex;min-height:48px;align-items:center;gap:9px;padding:0 12px;border-bottom:1px solid var(--_pptx-border)}.pptxv-version-history h2{flex:1;margin:0;font-size:14px}.pptxv-version-history button{border:0;border-radius:6px;padding:6px 9px;background:transparent;color:inherit}.pptxv-version-history button:hover{background:var(--_pptx-accent)}.pptxv-version-content{flex:1;overflow:auto;color:var(--_pptx-muted-foreground);font-size:12px}.pptxv-version-empty{padding:32px 14px;text-align:center}.pptxv-version-content article{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:14px;border-bottom:1px solid var(--_pptx-border)}.pptxv-version-content article strong{color:var(--_pptx-foreground);font-weight:500}.pptxv-version-content article p{grid-column:1/-1;margin:0;font-size:10px}.pptxv-version-content article footer{grid-column:1/-1;display:flex;gap:6px;margin-top:8px}.pptxv-version-content .is-primary{background:color-mix(in srgb,var(--_pptx-primary) 20%,transparent);color:var(--_pptx-primary)}.pptxv-version-content .is-danger{color:#f87171}@media(max-width:600px){.pptxv-info-dialog{position:fixed;inset:auto 0 0;width:100%;max-height:88dvh;border-radius:16px 16px 0 0}.pptxv-version-history{position:fixed;top:auto;height:min(72dvh,560px);border-top:1px solid var(--_pptx-border);border-left:0}}
|
|
1947
1921
|
|
|
1948
1922
|
|
|
1949
|
-
.pptxv-smartart-dialog-layer {
|
|
1950
|
-
position: fixed;
|
|
1951
|
-
inset: 0;
|
|
1952
|
-
z-index: 1200;
|
|
1953
|
-
display: flex;
|
|
1954
|
-
align-items: center;
|
|
1955
|
-
justify-content: center;
|
|
1956
|
-
}
|
|
1957
|
-
.pptxv-smartart-dialog-layer[hidden] { display: none; }
|
|
1958
|
-
.pptxv-smartart-dialog-backdrop {
|
|
1959
|
-
position: absolute;
|
|
1960
|
-
inset: 0;
|
|
1961
|
-
width: 100%;
|
|
1962
|
-
height: 100%;
|
|
1963
|
-
padding: 0;
|
|
1964
|
-
border: 0;
|
|
1965
|
-
background: rgb(0 0 0 / 0.5);
|
|
1966
|
-
cursor: default;
|
|
1967
|
-
}
|
|
1968
|
-
.pptxv-smartart-dialog {
|
|
1969
|
-
position: relative;
|
|
1970
|
-
z-index: 1;
|
|
1971
|
-
display: flex;
|
|
1972
|
-
flex-direction: column;
|
|
1973
|
-
width: min(600px, 90vw);
|
|
1974
|
-
max-height: 80vh;
|
|
1975
|
-
overflow: hidden;
|
|
1976
|
-
border: 1px solid var(--_pptx-border);
|
|
1977
|
-
border-radius: 8px;
|
|
1978
|
-
background: var(--_pptx-background);
|
|
1979
|
-
color: var(--_pptx-foreground);
|
|
1980
|
-
box-shadow: 0 20px 50px rgb(0 0 0 / 0.35);
|
|
1981
|
-
}
|
|
1982
|
-
.pptxv-smartart-dialog:focus { outline: none; }
|
|
1983
|
-
.pptxv-smartart-dialog-header,
|
|
1984
|
-
.pptxv-smartart-dialog-footer {
|
|
1985
|
-
display: flex;
|
|
1986
|
-
align-items: center;
|
|
1987
|
-
padding: 12px 16px;
|
|
1988
|
-
}
|
|
1989
|
-
.pptxv-smartart-dialog-header {
|
|
1990
|
-
justify-content: space-between;
|
|
1991
|
-
border-bottom: 1px solid var(--_pptx-border);
|
|
1992
|
-
}
|
|
1993
|
-
.pptxv-smartart-dialog-header h2 { margin: 0; font-size: 14px; font-weight: 500; }
|
|
1994
|
-
.pptxv-smartart-dialog-close {
|
|
1995
|
-
display: grid;
|
|
1996
|
-
width: 28px;
|
|
1997
|
-
height: 28px;
|
|
1998
|
-
padding: 0;
|
|
1999
|
-
place-items: center;
|
|
2000
|
-
border: 0;
|
|
2001
|
-
border-radius: var(--_pptx-radius);
|
|
2002
|
-
background: transparent;
|
|
2003
|
-
color: inherit;
|
|
2004
|
-
font: inherit;
|
|
2005
|
-
font-size: 20px;
|
|
2006
|
-
line-height: 1;
|
|
2007
|
-
cursor: pointer;
|
|
2008
|
-
}
|
|
2009
|
-
.pptxv-smartart-dialog-close:hover { background: var(--_pptx-muted); }
|
|
2010
|
-
.pptxv-smartart-dialog-body { display: flex; flex: 1; min-height: 0; overflow: hidden; }
|
|
2011
|
-
.pptxv-smartart-categories {
|
|
2012
|
-
flex: 0 0 160px;
|
|
2013
|
-
padding: 8px 0;
|
|
2014
|
-
border-right: 1px solid var(--_pptx-border);
|
|
2015
|
-
}
|
|
2016
|
-
.pptxv-smartart-category {
|
|
2017
|
-
display: block;
|
|
2018
|
-
width: 100%;
|
|
2019
|
-
padding: 6px 12px;
|
|
2020
|
-
border: 0;
|
|
2021
|
-
background: transparent;
|
|
2022
|
-
color: inherit;
|
|
2023
|
-
font: inherit;
|
|
2024
|
-
font-size: 12px;
|
|
2025
|
-
text-align: left;
|
|
2026
|
-
cursor: pointer;
|
|
2027
|
-
}
|
|
2028
|
-
.pptxv-smartart-category:hover { background: var(--_pptx-muted); }
|
|
2029
|
-
.pptxv-smartart-category.is-active { background: var(--_pptx-primary); color: #fff; }
|
|
2030
|
-
.pptxv-smartart-gallery { flex: 1; min-width: 0; overflow-y: auto; padding: 12px; }
|
|
2031
|
-
.pptxv-smartart-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
|
|
2032
|
-
.pptxv-smartart-option {
|
|
2033
|
-
display: flex;
|
|
2034
|
-
min-width: 0;
|
|
2035
|
-
padding: 8px;
|
|
2036
|
-
align-items: center;
|
|
2037
|
-
flex-direction: column;
|
|
2038
|
-
gap: 4px;
|
|
2039
|
-
border: 1px solid var(--_pptx-border);
|
|
2040
|
-
border-radius: var(--_pptx-radius);
|
|
2041
|
-
background: transparent;
|
|
2042
|
-
color: inherit;
|
|
2043
|
-
font: inherit;
|
|
2044
|
-
cursor: pointer;
|
|
2045
|
-
}
|
|
2046
|
-
.pptxv-smartart-option:hover { background: color-mix(in srgb, var(--_pptx-muted) 50%, transparent); }
|
|
2047
|
-
.pptxv-smartart-option.is-selected {
|
|
2048
|
-
border-color: var(--_pptx-primary);
|
|
2049
|
-
background: color-mix(in srgb, var(--_pptx-primary) 20%, transparent);
|
|
2050
|
-
}
|
|
2051
|
-
.pptxv-smartart-option-preview {
|
|
2052
|
-
display: grid;
|
|
2053
|
-
width: 64px;
|
|
2054
|
-
height: 48px;
|
|
2055
|
-
place-items: center;
|
|
2056
|
-
border-radius: var(--_pptx-radius);
|
|
2057
|
-
background: var(--_pptx-muted);
|
|
2058
|
-
color: var(--_pptx-primary);
|
|
2059
|
-
}
|
|
2060
|
-
.pptxv-smartart-option-preview svg { width: 30px; height: 30px; }
|
|
2061
|
-
.pptxv-smartart-option-label { font-size: 10px; line-height: 1.25; text-align: center; }
|
|
2062
|
-
.pptxv-smartart-dialog-footer {
|
|
2063
|
-
justify-content: flex-end;
|
|
2064
|
-
gap: 8px;
|
|
2065
|
-
border-top: 1px solid var(--_pptx-border);
|
|
2066
|
-
}
|
|
2067
|
-
.pptxv-smartart-dialog button:focus-visible { outline: 2px solid var(--_pptx-ring); outline-offset: 1px; }
|
|
2068
|
-
|
|
2069
|
-
@media (max-width: 767px) {
|
|
2070
|
-
.pptxv-smartart-dialog-layer { align-items: flex-end; }
|
|
2071
|
-
.pptxv-smartart-dialog { width: 100%; max-height: 88dvh; border-radius: 16px 16px 0 0; }
|
|
2072
|
-
.pptxv-smartart-categories { flex-basis: 120px; }
|
|
2073
|
-
.pptxv-smartart-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
2074
|
-
}
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
1923
|
.pptxv-tpl-dialog-layer {
|
|
2078
1924
|
position: fixed;
|
|
2079
1925
|
inset: 0;
|
|
@@ -3281,67 +3127,8 @@ svg[data-pptx-motion-path-overlay] [data-pptx-motion-path-handle] { pointer-even
|
|
|
3281
3127
|
.pptxv-text3d-bevel-label { color: var(--_pptx-muted-foreground); font-size: 10px; text-transform: uppercase; letter-spacing: 0.04em; }
|
|
3282
3128
|
.pptxv-text3d-color { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
|
3283
3129
|
|
|
3284
|
-
/* ── Chart data
|
|
3285
|
-
.pptxv-chart-
|
|
3286
|
-
.pptxv-chart-grid[hidden] { display: none; }
|
|
3287
|
-
.pptxv-chart-grid-toolbar { display: flex; justify-content: flex-end; gap: 4px; }
|
|
3288
|
-
.pptxv-chart-grid-btn {
|
|
3289
|
-
padding: 2px 6px;
|
|
3290
|
-
border: 1px solid var(--_pptx-border);
|
|
3291
|
-
border-radius: var(--_pptx-radius);
|
|
3292
|
-
background: var(--_pptx-muted);
|
|
3293
|
-
color: var(--_pptx-foreground);
|
|
3294
|
-
font: inherit;
|
|
3295
|
-
font-size: 10px;
|
|
3296
|
-
cursor: pointer;
|
|
3297
|
-
}
|
|
3298
|
-
.pptxv-chart-grid-btn:hover:not(:disabled) { background: var(--_pptx-accent); color: var(--_pptx-accent-foreground); }
|
|
3299
|
-
.pptxv-chart-grid-table { width: 100%; border-collapse: collapse; font-size: 11px; }
|
|
3300
|
-
.pptxv-chart-grid-table th, .pptxv-chart-grid-table td { padding: 1px; min-width: 72px; }
|
|
3301
|
-
.pptxv-chart-grid-table th { font-weight: 400; }
|
|
3302
|
-
.pptxv-chart-grid-table :is(th, td) { display: table-cell; white-space: nowrap; }
|
|
3303
|
-
.pptxv-chart-grid-cell {
|
|
3304
|
-
box-sizing: border-box;
|
|
3305
|
-
width: 100%;
|
|
3306
|
-
min-width: 52px;
|
|
3307
|
-
padding: 2px 4px;
|
|
3308
|
-
border: 1px solid var(--_pptx-border);
|
|
3309
|
-
border-radius: var(--_pptx-radius);
|
|
3310
|
-
background: var(--_pptx-background);
|
|
3311
|
-
color: var(--_pptx-foreground);
|
|
3312
|
-
font: inherit;
|
|
3313
|
-
font-size: 11px;
|
|
3314
|
-
}
|
|
3315
|
-
.pptxv-chart-grid-cell:focus-visible { outline: 2px solid var(--_pptx-ring); outline-offset: -1px; }
|
|
3316
|
-
/* Ring-highlight for the cell matching the on-canvas chart part selection. */
|
|
3317
|
-
.pptxv-chart-grid-cell-highlight { outline: 2px solid var(--_pptx-ring); outline-offset: -1px; }
|
|
3318
|
-
.pptxv-chart-grid-remove {
|
|
3319
|
-
margin-left: 2px;
|
|
3320
|
-
padding: 0 3px;
|
|
3321
|
-
border: none;
|
|
3322
|
-
background: transparent;
|
|
3323
|
-
color: var(--_pptx-muted-foreground);
|
|
3324
|
-
font: inherit;
|
|
3325
|
-
cursor: pointer;
|
|
3326
|
-
}
|
|
3327
|
-
.pptxv-chart-grid-remove:hover { color: var(--_pptx-destructive); }
|
|
3328
|
-
/* Below this width, matches isDensePanelCompact()/MOBILE_BREAKPOINT (768) in
|
|
3329
|
-
pptx-viewer-shared: getDenseGridLayoutPlan(width) returns
|
|
3330
|
-
stickyFirstColumn: true, minCellWidthPx: 64, and
|
|
3331
|
-
getDensePanelTouchTargetPx(width) returns MIN_TOUCH_TARGET_PX (44). Pins
|
|
3332
|
-
the category-label column so a value scrolled into view still reads
|
|
3333
|
-
against its row, and gives the add/remove controls a touch-sized hit area. */
|
|
3334
|
-
@media (max-width: 767px) {
|
|
3335
|
-
.pptxv-chart-grid-table th, .pptxv-chart-grid-table td { min-width: 64px; }
|
|
3336
|
-
.pptxv-chart-grid-table th:first-child, .pptxv-chart-grid-table td:first-child {
|
|
3337
|
-
position: sticky;
|
|
3338
|
-
left: 0;
|
|
3339
|
-
z-index: 1;
|
|
3340
|
-
background: var(--_pptx-background);
|
|
3341
|
-
}
|
|
3342
|
-
.pptxv-chart-grid-table thead th:first-child { z-index: 2; }
|
|
3343
|
-
.pptxv-chart-grid-btn, .pptxv-chart-grid-remove { min-width: 44px !important; min-height: 44px !important; }
|
|
3344
|
-
}
|
|
3130
|
+
/* ── Chart data sheet (the shared pptx-ui-chart-data-sheet styles itself) ── */
|
|
3131
|
+
.pptxv-chart-sheet { margin: 6px 0; }
|
|
3345
3132
|
|
|
3346
3133
|
/* ── Table data grid ─────────────────────────────────────────────────── */
|
|
3347
3134
|
.pptxv-table-grid-header { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
|
|
@@ -3848,25 +3635,6 @@ svg[data-pptx-motion-path-overlay] [data-pptx-motion-path-handle] { pointer-even
|
|
|
3848
3635
|
font-weight: 600;
|
|
3849
3636
|
}
|
|
3850
3637
|
|
|
3851
|
-
/* ── SmartArt text pane: per-node hierarchy actions ──────────────────── */
|
|
3852
|
-
.pptxv-smartart-hierarchy {
|
|
3853
|
-
display: flex;
|
|
3854
|
-
flex-wrap: wrap;
|
|
3855
|
-
grid-column: 2 / -1;
|
|
3856
|
-
gap: 4px;
|
|
3857
|
-
margin-top: 2px;
|
|
3858
|
-
}
|
|
3859
|
-
.pptxv-smartart-hierarchy button {
|
|
3860
|
-
padding: 1px 6px;
|
|
3861
|
-
border: 1px solid var(--_pptx-border);
|
|
3862
|
-
border-radius: var(--_pptx-radius);
|
|
3863
|
-
background: transparent;
|
|
3864
|
-
color: var(--_pptx-muted-foreground);
|
|
3865
|
-
font: inherit;
|
|
3866
|
-
font-size: 10px;
|
|
3867
|
-
cursor: pointer;
|
|
3868
|
-
}
|
|
3869
|
-
.pptxv-smartart-hierarchy button:hover { background: var(--_pptx-accent); color: var(--_pptx-accent-foreground); }
|
|
3870
3638
|
|
|
3871
3639
|
/* ── OLE editor dialog: nested deck tab ──────────────────────────────── */
|
|
3872
3640
|
.pptxv-ole-edit-content { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pptx-vanilla-viewer",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.50.0",
|
|
4
4
|
"description": "pptx-viewer for vanilla JS: a zero-framework PowerPoint viewer and editor to render, edit, present, and export PPTX slides with plain DOM, no React/Vue/Angular required.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript",
|
|
@@ -107,8 +107,8 @@
|
|
|
107
107
|
"jspdf": "^4.2.1",
|
|
108
108
|
"jszip": "^3.10.2",
|
|
109
109
|
"lucide": "^1.57.0",
|
|
110
|
-
"ooxml-core": "^1.
|
|
111
|
-
"ooxml-ui": "^1.
|
|
110
|
+
"ooxml-core": "^1.25.0",
|
|
111
|
+
"ooxml-ui": "^1.26.0",
|
|
112
112
|
"opentype.js": "^2.0.0"
|
|
113
113
|
},
|
|
114
114
|
"devDependencies": {
|