@revideo/2d 0.2.5 → 0.2.6-alpha.904

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 (69) hide show
  1. package/lib/components/Audio.d.ts +11 -11
  2. package/lib/components/Audio.d.ts.map +1 -1
  3. package/lib/components/Audio.js +109 -115
  4. package/lib/components/Code.d.ts +211 -244
  5. package/lib/components/Code.d.ts.map +1 -1
  6. package/lib/components/Code.js +269 -317
  7. package/lib/components/CodeBlock.d.ts +67 -109
  8. package/lib/components/CodeBlock.d.ts.map +1 -1
  9. package/lib/components/CodeBlock.js +373 -414
  10. package/lib/components/Curve.js +269 -270
  11. package/lib/components/Grid.js +56 -63
  12. package/lib/components/Icon.js +50 -58
  13. package/lib/components/Img.d.ts +79 -86
  14. package/lib/components/Img.d.ts.map +1 -1
  15. package/lib/components/Img.js +181 -193
  16. package/lib/components/Knot.js +60 -81
  17. package/lib/components/Latex.js +65 -77
  18. package/lib/components/Layout.d.ts +413 -455
  19. package/lib/components/Layout.d.ts.map +1 -1
  20. package/lib/components/Layout.js +681 -666
  21. package/lib/components/Line.js +193 -216
  22. package/lib/components/Media.d.ts +35 -35
  23. package/lib/components/Media.d.ts.map +1 -1
  24. package/lib/components/Media.js +134 -135
  25. package/lib/components/Node.d.ts +830 -875
  26. package/lib/components/Node.d.ts.map +1 -1
  27. package/lib/components/Node.js +1314 -1383
  28. package/lib/components/SVG.js +541 -609
  29. package/lib/components/Shape.d.ts +35 -44
  30. package/lib/components/Shape.d.ts.map +1 -1
  31. package/lib/components/Shape.js +127 -112
  32. package/lib/components/Spline.js +175 -190
  33. package/lib/components/Txt.d.ts +44 -55
  34. package/lib/components/Txt.d.ts.map +1 -1
  35. package/lib/components/Txt.js +155 -156
  36. package/lib/components/TxtLeaf.d.ts +16 -20
  37. package/lib/components/TxtLeaf.d.ts.map +1 -1
  38. package/lib/components/TxtLeaf.js +2 -2
  39. package/lib/components/Video.d.ts +45 -41
  40. package/lib/components/Video.d.ts.map +1 -1
  41. package/lib/components/Video.js +202 -138
  42. package/lib/components/View2D.d.ts +22 -21
  43. package/lib/components/View2D.d.ts.map +1 -1
  44. package/lib/components/View2D.js +89 -98
  45. package/lib/components/index.js +1 -1
  46. package/lib/components/types.js +1 -1
  47. package/lib/curves/ArcSegment.js +94 -145
  48. package/lib/scenes/Scene2D.d.ts +23 -42
  49. package/lib/scenes/Scene2D.d.ts.map +1 -1
  50. package/lib/scenes/Scene2D.js +152 -161
  51. package/lib/scenes/index.js +1 -1
  52. package/lib/scenes/makeScene2D.js +10 -10
  53. package/lib/scenes/useScene2D.js +3 -3
  54. package/lib/tsconfig.build.tsbuildinfo +1 -1
  55. package/lib/utils/CanvasUtils.d.ts +21 -93
  56. package/package.json +5 -5
  57. package/src/lib/components/Audio.ts +2 -2
  58. package/src/lib/components/Code.ts +4 -2
  59. package/src/lib/components/CodeBlock.ts +1 -1
  60. package/src/lib/components/Img.ts +2 -2
  61. package/src/lib/components/Layout.ts +2 -2
  62. package/src/lib/components/Media.ts +3 -1
  63. package/src/lib/components/Node.ts +9 -9
  64. package/src/lib/components/Shape.ts +2 -2
  65. package/src/lib/components/Txt.ts +2 -2
  66. package/src/lib/components/TxtLeaf.ts +1 -1
  67. package/src/lib/components/Video.ts +114 -8
  68. package/src/lib/components/View2D.ts +6 -2
  69. package/src/lib/scenes/Scene2D.ts +4 -3
@@ -1,38 +1,25 @@
1
- var __decorate =
2
- (this && this.__decorate) ||
3
- function (decorators, target, key, desc) {
4
- var c = arguments.length,
5
- r =
6
- c < 3
7
- ? target
8
- : desc === null
9
- ? (desc = Object.getOwnPropertyDescriptor(target, key))
10
- : desc,
11
- d;
12
- if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
13
- r = Reflect.decorate(decorators, target, key, desc);
14
- else
15
- for (var i = decorators.length - 1; i >= 0; i--)
16
- if ((d = decorators[i]))
17
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
19
- };
20
- import {DependencyContext, useLogger} from '@revideo/core';
21
- import {liteAdaptor} from 'mathjax-full/js/adaptors/liteAdaptor';
22
- import {RegisterHTMLHandler} from 'mathjax-full/js/handlers/html';
23
- import {TeX} from 'mathjax-full/js/input/tex';
24
- import {AllPackages} from 'mathjax-full/js/input/tex/AllPackages';
25
- import {mathjax} from 'mathjax-full/js/mathjax';
26
- import {SVG} from 'mathjax-full/js/output/svg';
27
- import {initial, signal} from '../decorators';
28
- import {Img} from './Img';
6
+ };
7
+ import { DependencyContext, useLogger, } from '@revideo/core';
8
+ import { liteAdaptor } from 'mathjax-full/js/adaptors/liteAdaptor';
9
+ import { RegisterHTMLHandler } from 'mathjax-full/js/handlers/html';
10
+ import { TeX } from 'mathjax-full/js/input/tex';
11
+ import { AllPackages } from 'mathjax-full/js/input/tex/AllPackages';
12
+ import { mathjax } from 'mathjax-full/js/mathjax';
13
+ import { SVG } from 'mathjax-full/js/output/svg';
14
+ import { initial, signal } from '../decorators';
15
+ import { Img } from './Img';
29
16
  const Adaptor = liteAdaptor();
30
17
  RegisterHTMLHandler(Adaptor);
31
18
  const JaxDocument = mathjax.document('', {
32
- // eslint-disable-next-line @typescript-eslint/naming-convention
33
- InputJax: new TeX({packages: AllPackages}),
34
- // eslint-disable-next-line @typescript-eslint/naming-convention
35
- OutputJax: new SVG({fontCache: 'local'}),
19
+ // eslint-disable-next-line @typescript-eslint/naming-convention
20
+ InputJax: new TeX({ packages: AllPackages }),
21
+ // eslint-disable-next-line @typescript-eslint/naming-convention
22
+ OutputJax: new SVG({ fontCache: 'local' }),
36
23
  });
37
24
  /**
38
25
  * A node for rendering equations with LaTeX.
@@ -53,53 +40,54 @@ const JaxDocument = mathjax.document('', {
53
40
  * ```
54
41
  */
55
42
  export class Latex extends Img {
56
- constructor(props) {
57
- super({...props, src: null});
58
- this.imageElement = document.createElement('img');
59
- }
60
- image() {
61
- // Render props may change the look of the TeX, so we need to cache both
62
- // source and render props together.
63
- const src = `${this.tex()}::${JSON.stringify(this.options())}`;
64
- if (Latex.svgContentsPool[src]) {
65
- this.imageElement.src = Latex.svgContentsPool[src];
66
- if (!this.imageElement.complete) {
67
- DependencyContext.collectPromise(
68
- new Promise((resolve, reject) => {
69
- this.imageElement.addEventListener('load', resolve);
70
- this.imageElement.addEventListener('error', reject);
71
- }),
72
- );
73
- }
74
- return this.imageElement;
43
+ constructor(props) {
44
+ super({ ...props, src: null });
45
+ this.imageElement = document.createElement('img');
75
46
  }
76
- // Convert to TeX, look for any errors
77
- const tex = this.tex();
78
- const svg = Adaptor.innerHTML(JaxDocument.convert(tex, this.options()));
79
- if (svg.includes('data-mjx-error')) {
80
- const errors = svg.match(/data-mjx-error="(.*?)"/);
81
- if (errors && errors.length > 0) {
82
- useLogger().error(`Invalid MathJax: ${errors[1]}`);
83
- }
47
+ image() {
48
+ // Render props may change the look of the TeX, so we need to cache both
49
+ // source and render props together.
50
+ const src = `${this.tex()}::${JSON.stringify(this.options())}`;
51
+ if (Latex.svgContentsPool[src]) {
52
+ this.imageElement.src = Latex.svgContentsPool[src];
53
+ if (!this.imageElement.complete) {
54
+ DependencyContext.collectPromise(new Promise((resolve, reject) => {
55
+ this.imageElement.addEventListener('load', resolve);
56
+ this.imageElement.addEventListener('error', reject);
57
+ }));
58
+ }
59
+ return this.imageElement;
60
+ }
61
+ // Convert to TeX, look for any errors
62
+ const tex = this.tex();
63
+ const svg = Adaptor.innerHTML(JaxDocument.convert(tex, this.options()));
64
+ if (svg.includes('data-mjx-error')) {
65
+ const errors = svg.match(/data-mjx-error="(.*?)"/);
66
+ if (errors && errors.length > 0) {
67
+ useLogger().error(`Invalid MathJax: ${errors[1]}`);
68
+ }
69
+ }
70
+ // Encode to raw base64 image format
71
+ const text = `data:image/svg+xml;base64,${btoa(`<?xml version="1.0" encoding="UTF-8" standalone="no" ?>\n${svg}`)}`;
72
+ Latex.svgContentsPool[src] = text;
73
+ const image = document.createElement('img');
74
+ image.src = text;
75
+ image.src = text;
76
+ if (!image.complete) {
77
+ DependencyContext.collectPromise(new Promise((resolve, reject) => {
78
+ image.addEventListener('load', resolve);
79
+ image.addEventListener('error', reject);
80
+ }));
81
+ }
82
+ return image;
84
83
  }
85
- // Encode to raw base64 image format
86
- const text = `data:image/svg+xml;base64,${btoa(`<?xml version="1.0" encoding="UTF-8" standalone="no" ?>\n${svg}`)}`;
87
- Latex.svgContentsPool[src] = text;
88
- const image = document.createElement('img');
89
- image.src = text;
90
- image.src = text;
91
- if (!image.complete) {
92
- DependencyContext.collectPromise(
93
- new Promise((resolve, reject) => {
94
- image.addEventListener('load', resolve);
95
- image.addEventListener('error', reject);
96
- }),
97
- );
98
- }
99
- return image;
100
- }
101
84
  }
102
85
  Latex.svgContentsPool = {};
103
- __decorate([initial({}), signal()], Latex.prototype, 'options', void 0);
104
- __decorate([signal()], Latex.prototype, 'tex', void 0);
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF0ZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvTGF0ZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUdqQixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDbEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUUvQyxPQUFPLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUMsR0FBRyxFQUFXLE1BQU0sT0FBTyxDQUFDO0FBRXBDLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQzlCLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRTdCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO0lBQ3ZDLGdFQUFnRTtJQUNoRSxRQUFRLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLENBQUM7SUFDMUMsZ0VBQWdFO0lBQ2hFLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsQ0FBQztDQUN6QyxDQUFDLENBQUM7QUFPSDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLE9BQU8sS0FBTSxTQUFRLEdBQUc7SUFZNUIsWUFBbUIsS0FBaUI7UUFDbEMsS0FBSyxD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
86
+ __decorate([
87
+ initial({}),
88
+ signal()
89
+ ], Latex.prototype, "options", void 0);
90
+ __decorate([
91
+ signal()
92
+ ], Latex.prototype, "tex", void 0);
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF0ZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvTGF0ZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUdqQixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDbEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUUvQyxPQUFPLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUMsR0FBRyxFQUFXLE1BQU0sT0FBTyxDQUFDO0FBRXBDLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQzlCLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRTdCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO0lBQ3ZDLGdFQUFnRTtJQUNoRSxRQUFRLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLENBQUM7SUFDMUMsZ0VBQWdFO0lBQ2hFLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsQ0FBQztDQUN6QyxDQUFDLENBQUM7QUFPSDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLE9BQU8sS0FBTSxTQUFRLEdBQUc7SUFZNUIsWUFBbUIsS0FBaUI7UUFDbEMsS0FBSyxD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