···11// Main entry point
22-export { DocView } from './docview.js'
22+export { PolyRender } from './polyrender.js'
3344// Types
55export type {
···2222 TextFetchAdapter,
23232424 // Options
2525- DocViewOptions,
2525+ PolyRenderOptions,
2626 PdfOptions,
2727 CodeOptions,
2828 CsvOptions,
···33333434 // State & Info
3535 DocumentInfo,
3636- DocViewState,
3636+ PolyRenderState,
3737 DocumentFormat,
38383939 // Renderer interface (for custom renderers)
···4141 RendererFactory,
42424343 // Events
4444- DocViewEventMap,
4545- DocViewEventType,
4444+ PolyRenderEventMap,
4545+ PolyRenderEventType,
46464747 // Errors
4848- DocViewErrorCode,
4848+ PolyRenderErrorCode,
4949} from './types.js'
50505151-export { DocViewError } from './types.js'
5151+export { PolyRenderError } from './types.js'
52525353// Registry (for custom renderer registration)
5454export { registry } from './registry.js'
+1-1
packages/core/src/registry.ts
···33/**
44 * Registry mapping document formats to their renderer factories.
55 * Built-in renderers are registered by default. Consumers can register
66- * custom renderers for new formats via `DocView.registerRenderer()`.
66+ * custom renderers for new formats via `PolyRender.registerRenderer()`.
77 */
88class FormatRegistry {
99 private factories = new Map<DocumentFormat, RendererFactory>()
···11-import type { ToolbarConfig, DocViewState } from './types.js'
11+import type { ToolbarConfig, PolyRenderState } from './types.js'
22import { el, svgIcon, icons } from './utils.js'
3344export interface ToolbarActions {
···1616 /** Root toolbar element. */
1717 element: HTMLElement
1818 /** Update displayed state (page, total, zoom). */
1919- updateState(state: DocViewState): void
1919+ updateState(state: PolyRenderState): void
2020 /** Destroy and clean up listeners. */
2121 destroy(): void
2222}
···2828export function createToolbar(
2929 config: ToolbarConfig,
3030 actions: ToolbarActions,
3131- initialState: DocViewState,
3131+ initialState: PolyRenderState,
3232): ToolbarHandle {
3333 const toolbar = el('div', 'dv-toolbar')
3434 if (config.position === 'bottom') {
···136136137137 return {
138138 element: toolbar,
139139- updateState(state: DocViewState) {
139139+ updateState(state: PolyRenderState) {
140140 if (pageInput) pageInput.value = String(state.currentPage)
141141 if (pageLabel) pageLabel.textContent = `/ ${state.totalPages}`
142142 if (zoomLabel) zoomLabel.textContent = `${Math.round(state.zoom * 100)}%`
+19-19
packages/core/src/types.ts
···11// ---------------------------------------------------------------------------
22-// Document Sources — what consumers pass in to tell DocView what to render
22+// Document Sources — what consumers pass in to tell PolyRender what to render
33// ---------------------------------------------------------------------------
4455/** A direct file provided as binary data. */
···151151152152153153// ---------------------------------------------------------------------------
154154-// Options — configuration for the DocView instance
154154+// Options — configuration for the PolyRender instance
155155// ---------------------------------------------------------------------------
156156157157-export interface DocViewOptions {
157157+export interface PolyRenderOptions {
158158 /** The document to render. */
159159 source: DocumentSource
160160 /** Explicit format override. If omitted, auto-detected from source. */
···180180 /** Called when the visible page changes. */
181181 onPageChange?: (page: number, totalPages: number) => void
182182 /** Called on unrecoverable errors. */
183183- onError?: (error: DocViewError) => void
183183+ onError?: (error: PolyRenderError) => void
184184 /** Called when zoom level changes. */
185185 onZoomChange?: (zoom: number) => void
186186 /** Called when loading state changes. */
···290290 fileSize?: number
291291}
292292293293-/** Current viewer state, queryable from a DocView instance. */
294294-export interface DocViewState {
293293+/** Current viewer state, queryable from a PolyRender instance. */
294294+export interface PolyRenderState {
295295 /** Whether the document is currently loading. */
296296 loading: boolean
297297 /** Current error, if any. */
298298- error: DocViewError | null
298298+ error: PolyRenderError | null
299299 /** Current 1-indexed page number. */
300300 currentPage: number
301301 /** Total page count. */
···311311// Errors
312312// ---------------------------------------------------------------------------
313313314314-export type DocViewErrorCode =
314314+export type PolyRenderErrorCode =
315315 | 'FORMAT_UNSUPPORTED'
316316 | 'FORMAT_DETECTION_FAILED'
317317 | 'PEER_DEPENDENCY_MISSING'
···321321 | 'PAGE_OUT_OF_RANGE'
322322 | 'UNKNOWN'
323323324324-export class DocViewError extends Error {
325325- code: DocViewErrorCode
324324+export class PolyRenderError extends Error {
325325+ code: PolyRenderErrorCode
326326 detail?: unknown
327327328328- constructor(code: DocViewErrorCode, message: string, detail?: unknown) {
328328+ constructor(code: PolyRenderErrorCode, message: string, detail?: unknown) {
329329 super(message)
330330- this.name = 'DocViewError'
330330+ this.name = 'PolyRenderError'
331331 this.code = code
332332 this.detail = detail
333333 }
···363363364364/**
365365 * The contract every format renderer must fulfill. Each renderer manages
366366- * its own DOM subtree within the provided container element. The DocView
366366+ * its own DOM subtree within the provided container element. The PolyRender
367367 * orchestrator calls these methods in response to user actions and source
368368 * changes.
369369 */
···376376 * Called once after the renderer is created. The container is an empty div
377377 * scoped to this renderer — the renderer owns its entire DOM subtree.
378378 */
379379- mount(container: HTMLElement, options: DocViewOptions): Promise<void>
379379+ mount(container: HTMLElement, options: PolyRenderOptions): Promise<void>
380380381381 /**
382382 * React to changed options (theme, zoom, etc.) without full re-mount.
383383 * Only the changed fields will be present.
384384 */
385385- update(changed: Partial<DocViewOptions>): Promise<void>
385385+ update(changed: Partial<PolyRenderOptions>): Promise<void>
386386387387 /** Navigate to a specific page (1-indexed). */
388388 goToPage(page: number): void
···411411412412/**
413413 * Factory function that creates a renderer instance. Registered in the
414414- * format registry so DocView can instantiate the right renderer for each
414414+ * format registry so PolyRender can instantiate the right renderer for each
415415 * document format.
416416 */
417417export type RendererFactory = () => Renderer
···421421// Events (for vanilla JS event-driven usage)
422422// ---------------------------------------------------------------------------
423423424424-export interface DocViewEventMap {
424424+export interface PolyRenderEventMap {
425425 ready: DocumentInfo
426426 pagechange: { page: number; totalPages: number }
427427 zoomchange: { zoom: number }
428428- error: DocViewError
428428+ error: PolyRenderError
429429 loadingchange: { loading: boolean }
430430 destroy: void
431431}
432432433433-export type DocViewEventType = keyof DocViewEventMap
433433+export type PolyRenderEventType = keyof PolyRenderEventMap
+2-2
packages/core/src/utils.ts
···11-import type { DocumentSource, DocumentFormat, DocViewError } from './types.js'
22-import { DocViewError as DVError } from './types.js'
11+import type { DocumentSource, DocumentFormat, PolyRenderError } from './types.js'
22+import { PolyRenderError as DVError } from './types.js'
3344// ---------------------------------------------------------------------------
55// DOM Helpers