textmode.export.js 1.6.0 → 1.7.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.
- 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 -27
- package/dist/types/exporters/gif/GIFRecorder.d.ts +0 -1
- 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 +2 -2
- package/dist/types/exporters/video/VideoFrameDriver.d.ts +0 -1
- 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 +27 -1
- 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/RangeInput.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/dist/types/version.d.ts +0 -1
- package/package.json +77 -45
- 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.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.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,14 @@
|
|
|
1
|
-
import type { Textmodifier } from 'textmode.js';
|
|
2
|
-
import type { TextmodePluginContext } from 'textmode.js';
|
|
1
|
+
import type { Textmodifier, TextmodePluginContext } from 'textmode.js';
|
|
3
2
|
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
|
-
*/
|
|
3
|
+
/** Deterministic, bounded-memory GIF exporter. */
|
|
9
4
|
export declare class GIFExporter {
|
|
10
|
-
private readonly _recorder;
|
|
11
5
|
private readonly _textmodifier;
|
|
12
6
|
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
|
-
*/
|
|
7
|
+
constructor(_textmodifier: Textmodifier, _registerPostDrawHook: TextmodePluginContext['registerPostDrawHook']);
|
|
25
8
|
$saveGIF(options?: GIFExportOptions): Promise<void>;
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
*
|
|
29
|
-
* @param options User-provided options
|
|
30
|
-
* @returns Complete options with defaults applied
|
|
31
|
-
*/
|
|
9
|
+
/** Generates a GIF blob without initiating a download. */
|
|
10
|
+
$generateGIFBlob(options?: GIFExportOptions): Promise<Blob>;
|
|
32
11
|
private _applyDefaultOptions;
|
|
12
|
+
private _throwIfAborted;
|
|
13
|
+
private _yieldToBrowser;
|
|
33
14
|
}
|
|
34
|
-
//# sourceMappingURL=GIFExporter.d.ts.map
|
|
@@ -21,4 +21,3 @@ export declare class GIFRecorder {
|
|
|
21
21
|
*/
|
|
22
22
|
$record(canvas: HTMLCanvasElement, options: GIFGenerationOptions, registerPostDrawHook: TextmodePluginContext['registerPostDrawHook'], 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
|
|
@@ -15,7 +15,8 @@ export declare class VideoExporter {
|
|
|
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
|
|
@@ -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';
|
|
@@ -19,12 +24,16 @@ export type VideoCodec = 'vp8' | 'vp9' | 'avc' | (string & {});
|
|
|
19
24
|
* Higher presets produce larger files with more detail. For exact control, pass a numeric
|
|
20
25
|
* `bitrate` value in bits per second instead.
|
|
21
26
|
*
|
|
27
|
+
* @category Animation export
|
|
28
|
+
*
|
|
22
29
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoBitratePreset | VideoBitratePreset API reference}
|
|
23
30
|
*/
|
|
24
31
|
export type VideoBitratePreset = 'low' | 'medium' | 'high';
|
|
25
32
|
/**
|
|
26
33
|
* Video container format written by `saveVideo`.
|
|
27
34
|
*
|
|
35
|
+
* @category Animation export
|
|
36
|
+
*
|
|
28
37
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportFormat | VideoExportFormat API reference}
|
|
29
38
|
*/
|
|
30
39
|
export type VideoExportFormat = 'webm' | 'mp4';
|
|
@@ -36,6 +45,8 @@ export type VideoExportFormat = 'webm' | 'mp4';
|
|
|
36
45
|
* - `'constant'`: asks the encoder to keep the bitrate steadier throughout the export. This can make file size
|
|
37
46
|
* more predictable, but may waste bits on simple frames or reduce detail on complex frames.
|
|
38
47
|
*
|
|
48
|
+
* @category Animation export
|
|
49
|
+
*
|
|
39
50
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoBitrateMode | VideoBitrateMode API reference}
|
|
40
51
|
*/
|
|
41
52
|
export type VideoBitrateMode = 'variable' | 'constant';
|
|
@@ -46,6 +57,8 @@ export type VideoBitrateMode = 'variable' | 'constant';
|
|
|
46
57
|
* - `'realtime'`: prioritizes low-latency encoding. It is intended for live streams and may drop frames when overloaded,
|
|
47
58
|
* so it is usually not recommended for frame-perfect exports.
|
|
48
59
|
*
|
|
60
|
+
* @category Animation export
|
|
61
|
+
*
|
|
49
62
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoLatencyMode | VideoLatencyMode API reference}
|
|
50
63
|
*/
|
|
51
64
|
export type VideoLatencyMode = 'quality' | 'realtime';
|
|
@@ -58,6 +71,8 @@ export type VideoLatencyMode = 'quality' | 'realtime';
|
|
|
58
71
|
* availability and output characteristics vary by device.
|
|
59
72
|
* - `'prefer-software'`: prefer CPU encoding, often more consistent across machines, but usually slower.
|
|
60
73
|
*
|
|
74
|
+
* @category Animation export
|
|
75
|
+
*
|
|
61
76
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoHardwareAcceleration | VideoHardwareAcceleration API reference}
|
|
62
77
|
*/
|
|
63
78
|
export type VideoHardwareAcceleration = 'no-preference' | 'prefer-hardware' | 'prefer-software';
|
|
@@ -65,6 +80,8 @@ export type VideoExportErrorCode = 'VIDEO_EXPORT_UNSUPPORTED' | 'VIDEO_CODEC_UNS
|
|
|
65
80
|
/**
|
|
66
81
|
* Progress information emitted during the video export process.
|
|
67
82
|
*
|
|
83
|
+
* @category Animation export
|
|
84
|
+
*
|
|
68
85
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportProgress | VideoExportProgress API reference}
|
|
69
86
|
*/
|
|
70
87
|
export type VideoExportProgress = {
|
|
@@ -114,6 +131,8 @@ export type VideoExportProgress = {
|
|
|
114
131
|
/**
|
|
115
132
|
* Options for exporting the textmode content to video format.
|
|
116
133
|
*
|
|
134
|
+
* @category Animation export
|
|
135
|
+
*
|
|
117
136
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportOptions | VideoExportOptions API reference}
|
|
118
137
|
*/
|
|
119
138
|
export type VideoExportOptions = {
|
|
@@ -200,6 +219,12 @@ export type VideoExportOptions = {
|
|
|
200
219
|
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportOptions#signal | VideoExportOptions.signal API reference}
|
|
201
220
|
*/
|
|
202
221
|
signal?: AbortSignal;
|
|
222
|
+
/**
|
|
223
|
+
* Prepares external media before each deterministic frame is redrawn.
|
|
224
|
+
*
|
|
225
|
+
* @see {@link https://code.textmode.art/api/textmode.export.js/type-aliases/VideoExportOptions#prepareframe | VideoExportOptions.prepareFrame API reference}
|
|
226
|
+
*/
|
|
227
|
+
prepareFrame?: PrepareExportFrame;
|
|
203
228
|
/**
|
|
204
229
|
* When true, attempts to preserve alpha data in WebM recordings. MP4 exports reject this option.
|
|
205
230
|
*
|
|
@@ -235,6 +260,7 @@ export interface VideoGenerationOptions {
|
|
|
235
260
|
transparent: boolean;
|
|
236
261
|
debugLogging: boolean;
|
|
237
262
|
signal?: AbortSignal;
|
|
263
|
+
prepareFrame?: PrepareExportFrame;
|
|
238
264
|
}
|
|
239
265
|
export interface VideoEncodingPlan {
|
|
240
266
|
format: VideoExportFormat;
|
|
@@ -256,6 +282,7 @@ export interface VideoRenderFrameOptions {
|
|
|
256
282
|
frameCount: number;
|
|
257
283
|
frameRate: number;
|
|
258
284
|
signal?: AbortSignal;
|
|
285
|
+
prepareFrame?: PrepareExportFrame;
|
|
259
286
|
onFrame(frame: {
|
|
260
287
|
frameIndex: number;
|
|
261
288
|
canvas: HTMLCanvasElement;
|
|
@@ -265,4 +292,3 @@ export interface VideoFrameDriverLike {
|
|
|
265
292
|
readonly canvas: HTMLCanvasElement;
|
|
266
293
|
$render(options: VideoRenderFrameOptions): Promise<void>;
|
|
267
294
|
}
|
|
268
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,50 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @packageDocumentation
|
|
3
3
|
*
|
|
4
|
-
* Export
|
|
4
|
+
* Export finished textmode.js artworks without leaving the sketch.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* allowing you to save your generative artworks in multiple formats with a
|
|
8
|
-
* convenient overlay UI for quick access to all export options.
|
|
6
|
+
* ## Choose an output
|
|
9
7
|
*
|
|
10
|
-
*
|
|
8
|
+
* Use **canvas capture** for the exact image on screen: PNG, JPEG, WebP, GIF,
|
|
9
|
+
* or video preserve compositing, filters, shaders, and post-processing. Use
|
|
10
|
+
* **layer data export** when the artwork should stay editable or machine
|
|
11
|
+
* readable: TXT, SVG, and JSON read from the selected layer, while JSON can
|
|
12
|
+
* also describe the full layer stack.
|
|
11
13
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* ### Vector formats
|
|
16
|
-
* - {@link SVGExportOptions | SVG} - Save as scalable vector graphics
|
|
17
|
-
*
|
|
18
|
-
* ### Text formats
|
|
19
|
-
* - {@link TXTExportOptions | TXT} - Save text content as plain text
|
|
20
|
-
* - {@link JSONExportOptions | JSON} - Save document data as structured JSON
|
|
21
|
-
*
|
|
22
|
-
* ### Animation formats
|
|
23
|
-
* - {@link GIFExportOptions | GIF} - Save as animated GIF
|
|
24
|
-
* - {@link VideoExportOptions | Video} - Save as WebM or MP4 video
|
|
25
|
-
*
|
|
26
|
-
* @module textmode.export.js
|
|
14
|
+
* Start with {@link ExportPlugin}, then call the helpers added to your sketch
|
|
15
|
+
* or use the built-in export overlay. For recipes and format trade-offs, read
|
|
16
|
+
* the [Exporting guide](/docs/exporting).
|
|
27
17
|
*/
|
|
28
18
|
import type { TextmodePlugin } from 'textmode.js';
|
|
29
19
|
import './augmentations';
|
|
30
|
-
export type { ExportDefaults, ExportDefaultsPatch, ExportOverlayPosition, ExportOverlayPositionInput } from './types';
|
|
20
|
+
export type { ExportDefaults, ExportDefaultsPatch, ExportOverlayPosition, ExportOverlayPositionInput, GIFOverlayDefaults, ImageOverlayDefaults, JSONOverlayDefaults, SVGOverlayDefaults, TXTOverlayDefaults, VideoOverlayDefaults, } from './types';
|
|
31
21
|
export type { TextmodeExportAPI, ExportOverlayController } from './types';
|
|
32
22
|
export type { ImageExportOptions } from './exporters/image';
|
|
33
23
|
export type { SVGExportOptions } from './exporters/svg';
|
|
34
24
|
export type { TXTExportOptions } from './exporters/txt';
|
|
35
|
-
export type {
|
|
25
|
+
export type { JSONExportColorMode, JSONExportOptions, JSONExportTarget, TextmodeDocumentJSON } from './exporters/json';
|
|
36
26
|
export type { GIFExportOptions, GIFExportProgress } from './exporters/gif';
|
|
37
|
-
export type { VideoBitrateMode, VideoBitratePreset,
|
|
27
|
+
export type { VideoBitrateMode, VideoBitratePreset, VideoExportFormat, VideoExportOptions, VideoExportPhase, VideoExportProgress, VideoHardwareAcceleration, VideoLatencyMode, VideoRecordingState, } from './exporters/video';
|
|
38
28
|
export type { LayerExportOptions } from './exporters/base';
|
|
39
29
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* Add this plugin to your textmode.js instance to enable exporting artworks
|
|
43
|
-
* as images, videos, SVG, JSON, and text files. Includes an overlay UI for quick
|
|
44
|
-
* access to all export options, which can be controlled at runtime.
|
|
30
|
+
* Default export plugin instance for the standard textmode.js workflow.
|
|
45
31
|
*
|
|
46
|
-
* @
|
|
47
|
-
* {@includeCode ../examples/ExportPlugin/init/sketch.js}
|
|
32
|
+
* @category Workflow
|
|
48
33
|
*
|
|
49
34
|
* @see {@link https://code.textmode.art/api/textmode.export.js/variables/ExportPlugin | ExportPlugin API reference}
|
|
50
35
|
*/
|
|
@@ -54,4 +39,3 @@ declare global {
|
|
|
54
39
|
ExportPlugin?: TextmodePlugin;
|
|
55
40
|
}
|
|
56
41
|
}
|
|
57
|
-
//# sourceMappingURL=index.d.ts.map
|