mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 10:26:08 +01:00 
			
		
		
		
	refactor(collection/presentation): deduplicate slide rendering
This commit is contained in:
		| @@ -4,7 +4,7 @@ import Reveal from "reveal.js"; | |||||||
| import slideBaseStylesheet from "reveal.js/dist/reveal.css?raw"; | import slideBaseStylesheet from "reveal.js/dist/reveal.css?raw"; | ||||||
| import slideThemeStylesheet from "reveal.js/dist/theme/black.css?raw"; | import slideThemeStylesheet from "reveal.js/dist/theme/black.css?raw"; | ||||||
| import slideCustomStylesheet from "./slidejs.css?raw"; | import slideCustomStylesheet from "./slidejs.css?raw"; | ||||||
| import { buildPresentationModel, PresentationModel, PresentationSlideModel } from "./model"; | import { buildPresentationModel, PresentationModel, PresentationSlideBaseModel } from "./model"; | ||||||
| import ShadowDom from "../../react/ShadowDom"; | import ShadowDom from "../../react/ShadowDom"; | ||||||
| import ActionButton from "../../react/ActionButton"; | import ActionButton from "../../react/ActionButton"; | ||||||
| import "./index.css"; | import "./index.css"; | ||||||
| @@ -116,30 +116,26 @@ function Presentation({ presentation, apiRef: externalApiRef } : { presentation: | |||||||
|     return ( |     return ( | ||||||
|         <div ref={containerRef} className="reveal"> |         <div ref={containerRef} className="reveal"> | ||||||
|             <div className="slides"> |             <div className="slides"> | ||||||
|                 {presentation.slides?.map(slide => ( |                 {presentation.slides?.map(slide => { | ||||||
|                     <Slide key={slide.noteId} slide={slide} /> |                     if (!slide.verticalSlides) { | ||||||
|                 ))} |                         return <Slide key={slide.noteId} slide={slide} /> | ||||||
|  |                     } else { | ||||||
|  |                         return ( | ||||||
|  |                             <section> | ||||||
|  |                                 <Slide key={slide.noteId} slide={slide} /> | ||||||
|  |                                 {slide.verticalSlides.map(slide => <Slide key={slide.noteId} slide={slide} /> )} | ||||||
|  |                             </section> | ||||||
|  |                         ); | ||||||
|  |                     } | ||||||
|  |                 })} | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
| function Slide({ slide }: { slide: PresentationSlideModel }) { | function Slide({ slide }: { slide: PresentationSlideBaseModel }) { | ||||||
|     if (!slide.verticalSlides) { |     return <section data-note-id={slide.noteId} dangerouslySetInnerHTML={slide.content} />; | ||||||
|         // Normal slide. |  | ||||||
|         return <section data-note-id={slide.noteId} dangerouslySetInnerHTML={slide.content} />; |  | ||||||
|     } else { |  | ||||||
|         // Slide with sub notes (show as vertical slides). |  | ||||||
|         return ( |  | ||||||
|             <section> |  | ||||||
|                 <section data-note-id={slide.noteId} dangerouslySetInnerHTML={slide.content} /> |  | ||||||
|                 {slide.verticalSlides.map((slide) => ( |  | ||||||
|                     <section data-note-id={slide.noteId} dangerouslySetInnerHTML={slide.content} /> |  | ||||||
|                 ))} |  | ||||||
|             </section> |  | ||||||
|         ) |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|  |  | ||||||
| function getNoteIdFromSlide(slide: HTMLElement | undefined) { | function getNoteIdFromSlide(slide: HTMLElement | undefined) { | ||||||
|   | |||||||
| @@ -4,12 +4,12 @@ import contentRenderer from "../../../services/content_renderer"; | |||||||
| type DangerouslySetInnerHTML = { __html: string; }; | type DangerouslySetInnerHTML = { __html: string; }; | ||||||
|  |  | ||||||
| /** A top-level slide with optional vertical slides. */ | /** A top-level slide with optional vertical slides. */ | ||||||
| export interface PresentationSlideModel extends PresentationSlideBaseModel { | interface PresentationSlideModel extends PresentationSlideBaseModel { | ||||||
|     verticalSlides: PresentationSlideBaseModel[] | undefined; |     verticalSlides: PresentationSlideBaseModel[] | undefined; | ||||||
| } | } | ||||||
|  |  | ||||||
| /** Either a top-level slide or a vertical slide. */ | /** Either a top-level slide or a vertical slide. */ | ||||||
| interface PresentationSlideBaseModel { | export interface PresentationSlideBaseModel { | ||||||
|     noteId: string; |     noteId: string; | ||||||
|     content: DangerouslySetInnerHTML; |     content: DangerouslySetInnerHTML; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user