apexify.js 4.6.2 → 4.6.3

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 (122) hide show
  1. package/dist/cjs/ai/functions/readFiles.js +1 -1
  2. package/dist/cjs/ai/functions/readFiles.js.map +1 -1
  3. package/dist/cjs/ai/modals-chat/electronHub/chatmodels.d.ts.map +1 -1
  4. package/dist/cjs/ai/modals-chat/electronHub/chatmodels.js +2 -1
  5. package/dist/cjs/ai/modals-chat/electronHub/chatmodels.js.map +1 -1
  6. package/dist/cjs/ai/modals-chat/electronHub/speechModels.d.ts.map +1 -1
  7. package/dist/cjs/ai/modals-chat/electronHub/speechModels.js +1 -1
  8. package/dist/cjs/ai/modals-chat/electronHub/speechModels.js.map +1 -1
  9. package/dist/cjs/canvas/ApexPainter.d.ts.map +1 -1
  10. package/dist/cjs/canvas/ApexPainter.js +27 -28
  11. package/dist/cjs/canvas/ApexPainter.js.map +1 -1
  12. package/dist/cjs/canvas/Themes/Level-Up/levelup.d.ts +11 -0
  13. package/dist/cjs/canvas/Themes/Level-Up/levelup.d.ts.map +1 -0
  14. package/dist/cjs/canvas/Themes/Level-Up/levelup.js +163 -0
  15. package/dist/cjs/canvas/Themes/Level-Up/levelup.js.map +1 -0
  16. package/dist/cjs/canvas/utils/Background/bg.d.ts +17 -10
  17. package/dist/cjs/canvas/utils/Background/bg.d.ts.map +1 -1
  18. package/dist/cjs/canvas/utils/Background/bg.js +102 -27
  19. package/dist/cjs/canvas/utils/Background/bg.js.map +1 -1
  20. package/dist/cjs/canvas/utils/Custom/customLines.d.ts.map +1 -1
  21. package/dist/cjs/canvas/utils/Custom/customLines.js +43 -19
  22. package/dist/cjs/canvas/utils/Custom/customLines.js.map +1 -1
  23. package/dist/cjs/canvas/utils/General/general functions.d.ts +6 -1
  24. package/dist/cjs/canvas/utils/General/general functions.d.ts.map +1 -1
  25. package/dist/cjs/canvas/utils/General/general functions.js +19 -20
  26. package/dist/cjs/canvas/utils/General/general functions.js.map +1 -1
  27. package/dist/cjs/canvas/utils/Image/imageProperties.d.ts +3 -9
  28. package/dist/cjs/canvas/utils/Image/imageProperties.d.ts.map +1 -1
  29. package/dist/cjs/canvas/utils/Image/imageProperties.js +220 -214
  30. package/dist/cjs/canvas/utils/Image/imageProperties.js.map +1 -1
  31. package/dist/cjs/canvas/utils/Texts/textProperties.d.ts +12 -14
  32. package/dist/cjs/canvas/utils/Texts/textProperties.d.ts.map +1 -1
  33. package/dist/cjs/canvas/utils/Texts/textProperties.js +100 -91
  34. package/dist/cjs/canvas/utils/Texts/textProperties.js.map +1 -1
  35. package/dist/cjs/canvas/utils/types.d.ts +89 -109
  36. package/dist/cjs/canvas/utils/types.d.ts.map +1 -1
  37. package/dist/cjs/canvas/utils/types.js.map +1 -1
  38. package/dist/cjs/canvas/utils/utils.d.ts +2 -4
  39. package/dist/cjs/canvas/utils/utils.d.ts.map +1 -1
  40. package/dist/cjs/canvas/utils/utils.js +2 -5
  41. package/dist/cjs/canvas/utils/utils.js.map +1 -1
  42. package/dist/cjs/index.d.ts.map +1 -1
  43. package/dist/cjs/index.js +31 -3
  44. package/dist/cjs/index.js.map +1 -1
  45. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  46. package/dist/esm/ai/functions/readFiles.js +1 -1
  47. package/dist/esm/ai/functions/readFiles.js.map +1 -1
  48. package/dist/esm/ai/modals-chat/electronHub/chatmodels.d.ts.map +1 -1
  49. package/dist/esm/ai/modals-chat/electronHub/chatmodels.js +2 -1
  50. package/dist/esm/ai/modals-chat/electronHub/chatmodels.js.map +1 -1
  51. package/dist/esm/ai/modals-chat/electronHub/speechModels.d.ts.map +1 -1
  52. package/dist/esm/ai/modals-chat/electronHub/speechModels.js +1 -1
  53. package/dist/esm/ai/modals-chat/electronHub/speechModels.js.map +1 -1
  54. package/dist/esm/canvas/ApexPainter.d.ts.map +1 -1
  55. package/dist/esm/canvas/ApexPainter.js +27 -28
  56. package/dist/esm/canvas/ApexPainter.js.map +1 -1
  57. package/dist/esm/canvas/Themes/Level-Up/levelup.d.ts +11 -0
  58. package/dist/esm/canvas/Themes/Level-Up/levelup.d.ts.map +1 -0
  59. package/dist/esm/canvas/Themes/Level-Up/levelup.js +163 -0
  60. package/dist/esm/canvas/Themes/Level-Up/levelup.js.map +1 -0
  61. package/dist/esm/canvas/utils/Background/bg.d.ts +17 -10
  62. package/dist/esm/canvas/utils/Background/bg.d.ts.map +1 -1
  63. package/dist/esm/canvas/utils/Background/bg.js +102 -27
  64. package/dist/esm/canvas/utils/Background/bg.js.map +1 -1
  65. package/dist/esm/canvas/utils/Custom/customLines.d.ts.map +1 -1
  66. package/dist/esm/canvas/utils/Custom/customLines.js +43 -19
  67. package/dist/esm/canvas/utils/Custom/customLines.js.map +1 -1
  68. package/dist/esm/canvas/utils/General/general functions.d.ts +6 -1
  69. package/dist/esm/canvas/utils/General/general functions.d.ts.map +1 -1
  70. package/dist/esm/canvas/utils/General/general functions.js +19 -20
  71. package/dist/esm/canvas/utils/General/general functions.js.map +1 -1
  72. package/dist/esm/canvas/utils/Image/imageProperties.d.ts +3 -9
  73. package/dist/esm/canvas/utils/Image/imageProperties.d.ts.map +1 -1
  74. package/dist/esm/canvas/utils/Image/imageProperties.js +220 -214
  75. package/dist/esm/canvas/utils/Image/imageProperties.js.map +1 -1
  76. package/dist/esm/canvas/utils/Texts/textProperties.d.ts +12 -14
  77. package/dist/esm/canvas/utils/Texts/textProperties.d.ts.map +1 -1
  78. package/dist/esm/canvas/utils/Texts/textProperties.js +100 -91
  79. package/dist/esm/canvas/utils/Texts/textProperties.js.map +1 -1
  80. package/dist/esm/canvas/utils/types.d.ts +89 -109
  81. package/dist/esm/canvas/utils/types.d.ts.map +1 -1
  82. package/dist/esm/canvas/utils/types.js.map +1 -1
  83. package/dist/esm/canvas/utils/utils.d.ts +2 -4
  84. package/dist/esm/canvas/utils/utils.d.ts.map +1 -1
  85. package/dist/esm/canvas/utils/utils.js +2 -5
  86. package/dist/esm/canvas/utils/utils.js.map +1 -1
  87. package/dist/esm/index.d.ts.map +1 -1
  88. package/dist/esm/index.js +31 -3
  89. package/dist/esm/index.js.map +1 -1
  90. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  91. package/lib/ai/functions/readFiles.ts +1 -1
  92. package/lib/ai/modals-chat/electronHub/chatmodels.ts +4 -2
  93. package/lib/ai/modals-chat/electronHub/speechModels.ts +2 -1
  94. package/lib/canvas/ApexPainter.ts +52 -61
  95. package/lib/canvas/Themes/Level-Up/levelup.ts +183 -0
  96. package/lib/canvas/utils/Background/bg.ts +179 -65
  97. package/lib/canvas/utils/Custom/customLines.ts +53 -20
  98. package/lib/canvas/utils/General/general functions.ts +21 -29
  99. package/lib/canvas/utils/Image/imageProperties.ts +399 -318
  100. package/lib/canvas/utils/Texts/textProperties.ts +213 -162
  101. package/lib/canvas/utils/types.ts +74 -107
  102. package/lib/canvas/utils/utils.ts +2 -5
  103. package/lib/index.ts +38 -10
  104. package/package.json +2 -2
  105. package/dist/cjs/canvas/utils/Background/circular.d.ts +0 -3
  106. package/dist/cjs/canvas/utils/Background/circular.d.ts.map +0 -1
  107. package/dist/cjs/canvas/utils/Background/circular.js +0 -13
  108. package/dist/cjs/canvas/utils/Background/circular.js.map +0 -1
  109. package/dist/cjs/canvas/utils/Background/radius.d.ts +0 -18
  110. package/dist/cjs/canvas/utils/Background/radius.d.ts.map +0 -1
  111. package/dist/cjs/canvas/utils/Background/radius.js +0 -104
  112. package/dist/cjs/canvas/utils/Background/radius.js.map +0 -1
  113. package/dist/esm/canvas/utils/Background/circular.d.ts +0 -3
  114. package/dist/esm/canvas/utils/Background/circular.d.ts.map +0 -1
  115. package/dist/esm/canvas/utils/Background/circular.js +0 -13
  116. package/dist/esm/canvas/utils/Background/circular.js.map +0 -1
  117. package/dist/esm/canvas/utils/Background/radius.d.ts +0 -18
  118. package/dist/esm/canvas/utils/Background/radius.d.ts.map +0 -1
  119. package/dist/esm/canvas/utils/Background/radius.js +0 -104
  120. package/dist/esm/canvas/utils/Background/radius.js.map +0 -1
  121. package/lib/canvas/utils/Background/circular.ts +0 -17
  122. package/lib/canvas/utils/Background/radius.ts +0 -102
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.radiusBorder = radiusBorder;
4
- /**
5
- * Applies a radius border (clipping path) to the canvas context with support for selective corner rounding.
6
- *
7
- * @param ctx The canvas rendering context.
8
- * @param x The x-coordinate of the rectangle.
9
- * @param y The y-coordinate of the rectangle.
10
- * @param width The width of the rectangle.
11
- * @param height The height of the rectangle.
12
- * @param radius The radius for rounding the corners.
13
- * @param borderPosition Which corners to round. Valid values include:
14
- * - "all" (default)
15
- * - "top", "bottom", "left", "right"
16
- * - "top-left", "top-right", "bottom-left", "bottom-right"
17
- * - A comma-separated list, e.g. "top, left, bottom" (for three sides) or "top-left, bottom-right"
18
- */
19
- function radiusBorder(ctx, x = 0, y = 0, width, height, radius = 0, borderPosition = 'all') {
20
- const minDimension = Math.min(width, height);
21
- const maxRadius = minDimension / 2;
22
- const clipRadius = Math.min(radius, maxRadius);
23
- let roundTopLeft = false;
24
- let roundTopRight = false;
25
- let roundBottomRight = false;
26
- let roundBottomLeft = false;
27
- const bp = borderPosition.trim().toLowerCase();
28
- if (bp === 'all') {
29
- roundTopLeft = roundTopRight = roundBottomRight = roundBottomLeft = true;
30
- }
31
- else if (bp === 'top') {
32
- roundTopLeft = roundTopRight = true;
33
- }
34
- else if (bp === 'bottom') {
35
- roundBottomLeft = roundBottomRight = true;
36
- }
37
- else if (bp === 'left') {
38
- roundTopLeft = roundBottomLeft = true;
39
- }
40
- else if (bp === 'right') {
41
- roundTopRight = roundBottomRight = true;
42
- }
43
- else if (bp === 'top-left') {
44
- roundTopLeft = true;
45
- }
46
- else if (bp === 'top-right') {
47
- roundTopRight = true;
48
- }
49
- else if (bp === 'bottom-left') {
50
- roundBottomLeft = true;
51
- }
52
- else if (bp === 'bottom-right') {
53
- roundBottomRight = true;
54
- }
55
- else {
56
- const positions = bp.split(',').map(s => s.trim());
57
- roundTopLeft =
58
- positions.includes('top-left') || (positions.includes('top') && positions.includes('left'));
59
- roundTopRight =
60
- positions.includes('top-right') || (positions.includes('top') && positions.includes('right'));
61
- roundBottomRight =
62
- positions.includes('bottom-right') || (positions.includes('bottom') && positions.includes('right'));
63
- roundBottomLeft =
64
- positions.includes('bottom-left') || (positions.includes('bottom') && positions.includes('left'));
65
- }
66
- const tl = roundTopLeft ? clipRadius : 0;
67
- const tr = roundTopRight ? clipRadius : 0;
68
- const br = roundBottomRight ? clipRadius : 0;
69
- const bl = roundBottomLeft ? clipRadius : 0;
70
- ctx.save();
71
- ctx.beginPath();
72
- ctx.moveTo(x + tl, y);
73
- ctx.lineTo(x + width - tr, y);
74
- if (tr > 0) {
75
- ctx.quadraticCurveTo(x + width, y, x + width, y + tr);
76
- }
77
- else {
78
- ctx.lineTo(x + width, y);
79
- }
80
- ctx.lineTo(x + width, y + height - br);
81
- if (br > 0) {
82
- ctx.quadraticCurveTo(x + width, y + height, x + width - br, y + height);
83
- }
84
- else {
85
- ctx.lineTo(x + width, y + height);
86
- }
87
- ctx.lineTo(x + bl, y + height);
88
- if (bl > 0) {
89
- ctx.quadraticCurveTo(x, y + height, x, y + height - bl);
90
- }
91
- else {
92
- ctx.lineTo(x, y + height);
93
- }
94
- ctx.lineTo(x, y + tl);
95
- if (tl > 0) {
96
- ctx.quadraticCurveTo(x, y, x + tl, y);
97
- }
98
- else {
99
- ctx.lineTo(x, y);
100
- }
101
- ctx.closePath();
102
- ctx.clip();
103
- }
104
- //# sourceMappingURL=radius.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"radius.js","sourceRoot":"","sources":["../../../../../lib/canvas/utils/Background/radius.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { SKRSContext2D } from "@napi-rs/canvas";
2
-
3
- export function circularBorder(
4
- ctx: SKRSContext2D,
5
- width: number,
6
- height: number,
7
- radius: number = 0
8
- ): void {
9
- const minDimension = Math.min(width, height);
10
- const clipRadius = minDimension / 2 + radius;
11
- ctx.save();
12
- ctx.beginPath();
13
- ctx.arc(width / 2, height / 2, clipRadius, 0, Math.PI * 2);
14
- ctx.closePath();
15
- ctx.clip();
16
- }
17
-
@@ -1,102 +0,0 @@
1
- import { SKRSContext2D } from "@napi-rs/canvas";
2
-
3
- /**
4
- * Applies a radius border (clipping path) to the canvas context with support for selective corner rounding.
5
- *
6
- * @param ctx The canvas rendering context.
7
- * @param x The x-coordinate of the rectangle.
8
- * @param y The y-coordinate of the rectangle.
9
- * @param width The width of the rectangle.
10
- * @param height The height of the rectangle.
11
- * @param radius The radius for rounding the corners.
12
- * @param borderPosition Which corners to round. Valid values include:
13
- * - "all" (default)
14
- * - "top", "bottom", "left", "right"
15
- * - "top-left", "top-right", "bottom-left", "bottom-right"
16
- * - A comma-separated list, e.g. "top, left, bottom" (for three sides) or "top-left, bottom-right"
17
- */
18
- export function radiusBorder(
19
- ctx: SKRSContext2D,
20
- x: number = 0,
21
- y: number = 0,
22
- width: number,
23
- height: number,
24
- radius: number = 0,
25
- borderPosition: string = 'all'
26
- ): void {
27
- const minDimension = Math.min(width, height);
28
- const maxRadius = minDimension / 2;
29
- const clipRadius = Math.min(radius, maxRadius);
30
-
31
- let roundTopLeft = false;
32
- let roundTopRight = false;
33
- let roundBottomRight = false;
34
- let roundBottomLeft = false;
35
-
36
- const bp = borderPosition.trim().toLowerCase();
37
-
38
- if (bp === 'all') {
39
- roundTopLeft = roundTopRight = roundBottomRight = roundBottomLeft = true;
40
- } else if (bp === 'top') {
41
- roundTopLeft = roundTopRight = true;
42
- } else if (bp === 'bottom') {
43
- roundBottomLeft = roundBottomRight = true;
44
- } else if (bp === 'left') {
45
- roundTopLeft = roundBottomLeft = true;
46
- } else if (bp === 'right') {
47
- roundTopRight = roundBottomRight = true;
48
- } else if (bp === 'top-left') {
49
- roundTopLeft = true;
50
- } else if (bp === 'top-right') {
51
- roundTopRight = true;
52
- } else if (bp === 'bottom-left') {
53
- roundBottomLeft = true;
54
- } else if (bp === 'bottom-right') {
55
- roundBottomRight = true;
56
- } else {
57
- const positions = bp.split(',').map(s => s.trim());
58
- roundTopLeft =
59
- positions.includes('top-left') || (positions.includes('top') && positions.includes('left'));
60
- roundTopRight =
61
- positions.includes('top-right') || (positions.includes('top') && positions.includes('right'));
62
- roundBottomRight =
63
- positions.includes('bottom-right') || (positions.includes('bottom') && positions.includes('right'));
64
- roundBottomLeft =
65
- positions.includes('bottom-left') || (positions.includes('bottom') && positions.includes('left'));
66
- }
67
-
68
- const tl = roundTopLeft ? clipRadius : 0;
69
- const tr = roundTopRight ? clipRadius : 0;
70
- const br = roundBottomRight ? clipRadius : 0;
71
- const bl = roundBottomLeft ? clipRadius : 0;
72
-
73
- ctx.save();
74
- ctx.beginPath();
75
- ctx.moveTo(x + tl, y);
76
- ctx.lineTo(x + width - tr, y);
77
- if (tr > 0) {
78
- ctx.quadraticCurveTo(x + width, y, x + width, y + tr);
79
- } else {
80
- ctx.lineTo(x + width, y);
81
- }
82
- ctx.lineTo(x + width, y + height - br);
83
- if (br > 0) {
84
- ctx.quadraticCurveTo(x + width, y + height, x + width - br, y + height);
85
- } else {
86
- ctx.lineTo(x + width, y + height);
87
- }
88
- ctx.lineTo(x + bl, y + height);
89
- if (bl > 0) {
90
- ctx.quadraticCurveTo(x, y + height, x, y + height - bl);
91
- } else {
92
- ctx.lineTo(x, y + height);
93
- }
94
- ctx.lineTo(x, y + tl);
95
- if (tl > 0) {
96
- ctx.quadraticCurveTo(x, y, x + tl, y);
97
- } else {
98
- ctx.lineTo(x, y);
99
- }
100
- ctx.closePath();
101
- ctx.clip();
102
- }