apexify.js 4.9.26 → 4.9.27

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 (108) hide show
  1. package/README.md +358 -47
  2. package/dist/cjs/Canvas/ApexPainter.d.ts +122 -78
  3. package/dist/cjs/Canvas/ApexPainter.d.ts.map +1 -1
  4. package/dist/cjs/Canvas/ApexPainter.js +461 -352
  5. package/dist/cjs/Canvas/ApexPainter.js.map +1 -1
  6. package/dist/cjs/Canvas/utils/Background/bg.d.ts +23 -11
  7. package/dist/cjs/Canvas/utils/Background/bg.d.ts.map +1 -1
  8. package/dist/cjs/Canvas/utils/Background/bg.js +174 -107
  9. package/dist/cjs/Canvas/utils/Background/bg.js.map +1 -1
  10. package/dist/cjs/Canvas/utils/Custom/customLines.js +2 -2
  11. package/dist/cjs/Canvas/utils/Custom/customLines.js.map +1 -1
  12. package/dist/cjs/Canvas/utils/Image/imageFilters.d.ts +11 -0
  13. package/dist/cjs/Canvas/utils/Image/imageFilters.d.ts.map +1 -0
  14. package/dist/cjs/Canvas/utils/Image/imageFilters.js +307 -0
  15. package/dist/cjs/Canvas/utils/Image/imageFilters.js.map +1 -0
  16. package/dist/cjs/Canvas/utils/Image/imageProperties.d.ts +47 -112
  17. package/dist/cjs/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
  18. package/dist/cjs/Canvas/utils/Image/imageProperties.js +229 -560
  19. package/dist/cjs/Canvas/utils/Image/imageProperties.js.map +1 -1
  20. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.d.ts +11 -0
  21. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -0
  22. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js +351 -0
  23. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js.map +1 -0
  24. package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.d.ts +11 -0
  25. package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.d.ts.map +1 -0
  26. package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.js +215 -0
  27. package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.js.map +1 -0
  28. package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts +71 -0
  29. package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts.map +1 -0
  30. package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.js +392 -0
  31. package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.js.map +1 -0
  32. package/dist/cjs/Canvas/utils/Shapes/shapes.d.ts +29 -0
  33. package/dist/cjs/Canvas/utils/Shapes/shapes.d.ts.map +1 -0
  34. package/dist/cjs/Canvas/utils/Shapes/shapes.js +334 -0
  35. package/dist/cjs/Canvas/utils/Shapes/shapes.js.map +1 -0
  36. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts +127 -0
  37. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -0
  38. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js +365 -0
  39. package/dist/cjs/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -0
  40. package/dist/cjs/Canvas/utils/types.d.ts +227 -131
  41. package/dist/cjs/Canvas/utils/types.d.ts.map +1 -1
  42. package/dist/cjs/Canvas/utils/types.js +0 -1
  43. package/dist/cjs/Canvas/utils/types.js.map +1 -1
  44. package/dist/cjs/Canvas/utils/utils.d.ts +7 -4
  45. package/dist/cjs/Canvas/utils/utils.d.ts.map +1 -1
  46. package/dist/cjs/Canvas/utils/utils.js +17 -7
  47. package/dist/cjs/Canvas/utils/utils.js.map +1 -1
  48. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  49. package/dist/esm/Canvas/ApexPainter.d.ts +122 -78
  50. package/dist/esm/Canvas/ApexPainter.d.ts.map +1 -1
  51. package/dist/esm/Canvas/ApexPainter.js +461 -352
  52. package/dist/esm/Canvas/ApexPainter.js.map +1 -1
  53. package/dist/esm/Canvas/utils/Background/bg.d.ts +23 -11
  54. package/dist/esm/Canvas/utils/Background/bg.d.ts.map +1 -1
  55. package/dist/esm/Canvas/utils/Background/bg.js +174 -107
  56. package/dist/esm/Canvas/utils/Background/bg.js.map +1 -1
  57. package/dist/esm/Canvas/utils/Custom/customLines.js +2 -2
  58. package/dist/esm/Canvas/utils/Custom/customLines.js.map +1 -1
  59. package/dist/esm/Canvas/utils/Image/imageFilters.d.ts +11 -0
  60. package/dist/esm/Canvas/utils/Image/imageFilters.d.ts.map +1 -0
  61. package/dist/esm/Canvas/utils/Image/imageFilters.js +307 -0
  62. package/dist/esm/Canvas/utils/Image/imageFilters.js.map +1 -0
  63. package/dist/esm/Canvas/utils/Image/imageProperties.d.ts +47 -112
  64. package/dist/esm/Canvas/utils/Image/imageProperties.d.ts.map +1 -1
  65. package/dist/esm/Canvas/utils/Image/imageProperties.js +229 -560
  66. package/dist/esm/Canvas/utils/Image/imageProperties.js.map +1 -1
  67. package/dist/esm/Canvas/utils/Image/professionalImageFilters.d.ts +11 -0
  68. package/dist/esm/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -0
  69. package/dist/esm/Canvas/utils/Image/professionalImageFilters.js +351 -0
  70. package/dist/esm/Canvas/utils/Image/professionalImageFilters.js.map +1 -0
  71. package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.d.ts +11 -0
  72. package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.d.ts.map +1 -0
  73. package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.js +215 -0
  74. package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.js.map +1 -0
  75. package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts +71 -0
  76. package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts.map +1 -0
  77. package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.js +392 -0
  78. package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.js.map +1 -0
  79. package/dist/esm/Canvas/utils/Shapes/shapes.d.ts +29 -0
  80. package/dist/esm/Canvas/utils/Shapes/shapes.d.ts.map +1 -0
  81. package/dist/esm/Canvas/utils/Shapes/shapes.js +334 -0
  82. package/dist/esm/Canvas/utils/Shapes/shapes.js.map +1 -0
  83. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts +127 -0
  84. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.d.ts.map +1 -0
  85. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js +365 -0
  86. package/dist/esm/Canvas/utils/Texts/enhancedTextRenderer.js.map +1 -0
  87. package/dist/esm/Canvas/utils/types.d.ts +227 -131
  88. package/dist/esm/Canvas/utils/types.d.ts.map +1 -1
  89. package/dist/esm/Canvas/utils/types.js +0 -1
  90. package/dist/esm/Canvas/utils/types.js.map +1 -1
  91. package/dist/esm/Canvas/utils/utils.d.ts +7 -4
  92. package/dist/esm/Canvas/utils/utils.d.ts.map +1 -1
  93. package/dist/esm/Canvas/utils/utils.js +17 -7
  94. package/dist/esm/Canvas/utils/utils.js.map +1 -1
  95. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  96. package/lib/Canvas/ApexPainter.ts +1325 -1218
  97. package/lib/Canvas/utils/Background/bg.ts +247 -173
  98. package/lib/Canvas/utils/Custom/customLines.ts +3 -3
  99. package/lib/Canvas/utils/Image/imageFilters.ts +356 -0
  100. package/lib/Canvas/utils/Image/imageProperties.ts +322 -775
  101. package/lib/Canvas/utils/Image/professionalImageFilters.ts +391 -0
  102. package/lib/Canvas/utils/Image/simpleProfessionalFilters.ts +229 -0
  103. package/lib/Canvas/utils/Patterns/enhancedPatternRenderer.ts +444 -0
  104. package/lib/Canvas/utils/Shapes/shapes.ts +528 -0
  105. package/lib/Canvas/utils/Texts/enhancedTextRenderer.ts +478 -0
  106. package/lib/Canvas/utils/types.ts +301 -117
  107. package/lib/Canvas/utils/utils.ts +85 -72
  108. package/package.json +106 -188
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EnhancedTextRenderer = void 0;
7
+ const canvas_1 = require("@napi-rs/canvas");
8
+ const path_1 = __importDefault(require("path"));
9
+ /**
10
+ * Enhanced text renderer with comprehensive styling options
11
+ */
12
+ class EnhancedTextRenderer {
13
+ /**
14
+ * Renders text with all enhanced features
15
+ * @param ctx - Canvas 2D context
16
+ * @param textProps - Text properties configuration
17
+ */
18
+ static async renderText(ctx, textProps) {
19
+ ctx.save();
20
+ try {
21
+ // 1. Register custom font if provided
22
+ if (textProps.fontPath) {
23
+ await this.registerCustomFont(textProps.fontPath, textProps.fontName || 'customFont');
24
+ }
25
+ // 2. Apply transformations
26
+ this.applyTransformations(ctx, textProps);
27
+ // 3. Setup font and spacing
28
+ this.setupFont(ctx, textProps);
29
+ // 4. Apply text alignment
30
+ this.setupAlignment(ctx, textProps);
31
+ // 5. Handle text wrapping or single line rendering
32
+ if (textProps.maxWidth) {
33
+ await this.renderWrappedText(ctx, textProps);
34
+ }
35
+ else {
36
+ await this.renderSingleLine(ctx, textProps);
37
+ }
38
+ }
39
+ finally {
40
+ ctx.restore();
41
+ }
42
+ }
43
+ /**
44
+ * Registers a custom font from file path
45
+ * @param fontPath - Path to font file
46
+ * @param fontName - Name to register the font as
47
+ */
48
+ static async registerCustomFont(fontPath, fontName) {
49
+ try {
50
+ const fullPath = path_1.default.join(process.cwd(), fontPath);
51
+ canvas_1.GlobalFonts.registerFromPath(fullPath, fontName);
52
+ }
53
+ catch (error) {
54
+ console.warn(`Failed to register font from path: ${fontPath}`, error);
55
+ }
56
+ }
57
+ /**
58
+ * Applies transformations (rotation, opacity)
59
+ * @param ctx - Canvas 2D context
60
+ * @param textProps - Text properties
61
+ */
62
+ static applyTransformations(ctx, textProps) {
63
+ // Apply rotation
64
+ if (textProps.rotation && textProps.rotation !== 0) {
65
+ ctx.translate(textProps.x, textProps.y);
66
+ ctx.rotate((textProps.rotation * Math.PI) / 180);
67
+ ctx.translate(-textProps.x, -textProps.y);
68
+ }
69
+ // Apply global opacity
70
+ if (textProps.opacity !== undefined) {
71
+ ctx.globalAlpha = Math.max(0, Math.min(1, textProps.opacity));
72
+ }
73
+ }
74
+ /**
75
+ * Sets up font properties and spacing
76
+ * @param ctx - Canvas 2D context
77
+ * @param textProps - Text properties
78
+ */
79
+ static setupFont(ctx, textProps) {
80
+ const fontSize = textProps.fontSize || 16;
81
+ const fontFamily = textProps.fontName || textProps.fontFamily || 'Arial';
82
+ // Build font string with decorations
83
+ let fontString = '';
84
+ if (textProps.bold)
85
+ fontString += 'bold ';
86
+ if (textProps.italic)
87
+ fontString += 'italic ';
88
+ fontString += `${fontSize}px "${fontFamily}"`;
89
+ ctx.font = fontString;
90
+ // Apply letter spacing
91
+ if (textProps.letterSpacing !== undefined) {
92
+ ctx.letterSpacing = `${textProps.letterSpacing}px`;
93
+ }
94
+ // Apply word spacing
95
+ if (textProps.wordSpacing !== undefined) {
96
+ ctx.wordSpacing = `${textProps.wordSpacing}px`;
97
+ }
98
+ }
99
+ /**
100
+ * Sets up text alignment
101
+ * @param ctx - Canvas 2D context
102
+ * @param textProps - Text properties
103
+ */
104
+ static setupAlignment(ctx, textProps) {
105
+ ctx.textAlign = textProps.textAlign || 'left';
106
+ ctx.textBaseline = textProps.textBaseline || 'alphabetic';
107
+ }
108
+ /**
109
+ * Renders wrapped text with all effects
110
+ * @param ctx - Canvas 2D context
111
+ * @param textProps - Text properties
112
+ */
113
+ static async renderWrappedText(ctx, textProps) {
114
+ const fontSize = textProps.fontSize || 16;
115
+ const lineHeight = (textProps.lineHeight || 1.4) * fontSize;
116
+ const maxHeight = textProps.maxHeight;
117
+ const maxLines = maxHeight ? Math.floor(maxHeight / lineHeight) : Infinity;
118
+ // Split text into words and wrap
119
+ const words = textProps.text.split(' ');
120
+ const lines = [];
121
+ let currentLine = '';
122
+ for (const word of words) {
123
+ const testLine = currentLine ? currentLine + ' ' + word : word;
124
+ const testWidth = ctx.measureText(testLine).width;
125
+ if (testWidth > (textProps.maxWidth || Infinity) && currentLine) {
126
+ lines.push(currentLine);
127
+ currentLine = word;
128
+ if (lines.length >= maxLines) {
129
+ currentLine = '...';
130
+ break;
131
+ }
132
+ }
133
+ else {
134
+ currentLine = testLine;
135
+ }
136
+ }
137
+ if (currentLine && lines.length < maxLines) {
138
+ lines.push(currentLine);
139
+ }
140
+ // Render each line
141
+ for (let i = 0; i < lines.length; i++) {
142
+ const y = textProps.y + (i * lineHeight);
143
+ await this.renderTextLine(ctx, lines[i], textProps.x, y, textProps);
144
+ }
145
+ }
146
+ /**
147
+ * Renders single line text with all effects
148
+ * @param ctx - Canvas 2D context
149
+ * @param textProps - Text properties
150
+ */
151
+ static async renderSingleLine(ctx, textProps) {
152
+ await this.renderTextLine(ctx, textProps.text, textProps.x, textProps.y, textProps);
153
+ }
154
+ /**
155
+ * Renders a single line of text with all effects applied
156
+ * @param ctx - Canvas 2D context
157
+ * @param text - Text to render
158
+ * @param x - X position
159
+ * @param y - Y position
160
+ * @param textProps - Text properties
161
+ */
162
+ static async renderTextLine(ctx, text, x, y, textProps) {
163
+ // Calculate text dimensions
164
+ const metrics = ctx.measureText(text);
165
+ const textWidth = metrics.width;
166
+ const fontSize = textProps.fontSize || 16;
167
+ const textHeight = fontSize;
168
+ // Apply highlight background
169
+ if (textProps.highlight) {
170
+ this.renderHighlight(ctx, x, y, textWidth, textHeight, textProps.highlight);
171
+ }
172
+ // Apply glow effect
173
+ if (textProps.glow) {
174
+ this.renderGlow(ctx, text, x, y, textProps.glow);
175
+ }
176
+ // Apply shadow effect
177
+ if (textProps.shadow) {
178
+ this.renderShadow(ctx, text, x, y, textProps.shadow);
179
+ }
180
+ // Apply stroke
181
+ if (textProps.stroke) {
182
+ this.renderStroke(ctx, text, x, y, textProps.stroke);
183
+ }
184
+ // Apply fill
185
+ this.renderFill(ctx, text, x, y, textProps);
186
+ // Apply text decorations
187
+ this.renderDecorations(ctx, text, x, y, textWidth, textHeight, textProps);
188
+ }
189
+ /**
190
+ * Renders highlight background
191
+ * @param ctx - Canvas 2D context
192
+ * @param x - X position
193
+ * @param y - Y position
194
+ * @param width - Text width
195
+ * @param height - Text height
196
+ * @param highlight - Highlight options
197
+ */
198
+ static renderHighlight(ctx, x, y, width, height, highlight) {
199
+ ctx.save();
200
+ const opacity = highlight.opacity !== undefined ? highlight.opacity : 0.3;
201
+ ctx.globalAlpha = opacity;
202
+ ctx.fillStyle = highlight.color || '#ffff00';
203
+ // Adjust highlight position based on text baseline
204
+ const highlightY = y - height * 0.8; // Adjust for different baselines
205
+ ctx.fillRect(x, highlightY, width, height);
206
+ ctx.restore();
207
+ }
208
+ /**
209
+ * Renders glow effect
210
+ * @param ctx - Canvas 2D context
211
+ * @param text - Text to render
212
+ * @param x - X position
213
+ * @param y - Y position
214
+ * @param glow - Glow options
215
+ */
216
+ static renderGlow(ctx, text, x, y, glow) {
217
+ ctx.save();
218
+ const intensity = glow.intensity || 10;
219
+ const opacity = glow.opacity !== undefined ? glow.opacity : 0.8;
220
+ ctx.shadowColor = glow.color || '#ffffff';
221
+ ctx.shadowBlur = intensity;
222
+ ctx.globalAlpha = opacity;
223
+ ctx.fillText(text, x, y);
224
+ ctx.restore();
225
+ }
226
+ /**
227
+ * Renders shadow effect
228
+ * @param ctx - Canvas 2D context
229
+ * @param text - Text to render
230
+ * @param x - X position
231
+ * @param y - Y position
232
+ * @param shadow - Shadow options
233
+ */
234
+ static renderShadow(ctx, text, x, y, shadow) {
235
+ ctx.save();
236
+ ctx.shadowColor = shadow.color || 'rgba(0, 0, 0, 0.5)';
237
+ ctx.shadowOffsetX = shadow.offsetX || 2;
238
+ ctx.shadowOffsetY = shadow.offsetY || 2;
239
+ ctx.shadowBlur = shadow.blur || 4;
240
+ if (shadow.opacity !== undefined) {
241
+ ctx.globalAlpha = shadow.opacity;
242
+ }
243
+ ctx.fillText(text, x, y);
244
+ ctx.restore();
245
+ }
246
+ /**
247
+ * Renders stroke/outline
248
+ * @param ctx - Canvas 2D context
249
+ * @param text - Text to render
250
+ * @param x - X position
251
+ * @param y - Y position
252
+ * @param stroke - Stroke options
253
+ */
254
+ static renderStroke(ctx, text, x, y, stroke) {
255
+ ctx.save();
256
+ ctx.lineWidth = stroke.width || 1;
257
+ if (stroke.gradient) {
258
+ ctx.strokeStyle = this.createGradient(ctx, stroke.gradient, x, y, x + ctx.measureText(text).width, y);
259
+ }
260
+ else {
261
+ ctx.strokeStyle = stroke.color || '#000000';
262
+ }
263
+ if (stroke.opacity !== undefined) {
264
+ ctx.globalAlpha = stroke.opacity;
265
+ }
266
+ ctx.strokeText(text, x, y);
267
+ ctx.restore();
268
+ }
269
+ /**
270
+ * Renders text fill
271
+ * @param ctx - Canvas 2D context
272
+ * @param text - Text to render
273
+ * @param x - X position
274
+ * @param y - Y position
275
+ * @param textProps - Text properties
276
+ */
277
+ static renderFill(ctx, text, x, y, textProps) {
278
+ ctx.save();
279
+ if (textProps.gradient) {
280
+ ctx.fillStyle = this.createGradient(ctx, textProps.gradient, x, y, x + ctx.measureText(text).width, y);
281
+ }
282
+ else {
283
+ ctx.fillStyle = textProps.color || '#000000';
284
+ }
285
+ ctx.fillText(text, x, y);
286
+ ctx.restore();
287
+ }
288
+ /**
289
+ * Renders text decorations (underline, overline, strikethrough)
290
+ * @param ctx - Canvas 2D context
291
+ * @param text - Text to render
292
+ * @param x - X position
293
+ * @param y - Y position
294
+ * @param width - Text width
295
+ * @param height - Text height
296
+ * @param textProps - Text properties
297
+ */
298
+ static renderDecorations(ctx, text, x, y, width, height, textProps) {
299
+ if (!textProps.underline && !textProps.overline && !textProps.strikethrough) {
300
+ return;
301
+ }
302
+ ctx.save();
303
+ const fontSize = textProps.fontSize || 16;
304
+ const decorationColor = textProps.color || '#000000';
305
+ const decorationWidth = Math.max(1, fontSize * 0.05); // 5% of font size
306
+ ctx.strokeStyle = decorationColor;
307
+ ctx.lineWidth = decorationWidth;
308
+ // Underline
309
+ if (textProps.underline) {
310
+ const underlineY = y + fontSize * 0.1;
311
+ ctx.beginPath();
312
+ ctx.moveTo(x, underlineY);
313
+ ctx.lineTo(x + width, underlineY);
314
+ ctx.stroke();
315
+ }
316
+ // Overline
317
+ if (textProps.overline) {
318
+ const overlineY = y - fontSize * 0.8;
319
+ ctx.beginPath();
320
+ ctx.moveTo(x, overlineY);
321
+ ctx.lineTo(x + width, overlineY);
322
+ ctx.stroke();
323
+ }
324
+ // Strikethrough
325
+ if (textProps.strikethrough) {
326
+ const strikethroughY = y - fontSize * 0.3;
327
+ ctx.beginPath();
328
+ ctx.moveTo(x, strikethroughY);
329
+ ctx.lineTo(x + width, strikethroughY);
330
+ ctx.stroke();
331
+ }
332
+ ctx.restore();
333
+ }
334
+ /**
335
+ * Creates a gradient for text fill or stroke
336
+ * @param ctx - Canvas 2D context
337
+ * @param gradientOptions - Gradient configuration
338
+ * @param startX - Start X position
339
+ * @param startY - Start Y position
340
+ * @param endX - End X position
341
+ * @param endY - End Y position
342
+ * @returns Canvas gradient
343
+ */
344
+ static createGradient(ctx, gradientOptions, startX, startY, endX, endY) {
345
+ if (!gradientOptions || !gradientOptions.type || !gradientOptions.colors) {
346
+ throw new Error("Invalid gradient options. Provide a valid object with type and colors properties.");
347
+ }
348
+ let gradient;
349
+ if (gradientOptions.type === "linear") {
350
+ gradient = ctx.createLinearGradient(startX, startY, endX, endY);
351
+ }
352
+ else if (gradientOptions.type === "radial") {
353
+ gradient = ctx.createRadialGradient(gradientOptions.startX || startX, gradientOptions.startY || startY, gradientOptions.startRadius || 0, gradientOptions.endX || endX, gradientOptions.endY || endY, gradientOptions.endRadius || 0);
354
+ }
355
+ else {
356
+ throw new Error('Unsupported gradient type. Use "linear" or "radial".');
357
+ }
358
+ for (const colorStop of gradientOptions.colors) {
359
+ gradient.addColorStop(colorStop.stop, colorStop.color);
360
+ }
361
+ return gradient;
362
+ }
363
+ }
364
+ exports.EnhancedTextRenderer = EnhancedTextRenderer;
365
+ //# sourceMappingURL=enhancedTextRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhancedTextRenderer.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Texts/enhancedTextRenderer.ts"],"names":[],"mappings":"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"}