presenter 0.9.3 → 0.10.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 (56) hide show
  1. package/dist/3d/index.d.ts +17 -0
  2. package/dist/3d/objects/ThreeBox.d.ts +9 -0
  3. package/dist/3d/objects/ThreeCameraType.d.ts +5 -0
  4. package/dist/3d/objects/ThreeMesh.d.ts +30 -0
  5. package/dist/3d/objects/ThreeModel.d.ts +18 -0
  6. package/dist/3d/objects/ThreeModelMaterial.d.ts +11 -0
  7. package/dist/3d/objects/ThreeModelNode.d.ts +24 -0
  8. package/dist/3d/objects/ThreeModelTarget.d.ts +9 -0
  9. package/dist/3d/objects/ThreeObjectType.d.ts +10 -0
  10. package/dist/3d/objects/ThreePresenterGroup.d.ts +13 -0
  11. package/dist/3d/objects/ThreeScene.d.ts +39 -0
  12. package/dist/3d/objects/ThreeSphere.d.ts +9 -0
  13. package/dist/3d/renderers/getThreeObjectRenderers.d.ts +6 -0
  14. package/dist/3d/renderers/renderThreeSceneFallback.d.ts +3 -0
  15. package/dist/3d/renderers/renderThreeScenePowerPointFallback.d.ts +3 -0
  16. package/dist/3d/renderers/threeFallbackRenderers.d.ts +5 -0
  17. package/dist/3d/types/ThreeModules.d.ts +10 -0
  18. package/dist/3d/utils/colorToThreeHex.d.ts +2 -0
  19. package/dist/3d/utils/inspectThreeModel.d.ts +4 -0
  20. package/dist/3d/utils/installThreeSceneCaptureApi.d.ts +21 -0
  21. package/dist/3d/utils/loadThreeModules.d.ts +2 -0
  22. package/dist/3d/utils/modelCache.d.ts +6 -0
  23. package/dist/3d/utils/modelInspection.d.ts +23 -0
  24. package/dist/3d/utils/modelInspection.test.d.ts +1 -0
  25. package/dist/3d/utils/modelPaths.d.ts +14 -0
  26. package/dist/3d/utils/modelPaths.test.d.ts +1 -0
  27. package/dist/3d.js +2 -0
  28. package/dist/3d.js.map +1 -0
  29. package/dist/3d.mjs +1055 -0
  30. package/dist/3d.mjs.map +1 -0
  31. package/dist/export/browser-image-renderer/BrowserImageRenderer.d.ts +7 -0
  32. package/dist/export/browser-image-renderer/types/BrowserImageRendererProps.d.ts +36 -0
  33. package/dist/export/browser.d.ts +2 -0
  34. package/dist/export/image-renderer/ImageRenderer.d.ts +1 -1
  35. package/dist/export/index.d.ts +2 -0
  36. package/dist/export/utils/getImageExportFrames.d.ts +14 -0
  37. package/dist/export/utils/getImageExportFrames.test.d.ts +1 -0
  38. package/dist/export-browser.js +6 -0
  39. package/dist/export-browser.js.map +1 -0
  40. package/dist/export-browser.mjs +2231 -0
  41. package/dist/export-browser.mjs.map +1 -0
  42. package/dist/export.js +74 -72
  43. package/dist/export.js.map +1 -1
  44. package/dist/export.mjs +5443 -4333
  45. package/dist/export.mjs.map +1 -1
  46. package/dist/objects/Image.d.ts +2 -1
  47. package/dist/presenter.js +5 -5
  48. package/dist/presenter.js.map +1 -1
  49. package/dist/presenter.mjs +1820 -1794
  50. package/dist/presenter.mjs.map +1 -1
  51. package/dist/renderer/browser-canvas/types/BrowserCanvasObjectRenderer.d.ts +8 -1
  52. package/dist/renderer/browser-canvas/utils/text/getTextLayout.d.ts +4 -11
  53. package/dist/renderer/browser-canvas/utils/text/getTextUnitMeasurements.d.ts +9 -0
  54. package/dist/utils/presentation/getImagePathUrlById.d.ts +2 -0
  55. package/dist/utils/presentation/getObjectChildren.d.ts +1 -1
  56. package/package.json +23 -3
@@ -6,11 +6,18 @@ import { UnifiedPath2D } from './UnifiedPath2D';
6
6
  export interface BrowserCanvasObjectRendererArgs<T extends SlideObject> {
7
7
  readonly ctx: UnifiedCanvasContext;
8
8
  readonly object: T;
9
+ /** Stable object reference before animations are applied, needed for 3D animation */
10
+ readonly originalObject: SlideObject;
9
11
  readonly opacity: number;
10
12
  readonly renderScale: number;
11
13
  readonly slideSize: Size;
12
14
  readonly imageById: Record<string, UnifiedImage>;
13
15
  readonly createPath2D: (path?: string) => UnifiedPath2D;
14
- readonly renderObject: (object: SlideObject, overallOpacity: number) => void;
16
+ /**
17
+ * Returns the current animated state for an original slide object reference.
18
+ * Needed for ThreeScene to access animated state of child meshes.
19
+ */
20
+ readonly getCurrentObject: <TObject extends SlideObject>(object: TObject) => TObject | undefined;
21
+ readonly renderObject: (object: SlideObject, overallOpacity: number, ctx?: UnifiedCanvasContext) => void;
15
22
  }
16
23
  export type BrowserCanvasObjectRenderer<T extends SlideObject> = (args: BrowserCanvasObjectRendererArgs<T>) => void;
@@ -1,18 +1,11 @@
1
1
  import { Size } from '../../../../types/Size';
2
2
  import { TextUnitMeasurement } from './getTextUnitMeasurements';
3
- export interface TextLineLayout extends Size {
4
- readonly baselineY: number;
5
- readonly bottom: number;
6
- readonly lineAdvance: number;
7
- readonly top: number;
8
- }
9
- export interface TextLayout {
10
- readonly lines: readonly TextLineLayout[];
11
- readonly size: Size;
12
- }
13
3
  /**
14
4
  * Computes text block bounds and per-line baseline positions.
15
5
  *
16
6
  * Accepts as input per-line measurements for each text unit, plus a desired line spacing.
17
7
  */
18
- export declare function getTextLayout(lineMeasurements: readonly (readonly TextUnitMeasurement[])[], lineSpacing?: number): TextLayout;
8
+ export declare function getTextLayout(lineMeasurements: readonly (readonly TextUnitMeasurement[])[], lineSpacing?: number): {
9
+ baselines: number[];
10
+ size: Size;
11
+ };
@@ -2,10 +2,19 @@ import { Size } from '../../../../types/Size';
2
2
  import { TextStyle } from '../../../../types/TextStyle';
3
3
  import { TextUnit } from '../../../../types/TextUnit';
4
4
  import { UnifiedCanvasContext } from '../../types/UnifiedCanvasContext';
5
+ /**
6
+ * Font measurements for one styled text unit, in canvas pixels.
7
+ *
8
+ * The inherited `width` is the horizontal advance, while `height` is `top + bottom`.
9
+ */
5
10
  export interface TextUnitMeasurement extends Size {
11
+ /** Offset added to the line baseline when drawing; negative values move text upward. */
6
12
  readonly baselineShift: number;
13
+ /** Distance from the line baseline to the bottom of the font bounds. */
7
14
  readonly bottom: number;
15
+ /** Font size used to calculate the line box height. */
8
16
  readonly lineAdvance: number;
17
+ /** Distance from the line baseline to the top of the font bounds. */
9
18
  readonly top: number;
10
19
  }
11
20
  export declare function getTextUnitMeasurements(textUnits: TextUnit[][], style: TextStyle, ctx: UnifiedCanvasContext): TextUnitMeasurement[][];
@@ -0,0 +1,2 @@
1
+ import { Presentation } from '../../types/Presentation';
2
+ export declare function getImagePathUrlById(presentation: Presentation): Record<string, string>;
@@ -1,5 +1,5 @@
1
1
  import { SlideObject } from '../../types/SlideObject';
2
2
  /**
3
- * Returns the children of a SlideObject if they exist by checking for an "objects" property.
3
+ * Returns the children of a SlideObject if they exist.
4
4
  */
5
5
  export declare function getObjectChildren(object: SlideObject): SlideObject[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "presenter",
3
- "version": "0.9.3",
3
+ "version": "0.10.0",
4
4
  "description": "A JavaScript presentation library",
5
5
  "main": "dist/presenter.js",
6
6
  "types": "dist/index.d.ts",
@@ -14,13 +14,23 @@
14
14
  "types": "./dist/export/index.d.ts",
15
15
  "import": "./dist/export.mjs",
16
16
  "require": "./dist/export.js"
17
+ },
18
+ "./export/browser": {
19
+ "types": "./dist/export/browser.d.ts",
20
+ "import": "./dist/export-browser.mjs",
21
+ "require": "./dist/export-browser.js"
22
+ },
23
+ "./3d": {
24
+ "types": "./dist/3d/index.d.ts",
25
+ "import": "./dist/3d.mjs",
26
+ "require": "./dist/3d.js"
17
27
  }
18
28
  },
19
29
  "files": [
20
30
  "./dist/"
21
31
  ],
22
32
  "scripts": {
23
- "build": "vite build && vite build --config vite.config.export.ts",
33
+ "build": "vite build && vite build --config vite.config.export.ts && vite build --config vite.config.browser-export.ts && vite build --config vite.config.3d.ts",
24
34
  "bump-version": "sh scripts/bump-version.sh",
25
35
  "watch": "vite build --watch",
26
36
  "prettier": "prettier . --write --ignore-unknown",
@@ -45,12 +55,21 @@
45
55
  "skia-canvas": "^3.0.8",
46
56
  "svg-path-properties": "^2.0.0"
47
57
  },
58
+ "peerDependencies": {
59
+ "three": "^0.185.1"
60
+ },
61
+ "peerDependenciesMeta": {
62
+ "three": {
63
+ "optional": true
64
+ }
65
+ },
48
66
  "devDependencies": {
49
67
  "@eslint/js": "^9.35.0",
50
68
  "@types/d3-ease": "^3.0.2",
51
69
  "@types/flubber": "^0.4.0",
52
70
  "@types/jest": "^30.0.0",
53
71
  "@types/node": "^25.5.2",
72
+ "@types/three": "^0.185.0",
54
73
  "ajv": "^8.18.0",
55
74
  "eslint": "^9.35.0",
56
75
  "eslint-plugin-simple-import-sort": "^12.1.1",
@@ -60,10 +79,11 @@
60
79
  "jest-environment-jsdom": "^30.3.0",
61
80
  "jiti": "^2.6.1",
62
81
  "prettier": "^3.6.2",
82
+ "three": "^0.185.1",
63
83
  "ts-jest": "^29.4.9",
64
84
  "typescript": "^6.0.2",
65
85
  "typescript-eslint": "^8.58.0",
66
- "vite": "^6.1.0",
86
+ "vite": "^6.4.3",
67
87
  "vite-plugin-dts": "^4.5.4"
68
88
  },
69
89
  "lint-staged": {