textmode.export.js 1.2.2 → 1.3.0-beta.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.
Files changed (35) hide show
  1. package/README.md +1 -0
  2. package/dist/textmode.export.esm.js +1261 -1147
  3. package/dist/textmode.export.umd.js +2 -2
  4. package/dist/types/exporters/base/DataExtractor.d.ts +13 -0
  5. package/dist/types/exporters/base/DataExtractor.d.ts.map +1 -1
  6. package/dist/types/exporters/json/JSONDataExtractor.d.ts +16 -0
  7. package/dist/types/exporters/json/JSONDataExtractor.d.ts.map +1 -0
  8. package/dist/types/exporters/json/JSONExporter.d.ts +56 -0
  9. package/dist/types/exporters/json/JSONExporter.d.ts.map +1 -0
  10. package/dist/types/exporters/json/JSONExporter.test.d.ts +2 -0
  11. package/dist/types/exporters/json/JSONExporter.test.d.ts.map +1 -0
  12. package/dist/types/exporters/json/index.d.ts +4 -0
  13. package/dist/types/exporters/json/index.d.ts.map +1 -0
  14. package/dist/types/exporters/json/types.d.ts +135 -0
  15. package/dist/types/exporters/json/types.d.ts.map +1 -0
  16. package/dist/types/exporters/svg/SVGDataExtractor.d.ts +0 -8
  17. package/dist/types/exporters/svg/SVGDataExtractor.d.ts.map +1 -1
  18. package/dist/types/index.d.ts +4 -2
  19. package/dist/types/index.d.ts.map +1 -1
  20. package/dist/types/overlay/blades/JSONBlade.d.ts +15 -0
  21. package/dist/types/overlay/blades/JSONBlade.d.ts.map +1 -0
  22. package/dist/types/overlay/blades/index.d.ts +1 -0
  23. package/dist/types/overlay/blades/index.d.ts.map +1 -1
  24. package/dist/types/overlay/core/OverlayController.d.ts.map +1 -1
  25. package/dist/types/overlay/formatRegistry.d.ts.map +1 -1
  26. package/dist/types/overlay/services/ClipboardService.d.ts +2 -1
  27. package/dist/types/overlay/services/ClipboardService.d.ts.map +1 -1
  28. package/dist/types/overlay/services/ExportService.d.ts.map +1 -1
  29. package/dist/types/overlay/types.d.ts +3 -1
  30. package/dist/types/overlay/types.d.ts.map +1 -1
  31. package/dist/types/types.d.ts +36 -0
  32. package/dist/types/types.d.ts.map +1 -1
  33. package/dist/types/version.d.ts +2 -0
  34. package/dist/types/version.d.ts.map +1 -0
  35. package/package.json +32 -29
@@ -0,0 +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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Supported JSON color output modes.
3
+ */
4
+ export type JSONExportColorMode = 'hex' | 'rgba';
5
+ /**
6
+ * RGBA color representation used in JSON exports.
7
+ */
8
+ export interface JSONRGBAColor {
9
+ r: number;
10
+ g: number;
11
+ b: number;
12
+ a: number;
13
+ }
14
+ /**
15
+ * Color value used in the exported JSON document.
16
+ */
17
+ export type JSONColorValue = string | JSONRGBAColor;
18
+ /**
19
+ * Cell transform data for JSON exports.
20
+ */
21
+ export interface JSONCellTransform {
22
+ invert: boolean;
23
+ flipX: boolean;
24
+ flipY: boolean;
25
+ rotation: number;
26
+ }
27
+ /**
28
+ * Rich per-cell representation for readable JSON exports.
29
+ */
30
+ export interface JSONObjectRowCell {
31
+ x: number;
32
+ y: number;
33
+ character: string;
34
+ foreground: JSONColorValue;
35
+ background: JSONColorValue;
36
+ transform: JSONCellTransform;
37
+ }
38
+ /**
39
+ * Row-based cell encoding.
40
+ */
41
+ export interface JSONObjectRowsCellCollection {
42
+ encoding: 'object-rows-v1';
43
+ rows: JSONObjectRowCell[][];
44
+ }
45
+ /**
46
+ * Supported JSON cell collection variants.
47
+ */
48
+ export type JSONCellCollection = JSONObjectRowsCellCollection;
49
+ /**
50
+ * Optional export metadata.
51
+ */
52
+ export interface JSONExportMetadata {
53
+ createdAt: string;
54
+ generator: {
55
+ name: 'textmode.export.js';
56
+ version: string;
57
+ };
58
+ }
59
+ /**
60
+ * Layer document exported by the JSON exporter.
61
+ */
62
+ export interface TextmodeLayerJSON {
63
+ $schema: string;
64
+ format: 'textmode.layer';
65
+ formatVersion: '1.0.0';
66
+ metadata?: JSONExportMetadata;
67
+ canvas: {
68
+ width: number;
69
+ height: number;
70
+ };
71
+ grid: {
72
+ cols: number;
73
+ rows: number;
74
+ cellWidth: number;
75
+ cellHeight: number;
76
+ };
77
+ layer: {
78
+ id: 'base';
79
+ cells: JSONCellCollection;
80
+ };
81
+ }
82
+ /**
83
+ * Options for exporting the textmode content to JSON format.
84
+ */
85
+ export type JSONExportOptions = {
86
+ /**
87
+ * The filename to save the JSON file as.
88
+ *
89
+ * If not provided, a default filename is used.
90
+ */
91
+ filename?: string;
92
+ /**
93
+ * Pretty-print the generated JSON.
94
+ *
95
+ * When set to `true`, output uses two-space indentation.
96
+ * When set to a number, that value is used as indentation width.
97
+ * When `false`, the output is minified.
98
+ *
99
+ * Defaults to `true`.
100
+ */
101
+ pretty?: boolean | number;
102
+ /**
103
+ * Color representation used for foreground and background values.
104
+ *
105
+ * Defaults to `'hex'`.
106
+ */
107
+ colorMode?: JSONExportColorMode;
108
+ /**
109
+ * Whether to include export metadata such as timestamp and generator details.
110
+ *
111
+ * Defaults to `true`.
112
+ */
113
+ includeMetadata?: boolean;
114
+ };
115
+ /**
116
+ * Internal options used by JSON generation (with all defaults applied).
117
+ */
118
+ export interface JSONGenerationOptions {
119
+ pretty: boolean | number;
120
+ colorMode: JSONExportColorMode;
121
+ includeMetadata: boolean;
122
+ filename?: string;
123
+ }
124
+ /**
125
+ * Internal extracted cell data used while building the JSON document.
126
+ */
127
+ export interface JSONCellData {
128
+ x: number;
129
+ y: number;
130
+ character: string;
131
+ foreground: JSONRGBAColor;
132
+ background: JSONRGBAColor;
133
+ transform: JSONCellTransform;
134
+ }
135
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -6,14 +6,6 @@ import type { TextmodeGrid } from 'textmode.js';
6
6
  * This class handles the conversion of raw pixel data into structured data objects.
7
7
  */
8
8
  export declare class SVGDataExtractor extends DataExtractor {
9
- /**
10
- * Extracts transform data from character pixels
11
- *
12
- * @param characterPixels Character framebuffer pixels
13
- * @param pixelIndex Pixel index in the array
14
- * @returns Transform data object
15
- */
16
- private _extractTransformData;
17
9
  /**
18
10
  * Calculates cell position information
19
11
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SVGDataExtractor.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/SVGDataExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAA+B,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;IAClD;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;;;;OAMG;IACI,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,EAAE;CA0C/F"}
1
+ {"version":3,"file":"SVGDataExtractor.d.ts","sourceRoot":"","sources":["../../../../src/exporters/svg/SVGDataExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAA+B,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;IAClD;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;;;;OAMG;IACI,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,EAAE;CA6C/F"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @packageDocumentation
3
3
  *
4
- * Export plugin for textmode.js - save artworks as images, videos, SVG, and text.
4
+ * Export plugin for textmode.js - save artworks as images, videos, SVG, JSON, and text.
5
5
  *
6
6
  * This plugin adds comprehensive export capabilities to textmode.js instances,
7
7
  * allowing you to save your generative artworks in multiple formats with a
@@ -17,6 +17,7 @@
17
17
  *
18
18
  * ### Text formats
19
19
  * - {@link TXTExportOptions | TXT} - Save text content as plain text
20
+ * - {@link JSONExportOptions | JSON} - Save base-layer data as structured JSON
20
21
  *
21
22
  * ### Animation formats
22
23
  * - {@link GIFExportOptions | GIF} - Save as animated GIF
@@ -30,13 +31,14 @@ export type { TextmodeExportAPI, TextmodeExportPluginOptions, ExportOverlayContr
30
31
  export type { ImageExportOptions } from './exporters/image';
31
32
  export type { SVGExportOptions } from './exporters/svg';
32
33
  export type { TXTExportOptions } from './exporters/txt';
34
+ export type { JSONExportOptions, TextmodeLayerJSON } from './exporters/json';
33
35
  export type { GIFExportOptions, GIFExportProgress } from './exporters/gif';
34
36
  export type { VideoExportOptions, VideoExportProgress } from './exporters/video';
35
37
  /**
36
38
  * Export plugin for textmode.js.
37
39
  *
38
40
  * Add this plugin to your textmode.js instance to enable exporting artworks
39
- * as images, videos, SVG, and text files. Includes an overlay UI for quick
41
+ * as images, videos, SVG, JSON, and text files. Includes an overlay UI for quick
40
42
  * access to all export options, which can be controlled at runtime.
41
43
  *
42
44
  * @example
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,qBAAqB,CAAC;AAOjF,OAAO,KAAK,EAAqB,2BAA2B,EAA2B,MAAM,SAAS,CAAC;AAGvG,YAAY,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACvG,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,YAAY,EAAE,cA4I1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,0BAA0B,GAAI,UAAS,2BAAgC,KAAG,cAkBtF,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,YAAY,CAAC,EAAE,cAAc,CAAC;QAC9B,0BAA0B,CAAC,EAAE,OAAO,0BAA0B,CAAC;KAC/D;CACD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAyB,MAAM,qBAAqB,CAAC;AAQjF,OAAO,KAAK,EAAqB,2BAA2B,EAA2B,MAAM,SAAS,CAAC;AAIvG,YAAY,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACvG,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,YAAY,EAAE,cA4K1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,0BAA0B,GAAI,UAAS,2BAAgC,KAAG,cAkBtF,CAAC;AAEF,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,YAAY,CAAC,EAAE,cAAc,CAAC;QAC9B,0BAA0B,CAAC,EAAE,OAAO,0BAA0B,CAAC;KAC/D;CACD"}
@@ -0,0 +1,15 @@
1
+ import type { JSONExportOptions } from '../../exporters/json';
2
+ import type { BladeConfig } from './Blade';
3
+ import { Blade } from './Blade';
4
+ export declare class JSONBlade extends Blade<JSONExportOptions> {
5
+ private prettyPrint;
6
+ private includeMetadata;
7
+ private colorMode;
8
+ constructor(config: BladeConfig<JSONExportOptions>);
9
+ render(): HTMLElement;
10
+ getOptions(): JSONExportOptions;
11
+ reset(): void;
12
+ validate(): boolean;
13
+ private applyDefaults;
14
+ }
15
+ //# sourceMappingURL=JSONBlade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSONBlade.d.ts","sourceRoot":"","sources":["../../../../src/overlay/blades/JSONBlade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,SAAU,SAAQ,KAAK,CAAC,iBAAiB,CAAC;IACtD,OAAO,CAAC,WAAW,CAMjB;IAEF,OAAO,CAAC,eAAe,CAMrB;IAEF,OAAO,CAAC,SAAS,CASf;gBAEU,MAAM,EAAE,WAAW,CAAC,iBAAiB,CAAC;IAIlD,MAAM,IAAI,WAAW;IAkBrB,UAAU,IAAI,iBAAiB;IAQ/B,KAAK,IAAI,IAAI;IAIb,QAAQ,IAAI,OAAO;IAInB,OAAO,CAAC,aAAa;CAOrB"}
@@ -1,5 +1,6 @@
1
1
  export { Blade } from './Blade';
2
2
  export { TextBlade } from './TextBlade';
3
+ export { JSONBlade } from './JSONBlade';
3
4
  export { ImageBlade } from './ImageBlade';
4
5
  export { SVGBlade } from './SVGBlade';
5
6
  export { GIFBlade } from './GIFBlade';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/overlay/blades/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/overlay/blades/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayController.d.ts","sourceRoot":"","sources":["../../../../src/overlay/core/OverlayController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAiBnE,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAyB;IAE7D,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAA8F;IAClH,OAAO,CAAC,aAAa,CAGlB;IACH,OAAO,CAAC,aAAa,CAA+E;IACpG,OAAO,CAAC,WAAW,CAAmF;IAEtG,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,aAAa,CAAC,CAAgB;IAEtC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAExC;IAEF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAIrC;IAEF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAInC;gBAGD,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EACjC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC;IAatC,MAAM,IAAI,IAAI;IAQd,IAAI,IAAI,IAAI;IAMZ,IAAI,IAAI,IAAI;IAMZ,MAAM,IAAI,IAAI;IAQd,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,IAAI;IA0BvB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,sBAAsB;YAMhB,kBAAkB;YAqElB,gBAAgB;IAqC9B,OAAO,CAAC,mBAAmB;CAgD3B"}
1
+ {"version":3,"file":"OverlayController.d.ts","sourceRoot":"","sources":["../../../../src/overlay/core/OverlayController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAiBnE,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAyB;IAE7D,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAA8F;IAClH,OAAO,CAAC,aAAa,CAGlB;IACH,OAAO,CAAC,aAAa,CAA+E;IACpG,OAAO,CAAC,WAAW,CAAmF;IAEtG,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,aAAa,CAAC,CAAgB;IAEtC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAExC;IAEF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAIrC;IAEF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAInC;gBAGD,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EACjC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC/B,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAAC;IAatC,MAAM,IAAI,IAAI;IAQd,IAAI,IAAI,IAAI;IAMZ,IAAI,IAAI,IAAI;IAMZ,MAAM,IAAI,IAAI;IAQd,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,IAAI;IA0BvB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,sBAAsB;YAMhB,kBAAkB;YAqElB,gBAAgB;IAwC9B,OAAO,CAAC,mBAAmB;CAgD3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"formatRegistry.d.ts","sourceRoot":"","sources":["../../../src/overlay/formatRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AA8ElE,wBAAgB,0BAA0B,IAAI,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAE1F"}
1
+ {"version":3,"file":"formatRegistry.d.ts","sourceRoot":"","sources":["../../../src/overlay/formatRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AA8FlE,wBAAgB,0BAA0B,IAAI,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAE1F"}
@@ -1,10 +1,11 @@
1
1
  import type { ExportFormat, ExportOptionsMap } from '../types';
2
2
  import type { TextmodeExportAPI } from '../../types';
3
- type ClipboardExportFormat = Extract<ExportFormat, 'txt' | 'svg' | 'image'>;
3
+ type ClipboardExportFormat = Extract<ExportFormat, 'txt' | 'json' | 'svg' | 'image'>;
4
4
  export declare class ClipboardService {
5
5
  private readonly api;
6
6
  constructor(api: TextmodeExportAPI);
7
7
  $copy(format: 'txt', options: ExportOptionsMap['txt']): Promise<void>;
8
+ $copy(format: 'json', options: ExportOptionsMap['json']): Promise<void>;
8
9
  $copy(format: 'svg', options: ExportOptionsMap['svg']): Promise<void>;
9
10
  $copy(format: 'image', options: ExportOptionsMap['image']): Promise<void>;
10
11
  $copy(format: ClipboardExportFormat, options: ExportOptionsMap[ClipboardExportFormat]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ClipboardService.d.ts","sourceRoot":"","sources":["../../../../src/overlay/services/ClipboardService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,KAAK,qBAAqB,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC;AAE5E,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;gBAE5B,GAAG,EAAE,iBAAiB;IAI5B,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACrE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACrE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACzE,KAAK,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAqB3G"}
1
+ {"version":3,"file":"ClipboardService.d.ts","sourceRoot":"","sources":["../../../../src/overlay/services/ClipboardService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,KAAK,qBAAqB,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC;AAErF,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;gBAE5B,GAAG,EAAE,iBAAiB;IAI5B,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACrE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACvE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACrE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACzE,KAAK,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CA0B3G"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExportService.d.ts","sourceRoot":"","sources":["../../../../src/overlay/services/ExportService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAIrF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC3B,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACtD,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC1D;AAED,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;gBAErC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC;IAKtD,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B3G,OAAO,CAAC,QAAQ;CAwBhB"}
1
+ {"version":3,"file":"ExportService.d.ts","sourceRoot":"","sources":["../../../../src/overlay/services/ExportService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKrF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC3B,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACtD,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC1D;AAED,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;gBAErC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC;IAKtD,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B3G,OAAO,CAAC,QAAQ;CA0BhB"}
@@ -3,9 +3,11 @@ import type { TXTExportOptions } from '../exporters/txt';
3
3
  import type { SVGExportOptions } from '../exporters/svg';
4
4
  import type { GIFExportOptions } from '../exporters/gif';
5
5
  import type { VideoExportOptions } from '../exporters/video';
6
- export type ExportFormat = 'txt' | 'image' | 'gif' | 'video' | 'svg';
6
+ import type { JSONExportOptions } from '../exporters/json';
7
+ export type ExportFormat = 'txt' | 'json' | 'image' | 'gif' | 'video' | 'svg';
7
8
  export type ExportOptionsMap = {
8
9
  txt: TXTExportOptions;
10
+ json: JSONExportOptions;
9
11
  image: ImageExportOptions;
10
12
  gif: GIFExportOptions;
11
13
  video: VideoExportOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/overlay/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG;IAC9B,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,GAAG,EAAE,gBAAgB,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/overlay/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG;IAC9B,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,GAAG,EAAE,gBAAgB,CAAC;CACtB,CAAC"}
@@ -3,6 +3,7 @@ import type { TXTExportOptions } from './exporters/txt';
3
3
  import type { SVGExportOptions } from './exporters/svg';
4
4
  import type { GIFExportOptions } from './exporters/gif';
5
5
  import type { VideoExportOptions } from './exporters/video';
6
+ import type { JSONExportOptions, TextmodeLayerJSON } from './exporters/json';
6
7
  /**
7
8
  * Controller for managing the export overlay UI visibility at runtime.
8
9
  */
@@ -120,6 +121,41 @@ export interface TextmodeExportAPI {
120
121
  * ```
121
122
  */
122
123
  toString(options?: TXTExportOptions): string;
124
+ /**
125
+ * Produces the current base layer as structured JSON data.
126
+ *
127
+ * @param options Export options.
128
+ * @returns The JSON document representing the current base layer.
129
+ *
130
+ * @example
131
+ * ```ts
132
+ * const layer = t.toJSON({ colorMode: 'hex', includeMetadata: true });
133
+ * ```
134
+ */
135
+ toJSON(options?: JSONExportOptions): TextmodeLayerJSON;
136
+ /**
137
+ * Produces the current base layer as a JSON string.
138
+ *
139
+ * @param options Export options.
140
+ * @returns Serialized JSON string for the current base layer.
141
+ *
142
+ * @example
143
+ * ```ts
144
+ * const json = t.toJSONString({ pretty: false, colorMode: 'hex' });
145
+ * ```
146
+ */
147
+ toJSONString(options?: JSONExportOptions): string;
148
+ /**
149
+ * Downloads the current base layer as a JSON file.
150
+ *
151
+ * @param options Export options.
152
+ *
153
+ * @example
154
+ * ```ts
155
+ * t.saveJSON({ filename: 'frame', pretty: true });
156
+ * ```
157
+ */
158
+ saveJSON(options?: JSONExportOptions): void;
123
159
  /**
124
160
  * Records an animated GIF and saves it to disk.
125
161
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;;;;;;OAOG;IACH,MAAM,IAAI,IAAI,CAAC;IAEf;;;;;;;OAOG;IACH,SAAS,IAAI,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,aAAa,EAAE,uBAAuB,CAAC;IAEvC;;;;;;;;;OASG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;;;;;OASG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE1C;;;;;;;;;OASG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE9C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAE1C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAE7C;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,2BAA2B;IAC3C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;;;;;;OAOG;IACH,MAAM,IAAI,IAAI,CAAC;IAEf;;;;;;;OAOG;IACH,SAAS,IAAI,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,aAAa,EAAE,uBAAuB,CAAC;IAEvC;;;;;;;;;OASG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;;;;;OASG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE1C;;;;;;;;;OASG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE9C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAE1C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAE7C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IAEvD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAElD;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAE5C;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,2BAA2B;IAC3C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ export declare const TEXTMODE_EXPORT_VERSION = "1.2.1";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "textmode.export.js",
3
- "version": "1.2.2",
4
- "description": "Export plugin for textmode.js - Save your creations as images, GIFs, videos, SVG, and plain text.",
3
+ "version": "1.3.0-beta.1",
4
+ "description": "Export plugin for textmode.js - Save your creations as images, GIFs, videos, SVG, JSON, and plain text.",
5
5
  "type": "module",
6
- "types": "./dist/types/index.d.ts",
7
6
  "main": "./dist/textmode.export.umd.js",
8
7
  "module": "./dist/textmode.export.esm.js",
8
+ "types": "./dist/types/index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/types/index.d.ts",
@@ -17,10 +17,15 @@
17
17
  "./dist/textmode.export.esm.js",
18
18
  "./dist/textmode.export.umd.js"
19
19
  ],
20
+ "files": [
21
+ "dist"
22
+ ],
20
23
  "scripts": {
21
24
  "dev": "vite --port 5174 --host",
22
- "build": "vite build && tsc -p tsconfig.json",
23
- "check": "npm run format:check && npm run lint && npm run lint:md && npm run typecheck && npm run check:api-docs && npm run test && npm run build",
25
+ "build:bundle": "vite build",
26
+ "build:types": "tsc",
27
+ "build": "npm run build:bundle && npm run build:types",
28
+ "check": "npm run check:format && npm run lint && npm run lint:md && npm run check:types && npm run check:api-docs && npm run test && npm run build",
24
29
  "check:api-docs": "node ./scripts/check-public-api-docs.mjs",
25
30
  "dev:docs": "typedoc --watch",
26
31
  "build:docs": "typedoc",
@@ -29,9 +34,9 @@
29
34
  "test:watch": "vitest --passWithNoTests",
30
35
  "test:ui": "vitest --ui --passWithNoTests",
31
36
  "test:coverage": "vitest --coverage --passWithNoTests",
32
- "format": "prettier --write \"src/**/*.{ts,js}\" \"typedoc-plugins/**/*.js\" \"examples/**/*.{js,html,css}\" \"scripts/**/*.mjs\" \"*.{js,ts,json,md}\" \".markdownlint*.jsonc\" \".prettierrc\" \".releaserc.json\"",
33
- "format:check": "prettier --check \"src/**/*.{ts,js}\" \"typedoc-plugins/**/*.js\" \"examples/**/*.{js,html,css}\" \"scripts/**/*.mjs\" \"*.{js,ts,json,md}\" \".markdownlint*.jsonc\" \".prettierrc\" \".releaserc.json\"",
34
- "typecheck": "tsc --noEmit -p tsconfig.json",
37
+ "format": "prettier --write .",
38
+ "check:format": "prettier --check .",
39
+ "check:types": "tsc --noEmit",
35
40
  "lint:md": "markdownlint-cli2",
36
41
  "lint:md:fix": "markdownlint-cli2 --fix",
37
42
  "lint": "eslint src --config eslint.config.js",
@@ -40,44 +45,44 @@
40
45
  "peerDependencies": {
41
46
  "textmode.js": ">=0.10.0"
42
47
  },
48
+ "dependencies": {
49
+ "gifenc": "^1.0.1",
50
+ "webm-writer": "^1.0.0"
51
+ },
43
52
  "devDependencies": {
44
- "@commitlint/cli": "^20.3.1",
45
- "@commitlint/config-conventional": "^20.3.1",
53
+ "@commitlint/cli": "^20.5.0",
54
+ "@commitlint/config-conventional": "^20.5.0",
46
55
  "@eslint/js": "^9.39.4",
47
56
  "@rollup/plugin-terser": "^0.4.4",
48
57
  "@semantic-release/commit-analyzer": "^13.0.1",
49
58
  "@semantic-release/exec": "^7.1.0",
50
59
  "@semantic-release/github": "^12.0.6",
51
- "@semantic-release/npm": "^13.1.2",
60
+ "@semantic-release/npm": "^13.1.5",
52
61
  "@semantic-release/release-notes-generator": "^14.1.0",
53
- "@types/node": "^24.5.2",
62
+ "@types/node": "^24.0.13",
54
63
  "@vitest/ui": "^3.1.2",
55
64
  "eslint": "^9.39.2",
56
- "eslint-plugin-jsdoc": "^62.4.1",
57
- "globals": "^17.1.0",
65
+ "eslint-plugin-jsdoc": "^62.9.0",
66
+ "globals": "^17.5.0",
58
67
  "husky": "^9.1.7",
59
68
  "jsdom": "^26.1.0",
60
69
  "lint-staged": "^16.4.0",
61
- "markdownlint-cli2": "^0.20.0",
70
+ "markdownlint-cli2": "^0.22.1",
62
71
  "markdownlint-cli2-formatter-default": "^0.0.6",
63
- "prettier": "^3.7.4",
72
+ "prettier": "^3.8.3",
64
73
  "semantic-release": "^25.0.3",
65
74
  "terser": "^5.44.0",
66
75
  "textmode.js": "^0.12.0",
67
- "typedoc": "^0.28.13",
76
+ "typedoc": "^0.28.19",
68
77
  "typedoc-plugin-frontmatter": "^1.3.1",
69
- "typedoc-plugin-markdown": "^4.9.0",
78
+ "typedoc-plugin-markdown": "^4.11.0",
70
79
  "typedoc-vitepress-theme": "^1.1.2",
71
- "typescript": "~5.8.3",
72
- "typescript-eslint": "^8.53.1",
73
- "vite": "^7.1.7",
80
+ "typescript": "^5.9.2",
81
+ "typescript-eslint": "^8.59.0",
82
+ "vite": "^6.3.4",
74
83
  "vite-plugin-css-injected-by-js": "^3.5.2",
75
84
  "vitest": "^3.1.2"
76
85
  },
77
- "dependencies": {
78
- "gifenc": "^1.0.1",
79
- "webm-writer": "^1.0.0"
80
- },
81
86
  "keywords": [
82
87
  "textmode",
83
88
  "textmode.js",
@@ -89,6 +94,7 @@
89
94
  "video",
90
95
  "webm",
91
96
  "svg",
97
+ "json",
92
98
  "image",
93
99
  "png",
94
100
  "jpg",
@@ -100,11 +106,8 @@
100
106
  "license": "MIT",
101
107
  "homepage": "https://code.textmode.art",
102
108
  "lint-staged": {
103
- "**/*.{ts,js,mjs,json,jsonc,html,css,md}": "prettier --write"
109
+ "*": "prettier --ignore-unknown --write"
104
110
  },
105
- "files": [
106
- "dist"
107
- ],
108
111
  "repository": {
109
112
  "type": "git",
110
113
  "url": "git+https://github.com/humanbydefinition/textmode.export.js.git"