presenter 0.5.4 → 0.6.0

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 (164) hide show
  1. package/README.md +0 -54
  2. package/dist/eslint.config.d.mts +2 -0
  3. package/dist/export.js +1 -0
  4. package/dist/jest.config.d.ts +0 -2
  5. package/dist/presenter.js +1 -1
  6. package/dist/src/constructors/Grid.d.ts +21 -0
  7. package/dist/src/export/image-renderer/ImageRenderer.d.ts +9 -0
  8. package/dist/src/export/image-renderer/types/ImageRendererProps.d.ts +26 -0
  9. package/dist/src/export/image-renderer/types/ImageRendererState.d.ts +8 -0
  10. package/dist/src/export/index.d.ts +2 -24
  11. package/dist/src/export/pdf-renderer/PDFRenderer.d.ts +10 -0
  12. package/dist/src/export/pdf-renderer/types/PDFRendererProps.d.ts +8 -0
  13. package/dist/src/export/pdf-renderer/types/PDFRendererState.d.ts +5 -0
  14. package/dist/src/export/utils/createCanvasElement.d.ts +3 -0
  15. package/dist/src/export/utils/createPath2D.d.ts +2 -0
  16. package/dist/src/export/utils/loadPresentationImages.d.ts +2 -0
  17. package/dist/src/index.d.ts +43 -25
  18. package/dist/src/navigator/openNavigator.d.ts +8 -0
  19. package/dist/src/objects/Arrow.d.ts +18 -0
  20. package/dist/src/objects/Circle.d.ts +16 -0
  21. package/dist/src/objects/Group.d.ts +17 -0
  22. package/dist/src/objects/Image.d.ts +15 -0
  23. package/dist/src/objects/Line.d.ts +15 -0
  24. package/dist/src/objects/Mask.d.ts +15 -0
  25. package/dist/src/objects/Path.d.ts +19 -0
  26. package/dist/src/objects/Polygon.d.ts +13 -0
  27. package/dist/src/objects/Rectangle.d.ts +18 -0
  28. package/dist/src/objects/Text.d.ts +25 -0
  29. package/dist/src/renderer/browser-canvas/BrowserCanvasRenderer.d.ts +12 -0
  30. package/dist/src/renderer/browser-canvas/objects/renderArrow.d.ts +3 -0
  31. package/dist/src/renderer/browser-canvas/objects/renderCircle.d.ts +3 -0
  32. package/dist/src/renderer/browser-canvas/objects/renderGroup.d.ts +3 -0
  33. package/dist/src/renderer/browser-canvas/objects/renderImage.d.ts +3 -0
  34. package/dist/src/renderer/browser-canvas/objects/renderLine.d.ts +3 -0
  35. package/dist/src/renderer/browser-canvas/objects/renderMask.d.ts +3 -0
  36. package/dist/src/renderer/browser-canvas/objects/renderPath.d.ts +3 -0
  37. package/dist/src/renderer/browser-canvas/objects/renderPolygon.d.ts +3 -0
  38. package/dist/src/renderer/browser-canvas/objects/renderRectangle.d.ts +3 -0
  39. package/dist/src/renderer/browser-canvas/objects/renderText.d.ts +3 -0
  40. package/dist/src/renderer/browser-canvas/types/BrowserCanvasObjectRenderer.d.ts +13 -0
  41. package/dist/src/renderer/browser-canvas/types/BrowserCanvasRendererProps.d.ts +9 -0
  42. package/dist/src/renderer/browser-canvas/types/BrowserCanvasRendererState.d.ts +16 -0
  43. package/dist/src/renderer/browser-canvas/types/UnifiedCanvasContext.d.ts +18 -0
  44. package/dist/src/renderer/browser-canvas/types/UnifiedImage.d.ts +18 -0
  45. package/dist/src/renderer/browser-canvas/types/UnifiedPath2D.d.ts +18 -0
  46. package/dist/src/renderer/browser-canvas/utils/clearCanvas.d.ts +2 -0
  47. package/dist/src/renderer/browser-canvas/utils/createCanvasElement.d.ts +2 -0
  48. package/dist/src/renderer/browser-canvas/utils/createPath2D.d.ts +2 -0
  49. package/dist/src/renderer/browser-canvas/utils/defaultObjectRenderers.d.ts +10 -0
  50. package/dist/src/renderer/browser-canvas/utils/drawStroke.d.ts +15 -0
  51. package/dist/src/renderer/browser-canvas/utils/fillPath.d.ts +11 -0
  52. package/dist/src/renderer/browser-canvas/utils/getPathFromPoints.d.ts +4 -0
  53. package/dist/src/renderer/browser-canvas/utils/getSizeFromTextMetrics.d.ts +2 -0
  54. package/dist/src/renderer/browser-canvas/utils/loadPresentationImages.d.ts +2 -0
  55. package/dist/src/renderer/browser-canvas/utils/text/getTextUnitMeasurements.d.ts +5 -0
  56. package/dist/src/renderer/browser-canvas/utils/text/setContextWithTextStyle.d.ts +3 -0
  57. package/dist/src/types/Alignment.d.ts +7 -0
  58. package/dist/src/types/Anchor.d.ts +13 -0
  59. package/dist/src/types/Animate.d.ts +18 -0
  60. package/dist/src/types/AnimationType.d.ts +9 -0
  61. package/dist/src/types/BaseUnitSlideAnimation.d.ts +7 -0
  62. package/dist/src/types/BoundingBox.d.ts +10 -0
  63. package/dist/src/types/Color.d.ts +23 -0
  64. package/dist/src/types/Easing.d.ts +10 -0
  65. package/dist/src/types/EasingFunction.d.ts +2 -0
  66. package/dist/src/types/FontStyle.d.ts +8 -0
  67. package/dist/src/types/FontWeight.d.ts +13 -0
  68. package/dist/src/types/Interpolator.d.ts +7 -0
  69. package/dist/src/types/ObjectType.d.ts +14 -0
  70. package/dist/src/types/PathWithLength.d.ts +5 -0
  71. package/dist/src/types/Pause.d.ts +7 -0
  72. package/dist/src/types/Position.d.ts +6 -0
  73. package/dist/src/types/Presentation.d.ts +17 -0
  74. package/dist/src/types/Resources.d.ts +5 -0
  75. package/dist/src/types/ShortcutState.d.ts +13 -0
  76. package/dist/src/types/Size.d.ts +6 -0
  77. package/dist/src/types/Slide.d.ts +12 -0
  78. package/dist/src/types/SlideAnimation.d.ts +6 -0
  79. package/dist/src/types/SlideObject.d.ts +5 -0
  80. package/dist/src/types/TextContent.d.ts +2 -0
  81. package/dist/src/types/TextStyle.d.ts +12 -0
  82. package/dist/src/types/TextUnit.d.ts +6 -0
  83. package/dist/src/types/Update.d.ts +9 -0
  84. package/dist/src/utils/animate/getSlideAnimationDuration.d.ts +2 -0
  85. package/dist/src/utils/animate/updateObjectStateWithAnimation.d.ts +13 -0
  86. package/dist/src/utils/color/Opaque.d.ts +2 -0
  87. package/dist/src/utils/color/Transparent.d.ts +2 -0
  88. package/dist/src/utils/color/getAlphaForColor.d.ts +6 -0
  89. package/dist/src/utils/color/getHexStringForColor.d.ts +2 -0
  90. package/dist/src/utils/color/getRgbStringForColor.d.ts +2 -0
  91. package/dist/src/utils/core/assertNever.d.ts +1 -0
  92. package/dist/src/utils/interpolate/defaultInterpolators.d.ts +2 -0
  93. package/dist/src/utils/interpolate/getSmoothPathInterpolator.d.ts +2 -0
  94. package/dist/src/utils/interpolate/interpolate.d.ts +3 -0
  95. package/dist/src/utils/interpolate/interpolateColor.d.ts +3 -0
  96. package/dist/src/utils/interpolate/interpolateFallback.d.ts +3 -0
  97. package/dist/src/utils/interpolate/interpolateNumber.d.ts +2 -0
  98. package/dist/src/utils/layout/getBoundingBox.d.ts +5 -0
  99. package/dist/src/utils/layout/getSizingFunctions.d.ts +10 -0
  100. package/dist/src/utils/objects/arrow/getArrowPoints.d.ts +9 -0
  101. package/dist/src/utils/objects/circle/getCirclePath.d.ts +4 -0
  102. package/dist/src/utils/objects/line/getLinePath.d.ts +4 -0
  103. package/dist/src/utils/objects/polygon/getPolygonPath.d.ts +4 -0
  104. package/dist/src/utils/objects/rectangle/getRectanglePath.d.ts +4 -0
  105. package/dist/src/utils/objects/rectangle/getRoundedRectanglePath.d.ts +5 -0
  106. package/dist/src/utils/objects/text/getTextContentLength.d.ts +2 -0
  107. package/dist/src/utils/objects/text/getTextStyleFromText.d.ts +3 -0
  108. package/dist/src/utils/objects/text/getTextUnitsFromTextContent.d.ts +3 -0
  109. package/dist/src/utils/presentation/createPresentationContainer.d.ts +2 -0
  110. package/dist/src/utils/presentation/getObjectChildren.d.ts +5 -0
  111. package/dist/src/utils/presentation/getObjectState.d.ts +12 -0
  112. package/dist/src/utils/presentation/getPresentationShortcuts.d.ts +3 -0
  113. package/dist/src/utils/presentation/isFullBodyPresentation.d.ts +1 -0
  114. package/dist/src/utils/presentation/setupKeyEventListeners.d.ts +10 -0
  115. package/dist/src/utils/size/getCombinedSizes2D.d.ts +7 -0
  116. package/dist/src/utils/slide/getKeySlideBuildIndices.d.ts +5 -0
  117. package/dist/src/utils/storage/StorageState.d.ts +5 -0
  118. package/dist/src/utils/storage/loadPresentationState.d.ts +3 -0
  119. package/dist/src/utils/storage/storageConsts.d.ts +1 -0
  120. package/dist/src/utils/storage/storePresentationState.d.ts +2 -0
  121. package/package.json +21 -26
  122. package/dist/354.js +0 -2
  123. package/dist/354.js.LICENSE.txt +0 -20
  124. package/dist/418.js +0 -2
  125. package/dist/418.js.LICENSE.txt +0 -1
  126. package/dist/661.js +0 -1
  127. package/dist/presenter-code.js +0 -1
  128. package/dist/presenter-export.js +0 -2
  129. package/dist/presenter-export.js.LICENSE.txt +0 -313
  130. package/dist/presenter-morph.js +0 -1
  131. package/dist/src/code/codeBlock.d.ts +0 -108
  132. package/dist/src/code/index.d.ts +0 -1
  133. package/dist/src/export/util.d.ts +0 -4
  134. package/dist/src/library/bullets.d.ts +0 -15
  135. package/dist/src/library/mainTitle.d.ts +0 -4
  136. package/dist/src/library/slideTitle.d.ts +0 -4
  137. package/dist/src/morph/index.d.ts +0 -34
  138. package/dist/src/objects/arrow.d.ts +0 -62
  139. package/dist/src/objects/circle.d.ts +0 -24
  140. package/dist/src/objects/grid.d.ts +0 -17
  141. package/dist/src/objects/group.d.ts +0 -29
  142. package/dist/src/objects/iframe.d.ts +0 -16
  143. package/dist/src/objects/image.d.ts +0 -20
  144. package/dist/src/objects/line.d.ts +0 -21
  145. package/dist/src/objects/mask.d.ts +0 -13
  146. package/dist/src/objects/paragraph.d.ts +0 -21
  147. package/dist/src/objects/path.d.ts +0 -29
  148. package/dist/src/objects/polygon.d.ts +0 -13
  149. package/dist/src/objects/rectangle.d.ts +0 -26
  150. package/dist/src/objects/screenCapture.d.ts +0 -17
  151. package/dist/src/objects/text.d.ts +0 -67
  152. package/dist/src/objects/vectorGraphic.d.ts +0 -48
  153. package/dist/src/presentation/object.d.ts +0 -132
  154. package/dist/src/presentation/presentation.d.ts +0 -153
  155. package/dist/src/presentation/presentation.test.d.ts +0 -1
  156. package/dist/src/presentation/slide.d.ts +0 -43
  157. package/dist/src/presentation/storage.d.ts +0 -9
  158. package/dist/src/util/animation.d.ts +0 -60
  159. package/dist/src/util/easing.d.ts +0 -12
  160. package/dist/src/util/easing.test.d.ts +0 -1
  161. package/dist/src/util/position.d.ts +0 -11
  162. package/dist/src/util/richText.d.ts +0 -19
  163. package/dist/webpack.config.d.ts +0 -70
  164. /package/dist/src/{objects/text.test.d.ts → utils/size/getCombinedSizes2D.test.d.ts} +0 -0
@@ -0,0 +1,21 @@
1
+ import { Group } from "../objects/Group";
2
+ import { Anchor } from "../types/Anchor";
3
+ import { SlideObject } from "../types/SlideObject";
4
+ export interface GridProps {
5
+ readonly anchor: Anchor;
6
+ readonly cols: number;
7
+ readonly gapX: number;
8
+ readonly gapY: number;
9
+ readonly height: number | ((row: number, col: number) => number);
10
+ readonly objects: (row: number, col: number) => SlideObject | null;
11
+ readonly rows: number;
12
+ readonly width: number | ((row: number, col: number) => number);
13
+ readonly x: number;
14
+ readonly y: number;
15
+ }
16
+ interface Return {
17
+ readonly grid: Group;
18
+ readonly objects: (SlideObject | null)[][];
19
+ }
20
+ export declare function Grid(props: Partial<GridProps>): Return;
21
+ export {};
@@ -0,0 +1,9 @@
1
+ import { ImageRendererProps } from "./types/ImageRendererProps";
2
+ import { ImageRendererState } from "./types/ImageRendererState";
3
+ export declare class ImageRenderer {
4
+ props: ImageRendererProps;
5
+ state: ImageRendererState;
6
+ constructor(props: Partial<ImageRendererProps>);
7
+ save(directoryName: string, startImageIndex?: number): Promise<void>;
8
+ renderImage(slideIndex: number, buildIndex: number, buildTime?: number | null): Promise<void>;
9
+ }
@@ -0,0 +1,26 @@
1
+ import { BrowserCanvasObjectRenderer } from "../../../renderer/browser-canvas/types/BrowserCanvasObjectRenderer";
2
+ import { Presentation } from "../../../types/Presentation";
3
+ import { SlideObject } from "../../../types/SlideObject";
4
+ export interface ImageRendererProps {
5
+ readonly presentation: Presentation;
6
+ /**
7
+ * An animated export includes all frames of animation in the entire presentation.
8
+ * Non-animated exports only include key builds.
9
+ */
10
+ readonly isAnimatedExport: boolean;
11
+ /**
12
+ * The number of frames to hold for each animation step.
13
+ * Applies only to animated exports.
14
+ */
15
+ readonly animationHoldFrames: number;
16
+ /**
17
+ * The number of frames per second for animated exports.
18
+ */
19
+ readonly framesPerSecond: number;
20
+ readonly getFilenameForImage: (imageIndex: number) => string;
21
+ readonly imageFormat: "png" | "jpeg" | "webp" | "svg";
22
+ /** How frequently to log progress frame. */
23
+ readonly logFrequency: number;
24
+ readonly objectRenderers: Record<string, BrowserCanvasObjectRenderer<SlideObject>>;
25
+ readonly resourcePathPrefix: string;
26
+ }
@@ -0,0 +1,8 @@
1
+ import { UnifiedImage } from "../../../renderer/browser-canvas/types/UnifiedImage";
2
+ export interface ImageRendererState {
3
+ directoryName: string;
4
+ imageIndex: number;
5
+ imageById: Record<string, UnifiedImage>;
6
+ startImageIndex: number;
7
+ }
8
+ export declare const IMAGE_RENDERER_DEFAULT_STATE: ImageRendererState;
@@ -1,24 +1,2 @@
1
- import "svg2pdf.js";
2
- import { Presentation } from "../presentation/presentation";
3
- /**
4
- * Renders the SVG content of a single slide of a presentation to a PNG image.
5
- */
6
- export declare function renderCurrentSlide(presentation: Presentation, filename: string): Promise<void>;
7
- /**
8
- * Renders the SVG content of all slides in a presentation as PNG images.
9
- */
10
- export declare function renderPresentationAsImages(presentation: Presentation): Promise<void>;
11
- /**
12
- * Renders whole slide container (background, additional element canvas, svg)
13
- * and sends to a server endpoint.
14
- *
15
- * When rendering all componenst of the slide container, the server endpoint
16
- * is requried to perform additional image compositing to generate the
17
- * render.
18
- */
19
- export declare function exportCurrentSlideContainer(presentation: Presentation, filename: string, serverEndpoint: string): Promise<void>;
20
- /**
21
- * Exports the whole slide content of all slides and sends to a server endpoint.
22
- */
23
- export declare function exportAllSlides(presentation: Presentation, serverEndpoint: string): Promise<void>;
24
- export declare function exportToPDF(presentation: Presentation, promptForConfirmation?: boolean): Promise<void>;
1
+ export { ImageRenderer } from "./image-renderer/ImageRenderer";
2
+ export { PDFRenderer } from "./pdf-renderer/PDFRenderer";
@@ -0,0 +1,10 @@
1
+ import { Canvas } from "skia-canvas";
2
+ import { PDFRendererProps } from "./types/PDFRendererProps";
3
+ import { PDFRendererState } from "./types/PDFRendererState";
4
+ export declare class PDFRenderer {
5
+ props: PDFRendererProps;
6
+ state: PDFRendererState;
7
+ constructor(props: Partial<PDFRendererProps>);
8
+ save(filename: string): Promise<void>;
9
+ addPage(canvas: Canvas, slideIndex: number, buildIndex: number): void;
10
+ }
@@ -0,0 +1,8 @@
1
+ import { BrowserCanvasObjectRenderer } from "../../../renderer/browser-canvas/types/BrowserCanvasObjectRenderer";
2
+ import { Presentation } from "../../../types/Presentation";
3
+ import { SlideObject } from "../../../types/SlideObject";
4
+ export interface PDFRendererProps {
5
+ readonly presentation: Presentation;
6
+ readonly objectRenderers: Record<string, BrowserCanvasObjectRenderer<SlideObject>>;
7
+ readonly resourcePathPrefix: string;
8
+ }
@@ -0,0 +1,5 @@
1
+ import { UnifiedImage } from "../../../renderer/browser-canvas/types/UnifiedImage";
2
+ export interface PDFRendererState {
3
+ imageById: Record<string, UnifiedImage>;
4
+ }
5
+ export declare const PDF_RENDERER_DEFAULT_STATE: PDFRendererState;
@@ -0,0 +1,3 @@
1
+ import { Canvas } from "skia-canvas";
2
+ import { Size } from "../../types/Size";
3
+ export declare function createCanvasElement(size: Size): Canvas;
@@ -0,0 +1,2 @@
1
+ import { UnifiedPath2D } from "../../renderer/browser-canvas/types/UnifiedPath2D";
2
+ export declare function createPath2D(): UnifiedPath2D;
@@ -0,0 +1,2 @@
1
+ import { UnifiedImage } from "../../renderer/browser-canvas/types/UnifiedImage";
2
+ export declare function loadPresentationImages(imagePathById: Record<string, string>, pathPrefix: string): Promise<Record<string, UnifiedImage>>;
@@ -1,25 +1,43 @@
1
- export * from "./presentation/presentation";
2
- export * from "./presentation/slide";
3
- export * from "./presentation/object";
4
- export * from "./objects/arrow";
5
- export * from "./objects/circle";
6
- export * from "./objects/grid";
7
- export * from "./objects/group";
8
- export * from "./objects/iframe";
9
- export * from "./objects/image";
10
- export * from "./objects/line";
11
- export * from "./objects/mask";
12
- export * from "./objects/paragraph";
13
- export * from "./objects/polygon";
14
- export * from "./objects/path";
15
- export * from "./objects/screenCapture";
16
- export * from "./objects/text";
17
- export * from "./objects/rectangle";
18
- export * from "./objects/vectorGraphic";
19
- export * from "./library/bullets";
20
- export * from "./library/mainTitle";
21
- export * from "./library/slideTitle";
22
- export * from "./util/animation";
23
- export * from "./util/easing";
24
- export * from "./util/position";
25
- export * from "./util/richText";
1
+ export { Grid } from "./constructors/Grid";
2
+ export { Arrow } from "./objects/Arrow";
3
+ export { Circle } from "./objects/Circle";
4
+ export { Group } from "./objects/Group";
5
+ export { Image } from "./objects/Image";
6
+ export { Line } from "./objects/Line";
7
+ export { Mask } from "./objects/Mask";
8
+ export { Path } from "./objects/Path";
9
+ export { Polygon } from "./objects/Polygon";
10
+ export { Rectangle } from "./objects/Rectangle";
11
+ export { Text } from "./objects/Text";
12
+ export { BrowserCanvasRenderer } from "./renderer/browser-canvas/BrowserCanvasRenderer";
13
+ export { BrowserCanvasRendererProps } from "./renderer/browser-canvas/types/BrowserCanvasRendererProps";
14
+ export { type BrowserCanvasContext, type NodeCanvasContext, type UnifiedCanvasContext, } from "./renderer/browser-canvas/types/UnifiedCanvasContext";
15
+ export { type BrowserPath2D, type NodePath2D, type UnifiedPath2D, } from "./renderer/browser-canvas/types/UnifiedPath2D";
16
+ export { Alignment } from "./types/Alignment";
17
+ export { Anchor } from "./types/Anchor";
18
+ export { Animate, AnimationParams } from "./types/Animate";
19
+ export { Color } from "./types/Color";
20
+ export { Easing } from "./types/Easing";
21
+ export { EasingFunction } from "./types/EasingFunction";
22
+ export { FontStyle } from "./types/FontStyle";
23
+ export { FontWeight } from "./types/FontWeight";
24
+ export { Interpolator } from "./types/Interpolator";
25
+ export { ObjectType } from "./types/ObjectType";
26
+ export { Pause } from "./types/Pause";
27
+ export { Position } from "./types/Position";
28
+ export { Presentation } from "./types/Presentation";
29
+ export { Resources } from "./types/Resources";
30
+ export { Size } from "./types/Size";
31
+ export { Slide } from "./types/Slide";
32
+ export { SlideObject } from "./types/SlideObject";
33
+ export { TextContent } from "./types/TextContent";
34
+ export { TextUnit } from "./types/TextUnit";
35
+ export { Update } from "./types/Update";
36
+ export { Opaque } from "./utils/color/Opaque";
37
+ export { Transparent } from "./utils/color/Transparent";
38
+ export { getSmoothPathInterpolator } from "./utils/interpolate/getSmoothPathInterpolator";
39
+ export { interpolateColor } from "./utils/interpolate/interpolateColor";
40
+ export { interpolateNumber } from "./utils/interpolate/interpolateNumber";
41
+ export { getSizingFunctions } from "./utils/layout/getSizingFunctions";
42
+ export { getTextContentLength } from "./utils/objects/text/getTextContentLength";
43
+ export { getKeySlideBuildIndices } from "./utils/slide/getKeySlideBuildIndices";
@@ -0,0 +1,8 @@
1
+ import { Presentation } from "../types/Presentation";
2
+ interface Args {
3
+ readonly presentation: Presentation;
4
+ readonly onNavigateToSlide: (slideIndex: number) => void;
5
+ }
6
+ export declare function openNavigator({ presentation, onNavigateToSlide }: Args): void;
7
+ export declare function createNavigatorElement(presentation: Presentation, onNavigateToSlide: (slideIndex: number) => void): HTMLDivElement;
8
+ export {};
@@ -0,0 +1,18 @@
1
+ import { Color } from "../types/Color";
2
+ import { ObjectType } from "../types/ObjectType";
3
+ import { SlideObject } from "../types/SlideObject";
4
+ export interface Arrow extends SlideObject {
5
+ readonly objectType: typeof ObjectType.ARROW;
6
+ readonly arrowheadSize: number;
7
+ readonly color: Color;
8
+ readonly drawn: number;
9
+ readonly endX: number;
10
+ readonly endY: number;
11
+ readonly isArrowheadDoubled: boolean;
12
+ readonly isArrowheadFilled: boolean;
13
+ readonly isDrawnFromCenter: boolean;
14
+ readonly startX: number;
15
+ readonly startY: number;
16
+ readonly width: number;
17
+ }
18
+ export declare function Arrow(props?: Partial<Arrow> | null): Arrow;
@@ -0,0 +1,16 @@
1
+ import { Anchor } from "../types/Anchor";
2
+ import { Color } from "../types/Color";
3
+ import { ObjectType } from "../types/ObjectType";
4
+ import { SlideObject } from "../types/SlideObject";
5
+ export interface Circle extends SlideObject {
6
+ readonly objectType: typeof ObjectType.CIRCLE;
7
+ readonly anchor: Anchor;
8
+ readonly borderColor: Color;
9
+ readonly borderWidth: number;
10
+ readonly drawn: number;
11
+ readonly fill: Color;
12
+ readonly radius: number;
13
+ readonly x: number;
14
+ readonly y: number;
15
+ }
16
+ export declare function Circle(props?: Partial<Circle> | null): Circle;
@@ -0,0 +1,17 @@
1
+ import { Anchor } from "../types/Anchor";
2
+ import { ObjectType } from "../types/ObjectType";
3
+ import { SlideObject } from "../types/SlideObject";
4
+ export interface Group extends SlideObject {
5
+ readonly objectType: typeof ObjectType.GROUP;
6
+ readonly anchor: Anchor;
7
+ readonly height: number;
8
+ readonly objects: SlideObject[];
9
+ readonly rotateOriginX: number;
10
+ readonly rotateOriginY: number;
11
+ readonly rotation: number;
12
+ readonly scale: number;
13
+ readonly width: number;
14
+ readonly x: number;
15
+ readonly y: number;
16
+ }
17
+ export declare function Group(objects: SlideObject[], props?: Partial<Omit<Group, "objects">> | null): Group;
@@ -0,0 +1,15 @@
1
+ import { Anchor } from "../types/Anchor";
2
+ import { ObjectType } from "../types/ObjectType";
3
+ import { SlideObject } from "../types/SlideObject";
4
+ export interface Image extends SlideObject {
5
+ readonly objectType: typeof ObjectType.IMAGE;
6
+ readonly anchor: Anchor;
7
+ readonly height: number;
8
+ readonly imageId: string;
9
+ readonly rounding: number;
10
+ readonly smooth: boolean;
11
+ readonly width: number;
12
+ readonly x: number;
13
+ readonly y: number;
14
+ }
15
+ export declare function Image(props?: Partial<Image> | null): Image;
@@ -0,0 +1,15 @@
1
+ import { Color } from "../types/Color";
2
+ import { ObjectType } from "../types/ObjectType";
3
+ import { SlideObject } from "../types/SlideObject";
4
+ export interface Line extends SlideObject {
5
+ readonly objectType: typeof ObjectType.LINE;
6
+ readonly color: Color;
7
+ readonly drawn: number;
8
+ readonly endX: number;
9
+ readonly endY: number;
10
+ readonly isDrawnFromCenter: boolean;
11
+ readonly startX: number;
12
+ readonly startY: number;
13
+ readonly width: number;
14
+ }
15
+ export declare function Line(props?: Partial<Line> | null): Line;
@@ -0,0 +1,15 @@
1
+ import { Anchor } from "../types/Anchor";
2
+ import { ObjectType } from "../types/ObjectType";
3
+ import { SlideObject } from "../types/SlideObject";
4
+ export interface Mask extends SlideObject {
5
+ readonly objectType: typeof ObjectType.MASK;
6
+ readonly anchor: Anchor;
7
+ readonly height: number;
8
+ readonly objects: SlideObject[];
9
+ /** A debugging flag that allows previewing the mask shape. */
10
+ readonly preview: boolean;
11
+ readonly width: number;
12
+ readonly x: number;
13
+ readonly y: number;
14
+ }
15
+ export declare function Mask(objects: SlideObject[], props?: Partial<Omit<Mask, "objects">> | null): Mask;
@@ -0,0 +1,19 @@
1
+ import { Anchor } from "../types/Anchor";
2
+ import { Color } from "../types/Color";
3
+ import { ObjectType } from "../types/ObjectType";
4
+ import { SlideObject } from "../types/SlideObject";
5
+ export interface Path extends SlideObject {
6
+ readonly objectType: typeof ObjectType.PATH;
7
+ readonly anchor: Anchor;
8
+ readonly color: Color;
9
+ readonly drawn: number;
10
+ readonly fill: Color;
11
+ readonly height: number;
12
+ readonly path: string;
13
+ readonly pathLength: number;
14
+ readonly strokeWidth: number;
15
+ readonly width: number;
16
+ readonly x: number;
17
+ readonly y: number;
18
+ }
19
+ export declare function Path(props?: Partial<Path> | null): Path;
@@ -0,0 +1,13 @@
1
+ import { Color } from "../types/Color";
2
+ import { ObjectType } from "../types/ObjectType";
3
+ import { Position } from "../types/Position";
4
+ import { SlideObject } from "../types/SlideObject";
5
+ export interface Polygon extends SlideObject {
6
+ readonly objectType: typeof ObjectType.POLYGON;
7
+ readonly borderColor: Color;
8
+ readonly borderWidth: number;
9
+ readonly drawn: number;
10
+ readonly points: readonly Position[];
11
+ readonly fill: Color;
12
+ }
13
+ export declare function Polygon(props?: Partial<Polygon> | null): Polygon;
@@ -0,0 +1,18 @@
1
+ import { Anchor } from "../types/Anchor";
2
+ import { Color } from "../types/Color";
3
+ import { ObjectType } from "../types/ObjectType";
4
+ import { SlideObject } from "../types/SlideObject";
5
+ export interface Rectangle extends SlideObject {
6
+ readonly objectType: typeof ObjectType.RECTANGLE;
7
+ readonly anchor: Anchor;
8
+ readonly borderColor: Color;
9
+ readonly borderWidth: number;
10
+ readonly drawn: number;
11
+ readonly fill: Color;
12
+ readonly height: number;
13
+ readonly rounding: number;
14
+ readonly width: number;
15
+ readonly x: number;
16
+ readonly y: number;
17
+ }
18
+ export declare function Rectangle(props?: Partial<Rectangle> | null): Rectangle;
@@ -0,0 +1,25 @@
1
+ import { Alignment } from "../types/Alignment";
2
+ import { Anchor } from "../types/Anchor";
3
+ import { Animate, AnimationParams } from "../types/Animate";
4
+ import { ObjectType } from "../types/ObjectType";
5
+ import { SlideObject } from "../types/SlideObject";
6
+ import { TextContent } from "../types/TextContent";
7
+ import { TextStyle } from "../types/TextStyle";
8
+ export interface Text extends SlideObject, TextStyle {
9
+ readonly objectType: typeof ObjectType.TEXT;
10
+ readonly alignment: Alignment;
11
+ readonly anchor: Anchor;
12
+ /**
13
+ * The number of characters of the text to show.
14
+ * If `null`, shows all text.
15
+ */
16
+ readonly length: number | null;
17
+ readonly lineSpacing: number;
18
+ readonly text: TextContent;
19
+ readonly x: number;
20
+ readonly y: number;
21
+ }
22
+ export declare function Text(text?: TextContent, props?: Partial<Omit<Text, "objectType" | "text">> | null): Text;
23
+ export declare namespace Text {
24
+ var writeOn: (text: Text, animationParams?: AnimationParams<Text>) => Animate<Text>;
25
+ }
@@ -0,0 +1,12 @@
1
+ import { BrowserCanvasRendererProps } from "./types/BrowserCanvasRendererProps";
2
+ import { BrowserCanvasRendererState } from "./types/BrowserCanvasRendererState";
3
+ export declare class BrowserCanvasRenderer {
4
+ props: BrowserCanvasRendererProps;
5
+ state: BrowserCanvasRendererState;
6
+ constructor(props: Partial<BrowserCanvasRendererProps>);
7
+ /** Starts the presentation. */
8
+ present(): Promise<void>;
9
+ renderSlide(slideIndex: number, buildIndex?: number, buildTime?: number | null): void;
10
+ next(skipIntermediateBuilds?: boolean): void;
11
+ previous(skipIntermediateBuilds?: boolean): void;
12
+ }
@@ -0,0 +1,3 @@
1
+ import { Arrow } from "../../../objects/Arrow";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderArrow: BrowserCanvasObjectRenderer<Arrow>;
@@ -0,0 +1,3 @@
1
+ import { Circle } from "../../../objects/Circle";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderCircle: BrowserCanvasObjectRenderer<Circle>;
@@ -0,0 +1,3 @@
1
+ import { Group } from "../../../objects/Group";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderGroup: BrowserCanvasObjectRenderer<Group>;
@@ -0,0 +1,3 @@
1
+ import { Image } from "../../../objects/Image";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderImage: BrowserCanvasObjectRenderer<Image>;
@@ -0,0 +1,3 @@
1
+ import { Line } from "../../../objects/Line";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderLine: BrowserCanvasObjectRenderer<Line>;
@@ -0,0 +1,3 @@
1
+ import { Mask } from "../../../objects/Mask";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderMask: BrowserCanvasObjectRenderer<Mask>;
@@ -0,0 +1,3 @@
1
+ import { Path } from "../../../objects/Path";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderPath: BrowserCanvasObjectRenderer<Path>;
@@ -0,0 +1,3 @@
1
+ import { Polygon } from "../../../objects/Polygon";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderPolygon: BrowserCanvasObjectRenderer<Polygon>;
@@ -0,0 +1,3 @@
1
+ import { Rectangle } from "../../../objects/Rectangle";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderRectangle: BrowserCanvasObjectRenderer<Rectangle>;
@@ -0,0 +1,3 @@
1
+ import { Text } from "../../../objects/Text";
2
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
3
+ export declare const renderText: BrowserCanvasObjectRenderer<Text>;
@@ -0,0 +1,13 @@
1
+ import { SlideObject } from "../../../types/SlideObject";
2
+ import { UnifiedCanvasContext } from "./UnifiedCanvasContext";
3
+ import { UnifiedImage } from "./UnifiedImage";
4
+ import { UnifiedPath2D } from "./UnifiedPath2D";
5
+ export interface BrowserCanvasObjectRendererArgs<T extends SlideObject> {
6
+ readonly ctx: UnifiedCanvasContext;
7
+ readonly object: T;
8
+ readonly opacity: number;
9
+ readonly imageById: Record<string, UnifiedImage>;
10
+ readonly createPath2D: (path?: string) => UnifiedPath2D;
11
+ readonly renderObject: (object: SlideObject, overallOpacity: number) => void;
12
+ }
13
+ export type BrowserCanvasObjectRenderer<T extends SlideObject> = (args: BrowserCanvasObjectRendererArgs<T>) => void;
@@ -0,0 +1,9 @@
1
+ import { Presentation } from "../../../types/Presentation";
2
+ import { SlideObject } from "../../../types/SlideObject";
3
+ import { BrowserCanvasObjectRenderer } from "./BrowserCanvasObjectRenderer";
4
+ export interface BrowserCanvasRendererProps {
5
+ readonly presentation: Presentation;
6
+ readonly element: HTMLElement;
7
+ readonly objectRenderers: Record<string, BrowserCanvasObjectRenderer<SlideObject>>;
8
+ readonly cacheDurationMinutes: number;
9
+ }
@@ -0,0 +1,16 @@
1
+ import { ShortcutState } from "../../../types/ShortcutState";
2
+ import { UnifiedImage } from "./UnifiedImage";
3
+ export interface BrowserCanvasRendererState {
4
+ canvas: HTMLCanvasElement | null;
5
+ /** The index of the currently displayed slide. */
6
+ slideIndex: number;
7
+ /** The index of the current build within the current slide.
8
+ * If there are N animations on the slide, this will range from 0 to N inclusive.
9
+ */
10
+ buildIndex: number;
11
+ /** The ID of the currently running animation, if any. */
12
+ currentAnimationId: number | null;
13
+ imageById: Record<string, UnifiedImage>;
14
+ shortcutState: ShortcutState;
15
+ }
16
+ export declare const BROWSER_CANVAS_RENDERER_DEFAULT_STATE: BrowserCanvasRendererState;
@@ -0,0 +1,18 @@
1
+ import { type CanvasRenderingContext2D as SkiaCanvasRenderingContext2D } from "skia-canvas";
2
+ export declare const CanvasContextType: {
3
+ readonly Browser: "browser";
4
+ readonly Node: "node";
5
+ };
6
+ export type CanvasContextType = (typeof CanvasContextType)[keyof typeof CanvasContextType];
7
+ export interface BrowserCanvasContext {
8
+ readonly type: typeof CanvasContextType.Browser;
9
+ readonly context: CanvasRenderingContext2D;
10
+ }
11
+ export interface NodeCanvasContext {
12
+ readonly type: typeof CanvasContextType.Node;
13
+ readonly context: SkiaCanvasRenderingContext2D;
14
+ }
15
+ /**
16
+ * A unified CanvasRenderingContext2D type that works in both browser and Node.js environments.
17
+ */
18
+ export type UnifiedCanvasContext = BrowserCanvasContext | NodeCanvasContext;
@@ -0,0 +1,18 @@
1
+ import { type Image } from "skia-canvas";
2
+ export declare const ImageType: {
3
+ readonly Browser: "browser";
4
+ readonly Node: "node";
5
+ };
6
+ export type ImageType = (typeof ImageType)[keyof typeof ImageType];
7
+ export interface BrowserImage {
8
+ readonly type: typeof ImageType.Browser;
9
+ readonly image: HTMLImageElement;
10
+ }
11
+ export interface NodeImage {
12
+ readonly type: typeof ImageType.Node;
13
+ readonly image: Image;
14
+ }
15
+ /**
16
+ * A unified Image type that works in both browser and Node.js environments.
17
+ */
18
+ export type UnifiedImage = BrowserImage | NodeImage;
@@ -0,0 +1,18 @@
1
+ import { type Path2D as SkiaPath2D } from "skia-canvas";
2
+ export declare const Path2DType: {
3
+ readonly Browser: "browser";
4
+ readonly Node: "node";
5
+ };
6
+ export type Path2DType = (typeof Path2DType)[keyof typeof Path2DType];
7
+ export interface BrowserPath2D {
8
+ readonly type: typeof Path2DType.Browser;
9
+ readonly path: Path2D;
10
+ }
11
+ export interface NodePath2D {
12
+ readonly type: typeof Path2DType.Node;
13
+ readonly path: SkiaPath2D;
14
+ }
15
+ /**
16
+ * A unified Path2D type that works in both browser and Node.js environments.
17
+ */
18
+ export type UnifiedPath2D = BrowserPath2D | NodePath2D;
@@ -0,0 +1,2 @@
1
+ import { UnifiedCanvasContext } from "../types/UnifiedCanvasContext";
2
+ export declare function clearCanvas(canvas: HTMLCanvasElement, ctx: UnifiedCanvasContext): void;
@@ -0,0 +1,2 @@
1
+ import { Size } from "../../../types/Size";
2
+ export declare function createCanvasElement(size: Size): HTMLCanvasElement;
@@ -0,0 +1,2 @@
1
+ import { UnifiedPath2D } from "../types/UnifiedPath2D";
2
+ export declare function createPath2D(): UnifiedPath2D;
@@ -0,0 +1,10 @@
1
+ import { ObjectType } from "../../../types/ObjectType";
2
+ import { SlideObject } from "../../../types/SlideObject";
3
+ import { BrowserCanvasObjectRenderer } from "../types/BrowserCanvasObjectRenderer";
4
+ type ObjectRendererMap = {
5
+ [T in ObjectType]: BrowserCanvasObjectRenderer<SlideObject & {
6
+ objectType: T;
7
+ }>;
8
+ };
9
+ export declare const DEFAULT_OBJECT_RENDERERS: ObjectRendererMap;
10
+ export {};
@@ -0,0 +1,15 @@
1
+ import { Color } from "../../../types/Color";
2
+ import { UnifiedCanvasContext } from "../types/UnifiedCanvasContext";
3
+ import { UnifiedPath2D } from "../types/UnifiedPath2D";
4
+ interface Args {
5
+ readonly color: Color;
6
+ readonly ctx: UnifiedCanvasContext;
7
+ readonly drawn?: number | null;
8
+ readonly isDrawnFromCenter?: boolean;
9
+ readonly opacity?: number | null;
10
+ readonly path: UnifiedPath2D | undefined;
11
+ readonly pathLength?: number | null;
12
+ readonly width: number;
13
+ }
14
+ export declare function drawStroke({ ctx, color, drawn, isDrawnFromCenter, opacity, path, pathLength, width, }: Args): void;
15
+ export {};