textmode.export.js 0.0.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 (118) hide show
  1. package/README.md +166 -0
  2. package/dist/textmode.export.esm.js +2061 -0
  3. package/dist/textmode.export.umd.js +3 -0
  4. package/dist/types/exporters/base/DataExtractor.d.ts +23 -0
  5. package/dist/types/exporters/base/DataExtractor.d.ts.map +1 -0
  6. package/dist/types/exporters/base/FileHandler.d.ts +24 -0
  7. package/dist/types/exporters/base/FileHandler.d.ts.map +1 -0
  8. package/dist/types/exporters/base/index.d.ts +3 -0
  9. package/dist/types/exporters/base/index.d.ts.map +1 -0
  10. package/dist/types/exporters/gif/GIFExporter.d.ts +30 -0
  11. package/dist/types/exporters/gif/GIFExporter.d.ts.map +1 -0
  12. package/dist/types/exporters/gif/GIFRecorder.d.ts +24 -0
  13. package/dist/types/exporters/gif/GIFRecorder.d.ts.map +1 -0
  14. package/dist/types/exporters/gif/index.d.ts +4 -0
  15. package/dist/types/exporters/gif/index.d.ts.map +1 -0
  16. package/dist/types/exporters/gif/types.d.ts +69 -0
  17. package/dist/types/exporters/gif/types.d.ts.map +1 -0
  18. package/dist/types/exporters/image/ImageExporter.d.ts +40 -0
  19. package/dist/types/exporters/image/ImageExporter.d.ts.map +1 -0
  20. package/dist/types/exporters/image/index.d.ts +4 -0
  21. package/dist/types/exporters/image/index.d.ts.map +1 -0
  22. package/dist/types/exporters/image/types.d.ts +45 -0
  23. package/dist/types/exporters/image/types.d.ts.map +1 -0
  24. package/dist/types/exporters/svg/SVGContentGenerator.d.ts +70 -0
  25. package/dist/types/exporters/svg/SVGContentGenerator.d.ts.map +1 -0
  26. package/dist/types/exporters/svg/SVGDataExtractor.d.ts +34 -0
  27. package/dist/types/exporters/svg/SVGDataExtractor.d.ts.map +1 -0
  28. package/dist/types/exporters/svg/SVGExporter.d.ts +29 -0
  29. package/dist/types/exporters/svg/SVGExporter.d.ts.map +1 -0
  30. package/dist/types/exporters/svg/SVGPathGenerator.d.ts +50 -0
  31. package/dist/types/exporters/svg/SVGPathGenerator.d.ts.map +1 -0
  32. package/dist/types/exporters/svg/index.d.ts +6 -0
  33. package/dist/types/exporters/svg/index.d.ts.map +1 -0
  34. package/dist/types/exporters/svg/types.d.ts +111 -0
  35. package/dist/types/exporters/svg/types.d.ts.map +1 -0
  36. package/dist/types/exporters/txt/TXTExporter.d.ts +36 -0
  37. package/dist/types/exporters/txt/TXTExporter.d.ts.map +1 -0
  38. package/dist/types/exporters/txt/index.d.ts +3 -0
  39. package/dist/types/exporters/txt/index.d.ts.map +1 -0
  40. package/dist/types/exporters/txt/types.d.ts +37 -0
  41. package/dist/types/exporters/txt/types.d.ts.map +1 -0
  42. package/dist/types/exporters/video/VideoExporter.d.ts +30 -0
  43. package/dist/types/exporters/video/VideoExporter.d.ts.map +1 -0
  44. package/dist/types/exporters/video/VideoRecorder.d.ts +28 -0
  45. package/dist/types/exporters/video/VideoRecorder.d.ts.map +1 -0
  46. package/dist/types/exporters/video/index.d.ts +4 -0
  47. package/dist/types/exporters/video/index.d.ts.map +1 -0
  48. package/dist/types/exporters/video/types.d.ts +64 -0
  49. package/dist/types/exporters/video/types.d.ts.map +1 -0
  50. package/dist/types/index.d.ts +35 -0
  51. package/dist/types/index.d.ts.map +1 -0
  52. package/dist/types/overlay/blades/Blade.d.ts +20 -0
  53. package/dist/types/overlay/blades/Blade.d.ts.map +1 -0
  54. package/dist/types/overlay/blades/GIFBlade.d.ts +23 -0
  55. package/dist/types/overlay/blades/GIFBlade.d.ts.map +1 -0
  56. package/dist/types/overlay/blades/ImageBlade.d.ts +14 -0
  57. package/dist/types/overlay/blades/ImageBlade.d.ts.map +1 -0
  58. package/dist/types/overlay/blades/SVGBlade.d.ts +16 -0
  59. package/dist/types/overlay/blades/SVGBlade.d.ts.map +1 -0
  60. package/dist/types/overlay/blades/TextBlade.d.ts +14 -0
  61. package/dist/types/overlay/blades/TextBlade.d.ts.map +1 -0
  62. package/dist/types/overlay/blades/VideoBlade.d.ts +22 -0
  63. package/dist/types/overlay/blades/VideoBlade.d.ts.map +1 -0
  64. package/dist/types/overlay/blades/index.d.ts +7 -0
  65. package/dist/types/overlay/blades/index.d.ts.map +1 -0
  66. package/dist/types/overlay/components/actions/Button.d.ts +19 -0
  67. package/dist/types/overlay/components/actions/Button.d.ts.map +1 -0
  68. package/dist/types/overlay/components/base/Component.d.ts +18 -0
  69. package/dist/types/overlay/components/base/Component.d.ts.map +1 -0
  70. package/dist/types/overlay/components/base/Container.d.ts +9 -0
  71. package/dist/types/overlay/components/base/Container.d.ts.map +1 -0
  72. package/dist/types/overlay/components/base/Field.d.ts +17 -0
  73. package/dist/types/overlay/components/base/Field.d.ts.map +1 -0
  74. package/dist/types/overlay/components/display/Header.d.ts +8 -0
  75. package/dist/types/overlay/components/display/Header.d.ts.map +1 -0
  76. package/dist/types/overlay/components/display/StatusDisplay.d.ts +19 -0
  77. package/dist/types/overlay/components/display/StatusDisplay.d.ts.map +1 -0
  78. package/dist/types/overlay/components/inputs/CheckboxInput.d.ts +20 -0
  79. package/dist/types/overlay/components/inputs/CheckboxInput.d.ts.map +1 -0
  80. package/dist/types/overlay/components/inputs/NumberInput.d.ts +32 -0
  81. package/dist/types/overlay/components/inputs/NumberInput.d.ts.map +1 -0
  82. package/dist/types/overlay/components/inputs/RangeInput.d.ts +35 -0
  83. package/dist/types/overlay/components/inputs/RangeInput.d.ts.map +1 -0
  84. package/dist/types/overlay/components/inputs/SelectInput.d.ts +25 -0
  85. package/dist/types/overlay/components/inputs/SelectInput.d.ts.map +1 -0
  86. package/dist/types/overlay/components/inputs/TextInput.d.ts +19 -0
  87. package/dist/types/overlay/components/inputs/TextInput.d.ts.map +1 -0
  88. package/dist/types/overlay/core/EventBus.d.ts +10 -0
  89. package/dist/types/overlay/core/EventBus.d.ts.map +1 -0
  90. package/dist/types/overlay/core/OverlayController.d.ts +46 -0
  91. package/dist/types/overlay/core/OverlayController.d.ts.map +1 -0
  92. package/dist/types/overlay/core/StateManager.d.ts +11 -0
  93. package/dist/types/overlay/core/StateManager.d.ts.map +1 -0
  94. package/dist/types/overlay/formatRegistry.d.ts +4 -0
  95. package/dist/types/overlay/formatRegistry.d.ts.map +1 -0
  96. package/dist/types/overlay/index.d.ts +13 -0
  97. package/dist/types/overlay/index.d.ts.map +1 -0
  98. package/dist/types/overlay/models/FormatDefinition.d.ts +9 -0
  99. package/dist/types/overlay/models/FormatDefinition.d.ts.map +1 -0
  100. package/dist/types/overlay/models/OverlayEvents.d.ts +26 -0
  101. package/dist/types/overlay/models/OverlayEvents.d.ts.map +1 -0
  102. package/dist/types/overlay/models/OverlayState.d.ts +16 -0
  103. package/dist/types/overlay/models/OverlayState.d.ts.map +1 -0
  104. package/dist/types/overlay/services/ClipboardService.d.ts +8 -0
  105. package/dist/types/overlay/services/ClipboardService.d.ts.map +1 -0
  106. package/dist/types/overlay/services/ExportService.d.ts +18 -0
  107. package/dist/types/overlay/services/ExportService.d.ts.map +1 -0
  108. package/dist/types/overlay/services/PositionService.d.ts +14 -0
  109. package/dist/types/overlay/services/PositionService.d.ts.map +1 -0
  110. package/dist/types/overlay/types.d.ts +14 -0
  111. package/dist/types/overlay/types.d.ts.map +1 -0
  112. package/dist/types/overlay/utils/classes.d.ts +35 -0
  113. package/dist/types/overlay/utils/classes.d.ts.map +1 -0
  114. package/dist/types/types.d.ts +63 -0
  115. package/dist/types/types.d.ts.map +1 -0
  116. package/dist/types/utils/pixels.d.ts +13 -0
  117. package/dist/types/utils/pixels.d.ts.map +1 -0
  118. package/package.json +72 -0
package/README.md ADDED
@@ -0,0 +1,166 @@
1
+ # textmode.export.js (✿◕‿◕)ノ
2
+
3
+ <div align="center">
4
+
5
+ | [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![Vite](https://img.shields.io/badge/Vite-646CFF?logo=vite&logoColor=white)](https://vitejs.dev/) | [![docs](https://img.shields.io/badge/docs-vitepress-646cff?logo=vitepress&logoColor=white)](https://code.textmode.art/docs/exporting.html) [![Discord](https://img.shields.io/discord/1357070706181017691?color=5865F2&label=Discord&logo=discord&logoColor=white)](https://discord.gg/sjrw8QXNks) | [![ko-fi](https://shields.io/badge/ko--fi-donate-ff5f5f?logo=ko-fi)](https://ko-fi.com/V7V8JG2FY) [![Github-sponsors](https://img.shields.io/badge/sponsor-30363D?logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/humanbydefinition) |
6
+ |:-------------|:-------------|:-------------|
7
+
8
+ </div>
9
+
10
+ `textmode.export.js` is an add-on library for [`textmode.js`](https://github.com/humanbydefinition/textmode.js) that adds various export options to your `Textmodifier` instance, including:
11
+ - Plain text (`.txt`)
12
+ - Image files (`.png`, `.jpg`, `.webp`)
13
+ - Animated image files (`.gif`)
14
+ - Video files (`.webm`)
15
+ - Scalable vector graphics (`.svg`)
16
+
17
+ Besides exporting programatically, `textmode.export.js` also provides an overlay UI for users to easily export their creations.
18
+
19
+ ## Installation
20
+
21
+ ### Prerequisites
22
+ - `textmode.export.js` requires `textmode.js` v0.4.0 or later.
23
+
24
+ ### UMD
25
+
26
+ To use `textmode.export.js` in a UMD environment, download the latest `umd` build from the [**GitHub releases page**](https://github.com/humanbydefinition/textmode.export.js/releases/) or import it directly from a CDN like [**jsDelivr**](https://www.jsdelivr.com/package/npm/textmode.export.js). The library is distributed as a single JavaScript file, which you can include in your project by adding the following script tag to your HTML file:
27
+
28
+ ```html
29
+ <!-- index.html -->
30
+ <!DOCTYPE html>
31
+ <html>
32
+ <head>
33
+ <title>textmode.js sketch</title>
34
+
35
+ <!-- Import textmode.js from jsDelivr CDN -->
36
+ <script src="https://cdn.jsdelivr.net/npm/textmode.js@latest/dist/textmode.umd.js"></script>
37
+
38
+ <!-- Import textmode.export.js from jsDelivr CDN -->
39
+ <script src="https://cdn.jsdelivr.net/npm/textmode.export.js@latest/dist/textmode.export.umd.js"></script>
40
+ </head>
41
+ <body>
42
+ <script src="sketch.js"></script>
43
+ </body>
44
+ </html>
45
+ ```
46
+
47
+ ```javascript
48
+ // sketch.js
49
+ const t = textmode.create({
50
+ width: window.innerWidth,
51
+ height: window.innerHeight,
52
+ fontSize: 16,
53
+ frameRate: 60,
54
+ plugins: [
55
+ createTextmodeExportPlugin({
56
+ overlay: false
57
+ })
58
+ ]
59
+ });
60
+
61
+ t.setup(() => {
62
+ // Optional setup code here (e.g., load fonts/shaders, initialize variables that access 't')
63
+ });
64
+
65
+ t.draw(() => {
66
+ t.background(32); // Dark gray background
67
+
68
+ t.char('A');
69
+ t.charColor(255, 0, 0); // Cover the top-left quarter of the grid with a rectangle of red 'A's
70
+ t.rect(0, 0, t.grid.cols / 2, t.grid.rows / 2);
71
+
72
+ // ...add your drawing code here!
73
+
74
+ if (t.frameCount === 60) {
75
+ t.saveCanvas({
76
+ format: 'png',
77
+ filename: 'my-sketch'
78
+ });
79
+ }
80
+ });
81
+
82
+ t.windowResized(() => {
83
+ t.resizeCanvas(window.innerWidth, window.innerHeight);
84
+ });
85
+ ```
86
+
87
+ #### ESM
88
+
89
+ To use `textmode.export.js` in an ESM environment, you can install it via `npm`:
90
+
91
+ ```bash
92
+ npm install textmode.export.js
93
+ ```
94
+
95
+ Then, you can import it in your JavaScript or TypeScript files:
96
+
97
+ ```html
98
+ <!-- index.html -->
99
+ <!DOCTYPE html>
100
+ <html lang="en">
101
+ <head>
102
+ <meta charset="utf-8">
103
+ <title>textmode.js sketch</title>
104
+ </head>
105
+ <body>
106
+ <script type="module" src="./sketch.js"></script>
107
+ </body>
108
+ </html>
109
+ ```
110
+
111
+ ```javascript
112
+ // sketch.js
113
+ import { textmode } from 'textmode.js';
114
+ import { createTextmodeExportPlugin } from 'textmode.export.js';
115
+
116
+ const t = textmode.create({
117
+ width: window.innerWidth,
118
+ height: window.innerHeight,
119
+ fontSize: 16,
120
+ frameRate: 60,
121
+ plugins: [
122
+ createTextmodeExportPlugin({
123
+ overlay: false
124
+ })
125
+ ]
126
+ });
127
+
128
+ t.setup(() => {
129
+ // Optional setup code here (e.g., load fonts/shaders, initialize variables that access 't')
130
+ });
131
+
132
+ t.draw(() => {
133
+ t.background(32); // Dark gray background
134
+
135
+ t.char('A');
136
+ t.charColor(255, 0, 0); // Cover the top-left quarter of the grid with a rectangle of red 'A's
137
+ t.rect(0, 0, t.grid.cols / 2, t.grid.rows / 2);
138
+
139
+ // ...add your drawing code here!
140
+
141
+ if (t.frameCount === 60) {
142
+ t.saveCanvas({
143
+ format: 'png',
144
+ filename: 'my-sketch'
145
+ });
146
+ }
147
+ });
148
+
149
+ t.windowResized(() => {
150
+ t.resizeCanvas(window.innerWidth, window.innerHeight);
151
+ });
152
+ ```
153
+
154
+ ## Next steps
155
+
156
+ Now that you have `textmode.export.js` set up, you can explore the following resources to learn more about its features and capabilities:
157
+
158
+ 📚 **[Visit the Official Documentation](https://code.textmode.art/docs/exporting.html)** for a detailed guide on how to use the `textmode.export.js` and all its features.
159
+
160
+ 🔍 **[Browse the TypeDoc API reference](docs/README.md)** hosted right here in the repository for in-depth API details.
161
+
162
+ ## Acknowledgements
163
+
164
+ `textmode.export.js` packages [`webm-writer-js`](https://github.com/thenickdude/webm-writer-js) by [**Nicholas Sherlock**](https://github.com/thenickdude) to provide WebM video export support. `webm-writer-js` is distributed under the [**WTFPL v2**](https://en.wikipedia.org/wiki/WTFPL) license.
165
+
166
+ Animated GIF export relies on [`gifenc`](https://github.com/mattdesl/gifenc) by [**Matt DesLauriers**](https://github.com/mattdesl), available under the [**MIT License**](https://opensource.org/licenses/MIT).