textmode.export.js 1.3.0 → 1.5.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 (74) hide show
  1. package/README.md +1 -1
  2. package/dist/textmode.export.esm.js +5102 -1513
  3. package/dist/textmode.export.umd.js +68 -2
  4. package/dist/types/exporters/base/LayerTarget.d.ts +46 -0
  5. package/dist/types/exporters/base/LayerTarget.d.ts.map +1 -0
  6. package/dist/types/exporters/base/index.d.ts +2 -0
  7. package/dist/types/exporters/base/index.d.ts.map +1 -1
  8. package/dist/types/exporters/gif/GIFExporter.d.ts +1 -1
  9. package/dist/types/exporters/gif/GIFExporter.d.ts.map +1 -1
  10. package/dist/types/exporters/gif/GIFRecorder.d.ts +1 -1
  11. package/dist/types/exporters/gif/GIFRecorder.d.ts.map +1 -1
  12. package/dist/types/exporters/json/JSONDataExtractor.d.ts +3 -4
  13. package/dist/types/exporters/json/JSONDataExtractor.d.ts.map +1 -1
  14. package/dist/types/exporters/json/JSONExporter.d.ts +12 -7
  15. package/dist/types/exporters/json/JSONExporter.d.ts.map +1 -1
  16. package/dist/types/exporters/json/index.d.ts +1 -1
  17. package/dist/types/exporters/json/index.d.ts.map +1 -1
  18. package/dist/types/exporters/json/types.d.ts +78 -15
  19. package/dist/types/exporters/json/types.d.ts.map +1 -1
  20. package/dist/types/exporters/svg/SVGContentGenerator.d.ts +1 -1
  21. package/dist/types/exporters/svg/SVGContentGenerator.d.ts.map +1 -1
  22. package/dist/types/exporters/svg/SVGExporter.d.ts.map +1 -1
  23. package/dist/types/exporters/svg/SVGPathGenerator.d.ts +1 -1
  24. package/dist/types/exporters/svg/SVGPathGenerator.d.ts.map +1 -1
  25. package/dist/types/exporters/svg/types.d.ts +3 -1
  26. package/dist/types/exporters/svg/types.d.ts.map +1 -1
  27. package/dist/types/exporters/txt/TXTExporter.d.ts.map +1 -1
  28. package/dist/types/exporters/txt/TXTExporter.test.d.ts +2 -0
  29. package/dist/types/exporters/txt/TXTExporter.test.d.ts.map +1 -0
  30. package/dist/types/exporters/txt/types.d.ts +3 -1
  31. package/dist/types/exporters/txt/types.d.ts.map +1 -1
  32. package/dist/types/exporters/video/VideoExporter.d.ts +13 -17
  33. package/dist/types/exporters/video/VideoExporter.d.ts.map +1 -1
  34. package/dist/types/exporters/video/VideoExporter.test.d.ts +2 -0
  35. package/dist/types/exporters/video/VideoExporter.test.d.ts.map +1 -0
  36. package/dist/types/exporters/video/VideoFrameDriver.d.ts +32 -0
  37. package/dist/types/exporters/video/VideoFrameDriver.d.ts.map +1 -0
  38. package/dist/types/exporters/video/VideoFrameDriver.test.d.ts +2 -0
  39. package/dist/types/exporters/video/VideoFrameDriver.test.d.ts.map +1 -0
  40. package/dist/types/exporters/video/VideoRecorder.d.ts +10 -23
  41. package/dist/types/exporters/video/VideoRecorder.d.ts.map +1 -1
  42. package/dist/types/exporters/video/VideoRecorder.test.d.ts +2 -0
  43. package/dist/types/exporters/video/VideoRecorder.test.d.ts.map +1 -0
  44. package/dist/types/exporters/video/errors.d.ts +9 -0
  45. package/dist/types/exporters/video/errors.d.ts.map +1 -0
  46. package/dist/types/exporters/video/index.d.ts +3 -1
  47. package/dist/types/exporters/video/index.d.ts.map +1 -1
  48. package/dist/types/exporters/video/types.d.ts +147 -5
  49. package/dist/types/exporters/video/types.d.ts.map +1 -1
  50. package/dist/types/index.d.ts +7 -30
  51. package/dist/types/index.d.ts.map +1 -1
  52. package/dist/types/overlay/blades/Blade.d.ts +2 -0
  53. package/dist/types/overlay/blades/Blade.d.ts.map +1 -1
  54. package/dist/types/overlay/blades/JSONBlade.d.ts +5 -0
  55. package/dist/types/overlay/blades/JSONBlade.d.ts.map +1 -1
  56. package/dist/types/overlay/blades/SVGBlade.d.ts +2 -0
  57. package/dist/types/overlay/blades/SVGBlade.d.ts.map +1 -1
  58. package/dist/types/overlay/blades/TextBlade.d.ts +2 -0
  59. package/dist/types/overlay/blades/TextBlade.d.ts.map +1 -1
  60. package/dist/types/overlay/blades/VideoBlade.d.ts +10 -1
  61. package/dist/types/overlay/blades/VideoBlade.d.ts.map +1 -1
  62. package/dist/types/overlay/components/inputs/LayerTargetSelect.d.ts +20 -0
  63. package/dist/types/overlay/components/inputs/LayerTargetSelect.d.ts.map +1 -0
  64. package/dist/types/overlay/core/OverlayController.d.ts +1 -0
  65. package/dist/types/overlay/core/OverlayController.d.ts.map +1 -1
  66. package/dist/types/overlay/formatRegistry.d.ts +2 -1
  67. package/dist/types/overlay/formatRegistry.d.ts.map +1 -1
  68. package/dist/types/overlay/formatRegistry.test.d.ts +2 -0
  69. package/dist/types/overlay/formatRegistry.test.d.ts.map +1 -0
  70. package/dist/types/overlay/index.d.ts +3 -1
  71. package/dist/types/overlay/index.d.ts.map +1 -1
  72. package/dist/types/types.d.ts +36 -21
  73. package/dist/types/types.d.ts.map +1 -1
  74. package/package.json +5 -4
@@ -0,0 +1,46 @@
1
+ import type { Textmodifier, TextmodeFramebuffer, TextmodeGrid } from 'textmode.js';
2
+ import type { TextmodeFont, TextmodeTileset } from 'textmode.js';
3
+ import type { TextmodeLayer } from 'textmode.js';
4
+ /**
5
+ * Shared option for exporters that read layer framebuffer data.
6
+ */
7
+ export interface LayerExportOptions {
8
+ /**
9
+ * Layer to export.
10
+ *
11
+ * Defaults to `textmodifier.layers.base`.
12
+ */
13
+ layer?: TextmodeLayer;
14
+ }
15
+ export interface ResolvedLayerExportTarget {
16
+ id: string;
17
+ label: string;
18
+ layer: TextmodeLayer;
19
+ grid: TextmodeGrid;
20
+ font: TextmodeFont | TextmodeTileset;
21
+ drawFramebuffer: TextmodeFramebuffer;
22
+ }
23
+ export interface ResolvedLayerStackExportTarget extends ResolvedLayerExportTarget {
24
+ visible: boolean;
25
+ opacity: number;
26
+ blendMode: string;
27
+ offsetX: number;
28
+ offsetY: number;
29
+ rotationZ: number;
30
+ }
31
+ export interface LayerTargetOption {
32
+ id: string;
33
+ label: string;
34
+ layer: TextmodeLayer;
35
+ }
36
+ export interface LayerTargetProvider {
37
+ getOptions(): LayerTargetOption[];
38
+ getLayerById(id: string): TextmodeLayer | undefined;
39
+ getDefaultId(): string;
40
+ }
41
+ export declare function getLayerTargetOptions(textmodifier: Textmodifier): LayerTargetOption[];
42
+ export declare function createLayerTargetProvider(textmodifier: Textmodifier): LayerTargetProvider;
43
+ export declare function getLayerTargetId(textmodifier: Textmodifier, layer: TextmodeLayer): string;
44
+ export declare function resolveLayerExportTarget(textmodifier: Textmodifier, layer?: TextmodeLayer): ResolvedLayerExportTarget;
45
+ export declare function resolveLayerStackExportTargets(textmodifier: Textmodifier): ResolvedLayerStackExportTarget[];
46
+ //# sourceMappingURL=LayerTarget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayerTarget.d.ts","sourceRoot":"","sources":["../../../../src/exporters/base/LayerTarget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC;;;;OAIG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,GAAG,eAAe,CAAC;IACrC,eAAe,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,8BAA+B,SAAQ,yBAAyB;IAChF,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IACnC,UAAU,IAAI,iBAAiB,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IACpD,YAAY,IAAI,MAAM,CAAC;CACvB;AAQD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,YAAY,GAAG,iBAAiB,EAAE,CAWrF;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,YAAY,GAAG,mBAAmB,CAMzF;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAWzF;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,yBAAyB,CAmBrH;AAED,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,YAAY,GAAG,8BAA8B,EAAE,CAwB3G"}
@@ -1,4 +1,6 @@
1
1
  export { DataExtractor } from './DataExtractor';
2
2
  export { FileHandler } from './FileHandler';
3
3
  export { getEncodedGlyphValueFromColor, resolveGlyphByEncodedValue } from './CharacterResolver';
4
+ export { createLayerTargetProvider, getLayerTargetId, getLayerTargetOptions, resolveLayerExportTarget, resolveLayerStackExportTargets, } from './LayerTarget';
5
+ export type { LayerExportOptions, LayerTargetOption, LayerTargetProvider, ResolvedLayerExportTarget, ResolvedLayerStackExportTarget, } from './LayerTarget';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exporters/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exporters/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EACN,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,EACxB,8BAA8B,GAC9B,MAAM,eAAe,CAAC;AACvB,YAAY,EACX,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,8BAA8B,GAC9B,MAAM,eAAe,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Textmodifier } from 'textmode.js';
2
- import type { TextmodePluginContext } from 'textmode.js/plugins';
2
+ import type { TextmodePluginContext } from 'textmode.js';
3
3
  import type { GIFExportOptions } from './types';
4
4
  /**
5
5
  * Main GIF exporter for the textmode.js library.
@@ -1 +1 @@
1
- {"version":3,"file":"GIFExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/gif/GIFExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,SAAS,CAAC;AAItE;;;;GAIG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IAEtF;;;;;OAKG;gBACS,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,sBAAsB,CAAC;IAM3G;;;;OAIG;IACU,QAAQ,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DpE;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;CAc5B"}
1
+ {"version":3,"file":"GIFExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/gif/GIFExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,SAAS,CAAC;AAItE;;;;GAIG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IAEtF;;;;;OAKG;gBACS,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,sBAAsB,CAAC;IAM3G;;;;OAIG;IACU,QAAQ,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DpE;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;CAc5B"}
@@ -1,4 +1,4 @@
1
- import type { TextmodePluginContext } from 'textmode.js/plugins';
1
+ import type { TextmodePluginContext } from 'textmode.js';
2
2
  import type { GIFExportProgress, GIFFrame, GIFGenerationOptions } from './types';
3
3
  /**
4
4
  * Records frames from a canvas for GIF generation.
@@ -1 +1 @@
1
- {"version":3,"file":"GIFRecorder.d.ts","sourceRoot":"","sources":["../../../../src/exporters/gif/GIFRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEjF;;;GAGG;AACH,qBAAa,WAAW;IACvB,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAC,CAAoB;IAEpC,4CAA4C;IAC5C,OAAO,CAAC,IAAI,CAAC,CAA2B;IAExC;;;;;;;;;OASG;IACU,OAAO,CACnB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,oBAAoB,EAC7B,oBAAoB,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,EACnE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,GAChD,OAAO,CAAC,QAAQ,EAAE,CAAC;CAoItB"}
1
+ {"version":3,"file":"GIFRecorder.d.ts","sourceRoot":"","sources":["../../../../src/exporters/gif/GIFRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEjF;;;GAGG;AACH,qBAAa,WAAW;IACvB,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAC,CAAoB;IAEpC,4CAA4C;IAC5C,OAAO,CAAC,IAAI,CAAC,CAA2B;IAExC;;;;;;;;;OASG;IACU,OAAO,CACnB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,oBAAoB,EAC7B,oBAAoB,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,EACnE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,GAChD,OAAO,CAAC,QAAQ,EAAE,CAAC;CAoItB"}
@@ -1,5 +1,4 @@
1
- import type { Textmodifier } from 'textmode.js';
2
- import { DataExtractor } from '../base';
1
+ import { DataExtractor, type ResolvedLayerExportTarget } from '../base';
3
2
  import type { JSONCellData } from './types';
4
3
  /**
5
4
  * Extracts structured cell data from the base textmode layer for JSON export.
@@ -8,9 +7,9 @@ export declare class JSONDataExtractor extends DataExtractor {
8
7
  /**
9
8
  * Extracts all base-layer cell data needed for JSON export.
10
9
  *
11
- * @param textmodifier The Textmodifier instance to extract data from
10
+ * @param target The resolved layer target to extract data from
12
11
  * @returns Row-major cell data for the current base layer
13
12
  */
14
- $extractCellData(textmodifier: Textmodifier): JSONCellData[];
13
+ $extractCellData(target: ResolvedLayerExportTarget): JSONCellData[];
15
14
  }
16
15
  //# sourceMappingURL=JSONDataExtractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"JSONDataExtractor.d.ts","sourceRoot":"","sources":["../../../../src/exporters/json/JSONDataExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAA8B,MAAM,SAAS,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IACnD;;;;;OAKG;IACI,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,YAAY,EAAE;CAkCnE"}
1
+ {"version":3,"file":"JSONDataExtractor.d.ts","sourceRoot":"","sources":["../../../../src/exporters/json/JSONDataExtractor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAA8B,KAAK,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IACnD;;;;;OAKG;IACI,gBAAgB,CAAC,MAAM,EAAE,yBAAyB,GAAG,YAAY,EAAE;CAkC1E"}
@@ -1,8 +1,8 @@
1
1
  import type { Textmodifier } from 'textmode.js';
2
- import type { JSONExportOptions, TextmodeLayerJSON } from './types';
2
+ import type { JSONExportOptions, TextmodeDocumentJSON } from './types';
3
3
  /**
4
4
  * Main JSON exporter for the textmode.js library.
5
- * Orchestrates structured base-layer export and file download.
5
+ * Orchestrates structured selected-layer or layer-stack export and file download.
6
6
  */
7
7
  export declare class JSONExporter {
8
8
  /**
@@ -12,6 +12,7 @@ export declare class JSONExporter {
12
12
  * @returns Complete options with defaults applied
13
13
  */
14
14
  private _applyDefaultOptions;
15
+ private _createMetadata;
15
16
  /**
16
17
  * Converts an RGBA color to the configured JSON representation.
17
18
  *
@@ -24,21 +25,25 @@ export declare class JSONExporter {
24
25
  * Creates the row-based cell encoding.
25
26
  *
26
27
  * @param cells Extracted cell data
27
- * @param textmodifier The Textmodifier instance for grid dimensions
28
+ * @param cols Number of grid columns
29
+ * @param rows Number of grid rows
28
30
  * @param colorMode Configured color mode
29
31
  * @returns Readable row-based cell structure
30
32
  */
31
33
  private _createObjectRowsCells;
34
+ private _createLayerGrid;
35
+ private _createLayerCells;
36
+ private _createStackLayer;
32
37
  /**
33
- * Generates structured JSON layer data without serializing it.
38
+ * Generates structured JSON document data without serializing it.
34
39
  *
35
40
  * @param textmodifier The Textmodifier instance to extract data from
36
41
  * @param options Export options
37
- * @returns Structured JSON document for the base layer
42
+ * @returns Structured JSON document for the selected layer or layer stack
38
43
  */
39
- $generateJSONData(textmodifier: Textmodifier, options?: JSONExportOptions): TextmodeLayerJSON;
44
+ $generateJSONData(textmodifier: Textmodifier, options?: JSONExportOptions): TextmodeDocumentJSON;
40
45
  /**
41
- * Generates the serialized JSON string for the current base layer.
46
+ * Generates the serialized JSON string for the selected layer or layer stack.
42
47
  *
43
48
  * @param textmodifier The Textmodifier instance to extract data from
44
49
  * @param options Export options
@@ -1 +1 @@
1
- {"version":3,"file":"JSONExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/json/JSONExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,KAAK,EAGX,iBAAiB,EAGjB,iBAAiB,EACjB,MAAM,SAAS,CAAC;AAIjB;;;GAGG;AACH,qBAAa,YAAY;IACxB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAcpB;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;;;;OAMG;IACI,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,iBAAsB,GAAG,iBAAiB;IAqCxG;;;;;;OAMG;IACI,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM;IAQ/F;;;;;OAKG;IACI,SAAS,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI;CASnF"}
1
+ {"version":3,"file":"JSONExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/json/JSONExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAUhD,OAAO,KAAK,EAKX,iBAAiB,EAIjB,oBAAoB,EAEpB,MAAM,SAAS,CAAC;AAKjB;;;GAGG;AACH,qBAAa,YAAY;IACxB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,eAAe;IAYvB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAcpB;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,iBAAiB;IAiBzB;;;;;;OAMG;IACI,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,iBAAsB,GAAG,oBAAoB;IAwC3G;;;;;;OAMG;IACI,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM;IAQ/F;;;;;OAKG;IACI,SAAS,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI;CASnF"}
@@ -1,4 +1,4 @@
1
1
  export { JSONExporter } from './JSONExporter';
2
2
  export { JSONDataExtractor } from './JSONDataExtractor';
3
- export type { JSONCellCollection, JSONCellData, JSONCellTransform, JSONColorValue, JSONExportColorMode, JSONExportMetadata, JSONExportOptions, JSONGenerationOptions, JSONObjectRowCell, JSONObjectRowsCellCollection, JSONRGBAColor, TextmodeLayerJSON, } from './types';
3
+ export type { JSONDocumentFormat, JSONDocumentVersion, JSONCellCollection, JSONCellData, JSONCellTransform, JSONColorValue, JSONExportColorMode, JSONExportMetadata, JSONExportOptions, JSONExportTarget, JSONGenerationOptions, JSONLayerGrid, JSONObjectRowCell, JSONObjectRowsCellCollection, JSONRGBAColor, TextmodeAllDocumentJSON, TextmodeDocumentJSON, TextmodeDocumentLayer, TextmodeSelectedDocumentJSON, TextmodeSelectedDocumentLayer, } from './types';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exporters/json/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,YAAY,EACX,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,EAC5B,aAAa,EACb,iBAAiB,GACjB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/exporters/json/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,YAAY,EACX,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,4BAA4B,EAC5B,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,6BAA6B,GAC7B,MAAM,SAAS,CAAC"}
@@ -1,3 +1,16 @@
1
+ import type { LayerExportOptions } from '../base';
2
+ /**
3
+ * Target scope for JSON export.
4
+ */
5
+ export type JSONExportTarget = 'selected' | 'all';
6
+ /**
7
+ * Canonical JSON document format identifier.
8
+ */
9
+ export type JSONDocumentFormat = 'textmode.document';
10
+ /**
11
+ * Canonical JSON document format version.
12
+ */
13
+ export type JSONDocumentVersion = '2.0.0';
1
14
  /**
2
15
  * Supported JSON color output modes.
3
16
  */
@@ -46,6 +59,15 @@ export interface JSONObjectRowsCellCollection {
46
59
  * Supported JSON cell collection variants.
47
60
  */
48
61
  export type JSONCellCollection = JSONObjectRowsCellCollection;
62
+ /**
63
+ * Grid dimensions exported for a layer.
64
+ */
65
+ export interface JSONLayerGrid {
66
+ cols: number;
67
+ rows: number;
68
+ cellWidth: number;
69
+ cellHeight: number;
70
+ }
49
71
  /**
50
72
  * Optional export metadata.
51
73
  */
@@ -57,32 +79,71 @@ export interface JSONExportMetadata {
57
79
  };
58
80
  }
59
81
  /**
60
- * Layer document exported by the JSON exporter.
82
+ * Selected-layer entry in a JSON document export.
83
+ */
84
+ export interface TextmodeSelectedDocumentLayer {
85
+ id: string;
86
+ cells: JSONCellCollection;
87
+ }
88
+ /**
89
+ * Selected-layer document exported by the JSON exporter.
61
90
  */
62
- export interface TextmodeLayerJSON {
63
- $schema: string;
64
- format: 'textmode.layer';
65
- formatVersion: '1.0.0';
91
+ export interface TextmodeSelectedDocumentJSON {
92
+ format: JSONDocumentFormat;
93
+ formatVersion: JSONDocumentVersion;
94
+ target: 'selected';
66
95
  metadata?: JSONExportMetadata;
67
96
  canvas: {
68
97
  width: number;
69
98
  height: number;
70
99
  };
71
- grid: {
72
- cols: number;
73
- rows: number;
74
- cellWidth: number;
75
- cellHeight: number;
76
- };
77
- layer: {
78
- id: 'base';
79
- cells: JSONCellCollection;
100
+ grid: JSONLayerGrid;
101
+ layer: TextmodeSelectedDocumentLayer;
102
+ }
103
+ /**
104
+ * Single layer entry in an all-layers JSON export.
105
+ */
106
+ export interface TextmodeDocumentLayer {
107
+ id: string;
108
+ visible: boolean;
109
+ opacity: number;
110
+ blendMode: string;
111
+ offsetX: number;
112
+ offsetY: number;
113
+ rotationZ: number;
114
+ grid: JSONLayerGrid;
115
+ cells: JSONCellCollection;
116
+ }
117
+ /**
118
+ * Layer stack document exported by the JSON exporter.
119
+ */
120
+ export interface TextmodeAllDocumentJSON {
121
+ format: JSONDocumentFormat;
122
+ formatVersion: JSONDocumentVersion;
123
+ target: 'all';
124
+ metadata?: JSONExportMetadata;
125
+ canvas: {
126
+ width: number;
127
+ height: number;
80
128
  };
129
+ layers: TextmodeDocumentLayer[];
81
130
  }
131
+ /**
132
+ * JSON document exported by the JSON exporter.
133
+ */
134
+ export type TextmodeDocumentJSON = TextmodeSelectedDocumentJSON | TextmodeAllDocumentJSON;
82
135
  /**
83
136
  * Options for exporting the textmode content to JSON format.
84
137
  */
85
- export type JSONExportOptions = {
138
+ export type JSONExportOptions = LayerExportOptions & {
139
+ /**
140
+ * Scope of the JSON export.
141
+ *
142
+ * Use `'selected'` to export one layer, or `'all'` to export the base layer and every user-created layer.
143
+ *
144
+ * Defaults to `'selected'`.
145
+ */
146
+ target?: JSONExportTarget;
86
147
  /**
87
148
  * The filename to save the JSON file as.
88
149
  *
@@ -116,10 +177,12 @@ export type JSONExportOptions = {
116
177
  * Internal options used by JSON generation (with all defaults applied).
117
178
  */
118
179
  export interface JSONGenerationOptions {
180
+ target: JSONExportTarget;
119
181
  pretty: boolean | number;
120
182
  colorMode: JSONExportColorMode;
121
183
  includeMetadata: boolean;
122
184
  filename?: string;
185
+ layer?: LayerExportOptions['layer'];
123
186
  }
124
187
  /**
125
188
  * Internal extracted cell data used while building the JSON document.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/exporters/json/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,MAAM,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,aAAa,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,iBAAiB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,iBAAiB,EAAE,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QACV,IAAI,EAAE,oBAAoB,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,kBAAkB,CAAC;KAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAEhC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,iBAAiB,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/exporters/json/types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { SVGCellData, SVGGenerationOptions } from './types';
2
2
  import type { TextmodeGrid } from 'textmode.js';
3
- import type { TextmodeFont } from 'textmode.js/fonts';
3
+ import type { TextmodeFont } from 'textmode.js';
4
4
  /**
5
5
  * Generates SVG content and markup from processed cell data.
6
6
  * This class handles the creation of SVG elements, groups, and styling.
@@ -1 +1 @@
1
- {"version":3,"file":"SVGContentGenerator.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/SVGContentGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjE;;;GAGG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,cAAc,CAAmB;;IAMzC;;;;;OAKG;IACI,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM;IAKzD;;;;OAIG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAwBnC;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;;;;;;;OAQG;IACI,oBAAoB,CAC1B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,oBAAoB,GAC3B,MAAM;IAiBT;;;;;;;;OAQG;IACI,mBAAmB,CACzB,aAAa,EAAE,WAAW,EAAE,EAC5B,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,oBAAoB,GAC3B,MAAM;IAYT;;;;;OAKG;IACI,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAKtD"}
1
+ {"version":3,"file":"SVGContentGenerator.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/SVGContentGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3D;;;GAGG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,cAAc,CAAmB;;IAMzC;;;;;OAKG;IACI,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM;IAKzD;;;;OAIG;IACI,kBAAkB,IAAI,MAAM;IAInC;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAwBnC;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;;;;;;;OAQG;IACI,oBAAoB,CAC1B,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,oBAAoB,GAC3B,MAAM;IAiBT;;;;;;;;OAQG;IACI,mBAAmB,CACzB,aAAa,EAAE,WAAW,EAAE,EAC5B,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,oBAAoB,GAC3B,MAAM;IAYT;;;;;OAKG;IACI,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAKtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"SVGExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/SVGExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,SAAS,CAAC;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;GAIG;AACH,qBAAa,WAAW;IACvB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;;;;;OAMG;IACI,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAqBvF;;;;;OAKG;IACI,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI;CAMjF"}
1
+ {"version":3,"file":"SVGExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/SVGExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,SAAS,CAAC;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;GAIG;AACH,qBAAa,WAAW;IACvB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;;;;;OAMG;IACI,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAuBvF;;;;;OAKG;IACI,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI;CAMjF"}
@@ -1,4 +1,4 @@
1
- import type { TextmodeFont } from 'textmode.js/fonts';
1
+ import type { TextmodeFont } from 'textmode.js';
2
2
  /**
3
3
  * Glyph data structure for parsed glyphs.
4
4
  * Mirrors the shape used by textmode.js internally for Typr glyph data.
@@ -1 +1 @@
1
- {"version":3,"file":"SVGPathGenerator.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/SVGPathGenerator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,UAAU,SAAS;IAClB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iDAAiD;IACjD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kCAAkC;IAClC,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,kCAAkC;IAClC,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;CACrB;AAeD;;;GAGG;AACH,qBAAa,gBAAgB;IAC5B;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAwDvB;;;;;;;;;;;;;;;OAeG;IACI,gCAAgC,CACtC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,GAAG,IAAI,GACzB,MAAM,GAAG,IAAI;CAwBhB"}
1
+ {"version":3,"file":"SVGPathGenerator.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/SVGPathGenerator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;GAGG;AACH,UAAU,SAAS;IAClB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iDAAiD;IACjD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kCAAkC;IAClC,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,kCAAkC;IAClC,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;CACrB;AAeD;;;GAGG;AACH,qBAAa,gBAAgB;IAC5B;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAwDvB;;;;;;;;;;;;;;;OAeG;IACI,gCAAgC,CACtC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,GAAG,IAAI,GACzB,MAAM,GAAG,IAAI;CAwBhB"}
@@ -1,3 +1,4 @@
1
+ import type { LayerExportOptions } from '../base';
1
2
  /**
2
3
  * RGBA color representation.
3
4
  */
@@ -53,7 +54,7 @@ export interface FramebufferData {
53
54
  /**
54
55
  * Options for exporting the textmode content to SVG format.
55
56
  */
56
- export type SVGExportOptions = {
57
+ export type SVGExportOptions = LayerExportOptions & {
57
58
  /**
58
59
  * The filename to save the SVG file as.
59
60
  *
@@ -105,5 +106,6 @@ export interface SVGGenerationOptions {
105
106
  drawMode: 'fill' | 'stroke';
106
107
  strokeWidth: number;
107
108
  filename?: string;
109
+ layer?: LayerExportOptions['layer'];
108
110
  }
109
111
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,IAAI;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,IAAI,CAAC;IACnB,cAAc,EAAE,IAAI,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,UAAU,CAAC;IAC5B,kBAAkB,EAAE,UAAU,CAAC;IAC/B,oBAAoB,EAAE,UAAU,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE7B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,cAAc,IAAI;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,KAAK,IAAI,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,2BAA2B,EAAE,OAAO,CAAC;IACrC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,IAAI;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,IAAI,CAAC;IACnB,cAAc,EAAE,IAAI,CAAC;IACrB,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,UAAU,CAAC;IAC5B,kBAAkB,EAAE,UAAU,CAAC;IAC/B,oBAAoB,EAAE,UAAU,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG;IACnD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE7B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,cAAc,IAAI;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,KAAK,IAAI,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,2BAA2B,EAAE,OAAO,CAAC;IACrC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TXTExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/txt/TXTExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;GAIG;AACH,qBAAa,WAAW;IACvB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAuCzB;;;;;;OAMG;IACI,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAIvF;;;;;OAKG;IACI,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI;CAOjF"}
1
+ {"version":3,"file":"TXTExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/txt/TXTExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;GAIG;AACH,qBAAa,WAAW;IACvB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAqCzB;;;;;;OAMG;IACI,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM;IAIvF;;;;;OAKG;IACI,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI;CAOjF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TXTExporter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TXTExporter.test.d.ts","sourceRoot":"","sources":["../../../../src/exporters/txt/TXTExporter.test.ts"],"names":[],"mappings":""}
@@ -1,7 +1,8 @@
1
+ import type { LayerExportOptions } from '../base';
1
2
  /**
2
3
  * Options for exporting the textmode content to TXT format.
3
4
  */
4
- export type TXTExportOptions = {
5
+ export type TXTExportOptions = LayerExportOptions & {
5
6
  /**
6
7
  * The filename to save the TXT file as.
7
8
  *
@@ -29,6 +30,7 @@ export interface TXTGenerationOptions {
29
30
  preserveTrailingSpaces: boolean;
30
31
  emptyCharacter: string;
31
32
  filename?: string;
33
+ layer?: LayerExportOptions['layer'];
32
34
  }
33
35
  /**
34
36
  * Re-export shared types from SVG module that are also used by TXT exporter
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/exporters/txt/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/exporters/txt/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG;IACnD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -1,34 +1,30 @@
1
1
  import type { Textmodifier } from 'textmode.js';
2
- import type { TextmodePluginContext } from 'textmode.js/plugins';
2
+ import type { TextmodePluginContext } from 'textmode.js';
3
3
  import type { VideoExportOptions } from './types';
4
4
  /**
5
5
  * Main video exporter for the textmode.js library.
6
- * Orchestrates the video export process by coordinating canvas capture,
7
- * frame processing, and file handling.
8
6
  */
9
7
  export declare class VideoExporter {
10
8
  private readonly _recorder;
11
9
  private readonly _textmodifier;
12
10
  private readonly _registerPostDrawHook;
13
- /**
14
- * Creates an instance of VideoExporter.
15
- *
16
- * @param textmodifier The Textmodifier instance to extract data from
17
- * @param registerPostDrawHook The function to register post-draw hooks
18
- */
19
11
  constructor(textmodifier: Textmodifier, registerPostDrawHook: TextmodePluginContext['registerPostDrawHook']);
20
12
  /**
21
- * Captures frames and saves them as a WEBM file
13
+ * Captures deterministic frames and saves them as a video file.
22
14
  *
23
15
  * @param options Export options
24
16
  */
25
- $saveWEBM(options?: VideoExportOptions): Promise<void>;
26
- /**
27
- * Applies default values to video export options
28
- *
29
- * @param options User-provided options
30
- * @returns Complete options with defaults applied
31
- */
17
+ $saveVideo(options?: VideoExportOptions): Promise<void>;
18
+ private _saveVideo;
32
19
  private _applyDefaultOptions;
20
+ private _positiveInteger;
21
+ private _positiveNumber;
22
+ private _bitrate;
23
+ private _bitrateMode;
24
+ private _latencyMode;
25
+ private _hardwareAcceleration;
26
+ private _keyFrameInterval;
27
+ private _currentPixelDensity;
28
+ private _withExtension;
33
29
  }
34
30
  //# sourceMappingURL=VideoExporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/video/VideoExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,SAAS,CAAC;AAG1E;;;;GAIG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IAEtF;;;;;OAKG;gBACS,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,sBAAsB,CAAC;IAM3G;;;;OAIG;IACU,SAAS,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBvE;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;CAU5B"}
1
+ {"version":3,"file":"VideoExporter.d.ts","sourceRoot":"","sources":["../../../../src/exporters/video/VideoExporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIzD,OAAO,KAAK,EAIX,kBAAkB,EAIlB,MAAM,SAAS,CAAC;AAWjB;;GAEG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;gBAE1E,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,sBAAsB,CAAC;IAM3G;;;;OAIG;IACU,UAAU,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;YAI1D,UAAU;IAqBxB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,cAAc;CAUtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VideoExporter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoExporter.test.d.ts","sourceRoot":"","sources":["../../../../src/exporters/video/VideoExporter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import type { Textmodifier, TextmodePluginContext } from 'textmode.js';
2
+ import type { VideoRenderFrameOptions } from './types';
3
+ /**
4
+ * Drives deterministic video export frames through public textmode APIs.
5
+ *
6
+ * The visible textmode canvas remains untouched. Each presented frame is copied
7
+ * into a staging canvas sized for the requested video output.
8
+ */
9
+ export declare class VideoFrameDriver {
10
+ readonly canvas: HTMLCanvasElement;
11
+ private readonly _textmodifier;
12
+ private readonly _registerPostDrawHook;
13
+ private readonly _context;
14
+ private readonly _sourceCanvas;
15
+ private _pendingFrame;
16
+ private _syntheticFrameCount;
17
+ private _syntheticMillis;
18
+ constructor(textmodifier: Textmodifier, registerPostDrawHook: TextmodePluginContext['registerPostDrawHook'], width: number, height: number);
19
+ $render(options: VideoRenderFrameOptions): Promise<void>;
20
+ private _renderOneFrame;
21
+ private _capturePendingFrame;
22
+ private _createStagingCanvas;
23
+ private _captureMethodSnapshots;
24
+ private _capturePropertySnapshots;
25
+ private _shadowTimingProperties;
26
+ private _shadowTimingMethods;
27
+ private _shadowResizeCanvas;
28
+ private _restoreMethods;
29
+ private _restoreProperties;
30
+ private _throwIfAborted;
31
+ }
32
+ //# sourceMappingURL=VideoFrameDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoFrameDriver.d.ts","sourceRoot":"","sources":["../../../../src/exporters/video/VideoFrameDriver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAoCvD;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC5B,SAAgB,MAAM,EAAE,iBAAiB,CAAC;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IACtF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,gBAAgB,CAAa;gBAGpC,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,EACnE,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;IAeF,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDrE,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,eAAe;CAKvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VideoFrameDriver.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoFrameDriver.test.d.ts","sourceRoot":"","sources":["../../../../src/exporters/video/VideoFrameDriver.test.ts"],"names":[],"mappings":""}
@@ -1,28 +1,15 @@
1
- import type { TextmodePluginContext } from 'textmode.js/plugins';
2
- import type { VideoExportProgress, VideoGenerationOptions } from './types';
1
+ import type { VideoExportProgress, VideoFrameDriverLike, VideoGenerationOptions } from './types';
3
2
  /**
4
- * Records frames from a canvas to create WEBM video files.
5
- * Captures frames at specified intervals using textmode.js post-draw hooks
6
- * and encodes them into a WEBM video format.
3
+ * Records deterministic textmode frames through WebCodecs and muxes them with Mediabunny.
7
4
  */
8
5
  export declare class VideoRecorder {
9
- /**
10
- * Records a sequence of frames from the provided canvas and encodes them as a WEBM video.
11
- *
12
- * @param canvas - Source canvas to capture frames from
13
- * @param options - Video generation options
14
- * @param registerPostDrawHook - Hook registration function from textmode.js API
15
- * @param onProgress - Optional callback for recording progress updates
16
- * @returns Promise resolving to a Blob containing the encoded WEBM video
17
- * @throws {Error} If frame capture or encoding fails
18
- */
19
- $record(canvas: HTMLCanvasElement, options: VideoGenerationOptions, registerPostDrawHook: TextmodePluginContext['registerPostDrawHook'], onProgress?: (progress: VideoExportProgress) => void): Promise<Blob>;
20
- /**
21
- * Creates a reusable snapshot function for capturing canvas frames.
22
- * Uses a cached canvas and context to avoid repeated allocations.
23
- *
24
- * @returns Function that takes a canvas and returns a snapshot canvas
25
- */
26
- private _createSnapshotSurface;
6
+ $record(options: VideoGenerationOptions, frameDriver: VideoFrameDriverLike, onProgress?: (progress: VideoExportProgress) => void): Promise<Blob>;
7
+ private _createEncodingPlan;
8
+ private _assertWebCodecsAvailable;
9
+ private _resolveBitrate;
10
+ private _throwIfAborted;
11
+ private _emitProgress;
12
+ private _normalizeError;
13
+ private _log;
27
14
  }
28
15
  //# sourceMappingURL=VideoRecorder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoRecorder.d.ts","sourceRoot":"","sources":["../../../../src/exporters/video/VideoRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAG3E;;;;GAIG;AACH,qBAAa,aAAa;IACzB;;;;;;;;;OASG;IACU,OAAO,CACnB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,sBAAsB,EAC/B,oBAAoB,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,EACnE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAClD,OAAO,CAAC,IAAI,CAAC;IAyIhB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CAsD9B"}
1
+ {"version":3,"file":"VideoRecorder.d.ts","sourceRoot":"","sources":["../../../../src/exporters/video/VideoRecorder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAIX,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,qBAAa,aAAa;IACZ,OAAO,CACnB,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,oBAAoB,EACjC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,GAClD,OAAO,CAAC,IAAI,CAAC;YAsDF,mBAAmB;IAgDjC,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,IAAI;CAKZ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VideoRecorder.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoRecorder.test.d.ts","sourceRoot":"","sources":["../../../../src/exporters/video/VideoRecorder.test.ts"],"names":[],"mappings":""}