MCPcopy
hub / github.com/simstudioai/sim / renderSingleSlide

Method renderSingleSlide

apps/sim/lib/pptx-renderer/core/viewer.ts:867–915  ·  view source on GitHub ↗
(scale: number, displayWidth: number, displayHeight: number)

Source from the content-addressed store, hash-verified

865 }
866
867 private renderSingleSlide(scale: number, displayWidth: number, displayHeight: number): void {
868 if (!this.presentation) return
869
870 const slide = this.presentation.slides[this.currentSlide]
871 if (!slide) return
872
873 for (const handle of this.slideHandles.values()) {
874 handle.dispose()
875 }
876 this.slideHandles.clear()
877 this.disposeAllCharts()
878 this.container.innerHTML = ''
879 this.mountedSlides.clear()
880 this.mountedSlides.add(this.currentSlide)
881
882 const wrapper = document.createElement('div')
883 wrapper.style.cssText = `
884 width: ${displayWidth}px; height: ${displayHeight}px;
885 margin: 0 auto; overflow: hidden; position: relative;
886 box-shadow: 0 2px 8px rgba(0,0,0,0.15);
887 `
888
889 try {
890 const handle = renderSlideInternal(this.presentation, slide, {
891 onNodeError: (nodeId, error) => this.emitNodeError(nodeId, error),
892 onNavigate: (target) => this.handleNavigate(target),
893 mediaUrlCache: this.mediaUrlCache,
894 chartInstances: this.chartInstances,
895 })
896 this.slideHandles.set(this.currentSlide, handle)
897 handle.element.style.transform = `scale(${scale})`
898 handle.element.style.transformOrigin = 'top left'
899 wrapper.appendChild(handle.element)
900 this.emitSlideRendered(this.currentSlide, handle.element)
901 } catch (e) {
902 this.emitSlideError(this.currentSlide, e)
903 wrapper.style.background = '#fff3f3'
904 wrapper.style.display = 'flex'
905 wrapper.style.alignItems = 'center'
906 wrapper.style.justifyContent = 'center'
907 wrapper.style.border = '2px dashed #ff6b6b'
908 wrapper.style.color = '#cc0000'
909 wrapper.style.fontSize = '14px'
910 wrapper.textContent = `Slide ${this.currentSlide + 1}: Render Error - ${getErrorMessage(e)}`
911 }
912
913 this.container.appendChild(wrapper)
914 this.afterSingleSlideRender()
915 }
916
917 /**
918 * After list-mode rendering, a scrollbar may appear on the page body

Callers 2

goToSlideMethod · 0.95
queueRenderMethod · 0.95

Calls 11

disposeAllChartsMethod · 0.95
emitNodeErrorMethod · 0.95
handleNavigateMethod · 0.95
emitSlideRenderedMethod · 0.95
emitSlideErrorMethod · 0.95
getErrorMessageFunction · 0.90
disposeMethod · 0.65
clearMethod · 0.65
setMethod · 0.65
addMethod · 0.45

Tested by

no test coverage detected