From 3511c54658c25848f482dd279768143856eaaa5e Mon Sep 17 00:00:00 2001 From: Hiren Kangad Date: Sat, 14 Mar 2026 11:19:04 +0530 Subject: [PATCH] feat: add PdfPageObject type to scene format --- frontend/src/canvas/SceneManager.ts | 2 +- frontend/src/canvas/scene-format.ts | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/frontend/src/canvas/SceneManager.ts b/frontend/src/canvas/SceneManager.ts index 8a2dd54..09e3c46 100644 --- a/frontend/src/canvas/SceneManager.ts +++ b/frontend/src/canvas/SceneManager.ts @@ -58,7 +58,7 @@ function isGifAsset(asset: string): boolean { export interface SceneItem { id: string; - type: 'image' | 'video' | 'text' | 'drawing' | 'group' | 'sticky' | 'markdown'; + type: 'image' | 'video' | 'text' | 'drawing' | 'group' | 'sticky' | 'markdown' | 'pdf-page'; displayObject: Container; data: AnySceneObject; } diff --git a/frontend/src/canvas/scene-format.ts b/frontend/src/canvas/scene-format.ts index 24365ce..8dd214e 100644 --- a/frontend/src/canvas/scene-format.ts +++ b/frontend/src/canvas/scene-format.ts @@ -4,7 +4,7 @@ export interface SceneObject { id: string; - type: 'image' | 'video' | 'text' | 'group' | 'drawing' | 'sticky' | 'markdown'; + type: 'image' | 'video' | 'text' | 'group' | 'drawing' | 'sticky' | 'markdown' | 'pdf-page'; x: number; y: number; w: number; @@ -94,7 +94,19 @@ export interface MarkdownObject extends SceneObject { cornerRadius: number; // border radius, default 10 } -export type AnySceneObject = ImageObject | VideoObject | TextObject | DrawingObject | GroupObject | StickyObject | MarkdownObject; +export interface PdfPageObject extends SceneObject { + type: 'pdf-page'; + asset: string | null; // high-res asset key — null until pdf-hires job completes + thumb: string | null; // thumbnail asset key — null until pdf-thumbnail job completes + pdfImageId: string; // source PDF's image ID + pdfName: string; // original filename + pageNumber: number; // 1-indexed + pageCount: number; // total pages in source PDF + nativeW: number; // pixel dimensions at 200 DPI + nativeH: number; +} + +export type AnySceneObject = ImageObject | VideoObject | TextObject | DrawingObject | GroupObject | StickyObject | MarkdownObject | PdfPageObject; export interface SceneData { v: 2;