apexify.js 4.7.96 → 4.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/ai/ApexAI.d.ts.map +1 -1
- package/dist/cjs/ai/ApexAI.js +1 -5
- package/dist/cjs/ai/ApexAI.js.map +1 -1
- package/dist/cjs/ai/ApexModules.d.ts.map +1 -1
- package/dist/cjs/ai/ApexModules.js +35 -21
- package/dist/cjs/ai/ApexModules.js.map +1 -1
- package/dist/cjs/ai/functions/tokenizer.d.ts +10 -0
- package/dist/cjs/ai/functions/tokenizer.d.ts.map +1 -0
- package/dist/cjs/ai/functions/tokenizer.js +64 -0
- package/dist/cjs/ai/functions/tokenizer.js.map +1 -0
- package/dist/cjs/ai/modals/electronHub/chatmodels.d.ts.map +1 -0
- package/dist/cjs/ai/{modals-chat → modals}/electronHub/chatmodels.js +8 -11
- package/dist/cjs/ai/modals/electronHub/chatmodels.js.map +1 -0
- package/dist/cjs/ai/modals/electronHub/imageModels.d.ts.map +1 -0
- package/dist/cjs/ai/{modals-chat → modals}/electronHub/imageModels.js +9 -5
- package/dist/cjs/ai/modals/electronHub/imageModels.js.map +1 -0
- package/dist/cjs/ai/modals/electronHub/songModels.d.ts.map +1 -0
- package/dist/cjs/ai/modals/electronHub/songModels.js.map +1 -0
- package/dist/cjs/ai/modals/electronHub/speechModels.d.ts.map +1 -0
- package/dist/cjs/ai/{modals-chat → modals}/electronHub/speechModels.js +4 -1
- package/dist/cjs/ai/modals/electronHub/speechModels.js.map +1 -0
- package/dist/cjs/ai/modals/electronHub/videoModels.d.ts.map +1 -0
- package/dist/cjs/ai/modals/electronHub/videoModels.js.map +1 -0
- package/dist/cjs/ai/modals/groq/chatgroq.d.ts.map +1 -0
- package/dist/cjs/ai/modals/groq/chatgroq.js.map +1 -0
- package/dist/cjs/ai/modals/groq/imageAnalyzer.d.ts.map +1 -0
- package/dist/cjs/ai/modals/groq/imageAnalyzer.js.map +1 -0
- package/dist/cjs/ai/modals/groq/whisper.d.ts.map +1 -0
- package/dist/cjs/ai/modals/groq/whisper.js.map +1 -0
- package/dist/cjs/ai/modals/hercai/chatModels.d.ts.map +1 -0
- package/dist/cjs/ai/modals/hercai/chatModels.js.map +1 -0
- package/dist/cjs/ai/utils.d.ts +1 -1
- package/dist/cjs/ai/utils.d.ts.map +1 -1
- package/dist/cjs/ai/utils.js +1 -1
- package/dist/cjs/ai/utils.js.map +1 -1
- package/dist/cjs/canvas/ApexPainter.d.ts +1 -1
- package/dist/cjs/canvas/ApexPainter.d.ts.map +1 -1
- package/dist/cjs/canvas/ApexPainter.js +11 -8
- package/dist/cjs/canvas/ApexPainter.js.map +1 -1
- package/dist/cjs/canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/cjs/canvas/utils/Image/imageProperties.js +47 -24
- package/dist/cjs/canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/cjs/canvas/utils/types.d.ts +1 -0
- package/dist/cjs/canvas/utils/types.d.ts.map +1 -1
- package/dist/cjs/canvas/utils/types.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/ai/ApexAI.d.ts.map +1 -1
- package/dist/esm/ai/ApexAI.js +1 -5
- package/dist/esm/ai/ApexAI.js.map +1 -1
- package/dist/esm/ai/ApexModules.d.ts.map +1 -1
- package/dist/esm/ai/ApexModules.js +35 -21
- package/dist/esm/ai/ApexModules.js.map +1 -1
- package/dist/esm/ai/functions/tokenizer.d.ts +10 -0
- package/dist/esm/ai/functions/tokenizer.d.ts.map +1 -0
- package/dist/esm/ai/functions/tokenizer.js +64 -0
- package/dist/esm/ai/functions/tokenizer.js.map +1 -0
- package/dist/esm/ai/modals/electronHub/chatmodels.d.ts.map +1 -0
- package/dist/esm/ai/{modals-chat → modals}/electronHub/chatmodels.js +8 -11
- package/dist/esm/ai/modals/electronHub/chatmodels.js.map +1 -0
- package/dist/esm/ai/modals/electronHub/imageModels.d.ts.map +1 -0
- package/dist/esm/ai/{modals-chat → modals}/electronHub/imageModels.js +9 -5
- package/dist/esm/ai/modals/electronHub/imageModels.js.map +1 -0
- package/dist/esm/ai/modals/electronHub/songModels.d.ts.map +1 -0
- package/dist/esm/ai/modals/electronHub/songModels.js.map +1 -0
- package/dist/esm/ai/modals/electronHub/speechModels.d.ts.map +1 -0
- package/dist/esm/ai/{modals-chat → modals}/electronHub/speechModels.js +4 -1
- package/dist/esm/ai/modals/electronHub/speechModels.js.map +1 -0
- package/dist/esm/ai/modals/electronHub/videoModels.d.ts.map +1 -0
- package/dist/esm/ai/modals/electronHub/videoModels.js.map +1 -0
- package/dist/esm/ai/modals/groq/chatgroq.d.ts.map +1 -0
- package/dist/esm/ai/modals/groq/chatgroq.js.map +1 -0
- package/dist/esm/ai/modals/groq/imageAnalyzer.d.ts.map +1 -0
- package/dist/esm/ai/modals/groq/imageAnalyzer.js.map +1 -0
- package/dist/esm/ai/modals/groq/whisper.d.ts.map +1 -0
- package/dist/esm/ai/modals/groq/whisper.js.map +1 -0
- package/dist/esm/ai/modals/hercai/chatModels.d.ts.map +1 -0
- package/dist/esm/ai/modals/hercai/chatModels.js.map +1 -0
- package/dist/esm/ai/utils.d.ts +1 -1
- package/dist/esm/ai/utils.d.ts.map +1 -1
- package/dist/esm/ai/utils.js +1 -1
- package/dist/esm/ai/utils.js.map +1 -1
- package/dist/esm/canvas/ApexPainter.d.ts +1 -1
- package/dist/esm/canvas/ApexPainter.d.ts.map +1 -1
- package/dist/esm/canvas/ApexPainter.js +11 -8
- package/dist/esm/canvas/ApexPainter.js.map +1 -1
- package/dist/esm/canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/esm/canvas/utils/Image/imageProperties.js +47 -24
- package/dist/esm/canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/esm/canvas/utils/types.d.ts +1 -0
- package/dist/esm/canvas/utils/types.d.ts.map +1 -1
- package/dist/esm/canvas/utils/types.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/ai/ApexAI.ts +1 -13
- package/lib/ai/ApexModules.ts +45 -33
- package/lib/ai/functions/tokenizer.ts +69 -0
- package/lib/ai/modals/electronHub/chatmodels.ts +57 -0
- package/lib/ai/{modals-chat → modals}/electronHub/imageModels.ts +17 -13
- package/lib/ai/{modals-chat → modals}/electronHub/speechModels.ts +5 -1
- package/lib/ai/utils.ts +1 -1
- package/lib/canvas/ApexPainter.ts +34 -21
- package/lib/canvas/utils/Image/imageProperties.ts +67 -24
- package/lib/canvas/utils/types.ts +2 -1
- package/package.json +2 -2
- package/dist/cjs/ai/buttons/drawMenu.d.ts +0 -3
- package/dist/cjs/ai/buttons/drawMenu.d.ts.map +0 -1
- package/dist/cjs/ai/buttons/drawMenu.js +0 -273
- package/dist/cjs/ai/buttons/drawMenu.js.map +0 -1
- package/dist/cjs/ai/buttons/tools.d.ts +0 -3
- package/dist/cjs/ai/buttons/tools.d.ts.map +0 -1
- package/dist/cjs/ai/buttons/tools.js +0 -445
- package/dist/cjs/ai/buttons/tools.js.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/chatmodels.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/chatmodels.js.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/imageModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/imageModels.js.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/songModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/songModels.js.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/speechModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/speechModels.js.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/videoModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/electronHub/videoModels.js.map +0 -1
- package/dist/cjs/ai/modals-chat/groq/chatgroq.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/groq/chatgroq.js.map +0 -1
- package/dist/cjs/ai/modals-chat/groq/imageAnalyzer.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/groq/imageAnalyzer.js.map +0 -1
- package/dist/cjs/ai/modals-chat/groq/whisper.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/groq/whisper.js.map +0 -1
- package/dist/cjs/ai/modals-chat/hercai/chatModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/hercai/chatModels.js.map +0 -1
- package/dist/esm/ai/buttons/drawMenu.d.ts +0 -3
- package/dist/esm/ai/buttons/drawMenu.d.ts.map +0 -1
- package/dist/esm/ai/buttons/drawMenu.js +0 -273
- package/dist/esm/ai/buttons/drawMenu.js.map +0 -1
- package/dist/esm/ai/buttons/tools.d.ts +0 -3
- package/dist/esm/ai/buttons/tools.d.ts.map +0 -1
- package/dist/esm/ai/buttons/tools.js +0 -445
- package/dist/esm/ai/buttons/tools.js.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/chatmodels.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/chatmodels.js.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/imageModels.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/imageModels.js.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/songModels.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/songModels.js.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/speechModels.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/speechModels.js.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/videoModels.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/electronHub/videoModels.js.map +0 -1
- package/dist/esm/ai/modals-chat/groq/chatgroq.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/groq/chatgroq.js.map +0 -1
- package/dist/esm/ai/modals-chat/groq/imageAnalyzer.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/groq/imageAnalyzer.js.map +0 -1
- package/dist/esm/ai/modals-chat/groq/whisper.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/groq/whisper.js.map +0 -1
- package/dist/esm/ai/modals-chat/hercai/chatModels.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/hercai/chatModels.js.map +0 -1
- package/lib/ai/buttons/drawMenu.ts +0 -361
- package/lib/ai/buttons/tools.ts +0 -551
- package/lib/ai/modals-chat/electronHub/chatmodels.ts +0 -64
- /package/dist/cjs/ai/{modals-chat → modals}/electronHub/chatmodels.d.ts +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/electronHub/imageModels.d.ts +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/electronHub/songModels.d.ts +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/electronHub/songModels.js +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/electronHub/speechModels.d.ts +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/electronHub/videoModels.d.ts +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/electronHub/videoModels.js +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/groq/chatgroq.d.ts +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/groq/chatgroq.js +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/groq/imageAnalyzer.d.ts +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/groq/imageAnalyzer.js +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/groq/whisper.d.ts +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/groq/whisper.js +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/hercai/chatModels.d.ts +0 -0
- /package/dist/cjs/ai/{modals-chat → modals}/hercai/chatModels.js +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/electronHub/chatmodels.d.ts +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/electronHub/imageModels.d.ts +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/electronHub/songModels.d.ts +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/electronHub/songModels.js +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/electronHub/speechModels.d.ts +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/electronHub/videoModels.d.ts +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/electronHub/videoModels.js +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/groq/chatgroq.d.ts +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/groq/chatgroq.js +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/groq/imageAnalyzer.d.ts +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/groq/imageAnalyzer.js +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/groq/whisper.d.ts +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/groq/whisper.js +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/hercai/chatModels.d.ts +0 -0
- /package/dist/esm/ai/{modals-chat → modals}/hercai/chatModels.js +0 -0
- /package/lib/ai/{modals-chat → modals}/electronHub/songModels.ts +0 -0
- /package/lib/ai/{modals-chat → modals}/electronHub/videoModels.ts +0 -0
- /package/lib/ai/{modals-chat → modals}/groq/chatgroq.ts +0 -0
- /package/lib/ai/{modals-chat → modals}/groq/imageAnalyzer.ts +0 -0
- /package/lib/ai/{modals-chat → modals}/groq/whisper.ts +0 -0
- /package/lib/ai/{modals-chat → modals}/hercai/chatModels.ts +0 -0
|
@@ -362,43 +362,52 @@ async createGIF(gifFrames: { background: string; duration: number }[], options:
|
|
|
362
362
|
|
|
363
363
|
async blend(
|
|
364
364
|
layers: {
|
|
365
|
-
image: string | Buffer;
|
|
366
|
-
blendMode: 'source-over' | 'source-in' | 'source-out' | 'source-atop' |
|
|
367
|
-
'destination-over' | 'destination-in' | 'destination-out' |
|
|
368
|
-
'destination-atop' | 'lighter' | 'copy' | 'xor' |
|
|
369
|
-
'multiply' | 'screen' | 'overlay' | 'darken' |
|
|
370
|
-
'lighten' | 'color-dodge' | 'color-burn' |
|
|
371
|
-
'hard-light' | 'soft-light' | 'difference' | 'exclusion' |
|
|
365
|
+
image: string | Buffer;
|
|
366
|
+
blendMode: 'source-over' | 'source-in' | 'source-out' | 'source-atop' |
|
|
367
|
+
'destination-over' | 'destination-in' | 'destination-out' |
|
|
368
|
+
'destination-atop' | 'lighter' | 'copy' | 'xor' |
|
|
369
|
+
'multiply' | 'screen' | 'overlay' | 'darken' |
|
|
370
|
+
'lighten' | 'color-dodge' | 'color-burn' |
|
|
371
|
+
'hard-light' | 'soft-light' | 'difference' | 'exclusion' |
|
|
372
372
|
'hue' | 'saturation' | 'color' | 'luminosity';
|
|
373
|
-
position?: { x: number; y: number };
|
|
374
|
-
opacity?: number;
|
|
373
|
+
position?: { x: number; y: number };
|
|
374
|
+
opacity?: number;
|
|
375
375
|
}[],
|
|
376
|
-
baseImageBuffer: Buffer
|
|
376
|
+
baseImageBuffer: Buffer,
|
|
377
|
+
defaultBlendMode: 'source-over' | 'source-in' | 'source-out' | 'source-atop' |
|
|
378
|
+
'destination-over' | 'destination-in' | 'destination-out' |
|
|
379
|
+
'destination-atop' | 'lighter' | 'copy' | 'xor' |
|
|
380
|
+
'multiply' | 'screen' | 'overlay' | 'darken' |
|
|
381
|
+
'lighten' | 'color-dodge' | 'color-burn' |
|
|
382
|
+
'hard-light' | 'soft-light' | 'difference' | 'exclusion' |
|
|
383
|
+
'hue' | 'saturation' | 'color' | 'luminosity' = 'source-over'
|
|
377
384
|
): Promise<Buffer> {
|
|
378
385
|
try {
|
|
379
386
|
const baseImage = await loadImage(baseImageBuffer);
|
|
380
387
|
const canvas = createCanvas(baseImage.width, baseImage.height);
|
|
381
388
|
const ctx = canvas.getContext('2d');
|
|
382
389
|
|
|
390
|
+
ctx.globalCompositeOperation = defaultBlendMode;
|
|
383
391
|
ctx.drawImage(baseImage, 0, 0);
|
|
384
392
|
|
|
385
393
|
for (const layer of layers) {
|
|
386
394
|
const layerImage = await loadImage(layer.image);
|
|
387
|
-
ctx.globalAlpha = layer.opacity !== undefined ? layer.opacity : 1.0;
|
|
395
|
+
ctx.globalAlpha = layer.opacity !== undefined ? layer.opacity : 1.0;
|
|
388
396
|
|
|
389
397
|
ctx.globalCompositeOperation = layer.blendMode;
|
|
390
398
|
ctx.drawImage(layerImage, layer.position?.x || 0, layer.position?.y || 0);
|
|
391
399
|
}
|
|
392
400
|
|
|
393
401
|
ctx.globalAlpha = 1.0;
|
|
394
|
-
ctx.globalCompositeOperation =
|
|
402
|
+
ctx.globalCompositeOperation = defaultBlendMode; // Reset to user-defined default
|
|
395
403
|
|
|
396
404
|
return canvas.toBuffer('image/png');
|
|
397
405
|
} catch (error) {
|
|
398
406
|
console.error('Error creating layered composition:', error);
|
|
399
407
|
throw new Error('Failed to create layered composition');
|
|
400
408
|
}
|
|
401
|
-
}
|
|
409
|
+
}
|
|
410
|
+
|
|
402
411
|
|
|
403
412
|
async createChart(data: any, type: { chartType: string, chartNumber: number}) {
|
|
404
413
|
|
|
@@ -489,13 +498,9 @@ async createGIF(gifFrames: { background: string; duration: number }[], options:
|
|
|
489
498
|
const shapeNames = ['circle', 'square', 'triangle', 'pentagon', 'hexagon', 'heptagon', 'octagon', 'star', 'kite', 'arrow', 'star', 'oval', 'heart', 'diamond', 'trapezoid', 'cloud'];
|
|
490
499
|
const isShape = shapeNames.includes(source.toLowerCase());
|
|
491
500
|
|
|
492
|
-
|
|
493
|
-
ctx.globalAlpha = opacity;
|
|
494
|
-
}
|
|
495
|
-
|
|
501
|
+
|
|
496
502
|
if (isShape) {
|
|
497
|
-
drawShape(ctx, { source, x, y, width, height, rotation, borderRadius, stroke, shadow, isFilled, color, gradient, borderPosition, filling });
|
|
498
|
-
ctx.globalAlpha = 1.0;
|
|
503
|
+
drawShape(ctx, { source, x, y, width, height, opacity, rotation, borderRadius, stroke, shadow, isFilled, color, gradient, borderPosition, filling });
|
|
499
504
|
return;
|
|
500
505
|
}
|
|
501
506
|
|
|
@@ -526,6 +531,10 @@ async createGIF(gifFrames: { background: string; duration: number }[], options:
|
|
|
526
531
|
ctx.scale(scale, scale);
|
|
527
532
|
}
|
|
528
533
|
|
|
534
|
+
if (opacity !== undefined) {
|
|
535
|
+
ctx.globalAlpha = opacity;
|
|
536
|
+
}
|
|
537
|
+
|
|
529
538
|
if (blur > 0) {
|
|
530
539
|
ctx.filter = `blur(${blur}px)`;
|
|
531
540
|
}
|
|
@@ -538,10 +547,14 @@ async createGIF(gifFrames: { background: string; duration: number }[], options:
|
|
|
538
547
|
}
|
|
539
548
|
|
|
540
549
|
imageRadius(ctx, loadedImage, x, y, width, height, borderRadius, borderPosition);
|
|
550
|
+
ctx.globalAlpha = 1.0;
|
|
551
|
+
|
|
552
|
+
if (stroke?.opacity) ctx.globalAlpha = stroke.opacity as number;
|
|
553
|
+
|
|
541
554
|
applyStroke(ctx, stroke, x, y, width, height, undefined);
|
|
542
|
-
|
|
543
|
-
ctx.restore();
|
|
544
555
|
ctx.globalAlpha = 1.0;
|
|
556
|
+
|
|
557
|
+
ctx.restore();
|
|
545
558
|
}
|
|
546
559
|
|
|
547
560
|
|
|
@@ -107,52 +107,89 @@ export function applyStroke(
|
|
|
107
107
|
ctx.lineWidth = stroke.width && stroke.width > 0 ? stroke.width : 2;
|
|
108
108
|
|
|
109
109
|
ctx.beginPath();
|
|
110
|
+
const borderPos = stroke.position || 0;
|
|
110
111
|
|
|
111
|
-
|
|
112
|
+
// Adjust the bounding box by borderPos
|
|
113
|
+
// - Positive borderPos moves stroke outward
|
|
114
|
+
// - Negative borderPos moves stroke inward
|
|
115
|
+
const offsetX = x - borderPos;
|
|
116
|
+
const offsetY = y - borderPos;
|
|
117
|
+
const offsetW = width + 2 * borderPos;
|
|
118
|
+
const offsetH = height + 2 * borderPos;
|
|
119
|
+
|
|
120
|
+
ctx.beginPath();
|
|
121
|
+
|
|
122
|
+
// For known shapes (circle, star, etc.), re-draw with adjusted bounding box
|
|
123
|
+
if (
|
|
124
|
+
[
|
|
125
|
+
"heart", "arrow", "circle", "star",
|
|
126
|
+
"pentagon", "hexagon", "heptagon", "octagon",
|
|
127
|
+
"diamond", "trapezoid", "kite",
|
|
128
|
+
].includes(shapeName as string)
|
|
129
|
+
) {
|
|
112
130
|
switch (shapeName) {
|
|
113
131
|
case "circle":
|
|
114
|
-
|
|
132
|
+
// Circle centered in the new bounding box
|
|
133
|
+
ctx.arc(
|
|
134
|
+
offsetX + offsetW / 2,
|
|
135
|
+
offsetY + offsetH / 2,
|
|
136
|
+
offsetW / 2, // radius
|
|
137
|
+
0,
|
|
138
|
+
Math.PI * 2
|
|
139
|
+
);
|
|
115
140
|
break;
|
|
141
|
+
|
|
116
142
|
case "star":
|
|
117
|
-
drawStar(ctx,
|
|
143
|
+
drawStar(ctx, offsetX, offsetY, offsetW, offsetH);
|
|
118
144
|
break;
|
|
145
|
+
|
|
119
146
|
case "arrow":
|
|
120
|
-
drawArrow(ctx,
|
|
147
|
+
drawArrow(ctx, offsetX, offsetY, offsetW, offsetH);
|
|
121
148
|
break;
|
|
122
|
-
|
|
149
|
+
|
|
150
|
+
case "pentagon":
|
|
151
|
+
case "hexagon":
|
|
152
|
+
case "heptagon":
|
|
153
|
+
case "octagon": {
|
|
123
154
|
const sides = parseInt(shapeName.replace(/\D/g, ""), 10);
|
|
124
|
-
drawPolygon(ctx,
|
|
155
|
+
drawPolygon(ctx, offsetX, offsetY, offsetW, offsetH, sides);
|
|
125
156
|
break;
|
|
157
|
+
}
|
|
158
|
+
|
|
126
159
|
case "diamond":
|
|
127
|
-
ctx.moveTo(
|
|
128
|
-
ctx.lineTo(
|
|
129
|
-
ctx.lineTo(
|
|
130
|
-
ctx.lineTo(
|
|
160
|
+
ctx.moveTo(offsetX + offsetW / 2, offsetY);
|
|
161
|
+
ctx.lineTo(offsetX + offsetW, offsetY + offsetH / 2);
|
|
162
|
+
ctx.lineTo(offsetX + offsetW / 2, offsetY + offsetH);
|
|
163
|
+
ctx.lineTo(offsetX, offsetY + offsetH / 2);
|
|
131
164
|
ctx.closePath();
|
|
132
165
|
break;
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
ctx.
|
|
138
|
-
ctx.lineTo(
|
|
139
|
-
ctx.lineTo(
|
|
166
|
+
|
|
167
|
+
case "trapezoid": {
|
|
168
|
+
const topWidth = offsetW * 0.6;
|
|
169
|
+
const offsetVal = (offsetW - topWidth) / 2;
|
|
170
|
+
ctx.moveTo(offsetX + offsetVal, offsetY);
|
|
171
|
+
ctx.lineTo(offsetX + offsetVal + topWidth, offsetY);
|
|
172
|
+
ctx.lineTo(offsetX + offsetW, offsetY + offsetH);
|
|
173
|
+
ctx.lineTo(offsetX, offsetY + offsetH);
|
|
140
174
|
ctx.closePath();
|
|
141
175
|
break;
|
|
176
|
+
}
|
|
177
|
+
|
|
142
178
|
case "heart":
|
|
143
|
-
drawHeart(ctx,
|
|
179
|
+
drawHeart(ctx, offsetX, offsetY, offsetW, offsetH);
|
|
144
180
|
break;
|
|
181
|
+
|
|
145
182
|
case "kite":
|
|
146
|
-
ctx.moveTo(
|
|
147
|
-
ctx.lineTo(
|
|
148
|
-
ctx.lineTo(
|
|
149
|
-
ctx.lineTo(
|
|
183
|
+
ctx.moveTo(offsetX + offsetW / 2, offsetY);
|
|
184
|
+
ctx.lineTo(offsetX + offsetW, offsetY + offsetH / 2);
|
|
185
|
+
ctx.lineTo(offsetX + offsetW / 2, offsetY + offsetH);
|
|
186
|
+
ctx.lineTo(offsetX, offsetY + offsetH / 2);
|
|
150
187
|
ctx.closePath();
|
|
151
188
|
break;
|
|
152
189
|
}
|
|
153
190
|
} else {
|
|
154
191
|
ctx.globalCompositeOperation = "source-atop";
|
|
155
|
-
objectRadius(ctx,
|
|
192
|
+
objectRadius(ctx, offsetX, offsetY, offsetW, offsetH, stroke.borderRadius || 2, stroke.borderPosition);
|
|
156
193
|
}
|
|
157
194
|
|
|
158
195
|
ctx.stroke();
|
|
@@ -169,6 +206,7 @@ export function drawShape(ctx: SKRSContext2D, shapeSettings: any): void {
|
|
|
169
206
|
y,
|
|
170
207
|
width,
|
|
171
208
|
height,
|
|
209
|
+
opacity,
|
|
172
210
|
rotation = 0,
|
|
173
211
|
borderRadius = 0,
|
|
174
212
|
borderPosition = 'all',
|
|
@@ -188,6 +226,8 @@ export function drawShape(ctx: SKRSContext2D, shapeSettings: any): void {
|
|
|
188
226
|
|
|
189
227
|
ctx.beginPath();
|
|
190
228
|
|
|
229
|
+
ctx.globalAlpha = opacity as number;
|
|
230
|
+
|
|
191
231
|
switch (shapeName) {
|
|
192
232
|
case 'circle': {
|
|
193
233
|
ctx.arc(x + width / 2, y + height / 2, width / 2, 0, Math.PI * 2);
|
|
@@ -318,10 +358,13 @@ export function drawShape(ctx: SKRSContext2D, shapeSettings: any): void {
|
|
|
318
358
|
ctx.fill();
|
|
319
359
|
}
|
|
320
360
|
}
|
|
321
|
-
|
|
361
|
+
|
|
362
|
+
ctx.globalAlpha = 1.0;
|
|
322
363
|
|
|
323
364
|
if (stroke) {
|
|
365
|
+
if (stroke?.opacity) ctx.globalAlpha = stroke.opacity as number;
|
|
324
366
|
applyStroke(ctx, stroke, x, y, width, height, shapeName);
|
|
367
|
+
ctx.globalAlpha = 1.0;
|
|
325
368
|
}
|
|
326
369
|
|
|
327
370
|
ctx.restore();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apexify.js",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.8.1",
|
|
4
4
|
"description": "Unlimited AI models and Canvas library. Supports ts & js (supports front/back end).",
|
|
5
5
|
"author": "zenith-79",
|
|
6
6
|
"license": "MIT",
|
|
@@ -229,7 +229,7 @@
|
|
|
229
229
|
"@discordjs/voice": "^0.18.0",
|
|
230
230
|
"@google/generative-ai": "^0.22.0",
|
|
231
231
|
"@napi-rs/canvas": "^0.1.53",
|
|
232
|
-
"apexify.js": "^4.
|
|
232
|
+
"apexify.js": "^4.8.0",
|
|
233
233
|
"axios": "^1.7.7",
|
|
234
234
|
"discord.js": "^14.18.0",
|
|
235
235
|
"fluent-ffmpeg": "^2.1.3",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drawMenu.d.ts","sourceRoot":"","sources":["../../../../lib/ai/buttons/drawMenu.ts"],"names":[],"mappings":"AAAA,iBAAe,UAAU,CACrB,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,GAAG,EACjB,gBAAgB,EAAE,GAAG,EACrB,cAAc,EAAE,GAAG,EACnB,gBAAgB,EAAE,GAAG,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Vf;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.imageTools = imageTools;
|
|
4
|
-
async function imageTools(Apex, ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder) {
|
|
5
|
-
Apex.on("interactionCreate", async (a) => {
|
|
6
|
-
if (!a.isStringSelectMenu())
|
|
7
|
-
return;
|
|
8
|
-
const MenuId = a.customId;
|
|
9
|
-
const selectedOptionId = a.values[0];
|
|
10
|
-
try {
|
|
11
|
-
if (MenuId === "image_processing_select") {
|
|
12
|
-
if (selectedOptionId === "process_1") {
|
|
13
|
-
const modal = new ModalBuilder()
|
|
14
|
-
.setCustomId("resizing_image_zenithmodal")
|
|
15
|
-
.setTitle("Resizing Image");
|
|
16
|
-
const imagePos = new TextInputBuilder()
|
|
17
|
-
.setCustomId("Image_Postion")
|
|
18
|
-
.setLabel("Image Number")
|
|
19
|
-
.setMaxLength(1)
|
|
20
|
-
.setMinLength(1)
|
|
21
|
-
.setPlaceholder("Modal you want to resize (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
22
|
-
.setRequired(true)
|
|
23
|
-
.setStyle(TextInputStyle.Short);
|
|
24
|
-
const imageWidth = new TextInputBuilder()
|
|
25
|
-
.setCustomId("modal_resizingImage_width")
|
|
26
|
-
.setLabel("Image Width")
|
|
27
|
-
.setStyle(TextInputStyle.Short);
|
|
28
|
-
const imageHeight = new TextInputBuilder()
|
|
29
|
-
.setCustomId("modal_resizingImage_height")
|
|
30
|
-
.setLabel("Image Height")
|
|
31
|
-
.setStyle(TextInputStyle.Short);
|
|
32
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
33
|
-
const secondActionRow = new ActionRowBuilder().addComponents(imageWidth);
|
|
34
|
-
const thirddActionRow = new ActionRowBuilder().addComponents(imageHeight);
|
|
35
|
-
modal.addComponents(firstActionRow, secondActionRow, thirddActionRow);
|
|
36
|
-
await a.showModal(modal);
|
|
37
|
-
}
|
|
38
|
-
else if (selectedOptionId === "process_2") {
|
|
39
|
-
const modal = new ModalBuilder()
|
|
40
|
-
.setCustomId("Color_Filters")
|
|
41
|
-
.setTitle("Coloring An Image");
|
|
42
|
-
const imagePos = new TextInputBuilder()
|
|
43
|
-
.setCustomId("Image_Postion")
|
|
44
|
-
.setLabel("Image Number")
|
|
45
|
-
.setMaxLength(1)
|
|
46
|
-
.setMinLength(1)
|
|
47
|
-
.setPlaceholder("Modal you want to apply filter on (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
48
|
-
.setRequired(true)
|
|
49
|
-
.setStyle(TextInputStyle.Short);
|
|
50
|
-
const color = new TextInputBuilder()
|
|
51
|
-
.setCustomId("color_filter_image")
|
|
52
|
-
.setLabel("Color Filter")
|
|
53
|
-
.setMaxLength(7)
|
|
54
|
-
.setPlaceholder("Color in hex code (e.g => #00ff00 for green)")
|
|
55
|
-
.setMinLength(7)
|
|
56
|
-
.setRequired(true)
|
|
57
|
-
.setStyle(TextInputStyle.Short);
|
|
58
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
59
|
-
const secondActionRow = new ActionRowBuilder().addComponents(color);
|
|
60
|
-
modal.addComponents(firstActionRow, secondActionRow);
|
|
61
|
-
await a.showModal(modal);
|
|
62
|
-
}
|
|
63
|
-
else if (selectedOptionId === "process_3") {
|
|
64
|
-
const modal = new ModalBuilder()
|
|
65
|
-
.setCustomId("Convert_Image_Extension")
|
|
66
|
-
.setTitle("Convert An Image");
|
|
67
|
-
const imagePos = new TextInputBuilder()
|
|
68
|
-
.setCustomId("Image_Postion")
|
|
69
|
-
.setLabel("Image Number")
|
|
70
|
-
.setMaxLength(1)
|
|
71
|
-
.setMinLength(1)
|
|
72
|
-
.setPlaceholder("Modal you want to convert (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
73
|
-
.setRequired(true)
|
|
74
|
-
.setStyle(TextInputStyle.Short);
|
|
75
|
-
const imageType = new TextInputBuilder()
|
|
76
|
-
.setCustomId("image_type")
|
|
77
|
-
.setLabel("Image Extension")
|
|
78
|
-
.setMaxLength(5)
|
|
79
|
-
.setPlaceholder("Type extensions (e.g => (png), (jpg), (webp), (avif) )")
|
|
80
|
-
.setRequired(true)
|
|
81
|
-
.setStyle(TextInputStyle.Short);
|
|
82
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
83
|
-
const secondActionRow = new ActionRowBuilder().addComponents(imageType);
|
|
84
|
-
modal.addComponents(firstActionRow, secondActionRow);
|
|
85
|
-
await a.showModal(modal);
|
|
86
|
-
}
|
|
87
|
-
else if (selectedOptionId === "process_4") {
|
|
88
|
-
const modal = new ModalBuilder()
|
|
89
|
-
.setCustomId("Image_Brightness")
|
|
90
|
-
.setTitle("Brightening An Image");
|
|
91
|
-
const imagePos = new TextInputBuilder()
|
|
92
|
-
.setCustomId("Image_Postion")
|
|
93
|
-
.setLabel("Image Number")
|
|
94
|
-
.setMaxLength(1)
|
|
95
|
-
.setMinLength(1)
|
|
96
|
-
.setPlaceholder("Modal you want to brighten (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
97
|
-
.setRequired(true)
|
|
98
|
-
.setStyle(TextInputStyle.Short);
|
|
99
|
-
const brightnessDegree = new TextInputBuilder()
|
|
100
|
-
.setCustomId("brightness_degree")
|
|
101
|
-
.setLabel("Brightness Degree")
|
|
102
|
-
.setMaxLength(5)
|
|
103
|
-
.setPlaceholder("Brightness value (e.g => 0 -> 1 (3 decimal places are accepted))")
|
|
104
|
-
.setRequired(true)
|
|
105
|
-
.setStyle(TextInputStyle.Short);
|
|
106
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
107
|
-
const secondActionRow = new ActionRowBuilder().addComponents(brightnessDegree);
|
|
108
|
-
modal.addComponents(firstActionRow, secondActionRow);
|
|
109
|
-
await a.showModal(modal);
|
|
110
|
-
}
|
|
111
|
-
else if (selectedOptionId === "process_5") {
|
|
112
|
-
const modal = new ModalBuilder()
|
|
113
|
-
.setCustomId("Sepia_Filter")
|
|
114
|
-
.setTitle("Apply Sepia On Image");
|
|
115
|
-
const imagePos = new TextInputBuilder()
|
|
116
|
-
.setCustomId("Image_Postion")
|
|
117
|
-
.setLabel("Image Number")
|
|
118
|
-
.setMaxLength(1)
|
|
119
|
-
.setMinLength(1)
|
|
120
|
-
.setPlaceholder("Modal you want to apply Sepia on (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
121
|
-
.setRequired(true)
|
|
122
|
-
.setStyle(TextInputStyle.Short);
|
|
123
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
124
|
-
modal.addComponents(firstActionRow);
|
|
125
|
-
await a.showModal(modal);
|
|
126
|
-
}
|
|
127
|
-
else if (selectedOptionId === "process_6") {
|
|
128
|
-
const modal = new ModalBuilder()
|
|
129
|
-
.setCustomId("Pixelate_Filter")
|
|
130
|
-
.setTitle("Apply Pixelate On Image");
|
|
131
|
-
const imagePos = new TextInputBuilder()
|
|
132
|
-
.setCustomId("Image_Postion")
|
|
133
|
-
.setLabel("Image Number")
|
|
134
|
-
.setMaxLength(1)
|
|
135
|
-
.setMinLength(1)
|
|
136
|
-
.setPlaceholder("Modal you want to apply Pixelate on (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
137
|
-
.setRequired(true)
|
|
138
|
-
.setStyle(TextInputStyle.Short);
|
|
139
|
-
const xyInput = new TextInputBuilder()
|
|
140
|
-
.setCustomId("Pixelate_XY")
|
|
141
|
-
.setLabel("X, Y Positions")
|
|
142
|
-
.setPlaceholder("Enter X, Y positions (e.g => (100, 150) )")
|
|
143
|
-
.setRequired(true)
|
|
144
|
-
.setStyle(TextInputStyle.Short);
|
|
145
|
-
const whInput = new TextInputBuilder()
|
|
146
|
-
.setCustomId("Pixelate_WH")
|
|
147
|
-
.setLabel("Width, Height")
|
|
148
|
-
.setPlaceholder("Enter width, height (e.g => (50, 50) )")
|
|
149
|
-
.setRequired(true)
|
|
150
|
-
.setStyle(TextInputStyle.Short);
|
|
151
|
-
const sizeInput = new TextInputBuilder()
|
|
152
|
-
.setCustomId("Pixelate_Size")
|
|
153
|
-
.setLabel("Pixelate Size")
|
|
154
|
-
.setPlaceholder("Enter pixelate size")
|
|
155
|
-
.setRequired(true)
|
|
156
|
-
.setStyle(TextInputStyle.Short);
|
|
157
|
-
const st = new ActionRowBuilder().addComponents(imagePos);
|
|
158
|
-
const nd = new ActionRowBuilder().addComponents(xyInput);
|
|
159
|
-
const rd = new ActionRowBuilder().addComponents(whInput);
|
|
160
|
-
const th = new ActionRowBuilder().addComponents(sizeInput);
|
|
161
|
-
modal.addComponents(st, nd, rd, th);
|
|
162
|
-
await a.showModal(modal);
|
|
163
|
-
}
|
|
164
|
-
else if (selectedOptionId === "process_7") {
|
|
165
|
-
const modal = new ModalBuilder()
|
|
166
|
-
.setCustomId("Image_Blur")
|
|
167
|
-
.setTitle("Blurring An Image");
|
|
168
|
-
const imagePos = new TextInputBuilder()
|
|
169
|
-
.setCustomId("Image_Postion")
|
|
170
|
-
.setLabel("Image Number")
|
|
171
|
-
.setMaxLength(1)
|
|
172
|
-
.setMinLength(1)
|
|
173
|
-
.setPlaceholder("Modal you want to blur (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
174
|
-
.setRequired(true)
|
|
175
|
-
.setStyle(TextInputStyle.Short);
|
|
176
|
-
const blurDegree = new TextInputBuilder()
|
|
177
|
-
.setCustomId("blur_radius")
|
|
178
|
-
.setLabel("Blurring Radius")
|
|
179
|
-
.setMaxLength(5)
|
|
180
|
-
.setPlaceholder("Blur value (e.g => (value = 1-100 as max) )")
|
|
181
|
-
.setRequired(true)
|
|
182
|
-
.setStyle(TextInputStyle.Short);
|
|
183
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
184
|
-
const secondActionRow = new ActionRowBuilder().addComponents(blurDegree);
|
|
185
|
-
modal.addComponents(firstActionRow, secondActionRow);
|
|
186
|
-
await a.showModal(modal);
|
|
187
|
-
}
|
|
188
|
-
else if (selectedOptionId === "process_8") {
|
|
189
|
-
const modal = new ModalBuilder()
|
|
190
|
-
.setCustomId("Image_Fade")
|
|
191
|
-
.setTitle("Fading An Image");
|
|
192
|
-
const imagePos = new TextInputBuilder()
|
|
193
|
-
.setCustomId("Image_Postion")
|
|
194
|
-
.setLabel("Image Number")
|
|
195
|
-
.setMaxLength(1)
|
|
196
|
-
.setMinLength(1)
|
|
197
|
-
.setPlaceholder("Modal you want to fade (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
198
|
-
.setRequired(true)
|
|
199
|
-
.setStyle(TextInputStyle.Short);
|
|
200
|
-
const fadeDegree = new TextInputBuilder()
|
|
201
|
-
.setCustomId("fade_factor")
|
|
202
|
-
.setLabel("Fade By Factor")
|
|
203
|
-
.setMaxLength(5)
|
|
204
|
-
.setPlaceholder("Fade value (e.g => (value = 0-1 as max) )")
|
|
205
|
-
.setRequired(true)
|
|
206
|
-
.setStyle(TextInputStyle.Short);
|
|
207
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
208
|
-
const secondActionRow = new ActionRowBuilder().addComponents(fadeDegree);
|
|
209
|
-
modal.addComponents(firstActionRow, secondActionRow);
|
|
210
|
-
await a.showModal(modal);
|
|
211
|
-
}
|
|
212
|
-
else if (selectedOptionId === "process_9") {
|
|
213
|
-
const modal = new ModalBuilder()
|
|
214
|
-
.setCustomId("Image_Opaque")
|
|
215
|
-
.setTitle("Opaque An Image");
|
|
216
|
-
const imagePos = new TextInputBuilder()
|
|
217
|
-
.setCustomId("Image_Postion")
|
|
218
|
-
.setLabel("Image Number")
|
|
219
|
-
.setMaxLength(1)
|
|
220
|
-
.setMinLength(1)
|
|
221
|
-
.setPlaceholder("Modal you want to opaque (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
222
|
-
.setRequired(true)
|
|
223
|
-
.setStyle(TextInputStyle.Short);
|
|
224
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
225
|
-
modal.addComponents(firstActionRow);
|
|
226
|
-
await a.showModal(modal);
|
|
227
|
-
}
|
|
228
|
-
else if (selectedOptionId === "process_10") {
|
|
229
|
-
const modal = new ModalBuilder()
|
|
230
|
-
.setCustomId("Image_GrayScale")
|
|
231
|
-
.setTitle("GrayScale An Image");
|
|
232
|
-
const imagePos = new TextInputBuilder()
|
|
233
|
-
.setCustomId("Image_Postion")
|
|
234
|
-
.setLabel("Image Number")
|
|
235
|
-
.setMaxLength(1)
|
|
236
|
-
.setMinLength(1)
|
|
237
|
-
.setPlaceholder("Modal you want to apply grayscale on (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
238
|
-
.setRequired(true)
|
|
239
|
-
.setStyle(TextInputStyle.Short);
|
|
240
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
241
|
-
modal.addComponents(firstActionRow);
|
|
242
|
-
await a.showModal(modal);
|
|
243
|
-
}
|
|
244
|
-
else if (selectedOptionId === "process_11") {
|
|
245
|
-
const modal = new ModalBuilder()
|
|
246
|
-
.setCustomId("Image_Contrast")
|
|
247
|
-
.setTitle("Contrast An Image");
|
|
248
|
-
const imagePos = new TextInputBuilder()
|
|
249
|
-
.setCustomId("Image_Postion")
|
|
250
|
-
.setLabel("Image Number")
|
|
251
|
-
.setMaxLength(1)
|
|
252
|
-
.setMinLength(1)
|
|
253
|
-
.setPlaceholder("Modal you want to apply contrast on (e.g => 1st image/2nd image/3rd image/4th image)")
|
|
254
|
-
.setRequired(true)
|
|
255
|
-
.setStyle(TextInputStyle.Short);
|
|
256
|
-
const contrastValue = new TextInputBuilder()
|
|
257
|
-
.setCustomId("Contrast_Value")
|
|
258
|
-
.setLabel("Contrast Value")
|
|
259
|
-
.setMaxLength(4)
|
|
260
|
-
.setPlaceholder("Contrast value (e.g => (value = 0-2 as max) )")
|
|
261
|
-
.setRequired(true)
|
|
262
|
-
.setStyle(TextInputStyle.Short);
|
|
263
|
-
const firstActionRow = new ActionRowBuilder().addComponents(imagePos);
|
|
264
|
-
const secondActionRow = new ActionRowBuilder().addComponents(contrastValue);
|
|
265
|
-
modal.addComponents(firstActionRow, secondActionRow);
|
|
266
|
-
await a.showModal(modal);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
catch (error) { }
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
//# sourceMappingURL=drawMenu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drawMenu.js","sourceRoot":"","sources":["../../../../lib/ai/buttons/drawMenu.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../lib/ai/buttons/tools.ts"],"names":[],"mappings":"AAIA,iBAAe,OAAO,CAAC,IAAI,EAAE,GAAG,iBAgiB/B;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|