@dwelle/excalidraw 0.3.19 → 0.3.23

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.
Files changed (51) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README_NEXT.md +2 -17
  3. package/dist/excalidraw-assets/image-0db17e06143a31f9772b.js +1 -0
  4. package/dist/excalidraw-assets/image-6f8d3b9873832b5f7a67.js +1 -0
  5. package/dist/excalidraw-assets/image-8e0c265e832504f62477.js +1 -0
  6. package/dist/excalidraw-assets/image-9592159c56d563857679.js +1 -0
  7. package/dist/excalidraw-assets/image-98a7b39bd21998c69c4b.js +1 -0
  8. package/dist/excalidraw-assets/image-af02967a8a4c328f2713.js +1 -0
  9. package/dist/excalidraw-assets/image-bd5991c772b4867c8d27.js +1 -0
  10. package/dist/excalidraw-assets/image-c198828284ec0dba28dc.js +1 -0
  11. package/dist/excalidraw-assets/image-eac20119cbc2ceb81523.js +1 -0
  12. package/dist/excalidraw-assets/vendor-64ea3ed78bc76a895e61.js +2 -0
  13. package/dist/excalidraw-assets/vendor-64ea3ed78bc76a895e61.js.LICENSE.txt +14 -0
  14. package/dist/excalidraw-assets/vendor-e5c6cd57013e8e575a61.js +1 -0
  15. package/dist/excalidraw-assets-dev/image-469d5bd946743969995a.js +42 -0
  16. package/dist/excalidraw.development.js +39 -39
  17. package/dist/excalidraw.production.min.js +1 -2
  18. package/package.json +8 -5
  19. package/types/appState.d.ts +5 -5
  20. package/types/components/CheckboxItem.d.ts +1 -1
  21. package/types/components/LibraryMenuItems.d.ts +1 -1
  22. package/types/components/LibraryUnit.d.ts +1 -1
  23. package/types/components/Tooltip.d.ts +2 -1
  24. package/types/constants.d.ts +4 -0
  25. package/types/data/blob.d.ts +5 -1
  26. package/types/data/types.d.ts +2 -1
  27. package/types/element/index.d.ts +0 -3
  28. package/types/element/mutateElement.d.ts +1 -1
  29. package/types/element/newElement.d.ts +1 -1
  30. package/types/element/types.d.ts +2 -0
  31. package/types/packages/excalidraw/dist/excalidraw-assets/image-0db17e06143a31f9772b.d.ts +0 -0
  32. package/types/packages/excalidraw/dist/excalidraw-assets/image-6f8d3b9873832b5f7a67.d.ts +0 -0
  33. package/types/packages/excalidraw/dist/excalidraw-assets/image-8e0c265e832504f62477.d.ts +0 -0
  34. package/types/packages/excalidraw/dist/excalidraw-assets/image-9592159c56d563857679.d.ts +0 -0
  35. package/types/packages/excalidraw/dist/excalidraw-assets/image-98a7b39bd21998c69c4b.d.ts +0 -0
  36. package/types/packages/excalidraw/dist/excalidraw-assets/image-af02967a8a4c328f2713.d.ts +0 -0
  37. package/types/packages/excalidraw/dist/excalidraw-assets/image-bd5991c772b4867c8d27.d.ts +0 -0
  38. package/types/packages/excalidraw/dist/excalidraw-assets/image-c198828284ec0dba28dc.d.ts +0 -0
  39. package/types/packages/excalidraw/dist/excalidraw-assets/image-eac20119cbc2ceb81523.d.ts +0 -0
  40. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-64ea3ed78bc76a895e61.d.ts +0 -0
  41. package/types/packages/excalidraw/dist/excalidraw-assets/vendor-e5c6cd57013e8e575a61.d.ts +0 -0
  42. package/types/packages/excalidraw/dist/excalidraw-assets-dev/image-469d5bd946743969995a.d.ts +0 -0
  43. package/types/packages/excalidraw/env.d.ts +1 -0
  44. package/types/packages/excalidraw/index.d.ts +1 -1
  45. package/types/packages/excalidraw/webpack.dev.config.d.ts +1 -1
  46. package/types/packages/excalidraw/webpack.prod.config.d.ts +0 -2
  47. package/types/packages/utils.d.ts +3 -2
  48. package/types/renderer/renderElement.d.ts +4 -4
  49. package/types/renderer/renderScene.d.ts +4 -9
  50. package/types/scene/types.d.ts +15 -8
  51. package/types/utils.d.ts +9 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dwelle/excalidraw",
3
- "version": "0.3.19",
3
+ "version": "0.3.23",
4
4
  "main": "main.js",
5
5
  "types": "types/packages/excalidraw/index.d.ts",
6
6
  "files": [
@@ -40,9 +40,9 @@
40
40
  "@babel/core": "7.16.0",
41
41
  "@babel/plugin-transform-arrow-functions": "7.16.0",
42
42
  "@babel/plugin-transform-async-to-generator": "7.16.0",
43
- "@babel/plugin-transform-runtime": "7.16.0",
43
+ "@babel/plugin-transform-runtime": "7.16.4",
44
44
  "@babel/plugin-transform-typescript": "7.16.1",
45
- "@babel/preset-env": "7.16.0",
45
+ "@babel/preset-env": "7.16.4",
46
46
  "@babel/preset-react": "7.16.0",
47
47
  "@babel/preset-typescript": "7.16.0",
48
48
  "autoprefixer": "10.4.0",
@@ -51,13 +51,13 @@
51
51
  "cross-env": "7.0.3",
52
52
  "css-loader": "6.5.1",
53
53
  "file-loader": "6.2.0",
54
- "mini-css-extract-plugin": "2.4.4",
54
+ "mini-css-extract-plugin": "2.4.5",
55
55
  "postcss-loader": "6.2.0",
56
56
  "sass-loader": "12.3.0",
57
57
  "terser-webpack-plugin": "5.2.5",
58
58
  "ts-loader": "9.2.6",
59
59
  "typescript": "4.5.2",
60
- "webpack": "5.64.0",
60
+ "webpack": "5.64.3",
61
61
  "webpack-bundle-analyzer": "4.5.0",
62
62
  "webpack-cli": "4.9.1"
63
63
  },
@@ -68,5 +68,8 @@
68
68
  "build:umd": "cross-env NODE_ENV=production webpack --config webpack.prod.config.js && cross-env NODE_ENV=development webpack --config webpack.dev.config.js && yarn gen:types",
69
69
  "build:umd:withAnalyzer": "cross-env NODE_ENV=production ANALYZER=true webpack --config webpack.prod.config.js",
70
70
  "pack": "yarn build:umd && yarn pack"
71
+ },
72
+ "dependencies": {
73
+ "dotenv": "10.0.0"
71
74
  }
72
75
  }
@@ -1,7 +1,9 @@
1
1
  import { AppState, NormalizedZoomValue } from "./types";
2
2
  export declare const getDefaultAppState: () => Omit<AppState, "offsetTop" | "offsetLeft" | "width" | "height">;
3
3
  export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>) => {
4
- theme?: string | undefined;
4
+ scrollX?: number | undefined;
5
+ scrollY?: number | undefined;
6
+ viewBackgroundColor?: string | undefined;
5
7
  zoom?: Readonly<{
6
8
  value: NormalizedZoomValue;
7
9
  translation: Readonly<{
@@ -9,8 +11,8 @@ export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>)
9
11
  y: number;
10
12
  }>;
11
13
  }> | undefined;
12
- scrollX?: number | undefined;
13
- scrollY?: number | undefined;
14
+ shouldCacheIgnoreZoom?: boolean | undefined;
15
+ theme?: string | undefined;
14
16
  name?: string | undefined;
15
17
  elementType?: "line" | "selection" | "rectangle" | "diamond" | "ellipse" | "image" | "text" | "arrow" | "freedraw" | undefined;
16
18
  elementLocked?: boolean | undefined;
@@ -32,7 +34,6 @@ export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>)
32
34
  currentItemStartArrowhead?: import("./element/types").Arrowhead | null | undefined;
33
35
  currentItemEndArrowhead?: import("./element/types").Arrowhead | null | undefined;
34
36
  currentItemLinearStrokeSharpness?: import("./element/types").StrokeSharpness | undefined;
35
- viewBackgroundColor?: string | undefined;
36
37
  cursorButton?: "up" | "down" | undefined;
37
38
  scrolledOutside?: boolean | undefined;
38
39
  openMenu?: "canvas" | "shape" | null | undefined;
@@ -43,7 +44,6 @@ export declare const clearAppStateForLocalStorage: (appState: Partial<AppState>)
43
44
  previousSelectedElementIds?: {
44
45
  [id: string]: boolean;
45
46
  } | undefined;
46
- shouldCacheIgnoreZoom?: boolean | undefined;
47
47
  zenModeEnabled?: boolean | undefined;
48
48
  gridSize?: number | null | undefined;
49
49
  selectedGroupIds?: {
@@ -2,6 +2,6 @@ import React from "react";
2
2
  import "./CheckboxItem.scss";
3
3
  export declare const CheckboxItem: React.FC<{
4
4
  checked: boolean;
5
- onChange: (checked: boolean) => void;
5
+ onChange: (checked: boolean, event: React.MouseEvent) => void;
6
6
  className?: string;
7
7
  }>;
@@ -15,7 +15,7 @@ declare const LibraryMenuItems: ({ libraryItems, onRemoveFromLibrary, onAddToLib
15
15
  library: Library;
16
16
  id: string;
17
17
  selectedItems: LibraryItem["id"][];
18
- onToggle: (id: LibraryItem["id"]) => void;
18
+ onToggle: (id: LibraryItem["id"], event: React.MouseEvent) => void;
19
19
  onPublish: () => void;
20
20
  resetLibrary: () => void;
21
21
  }) => JSX.Element;
@@ -8,5 +8,5 @@ export declare const LibraryUnit: ({ id, elements, files, isPending, onClick, se
8
8
  isPending?: boolean | undefined;
9
9
  onClick: () => void;
10
10
  selected: boolean;
11
- onToggle: (id: string) => void;
11
+ onToggle: (id: string, event: React.MouseEvent) => void;
12
12
  }) => JSX.Element;
@@ -4,6 +4,7 @@ declare type TooltipProps = {
4
4
  children: React.ReactNode;
5
5
  label: string;
6
6
  long?: boolean;
7
+ style?: React.CSSProperties;
7
8
  };
8
- export declare const Tooltip: ({ children, label, long }: TooltipProps) => JSX.Element;
9
+ export declare const Tooltip: ({ children, label, long, style, }: TooltipProps) => JSX.Element;
9
10
  export {};
@@ -130,3 +130,7 @@ export declare const ALLOWED_IMAGE_MIME_TYPES: readonly ["image/png", "image/jpe
130
130
  export declare const MAX_ALLOWED_FILE_BYTES: number;
131
131
  export declare const SVG_NS = "http://www.w3.org/2000/svg";
132
132
  export declare const ENCRYPTION_KEY_BITS = 128;
133
+ export declare const VERSIONS: {
134
+ readonly excalidraw: 2;
135
+ readonly excalidrawLibrary: 2;
136
+ };
@@ -18,7 +18,11 @@ export declare const canvasToBlob: (canvas: HTMLCanvasElement) => Promise<Blob>;
18
18
  export declare const generateIdFromFile: (file: File) => Promise<FileId>;
19
19
  export declare const getDataURL: (file: Blob | File) => Promise<DataURL>;
20
20
  export declare const dataURLToFile: (dataURL: DataURL, filename?: string) => File;
21
- export declare const resizeImageFile: (file: File, maxWidthOrHeight: number) => Promise<File>;
21
+ export declare const resizeImageFile: (file: File, opts: {
22
+ /** undefined indicates auto */
23
+ outputType?: typeof MIME_TYPES["jpg"];
24
+ maxWidthOrHeight: number;
25
+ }) => Promise<File>;
22
26
  export declare const SVGStringToFile: (SVGString: string, filename?: string) => File & {
23
27
  type: typeof MIME_TYPES.svg;
24
28
  };
@@ -1,6 +1,7 @@
1
1
  import { ExcalidrawElement } from "../element/types";
2
2
  import { AppState, BinaryFiles, LibraryItems, LibraryItems_v1 } from "../types";
3
3
  import type { cleanAppStateForExport } from "../appState";
4
+ import { VERSIONS } from "../constants";
4
5
  export interface ExportedDataState {
5
6
  type: string;
6
7
  version: number;
@@ -21,7 +22,7 @@ export interface ImportedDataState {
21
22
  }
22
23
  export interface ExportedLibraryData {
23
24
  type: string;
24
- version: 2;
25
+ version: typeof VERSIONS.excalidrawLibrary;
25
26
  source: string;
26
27
  libraryItems: LibraryItems;
27
28
  }
@@ -11,9 +11,6 @@ export { textWysiwyg } from "./textWysiwyg";
11
11
  export { redrawTextBoundingBox } from "./textElement";
12
12
  export { getPerfectElementSize, isInvisiblySmallElement, resizePerfectLineForNWHandler, getNormalizedDimensions, } from "./sizeHelpers";
13
13
  export { showSelectedShapeActions } from "./showSelectedShapeActions";
14
- export declare const getElementMap: (elements: readonly ExcalidrawElement[]) => {
15
- [key: string]: ExcalidrawElement;
16
- };
17
14
  export declare const getSceneVersion: (elements: readonly ExcalidrawElement[]) => number;
18
15
  export declare const getVisibleElements: (elements: readonly ExcalidrawElement[]) => readonly NonDeletedExcalidrawElement[];
19
16
  export declare const getNonDeletedElements: (elements: readonly ExcalidrawElement[]) => readonly NonDeletedExcalidrawElement[];
@@ -3,7 +3,7 @@ declare type ElementUpdate<TElement extends ExcalidrawElement> = Omit<Partial<TE
3
3
  export declare const mutateElement: <TElement extends Mutable<ExcalidrawElement>>(element: TElement, updates: ElementUpdate<TElement>, informMutation?: boolean) => TElement;
4
4
  export declare const newElementWith: <TElement extends ExcalidrawElement>(element: TElement, updates: ElementUpdate<TElement>) => TElement;
5
5
  /**
6
- * Mutates element and updates `version` & `versionNonce`.
6
+ * Mutates element, bumping `version`, `versionNonce`, and `updated`.
7
7
  *
8
8
  * NOTE: does not trigger re-render.
9
9
  */
@@ -1,6 +1,6 @@
1
1
  import { ExcalidrawElement, ExcalidrawImageElement, ExcalidrawTextElement, ExcalidrawLinearElement, ExcalidrawGenericElement, NonDeleted, TextAlign, GroupId, VerticalAlign, Arrowhead, ExcalidrawFreeDrawElement, FontFamilyValues } from "../element/types";
2
2
  import { AppState } from "../types";
3
- declare type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted">, "width" | "height" | "angle" | "groupIds" | "boundElementIds" | "seed" | "version" | "versionNonce">;
3
+ declare type ElementConstructorOpts = MarkOptional<Omit<ExcalidrawGenericElement, "id" | "type" | "isDeleted" | "updated">, "width" | "height" | "angle" | "groupIds" | "boundElementIds" | "seed" | "version" | "versionNonce">;
4
4
  export declare const newElement: (opts: {
5
5
  type: ExcalidrawGenericElement["type"];
6
6
  } & ElementConstructorOpts) => NonDeleted<ExcalidrawGenericElement>;
@@ -45,6 +45,8 @@ declare type _ExcalidrawElementBase = Readonly<{
45
45
  groupIds: readonly GroupId[];
46
46
  /** Ids of (linear) elements that are bound to this element. */
47
47
  boundElementIds: readonly ExcalidrawLinearElement["id"][] | null;
48
+ /** epoch (ms) timestamp of last element update */
49
+ updated: number;
48
50
  }>;
49
51
  export declare type ExcalidrawSelectionElement = _ExcalidrawElementBase & {
50
52
  type: "selection";
@@ -0,0 +1 @@
1
+ export function parseEnvVariables(filepath: any): {};
@@ -6,7 +6,7 @@ import { ExcalidrawAPIRefValue, ExcalidrawProps } from "../../types";
6
6
  declare type PublicExcalidrawProps = Omit<ExcalidrawProps, "forwardedRef">;
7
7
  declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<PublicExcalidrawProps & React.RefAttributes<ExcalidrawAPIRefValue>>>;
8
8
  export default _default;
9
- export { getSceneVersion, getElementMap, isInvisiblySmallElement, getNonDeletedElements, } from "../../element";
9
+ export { getSceneVersion, isInvisiblySmallElement, getNonDeletedElements, } from "../../element";
10
10
  export { defaultLang, languages } from "../../i18n";
11
11
  export { restore, restoreElements, restoreAppState } from "../../data/restore";
12
12
  export { exportToBlob, exportToCanvas, exportToSvg, serializeAsJSON, loadLibraryFromBlob, loadFromBlob, getFreeDrawSvgPath, } from "../../packages/utils";
@@ -64,7 +64,7 @@ export namespace optimization {
64
64
  }
65
65
  }
66
66
  }
67
- export const plugins: webpack.EvalSourceMapDevToolPlugin[];
67
+ export const plugins: (webpack.EvalSourceMapDevToolPlugin | webpack.DefinePlugin)[];
68
68
  export const externals: {
69
69
  react: {
70
70
  root: string;
@@ -64,8 +64,6 @@ export namespace module {
64
64
  })[];
65
65
  }
66
66
  export namespace optimization {
67
- const minimize: boolean;
68
- const minimizer: import("terser-webpack-plugin/types").default<import("terser").MinifyOptions>[];
69
67
  namespace splitChunks {
70
68
  const chunks: string;
71
69
  namespace cacheGroups {
@@ -4,13 +4,14 @@ declare type ExportOpts = {
4
4
  elements: readonly NonDeleted<ExcalidrawElement>[];
5
5
  appState?: Partial<Omit<AppState, "offsetTop" | "offsetLeft">>;
6
6
  files: BinaryFiles | null;
7
+ maxWidthOrHeight?: number;
7
8
  getDimensions?: (width: number, height: number) => {
8
9
  width: number;
9
10
  height: number;
10
- scale: number;
11
+ scale?: number;
11
12
  };
12
13
  };
13
- export declare const exportToCanvas: ({ elements, appState, files, getDimensions, }: ExportOpts) => Promise<HTMLCanvasElement>;
14
+ export declare const exportToCanvas: ({ elements, appState, files, maxWidthOrHeight, getDimensions, }: ExportOpts) => Promise<HTMLCanvasElement>;
14
15
  export declare const exportToBlob: (opts: ExportOpts & {
15
16
  mimeType?: string;
16
17
  quality?: number;
@@ -2,12 +2,12 @@ import { ExcalidrawElement, ExcalidrawTextElement, NonDeletedExcalidrawElement,
2
2
  import { RoughCanvas } from "roughjs/bin/canvas";
3
3
  import { Drawable, Options } from "roughjs/bin/core";
4
4
  import { RoughSVG } from "roughjs/bin/svg";
5
- import { SceneState } from "../scene/types";
5
+ import { RenderConfig } from "../scene/types";
6
6
  import { BinaryFiles, Zoom } from "../types";
7
7
  export interface ExcalidrawElementWithCanvas {
8
8
  element: ExcalidrawElement | ExcalidrawTextElement;
9
9
  canvas: HTMLCanvasElement;
10
- theme: SceneState["theme"];
10
+ theme: RenderConfig["theme"];
11
11
  canvasZoom: Zoom["value"];
12
12
  canvasOffsetX: number;
13
13
  canvasOffsetY: number;
@@ -16,8 +16,8 @@ export declare const getShapeForElement: (element: ExcalidrawElement) => Drawabl
16
16
  export declare const invalidateShapeForElement: (element: ExcalidrawElement) => boolean;
17
17
  export declare const clearRenderCache: () => void;
18
18
  export declare const generateRoughOptions: (element: ExcalidrawElement, continuousPath?: boolean) => Options;
19
- export declare const renderElement: (element: NonDeletedExcalidrawElement, rc: RoughCanvas, context: CanvasRenderingContext2D, renderOptimizations: boolean, sceneState: SceneState) => void;
20
- export declare const renderElementToSvg: (element: NonDeletedExcalidrawElement, rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, offsetX?: number | undefined, offsetY?: number | undefined) => void;
19
+ export declare const renderElement: (element: NonDeletedExcalidrawElement, rc: RoughCanvas, context: CanvasRenderingContext2D, renderConfig: RenderConfig) => void;
20
+ export declare const renderElementToSvg: (element: NonDeletedExcalidrawElement, rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, offsetX?: number | undefined, offsetY?: number | undefined, exportWithDarkMode?: boolean | undefined) => void;
21
21
  export declare let pathsCache: WeakMap<ExcalidrawFreeDrawElement, Path2D>;
22
22
  export declare function generateFreeDrawShape(element: ExcalidrawFreeDrawElement): Path2D;
23
23
  export declare function getFreeDrawPath2D(element: ExcalidrawFreeDrawElement): Path2D | undefined;
@@ -2,21 +2,16 @@ import { RoughCanvas } from "roughjs/bin/canvas";
2
2
  import { RoughSVG } from "roughjs/bin/svg";
3
3
  import { AppState, BinaryFiles } from "../types";
4
4
  import { NonDeletedExcalidrawElement } from "../element/types";
5
- import { SceneState } from "../scene/types";
6
- export declare const renderScene: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, selectionElement: NonDeletedExcalidrawElement | null, scale: number, rc: RoughCanvas, canvas: HTMLCanvasElement, sceneState: SceneState, { renderScrollbars, renderSelection, renderOptimizations, renderGrid, isExport, }?: {
7
- renderScrollbars?: boolean | undefined;
8
- renderSelection?: boolean | undefined;
9
- renderOptimizations?: boolean | undefined;
10
- renderGrid?: boolean | undefined;
11
- isExport?: boolean | undefined;
12
- }) => {
5
+ import { RenderConfig } from "../scene/types";
6
+ export declare const renderScene: (elements: readonly NonDeletedExcalidrawElement[], appState: AppState, selectionElement: NonDeletedExcalidrawElement | null, scale: number, rc: RoughCanvas, canvas: HTMLCanvasElement, renderConfig: RenderConfig) => {
13
7
  atLeastOneVisibleElement: boolean;
14
8
  scrollBars?: undefined;
15
9
  } | {
16
10
  atLeastOneVisibleElement: boolean;
17
11
  scrollBars: import("../scene/types").ScrollBars | undefined;
18
12
  };
19
- export declare const renderSceneToSvg: (elements: readonly NonDeletedExcalidrawElement[], rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, { offsetX, offsetY, }?: {
13
+ export declare const renderSceneToSvg: (elements: readonly NonDeletedExcalidrawElement[], rsvg: RoughSVG, svgRoot: SVGElement, files: BinaryFiles, { offsetX, offsetY, exportWithDarkMode, }?: {
20
14
  offsetX?: number | undefined;
21
15
  offsetY?: number | undefined;
16
+ exportWithDarkMode?: boolean | undefined;
22
17
  }) => void;
@@ -1,11 +1,13 @@
1
1
  import { ExcalidrawTextElement } from "../element/types";
2
- import { AppClassProperties, AppState, Zoom } from "../types";
3
- export declare type SceneState = {
4
- scrollX: number;
5
- scrollY: number;
6
- viewBackgroundColor: string | null;
7
- zoom: Zoom;
8
- shouldCacheIgnoreZoom: boolean;
2
+ import { AppClassProperties, AppState } from "../types";
3
+ export declare type RenderConfig = {
4
+ scrollX: AppState["scrollX"];
5
+ scrollY: AppState["scrollY"];
6
+ /** null indicates transparent bg */
7
+ viewBackgroundColor: AppState["viewBackgroundColor"] | null;
8
+ zoom: AppState["zoom"];
9
+ shouldCacheIgnoreZoom: AppState["shouldCacheIgnoreZoom"];
10
+ theme: AppState["theme"];
9
11
  remotePointerViewportCoords: {
10
12
  [id: string]: {
11
13
  x: number;
@@ -24,8 +26,13 @@ export declare type SceneState = {
24
26
  remotePointerUserStates: {
25
27
  [id: string]: string;
26
28
  };
27
- theme: AppState["theme"];
28
29
  imageCache: AppClassProperties["imageCache"];
30
+ renderScrollbars?: boolean;
31
+ renderSelection?: boolean;
32
+ renderGrid?: boolean;
33
+ /** when exporting the behavior is slightly different (e.g. we can't use
34
+ CSS filters), and we disable render optimizations for best output */
35
+ isExporting: boolean;
29
36
  };
30
37
  export declare type SceneScroll = {
31
38
  scrollX: number;
package/types/utils.d.ts CHANGED
@@ -24,7 +24,7 @@ export declare const debounce: <T extends any[]>(fn: (...args: T) => void, timeo
24
24
  flush(): void;
25
25
  cancel(): void;
26
26
  };
27
- export declare const chunk: <T extends unknown>(array: T[], size: number) => T[][];
27
+ export declare const chunk: <T extends unknown>(array: readonly T[], size: number) => T[][];
28
28
  export declare const selectNode: (node: Element) => void;
29
29
  export declare const removeSelection: () => void;
30
30
  export declare const distance: (x: number, y: number) => number;
@@ -94,3 +94,11 @@ export declare const getNearestScrollableContainer: (element: HTMLElement) => HT
94
94
  export declare const focusNearestParent: (element: HTMLInputElement) => void;
95
95
  export declare const preventUnload: (event: BeforeUnloadEvent) => void;
96
96
  export declare const bytesToHexString: (bytes: Uint8Array) => string;
97
+ export declare const getUpdatedTimestamp: () => number;
98
+ /**
99
+ * Transforms array of objects containing `id` attribute,
100
+ * or array of ids (strings), into a Map, keyd by `id`.
101
+ */
102
+ export declare const arrayToMap: <T extends string | {
103
+ id: string;
104
+ }>(items: readonly T[]) => Map<string, T>;