@scrawl-board/board 0.1.0-beta.1 → 0.1.0-beta.2

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/core.js CHANGED
@@ -1,4 +1,4 @@
1
- //#region src/core-internal/assets.ts
1
+ //#region src/core/shapes/assets.ts
2
2
  var ASSET_REF_PATTERN = /^asset:[a-z0-9](?:[a-z0-9.-]{0,61}[a-z0-9])?:[A-Za-z0-9._~-]+$/;
3
3
  /** Hard ceiling on a reference's own wire length — independent of any resource limit below. */
4
4
  var ASSET_REF_MAX_BYTES = 512;
@@ -38,7 +38,7 @@ function clampAssetCacheBytes(value) {
38
38
  return Math.min(ASSET_CACHE_BYTES_MAX, Math.max(ASSET_CACHE_BYTES_MIN, Math.floor(value)));
39
39
  }
40
40
  //#endregion
41
- //#region src/core-internal/identifiers.ts
41
+ //#region src/core/document/identifiers.ts
42
42
  function documentId(value) {
43
43
  if (!value) throw new TypeError("DocumentId cannot be empty");
44
44
  return value;
@@ -48,7 +48,7 @@ function strokeId(value) {
48
48
  return value;
49
49
  }
50
50
  //#endregion
51
- //#region src/document-schema.ts
51
+ //#region src/core/document/document-schema.ts
52
52
  var CURRENT_DOCUMENT_SCHEMA_VERSION = 1;
53
53
  var DocumentRecoveryError = class extends Error {
54
54
  constructor(code, message, originalBytes, path) {
@@ -256,7 +256,7 @@ function validation(message, path) {
256
256
  return new DocumentRecoveryError("DOCUMENT_VALIDATION_FAILED", message, void 0, path);
257
257
  }
258
258
  //#endregion
259
- //#region src/core-internal/affine2d.ts
259
+ //#region src/core/shapes/affine2d.ts
260
260
  var IDENTITY = [
261
261
  1,
262
262
  0,
@@ -340,7 +340,7 @@ function avgScale(m) {
340
340
  return (Math.hypot(m[0], m[1]) + Math.hypot(m[2], m[3])) / 2;
341
341
  }
342
342
  //#endregion
343
- //#region src/core-internal/boardSearch.ts
343
+ //#region src/core/document/boardSearch.ts
344
344
  function hay(s) {
345
345
  return s.toLowerCase();
346
346
  }
@@ -405,7 +405,7 @@ function searchBoard(query, board) {
405
405
  return hits;
406
406
  }
407
407
  //#endregion
408
- //#region src/core-internal/types.ts
408
+ //#region src/core/shapes/types.ts
409
409
  /** Erasure level at which a point counts as fully erased. */
410
410
  var ERASE_THRESHOLD = .95;
411
411
  function cloneStroke(stroke) {
@@ -481,7 +481,7 @@ function cloneImage(img) {
481
481
  return { ...img };
482
482
  }
483
483
  //#endregion
484
- //#region src/core-internal/clusterStore.ts
484
+ //#region src/core/document/clusterStore.ts
485
485
  /** A stroke joins a cluster last written to within this window at full reach. */
486
486
  var RECENT_MS = 8e3;
487
487
  /** Older clusters are still joinable, at half the gap threshold. */
@@ -652,7 +652,7 @@ function clamp$1(v, lo, hi) {
652
652
  return Math.min(hi, Math.max(lo, v));
653
653
  }
654
654
  //#endregion
655
- //#region src/core-internal/extensionTypes.ts
655
+ //#region src/core/shapes/extensionTypes.ts
656
656
  function cloneCustomObject(object) {
657
657
  return {
658
658
  ...object,
@@ -662,7 +662,7 @@ function cloneCustomObject(object) {
662
662
  };
663
663
  }
664
664
  //#endregion
665
- //#region src/core-internal/kitchenTimer.ts
665
+ //#region src/core/shapes/kitchenTimer.ts
666
666
  var TIMER_DEFAULT_SIZE = 12;
667
667
  var TIMER_DEFAULT_DURATION_MS = 300 * 1e3;
668
668
  var TIMER_PRESETS_MS = [
@@ -719,7 +719,7 @@ function formatTimer(ms) {
719
719
  return `${Math.floor(total / 60)}:${(total % 60).toString().padStart(2, "0")}`;
720
720
  }
721
721
  //#endregion
722
- //#region src/core-internal/itemLock.ts
722
+ //#region src/core/shapes/itemLock.ts
723
723
  /**
724
724
  * Apply or clear a lock in place. Unlock always drops the holder so a stale
725
725
  * name cannot linger on an unlocked item.
@@ -756,7 +756,7 @@ function serializeLock(item) {
756
756
  };
757
757
  }
758
758
  //#endregion
759
- //#region src/core-internal/document.ts
759
+ //#region src/core/document/document.ts
760
760
  /**
761
761
  * The one place a live Stroke becomes its wire representation — in
762
762
  * particular, points collapse from {x,y,pressure,erase?} objects into
@@ -1315,7 +1315,7 @@ function computeBBox(stroke) {
1315
1315
  return world;
1316
1316
  }
1317
1317
  //#endregion
1318
- //#region src/core-internal/commands.ts
1318
+ //#region src/core/commands/commands.ts
1319
1319
  /** One drawing action — a marker stroke, or a shape's strokes as one unit. */
1320
1320
  var AddStrokesCommand = class {
1321
1321
  constructor(strokes) {
@@ -1614,7 +1614,7 @@ var LockItemsCommand = class {
1614
1614
  }
1615
1615
  };
1616
1616
  //#endregion
1617
- //#region src/core-internal/history.ts
1617
+ //#region src/core/history/history.ts
1618
1618
  var LIMIT = 200;
1619
1619
  var History = class {
1620
1620
  constructor(doc) {
@@ -1675,7 +1675,7 @@ var History = class {
1675
1675
  }
1676
1676
  };
1677
1677
  //#endregion
1678
- //#region src/core-internal/ops.ts
1678
+ //#region src/core/events/ops.ts
1679
1679
  var ADDED = [
1680
1680
  ["added", "strokes"],
1681
1681
  ["notesAdded", "notes"],
@@ -1729,7 +1729,7 @@ function changeToOps(change, restoring = false) {
1729
1729
  return ops;
1730
1730
  }
1731
1731
  //#endregion
1732
- //#region src/core-internal/ribbonEdges.ts
1732
+ //#region src/core/shapes/ribbonEdges.ts
1733
1733
  var MIN_WIDTH_FACTOR = .35;
1734
1734
  var END_TAPER = .55;
1735
1735
  function ribbonEdges(points, baseWidth) {
@@ -1761,7 +1761,7 @@ function ribbonEdges(points, baseWidth) {
1761
1761
  return out;
1762
1762
  }
1763
1763
  //#endregion
1764
- //#region src/core-internal/spatialIndex.ts
1764
+ //#region src/core/document/spatialIndex.ts
1765
1765
  var CELL = 8;
1766
1766
  var SpatialIndex = class {
1767
1767
  constructor(doc) {
@@ -1834,7 +1834,7 @@ function cellsOf(box) {
1834
1834
  return keys;
1835
1835
  }
1836
1836
  //#endregion
1837
- //#region src/core-internal/stamps.ts
1837
+ //#region src/core/shapes/stamps.ts
1838
1838
  var STAMP_SIZE = 6;
1839
1839
  var STAMPS = [
1840
1840
  {
@@ -1883,7 +1883,7 @@ function isStampKind(value) {
1883
1883
  return typeof value === "string" && STAMPS.some((s) => s.kind === value);
1884
1884
  }
1885
1885
  //#endregion
1886
- //#region src/core-internal/presence.ts
1886
+ //#region src/collaboration/presence/presence.ts
1887
1887
  /** Keep beacons clear of typical chrome at the top and bottom of the Board. */
1888
1888
  var BEACON_INSET = {
1889
1889
  top: 72,
@@ -1919,7 +1919,7 @@ function clamp(value, min, max) {
1919
1919
  return Math.min(max, Math.max(min, value));
1920
1920
  }
1921
1921
  //#endregion
1922
- //#region src/core-internal/svg.ts
1922
+ //#region src/persistence/serialization/svg.ts
1923
1923
  /** Matches the key light used by the board shader and note shadows. */
1924
1924
  var LIGHT = {
1925
1925
  x: -.25,
package/dist/index.d.ts CHANGED
@@ -1305,6 +1305,27 @@ interface BoardView {
1305
1305
  y: number;
1306
1306
  zoom: number;
1307
1307
  }
1308
+ /**
1309
+ * The rendered board surface's color, reference grid, and shape stroke
1310
+ * width — the subset of {@link ScrawlTheme} that reaches the rendering
1311
+ * engine directly (everything else is UI-chrome-only, applied as CSS). Any
1312
+ * field left unset keeps its current value.
1313
+ */
1314
+ interface BoardThemeOptions {
1315
+ /** The board/canvas background color — distinct from UI chrome panels. */
1316
+ surface?: string;
1317
+ /** `"flat"` (default): a plain, uniform board surface. `"textured"`: a subtle "melamine" micro-noise + satin sheen, like a physical whiteboard. */
1318
+ surfaceTexture?: "flat" | "textured";
1319
+ /** `"none"` (default) keeps the board a plain surface; `"line"`/`"dot"` draw a zoom-adaptive reference grid. */
1320
+ gridMode?: "none" | "line" | "dot";
1321
+ gridColor?: string;
1322
+ /** Grid spacing in board units at 100% zoom. Ignored when `gridMode` is `"none"`. */
1323
+ gridSpacing?: number;
1324
+ /** On-screen grid line/dot width in CSS pixels — stays this width at any zoom, since the grid is a reference aid, not content. */
1325
+ gridLineWidth?: number;
1326
+ /** Shape (rectangle, ellipse, arrow, ...) border width, in board units — scales with zoom like ink, since it's part of the drawn content. */
1327
+ shapeStrokeWidth?: number;
1328
+ }
1308
1329
  /**
1309
1330
  * A Host-owned comment, summarized for Board-side search and marker
1310
1331
  * rendering. Comments are not Document content — they carry no undo
@@ -1515,12 +1536,7 @@ interface CreateBoardControllerOptions {
1515
1536
  * changes via `boardTheme.set` below — a headless/browser-tier Host that
1516
1537
  * doesn't use the React theme system can set this directly instead.
1517
1538
  */
1518
- boardTheme?: {
1519
- surface?: string;
1520
- gridMode?: "none" | "line" | "dot";
1521
- gridColor?: string;
1522
- gridSpacing?: number;
1523
- };
1539
+ boardTheme?: BoardThemeOptions;
1524
1540
  }
1525
1541
  interface BoardController {
1526
1542
  readonly document: ReadonlyBoardDocument;
@@ -1547,13 +1563,8 @@ interface BoardController {
1547
1563
  redo(): void;
1548
1564
  };
1549
1565
  readonly boardTheme: {
1550
- /** Live update of the board surface color/grid — the controller's identity stays fixed across theme changes. */
1551
- set(theme: {
1552
- surface?: string;
1553
- gridMode?: "none" | "line" | "dot";
1554
- gridColor?: string;
1555
- gridSpacing?: number;
1556
- }): void;
1566
+ /** Live update of the board surface color/grid/shape-stroke-width — the controller's identity stays fixed across theme changes. */
1567
+ set(theme: BoardThemeOptions): void;
1557
1568
  };
1558
1569
  readonly view: {
1559
1570
  fit(): void;
@@ -1658,37 +1669,75 @@ declare function createLocalBoard(options: LocalBoardOptions): LocalBoard;
1658
1669
  type ScrawlThemePreset = "light" | "dark";
1659
1670
  type ScrawlDensity = "comfortable" | "compact";
1660
1671
  type ScrawlGridMode = "none" | "line" | "dot";
1672
+ type ScrawlSurfaceTexture = "flat" | "textured";
1673
+ /**
1674
+ * Every field is optional — anything you don't set falls back to the
1675
+ * chosen `preset` ("light" or "dark", see {@link resolveScrawlTheme}).
1676
+ * Overrides are semantic, board-local runtime configuration: they never
1677
+ * get written into the Document or into exports, so switching themes is
1678
+ * always non-destructive.
1679
+ */
1661
1680
  interface ScrawlTheme {
1681
+ /** UI chrome background — toolbar/panel base surface. Distinct from `boardSurface` (the canvas itself). */
1662
1682
  surface?: string;
1683
+ /** UI chrome background, one step up from `surface` — popovers, dropdowns, elevated panels. */
1663
1684
  surfaceRaised?: string;
1685
+ /** UI chrome background, one step down from `surface` — subtle fills, hover states. */
1664
1686
  surfaceMuted?: string;
1687
+ /** Primary UI text color. Checked for contrast against `surface`. */
1665
1688
  text?: string;
1689
+ /** Secondary/de-emphasized UI text color. Checked for contrast against `surface`. */
1666
1690
  textMuted?: string;
1691
+ /** Borders and dividers between UI chrome elements. */
1667
1692
  edge?: string;
1693
+ /** Focus ring color. Checked for contrast against `surface`. */
1668
1694
  focus?: string;
1695
+ /** Selection highlight color (e.g. selected list items, not board object selection). */
1669
1696
  selection?: string;
1697
+ /** Destructive/error state color (delete confirmations, error text). */
1670
1698
  danger?: string;
1699
+ /** Warning state color. */
1671
1700
  warning?: string;
1701
+ /** Success/confirmation state color. */
1672
1702
  success?: string;
1703
+ /** Font stack for UI chrome (toolbar labels, menus, dialogs). */
1673
1704
  uiFontFamily?: string;
1705
+ /** Font stack for board content and data (e.g. table cell text). */
1674
1706
  dataFontFamily?: string;
1707
+ /** Base UI font size in px. Range: 12–24. */
1675
1708
  baseFontSize?: number;
1709
+ /** Regular UI font weight. Range: 300–900. */
1676
1710
  regularWeight?: number;
1711
+ /** Emphasized UI font weight (headings, active states). Range: 300–900. */
1677
1712
  strongWeight?: number;
1713
+ /** Corner radius for small controls (buttons, inputs) in px. Range: 0–32. */
1678
1714
  controlRadius?: number;
1715
+ /** Corner radius for panels/dialogs in px. Range: 0–32. */
1679
1716
  panelRadius?: number;
1717
+ /** CSS `box-shadow` value for subtle elevation (e.g. toolbar). */
1680
1718
  elevationLow?: string;
1719
+ /** CSS `box-shadow` value for prominent elevation (e.g. modals). */
1681
1720
  elevationHigh?: string;
1721
+ /** UI transition duration in ms. Range: 0–500. */
1682
1722
  motionDuration?: number;
1723
+ /** CSS easing function for UI transitions. */
1683
1724
  motionEasing?: string;
1725
+ /** UI chrome spacing/sizing scale. */
1684
1726
  density?: ScrawlDensity;
1685
1727
  /** The rendered board/canvas surface color — distinct from `surface` (UI chrome panels). */
1686
1728
  boardSurface?: string;
1729
+ /** `"flat"` (default): a plain, uniform board surface. `"textured"`: a subtle "melamine" micro-noise + satin sheen, like a physical whiteboard. */
1730
+ boardSurfaceTexture?: ScrawlSurfaceTexture;
1687
1731
  /** `"none"` (default) keeps the board a plain surface; `"line"`/`"dot"` draw a zoom-adaptive reference grid. */
1688
1732
  gridMode?: ScrawlGridMode;
1733
+ /** Grid line/dot color. Ignored when `gridMode` is `"none"`. */
1689
1734
  gridColor?: string;
1690
1735
  /** Grid spacing in board units at 100% zoom. Ignored when `gridMode` is `"none"`. */
1691
1736
  gridSpacing?: number;
1737
+ /** On-screen grid line/dot width in CSS pixels. Range: 0.5–8. A reference aid, so unlike shape/ink strokes it stays this width at any zoom. */
1738
+ gridLineWidth?: number;
1739
+ /** Shape (rectangle, ellipse, arrow, ...) border width, in board units. Range: 0.01–5. Scales with zoom like ink, since it's part of the drawn content. */
1740
+ shapeStrokeWidth?: number;
1692
1741
  }
1693
1742
  type ResolvedScrawlTheme = Required<ScrawlTheme>;
1694
1743
  interface ScrawlThemeDiagnostic {
@@ -1833,4 +1882,4 @@ type ScrawlBoardProps = {
1833
1882
  declare function ScrawlBoard({ documentId, initialDocument, onReady, className, style }: ScrawlBoardProps): react.JSX.Element;
1834
1883
 
1835
1884
  export { ASSET_CACHE_BYTES_DEFAULT, ASSET_CACHE_BYTES_MAX, ASSET_CACHE_BYTES_MIN, ASSET_EXPORT_MAX_DECODED_MEGAPIXELS, ASSET_EXPORT_MAX_ENCODED_BYTES, ASSET_MAX_CONCURRENT_RESOLUTIONS, ASSET_MAX_DECODED_MEGAPIXELS, ASSET_MAX_DIMENSION_PX, ASSET_MAX_ENCODED_BYTES, ASSET_REF_MAX_BYTES, ASSET_REF_PATTERN, AddImageCommand, AddNoteCommand, AddStrokesCommand, AddTableCommand, AddTextCommand, AddTimerCommand, AssetResolutionError, BEACON_INSET, BoardDocument, CURRENT_DOCUMENT_SCHEMA_VERSION, ClusterStore, DefaultBoardChrome, DeleteImageCommand, DeleteNoteCommand, DeleteStrokesCommand, DeleteTableCommand, DeleteTextCommand, DeleteTimerCommand, DocumentRecoveryError, END_TAPER, ERASE_THRESHOLD, EraseCommand, FOG_COLOR, HIGHLIGHT_COLORS, History, IDENTITY, INK_COLORS, InlineEditors, LockItemsCommand, MIN_WIDTH_FACTOR, MultiplayerCursors, NOTE_COLORS, NOTE_DEFAULT_SIZE, NOTE_DEFAULT_Z, NOTE_MAX_Z, NOTE_MIN_Z, NOTE_PEEL_STEP, SDK_DEVELOPMENT_VERSION, SDK_PACKAGE_NAME, STAMPS, STAMP_SIZE, SUPPORTED_ASSET_MEDIA_TYPES, Scrawl, ScrawlBoard, ScrawlCanvas, ScrawlDefaultUI, ScrawlPortal, ScrawlProvider, SpatialIndex, StyleShelf, TABLE_DEFAULT_CELL_HEIGHT, TABLE_DEFAULT_CELL_WIDTH, TABLE_DEFAULT_FONT_SIZE, TEXT_DEFAULT_SIZE, TIMER_DEFAULT_DURATION_MS, TIMER_DEFAULT_SIZE, TIMER_PRESETS_MS, TransformCommand, UpdateImageCommand, UpdateNoteCommand, UpdateTableCommand, UpdateTextCommand, UpdateTimerCommand, apply, applyItemLock, assetRef, avgScale, canUnlockItem, changeToOps, clampAssetCacheBytes, cloneCustomObject, cloneImage, cloneNote, cloneStroke, cloneTable, cloneText, cloneTimer, createBoardController, createLocalBoard, documentId, documentToSVG, formatTimer, invert, isAssetRef, isIdentity, isStampKind, loadDocumentBytes, measureTable, measureTextBlock, migrateDocument, mul, pauseTimer, placePresenceBeacon, resolveScrawlTheme, ribbonEdges, rotationAbout, scalingAbout, scrawlThemePresets, searchBoard, serializeDocument, serializeLock, serializeStroke, setTimerDuration, stampDataUrl, startTimer, strokeId, timerExpired, timerRemaining, toggleTimer, translation, useScrawlController, useScrawlSnapshot, useScrawlTheme, validateScrawlTheme };
1836
- export type { ApplyOpsResult, AssetDiagnostic, AssetIngestRequest, AssetIngestResult, AssetIngestor, AssetKind, AssetPurpose, AssetRef, AssetResolutionErrorCode, AssetResolveRequest, AssetResolveResult, AssetResolver, BBox, BoardController, BoardControllerError, BoardEventMap, BoardKeyInput, BoardObject, BoardObjectInput, BoardObjectPatch, BoardPoint, BoardPointerInput, BoardScene, BoardSlotProps, BoardSnapshot, BoardStroke, BoardStyle, BoardView, BuiltInTool, ClusterIdFactory, CollaborationAdapter, CollaborationReceiver, CollaborationSession, CollaborationSnapshot, CollaboratorIdentity, Command, CommandKind, CommentMarker, ControllerOp, CreateBoardControllerOptions, CurrentSerializedDocument, CurrentSerializedStroke, CustomBoardObject, CustomObjectAddInput, CustomObjectDefinition, CustomTool, CustomToolDefinition, DeepReadonly, DefaultBoardChromeProps, DefaultUIRegion, DefaultUISlot, DefaultUISlots, DialogSlotProps, DocumentChange, DocumentContext, DocumentId, DocumentLoadResult, DocumentRecoveryCode, ExtensionCommand, ExtensionDiagnostic, ExtensionHitResult, ExtensionId, ExtensionRequirement, ImageBlock, InlineEditorsProps, InputModifiers, JsonObject, JsonValue, KitchenTimer, LoadResult, LocalBoard, LocalBoardOptions, LocalBoardSnapshot, LockHolder, LockTarget, Lockable, Mat2x3, MultiplayerCursorsProps, NoteVote, ObjectDescribeContext, ObjectIntent, ObjectType, Op, OpCollection, PersistenceAdapter, PersistenceDiagnostic, PersistenceSnapshot, PresenceCursor, PresencePlacement, PresenceUser, PresenceView, QueryableBoardObject, ReadonlyBoardDocument, ReadonlyCustomObject, ReadonlyDocumentChange, RibbonEdgePoint, SceneEllipse, SceneGroup, SceneImage, ScenePath, SceneRect, SceneText, ScrawlBoardProps, ScrawlCanvasProps, ScrawlDefaultUIProps, ScrawlDensity, ScrawlExtension, ScrawlGridMode, ScrawlProps, ScrawlProviderProps, ScrawlResolvedTheme, ScrawlTheme, ScrawlThemeDiagnostic, ScrawlThemePreset, ScreenPoint, ScreenRect, SearchHit, SearchHitKind, SearchableBoard, SearchableComment, SerializedBoardDocument, SerializedBoardStroke, SerializedPoint, SerializedStroke, StampKind, StickyNote, Stroke, StrokeId, StrokePoint, StrokeTool, StyleShelfProps, SupportedAssetMediaType, TableBlock, TextBlock, ToolCancelReason, ToolCapabilities, ToolCursor, ToolId, ViewportInset };
1885
+ export type { ApplyOpsResult, AssetDiagnostic, AssetIngestRequest, AssetIngestResult, AssetIngestor, AssetKind, AssetPurpose, AssetRef, AssetResolutionErrorCode, AssetResolveRequest, AssetResolveResult, AssetResolver, BBox, BoardController, BoardControllerError, BoardEventMap, BoardKeyInput, BoardObject, BoardObjectInput, BoardObjectPatch, BoardPoint, BoardPointerInput, BoardScene, BoardSlotProps, BoardSnapshot, BoardStroke, BoardStyle, BoardThemeOptions, BoardView, BuiltInTool, ClusterIdFactory, CollaborationAdapter, CollaborationReceiver, CollaborationSession, CollaborationSnapshot, CollaboratorIdentity, Command, CommandKind, CommentMarker, ControllerOp, CreateBoardControllerOptions, CurrentSerializedDocument, CurrentSerializedStroke, CustomBoardObject, CustomObjectAddInput, CustomObjectDefinition, CustomTool, CustomToolDefinition, DeepReadonly, DefaultBoardChromeProps, DefaultUIRegion, DefaultUISlot, DefaultUISlots, DialogSlotProps, DocumentChange, DocumentContext, DocumentId, DocumentLoadResult, DocumentRecoveryCode, ExtensionCommand, ExtensionDiagnostic, ExtensionHitResult, ExtensionId, ExtensionRequirement, ImageBlock, InlineEditorsProps, InputModifiers, JsonObject, JsonValue, KitchenTimer, LoadResult, LocalBoard, LocalBoardOptions, LocalBoardSnapshot, LockHolder, LockTarget, Lockable, Mat2x3, MultiplayerCursorsProps, NoteVote, ObjectDescribeContext, ObjectIntent, ObjectType, Op, OpCollection, PersistenceAdapter, PersistenceDiagnostic, PersistenceSnapshot, PresenceCursor, PresencePlacement, PresenceUser, PresenceView, QueryableBoardObject, ReadonlyBoardDocument, ReadonlyCustomObject, ReadonlyDocumentChange, RibbonEdgePoint, SceneEllipse, SceneGroup, SceneImage, ScenePath, SceneRect, SceneText, ScrawlBoardProps, ScrawlCanvasProps, ScrawlDefaultUIProps, ScrawlDensity, ScrawlExtension, ScrawlGridMode, ScrawlProps, ScrawlProviderProps, ScrawlResolvedTheme, ScrawlSurfaceTexture, ScrawlTheme, ScrawlThemeDiagnostic, ScrawlThemePreset, ScreenPoint, ScreenRect, SearchHit, SearchHitKind, SearchableBoard, SearchableComment, SerializedBoardDocument, SerializedBoardStroke, SerializedPoint, SerializedStroke, StampKind, StickyNote, Stroke, StrokeId, StrokePoint, StrokeTool, StyleShelfProps, SupportedAssetMediaType, TableBlock, TextBlock, ToolCancelReason, ToolCapabilities, ToolCursor, ToolId, ViewportInset };