diff --git a/src/kicanvas/elements/kicanvas-embed.ts b/src/kicanvas/elements/kicanvas-embed.ts index c21bc7c..ca0a1d2 100644 --- a/src/kicanvas/elements/kicanvas-embed.ts +++ b/src/kicanvas/elements/kicanvas-embed.ts @@ -323,12 +323,5 @@ class KiCanvasSourceElement extends CustomElement { window.customElements.define("kicanvas-source", KiCanvasSourceElement); -/* Import required fonts. - * TODO: Package these up as part of KiCanvas - */ -document.body.appendChild( - html``, -); +/* Fonts: the host page loads the icon font itself (no Google Fonts request). */ + diff --git a/src/kicanvas/project.ts b/src/kicanvas/project.ts index feaf906..b302bf1 100644 --- a/src/kicanvas/project.ts +++ b/src/kicanvas/project.ts @@ -270,8 +270,11 @@ export class Project extends EventTarget implements IDisposable { } } - // Finally, if no root schematic was found, just use the first one we saw. - this.#root_schematic_page = first(this.#pages_by_path.values()); + // Finally, if no root schematic was found, use the first schematic page, else the first page. + // (Board pages are added while loading, so the first page can be a board.) + this.#root_schematic_page ??= + [...this.#pages_by_path.values()].find((p) => p.type == "schematic") ?? + first(this.#pages_by_path.values()); if (!this.#root_schematic_page) { log.error("No vaild root schematic was found."); diff --git a/src/viewers/board/viewer.ts b/src/viewers/board/viewer.ts index 43cbe73..b2c34a9 100644 --- a/src/viewers/board/viewer.ts +++ b/src/viewers/board/viewer.ts @@ -152,6 +152,22 @@ export class BoardViewer extends DocumentViewer< this.draw(); } + // Site change: open on the board itself, not the drawing sheet (the board can sit outside it), + // and let the camera reach the board. + public override zoom_to_page() { + const board_bbox = this.layers.by_name(LayerNames.edge_cuts)!.bbox; + if (board_bbox.w > 0 && board_bbox.h > 0) { + this.viewport.bounds = BBox.combine([ + this.drawing_sheet.page_bbox, + board_bbox, + ]).grow(50); + this.viewport.camera.bbox = board_bbox.grow(board_bbox.w * 0.1); + this.draw(); + } else { + super.zoom_to_page(); + } + } + zoom_to_board() { const edge_cuts = this.layers.by_name(LayerNames.edge_cuts)!; const board_bbox = edge_cuts.bbox;