textmode.export.js 1.6.0 → 1.7.1
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.
- package/README.md +88 -159
- package/dist/textmode.export.esm.js +1 -6090
- package/dist/textmode.export.umd.js +1 -68
- package/dist/types/augmentations/index.d.ts +0 -1
- package/dist/types/augmentations/textmode.d.ts +0 -1
- package/dist/types/exporters/base/CharacterResolver.d.ts +0 -1
- package/dist/types/exporters/base/DataExtractor.d.ts +0 -1
- package/dist/types/exporters/base/FileHandler.d.ts +0 -1
- package/dist/types/exporters/base/FramePreparation.d.ts +10 -0
- package/dist/types/exporters/base/LayerTarget.d.ts +4 -3
- package/dist/types/exporters/base/index.d.ts +1 -1
- package/dist/types/exporters/gif/GIFEncoderWorker.d.ts +1 -0
- package/dist/types/exporters/gif/GIFExporter.d.ts +7 -26
- package/dist/types/exporters/gif/GIFRecorder.d.ts +2 -3
- package/dist/types/exporters/gif/GIFWorkerClient.d.ts +15 -0
- package/dist/types/exporters/gif/index.d.ts +0 -1
- package/dist/types/exporters/gif/types.d.ts +19 -1
- package/dist/types/exporters/image/ImageExporter.d.ts +2 -1
- package/dist/types/exporters/image/index.d.ts +0 -1
- package/dist/types/exporters/image/types.d.ts +2 -1
- package/dist/types/exporters/json/JSONDataExtractor.d.ts +0 -1
- package/dist/types/exporters/json/JSONExporter.d.ts +0 -1
- package/dist/types/exporters/json/index.d.ts +0 -1
- package/dist/types/exporters/json/types.d.ts +8 -1
- package/dist/types/exporters/svg/SVGContentGenerator.d.ts +0 -1
- package/dist/types/exporters/svg/SVGDataExtractor.d.ts +0 -1
- package/dist/types/exporters/svg/SVGExporter.d.ts +0 -1
- package/dist/types/exporters/svg/SVGPathGenerator.d.ts +0 -1
- package/dist/types/exporters/svg/index.d.ts +0 -1
- package/dist/types/exporters/svg/types.d.ts +2 -1
- package/dist/types/exporters/txt/TXTExporter.d.ts +0 -1
- package/dist/types/exporters/txt/index.d.ts +0 -1
- package/dist/types/exporters/txt/types.d.ts +2 -1
- package/dist/types/exporters/video/VideoExporter.d.ts +4 -4
- package/dist/types/exporters/video/VideoFrameDriver.d.ts +3 -3
- package/dist/types/exporters/video/VideoRecorder.d.ts +0 -1
- package/dist/types/exporters/video/errors.d.ts +0 -1
- package/dist/types/exporters/video/index.d.ts +0 -1
- package/dist/types/exporters/video/types.d.ts +34 -6
- package/dist/types/exporters/video/withAbortableTimeout.d.ts +0 -1
- package/dist/types/index.d.ts +15 -31
- package/dist/types/overlay/blades/Blade.d.ts +0 -1
- package/dist/types/overlay/blades/GIFBlade.d.ts +0 -1
- package/dist/types/overlay/blades/ImageBlade.d.ts +0 -1
- package/dist/types/overlay/blades/JSONBlade.d.ts +0 -1
- package/dist/types/overlay/blades/RecordingBlade.d.ts +0 -1
- package/dist/types/overlay/blades/SVGBlade.d.ts +0 -1
- package/dist/types/overlay/blades/TextBlade.d.ts +0 -1
- package/dist/types/overlay/blades/VideoBlade.d.ts +0 -1
- package/dist/types/overlay/blades/index.d.ts +0 -1
- package/dist/types/overlay/components/actions/Button.d.ts +0 -1
- package/dist/types/overlay/components/base/Component.d.ts +0 -1
- package/dist/types/overlay/components/base/Container.d.ts +0 -1
- package/dist/types/overlay/components/base/Field.d.ts +0 -1
- package/dist/types/overlay/components/display/Header.d.ts +0 -1
- package/dist/types/overlay/components/display/StatusDisplay.d.ts +0 -1
- package/dist/types/overlay/components/inputs/CheckboxInput.d.ts +0 -1
- package/dist/types/overlay/components/inputs/LayerTargetSelect.d.ts +0 -1
- package/dist/types/overlay/components/inputs/NumberInput.d.ts +0 -1
- package/dist/types/overlay/components/inputs/SelectInput.d.ts +0 -1
- package/dist/types/overlay/components/inputs/TextInput.d.ts +0 -1
- package/dist/types/overlay/config/DefaultsStore.d.ts +0 -1
- package/dist/types/overlay/config/ExportDefaults.d.ts +0 -1
- package/dist/types/overlay/core/EventBus.d.ts +0 -1
- package/dist/types/overlay/core/OverlayController.d.ts +0 -1
- package/dist/types/overlay/core/StateManager.d.ts +0 -1
- package/dist/types/overlay/formatRegistry.d.ts +0 -1
- package/dist/types/overlay/index.d.ts +0 -1
- package/dist/types/overlay/models/FormatDefinition.d.ts +0 -1
- package/dist/types/overlay/models/OverlayEvents.d.ts +0 -1
- package/dist/types/overlay/models/OverlayState.d.ts +0 -1
- package/dist/types/overlay/services/ClipboardService.d.ts +0 -1
- package/dist/types/overlay/services/ExportService.d.ts +0 -1
- package/dist/types/overlay/services/OverlayPositionStorage.d.ts +0 -1
- package/dist/types/overlay/services/PositionService.d.ts +0 -1
- package/dist/types/overlay/types.d.ts +0 -1
- package/dist/types/overlay/utils/classes.d.ts +0 -1
- package/dist/types/types.d.ts +109 -23
- package/dist/types/utils/pixels.d.ts +0 -1
- package/package.json +47 -61
- package/dist/types/augmentations/index.d.ts.map +0 -1
- package/dist/types/augmentations/textmode.d.ts.map +0 -1
- package/dist/types/augmentations/textmode.test.d.ts +0 -2
- package/dist/types/augmentations/textmode.test.d.ts.map +0 -1
- package/dist/types/exporters/base/CharacterResolver.d.ts.map +0 -1
- package/dist/types/exporters/base/DataExtractor.d.ts.map +0 -1
- package/dist/types/exporters/base/FileHandler.d.ts.map +0 -1
- package/dist/types/exporters/base/LayerTarget.d.ts.map +0 -1
- package/dist/types/exporters/base/index.d.ts.map +0 -1
- package/dist/types/exporters/gif/GIFExporter.d.ts.map +0 -1
- package/dist/types/exporters/gif/GIFRecorder.d.ts.map +0 -1
- package/dist/types/exporters/gif/index.d.ts.map +0 -1
- package/dist/types/exporters/gif/types.d.ts.map +0 -1
- package/dist/types/exporters/image/ImageExporter.d.ts.map +0 -1
- package/dist/types/exporters/image/index.d.ts.map +0 -1
- package/dist/types/exporters/image/types.d.ts.map +0 -1
- package/dist/types/exporters/json/JSONDataExtractor.d.ts.map +0 -1
- package/dist/types/exporters/json/JSONExporter.d.ts.map +0 -1
- package/dist/types/exporters/json/JSONExporter.test.d.ts +0 -2
- package/dist/types/exporters/json/JSONExporter.test.d.ts.map +0 -1
- package/dist/types/exporters/json/index.d.ts.map +0 -1
- package/dist/types/exporters/json/types.d.ts.map +0 -1
- package/dist/types/exporters/svg/SVGContentGenerator.d.ts.map +0 -1
- package/dist/types/exporters/svg/SVGDataExtractor.d.ts.map +0 -1
- package/dist/types/exporters/svg/SVGExporter.d.ts.map +0 -1
- package/dist/types/exporters/svg/SVGExporter.test.d.ts +0 -2
- package/dist/types/exporters/svg/SVGExporter.test.d.ts.map +0 -1
- package/dist/types/exporters/svg/SVGPathGenerator.d.ts.map +0 -1
- package/dist/types/exporters/svg/index.d.ts.map +0 -1
- package/dist/types/exporters/svg/types.d.ts.map +0 -1
- package/dist/types/exporters/txt/TXTExporter.d.ts.map +0 -1
- package/dist/types/exporters/txt/TXTExporter.test.d.ts +0 -2
- package/dist/types/exporters/txt/TXTExporter.test.d.ts.map +0 -1
- package/dist/types/exporters/txt/index.d.ts.map +0 -1
- package/dist/types/exporters/txt/types.d.ts.map +0 -1
- package/dist/types/exporters/video/VideoExporter.d.ts.map +0 -1
- package/dist/types/exporters/video/VideoExporter.test.d.ts +0 -2
- package/dist/types/exporters/video/VideoExporter.test.d.ts.map +0 -1
- package/dist/types/exporters/video/VideoFrameDriver.d.ts.map +0 -1
- package/dist/types/exporters/video/VideoFrameDriver.test.d.ts +0 -2
- package/dist/types/exporters/video/VideoFrameDriver.test.d.ts.map +0 -1
- package/dist/types/exporters/video/VideoRecorder.d.ts.map +0 -1
- package/dist/types/exporters/video/VideoRecorder.test.d.ts +0 -2
- package/dist/types/exporters/video/VideoRecorder.test.d.ts.map +0 -1
- package/dist/types/exporters/video/errors.d.ts.map +0 -1
- package/dist/types/exporters/video/index.d.ts.map +0 -1
- package/dist/types/exporters/video/types.d.ts.map +0 -1
- package/dist/types/exporters/video/withAbortableTimeout.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/overlay/blades/Blade.d.ts.map +0 -1
- package/dist/types/overlay/blades/GIFBlade.d.ts.map +0 -1
- package/dist/types/overlay/blades/ImageBlade.d.ts.map +0 -1
- package/dist/types/overlay/blades/JSONBlade.d.ts.map +0 -1
- package/dist/types/overlay/blades/RecordingBlade.d.ts.map +0 -1
- package/dist/types/overlay/blades/SVGBlade.d.ts.map +0 -1
- package/dist/types/overlay/blades/TextBlade.d.ts.map +0 -1
- package/dist/types/overlay/blades/VideoBlade.d.ts.map +0 -1
- package/dist/types/overlay/blades/index.d.ts.map +0 -1
- package/dist/types/overlay/components/actions/Button.d.ts.map +0 -1
- package/dist/types/overlay/components/base/Component.d.ts.map +0 -1
- package/dist/types/overlay/components/base/Container.d.ts.map +0 -1
- package/dist/types/overlay/components/base/Field.d.ts.map +0 -1
- package/dist/types/overlay/components/display/Header.d.ts.map +0 -1
- package/dist/types/overlay/components/display/StatusDisplay.d.ts.map +0 -1
- package/dist/types/overlay/components/inputs/CheckboxInput.d.ts.map +0 -1
- package/dist/types/overlay/components/inputs/LayerTargetSelect.d.ts.map +0 -1
- package/dist/types/overlay/components/inputs/NumberInput.d.ts.map +0 -1
- package/dist/types/overlay/components/inputs/RangeInput.d.ts +0 -35
- package/dist/types/overlay/components/inputs/RangeInput.d.ts.map +0 -1
- package/dist/types/overlay/components/inputs/SelectInput.d.ts.map +0 -1
- package/dist/types/overlay/components/inputs/TextInput.d.ts.map +0 -1
- package/dist/types/overlay/config/DefaultsStore.d.ts.map +0 -1
- package/dist/types/overlay/config/DefaultsStore.test.d.ts +0 -2
- package/dist/types/overlay/config/DefaultsStore.test.d.ts.map +0 -1
- package/dist/types/overlay/config/ExportDefaults.d.ts.map +0 -1
- package/dist/types/overlay/config/ExportDefaults.test.d.ts +0 -2
- package/dist/types/overlay/config/ExportDefaults.test.d.ts.map +0 -1
- package/dist/types/overlay/core/EventBus.d.ts.map +0 -1
- package/dist/types/overlay/core/OverlayController.d.ts.map +0 -1
- package/dist/types/overlay/core/OverlayController.test.d.ts +0 -2
- package/dist/types/overlay/core/OverlayController.test.d.ts.map +0 -1
- package/dist/types/overlay/core/StateManager.d.ts.map +0 -1
- package/dist/types/overlay/formatRegistry.d.ts.map +0 -1
- package/dist/types/overlay/formatRegistry.test.d.ts +0 -2
- package/dist/types/overlay/formatRegistry.test.d.ts.map +0 -1
- package/dist/types/overlay/index.d.ts.map +0 -1
- package/dist/types/overlay/models/FormatDefinition.d.ts.map +0 -1
- package/dist/types/overlay/models/OverlayEvents.d.ts.map +0 -1
- package/dist/types/overlay/models/OverlayState.d.ts.map +0 -1
- package/dist/types/overlay/services/ClipboardService.d.ts.map +0 -1
- package/dist/types/overlay/services/ExportService.d.ts.map +0 -1
- package/dist/types/overlay/services/OverlayPositionStorage.d.ts.map +0 -1
- package/dist/types/overlay/services/PositionService.d.ts.map +0 -1
- package/dist/types/overlay/services/PositionService.test.d.ts +0 -2
- package/dist/types/overlay/services/PositionService.test.d.ts.map +0 -1
- package/dist/types/overlay/types.d.ts.map +0 -1
- package/dist/types/overlay/utils/classes.d.ts.map +0 -1
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/utils/pixels.d.ts.map +0 -1
- package/dist/types/version.d.ts +0 -2
- package/dist/types/version.d.ts.map +0 -1
|
@@ -26,4 +26,3 @@ export declare function getEncodedGlyphValueFromColor(color: [number, number, nu
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function resolveGlyphByEncodedValue(font: ResolvableFont, encodedValue: number): ResolvableGlyph | undefined;
|
|
28
28
|
export {};
|
|
29
|
-
//# sourceMappingURL=CharacterResolver.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Context supplied before a deterministic export frame is rendered. */
|
|
2
|
+
export interface ExportFrameContext {
|
|
3
|
+
frameIndex: number;
|
|
4
|
+
frameCount: number;
|
|
5
|
+
timeSeconds: number;
|
|
6
|
+
frameRate: number;
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
}
|
|
9
|
+
/** Prepares external media or state before an export frame is redrawn. */
|
|
10
|
+
export type PrepareExportFrame = (context: ExportFrameContext) => void | Promise<void>;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { LayerBlendMode, type Textmodifier, type TextmodeFramebuffer, type TextmodeGrid } from 'textmode.js';
|
|
2
2
|
import type { TextmodeFont, TextmodeTileset } from 'textmode.js';
|
|
3
3
|
import type { TextmodeLayer } from 'textmode.js';
|
|
4
4
|
/**
|
|
5
5
|
* Shared option for exporters that read layer framebuffer data.
|
|
6
6
|
*
|
|
7
|
+
* @category Layer data export
|
|
8
|
+
*
|
|
7
9
|
* @see {@link https://code.textmode.art/api/textmode.export.js/interfaces/LayerExportOptions | LayerExportOptions API reference}
|
|
8
10
|
*/
|
|
9
11
|
export interface LayerExportOptions {
|
|
@@ -27,7 +29,7 @@ export interface ResolvedLayerExportTarget {
|
|
|
27
29
|
export interface ResolvedLayerStackExportTarget extends ResolvedLayerExportTarget {
|
|
28
30
|
visible: boolean;
|
|
29
31
|
opacity: number;
|
|
30
|
-
blendMode:
|
|
32
|
+
blendMode: LayerBlendMode;
|
|
31
33
|
offsetX: number;
|
|
32
34
|
offsetY: number;
|
|
33
35
|
rotationZ: number;
|
|
@@ -47,4 +49,3 @@ export declare function createLayerTargetProvider(textmodifier: Textmodifier): L
|
|
|
47
49
|
export declare function getLayerTargetId(textmodifier: Textmodifier, layer: TextmodeLayer): string;
|
|
48
50
|
export declare function resolveLayerExportTarget(textmodifier: Textmodifier, layer?: TextmodeLayer): ResolvedLayerExportTarget;
|
|
49
51
|
export declare function resolveLayerStackExportTargets(textmodifier: Textmodifier): ResolvedLayerStackExportTarget[];
|
|
50
|
-
//# sourceMappingURL=LayerTarget.d.ts.map
|
|
@@ -3,4 +3,4 @@ export { FileHandler } from './FileHandler';
|
|
|
3
3
|
export { getEncodedGlyphValueFromColor, resolveGlyphByEncodedValue } from './CharacterResolver';
|
|
4
4
|
export { createLayerTargetProvider, getLayerTargetId, getLayerTargetOptions, resolveLayerExportTarget, resolveLayerStackExportTargets, } from './LayerTarget';
|
|
5
5
|
export type { LayerExportOptions, LayerTargetOption, LayerTargetProvider, ResolvedLayerExportTarget, ResolvedLayerStackExportTarget, } from './LayerTarget';
|
|
6
|
-
|
|
6
|
+
export type { ExportFrameContext, PrepareExportFrame } from './FramePreparation';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,34 +1,15 @@
|
|
|
1
1
|
import type { Textmodifier } from 'textmode.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type PostDrawSubscription } from '../video/VideoFrameDriver';
|
|
3
3
|
import type { GIFExportOptions } from './types';
|
|
4
|
-
/**
|
|
5
|
-
* Main GIF exporter for the textmode.js library.
|
|
6
|
-
* Orchestrates the GIF export process by coordinating canvas capture,
|
|
7
|
-
* frame processing, and file handling.
|
|
8
|
-
*/
|
|
4
|
+
/** Deterministic, bounded-memory GIF exporter. */
|
|
9
5
|
export declare class GIFExporter {
|
|
10
|
-
private readonly _recorder;
|
|
11
6
|
private readonly _textmodifier;
|
|
12
7
|
private readonly _registerPostDrawHook;
|
|
13
|
-
|
|
14
|
-
* Creates an instance of GIFExporter.
|
|
15
|
-
*
|
|
16
|
-
* @param textmodifier The Textmodifier instance to capture frames from
|
|
17
|
-
* @param registerPostDrawHook Function to register post-draw hooks
|
|
18
|
-
*/
|
|
19
|
-
constructor(textmodifier: Textmodifier, registerPostDrawHook: TextmodePluginContext['registerPostDrawHook']);
|
|
20
|
-
/**
|
|
21
|
-
* Captures frames and saves them as a GIF file
|
|
22
|
-
*
|
|
23
|
-
* @param options Export options
|
|
24
|
-
*/
|
|
8
|
+
constructor(_textmodifier: Textmodifier, _registerPostDrawHook: PostDrawSubscription);
|
|
25
9
|
$saveGIF(options?: GIFExportOptions): Promise<void>;
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
*
|
|
29
|
-
* @param options User-provided options
|
|
30
|
-
* @returns Complete options with defaults applied
|
|
31
|
-
*/
|
|
10
|
+
/** Generates a GIF blob without initiating a download. */
|
|
11
|
+
$generateGIFBlob(options?: GIFExportOptions): Promise<Blob>;
|
|
32
12
|
private _applyDefaultOptions;
|
|
13
|
+
private _throwIfAborted;
|
|
14
|
+
private _yieldToBrowser;
|
|
33
15
|
}
|
|
34
|
-
//# sourceMappingURL=GIFExporter.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PostDrawSubscription } from '../video/VideoFrameDriver';
|
|
2
2
|
import type { GIFExportProgress, GIFFrame, GIFGenerationOptions } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Records frames from a canvas for GIF generation.
|
|
@@ -19,6 +19,5 @@ export declare class GIFRecorder {
|
|
|
19
19
|
* @returns Promise resolving to array of captured frames
|
|
20
20
|
* @throws {Error} If frame capture fails
|
|
21
21
|
*/
|
|
22
|
-
$record(canvas: HTMLCanvasElement, options: GIFGenerationOptions, registerPostDrawHook:
|
|
22
|
+
$record(canvas: HTMLCanvasElement, options: GIFGenerationOptions, registerPostDrawHook: PostDrawSubscription, onProgress?: (progress: GIFExportProgress) => void): Promise<GIFFrame[]>;
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=GIFRecorder.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** One-at-a-time worker bridge that bounds captured GIF memory to one RGBA frame. */
|
|
2
|
+
export declare class GIFWorkerClient {
|
|
3
|
+
private readonly _worker;
|
|
4
|
+
private readonly _pending;
|
|
5
|
+
private readonly _ready;
|
|
6
|
+
private _requestId;
|
|
7
|
+
private _disposed;
|
|
8
|
+
constructor(width: number, height: number, frameRate: number, repeat: number, signal?: AbortSignal);
|
|
9
|
+
encodeFrame(buffer: ArrayBuffer, frameIndex: number): Promise<void>;
|
|
10
|
+
finish(): Promise<ArrayBuffer>;
|
|
11
|
+
dispose: () => void;
|
|
12
|
+
private _request;
|
|
13
|
+
private _handleMessage;
|
|
14
|
+
private _handleError;
|
|
15
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import type { PrepareExportFrame } from '../base';
|
|
1
2
|
export type GIFRecordingState = 'idle' | 'recording' | 'encoding' | 'completed' | 'error';
|
|
2
3
|
/**
|
|
3
4
|
* Progress information emitted during the GIF export process.
|
|
4
5
|
*
|
|
6
|
+
* @category Animation export
|
|
7
|
+
*
|
|
5
8
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/GIFExportProgress | GIFExportProgress API reference}
|
|
6
9
|
*/
|
|
7
10
|
export type GIFExportProgress = {
|
|
@@ -33,6 +36,8 @@ export type GIFExportProgress = {
|
|
|
33
36
|
/**
|
|
34
37
|
* Options for exporting the textmode content to GIF format.
|
|
35
38
|
*
|
|
39
|
+
* @category Animation export
|
|
40
|
+
*
|
|
36
41
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/GIFExportOptions | GIFExportOptions API reference}
|
|
37
42
|
*/
|
|
38
43
|
export type GIFExportOptions = {
|
|
@@ -70,6 +75,18 @@ export type GIFExportOptions = {
|
|
|
70
75
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/GIFExportOptions#repeat | GIFExportOptions.repeat API reference}
|
|
71
76
|
*/
|
|
72
77
|
repeat?: number;
|
|
78
|
+
/**
|
|
79
|
+
* Abort signal for cancelling capture or encoding.
|
|
80
|
+
*
|
|
81
|
+
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/GIFExportOptions#signal | GIFExportOptions.signal API reference}
|
|
82
|
+
*/
|
|
83
|
+
signal?: AbortSignal;
|
|
84
|
+
/**
|
|
85
|
+
* Prepares external media before each deterministic frame is redrawn.
|
|
86
|
+
*
|
|
87
|
+
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/GIFExportOptions#prepareframe | GIFExportOptions.prepareFrame API reference}
|
|
88
|
+
*/
|
|
89
|
+
prepareFrame?: PrepareExportFrame;
|
|
73
90
|
/**
|
|
74
91
|
* Progress callback invoked throughout the recording lifecycle.
|
|
75
92
|
*
|
|
@@ -83,6 +100,8 @@ export interface GIFGenerationOptions {
|
|
|
83
100
|
frameRate: number;
|
|
84
101
|
scale: number;
|
|
85
102
|
repeat: number;
|
|
103
|
+
signal?: AbortSignal;
|
|
104
|
+
prepareFrame?: PrepareExportFrame;
|
|
86
105
|
}
|
|
87
106
|
export interface GIFFrame {
|
|
88
107
|
imageData: ImageData;
|
|
@@ -90,4 +109,3 @@ export interface GIFFrame {
|
|
|
90
109
|
height: number;
|
|
91
110
|
delayMs?: number;
|
|
92
111
|
}
|
|
93
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -34,6 +34,8 @@ export declare class ImageExporter {
|
|
|
34
34
|
* @param options Export options
|
|
35
35
|
*/
|
|
36
36
|
$saveImage(canvas: HTMLCanvasElement, options?: ImageExportOptions): Promise<void>;
|
|
37
|
+
/** Generates an image blob using the public export options. */
|
|
38
|
+
$toImageBlob(canvas: HTMLCanvasElement, options?: ImageExportOptions): Promise<Blob>;
|
|
37
39
|
/**
|
|
38
40
|
* Copies the generated image to the clipboard using the modern Clipboard API
|
|
39
41
|
*
|
|
@@ -42,4 +44,3 @@ export declare class ImageExporter {
|
|
|
42
44
|
*/
|
|
43
45
|
$copyImageToClipboard(canvas: HTMLCanvasElement, options?: ImageExportOptions): Promise<void>;
|
|
44
46
|
}
|
|
45
|
-
//# sourceMappingURL=ImageExporter.d.ts.map
|
|
@@ -8,6 +8,8 @@ export type ImageFormat = 'png' | 'jpg' | 'webp';
|
|
|
8
8
|
/**
|
|
9
9
|
* Options for exporting the textmode content to image format.
|
|
10
10
|
*
|
|
11
|
+
* @category Canvas capture
|
|
12
|
+
*
|
|
11
13
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/ImageExportOptions | ImageExportOptions API reference}
|
|
12
14
|
*/
|
|
13
15
|
export type ImageExportOptions = {
|
|
@@ -50,4 +52,3 @@ export declare const IMAGE_MIME_TYPES: Record<ImageFormat, string>;
|
|
|
50
52
|
* File extension mapping for image formats.
|
|
51
53
|
*/
|
|
52
54
|
export declare const IMAGE_EXTENSIONS: Record<ImageFormat, string>;
|
|
53
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export { JSONExporter } from './JSONExporter';
|
|
2
2
|
export { JSONDataExtractor } from './JSONDataExtractor';
|
|
3
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
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -2,6 +2,8 @@ import type { LayerExportOptions } from '../base';
|
|
|
2
2
|
/**
|
|
3
3
|
* Target scope for JSON export.
|
|
4
4
|
*
|
|
5
|
+
* @category JSON document data
|
|
6
|
+
*
|
|
5
7
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/JSONExportTarget | JSONExportTarget API reference}
|
|
6
8
|
*/
|
|
7
9
|
export type JSONExportTarget = 'selected' | 'all';
|
|
@@ -20,6 +22,8 @@ export type JSONDocumentVersion = '2.0.0';
|
|
|
20
22
|
/**
|
|
21
23
|
* Supported JSON color output modes.
|
|
22
24
|
*
|
|
25
|
+
* @category JSON document data
|
|
26
|
+
*
|
|
23
27
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/JSONExportColorMode | JSONExportColorMode API reference}
|
|
24
28
|
*/
|
|
25
29
|
export type JSONExportColorMode = 'hex' | 'rgba';
|
|
@@ -163,12 +167,16 @@ export interface TextmodeAllDocumentJSON {
|
|
|
163
167
|
/**
|
|
164
168
|
* JSON document exported by the JSON exporter.
|
|
165
169
|
*
|
|
170
|
+
* @category JSON document data
|
|
171
|
+
*
|
|
166
172
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/TextmodeDocumentJSON | TextmodeDocumentJSON API reference}
|
|
167
173
|
*/
|
|
168
174
|
export type TextmodeDocumentJSON = TextmodeSelectedDocumentJSON | TextmodeAllDocumentJSON;
|
|
169
175
|
/**
|
|
170
176
|
* Options for exporting the textmode content to JSON format.
|
|
171
177
|
*
|
|
178
|
+
* @category JSON document data
|
|
179
|
+
*
|
|
172
180
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/JSONExportOptions | JSONExportOptions API reference}
|
|
173
181
|
*/
|
|
174
182
|
export type JSONExportOptions = LayerExportOptions & {
|
|
@@ -231,4 +239,3 @@ export interface JSONCellData {
|
|
|
231
239
|
background: JSONRGBAColor;
|
|
232
240
|
transform: JSONCellTransform;
|
|
233
241
|
}
|
|
234
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -69,4 +69,3 @@ export declare class SVGPathGenerator {
|
|
|
69
69
|
$generatePositionedCharacterPath(_character: string, font: TextmodeFont, cellX: number, cellY: number, cellWidth: number, _cellHeight: number, fontSize: number, glyphData: GlyphData | null): string | null;
|
|
70
70
|
}
|
|
71
71
|
export {};
|
|
72
|
-
//# sourceMappingURL=SVGPathGenerator.d.ts.map
|
|
@@ -3,4 +3,3 @@ export { SVGDataExtractor } from './SVGDataExtractor';
|
|
|
3
3
|
export { SVGContentGenerator } from './SVGContentGenerator';
|
|
4
4
|
export { SVGPathGenerator } from './SVGPathGenerator';
|
|
5
5
|
export type { SVGExportOptions, SVGGenerationOptions, SVGCellData, FramebufferData, RGBA, Position, CellPosition, CellTransform, GlyphPath, } from './types';
|
|
6
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -54,6 +54,8 @@ export interface FramebufferData {
|
|
|
54
54
|
/**
|
|
55
55
|
* Options for exporting the textmode content to SVG format.
|
|
56
56
|
*
|
|
57
|
+
* @category Layer data export
|
|
58
|
+
*
|
|
57
59
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/SVGExportOptions | SVGExportOptions API reference}
|
|
58
60
|
*/
|
|
59
61
|
export type SVGExportOptions = LayerExportOptions & {
|
|
@@ -110,4 +112,3 @@ export interface SVGGenerationOptions {
|
|
|
110
112
|
filename?: string;
|
|
111
113
|
layer?: LayerExportOptions['layer'];
|
|
112
114
|
}
|
|
113
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -2,6 +2,8 @@ import type { LayerExportOptions } from '../base';
|
|
|
2
2
|
/**
|
|
3
3
|
* Options for exporting the textmode content to TXT format.
|
|
4
4
|
*
|
|
5
|
+
* @category Layer data export
|
|
6
|
+
*
|
|
5
7
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/TXTExportOptions | TXTExportOptions API reference}
|
|
6
8
|
*/
|
|
7
9
|
export type TXTExportOptions = LayerExportOptions & {
|
|
@@ -38,4 +40,3 @@ export interface TXTGenerationOptions {
|
|
|
38
40
|
* Re-export shared types from SVG module that are also used by TXT exporter
|
|
39
41
|
*/
|
|
40
42
|
export type { FramebufferData } from '../svg/types';
|
|
41
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Textmodifier } from 'textmode.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type PostDrawSubscription } from './VideoFrameDriver';
|
|
3
3
|
import type { VideoExportOptions } from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Main video exporter for the textmode.js library.
|
|
@@ -8,14 +8,15 @@ export declare class VideoExporter {
|
|
|
8
8
|
private readonly _recorder;
|
|
9
9
|
private readonly _textmodifier;
|
|
10
10
|
private readonly _registerPostDrawHook;
|
|
11
|
-
constructor(textmodifier: Textmodifier, registerPostDrawHook:
|
|
11
|
+
constructor(textmodifier: Textmodifier, registerPostDrawHook: PostDrawSubscription);
|
|
12
12
|
/**
|
|
13
13
|
* Captures deterministic frames and saves them as a video file.
|
|
14
14
|
*
|
|
15
15
|
* @param options Export options
|
|
16
16
|
*/
|
|
17
17
|
$saveVideo(options?: VideoExportOptions): Promise<void>;
|
|
18
|
-
|
|
18
|
+
/** Generates a deterministic video without initiating a download. */
|
|
19
|
+
$generateVideoBlob(options?: VideoExportOptions): Promise<Blob>;
|
|
19
20
|
private _applyDefaultOptions;
|
|
20
21
|
private _positiveInteger;
|
|
21
22
|
private _positiveNumber;
|
|
@@ -27,4 +28,3 @@ export declare class VideoExporter {
|
|
|
27
28
|
private _currentPixelDensity;
|
|
28
29
|
private _withExtension;
|
|
29
30
|
}
|
|
30
|
-
//# sourceMappingURL=VideoExporter.d.ts.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { Textmodifier
|
|
1
|
+
import type { Textmodifier } from 'textmode.js';
|
|
2
2
|
import type { VideoRenderFrameOptions } from './types';
|
|
3
|
+
export type PostDrawSubscription = (callback: () => void) => () => void;
|
|
3
4
|
/**
|
|
4
5
|
* Drives deterministic video export frames through public textmode APIs.
|
|
5
6
|
*
|
|
@@ -15,7 +16,7 @@ export declare class VideoFrameDriver {
|
|
|
15
16
|
private _pendingFrame;
|
|
16
17
|
private _syntheticFrameCount;
|
|
17
18
|
private _syntheticMillis;
|
|
18
|
-
constructor(textmodifier: Textmodifier, registerPostDrawHook:
|
|
19
|
+
constructor(textmodifier: Textmodifier, registerPostDrawHook: PostDrawSubscription, width: number, height: number);
|
|
19
20
|
$render(options: VideoRenderFrameOptions): Promise<void>;
|
|
20
21
|
private _renderOneFrame;
|
|
21
22
|
private _capturePendingFrame;
|
|
@@ -29,4 +30,3 @@ export declare class VideoFrameDriver {
|
|
|
29
30
|
private _restoreProperties;
|
|
30
31
|
private _throwIfAborted;
|
|
31
32
|
}
|
|
32
|
-
//# sourceMappingURL=VideoFrameDriver.d.ts.map
|
|
@@ -7,4 +7,3 @@ export declare class VideoExportError extends Error {
|
|
|
7
7
|
export declare function createAbortError(): VideoExportError;
|
|
8
8
|
export declare function createTimeoutError(message: string, cause?: unknown): VideoExportError;
|
|
9
9
|
export declare function isAbortError(error: unknown): boolean;
|
|
10
|
-
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -3,4 +3,3 @@ export { VideoFrameDriver } from './VideoFrameDriver';
|
|
|
3
3
|
export { VideoRecorder } from './VideoRecorder';
|
|
4
4
|
export { VideoExportError } from './errors';
|
|
5
5
|
export type { VideoBitrateMode, VideoBitratePreset, VideoEncodingPlan, VideoExportErrorCode, VideoExportFormat, VideoExportOptions, VideoExportPhase, VideoFrameDriverLike, VideoHardwareAcceleration, VideoLatencyMode, VideoExportProgress, VideoGenerationOptions, VideoRecordingState, VideoRenderFrameOptions, } from './types';
|
|
6
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import type { PrepareExportFrame } from '../base';
|
|
1
2
|
/**
|
|
2
3
|
* Lifecycle state reported while a video export is being prepared, recorded, encoded, or completed.
|
|
3
4
|
*
|
|
5
|
+
* @category Animation export
|
|
6
|
+
*
|
|
4
7
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoRecordingState | VideoRecordingState API reference}
|
|
5
8
|
*/
|
|
6
9
|
export type VideoRecordingState = 'idle' | 'recording' | 'encoding' | 'completed' | 'error';
|
|
@@ -9,6 +12,8 @@ export type VideoRecordingState = 'idle' | 'recording' | 'encoding' | 'completed
|
|
|
9
12
|
*
|
|
10
13
|
* `rendering` is retained for 1.5.x compatibility. Current deterministic video capture emits `capturing`.
|
|
11
14
|
*
|
|
15
|
+
* @category Animation export
|
|
16
|
+
*
|
|
12
17
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportPhase | VideoExportPhase API reference}
|
|
13
18
|
*/
|
|
14
19
|
export type VideoExportPhase = 'probing' | 'rendering' | 'capturing' | 'encoding' | 'draining' | 'finalizing';
|
|
@@ -16,8 +21,11 @@ export type VideoCodec = 'vp8' | 'vp9' | 'avc' | (string & {});
|
|
|
16
21
|
/**
|
|
17
22
|
* Subjective bitrate preset used when an exact bits-per-second value is not supplied.
|
|
18
23
|
*
|
|
19
|
-
* Higher presets produce larger files with more detail.
|
|
20
|
-
*
|
|
24
|
+
* Higher presets produce larger files with more detail. Each preset maps to a fixed bits-per-pixel budget
|
|
25
|
+
* (bits per pixel per second), so a given preset resolves to the same bitrate regardless of the export
|
|
26
|
+
* frame rate. For exact control, pass a numeric `bitrate` value in bits per second instead.
|
|
27
|
+
*
|
|
28
|
+
* @category Animation export
|
|
21
29
|
*
|
|
22
30
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoBitratePreset | VideoBitratePreset API reference}
|
|
23
31
|
*/
|
|
@@ -25,6 +33,8 @@ export type VideoBitratePreset = 'low' | 'medium' | 'high';
|
|
|
25
33
|
/**
|
|
26
34
|
* Video container format written by `saveVideo`.
|
|
27
35
|
*
|
|
36
|
+
* @category Animation export
|
|
37
|
+
*
|
|
28
38
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportFormat | VideoExportFormat API reference}
|
|
29
39
|
*/
|
|
30
40
|
export type VideoExportFormat = 'webm' | 'mp4';
|
|
@@ -36,6 +46,8 @@ export type VideoExportFormat = 'webm' | 'mp4';
|
|
|
36
46
|
* - `'constant'`: asks the encoder to keep the bitrate steadier throughout the export. This can make file size
|
|
37
47
|
* more predictable, but may waste bits on simple frames or reduce detail on complex frames.
|
|
38
48
|
*
|
|
49
|
+
* @category Animation export
|
|
50
|
+
*
|
|
39
51
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoBitrateMode | VideoBitrateMode API reference}
|
|
40
52
|
*/
|
|
41
53
|
export type VideoBitrateMode = 'variable' | 'constant';
|
|
@@ -46,6 +58,8 @@ export type VideoBitrateMode = 'variable' | 'constant';
|
|
|
46
58
|
* - `'realtime'`: prioritizes low-latency encoding. It is intended for live streams and may drop frames when overloaded,
|
|
47
59
|
* so it is usually not recommended for frame-perfect exports.
|
|
48
60
|
*
|
|
61
|
+
* @category Animation export
|
|
62
|
+
*
|
|
49
63
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoLatencyMode | VideoLatencyMode API reference}
|
|
50
64
|
*/
|
|
51
65
|
export type VideoLatencyMode = 'quality' | 'realtime';
|
|
@@ -58,6 +72,8 @@ export type VideoLatencyMode = 'quality' | 'realtime';
|
|
|
58
72
|
* availability and output characteristics vary by device.
|
|
59
73
|
* - `'prefer-software'`: prefer CPU encoding, often more consistent across machines, but usually slower.
|
|
60
74
|
*
|
|
75
|
+
* @category Animation export
|
|
76
|
+
*
|
|
61
77
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoHardwareAcceleration | VideoHardwareAcceleration API reference}
|
|
62
78
|
*/
|
|
63
79
|
export type VideoHardwareAcceleration = 'no-preference' | 'prefer-hardware' | 'prefer-software';
|
|
@@ -65,6 +81,8 @@ export type VideoExportErrorCode = 'VIDEO_EXPORT_UNSUPPORTED' | 'VIDEO_CODEC_UNS
|
|
|
65
81
|
/**
|
|
66
82
|
* Progress information emitted during the video export process.
|
|
67
83
|
*
|
|
84
|
+
* @category Animation export
|
|
85
|
+
*
|
|
68
86
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportProgress | VideoExportProgress API reference}
|
|
69
87
|
*/
|
|
70
88
|
export type VideoExportProgress = {
|
|
@@ -114,6 +132,8 @@ export type VideoExportProgress = {
|
|
|
114
132
|
/**
|
|
115
133
|
* Options for exporting the textmode content to video format.
|
|
116
134
|
*
|
|
135
|
+
* @category Animation export
|
|
136
|
+
*
|
|
117
137
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportOptions | VideoExportOptions API reference}
|
|
118
138
|
*/
|
|
119
139
|
export type VideoExportOptions = {
|
|
@@ -142,11 +162,12 @@ export type VideoExportOptions = {
|
|
|
142
162
|
*/
|
|
143
163
|
frameRate?: number;
|
|
144
164
|
/**
|
|
145
|
-
* Target bitrate in bits per second or a
|
|
165
|
+
* Target bitrate in bits per second or a quality preset. Defaults to `'medium'`.
|
|
146
166
|
*
|
|
147
167
|
* Bitrate controls how much encoded data is available per second of video. Higher values can preserve more detail
|
|
148
|
-
* in noisy or fast-changing sketches, but create larger files. Presets
|
|
149
|
-
*
|
|
168
|
+
* in noisy or fast-changing sketches, but create larger files. Presets resolve to a fixed bits-per-pixel budget
|
|
169
|
+
* from the export dimensions only, so a given preset targets the same bitrate regardless of the frame rate.
|
|
170
|
+
* Numeric values are passed directly to the encoder.
|
|
150
171
|
*
|
|
151
172
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportOptions#bitrate | VideoExportOptions.bitrate API reference}
|
|
152
173
|
*/
|
|
@@ -200,6 +221,12 @@ export type VideoExportOptions = {
|
|
|
200
221
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportOptions#signal | VideoExportOptions.signal API reference}
|
|
201
222
|
*/
|
|
202
223
|
signal?: AbortSignal;
|
|
224
|
+
/**
|
|
225
|
+
* Prepares external media before each deterministic frame is redrawn.
|
|
226
|
+
*
|
|
227
|
+
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportOptions#prepareframe | VideoExportOptions.prepareFrame API reference}
|
|
228
|
+
*/
|
|
229
|
+
prepareFrame?: PrepareExportFrame;
|
|
203
230
|
/**
|
|
204
231
|
* When true, attempts to preserve alpha data in WebM recordings. MP4 exports reject this option.
|
|
205
232
|
*
|
|
@@ -235,6 +262,7 @@ export interface VideoGenerationOptions {
|
|
|
235
262
|
transparent: boolean;
|
|
236
263
|
debugLogging: boolean;
|
|
237
264
|
signal?: AbortSignal;
|
|
265
|
+
prepareFrame?: PrepareExportFrame;
|
|
238
266
|
}
|
|
239
267
|
export interface VideoEncodingPlan {
|
|
240
268
|
format: VideoExportFormat;
|
|
@@ -256,6 +284,7 @@ export interface VideoRenderFrameOptions {
|
|
|
256
284
|
frameCount: number;
|
|
257
285
|
frameRate: number;
|
|
258
286
|
signal?: AbortSignal;
|
|
287
|
+
prepareFrame?: PrepareExportFrame;
|
|
259
288
|
onFrame(frame: {
|
|
260
289
|
frameIndex: number;
|
|
261
290
|
canvas: HTMLCanvasElement;
|
|
@@ -265,4 +294,3 @@ export interface VideoFrameDriverLike {
|
|
|
265
294
|
readonly canvas: HTMLCanvasElement;
|
|
266
295
|
$render(options: VideoRenderFrameOptions): Promise<void>;
|
|
267
296
|
}
|
|
268
|
-
//# sourceMappingURL=types.d.ts.map
|