@amphore-dev/kinogrida 0.3.0

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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +202 -0
  3. package/dist/classes/ArcShape.d.ts +26 -0
  4. package/dist/classes/ArcShape.d.ts.map +1 -0
  5. package/dist/classes/ArcShape.js +299 -0
  6. package/dist/classes/ArcShape.js.map +1 -0
  7. package/dist/classes/BaseShape.d.ts +37 -0
  8. package/dist/classes/BaseShape.d.ts.map +1 -0
  9. package/dist/classes/BaseShape.js +146 -0
  10. package/dist/classes/BaseShape.js.map +1 -0
  11. package/dist/classes/Kinogrida.d.ts +32 -0
  12. package/dist/classes/Kinogrida.d.ts.map +1 -0
  13. package/dist/classes/Kinogrida.js +223 -0
  14. package/dist/classes/Kinogrida.js.map +1 -0
  15. package/dist/classes/SquareShape.d.ts +12 -0
  16. package/dist/classes/SquareShape.d.ts.map +1 -0
  17. package/dist/classes/SquareShape.js +125 -0
  18. package/dist/classes/SquareShape.js.map +1 -0
  19. package/dist/classes/index.d.ts +2 -0
  20. package/dist/classes/index.d.ts.map +1 -0
  21. package/dist/classes/index.js +2 -0
  22. package/dist/classes/index.js.map +1 -0
  23. package/dist/constants/CColors.d.ts +8 -0
  24. package/dist/constants/CColors.d.ts.map +1 -0
  25. package/dist/constants/CColors.js +70 -0
  26. package/dist/constants/CColors.js.map +1 -0
  27. package/dist/constants/CShapes.d.ts +7 -0
  28. package/dist/constants/CShapes.d.ts.map +1 -0
  29. package/dist/constants/CShapes.js +7 -0
  30. package/dist/constants/CShapes.js.map +1 -0
  31. package/dist/constants/index.d.ts +3 -0
  32. package/dist/constants/index.d.ts.map +1 -0
  33. package/dist/constants/index.js +3 -0
  34. package/dist/constants/index.js.map +1 -0
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +2 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/types/TGrid.d.ts +28 -0
  40. package/dist/types/TGrid.d.ts.map +1 -0
  41. package/dist/types/TGrid.js +2 -0
  42. package/dist/types/TGrid.js.map +1 -0
  43. package/dist/types/TKinogrida.d.ts +9 -0
  44. package/dist/types/TKinogrida.d.ts.map +1 -0
  45. package/dist/types/TKinogrida.js +2 -0
  46. package/dist/types/TKinogrida.js.map +1 -0
  47. package/dist/types/index.d.ts +2 -0
  48. package/dist/types/index.d.ts.map +1 -0
  49. package/dist/types/index.js +2 -0
  50. package/dist/types/index.js.map +1 -0
  51. package/dist/utils/UColors.d.ts +3 -0
  52. package/dist/utils/UColors.d.ts.map +1 -0
  53. package/dist/utils/UColors.js +12 -0
  54. package/dist/utils/UColors.js.map +1 -0
  55. package/dist/utils/UMath.d.ts +5 -0
  56. package/dist/utils/UMath.d.ts.map +1 -0
  57. package/dist/utils/UMath.js +15 -0
  58. package/dist/utils/UMath.js.map +1 -0
  59. package/dist/utils/UShapes.d.ts +2 -0
  60. package/dist/utils/UShapes.d.ts.map +1 -0
  61. package/dist/utils/UShapes.js +7 -0
  62. package/dist/utils/UShapes.js.map +1 -0
  63. package/dist/utils/index.d.ts +4 -0
  64. package/dist/utils/index.d.ts.map +1 -0
  65. package/dist/utils/index.js +4 -0
  66. package/dist/utils/index.js.map +1 -0
  67. package/package.json +77 -0
@@ -0,0 +1,146 @@
1
+ import { hexToRGBA } from "../utils/UColors.js";
2
+ import { random } from "../utils/UMath.js";
3
+ export class BaseShape {
4
+ grid;
5
+ x = 0;
6
+ y = 0;
7
+ speed = 0.005;
8
+ lastMoveTime = Date.now(); // Randomize initial move debounce time
9
+ moveDuration = 1000; // Duration of the move in milliseconds
10
+ minBounceTime = 0; // Minimum time in seconds before the shape can move again
11
+ maxBounceTime = 10; // Maximum time in seconds before the shape can move again
12
+ moveDebounce = 1000 * random(this.minBounceTime, this.maxBounceTime); // Minimum time between moves in milliseconds
13
+ canMove = true;
14
+ isMoving = false;
15
+ tailX = 0;
16
+ tailY = 0;
17
+ originalX = 0;
18
+ originalY = 0;
19
+ targetX = 0;
20
+ targetY = 0;
21
+ hasReachedTarget = false;
22
+ hasTailReachedTarget = false;
23
+ color = "white";
24
+ lockedCells = [];
25
+ constructor(grid, x = 0, y = 0, options) {
26
+ this.grid = grid;
27
+ this.x = x;
28
+ this.y = y;
29
+ this.targetX = x;
30
+ this.targetY = y;
31
+ this.color = options.color;
32
+ this.tailX = x;
33
+ this.tailY = y;
34
+ this.originalX = x;
35
+ this.originalY = y;
36
+ }
37
+ moveTo(grid, gridConfig, x, y) {
38
+ if (this.isMoving ||
39
+ Date.now() - this.lastMoveTime < this.moveDebounce) {
40
+ return;
41
+ }
42
+ const lockedCells = this.genLockPath(grid, gridConfig, x, y);
43
+ if (!lockedCells || !this.lockGridCells(grid, lockedCells, false)) {
44
+ return;
45
+ }
46
+ this.lockGridCells(grid, lockedCells, true);
47
+ this.targetX = x;
48
+ this.targetY = y;
49
+ this.tailX = this.x;
50
+ this.tailY = this.y;
51
+ this.originalX = this.x;
52
+ this.originalY = this.y;
53
+ this.isMoving = true;
54
+ this.lastMoveTime = Date.now();
55
+ }
56
+ genLockPath(grid, gridConfig, targetX, targetY) {
57
+ // Calculer la trajectoire entre la position actuelle et la position cible
58
+ const startX = Math.round(this.x);
59
+ const startY = Math.round(this.y);
60
+ const endX = targetX;
61
+ const endY = targetY;
62
+ return this.getLineCells(startX, startY, endX, endY);
63
+ }
64
+ lockGridCells(grid, cells, applyLocks = true) {
65
+ // Calculer la trajectoire entre la position actuelle et la position cible
66
+ // grid[startY][startX] = "locked"; // Lock the starting cell
67
+ // Marquer toutes les cellules sur la trajectoire comme "locked"
68
+ for (const { x, y } of cells) {
69
+ if (grid[y][x] !== null || grid[y][x] === "locked") {
70
+ if (y !== this.y || x !== this.x) {
71
+ return false;
72
+ }
73
+ }
74
+ if (y >= 0 &&
75
+ y < grid.length &&
76
+ x >= 0 &&
77
+ x < grid[y].length &&
78
+ grid[y][x] === null) {
79
+ if (applyLocks) {
80
+ grid[y][x] = "locked";
81
+ this.lockedCells.push({ x, y });
82
+ }
83
+ }
84
+ }
85
+ return true;
86
+ }
87
+ getLineCells(_x0, _y0, _x1, _y1) {
88
+ const cells = [];
89
+ return cells;
90
+ }
91
+ update(grid, gridConfig, context) {
92
+ this.grid = grid; // Update the grid reference in case it has changed
93
+ if (this.isMoving) {
94
+ this.updatePosition(grid);
95
+ }
96
+ else {
97
+ this.calculateNewTarget(grid, gridConfig);
98
+ }
99
+ this.draw(context, gridConfig);
100
+ }
101
+ calculateNewTarget(_grid, _gridConfig) { }
102
+ updatePosition(_grid) { }
103
+ onMoveComplete(grid, newX, newY) {
104
+ const savedX = this.originalX;
105
+ const savedY = this.originalY;
106
+ this.x = newX;
107
+ this.y = newY;
108
+ this.originalX = newX;
109
+ this.originalY = newY;
110
+ this.isMoving = false;
111
+ this.lastMoveTime = Date.now();
112
+ this.moveDebounce =
113
+ 1000 * random(this.minBounceTime, this.maxBounceTime); // Randomize next move debounce time
114
+ this.unlockGridCells(grid);
115
+ grid[savedY][savedX] = null; // Clear the original position in the grid
116
+ grid[newY][newX] = this;
117
+ const frames = (this.moveDuration / 1000) * 60;
118
+ const speed = 1 / frames; // toujours en %
119
+ this.speed = speed;
120
+ this.hasReachedTarget = false;
121
+ }
122
+ unlockGridCells(grid) {
123
+ for (const { x, y } of this.lockedCells) {
124
+ if (y >= 0 && y < grid.length && x >= 0 && x < grid[y].length) {
125
+ grid[y][x] = null;
126
+ }
127
+ }
128
+ this.lockedCells = [];
129
+ }
130
+ draw(_context, _gridConfig) { }
131
+ drawLockedCells(context, gridConfig) {
132
+ const { cellSize, offsetX, offsetY } = gridConfig;
133
+ const rgbColor = hexToRGBA(this.color, 0.2); // Convert hex color to rgba with 0.5 alpha
134
+ context.fillStyle = "rgba(0, 255, 0, 0.2)"; // Green with transparency
135
+ context.fillRect(this.originalX * cellSize + offsetX, this.originalY * cellSize + offsetY, cellSize, cellSize);
136
+ context.fillStyle = "rgba(255, 255, 0, 0.2)"; // Yellow with transparency
137
+ context.fillRect(this.x * cellSize + offsetX, this.y * cellSize + offsetY, cellSize, cellSize);
138
+ context.fillStyle = rgbColor; // Red with transparency
139
+ this.lockedCells.forEach(({ x, y }) => {
140
+ const pixelX = x * cellSize + offsetX;
141
+ const pixelY = y * cellSize + offsetY;
142
+ context.fillRect(pixelX, pixelY, cellSize, cellSize);
143
+ });
144
+ }
145
+ }
146
+ //# sourceMappingURL=BaseShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseShape.js","sourceRoot":"","sources":["../../src/classes/BaseShape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { TGridConfig } from "../types/TGrid.js";
2
+ import { BaseShape } from "./BaseShape.js";
3
+ export declare class Kinogrida {
4
+ #private;
5
+ private canvas;
6
+ private context;
7
+ private boundHandleResize;
8
+ constructor(canvas: HTMLCanvasElement);
9
+ private setupCanvas;
10
+ clearGrid(): void;
11
+ initGrid(config?: Partial<TGridConfig>): void;
12
+ addCell(item: BaseShape, x: number, y: number): void;
13
+ updateGridConfig(config?: Partial<TGridConfig>): void;
14
+ private drawGrid;
15
+ private drawLockedCells;
16
+ private drawCellPositions;
17
+ private drawCells;
18
+ private handleResize;
19
+ toggleDebugMode(): void;
20
+ private attachEventListeners;
21
+ private detachEventListeners;
22
+ private animate;
23
+ private debug;
24
+ play(): void;
25
+ pause(): void;
26
+ destroy(): void;
27
+ setFillPercentage(percentage: number): void;
28
+ getFillPercentage(): number;
29
+ getConfig(): TGridConfig;
30
+ setConfig(config: Partial<TGridConfig>): void;
31
+ }
32
+ //# sourceMappingURL=Kinogrida.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kinogrida.d.ts","sourceRoot":"","sources":["../../src/classes/Kinogrida.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,qBAAa,SAAS;;IAClB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,OAAO,CAA2B;IAyB1C,OAAO,CAAC,iBAAiB,CAAa;gBAE1B,MAAM,EAAE,iBAAiB;IAcrC,OAAO,CAAC,WAAW;IASZ,SAAS,IAAI,IAAI;IAKjB,QAAQ,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,IAAI;IA+CjD,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAOpD,gBAAgB,CAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,IAAI;IAgChE,OAAO,CAAC,QAAQ;IA8BhB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,YAAY;IAUb,eAAe,IAAI,IAAI;IAK9B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,OAAO,CAWb;IAEF,OAAO,CAAC,KAAK,CAIX;IAEK,IAAI,IAAI,IAAI;IAMZ,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,IAAI;IAMf,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAO3C,iBAAiB,IAAI,MAAM;IAI3B,SAAS,IAAI,WAAW;IAIxB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;CAGvD"}
@@ -0,0 +1,223 @@
1
+ import { BaseShape } from "./BaseShape.js";
2
+ import { randomInt } from "../utils/UMath.js";
3
+ import { getRandomColorPalette } from "../utils/UColors.js";
4
+ import { getRandomShapeType } from "../utils/UShapes.js";
5
+ export class Kinogrida {
6
+ canvas;
7
+ context;
8
+ #isPlaying = false;
9
+ #debugMode = false;
10
+ #gridConfig = {
11
+ nbrColumns: Math.floor(window.innerWidth / 100),
12
+ nbrRows: Math.floor(window.innerHeight / 100),
13
+ cellSize: 1,
14
+ gridMargin: 50,
15
+ offsetX: 0,
16
+ offsetY: 0,
17
+ width: 0,
18
+ height: 0,
19
+ lineWidth: 1,
20
+ debug: this.#debugMode,
21
+ context: null, // Will be set in setupCanvas
22
+ colors: getRandomColorPalette(),
23
+ };
24
+ #grid = [];
25
+ #cells = [];
26
+ #isInitialized = false;
27
+ #fillPercentage = 0.2; // Fill 20% of the grid with shapes
28
+ boundHandleResize;
29
+ constructor(canvas) {
30
+ this.canvas = canvas;
31
+ const context = canvas.getContext("2d");
32
+ if (!context) {
33
+ throw new Error("Cannot get 2D context from canvas");
34
+ }
35
+ this.context = context;
36
+ this.boundHandleResize = this.handleResize.bind(this);
37
+ this.setupCanvas();
38
+ }
39
+ setupCanvas() {
40
+ this.canvas.width = this.canvas.clientWidth;
41
+ this.canvas.height = this.canvas.clientHeight;
42
+ this.attachEventListeners();
43
+ this.initGrid();
44
+ this.#isInitialized = true;
45
+ }
46
+ clearGrid() {
47
+ this.#grid = [];
48
+ this.#cells = [];
49
+ }
50
+ initGrid(config = {}) {
51
+ this.clearGrid();
52
+ const { nbrColumns, nbrRows } = this.#gridConfig;
53
+ for (let i = 0; i < nbrRows; i++) {
54
+ const row = [];
55
+ for (let j = 0; j < nbrColumns; j++) {
56
+ row.push(null);
57
+ }
58
+ this.#grid.push(row);
59
+ }
60
+ // Example: Place a BaseItem in the center of the grid
61
+ this.updateGridConfig(config);
62
+ const colors = this.#gridConfig.colors;
63
+ const maxCells = Math.floor(nbrColumns * nbrRows * this.#fillPercentage);
64
+ // debug
65
+ // const maxCells = 10;
66
+ let addedCells = 0;
67
+ const maxAttempts = 100;
68
+ let attempts = 0;
69
+ while (addedCells < maxCells && attempts < maxAttempts) {
70
+ const x = randomInt(0, nbrColumns - 1);
71
+ const y = randomInt(0, nbrRows - 1);
72
+ if (this.#grid[y][x] === null) {
73
+ const ShapeConstructor = getRandomShapeType();
74
+ this.addCell(new ShapeConstructor(this.#grid, x, y, {
75
+ color: colors[randomInt(0, colors.length - 1)],
76
+ radiusPercent: Math.random() < 0.5 ? 100 : 0,
77
+ }), x, y);
78
+ addedCells++;
79
+ attempts = 0; // Reset attempts after successfully adding a cell
80
+ }
81
+ attempts++;
82
+ }
83
+ }
84
+ addCell(item, x, y) {
85
+ if (this.#grid[y][x] === null) {
86
+ this.#grid[y][x] = item;
87
+ this.#cells.push(item);
88
+ }
89
+ }
90
+ updateGridConfig(config = {}) {
91
+ const { gridMargin, nbrColumns, nbrRows } = this.#gridConfig;
92
+ const cellSize = Math.floor(Math.min((this.canvas.width - 2 * gridMargin) / nbrColumns, (this.canvas.height - 2 * gridMargin) / nbrRows));
93
+ const gridWidth = nbrColumns * cellSize;
94
+ const gridHeight = nbrRows * cellSize;
95
+ const offsetX = (this.canvas.width - gridWidth) / 2;
96
+ const offsetY = (this.canvas.height - gridHeight) / 2;
97
+ const lineWidth = Math.max(1, Math.floor(cellSize * 0.1));
98
+ const colors = config.colors || getRandomColorPalette();
99
+ this.#gridConfig = {
100
+ ...this.#gridConfig,
101
+ offsetX,
102
+ offsetY,
103
+ width: gridWidth,
104
+ height: gridHeight,
105
+ cellSize,
106
+ lineWidth,
107
+ debug: this.#debugMode,
108
+ context: this.context,
109
+ colors,
110
+ ...config,
111
+ };
112
+ }
113
+ drawGrid() {
114
+ const { nbrColumns, nbrRows, offsetX, offsetY, cellSize, width, height, } = this.#gridConfig;
115
+ this.context.strokeStyle = "white";
116
+ this.context.lineWidth = 1;
117
+ for (let i = 0; i <= nbrColumns; i++) {
118
+ const x = offsetX + i * cellSize;
119
+ this.context.beginPath();
120
+ this.context.moveTo(x, offsetY);
121
+ this.context.lineTo(x, offsetY + height);
122
+ this.context.stroke();
123
+ }
124
+ for (let j = 0; j <= nbrRows; j++) {
125
+ const y = offsetY + j * cellSize;
126
+ this.context.beginPath();
127
+ this.context.moveTo(offsetX, y);
128
+ this.context.lineTo(offsetX + width, y);
129
+ this.context.stroke();
130
+ }
131
+ }
132
+ drawLockedCells() {
133
+ this.#cells.forEach((cell) => {
134
+ cell.drawLockedCells(this.context, this.#gridConfig);
135
+ });
136
+ }
137
+ drawCellPositions() {
138
+ const { cellSize, offsetX, offsetY, nbrColumns, nbrRows } = this.#gridConfig;
139
+ for (let y = 0; y < nbrRows; y++) {
140
+ for (let x = 0; x < nbrColumns; x++) {
141
+ const cell = this.#grid[y][x];
142
+ if (cell instanceof BaseShape) {
143
+ const centerX = offsetX + x * cellSize + cellSize / 2;
144
+ const centerY = offsetY + y * cellSize + cellSize / 2;
145
+ this.context.fillStyle = "white";
146
+ this.context.font = `${cellSize * 0.3}px Arial`;
147
+ this.context.textAlign = "center";
148
+ this.context.textBaseline = "middle";
149
+ this.context.fillText(`(${x},${y})`, centerX, centerY);
150
+ }
151
+ }
152
+ }
153
+ }
154
+ drawCells() {
155
+ this.context.lineWidth = this.#gridConfig.lineWidth;
156
+ this.#cells.forEach((cell) => {
157
+ cell.update(this.#grid, this.#gridConfig, this.context);
158
+ });
159
+ }
160
+ handleResize() {
161
+ this.canvas.width = this.canvas.clientWidth;
162
+ this.canvas.height = this.canvas.clientHeight;
163
+ this.updateGridConfig({
164
+ colors: this.#gridConfig.colors, // Preserve the current color palette
165
+ });
166
+ this.drawGrid();
167
+ }
168
+ toggleDebugMode() {
169
+ this.#debugMode = !this.#debugMode;
170
+ this.#gridConfig.debug = this.#debugMode;
171
+ }
172
+ attachEventListeners() {
173
+ window.addEventListener("resize", this.boundHandleResize);
174
+ }
175
+ detachEventListeners() {
176
+ window.removeEventListener("resize", this.boundHandleResize);
177
+ }
178
+ animate = () => {
179
+ if (!this.#isInitialized || !this.#isPlaying)
180
+ return;
181
+ this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
182
+ if (this.#debugMode) {
183
+ this.debug();
184
+ }
185
+ this.drawCells();
186
+ requestAnimationFrame(this.animate);
187
+ };
188
+ debug = () => {
189
+ this.drawGrid();
190
+ this.drawLockedCells();
191
+ this.drawCellPositions();
192
+ };
193
+ play() {
194
+ if (this.#isPlaying)
195
+ return;
196
+ this.#isPlaying = true;
197
+ this.animate();
198
+ }
199
+ pause() {
200
+ this.#isPlaying = false;
201
+ }
202
+ destroy() {
203
+ this.pause();
204
+ this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
205
+ this.detachEventListeners();
206
+ }
207
+ setFillPercentage(percentage) {
208
+ this.#fillPercentage = Math.max(0, Math.min(1, percentage));
209
+ this.initGrid({
210
+ colors: this.#gridConfig.colors, // Preserve the current color palette
211
+ }); // Reinitialize the grid to apply the new fill percentage
212
+ }
213
+ getFillPercentage() {
214
+ return this.#fillPercentage;
215
+ }
216
+ getConfig() {
217
+ return this.#gridConfig;
218
+ }
219
+ setConfig(config) {
220
+ this.updateGridConfig(config);
221
+ }
222
+ }
223
+ //# sourceMappingURL=Kinogrida.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kinogrida.js","sourceRoot":"","sources":["../../src/classes/Kinogrida.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { TGrid, TGridConfig, TPosition, TShapeConfig } from "../types/TGrid.js";
2
+ import { BaseShape } from "./BaseShape.js";
3
+ export declare class SquareShape extends BaseShape {
4
+ protected radiusPercent: number;
5
+ constructor(grid: TGrid, x: number | undefined, y: number | undefined, options: TShapeConfig);
6
+ protected getLineCells(x0: number, y0: number, x1: number, y1: number): TPosition[];
7
+ protected calculateNewTarget(grid: TGrid, gridConfig: TGridConfig): void;
8
+ protected updatePosition(grid: TGrid): void;
9
+ draw(context: CanvasRenderingContext2D, gridConfig: TGridConfig): void;
10
+ strokeRoundedRect(context: CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radiusPercent?: number): void;
11
+ }
12
+ //# sourceMappingURL=SquareShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SquareShape.d.ts","sourceRoot":"","sources":["../../src/classes/SquareShape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,qBAAa,WAAY,SAAQ,SAAS;IACtC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;gBAGhC,IAAI,EAAE,KAAK,EACX,CAAC,EAAE,MAAM,YAAI,EACb,CAAC,EAAE,MAAM,YAAI,EACb,OAAO,EAAE,YAAY;IAMzB,SAAS,CAAC,YAAY,CAClB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACX,SAAS,EAAE;IAuBd,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,GAAG,IAAI;IA2BxE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAyCpC,IAAI,CAAC,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,WAAW;IAyC/D,iBAAiB,CACpB,OAAO,EAAE,wBAAwB,EACjC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,MAAU;CA4BhC"}
@@ -0,0 +1,125 @@
1
+ import { BaseShape } from "./BaseShape.js";
2
+ import { clamp, randomInt } from "../utils/UMath.js";
3
+ export class SquareShape extends BaseShape {
4
+ radiusPercent = 0;
5
+ constructor(grid, x = 0, y = 0, options) {
6
+ super(grid, x, y, options);
7
+ this.radiusPercent = options.radiusPercent ?? 0;
8
+ }
9
+ getLineCells(x0, y0, x1, y1) {
10
+ const cells = [];
11
+ // Mouvement horizontal
12
+ if (y0 === y1) {
13
+ const startX = Math.min(x0, x1);
14
+ const endX = Math.max(x0, x1);
15
+ for (let x = startX; x <= endX; x++) {
16
+ cells.push({ x, y: y0 });
17
+ }
18
+ }
19
+ // Mouvement vertical
20
+ else if (x0 === x1) {
21
+ const startY = Math.min(y0, y1);
22
+ const endY = Math.max(y0, y1);
23
+ for (let y = startY; y <= endY; y++) {
24
+ cells.push({ x: x0, y });
25
+ }
26
+ }
27
+ return cells;
28
+ }
29
+ calculateNewTarget(grid, gridConfig) {
30
+ const newDirection = randomInt(1, 4); // 1: up, 2: right, 3: down, 4: left
31
+ const newY = [1, 3].includes(newDirection)
32
+ ? clamp(this.y +
33
+ randomInt(1, gridConfig.nbrRows / 2 - 1) *
34
+ (newDirection === 1 ? -1 : 1), 0, gridConfig.nbrRows - 1)
35
+ : this.y;
36
+ const newX = [2, 4].includes(newDirection)
37
+ ? clamp(this.x +
38
+ randomInt(1, gridConfig.nbrColumns / 2 - 1) *
39
+ (newDirection === 2 ? -1 : 1), 0, gridConfig.nbrColumns - 1)
40
+ : this.x;
41
+ if (grid[newY][newX] === null && (newX !== this.x || newY !== this.y)) {
42
+ this.moveTo(grid, gridConfig, newX, newY);
43
+ }
44
+ }
45
+ updatePosition(grid) {
46
+ if (this.hasReachedTarget) {
47
+ // Check if the item has reached its target position
48
+ if (Math.abs(this.tailX - this.targetX) > this.speed) {
49
+ this.tailX +=
50
+ this.tailX < this.targetX ? this.speed : -this.speed;
51
+ }
52
+ else {
53
+ this.tailX = this.targetX;
54
+ }
55
+ if (Math.abs(this.tailY - this.targetY) > this.speed) {
56
+ this.tailY +=
57
+ this.tailY < this.targetY ? this.speed : -this.speed;
58
+ }
59
+ else {
60
+ this.tailY = this.targetY;
61
+ }
62
+ if (this.tailX === this.targetX && this.tailY === this.targetY) {
63
+ this.onMoveComplete(grid, this.targetX, this.targetY);
64
+ }
65
+ }
66
+ else {
67
+ // Example: Move towards target position
68
+ if (Math.abs(this.x - this.targetX) > this.speed) {
69
+ this.x += this.x < this.targetX ? this.speed : -this.speed;
70
+ }
71
+ else {
72
+ this.x = this.targetX;
73
+ }
74
+ if (Math.abs(this.y - this.targetY) > this.speed) {
75
+ this.y += this.y < this.targetY ? this.speed : -this.speed;
76
+ }
77
+ else {
78
+ this.y = this.targetY;
79
+ }
80
+ // Check if the item has reached its target position
81
+ if (this.x === this.targetX && this.y === this.targetY) {
82
+ this.hasReachedTarget = true;
83
+ }
84
+ }
85
+ }
86
+ draw(context, gridConfig) {
87
+ const { cellSize, offsetX, offsetY } = gridConfig;
88
+ // Calculer les positions en pixels pour les coordonnées originales et actuelles
89
+ const originalPixelX = this.tailX * cellSize + offsetX + cellSize * 0.1;
90
+ const originalPixelY = this.tailY * cellSize + offsetY + cellSize * 0.1;
91
+ const currentPixelX = this.x * cellSize + offsetX + cellSize * 0.1;
92
+ const currentPixelY = this.y * cellSize + offsetY + cellSize * 0.1;
93
+ // Calculer les coordonnées du rectangle qui s'étend de original à current
94
+ const startX = Math.min(originalPixelX, currentPixelX);
95
+ const startY = Math.min(originalPixelY, currentPixelY);
96
+ const endX = Math.max(originalPixelX, currentPixelX);
97
+ const endY = Math.max(originalPixelY, currentPixelY);
98
+ // Taille du rectangle couvrant la zone entre original et current
99
+ const rectWidth = endX - startX + cellSize * 0.8;
100
+ const rectHeight = endY - startY + cellSize * 0.8;
101
+ context.lineWidth = gridConfig.lineWidth;
102
+ context.strokeStyle = this.color;
103
+ this.strokeRoundedRect(context, startX, startY, rectWidth, rectHeight, this.radiusPercent);
104
+ context.strokeStyle = "white";
105
+ this.strokeRoundedRect(context, startX + cellSize * 0.2, startY + cellSize * 0.2, rectWidth - cellSize * 0.4, rectHeight - cellSize * 0.4, this.radiusPercent);
106
+ }
107
+ strokeRoundedRect(context, x, y, width, height, radiusPercent = 0) {
108
+ // Calculer le rayon réel basé sur le pourcentage et la plus petite dimension
109
+ const minDimension = Math.min(width, height);
110
+ const radius = Math.min((minDimension * Math.max(0, Math.min(100, radiusPercent))) / 200, minDimension / 2);
111
+ context.beginPath();
112
+ context.moveTo(x + radius, y);
113
+ context.lineTo(x + width - radius, y);
114
+ context.arcTo(x + width, y, x + width, y + radius, radius);
115
+ context.lineTo(x + width, y + height - radius);
116
+ context.arcTo(x + width, y + height, x + width - radius, y + height, radius);
117
+ context.lineTo(x + radius, y + height);
118
+ context.arcTo(x, y + height, x, y + height - radius, radius);
119
+ context.lineTo(x, y + radius);
120
+ context.arcTo(x, y, x + radius, y, radius);
121
+ context.closePath();
122
+ context.stroke();
123
+ }
124
+ }
125
+ //# sourceMappingURL=SquareShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SquareShape.js","sourceRoot":"","sources":["../../src/classes/SquareShape.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,OAAO,WAAY,SAAQ,SAAS;IAC5B,aAAa,GAAW,CAAC,CAAC;IAEpC,YACI,IAAW,EACX,IAAY,CAAC,EACb,IAAY,CAAC,EACb,OAAqB;QAErB,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACpD,CAAC;IAES,YAAY,CAClB,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU;QAEV,MAAM,KAAK,GAAgB,EAAE,CAAC;QAE9B,uBAAuB;QACvB,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,CAAC;QACL,CAAC;QACD,qBAAqB;aAChB,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,kBAAkB,CAAC,IAAW,EAAE,UAAuB;QAC7D,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oCAAoC;QAC1E,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;YACtC,CAAC,CAAC,KAAK,CACD,IAAI,CAAC,CAAC;gBACF,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;oBACpC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrC,CAAC,EACD,UAAU,CAAC,OAAO,GAAG,CAAC,CACzB;YACH,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEb,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;YACtC,CAAC,CAAC,KAAK,CACD,IAAI,CAAC,CAAC;gBACF,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrC,CAAC,EACD,UAAU,CAAC,UAAU,GAAG,CAAC,CAC5B;YACH,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEb,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAES,cAAc,CAAC,IAAW;QAChC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,oDAAoD;YACpD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnD,IAAI,CAAC,KAAK;oBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAC9B,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnD,IAAI,CAAC,KAAK;oBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAC9B,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,wCAAwC;YACxC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC/C,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC/C,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,CAAC;YAED,oDAAoD;YACpD,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IAEM,IAAI,CAAC,OAAiC,EAAE,UAAuB;QAClE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;QAElD,gFAAgF;QAChF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAC;QACxE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAC;QACxE,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAC;QACnE,MAAM,aAAa,GAAG,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAC;QAEnE,0EAA0E;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QAErD,iEAAiE;QACjE,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC;QAElD,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACzC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,iBAAiB,CAClB,OAAO,EACP,MAAM,EACN,MAAM,EACN,SAAS,EACT,UAAU,EACV,IAAI,CAAC,aAAa,CACrB,CAAC;QAEF,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAClB,OAAO,EACP,MAAM,GAAG,QAAQ,GAAG,GAAG,EACvB,MAAM,GAAG,QAAQ,GAAG,GAAG,EACvB,SAAS,GAAG,QAAQ,GAAG,GAAG,EAC1B,UAAU,GAAG,QAAQ,GAAG,GAAG,EAC3B,IAAI,CAAC,aAAa,CACrB,CAAC;IACN,CAAC;IAEM,iBAAiB,CACpB,OAAiC,EACjC,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,gBAAwB,CAAC;QAEzB,6EAA6E;QAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACnB,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,EAChE,YAAY,GAAG,CAAC,CACnB,CAAC;QAEF,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CACT,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,MAAM,EACV,CAAC,GAAG,KAAK,GAAG,MAAM,EAClB,CAAC,GAAG,MAAM,EACV,MAAM,CACT,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export * from "./Kinogrida.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./Kinogrida.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const CCOLORS_OCEAN_PALETTE: string[];
2
+ export declare const CCOLORS_SUNSET_PALETTE: string[];
3
+ export declare const CCOLORS_DARK_PALETTE: string[];
4
+ export declare const CCOLORS_CYBERPUNK_PALETTE: string[];
5
+ export declare const CCOLORS_MONOCHROME_PALETTE: string[];
6
+ export declare const CWATERMELON_PALETTE: string[];
7
+ export declare const COLORS_PALETTES: string[][];
8
+ //# sourceMappingURL=CColors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CColors.d.ts","sourceRoot":"","sources":["../../src/constants/CColors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,UAWjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAWlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAWhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,UAWrC,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAOtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAI/B,CAAC;AAEF,eAAO,MAAM,eAAe,YAO3B,CAAC"}