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/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 property
1729
- inspector's colour inputs. */
1730
- .pptxv-recent-colors[hidden] { display: none; }
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 grid ─────────────────────────────────────────────────── */
3285
- .pptxv-chart-grid { display: grid; gap: 4px; margin: 6px 0; max-width: 100%; overflow-x: auto; }
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.49.0",
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.24.3",
111
- "ooxml-ui": "^1.25.0",
110
+ "ooxml-core": "^1.25.0",
111
+ "ooxml-ui": "^1.26.0",
112
112
  "opentype.js": "^2.0.0"
113
113
  },
114
114
  "devDependencies": {