Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions packages/layout-engine/contracts/src/resolved-layout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type {
FlowMode,
Fragment,
ImageBlock,
ImageFragmentMetadata,
Line,
PageMargins,
SectionVerticalAlign,
Expand Down Expand Up @@ -105,6 +106,16 @@ export type ResolvedFragmentItem = {
blockId: string;
/** Index within page.fragments — bridge to legacy content rendering. */
fragmentIndex: number;
/** ProseMirror start position for click-to-position mapping. */
pmStart?: number;
/** ProseMirror end position for click-to-position mapping. */
pmEnd?: number;
/** Whether this fragment continues from a previous page. */
continuesFromPrev?: boolean;
/** Whether this fragment continues on the next page. */
continuesOnNext?: boolean;
/** List marker box width in pixels (para/list-item only). */
markerWidth?: number;
/** Pre-resolved paragraph content for non-table paragraph fragments. */
content?: ResolvedParagraphContent;
};
Expand Down Expand Up @@ -205,6 +216,14 @@ export type ResolvedTableItem = {
blockId: string;
/** Index within page.fragments — bridge to legacy rendering. */
fragmentIndex: number;
/** ProseMirror start position for click-to-position mapping. */
pmStart?: number;
/** ProseMirror end position for click-to-position mapping. */
pmEnd?: number;
/** Whether this table fragment continues from a previous page. */
continuesFromPrev?: boolean;
/** Whether this table fragment continues on the next page. */
continuesOnNext?: boolean;
/** Pre-extracted TableBlock (replaces blockLookup.get()). */
block: TableBlock;
/** Pre-extracted TableMeasure (replaces blockLookup.get()). */
Expand Down Expand Up @@ -241,8 +260,14 @@ export type ResolvedImageItem = {
blockId: string;
/** Index within page.fragments — bridge to legacy rendering. */
fragmentIndex: number;
/** ProseMirror start position for click-to-position mapping. */
pmStart?: number;
/** ProseMirror end position for click-to-position mapping. */
pmEnd?: number;
/** Pre-extracted ImageBlock (replaces blockLookup.get()). */
block: ImageBlock;
/** Image metadata for interactive resizing (original dimensions, aspect ratio). */
metadata?: ImageFragmentMetadata;
};

/**
Expand Down Expand Up @@ -271,6 +296,10 @@ export type ResolvedDrawingItem = {
blockId: string;
/** Index within page.fragments — bridge to legacy rendering. */
fragmentIndex: number;
/** ProseMirror start position for click-to-position mapping. */
pmStart?: number;
/** ProseMirror end position for click-to-position mapping. */
pmEnd?: number;
/** Pre-extracted DrawingBlock (replaces blockLookup.get()). */
block: DrawingBlock;
};
Expand Down
5 changes: 4 additions & 1 deletion packages/layout-engine/layout-resolved/src/resolveDrawing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export function resolveDrawingItem(
): ResolvedDrawingItem {
const { block } = requireResolvedBlockAndMeasure(blockMap, fragment.blockId, 'drawing', 'drawing', 'drawing');

return {
const item: ResolvedDrawingItem = {
kind: 'fragment',
fragmentKind: 'drawing',
id: resolveDrawingFragmentId(fragment),
Expand All @@ -31,4 +31,7 @@ export function resolveDrawingItem(
fragmentIndex,
block,
};
if (fragment.pmStart != null) item.pmStart = fragment.pmStart;
if (fragment.pmEnd != null) item.pmEnd = fragment.pmEnd;
return item;
}
6 changes: 5 additions & 1 deletion packages/layout-engine/layout-resolved/src/resolveImage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export function resolveImageItem(
): ResolvedImageItem {
const { block } = requireResolvedBlockAndMeasure(blockMap, fragment.blockId, 'image', 'image', 'image');

return {
const item: ResolvedImageItem = {
kind: 'fragment',
fragmentKind: 'image',
id: resolveImageFragmentId(fragment),
Expand All @@ -31,4 +31,8 @@ export function resolveImageItem(
fragmentIndex,
block,
};
if (fragment.pmStart != null) item.pmStart = fragment.pmStart;
if (fragment.pmEnd != null) item.pmEnd = fragment.pmEnd;
if (fragment.metadata != null) item.metadata = fragment.metadata;
return item;
}
Loading
Loading