Preserve QPowerPoint hidden slides in PPTX

This commit is contained in:
Курнат Андрей
2026-06-01 19:28:38 +03:00
parent f4da4dc283
commit a2de721fc4
6 changed files with 161 additions and 8 deletions
+20 -2
View File
@@ -1,6 +1,6 @@
import { useRef, useState } from "react";
import type { CSSProperties } from "react";
import { Copy, Download, FileText, FileUp, Image as ImageIcon, Palette, Plus, Save, Trash2 } from "lucide-react";
import { Copy, Download, EyeOff, FileText, FileUp, Image as ImageIcon, Palette, Plus, Save, Trash2 } from "lucide-react";
import type { Slide, SlideDeck, SlideImage } from "../../types";
import { downloadBlobFile, downloadTextFile } from "../../utils/download";
import { exportPptxBlob, importPptxFile } from "../../io/powerPointOffice";
@@ -315,11 +315,17 @@ export function QPowerPoint({ deck, onChange }: QPowerPointProps) {
<button
type="button"
key={slide.id}
className={`slide-thumb theme-${slide.theme} ${slide.id === activeSlide.id ? "is-active" : ""}`}
className={`slide-thumb theme-${slide.theme} ${slide.id === activeSlide.id ? "is-active" : ""} ${slide.hidden ? "is-hidden" : ""}`}
onClick={() => onChange({ ...deck, activeSlideId: slide.id })}
>
<span>{index + 1}</span>
<strong>{slide.title}</strong>
{slide.hidden ? (
<span className="slide-hidden-badge">
<EyeOff size={14} />
Скрыт
</span>
) : null}
</button>
))}
</aside>
@@ -417,6 +423,18 @@ export function QPowerPoint({ deck, onChange }: QPowerPointProps) {
<aside className="inspector" aria-label="Параметры слайда">
<section>
<h3>Оформление</h3>
<label className="slide-hidden-toggle">
<span>
<EyeOff size={16} />
Показ слайда
</span>
<input
type="checkbox"
checked={Boolean(activeSlide.hidden)}
onChange={(event) => updateSlide({ ...activeSlide, hidden: event.target.checked || undefined })}
/>
<span className="slide-hidden-toggle-text">Скрыть при показе слайд-шоу</span>
</label>
<label>
<span>
<Palette size={16} />