@fieldnotes/core 0.8.9 → 0.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1574,22 +1574,17 @@ function createHexGridTile(cellSize, orientation, strokeColor, strokeWidth, opac
1574
1574
  tc.stroke();
1575
1575
  return { canvas, tileW, tileH };
1576
1576
  }
1577
- function renderHexGridTiled(ctx, bounds, cellSize, tile, scale) {
1578
- const pattern = ctx.createPattern(tile.canvas, "repeat");
1579
- if (!pattern) return;
1580
- const mat = new DOMMatrix();
1581
- mat.scaleSelf(1 / scale, 1 / scale);
1582
- pattern.setTransform(mat);
1583
- ctx.save();
1584
- ctx.fillStyle = pattern;
1585
- const pad = cellSize * 2;
1586
- ctx.fillRect(
1587
- bounds.minX - pad,
1588
- bounds.minY - pad,
1589
- bounds.maxX - bounds.minX + pad * 2,
1590
- bounds.maxY - bounds.minY + pad * 2
1591
- );
1592
- ctx.restore();
1577
+ function renderHexGridTiled(ctx, bounds, cellSize, tile) {
1578
+ const { tileW, tileH } = tile;
1579
+ const startCol = Math.floor(bounds.minX / tileW) - 1;
1580
+ const endCol = Math.ceil(bounds.maxX / tileW) + 1;
1581
+ const startRow = Math.floor(bounds.minY / tileH) - 1;
1582
+ const endRow = Math.ceil(bounds.maxY / tileH) + 1;
1583
+ for (let row = startRow; row <= endRow; row++) {
1584
+ for (let col = startCol; col <= endCol; col++) {
1585
+ ctx.drawImage(tile.canvas, col * tileW, row * tileH, tileW, tileH);
1586
+ }
1587
+ }
1593
1588
  }
1594
1589
 
1595
1590
  // src/elements/element-renderer.ts
@@ -1800,7 +1795,7 @@ var ElementRenderer = class {
1800
1795
  scale
1801
1796
  );
1802
1797
  if (tile) {
1803
- renderHexGridTiled(ctx, bounds, grid.cellSize, tile, scale);
1798
+ renderHexGridTiled(ctx, bounds, grid.cellSize, tile);
1804
1799
  } else {
1805
1800
  renderHexGrid(
1806
1801
  ctx,
@@ -3187,7 +3182,7 @@ var RenderLoop = class {
3187
3182
  const gridCacheHit = this.gridCacheCanvas !== null && currentZoom === this.gridCacheZoom && currentCamX === this.gridCacheCamX && currentCamY === this.gridCacheCamY && cssWidth === this.gridCacheWidth && cssHeight === this.gridCacheHeight && gridRef === this.lastGridRef;
3188
3183
  if (gridCacheHit) {
3189
3184
  ctx.save();
3190
- ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
3185
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
3191
3186
  ctx.drawImage(this.gridCacheCanvas, 0, 0);
3192
3187
  ctx.restore();
3193
3188
  } else {
@@ -3204,7 +3199,7 @@ var RenderLoop = class {
3204
3199
  }
3205
3200
  gc.restore();
3206
3201
  ctx.save();
3207
- ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
3202
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
3208
3203
  ctx.drawImage(this.gridCacheCanvas, 0, 0);
3209
3204
  ctx.restore();
3210
3205
  } else {
@@ -3307,7 +3302,10 @@ var Viewport = class {
3307
3302
  this.renderer = new ElementRenderer();
3308
3303
  this.renderer.setStore(this.store);
3309
3304
  this.renderer.setCamera(this.camera);
3310
- this.renderer.setOnImageLoad(() => this.requestRender());
3305
+ this.renderer.setOnImageLoad(() => {
3306
+ this.renderLoop.markAllLayersDirty();
3307
+ this.requestRender();
3308
+ });
3311
3309
  this.noteEditor = new NoteEditor();
3312
3310
  this.noteEditor.setOnStop((id) => this.onTextEditStop(id));
3313
3311
  this.history = new HistoryStack();
@@ -4923,7 +4921,7 @@ var UpdateLayerCommand = class {
4923
4921
  };
4924
4922
 
4925
4923
  // src/index.ts
4926
- var VERSION = "0.8.8";
4924
+ var VERSION = "0.8.11";
4927
4925
  // Annotate the CommonJS export names for ESM import in node:
4928
4926
  0 && (module.exports = {
4929
4927
  AddElementCommand,
package/dist/index.d.cts CHANGED
@@ -930,6 +930,6 @@ declare class UpdateLayerCommand implements Command {
930
930
  undo(_store: ElementStore): void;
931
931
  }
932
932
 
933
- declare const VERSION = "0.8.8";
933
+ declare const VERSION = "0.8.11";
934
934
 
935
935
  export { AddElementCommand, type ArrowElement, ArrowTool, type ArrowToolOptions, AutoSave, type AutoSaveOptions, Background, type BackgroundOptions, type BackgroundPattern, BatchCommand, type Binding, type Bounds, Camera, type CameraChangeInfo, type CameraOptions, type CanvasElement, type CanvasState, type Command, CreateLayerCommand, ElementRenderer, ElementStore, type ElementType, type ElementUpdateEvent, EraserTool, type EraserToolOptions, EventBus, type ExportImageOptions, type GridElement, HandTool, type HexOrientation, HistoryRecorder, HistoryStack, type HistoryStackOptions, type HtmlElement, type ImageElement, ImageTool, type ImageToolOptions, InputHandler, type Layer, LayerManager, NoteEditor, type NoteElement, NoteTool, type NoteToolOptions, PencilTool, type PencilToolOptions, type Point, type PointerState, Quadtree, RemoveElementCommand, RemoveLayerCommand, type RenderStatsSnapshot, SelectTool, type ShapeElement, type ShapeKind, ShapeTool, type ShapeToolOptions, type Size, type StrokeElement, type StrokePoint, type TextElement, TextTool, type TextToolOptions, type Tool, type ToolContext, ToolManager, type ToolName, UpdateElementCommand, UpdateLayerCommand, VERSION, Viewport, type ViewportOptions, boundsIntersect, clearStaleBindings, createArrow, createGrid, createHtmlElement, createId, createImage, createNote, createShape, createStroke, createText, exportImage, exportState, findBindTarget, findBoundArrows, getArrowBounds, getArrowControlPoint, getArrowMidpoint, getArrowTangentAngle, getBendFromPoint, getEdgeIntersection, getElementBounds, getElementCenter, isBindable, isNearBezier, parseState, snapPoint, unbindArrow, updateBoundArrow };
package/dist/index.d.ts CHANGED
@@ -930,6 +930,6 @@ declare class UpdateLayerCommand implements Command {
930
930
  undo(_store: ElementStore): void;
931
931
  }
932
932
 
933
- declare const VERSION = "0.8.8";
933
+ declare const VERSION = "0.8.11";
934
934
 
935
935
  export { AddElementCommand, type ArrowElement, ArrowTool, type ArrowToolOptions, AutoSave, type AutoSaveOptions, Background, type BackgroundOptions, type BackgroundPattern, BatchCommand, type Binding, type Bounds, Camera, type CameraChangeInfo, type CameraOptions, type CanvasElement, type CanvasState, type Command, CreateLayerCommand, ElementRenderer, ElementStore, type ElementType, type ElementUpdateEvent, EraserTool, type EraserToolOptions, EventBus, type ExportImageOptions, type GridElement, HandTool, type HexOrientation, HistoryRecorder, HistoryStack, type HistoryStackOptions, type HtmlElement, type ImageElement, ImageTool, type ImageToolOptions, InputHandler, type Layer, LayerManager, NoteEditor, type NoteElement, NoteTool, type NoteToolOptions, PencilTool, type PencilToolOptions, type Point, type PointerState, Quadtree, RemoveElementCommand, RemoveLayerCommand, type RenderStatsSnapshot, SelectTool, type ShapeElement, type ShapeKind, ShapeTool, type ShapeToolOptions, type Size, type StrokeElement, type StrokePoint, type TextElement, TextTool, type TextToolOptions, type Tool, type ToolContext, ToolManager, type ToolName, UpdateElementCommand, UpdateLayerCommand, VERSION, Viewport, type ViewportOptions, boundsIntersect, clearStaleBindings, createArrow, createGrid, createHtmlElement, createId, createImage, createNote, createShape, createStroke, createText, exportImage, exportState, findBindTarget, findBoundArrows, getArrowBounds, getArrowControlPoint, getArrowMidpoint, getArrowTangentAngle, getBendFromPoint, getEdgeIntersection, getElementBounds, getElementCenter, isBindable, isNearBezier, parseState, snapPoint, unbindArrow, updateBoundArrow };
package/dist/index.js CHANGED
@@ -1489,22 +1489,17 @@ function createHexGridTile(cellSize, orientation, strokeColor, strokeWidth, opac
1489
1489
  tc.stroke();
1490
1490
  return { canvas, tileW, tileH };
1491
1491
  }
1492
- function renderHexGridTiled(ctx, bounds, cellSize, tile, scale) {
1493
- const pattern = ctx.createPattern(tile.canvas, "repeat");
1494
- if (!pattern) return;
1495
- const mat = new DOMMatrix();
1496
- mat.scaleSelf(1 / scale, 1 / scale);
1497
- pattern.setTransform(mat);
1498
- ctx.save();
1499
- ctx.fillStyle = pattern;
1500
- const pad = cellSize * 2;
1501
- ctx.fillRect(
1502
- bounds.minX - pad,
1503
- bounds.minY - pad,
1504
- bounds.maxX - bounds.minX + pad * 2,
1505
- bounds.maxY - bounds.minY + pad * 2
1506
- );
1507
- ctx.restore();
1492
+ function renderHexGridTiled(ctx, bounds, cellSize, tile) {
1493
+ const { tileW, tileH } = tile;
1494
+ const startCol = Math.floor(bounds.minX / tileW) - 1;
1495
+ const endCol = Math.ceil(bounds.maxX / tileW) + 1;
1496
+ const startRow = Math.floor(bounds.minY / tileH) - 1;
1497
+ const endRow = Math.ceil(bounds.maxY / tileH) + 1;
1498
+ for (let row = startRow; row <= endRow; row++) {
1499
+ for (let col = startCol; col <= endCol; col++) {
1500
+ ctx.drawImage(tile.canvas, col * tileW, row * tileH, tileW, tileH);
1501
+ }
1502
+ }
1508
1503
  }
1509
1504
 
1510
1505
  // src/elements/element-renderer.ts
@@ -1715,7 +1710,7 @@ var ElementRenderer = class {
1715
1710
  scale
1716
1711
  );
1717
1712
  if (tile) {
1718
- renderHexGridTiled(ctx, bounds, grid.cellSize, tile, scale);
1713
+ renderHexGridTiled(ctx, bounds, grid.cellSize, tile);
1719
1714
  } else {
1720
1715
  renderHexGrid(
1721
1716
  ctx,
@@ -3102,7 +3097,7 @@ var RenderLoop = class {
3102
3097
  const gridCacheHit = this.gridCacheCanvas !== null && currentZoom === this.gridCacheZoom && currentCamX === this.gridCacheCamX && currentCamY === this.gridCacheCamY && cssWidth === this.gridCacheWidth && cssHeight === this.gridCacheHeight && gridRef === this.lastGridRef;
3103
3098
  if (gridCacheHit) {
3104
3099
  ctx.save();
3105
- ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
3100
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
3106
3101
  ctx.drawImage(this.gridCacheCanvas, 0, 0);
3107
3102
  ctx.restore();
3108
3103
  } else {
@@ -3119,7 +3114,7 @@ var RenderLoop = class {
3119
3114
  }
3120
3115
  gc.restore();
3121
3116
  ctx.save();
3122
- ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
3117
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
3123
3118
  ctx.drawImage(this.gridCacheCanvas, 0, 0);
3124
3119
  ctx.restore();
3125
3120
  } else {
@@ -3222,7 +3217,10 @@ var Viewport = class {
3222
3217
  this.renderer = new ElementRenderer();
3223
3218
  this.renderer.setStore(this.store);
3224
3219
  this.renderer.setCamera(this.camera);
3225
- this.renderer.setOnImageLoad(() => this.requestRender());
3220
+ this.renderer.setOnImageLoad(() => {
3221
+ this.renderLoop.markAllLayersDirty();
3222
+ this.requestRender();
3223
+ });
3226
3224
  this.noteEditor = new NoteEditor();
3227
3225
  this.noteEditor.setOnStop((id) => this.onTextEditStop(id));
3228
3226
  this.history = new HistoryStack();
@@ -4838,7 +4836,7 @@ var UpdateLayerCommand = class {
4838
4836
  };
4839
4837
 
4840
4838
  // src/index.ts
4841
- var VERSION = "0.8.8";
4839
+ var VERSION = "0.8.11";
4842
4840
  export {
4843
4841
  AddElementCommand,
4844
4842
  ArrowTool,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fieldnotes/core",
3
- "version": "0.8.9",
3
+ "version": "0.8.11",
4
4
  "description": "Vanilla TypeScript infinite canvas engine",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",