(
input: PreviewInput,
options?: {
renderMode?: 'list' | 'slide'
listOptions?: ListRenderOptions
signal?: AbortSignal
}
)
| 207 | // ----------------------------------------------------------------------- |
| 208 | |
| 209 | async open( |
| 210 | input: PreviewInput, |
| 211 | options?: { |
| 212 | renderMode?: 'list' | 'slide' |
| 213 | listOptions?: ListRenderOptions |
| 214 | signal?: AbortSignal |
| 215 | } |
| 216 | ): Promise<void> { |
| 217 | const signal = options?.signal |
| 218 | const checkAborted = () => { |
| 219 | if (signal?.aborted) { |
| 220 | throw new DOMException('Preview aborted', 'AbortError') |
| 221 | } |
| 222 | } |
| 223 | |
| 224 | checkAborted() |
| 225 | |
| 226 | // Clean up previous state |
| 227 | this.destroy() |
| 228 | |
| 229 | const buffer = await normalizePreviewInput(input) |
| 230 | checkAborted() |
| 231 | |
| 232 | const files = await parseZip(buffer, this.viewerOptions.zipLimits) |
| 233 | checkAborted() |
| 234 | |
| 235 | const presentation = buildPresentation(files) |
| 236 | checkAborted() |
| 237 | |
| 238 | this.load(presentation) |
| 239 | |
| 240 | const renderMode = options?.renderMode ?? 'list' |
| 241 | if (renderMode === 'slide') { |
| 242 | await this.renderSlide(0) |
| 243 | } else { |
| 244 | await this.renderList(options?.listOptions) |
| 245 | } |
| 246 | |
| 247 | checkAborted() |
| 248 | } |
| 249 | |
| 250 | // ----------------------------------------------------------------------- |
| 251 | // Static factory |
no test coverage detected