(
index: number,
wrapper: HTMLDivElement,
scale: number,
_displayWidth: number,
_displayHeight: number
)
| 652 | } |
| 653 | |
| 654 | private mountListSlide( |
| 655 | index: number, |
| 656 | wrapper: HTMLDivElement, |
| 657 | scale: number, |
| 658 | _displayWidth: number, |
| 659 | _displayHeight: number |
| 660 | ): void { |
| 661 | if (!this.presentation) return |
| 662 | if (wrapper.dataset.mounted === '1') return |
| 663 | wrapper.dataset.mounted = '1' |
| 664 | wrapper.innerHTML = '' |
| 665 | this.mountedSlides.add(index) |
| 666 | |
| 667 | const slide = this.presentation.slides[index] |
| 668 | try { |
| 669 | const handle = renderSlideInternal(this.presentation, slide, { |
| 670 | onNodeError: (nodeId, error) => this.emitNodeError(nodeId, error), |
| 671 | onNavigate: (target) => this.handleNavigate(target), |
| 672 | mediaUrlCache: this.mediaUrlCache, |
| 673 | chartInstances: this.chartInstances, |
| 674 | }) |
| 675 | |
| 676 | this.slideHandles.set(index, handle) |
| 677 | handle.element.style.transform = `scale(${scale})` |
| 678 | handle.element.style.transformOrigin = 'top left' |
| 679 | wrapper.appendChild(handle.element) |
| 680 | this.emitSlideRendered(index, handle.element) |
| 681 | } catch (e) { |
| 682 | this.emitSlideError(index, e) |
| 683 | wrapper.style.background = '#fff3f3' |
| 684 | wrapper.style.display = 'flex' |
| 685 | wrapper.style.alignItems = 'center' |
| 686 | wrapper.style.justifyContent = 'center' |
| 687 | wrapper.style.border = '2px dashed #ff6b6b' |
| 688 | wrapper.style.color = '#cc0000' |
| 689 | wrapper.style.fontSize = '14px' |
| 690 | wrapper.textContent = `Slide ${index + 1}: Render Error - ${getErrorMessage(e)}` |
| 691 | } |
| 692 | } |
| 693 | |
| 694 | private unmountListSlide(index: number, wrapper: HTMLDivElement, displayHeight: number): void { |
| 695 | if (wrapper.dataset.mounted !== '1') return |
no test coverage detected